uswds-jekyll 4.1.0 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (801) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +345 -315
  3. data/_includes/analytics.html +7 -10
  4. data/_includes/components/banner.html +38 -13
  5. data/_includes/components/footer--big.html +142 -0
  6. data/_includes/components/footer--default.html +104 -0
  7. data/_includes/components/footer--slim.html +93 -0
  8. data/_includes/components/github-edit.html +3 -0
  9. data/_includes/components/graphic-list.html +13 -11
  10. data/_includes/components/header.html +161 -0
  11. data/_includes/components/hero.html +6 -13
  12. data/_includes/components/search.html +31 -0
  13. data/_includes/footer.html +7 -1
  14. data/_includes/header.html +1 -5
  15. data/_includes/meta.html +7 -1
  16. data/_includes/scripts.html +23 -14
  17. data/_includes/sidenav.html +23 -21
  18. data/_includes/styles.html +1 -1
  19. data/_layouts/default.html +39 -3
  20. data/_layouts/home.html +5 -26
  21. data/_layouts/page.html +19 -13
  22. data/_layouts/project.html +1 -2
  23. data/_layouts/team-member.html +1 -2
  24. data/_sass/_uswds-theme-custom-styles.scss +0 -0
  25. data/_sass/_uswds-theme-override-settings.scss +2 -0
  26. data/_sass/_uswds-theme-packages.scss +1 -0
  27. data/_sass/_uswds-theme-settings.scss +0 -0
  28. data/_sass/uswds/components/_all.scss +8 -0
  29. data/_sass/{components → uswds/components}/_alt-color-section.scss +6 -7
  30. data/_sass/{components → uswds/components}/_card.scss +14 -17
  31. data/_sass/uswds/components/_footer.scss +16 -502
  32. data/_sass/uswds/components/_header.scss +30 -198
  33. data/_sass/uswds/components/_hero.scss +37 -29
  34. data/_sass/{components → uswds/components}/_nav-buttons.scss +6 -6
  35. data/_sass/uswds/components/_side-nav.scss +46 -0
  36. data/_sass/uswds/components/_site-width.scss +6 -0
  37. data/_sass/uswds/components/_top-nav.scss +84 -0
  38. data/_sass/uswds/components/_usa-banner.scss +30 -0
  39. data/_sass/uswds/custom/_uswds-theme-custom-styles.scss +47 -0
  40. data/_sass/uswds/settings/_uswds-conversion-variables.scss +0 -0
  41. data/_sass/uswds/src/base/_accessibility.scss +3 -0
  42. data/_sass/uswds/src/base/_body.scss +5 -0
  43. data/_sass/uswds/src/components/_accordions.scss +116 -0
  44. data/_sass/uswds/src/components/_alerts.scss +143 -0
  45. data/_sass/uswds/src/components/_banner.scss +297 -0
  46. data/_sass/uswds/src/components/_breadcrumb.scss +168 -0
  47. data/_sass/uswds/src/components/_button-groups.scss +134 -0
  48. data/_sass/uswds/src/components/_card.scss +346 -0
  49. data/_sass/uswds/src/components/_checklist.scss +17 -0
  50. data/_sass/uswds/src/components/_footer.scss +359 -0
  51. data/_sass/uswds/src/components/_forms.scss +54 -0
  52. data/_sass/uswds/src/components/_graphic-list.scss +42 -0
  53. data/_sass/uswds/src/components/_header.scss +287 -0
  54. data/_sass/uswds/src/components/_hero.scss +32 -0
  55. data/_sass/uswds/src/components/_identifier.scss +146 -0
  56. data/_sass/uswds/src/components/_layout.scss +15 -0
  57. data/_sass/uswds/src/components/_media-block.scss +12 -0
  58. data/_sass/uswds/src/components/_megamenu.scss +45 -0
  59. data/_sass/uswds/src/components/_nav-container.scss +7 -0
  60. data/_sass/uswds/src/components/_navbar.scss +16 -0
  61. data/_sass/uswds/src/components/_navigation.scss +348 -0
  62. data/_sass/uswds/src/components/_search.scss +98 -0
  63. data/_sass/uswds/src/components/_section.scss +42 -0
  64. data/_sass/uswds/src/components/_sidenav.scss +19 -0
  65. data/_sass/uswds/src/components/_skipnav.scss +20 -0
  66. data/_sass/uswds/src/components/_step-indicator.scss +444 -0
  67. data/_sass/uswds/src/components/_tooltip.scss +114 -0
  68. data/_sass/uswds/{core → src/core}/_defaults.scss +1 -1
  69. data/_sass/uswds/src/core/_deprecated.scss +33 -0
  70. data/_sass/uswds/src/core/_functions.scss +1954 -0
  71. data/_sass/uswds/src/core/_notifications.scss +100 -0
  72. data/_sass/uswds/src/core/_properties.scss +699 -0
  73. data/_sass/uswds/src/core/_system-tokens.scss +1658 -0
  74. data/_sass/uswds/src/core/_variables.scss +636 -0
  75. data/_sass/uswds/src/core/mixins/_add-aspect.scss +17 -0
  76. data/_sass/uswds/src/core/mixins/_add-background-svg.scss +9 -0
  77. data/_sass/uswds/src/core/mixins/_add-bar.scss +43 -0
  78. data/_sass/uswds/src/core/mixins/_add-checkbox-placeholder.scss +15 -0
  79. data/_sass/uswds/src/core/mixins/_add-kerning.scss +4 -0
  80. data/_sass/uswds/src/core/mixins/_add-knockout-font-smoothing.scss +9 -0
  81. data/_sass/uswds/src/core/mixins/_add-link-styles.scss +20 -0
  82. data/_sass/uswds/src/core/mixins/_add-list-reset.scss +15 -0
  83. data/_sass/uswds/src/core/mixins/_add-responsive-site-margins.scss +6 -0
  84. data/_sass/uswds/src/core/mixins/_add-success-mark.scss +7 -0
  85. data/_sass/uswds/src/core/mixins/_all.scss +90 -0
  86. data/_sass/uswds/src/core/mixins/_at-media.scss +36 -0
  87. data/_sass/uswds/src/core/mixins/_border-box-sizing.scss +19 -0
  88. data/_sass/uswds/src/core/mixins/_button-disabled.scss +17 -0
  89. data/_sass/uswds/src/core/mixins/_button-unstyled.scss +20 -0
  90. data/_sass/uswds/src/core/mixins/_clearfix.scss +7 -0
  91. data/_sass/uswds/src/core/mixins/_embed-container.scss +3 -0
  92. data/_sass/uswds/src/core/mixins/_external-link.scss +21 -0
  93. data/_sass/uswds/src/core/mixins/_focus.scss +14 -0
  94. data/_sass/uswds/src/core/mixins/_font-face.scss +103 -0
  95. data/_sass/uswds/src/core/mixins/_icon.scss +183 -0
  96. data/_sass/uswds/src/core/mixins/_layout-grid.scss +128 -0
  97. data/_sass/uswds/src/core/mixins/_media-block-img.scss +4 -0
  98. data/_sass/uswds/{elements/_figure.scss → src/core/mixins/_media-link.scss} +0 -8
  99. data/_sass/uswds/src/core/mixins/_nav-list.scss +95 -0
  100. data/_sass/uswds/src/core/mixins/_override-prose.scss +6 -0
  101. data/_sass/uswds/src/core/mixins/_screen-reader.scss +23 -0
  102. data/_sass/uswds/src/core/mixins/_set-link-from-bg.scss +30 -0
  103. data/_sass/uswds/src/core/mixins/_set-text-from-bg.scss +28 -0
  104. data/_sass/uswds/src/core/mixins/_typography.scss +161 -0
  105. data/_sass/uswds/src/core/mixins/_unstyled-list.scss +11 -0
  106. data/_sass/uswds/src/core/mixins/_usa-list-styles.scss +10 -0
  107. data/_sass/uswds/src/core/mixins/_usa-table-styles.scss +8 -0
  108. data/_sass/uswds/src/core/mixins/_usa-typography.scss +54 -0
  109. data/_sass/uswds/src/core/mixins/_utility-builder.scss +369 -0
  110. data/_sass/uswds/src/core/mixins/layout-grid/_grid-container.scss +14 -0
  111. data/_sass/uswds/src/core/mixins/layout-grid/_grid-row.scss +7 -0
  112. data/_sass/uswds/src/core/mixins/utilities/_align-items.scss +11 -0
  113. data/_sass/uswds/src/core/mixins/utilities/_align-self.scss +11 -0
  114. data/_sass/uswds/src/core/mixins/utilities/_background-color.scss +9 -0
  115. data/_sass/uswds/src/core/mixins/utilities/_border-color.scss +11 -0
  116. data/_sass/uswds/src/core/mixins/utilities/_border-radius.scss +55 -0
  117. data/_sass/uswds/src/core/mixins/utilities/_border-width.scss +32 -0
  118. data/_sass/uswds/src/core/mixins/utilities/_border.scss +142 -0
  119. data/_sass/uswds/src/core/mixins/utilities/_bottom.scss +10 -0
  120. data/_sass/uswds/src/core/mixins/utilities/_circle.scss +9 -0
  121. data/_sass/uswds/src/core/mixins/utilities/_color.scss +10 -0
  122. data/_sass/uswds/src/core/mixins/utilities/_cursor.scss +10 -0
  123. data/_sass/uswds/src/core/mixins/utilities/_display.scss +11 -0
  124. data/_sass/uswds/src/core/mixins/utilities/_flex-direction.scss +10 -0
  125. data/_sass/uswds/src/core/mixins/utilities/_flex.scss +55 -0
  126. data/_sass/uswds/src/core/mixins/utilities/_float.scss +10 -0
  127. data/_sass/uswds/src/core/mixins/utilities/_font-weight.scss +10 -0
  128. data/_sass/uswds/src/core/mixins/utilities/_font.scss +42 -0
  129. data/_sass/uswds/src/core/mixins/utilities/_height.scss +11 -0
  130. data/_sass/uswds/src/core/mixins/utilities/_justify-content.scss +10 -0
  131. data/_sass/uswds/src/core/mixins/utilities/_left.scss +10 -0
  132. data/_sass/uswds/src/core/mixins/utilities/_line-height.scss +13 -0
  133. data/_sass/uswds/src/core/mixins/utilities/_margin.scss +85 -0
  134. data/_sass/uswds/src/core/mixins/utilities/_max-height.scss +10 -0
  135. data/_sass/uswds/src/core/mixins/utilities/_max-width.scss +10 -0
  136. data/_sass/uswds/src/core/mixins/utilities/_measure.scss +10 -0
  137. data/_sass/uswds/src/core/mixins/utilities/_min-height.scss +10 -0
  138. data/_sass/uswds/src/core/mixins/utilities/_min-width.scss +10 -0
  139. data/_sass/uswds/src/core/mixins/utilities/_order.scss +10 -0
  140. data/_sass/uswds/src/core/mixins/utilities/_outline-color.scss +10 -0
  141. data/_sass/uswds/src/core/mixins/utilities/_outline.scss +35 -0
  142. data/_sass/uswds/src/core/mixins/utilities/_overflow.scss +28 -0
  143. data/_sass/uswds/src/core/mixins/utilities/_padding.scss +49 -0
  144. data/_sass/uswds/src/core/mixins/utilities/_pin.scss +82 -0
  145. data/_sass/uswds/src/core/mixins/utilities/_position.scss +10 -0
  146. data/_sass/uswds/src/core/mixins/utilities/_right.scss +10 -0
  147. data/_sass/uswds/src/core/mixins/utilities/_shadow.scss +10 -0
  148. data/_sass/uswds/src/core/mixins/utilities/_square.scss +7 -0
  149. data/_sass/uswds/src/core/mixins/utilities/_text-align.scss +10 -0
  150. data/_sass/uswds/src/core/mixins/utilities/_text-decoration-color.scss +10 -0
  151. data/_sass/uswds/src/core/mixins/utilities/_text-decoration.scss +17 -0
  152. data/_sass/uswds/src/core/mixins/utilities/_text-indent.scss +10 -0
  153. data/_sass/uswds/src/core/mixins/utilities/_text.scss +77 -0
  154. data/_sass/uswds/src/core/mixins/utilities/_top.scss +10 -0
  155. data/_sass/uswds/src/core/mixins/utilities/_vertical-align.scss +10 -0
  156. data/_sass/uswds/src/core/mixins/utilities/_white-space.scss +10 -0
  157. data/_sass/uswds/src/core/mixins/utilities/_width.scss +11 -0
  158. data/_sass/uswds/src/core/mixins/utilities/_z-index.scss +10 -0
  159. data/_sass/uswds/src/core/placeholders/_all.scss +2 -0
  160. data/_sass/uswds/src/core/placeholders/_list.scss +23 -0
  161. data/_sass/uswds/src/core/placeholders/_table.scss +58 -0
  162. data/_sass/uswds/src/core/system-tokens/_blue-cool.scss +26 -0
  163. data/_sass/uswds/src/core/system-tokens/_blue-warm.scss +26 -0
  164. data/_sass/uswds/src/core/system-tokens/_blue.scss +26 -0
  165. data/_sass/uswds/src/core/system-tokens/_cyan.scss +26 -0
  166. data/_sass/uswds/src/core/system-tokens/_gold.scss +26 -0
  167. data/_sass/uswds/src/core/system-tokens/_gray-cool.scss +18 -0
  168. data/_sass/uswds/src/core/system-tokens/_gray-warm.scss +18 -0
  169. data/_sass/uswds/src/core/system-tokens/_gray.scss +19 -0
  170. data/_sass/uswds/src/core/system-tokens/_green-cool.scss +26 -0
  171. data/_sass/uswds/src/core/system-tokens/_green-warm.scss +26 -0
  172. data/_sass/uswds/src/core/system-tokens/_green.scss +26 -0
  173. data/_sass/uswds/src/core/system-tokens/_indigo-cool.scss +26 -0
  174. data/_sass/uswds/src/core/system-tokens/_indigo-warm.scss +26 -0
  175. data/_sass/uswds/src/core/system-tokens/_indigo.scss +26 -0
  176. data/_sass/uswds/src/core/system-tokens/_magenta.scss +26 -0
  177. data/_sass/uswds/src/core/system-tokens/_mint-cool.scss +26 -0
  178. data/_sass/uswds/src/core/system-tokens/_mint.scss +26 -0
  179. data/_sass/uswds/src/core/system-tokens/_orange-warm.scss +26 -0
  180. data/_sass/uswds/src/core/system-tokens/_orange.scss +26 -0
  181. data/_sass/uswds/src/core/system-tokens/_red-cool.scss +26 -0
  182. data/_sass/uswds/src/core/system-tokens/_red-warm.scss +26 -0
  183. data/_sass/uswds/src/core/system-tokens/_red.scss +26 -0
  184. data/_sass/uswds/src/core/system-tokens/_violet-warm.scss +26 -0
  185. data/_sass/uswds/src/core/system-tokens/_violet.scss +26 -0
  186. data/_sass/uswds/src/core/system-tokens/_yellow.scss +26 -0
  187. data/_sass/uswds/src/elements/_buttons.scss +224 -0
  188. data/_sass/uswds/{elements → src/elements}/_embed.scss +0 -4
  189. data/_sass/uswds/src/elements/_figure.scss +7 -0
  190. data/_sass/uswds/src/elements/_layout-grid.scss +159 -0
  191. data/_sass/uswds/src/elements/_table.scss +7 -0
  192. data/_sass/uswds/src/elements/_tags.scss +18 -0
  193. data/_sass/uswds/src/elements/form-controls/_all.scss +11 -0
  194. data/_sass/uswds/src/elements/form-controls/_character-count.scss +9 -0
  195. data/_sass/uswds/src/elements/form-controls/_checkbox-and-radio.scss +117 -0
  196. data/_sass/uswds/src/elements/form-controls/_combo-box.scss +126 -0
  197. data/_sass/uswds/src/elements/form-controls/_date-input.scss +31 -0
  198. data/_sass/uswds/src/elements/form-controls/_date-picker.scss +325 -0
  199. data/_sass/uswds/src/elements/form-controls/_dropdown.scss +25 -0
  200. data/_sass/uswds/src/elements/form-controls/_file-input.scss +199 -0
  201. data/_sass/uswds/src/elements/form-controls/_global.scss +91 -0
  202. data/_sass/uswds/src/elements/form-controls/_range-input.scss +89 -0
  203. data/_sass/uswds/src/elements/form-controls/_text-input.scss +13 -0
  204. data/_sass/uswds/src/elements/form-controls/_time-picker.scss +3 -0
  205. data/_sass/uswds/src/elements/typography/_content.scss +62 -0
  206. data/_sass/uswds/src/elements/typography/_links.scss +15 -0
  207. data/_sass/uswds/src/elements/typography/_list.scss +14 -0
  208. data/_sass/uswds/src/elements/typography/_prose.scss +6 -0
  209. data/_sass/uswds/src/global/_focus.scss +24 -0
  210. data/_sass/uswds/src/global/_font-face.scss +11 -0
  211. data/_sass/uswds/src/global/_sizing.scss +14 -0
  212. data/_sass/uswds/src/global/_typography.scss +32 -0
  213. data/_sass/uswds/src/lib/_normalize.scss +349 -0
  214. data/_sass/uswds/src/packages/_form-controls.scss +4 -0
  215. data/_sass/uswds/src/packages/_form-templates.scss +8 -0
  216. data/_sass/uswds/src/packages/_global.scss +7 -0
  217. data/_sass/uswds/src/packages/_layout-grid.scss +4 -0
  218. data/_sass/uswds/src/packages/_required.scss +21 -0
  219. data/_sass/uswds/src/packages/_typography.scss +7 -0
  220. data/_sass/uswds/src/packages/_usa-accordion.scss +4 -0
  221. data/_sass/uswds/src/packages/_usa-alert.scss +4 -0
  222. data/_sass/uswds/src/packages/_usa-banner.scss +7 -0
  223. data/_sass/uswds/src/packages/_usa-breadcrumb.scss +4 -0
  224. data/_sass/uswds/src/packages/_usa-button-group.scss +2 -0
  225. data/_sass/uswds/src/packages/_usa-button.scss +4 -0
  226. data/_sass/uswds/src/packages/_usa-card.scss +4 -0
  227. data/_sass/uswds/src/packages/_usa-checklist.scss +4 -0
  228. data/_sass/uswds/src/packages/_usa-footer.scss +10 -0
  229. data/_sass/uswds/src/packages/_usa-header.scss +13 -0
  230. data/_sass/uswds/src/packages/_usa-hero.scss +6 -0
  231. data/_sass/uswds/src/packages/_usa-identifier.scss +1 -0
  232. data/_sass/uswds/src/packages/_usa-media-block.scss +5 -0
  233. data/_sass/uswds/src/packages/_usa-megamenu.scss +4 -0
  234. data/_sass/uswds/src/packages/_usa-nav-container.scss +4 -0
  235. data/_sass/uswds/src/packages/_usa-nav.scss +5 -0
  236. data/_sass/uswds/src/packages/_usa-navbar.scss +4 -0
  237. data/_sass/uswds/src/packages/_usa-search.scss +8 -0
  238. data/_sass/uswds/src/packages/_usa-sidenav.scss +4 -0
  239. data/_sass/uswds/src/packages/_usa-skipnav.scss +4 -0
  240. data/_sass/uswds/src/packages/_usa-step-indicator.scss +2 -0
  241. data/_sass/uswds/src/packages/_usa-table.scss +4 -0
  242. data/_sass/uswds/src/packages/_usa-tag.scss +4 -0
  243. data/_sass/uswds/src/packages/_usa-tooltip.scss +2 -0
  244. data/_sass/uswds/src/packages/_uswds-components.scss +48 -0
  245. data/_sass/uswds/src/packages/_uswds-fonts.scss +2 -0
  246. data/_sass/uswds/src/packages/_uswds-utilities.scss +6 -0
  247. data/_sass/uswds/src/packages/_validation.scss +8 -0
  248. data/_sass/uswds/src/settings/_settings-color.scss +138 -0
  249. data/_sass/uswds/src/settings/_settings-components.scss +129 -0
  250. data/_sass/uswds/src/settings/_settings-general.scss +101 -0
  251. data/_sass/uswds/src/settings/_settings-spacing.scss +93 -0
  252. data/_sass/uswds/src/settings/_settings-typography.scss +422 -0
  253. data/_sass/uswds/src/settings/_settings-utilities.scss +867 -0
  254. data/_sass/uswds/src/theme/_uswds-theme-color.scss +136 -0
  255. data/_sass/uswds/src/theme/_uswds-theme-components.scss +129 -0
  256. data/_sass/uswds/src/theme/_uswds-theme-custom-styles.scss +21 -0
  257. data/_sass/uswds/src/theme/_uswds-theme-general.scss +101 -0
  258. data/_sass/uswds/src/theme/_uswds-theme-spacing.scss +93 -0
  259. data/_sass/uswds/src/theme/_uswds-theme-typography.scss +422 -0
  260. data/_sass/uswds/src/theme/_uswds-theme-utilities.scss +867 -0
  261. data/_sass/uswds/src/theme/styles.scss +76 -0
  262. data/_sass/uswds/src/uswds.scss +17 -0
  263. data/_sass/uswds/src/utilities/palettes/_all.scss +41 -0
  264. data/_sass/uswds/src/utilities/palettes/_default-palettes.scss +73 -0
  265. data/_sass/uswds/src/utilities/palettes/_font-palettes.scss +2762 -0
  266. data/_sass/uswds/src/utilities/palettes/_palette-registry.scss +46 -0
  267. data/_sass/uswds/src/utilities/palettes/_spacing-palettes.scss +135 -0
  268. data/_sass/uswds/src/utilities/palettes/colors/_all-colors-palettes.scss +56 -0
  269. data/_sass/uswds/src/utilities/palettes/colors/_black-transparent-palettes.scss +16 -0
  270. data/_sass/uswds/src/utilities/palettes/colors/_blue-cool-palettes.scss +69 -0
  271. data/_sass/uswds/src/utilities/palettes/colors/_blue-palettes.scss +66 -0
  272. data/_sass/uswds/src/utilities/palettes/colors/_blue-warm-palettes.scss +69 -0
  273. data/_sass/uswds/src/utilities/palettes/colors/_cyan-palettes.scss +66 -0
  274. data/_sass/uswds/src/utilities/palettes/colors/_gold-palettes.scss +66 -0
  275. data/_sass/uswds/src/utilities/palettes/colors/_gray-cool-palettes.scss +40 -0
  276. data/_sass/uswds/src/utilities/palettes/colors/_gray-palettes.scss +40 -0
  277. data/_sass/uswds/src/utilities/palettes/colors/_gray-warm-palettes.scss +40 -0
  278. data/_sass/uswds/src/utilities/palettes/colors/_green-cool-palettes.scss +69 -0
  279. data/_sass/uswds/src/utilities/palettes/colors/_green-palettes.scss +66 -0
  280. data/_sass/uswds/src/utilities/palettes/colors/_green-warm-palettes.scss +69 -0
  281. data/_sass/uswds/src/utilities/palettes/colors/_indigo-cool-palettes.scss +70 -0
  282. data/_sass/uswds/src/utilities/palettes/colors/_indigo-palettes.scss +66 -0
  283. data/_sass/uswds/src/utilities/palettes/colors/_indigo-warm-palettes.scss +70 -0
  284. data/_sass/uswds/src/utilities/palettes/colors/_magenta-palettes.scss +67 -0
  285. data/_sass/uswds/src/utilities/palettes/colors/_mint-cool-palettes.scss +69 -0
  286. data/_sass/uswds/src/utilities/palettes/colors/_mint-palettes.scss +66 -0
  287. data/_sass/uswds/src/utilities/palettes/colors/_orange-palettes.scss +66 -0
  288. data/_sass/uswds/src/utilities/palettes/colors/_orange-warm-palettes.scss +70 -0
  289. data/_sass/uswds/src/utilities/palettes/colors/_red-cool-palettes.scss +68 -0
  290. data/_sass/uswds/src/utilities/palettes/colors/_red-palettes.scss +66 -0
  291. data/_sass/uswds/src/utilities/palettes/colors/_red-warm-palettes.scss +68 -0
  292. data/_sass/uswds/src/utilities/palettes/colors/_violet-palettes.scss +66 -0
  293. data/_sass/uswds/src/utilities/palettes/colors/_violet-warm-palettes.scss +70 -0
  294. data/_sass/uswds/src/utilities/palettes/colors/_white-transparent-palettes.scss +16 -0
  295. data/_sass/uswds/src/utilities/palettes/colors/_yellow-palettes.scss +66 -0
  296. data/_sass/uswds/src/utilities/rules/_all.scss +57 -0
  297. data/_sass/uswds/src/utilities/rules/_package.scss +62 -0
  298. data/_sass/uswds/src/utilities/rules/add-aspect.scss +84 -0
  299. data/_sass/uswds/src/utilities/rules/add-list-reset.scss +39 -0
  300. data/_sass/uswds/src/utilities/rules/align-items.scss +30 -0
  301. data/_sass/uswds/src/utilities/rules/align-self.scss +27 -0
  302. data/_sass/uswds/src/utilities/rules/background-color.scss +32 -0
  303. data/_sass/uswds/src/utilities/rules/border-color.scss +32 -0
  304. data/_sass/uswds/src/utilities/rules/border-radius.scss +51 -0
  305. data/_sass/uswds/src/utilities/rules/border-style.scss +30 -0
  306. data/_sass/uswds/src/utilities/rules/border-width.scss +44 -0
  307. data/_sass/uswds/src/utilities/rules/border.scss +47 -0
  308. data/_sass/uswds/src/utilities/rules/bottom.scss +28 -0
  309. data/_sass/uswds/src/utilities/rules/box-shadow.scss +27 -0
  310. data/_sass/uswds/src/utilities/rules/circle.scss +35 -0
  311. data/_sass/uswds/src/utilities/rules/clearfix.scss +35 -0
  312. data/_sass/uswds/src/utilities/rules/color.scss +32 -0
  313. data/_sass/uswds/src/utilities/rules/cursor.scss +26 -0
  314. data/_sass/uswds/src/utilities/rules/display.scss +26 -0
  315. data/_sass/uswds/src/utilities/rules/flex-direction.scss +30 -0
  316. data/_sass/uswds/src/utilities/rules/flex-wrap.scss +27 -0
  317. data/_sass/uswds/src/utilities/rules/flex.scss +32 -0
  318. data/_sass/uswds/src/utilities/rules/float.scss +26 -0
  319. data/_sass/uswds/src/utilities/rules/font-family.scss +38 -0
  320. data/_sass/uswds/src/utilities/rules/font-feature.scss +31 -0
  321. data/_sass/uswds/src/utilities/rules/font-style.scss +29 -0
  322. data/_sass/uswds/src/utilities/rules/font-weight.scss +30 -0
  323. data/_sass/uswds/src/utilities/rules/font.scss +38 -0
  324. data/_sass/uswds/src/utilities/rules/height.scss +26 -0
  325. data/_sass/uswds/src/utilities/rules/justify-content.scss +32 -0
  326. data/_sass/uswds/src/utilities/rules/left.scss +28 -0
  327. data/_sass/uswds/src/utilities/rules/letter-spacing.scss +30 -0
  328. data/_sass/uswds/src/utilities/rules/line-height.scss +30 -0
  329. data/_sass/uswds/src/utilities/rules/margin.scss +70 -0
  330. data/_sass/uswds/src/utilities/rules/max-height.scss +27 -0
  331. data/_sass/uswds/src/utilities/rules/max-width.scss +27 -0
  332. data/_sass/uswds/src/utilities/rules/measure.scss +28 -0
  333. data/_sass/uswds/src/utilities/rules/min-height.scss +27 -0
  334. data/_sass/uswds/src/utilities/rules/min-width.scss +27 -0
  335. data/_sass/uswds/src/utilities/rules/opacity.scss +26 -0
  336. data/_sass/uswds/src/utilities/rules/order.scss +29 -0
  337. data/_sass/uswds/src/utilities/rules/outline-color.scss +33 -0
  338. data/_sass/uswds/src/utilities/rules/outline.scss +30 -0
  339. data/_sass/uswds/src/utilities/rules/overflow.scss +31 -0
  340. data/_sass/uswds/src/utilities/rules/padding.scss +43 -0
  341. data/_sass/uswds/src/utilities/rules/pin.scss +101 -0
  342. data/_sass/uswds/src/utilities/rules/position.scss +27 -0
  343. data/_sass/uswds/src/utilities/rules/right.scss +28 -0
  344. data/_sass/uswds/src/utilities/rules/square.scss +33 -0
  345. data/_sass/uswds/src/utilities/rules/text-align.scss +27 -0
  346. data/_sass/uswds/src/utilities/rules/text-decoration-color.scss +31 -0
  347. data/_sass/uswds/src/utilities/rules/text-decoration.scss +30 -0
  348. data/_sass/uswds/src/utilities/rules/text-indent.scss +30 -0
  349. data/_sass/uswds/src/utilities/rules/text-transform.scss +30 -0
  350. data/_sass/uswds/src/utilities/rules/top.scss +28 -0
  351. data/_sass/uswds/src/utilities/rules/vertical-align.scss +30 -0
  352. data/_sass/uswds/src/utilities/rules/whitespace.scss +27 -0
  353. data/_sass/uswds/src/utilities/rules/width.scss +26 -0
  354. data/_sass/uswds/src/utilities/rules/z-index.scss +28 -0
  355. data/_sass/uswds/src/utilities/utility-fonts.scss +20 -0
  356. data/assets/css/uswds-theme.scss +185 -0
  357. data/assets/js/{main.js → anchor.js} +0 -0
  358. data/assets/js/private_eye_conf.js +39 -0
  359. data/assets/js/vendor/private_eye.js +106 -0
  360. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Black.ttf +0 -0
  361. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Black.woff +0 -0
  362. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Black.woff2 +0 -0
  363. data/assets/uswds/fonts/merriweather/Latin-Merriweather-BlackItalic.ttf +0 -0
  364. data/assets/uswds/fonts/merriweather/Latin-Merriweather-BlackItalic.woff +0 -0
  365. data/assets/uswds/fonts/merriweather/Latin-Merriweather-BlackItalic.woff2 +0 -0
  366. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Bold.ttf +0 -0
  367. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Bold.woff +0 -0
  368. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Bold.woff2 +0 -0
  369. data/assets/uswds/fonts/merriweather/Latin-Merriweather-BoldItalic.ttf +0 -0
  370. data/assets/uswds/fonts/merriweather/Latin-Merriweather-BoldItalic.woff +0 -0
  371. data/assets/uswds/fonts/merriweather/Latin-Merriweather-BoldItalic.woff2 +0 -0
  372. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Italic.ttf +0 -0
  373. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Italic.woff +0 -0
  374. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Italic.woff2 +0 -0
  375. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Light.ttf +0 -0
  376. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Light.woff +0 -0
  377. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Light.woff2 +0 -0
  378. data/assets/uswds/fonts/merriweather/Latin-Merriweather-LightItalic.ttf +0 -0
  379. data/assets/uswds/fonts/merriweather/Latin-Merriweather-LightItalic.woff +0 -0
  380. data/assets/uswds/fonts/merriweather/Latin-Merriweather-LightItalic.woff2 +0 -0
  381. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Regular.ttf +0 -0
  382. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Regular.woff +0 -0
  383. data/assets/uswds/fonts/merriweather/Latin-Merriweather-Regular.woff2 +0 -0
  384. data/assets/uswds/fonts/public-sans/PublicSans-Black.ttf +0 -0
  385. data/assets/uswds/fonts/public-sans/PublicSans-Black.woff +0 -0
  386. data/assets/uswds/fonts/public-sans/PublicSans-Black.woff2 +0 -0
  387. data/assets/uswds/fonts/public-sans/PublicSans-BlackItalic.ttf +0 -0
  388. data/assets/uswds/fonts/public-sans/PublicSans-BlackItalic.woff +0 -0
  389. data/assets/uswds/fonts/public-sans/PublicSans-BlackItalic.woff2 +0 -0
  390. data/assets/uswds/fonts/public-sans/PublicSans-Bold.ttf +0 -0
  391. data/assets/uswds/fonts/public-sans/PublicSans-Bold.woff +0 -0
  392. data/assets/uswds/fonts/public-sans/PublicSans-Bold.woff2 +0 -0
  393. data/assets/uswds/fonts/public-sans/PublicSans-BoldItalic.ttf +0 -0
  394. data/assets/uswds/fonts/public-sans/PublicSans-BoldItalic.woff +0 -0
  395. data/assets/uswds/fonts/public-sans/PublicSans-BoldItalic.woff2 +0 -0
  396. data/assets/uswds/fonts/public-sans/PublicSans-ExtraBold.ttf +0 -0
  397. data/assets/uswds/fonts/public-sans/PublicSans-ExtraBold.woff +0 -0
  398. data/assets/uswds/fonts/public-sans/PublicSans-ExtraBold.woff2 +0 -0
  399. data/assets/uswds/fonts/public-sans/PublicSans-ExtraBoldItalic.ttf +0 -0
  400. data/assets/uswds/fonts/public-sans/PublicSans-ExtraBoldItalic.woff +0 -0
  401. data/assets/uswds/fonts/public-sans/PublicSans-ExtraBoldItalic.woff2 +0 -0
  402. data/assets/uswds/fonts/public-sans/PublicSans-ExtraLight.ttf +0 -0
  403. data/assets/uswds/fonts/public-sans/PublicSans-ExtraLight.woff +0 -0
  404. data/assets/uswds/fonts/public-sans/PublicSans-ExtraLight.woff2 +0 -0
  405. data/assets/uswds/fonts/public-sans/PublicSans-ExtraLightItalic.ttf +0 -0
  406. data/assets/uswds/fonts/public-sans/PublicSans-ExtraLightItalic.woff +0 -0
  407. data/assets/uswds/fonts/public-sans/PublicSans-ExtraLightItalic.woff2 +0 -0
  408. data/assets/uswds/fonts/public-sans/PublicSans-Italic.ttf +0 -0
  409. data/assets/uswds/fonts/public-sans/PublicSans-Italic.woff +0 -0
  410. data/assets/uswds/fonts/public-sans/PublicSans-Italic.woff2 +0 -0
  411. data/assets/uswds/fonts/public-sans/PublicSans-Light.ttf +0 -0
  412. data/assets/uswds/fonts/public-sans/PublicSans-Light.woff +0 -0
  413. data/assets/uswds/fonts/public-sans/PublicSans-Light.woff2 +0 -0
  414. data/assets/uswds/fonts/public-sans/PublicSans-LightItalic.ttf +0 -0
  415. data/assets/uswds/fonts/public-sans/PublicSans-LightItalic.woff +0 -0
  416. data/assets/uswds/fonts/public-sans/PublicSans-LightItalic.woff2 +0 -0
  417. data/assets/uswds/fonts/public-sans/PublicSans-Medium.ttf +0 -0
  418. data/assets/uswds/fonts/public-sans/PublicSans-Medium.woff +0 -0
  419. data/assets/uswds/fonts/public-sans/PublicSans-Medium.woff2 +0 -0
  420. data/assets/uswds/fonts/public-sans/PublicSans-MediumItalic.ttf +0 -0
  421. data/assets/uswds/fonts/public-sans/PublicSans-MediumItalic.woff +0 -0
  422. data/assets/uswds/fonts/public-sans/PublicSans-MediumItalic.woff2 +0 -0
  423. data/assets/uswds/fonts/public-sans/PublicSans-Regular.ttf +0 -0
  424. data/assets/uswds/fonts/public-sans/PublicSans-Regular.woff +0 -0
  425. data/assets/uswds/fonts/public-sans/PublicSans-Regular.woff2 +0 -0
  426. data/assets/uswds/fonts/public-sans/PublicSans-SemiBold.ttf +0 -0
  427. data/assets/uswds/fonts/public-sans/PublicSans-SemiBold.woff +0 -0
  428. data/assets/uswds/fonts/public-sans/PublicSans-SemiBold.woff2 +0 -0
  429. data/assets/uswds/fonts/public-sans/PublicSans-SemiBoldItalic.ttf +0 -0
  430. data/assets/uswds/fonts/public-sans/PublicSans-SemiBoldItalic.woff +0 -0
  431. data/assets/uswds/fonts/public-sans/PublicSans-SemiBoldItalic.woff2 +0 -0
  432. data/assets/uswds/fonts/public-sans/PublicSans-Thin.ttf +0 -0
  433. data/assets/uswds/fonts/public-sans/PublicSans-Thin.woff +0 -0
  434. data/assets/uswds/fonts/public-sans/PublicSans-Thin.woff2 +0 -0
  435. data/assets/uswds/fonts/public-sans/PublicSans-ThinItalic.ttf +0 -0
  436. data/assets/uswds/fonts/public-sans/PublicSans-ThinItalic.woff +0 -0
  437. data/assets/uswds/fonts/public-sans/PublicSans-ThinItalic.woff2 +0 -0
  438. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-100.ttf +0 -0
  439. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-100.woff +0 -0
  440. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-100.woff2 +0 -0
  441. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-100italic.ttf +0 -0
  442. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-100italic.woff +0 -0
  443. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-100italic.woff2 +0 -0
  444. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-300.ttf +0 -0
  445. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-300.woff +0 -0
  446. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-300.woff2 +0 -0
  447. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-300italic.ttf +0 -0
  448. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-300italic.woff +0 -0
  449. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-300italic.woff2 +0 -0
  450. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-500.ttf +0 -0
  451. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-500.woff +0 -0
  452. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-500.woff2 +0 -0
  453. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-500italic.ttf +0 -0
  454. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-500italic.woff +0 -0
  455. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-500italic.woff2 +0 -0
  456. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-700.ttf +0 -0
  457. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-700.woff +0 -0
  458. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-700.woff2 +0 -0
  459. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-700italic.ttf +0 -0
  460. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-700italic.woff +0 -0
  461. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-700italic.woff2 +0 -0
  462. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-italic.ttf +0 -0
  463. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-italic.woff +0 -0
  464. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-italic.woff2 +0 -0
  465. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-regular.ttf +0 -0
  466. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-regular.woff +0 -0
  467. data/assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-regular.woff2 +0 -0
  468. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-black-webfont.ttf +0 -0
  469. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-black-webfont.woff +0 -0
  470. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-black-webfont.woff2 +0 -0
  471. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-blackitalic-webfont.ttf +0 -0
  472. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-blackitalic-webfont.woff +0 -0
  473. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-blackitalic-webfont.woff2 +0 -0
  474. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-bold-webfont.ttf +0 -0
  475. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-bold-webfont.woff +0 -0
  476. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-bold-webfont.woff2 +0 -0
  477. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-bolditalic-webfont.ttf +0 -0
  478. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-bolditalic-webfont.woff +0 -0
  479. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-bolditalic-webfont.woff2 +0 -0
  480. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-extralight-webfont.ttf +0 -0
  481. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-extralight-webfont.woff +0 -0
  482. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-extralight-webfont.woff2 +0 -0
  483. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-extralightitalic-webfont.ttf +0 -0
  484. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-extralightitalic-webfont.woff +0 -0
  485. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-extralightitalic-webfont.woff2 +0 -0
  486. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-italic-webfont.ttf +0 -0
  487. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-italic-webfont.woff +0 -0
  488. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-italic-webfont.woff2 +0 -0
  489. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-light-webfont.ttf +0 -0
  490. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-light-webfont.woff +0 -0
  491. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-light-webfont.woff2 +0 -0
  492. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-lightitalic-webfont.ttf +0 -0
  493. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-lightitalic-webfont.woff +0 -0
  494. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-lightitalic-webfont.woff2 +0 -0
  495. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-regular-webfont.ttf +0 -0
  496. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-regular-webfont.woff +0 -0
  497. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-regular-webfont.woff2 +0 -0
  498. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-semibold-webfont.ttf +0 -0
  499. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-semibold-webfont.woff +0 -0
  500. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-semibold-webfont.woff2 +0 -0
  501. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-semibolditalic-webfont.ttf +0 -0
  502. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-semibolditalic-webfont.woff +0 -0
  503. data/assets/uswds/fonts/source-sans-pro/sourcesanspro-semibolditalic-webfont.woff2 +0 -0
  504. data/assets/uswds/img/alerts/error.svg +4 -17
  505. data/assets/uswds/img/alerts/info.svg +4 -18
  506. data/assets/uswds/img/alerts/success.svg +1 -12
  507. data/assets/uswds/img/alerts/warning.svg +4 -16
  508. data/assets/uswds/img/angle-arrow-down-gray-90.svg +1 -0
  509. data/assets/uswds/img/angle-arrow-down-hover.svg +1 -1
  510. data/assets/uswds/img/angle-arrow-down-primary-hover.svg +1 -1
  511. data/assets/uswds/img/angle-arrow-down-primary.svg +1 -1
  512. data/assets/uswds/img/angle-arrow-down-white.svg +1 -0
  513. data/assets/uswds/img/angle-arrow-down.svg +1 -1
  514. data/assets/uswds/img/angle-arrow-right-white.svg +1 -0
  515. data/assets/uswds/img/angle-arrow-right.svg +1 -0
  516. data/assets/uswds/img/angle-arrow-up-primary-hover.svg +1 -1
  517. data/assets/uswds/img/angle-arrow-up-primary.svg +1 -1
  518. data/assets/uswds/img/angle-arrow-up-white.svg +1 -0
  519. data/assets/uswds/img/angle-double-left-solid.svg +1 -0
  520. data/assets/uswds/img/angle-double-right-solid.svg +1 -0
  521. data/assets/uswds/img/angle-left-solid.svg +1 -0
  522. data/assets/uswds/img/angle-right-solid.svg +1 -0
  523. data/assets/uswds/img/arrow-both.svg +1 -1
  524. data/assets/uswds/img/arrow-down-gray-60.svg +1 -0
  525. data/assets/uswds/img/arrow-down.svg +1 -1
  526. data/assets/uswds/img/arrow-left-indigo-cool-50v.svg +1 -0
  527. data/assets/uswds/img/arrow-left-white.svg +1 -0
  528. data/assets/uswds/img/arrow-left.svg +1 -0
  529. data/assets/uswds/img/arrow-right.svg +1 -1
  530. data/assets/uswds/img/calendar-alt-solid.svg +1 -0
  531. data/assets/uswds/img/checkbox-check-print.svg +1 -0
  532. data/assets/uswds/img/chevron-right-white.svg +1 -0
  533. data/assets/uswds/img/chevron-right.svg +1 -0
  534. data/assets/uswds/img/chevron-white.svg +1 -0
  535. data/assets/uswds/img/chevron.svg +1 -0
  536. data/assets/uswds/img/circle-124.png +0 -0
  537. data/assets/uswds/img/circle-gray-20.svg +1 -0
  538. data/assets/uswds/img/close-alt-blue-60v.svg +3 -0
  539. data/assets/uswds/img/close-alt.svg +3 -0
  540. data/assets/uswds/img/close-blue-30-alt.svg +3 -0
  541. data/assets/uswds/img/close-blue-40v-alt.svg +3 -0
  542. data/assets/uswds/img/close-blue-50-alt.svg +3 -0
  543. data/assets/uswds/img/close-blue-50v-alt.svg +3 -0
  544. data/assets/uswds/img/close-blue-60-alt.svg +3 -0
  545. data/assets/uswds/img/close-blue-60v-alt.svg +3 -0
  546. data/assets/uswds/img/close-gray-60.svg +1 -0
  547. data/assets/uswds/img/close-gray-90-alt.svg +3 -0
  548. data/assets/uswds/img/close-primary.svg +1 -16
  549. data/assets/uswds/img/close-white-alt.svg +3 -0
  550. data/assets/uswds/img/close-white.svg +3 -0
  551. data/assets/uswds/img/close.svg +1 -12
  552. data/assets/uswds/img/correct8-alt.png +0 -0
  553. data/assets/uswds/img/correct8-alt.svg +1 -0
  554. data/assets/uswds/img/correct8.svg +1 -1
  555. data/assets/uswds/img/correct9.svg +1 -1
  556. data/assets/uswds/img/external-link-alt-hover.svg +1 -1
  557. data/assets/uswds/img/external-link-alt.svg +1 -1
  558. data/assets/uswds/img/external-link-hover.svg +1 -1
  559. data/assets/uswds/img/external-link.svg +1 -1
  560. data/assets/uswds/img/favicons/favicon-114.png +0 -0
  561. data/assets/uswds/img/favicons/favicon-144.png +0 -0
  562. data/assets/uswds/img/favicons/favicon-16.png +0 -0
  563. data/assets/uswds/img/favicons/favicon-192.png +0 -0
  564. data/assets/uswds/img/favicons/favicon-40.png +0 -0
  565. data/assets/uswds/img/favicons/favicon-57.png +0 -0
  566. data/assets/uswds/img/favicons/favicon-72.png +0 -0
  567. data/assets/uswds/img/favicons/favicon.ico +0 -0
  568. data/assets/uswds/img/favicons/favicon.png +0 -0
  569. data/assets/uswds/img/file-excel.svg +1 -0
  570. data/assets/uswds/img/file-pdf.svg +1 -0
  571. data/assets/uswds/img/file-video.svg +1 -0
  572. data/assets/uswds/img/file-word.svg +1 -0
  573. data/assets/uswds/img/file.svg +1 -0
  574. data/assets/uswds/img/hero.png +0 -0
  575. data/assets/uswds/img/icon-dot-gov.svg +1 -1
  576. data/assets/uswds/img/icon-https.svg +1 -1
  577. data/assets/uswds/img/loader.gif +0 -0
  578. data/assets/uswds/img/loader.svg +1 -0
  579. data/assets/uswds/img/lock.svg +1 -0
  580. data/assets/uswds/img/minus-alt.svg +1 -1
  581. data/assets/uswds/img/minus.svg +1 -1
  582. data/assets/uswds/img/plus-alt.svg +1 -1
  583. data/assets/uswds/img/plus.svg +1 -1
  584. data/assets/uswds/img/search-alt.svg +1 -1
  585. data/assets/uswds/img/search-primary.svg +1 -12
  586. data/assets/uswds/img/search.svg +1 -1
  587. data/assets/uswds/img/social-icons/facebook25.png +0 -0
  588. data/assets/uswds/img/social-icons/{svg/facebook25.svg → facebook25.svg} +1 -1
  589. data/assets/uswds/img/social-icons/rss25.png +0 -0
  590. data/assets/uswds/img/social-icons/{svg/rss25.svg → rss25.svg} +1 -1
  591. data/assets/uswds/img/social-icons/twitter16.png +0 -0
  592. data/assets/uswds/img/social-icons/{svg/twitter16.svg → twitter16.svg} +1 -1
  593. data/assets/uswds/img/social-icons/youtube15.png +0 -0
  594. data/assets/uswds/img/social-icons/{svg/youtube15.svg → youtube15.svg} +1 -1
  595. data/assets/uswds/js/uswds.js +5128 -902
  596. data/assets/uswds/js/uswds.min.js +1 -1
  597. data/assets/uswds/js/uswds.min.js.map +1 -1
  598. metadata +581 -228
  599. data/_includes/components/footer--medium.html +0 -100
  600. data/_includes/components/header--basic.html +0 -74
  601. data/_includes/components/header--extended.html +0 -92
  602. data/_sass/components/_all.scss +0 -8
  603. data/_sass/components/_footer.scss +0 -26
  604. data/_sass/components/_header.scss +0 -27
  605. data/_sass/components/_hero.scss +0 -45
  606. data/_sass/components/_side-nav.scss +0 -56
  607. data/_sass/components/_site-width.scss +0 -12
  608. data/_sass/components/_top-nav.scss +0 -73
  609. data/_sass/components/_usa-banner.scss +0 -29
  610. data/_sass/uswds/_all.scss +0 -1
  611. data/_sass/uswds/components/_accordions.scss +0 -150
  612. data/_sass/uswds/components/_alerts.scss +0 -125
  613. data/_sass/uswds/components/_banner.scss +0 -204
  614. data/_sass/uswds/components/_forms.scss +0 -164
  615. data/_sass/uswds/components/_graphic-list.scss +0 -35
  616. data/_sass/uswds/components/_layout.scss +0 -36
  617. data/_sass/uswds/components/_media-block.scss +0 -12
  618. data/_sass/uswds/components/_navigation.scss +0 -549
  619. data/_sass/uswds/components/_search.scss +0 -111
  620. data/_sass/uswds/components/_section.scss +0 -37
  621. data/_sass/uswds/components/_sidenav.scss +0 -8
  622. data/_sass/uswds/components/_skipnav.scss +0 -19
  623. data/_sass/uswds/core/_base.scss +0 -35
  624. data/_sass/uswds/core/_fonts.scss +0 -65
  625. data/_sass/uswds/core/_grid-settings.scss +0 -3
  626. data/_sass/uswds/core/_grid.scss +0 -199
  627. data/_sass/uswds/core/_utilities.scss +0 -252
  628. data/_sass/uswds/core/_variables.scss +0 -155
  629. data/_sass/uswds/elements/_buttons.scss +0 -217
  630. data/_sass/uswds/elements/_inputs.scss +0 -351
  631. data/_sass/uswds/elements/_labels.scss +0 -20
  632. data/_sass/uswds/elements/_list.scss +0 -32
  633. data/_sass/uswds/elements/_table.scss +0 -55
  634. data/_sass/uswds/elements/_typography.scss +0 -260
  635. data/_sass/uswds/lib/_bourbon-deprecated-upcoming.scss +0 -411
  636. data/_sass/uswds/lib/_bourbon.scss +0 -87
  637. data/_sass/uswds/lib/_neat-helpers.scss +0 -11
  638. data/_sass/uswds/lib/_neat.scss +0 -23
  639. data/_sass/uswds/lib/_normalize.scss +0 -424
  640. data/_sass/uswds/lib/addons/_border-color.scss +0 -26
  641. data/_sass/uswds/lib/addons/_border-radius.scss +0 -48
  642. data/_sass/uswds/lib/addons/_border-style.scss +0 -25
  643. data/_sass/uswds/lib/addons/_border-width.scss +0 -25
  644. data/_sass/uswds/lib/addons/_buttons.scss +0 -64
  645. data/_sass/uswds/lib/addons/_clearfix.scss +0 -25
  646. data/_sass/uswds/lib/addons/_ellipsis.scss +0 -30
  647. data/_sass/uswds/lib/addons/_font-stacks.scss +0 -31
  648. data/_sass/uswds/lib/addons/_hide-text.scss +0 -27
  649. data/_sass/uswds/lib/addons/_margin.scss +0 -26
  650. data/_sass/uswds/lib/addons/_padding.scss +0 -26
  651. data/_sass/uswds/lib/addons/_position.scss +0 -48
  652. data/_sass/uswds/lib/addons/_prefixer.scss +0 -66
  653. data/_sass/uswds/lib/addons/_retina-image.scss +0 -25
  654. data/_sass/uswds/lib/addons/_size.scss +0 -51
  655. data/_sass/uswds/lib/addons/_text-inputs.scss +0 -113
  656. data/_sass/uswds/lib/addons/_timing-functions.scss +0 -34
  657. data/_sass/uswds/lib/addons/_triangle.scss +0 -63
  658. data/_sass/uswds/lib/addons/_word-wrap.scss +0 -29
  659. data/_sass/uswds/lib/css3/_animation.scss +0 -43
  660. data/_sass/uswds/lib/css3/_appearance.scss +0 -3
  661. data/_sass/uswds/lib/css3/_backface-visibility.scss +0 -3
  662. data/_sass/uswds/lib/css3/_background-image.scss +0 -42
  663. data/_sass/uswds/lib/css3/_background.scss +0 -55
  664. data/_sass/uswds/lib/css3/_border-image.scss +0 -59
  665. data/_sass/uswds/lib/css3/_calc.scss +0 -4
  666. data/_sass/uswds/lib/css3/_columns.scss +0 -47
  667. data/_sass/uswds/lib/css3/_filter.scss +0 -4
  668. data/_sass/uswds/lib/css3/_flex-box.scss +0 -287
  669. data/_sass/uswds/lib/css3/_font-face.scss +0 -24
  670. data/_sass/uswds/lib/css3/_font-feature-settings.scss +0 -4
  671. data/_sass/uswds/lib/css3/_hidpi-media-query.scss +0 -10
  672. data/_sass/uswds/lib/css3/_hyphens.scss +0 -4
  673. data/_sass/uswds/lib/css3/_image-rendering.scss +0 -14
  674. data/_sass/uswds/lib/css3/_keyframes.scss +0 -36
  675. data/_sass/uswds/lib/css3/_linear-gradient.scss +0 -38
  676. data/_sass/uswds/lib/css3/_perspective.scss +0 -8
  677. data/_sass/uswds/lib/css3/_placeholder.scss +0 -8
  678. data/_sass/uswds/lib/css3/_radial-gradient.scss +0 -39
  679. data/_sass/uswds/lib/css3/_selection.scss +0 -42
  680. data/_sass/uswds/lib/css3/_text-decoration.scss +0 -19
  681. data/_sass/uswds/lib/css3/_transform.scss +0 -15
  682. data/_sass/uswds/lib/css3/_transition.scss +0 -71
  683. data/_sass/uswds/lib/css3/_user-select.scss +0 -3
  684. data/_sass/uswds/lib/functions/_assign-inputs.scss +0 -11
  685. data/_sass/uswds/lib/functions/_contains-falsy.scss +0 -20
  686. data/_sass/uswds/lib/functions/_contains.scss +0 -26
  687. data/_sass/uswds/lib/functions/_is-length.scss +0 -11
  688. data/_sass/uswds/lib/functions/_is-light.scss +0 -21
  689. data/_sass/uswds/lib/functions/_is-number.scss +0 -11
  690. data/_sass/uswds/lib/functions/_is-size.scss +0 -13
  691. data/_sass/uswds/lib/functions/_modular-scale.scss +0 -69
  692. data/_sass/uswds/lib/functions/_new-breakpoint.scss +0 -49
  693. data/_sass/uswds/lib/functions/_private.scss +0 -114
  694. data/_sass/uswds/lib/functions/_px-to-em.scss +0 -13
  695. data/_sass/uswds/lib/functions/_px-to-rem.scss +0 -15
  696. data/_sass/uswds/lib/functions/_shade.scss +0 -24
  697. data/_sass/uswds/lib/functions/_strip-units.scss +0 -17
  698. data/_sass/uswds/lib/functions/_tint.scss +0 -24
  699. data/_sass/uswds/lib/functions/_transition-property-name.scss +0 -22
  700. data/_sass/uswds/lib/functions/_unpack.scss +0 -27
  701. data/_sass/uswds/lib/grid/_box-sizing.scss +0 -15
  702. data/_sass/uswds/lib/grid/_direction-context.scss +0 -33
  703. data/_sass/uswds/lib/grid/_display-context.scss +0 -28
  704. data/_sass/uswds/lib/grid/_fill-parent.scss +0 -22
  705. data/_sass/uswds/lib/grid/_media.scss +0 -92
  706. data/_sass/uswds/lib/grid/_omega.scss +0 -87
  707. data/_sass/uswds/lib/grid/_outer-container.scss +0 -34
  708. data/_sass/uswds/lib/grid/_pad.scss +0 -25
  709. data/_sass/uswds/lib/grid/_private.scss +0 -35
  710. data/_sass/uswds/lib/grid/_row.scss +0 -52
  711. data/_sass/uswds/lib/grid/_shift.scss +0 -50
  712. data/_sass/uswds/lib/grid/_span-columns.scss +0 -94
  713. data/_sass/uswds/lib/grid/_to-deprecate.scss +0 -97
  714. data/_sass/uswds/lib/grid/_visual-grid.scss +0 -42
  715. data/_sass/uswds/lib/helpers/_convert-units.scss +0 -21
  716. data/_sass/uswds/lib/helpers/_directional-values.scss +0 -96
  717. data/_sass/uswds/lib/helpers/_font-source-declaration.scss +0 -43
  718. data/_sass/uswds/lib/helpers/_gradient-positions-parser.scss +0 -13
  719. data/_sass/uswds/lib/helpers/_linear-angle-parser.scss +0 -25
  720. data/_sass/uswds/lib/helpers/_linear-gradient-parser.scss +0 -41
  721. data/_sass/uswds/lib/helpers/_linear-positions-parser.scss +0 -61
  722. data/_sass/uswds/lib/helpers/_linear-side-corner-parser.scss +0 -31
  723. data/_sass/uswds/lib/helpers/_radial-arg-parser.scss +0 -69
  724. data/_sass/uswds/lib/helpers/_radial-gradient-parser.scss +0 -50
  725. data/_sass/uswds/lib/helpers/_radial-positions-parser.scss +0 -18
  726. data/_sass/uswds/lib/helpers/_render-gradients.scss +0 -26
  727. data/_sass/uswds/lib/helpers/_shape-size-stripper.scss +0 -10
  728. data/_sass/uswds/lib/helpers/_str-to-num.scss +0 -50
  729. data/_sass/uswds/lib/mixins/_clearfix.scss +0 -25
  730. data/_sass/uswds/lib/settings/_asset-pipeline.scss +0 -7
  731. data/_sass/uswds/lib/settings/_disable-warnings.scss +0 -13
  732. data/_sass/uswds/lib/settings/_grid.scss +0 -51
  733. data/_sass/uswds/lib/settings/_prefixer.scss +0 -9
  734. data/_sass/uswds/lib/settings/_px-to-em.scss +0 -1
  735. data/_sass/uswds/lib/settings/_visual-grid.scss +0 -27
  736. data/_sass/uswds/uswds.scss +0 -41
  737. data/assets/css/main.scss +0 -93
  738. data/assets/uswds/fonts/merriweather-bold-webfont.eot +0 -0
  739. data/assets/uswds/fonts/merriweather-bold-webfont.ttf +0 -0
  740. data/assets/uswds/fonts/merriweather-bold-webfont.woff +0 -0
  741. data/assets/uswds/fonts/merriweather-bold-webfont.woff2 +0 -0
  742. data/assets/uswds/fonts/merriweather-italic-webfont.eot +0 -0
  743. data/assets/uswds/fonts/merriweather-italic-webfont.ttf +0 -0
  744. data/assets/uswds/fonts/merriweather-italic-webfont.woff +0 -0
  745. data/assets/uswds/fonts/merriweather-italic-webfont.woff2 +0 -0
  746. data/assets/uswds/fonts/merriweather-light-webfont.eot +0 -0
  747. data/assets/uswds/fonts/merriweather-light-webfont.ttf +0 -0
  748. data/assets/uswds/fonts/merriweather-light-webfont.woff +0 -0
  749. data/assets/uswds/fonts/merriweather-light-webfont.woff2 +0 -0
  750. data/assets/uswds/fonts/merriweather-regular-webfont.eot +0 -0
  751. data/assets/uswds/fonts/merriweather-regular-webfont.ttf +0 -0
  752. data/assets/uswds/fonts/merriweather-regular-webfont.woff +0 -0
  753. data/assets/uswds/fonts/merriweather-regular-webfont.woff2 +0 -0
  754. data/assets/uswds/fonts/sourcesanspro-bold-webfont.eot +0 -0
  755. data/assets/uswds/fonts/sourcesanspro-bold-webfont.ttf +0 -0
  756. data/assets/uswds/fonts/sourcesanspro-bold-webfont.woff +0 -0
  757. data/assets/uswds/fonts/sourcesanspro-bold-webfont.woff2 +0 -0
  758. data/assets/uswds/fonts/sourcesanspro-italic-webfont.eot +0 -0
  759. data/assets/uswds/fonts/sourcesanspro-italic-webfont.ttf +0 -0
  760. data/assets/uswds/fonts/sourcesanspro-italic-webfont.woff +0 -0
  761. data/assets/uswds/fonts/sourcesanspro-italic-webfont.woff2 +0 -0
  762. data/assets/uswds/fonts/sourcesanspro-light-webfont.eot +0 -0
  763. data/assets/uswds/fonts/sourcesanspro-light-webfont.ttf +0 -0
  764. data/assets/uswds/fonts/sourcesanspro-light-webfont.woff +0 -0
  765. data/assets/uswds/fonts/sourcesanspro-light-webfont.woff2 +0 -0
  766. data/assets/uswds/fonts/sourcesanspro-regular-webfont.eot +0 -0
  767. data/assets/uswds/fonts/sourcesanspro-regular-webfont.ttf +0 -0
  768. data/assets/uswds/fonts/sourcesanspro-regular-webfont.woff +0 -0
  769. data/assets/uswds/fonts/sourcesanspro-regular-webfont.woff2 +0 -0
  770. data/assets/uswds/img/alerts/error.png +0 -0
  771. data/assets/uswds/img/alerts/info.png +0 -0
  772. data/assets/uswds/img/alerts/success.png +0 -0
  773. data/assets/uswds/img/alerts/warning.png +0 -0
  774. data/assets/uswds/img/angle-arrow-down-hover.png +0 -0
  775. data/assets/uswds/img/angle-arrow-down-primary-hover.png +0 -0
  776. data/assets/uswds/img/angle-arrow-down-primary.png +0 -0
  777. data/assets/uswds/img/angle-arrow-down.png +0 -0
  778. data/assets/uswds/img/angle-arrow-up-primary-hover.png +0 -0
  779. data/assets/uswds/img/angle-arrow-up-primary.png +0 -0
  780. data/assets/uswds/img/arrow-both.png +0 -0
  781. data/assets/uswds/img/arrow-down.png +0 -0
  782. data/assets/uswds/img/arrow-right.png +0 -0
  783. data/assets/uswds/img/close-primary.png +0 -0
  784. data/assets/uswds/img/close.png +0 -0
  785. data/assets/uswds/img/correct8.png +0 -0
  786. data/assets/uswds/img/correct9.png +0 -0
  787. data/assets/uswds/img/external-link-alt-hover.png +0 -0
  788. data/assets/uswds/img/external-link-alt.png +0 -0
  789. data/assets/uswds/img/external-link-hover.png +0 -0
  790. data/assets/uswds/img/external-link.png +0 -0
  791. data/assets/uswds/img/minus-alt.png +0 -0
  792. data/assets/uswds/img/minus.png +0 -0
  793. data/assets/uswds/img/plus-alt.png +0 -0
  794. data/assets/uswds/img/plus.png +0 -0
  795. data/assets/uswds/img/search-alt.png +0 -0
  796. data/assets/uswds/img/search-primary.png +0 -0
  797. data/assets/uswds/img/search.png +0 -0
  798. data/assets/uswds/img/social-icons/png/facebook25.png +0 -0
  799. data/assets/uswds/img/social-icons/png/rss25.png +0 -0
  800. data/assets/uswds/img/social-icons/png/twitter16.png +0 -0
  801. data/assets/uswds/img/social-icons/png/youtube15.png +0 -0
@@ -1,2 +1,2 @@
1
- !function t(e,n,r){function o(u,c){if(!n[u]){if(!e[u]){var s="function"==typeof require&&require;if(!c&&s)return s(u,!0);if(i)return i(u,!0);var a=new Error("Cannot find module '"+u+"'");throw a.code="MODULE_NOT_FOUND",a}var f=n[u]={exports:{}};e[u][0].call(f.exports,function(t){var n=e[u][1][t];return o(n?n:t)},f,f.exports,t,e,n,r)}return n[u].exports}for(var i="function"==typeof require&&require,u=0;u<r.length;u++)o(r[u]);return o}({1:[function(t,e,n){"use strict";e.exports=function(t,e,n){if(t.filter)return t.filter(e,n);if(void 0===t||null===t)throw new TypeError;if("function"!=typeof e)throw new TypeError;for(var o=[],i=0;i<t.length;i++)if(r.call(t,i)){var u=t[i];e.call(n,u,i,t)&&o.push(u)}return o};var r=Object.prototype.hasOwnProperty},{}],2:[function(t,e,n){"use strict";e.exports=function(t,e,n){if(t.forEach)return void t.forEach(e,n);for(var r=0;r<t.length;r+=1)e.call(n,t[r],r,t)}},{}],3:[function(t,e,n){"use strict";"document"in window.self&&("classList"in document.createElement("_")&&(!document.createElementNS||"classList"in document.createElementNS("http://www.w3.org/2000/svg","g"))||!function(t){if("Element"in t){var e="classList",n="prototype",r=t.Element[n],o=Object,i=String[n].trim||function(){return this.replace(/^\s+|\s+$/g,"")},u=Array[n].indexOf||function(t){for(var e=0,n=this.length;e<n;e++)if(e in this&&this[e]===t)return e;return-1},c=function(t,e){this.name=t,this.code=DOMException[t],this.message=e},s=function(t,e){if(""===e)throw new c("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(e))throw new c("INVALID_CHARACTER_ERR","String contains an invalid character");return u.call(t,e)},a=function(t){for(var e=i.call(t.getAttribute("class")||""),n=e?e.split(/\s+/):[],r=0,o=n.length;r<o;r++)this.push(n[r]);this._updateClassName=function(){t.setAttribute("class",this.toString())}},f=a[n]=[],l=function(){return new a(this)};if(c[n]=Error[n],f.item=function(t){return this[t]||null},f.contains=function(t){return t+="",s(this,t)!==-1},f.add=function(){var t,e=arguments,n=0,r=e.length,o=!1;do t=e[n]+"",s(this,t)===-1&&(this.push(t),o=!0);while(++n<r);o&&this._updateClassName()},f.remove=function(){var t,e,n=arguments,r=0,o=n.length,i=!1;do for(t=n[r]+"",e=s(this,t);e!==-1;)this.splice(e,1),i=!0,e=s(this,t);while(++r<o);i&&this._updateClassName()},f.toggle=function(t,e){t+="";var n=this.contains(t),r=n?e!==!0&&"remove":e!==!1&&"add";return r&&this[r](t),e===!0||e===!1?e:!n},f.toString=function(){return this.join(" ")},o.defineProperty){var d={get:l,enumerable:!0,configurable:!0};try{o.defineProperty(r,e,d)}catch(p){void 0!==p.number&&p.number!==-2146823252||(d.enumerable=!1,o.defineProperty(r,e,d))}}else o[n].__defineGetter__&&r.__defineGetter__(e,l)}}(window.self),function(){var t=document.createElement("_");if(t.classList.add("c1","c2"),!t.classList.contains("c2")){var e=function(t){var e=DOMTokenList.prototype[t];DOMTokenList.prototype[t]=function(t){var n,r=arguments.length;for(n=0;n<r;n++)t=arguments[n],e.call(this,t)}};e("add"),e("remove")}if(t.classList.toggle("c3",!1),t.classList.contains("c3")){var n=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(t,e){return 1 in arguments&&!this.contains(t)==!e?e:n.call(this,t)}}t=null}())},{}],4:[function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};!function(t,n){"undefined"!=typeof e?e.exports=n():"function"==typeof define&&"object"==r(define.amd)?define(n):this[t]=n()}("domready",function(){var t,e=[],n=document,r=n.documentElement.doScroll,o="DOMContentLoaded",i=(r?/^loaded|^c/:/^loaded|^i|^c/).test(n.readyState);return i||n.addEventListener(o,t=function(){for(n.removeEventListener(o,t),i=1;t=e.shift();)t()}),function(t){i?setTimeout(t,0):e.push(t)}})},{}],5:[function(t,e,n){"use strict";function r(){var t=document.createElement("div");return t.setAttribute("data-a-b","c"),Boolean(t.dataset&&"c"===t.dataset.aB)}function o(t){return t.dataset}e.exports=r()?o:function(t){function e(){return this.value}function n(t,e){"undefined"==typeof e?this.removeAttribute(t):this.setAttribute(t,e)}for(var r={},o=t.attributes,i=0,u=o.length;i<u;i++){var c=o[i];if(c){var s=c.name;if(0===s.indexOf("data-")){var a=s.slice(5).replace(/-./g,function(t){return t.charAt(1).toUpperCase()}),f=c.value;Object.defineProperty(r,a,{enumerable:!0,get:e.bind({value:f||""}),set:n.bind(t,s)})}}}return r}},{}],6:[function(t,e,n){"use strict";!function(t){"function"!=typeof t.matches&&(t.matches=t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||function(t){for(var e=this,n=(e.document||e.ownerDocument).querySelectorAll(t),r=0;n[r]&&n[r]!==e;)++r;return Boolean(n[r])}),"function"!=typeof t.closest&&(t.closest=function(t){for(var e=this;e&&1===e.nodeType;){if(e.matches(t))return e;e=e.parentNode}return null})}(window.Element.prototype)},{}],7:[function(t,e,n){(function(t){"use strict";function n(t,e,n){function o(e){var n=b,r=h;return b=h=void 0,S=e,g=t.apply(r,n)}function i(t){return S=t,m=setTimeout(f,e),O?o(t):g}function c(t){var n=t-w,r=t-S,o=e-n;return A?E(o,y-r):o}function a(t){var n=t-w,r=t-S;return void 0===w||n>=e||n<0||A&&r>=y}function f(){var t=j();return a(t)?l(t):void(m=setTimeout(f,c(t)))}function l(t){return m=void 0,L&&b?o(t):(b=h=void 0,g)}function d(){void 0!==m&&clearTimeout(m),S=0,b=w=h=m=void 0}function p(){return void 0===m?g:l(j())}function v(){var t=j(),n=a(t);if(b=arguments,h=this,w=t,n){if(void 0===m)return i(w);if(A)return m=setTimeout(f,e),o(w)}return void 0===m&&(m=setTimeout(f,e)),g}var b,h,y,g,m,w,S=0,O=!1,A=!1,L=!0;if("function"!=typeof t)throw new TypeError(s);return e=u(e)||0,r(n)&&(O=!!n.leading,A="maxWait"in n,y=A?x(u(n.maxWait)||0,e):y,L="trailing"in n?!!n.trailing:L),v.cancel=d,v.flush=p,v}function r(t){var e="undefined"==typeof t?"undefined":c(t);return!!t&&("object"==e||"function"==e)}function o(t){return!!t&&"object"==("undefined"==typeof t?"undefined":c(t))}function i(t){return"symbol"==("undefined"==typeof t?"undefined":c(t))||o(t)&&w.call(t)==f}function u(t){if("number"==typeof t)return t;if(i(t))return a;if(r(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=r(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(l,"");var n=p.test(t);return n||v.test(t)?b(t.slice(2),n?2:8):d.test(t)?a:+t}var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s="Expected a function",a=NaN,f="[object Symbol]",l=/^\s+|\s+$/g,d=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,v=/^0o[0-7]+$/i,b=parseInt,h="object"==("undefined"==typeof t?"undefined":c(t))&&t&&t.Object===Object&&t,y="object"==("undefined"==typeof self?"undefined":c(self))&&self&&self.Object===Object&&self,g=h||y||Function("return this")(),m=Object.prototype,w=m.toString,x=Math.max,E=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],8:[function(t,e,n){"use strict";function r(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function o(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(e).map(function(t){return e[t]});if("0123456789"!==r.join(""))return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(t){o[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},o)).join("")}catch(i){return!1}}var i=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,c=Object.prototype.propertyIsEnumerable;e.exports=o()?Object.assign:function(t,e){for(var n,o,s=r(t),a=1;a<arguments.length;a++){n=Object(arguments[a]);for(var f in n)u.call(n,f)&&(s[f]=n[f]);if(i){o=i(n);for(var l=0;l<o.length;l++)c.call(n,o[l])&&(s[o[l]]=n[o[l]])}}return s}},{}],9:[function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=t("object-assign"),i=t("../delegate"),u=t("../delegateAll"),c=/^(.+):delegate\((.+)\)$/,s=" ",a=function(t,e){var n,a=t.match(c);a&&(t=a[1],n=a[2]);var l;"object"===("undefined"==typeof e?"undefined":r(e))&&(l={capture:f(e,"capture"),passive:f(e,"passive")});var d={selector:n,delegate:"object"===("undefined"==typeof e?"undefined":r(e))?u(e):n?i(n,e):e,options:l};return t.indexOf(s)>-1?t.split(s).map(function(t){return o({type:t},d)}):(d.type=t,[d])},f=function(t,e){var n=t[e];return delete t[e],n};e.exports=function(t,e){var n=Object.keys(t).reduce(function(e,n){var r=a(n,t[n]);return e.concat(r)},[]);return o({add:function(t){n.forEach(function(e){t.addEventListener(e.type,e.delegate,e.options)})},remove:function(t){n.forEach(function(e){t.removeEventListener(e.type,e.delegate,e.options)})}},e)}},{"../delegate":11,"../delegateAll":12,"object-assign":8}],10:[function(t,e,n){"use strict";e.exports=function(t){return function(e){return t.some(function(t){return t.call(this,e)===!1},this)}}},{}],11:[function(t,e,n){"use strict";t("element-closest"),e.exports=function(t,e){return function(n){var r=n.target.closest(t);if(r)return e.call(r,n)}}},{"element-closest":6}],12:[function(t,e,n){"use strict";var r=t("../delegate"),o=t("../compose"),i="*";e.exports=function(t){var e=Object.keys(t);if(1===e.length&&e[0]===i)return t[i];var n=e.reduce(function(e,n){return e.push(r(n,t[n])),e},[]);return o(n)}},{"../compose":10,"../delegate":11}],13:[function(t,e,n){"use strict";e.exports=function(t,e){return function(n){if(t!==n.target&&!t.contains(n.target))return e.call(this,n)}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t,e){var n=function(r){return r.currentTarget.removeEventListener(r.type,n,e),t.call(this,r)};return n}},{}],15:[function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=/(^\s+)|(\s+$)/g,i=/\s+/,u=String.prototype.trim?function(t){return t.trim()}:function(t){return t.replace(o,"")},c=function(t){return this.querySelector('[id="'+t.replace(/"/g,'\\"')+'"]')};e.exports=function(t,e){if("string"!=typeof t)throw new Error("Expected a string but got "+("undefined"==typeof t?"undefined":r(t)));e||(e=window.document);var n=e.getElementById?e.getElementById.bind(e):c.bind(e);return t=u(t).split(i),1===t.length&&""===t[0]?[]:t.map(function(t){var e=n(t);if(!e)throw new Error('no element with id: "'+t+'"');return e})}},{}],16:[function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var o=t("../utils/behavior"),i=t("array-filter"),u=t("array-foreach"),c=t("../utils/toggle"),s=t("../utils/is-in-viewport"),a=t("../events").CLICK,f=t("../config").prefix,l="."+f+"-accordion, ."+f+"-accordion-bordered",d="."+f+"-accordion-button[aria-controls]",p="aria-expanded",v="aria-multiselectable",b=function(t,e){var n=t.closest(l);if(!n)throw new Error(d+" is missing outer "+l);e=c(t,e);var r="true"===n.getAttribute(v);e&&!r&&u(g(n),function(e){e!==t&&c(e,!1)})},h=function(t){return b(t,!0)},y=function(t){return b(t,!1)},g=function(t){return i(t.querySelectorAll(d),function(e){return e.closest(l)===t})},m=o(r({},a,r({},d,function(t){t.preventDefault(),b(this),"true"===this.getAttribute(p)&&(s(this)||this.scrollIntoView())})),{init:function(t){u(t.querySelectorAll(d),function(t){var e="true"===t.getAttribute(p);b(t,e)})},ACCORDION:l,BUTTON:d,show:h,hide:y,toggle:b,getButtons:g}),w=function(t){this.root=t,m.on(this.root)},x=t("object-assign");x(w,m),w.prototype.show=h,w.prototype.hide=y,w.prototype.remove=function(){m.off(this.root)},e.exports=w},{"../config":25,"../events":26,"../utils/behavior":30,"../utils/is-in-viewport":31,"../utils/toggle":35,"array-filter":1,"array-foreach":2,"object-assign":8}],17:[function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var o=t("../utils/behavior"),i=(t("../utils/toggle"),t("../events").CLICK),u=t("../config").prefix,c="."+u+"-banner-header",s=u+"-banner-header-expanded",a=function(t){return t.preventDefault(),this.closest(c).classList.toggle(s),!1};e.exports=o(r({},i,r({},c+" [aria-controls]",a)))},{"../config":25,"../events":26,"../utils/behavior":30,"../utils/toggle":35}],18:[function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var o=(t("./accordion"),t("../utils/behavior")),i=t("lodash.debounce"),u=t("array-foreach"),c=t("../utils/select"),s=t("../events").CLICK,a=t("../config").prefix,f="hidden",l="."+a+"-footer-big",d=l+" nav",p=d+" ."+a+"-footer-primary-link",v=d+" ul",b=600,h=180,y=function(){var t=this.closest(v);t.classList.remove(f);var e=t.closest(d).querySelectorAll("ul");u(e,function(e){e!==t&&e.classList.add(f)})},g=i(function(){var t=window.innerWidth<b;u(c(v),function(e){e.classList.toggle(f,t)})},h);e.exports=o(r({},s,r({},p,y)),{HIDE_MAX_WIDTH:b,DEBOUNCE_RATE:h,init:function(t){g(),window.addEventListener("resize",g)},teardown:function(t){window.removeEventListener("resize",g)}})},{"../config":25,"../events":26,"../utils/behavior":30,"../utils/select":32,"./accordion":16,"array-foreach":2,"lodash.debounce":7}],19:[function(t,e,n){"use strict";e.exports={accordion:t("./accordion"),banner:t("./banner"),footer:t("./footer"),navigation:t("./navigation"),password:t("./password"),search:t("./search"),skipnav:t("./skipnav"),validator:t("./validator")}},{"./accordion":16,"./banner":17,"./footer":18,"./navigation":20,"./password":21,"./search":22,"./skipnav":23,"./validator":24}],20:[function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var o,i=t("../utils/behavior"),u=t("array-foreach"),c=t("../utils/select"),s=t("./accordion"),a=t("../events").CLICK,f=t("../config").prefix,l="."+f+"-nav",d=l+" a",p="."+f+"-menu-btn",v="."+f+"-nav-close",b="."+f+"-overlay",h=v+", ."+f+"-overlay",y=[l,b].join(", "),g="usa-mobile_nav-active",m="is-visible",w=function(){return document.body.classList.contains(g)},x=function(t){var e=document.body;"boolean"!=typeof t&&(t=!w()),e.classList.toggle(g,t),u(c(y),function(e){e.classList.toggle(m,t)});var n=e.querySelector(v),r=e.querySelector(p);return t&&n?n.focus():!t&&document.activeElement===n&&r&&r.focus(),t},E=function(){var t=document.body.querySelector(v);w()&&t&&0===t.getBoundingClientRect().width&&x.call(t,!1)},j=i(r({},a,(o={},r(o,p,x),r(o,h,x),r(o,d,function(){var t=this.closest(s.ACCORDION);t&&s.getButtons(t).forEach(function(t){return s.hide(t)}),w()&&x.call(this,!1)}),o)),{init:function(){E(),window.addEventListener("resize",E,!1)},teardown:function(){window.removeEventListener("resize",E,!1)}}),S=t("object-assign");e.exports=S(function(t){return j.on(t)},j)},{"../config":25,"../events":26,"../utils/behavior":30,"../utils/select":32,"./accordion":16,"array-foreach":2,"object-assign":8}],21:[function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var o=t("../utils/behavior"),i=t("../utils/toggle-form-input"),u=t("../events").CLICK,c=t("../config").prefix,s="."+c+"-show_password, ."+c+"-show_multipassword",a=function(t){t.preventDefault(),i(this)};e.exports=o(r({},u,r({},s,a)))},{"../config":25,"../events":26,"../utils/behavior":30,"../utils/toggle-form-input":34}],22:[function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var o=t("../utils/behavior"),i=t("array-foreach"),u=t("receptor/ignore"),c=t("../utils/select"),s=t("../events").CLICK,a=t("../config").prefix,f=".js-search-button",l=".js-search-form",d="[type=search]",p="header",v=a+"-sr-only",b=void 0,h=function(t){m(this,!0),b=this},y=function(t){m(this,!1),b=void 0},g=function(t){var e=t.closest(p);return e?e.querySelector(l):document.querySelector(l)},m=function(t,e){var n=g(t);if(!n)throw new Error("No "+l+" found for search toggle in "+p+"!");if(t.hidden=e,n.classList.toggle(v,!e),e){var r=n.querySelector(d);r&&r.focus();var o=u(n,function(t){b&&y.call(b),document.body.removeEventListener(s,o)});setTimeout(function(){document.body.addEventListener(s,o)},0)}},w=o(r({},s,r({},f,h)),{init:function(t){i(c(f,t),function(t){m(t,!1)})},teardown:function(t){b=void 0}}),x=t("object-assign");e.exports=x(function(t){return w.on(t)},w)},{"../config":25,"../events":26,"../utils/behavior":30,"../utils/select":32,"array-foreach":2,"object-assign":8,"receptor/ignore":13}],23:[function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var o=t("../utils/behavior"),i=t("receptor/once"),u=t("../events").CLICK,c=t("../config").prefix,s="."+c+'-skipnav[href^="#"]',a=function(t){var e=this.getAttribute("href").slice(1),n=document.getElementById(e);n&&(n.setAttribute("tabindex",0),n.addEventListener("blur",i(function(t){n.setAttribute("tabindex",-1)})))};e.exports=o(r({},u,r({},s,a)))},{"../config":25,"../events":26,"../utils/behavior":30,"receptor/once":14}],24:[function(t,e,n){"use strict";var r=t("../utils/behavior"),o=t("../utils/validate-input"),i=(t("lodash.debounce"),function(t){return o(this)}),u=r({"keyup change":{"input[data-validation-element]":i}}),c=t("object-assign");e.exports=c(function(t){return u.on(t)},u)},{"../utils/behavior":30,"../utils/validate-input":36,"lodash.debounce":7,"object-assign":8}],25:[function(t,e,n){"use strict";e.exports={prefix:"usa"}},{}],26:[function(t,e,n){"use strict";e.exports={CLICK:"click"}},{}],27:[function(t,e,n){"use strict";var r=window.HTMLElement.prototype,o="hidden";o in r||Object.defineProperty(r,o,{get:function(){return this.hasAttribute(o)},set:function(t){t?this.setAttribute(o,""):this.removeAttribute(o)}})},{}],28:[function(t,e,n){"use strict";t("classlist-polyfill"),t("./element-hidden")},{"./element-hidden":27,"classlist-polyfill":3}],29:[function(t,e,n){"use strict";var r=t("domready");t("./polyfills");var o=t("./config"),i=t("./components");o.components=i,r(function(){var t=document.body;for(var e in i){var n=i[e];n.on(t)}}),e.exports=o},{"./components":19,"./config":25,"./polyfills":28,domready:4}],30:[function(t,e,n){"use strict";var r=t("object-assign"),o=t("array-foreach"),i=t("receptor/behavior"),u=function(){var t=[].slice.call(arguments);return function(e){var n=this;e||(e=document.body),o(t,function(t){"function"==typeof n[t]&&n[t].call(n,e)})}};e.exports=function(t,e){return i(t,r({on:u("init","add"),off:u("teardown","remove")},e))}},{"array-foreach":2,"object-assign":8,"receptor/behavior":9}],31:[function(t,e,n){"use strict";function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:document.documentElement,r=t.getBoundingClientRect();return r.top>=0&&r.left>=0&&r.bottom<=(e.innerHeight||n.clientHeight)&&r.right<=(e.innerWidth||n.clientWidth)}e.exports=r},{}],32:[function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=function(t){return t&&"object"===("undefined"==typeof t?"undefined":r(t))&&1===t.nodeType};e.exports=function(t,e){if("string"!=typeof t)return[];e&&o(e)||(e=window.document);var n=e.querySelectorAll(t);return Array.prototype.slice.call(n)}},{}],33:[function(t,e,n){"use strict";e.exports=function(t,e){t.setAttribute("autocapitalize","off"),t.setAttribute("autocorrect","off"),t.setAttribute("type",e?"password":"text")}},{}],34:[function(t,e,n){"use strict";var r=t("array-foreach"),o=t("resolve-id-refs"),i=(t("./select"),t("./toggle-field-mask")),u="aria-controls",c="aria-pressed",s="data-show-text",a="data-hide-text",f=function(t){return t.replace(/\bShow\b/i,function(t){return("S"===t[0]?"H":"h")+"ide"})};e.exports=function(t){var e=t.hasAttribute(c)&&"true"!==t.getAttribute(c),n=o(t.getAttribute(u));r(n,function(t){return i(t,e)}),t.hasAttribute(s)||t.setAttribute(s,t.textContent);var l=t.getAttribute(s),d=t.getAttribute(a)||f(l);return t.textContent=e?l:d,t.setAttribute(c,e),e}},{"./select":32,"./toggle-field-mask":33,"array-foreach":2,"resolve-id-refs":15}],35:[function(t,e,n){"use strict";var r="aria-expanded",o="aria-controls",i="aria-hidden";e.exports=function(t,e){"boolean"!=typeof e&&(e="false"===t.getAttribute(r)),t.setAttribute(r,e);var n=t.getAttribute(o),u=document.getElementById(n);if(!u)throw new Error('No toggle target found with id: "'+n+'"');return u.setAttribute(i,!e),e}},{}],36:[function(t,e,n){"use strict";var r=t("elem-dataset"),o=t("../config").prefix,i="aria-checked",u=o+"-checklist-checked";e.exports=function(t){var e=r(t),n=e.validationElement,o="#"===n.charAt(0)?document.querySelector(n):document.getElementById(n);if(!o)throw new Error('No validation element found with id: "'+n+'"');for(var c in e)if(c.startsWith("validate")){var s=c.substr("validate".length).toLowerCase(),a=new RegExp(e[c]),f='[data-validator="'+s+'"]',l=o.querySelector(f);if(!l)throw new Error('No validator checkbox found for: "'+s+'"');var d=a.test(t.value);l.classList.toggle(u,d),l.setAttribute(i,d)}}},{"../config":25,"elem-dataset":5}]},{},[29]);
1
+ !function o(i,c,s){function u(e,t){if(!c[e]){if(!i[e]){var n="function"==typeof require&&require;if(!t&&n)return n(e,!0);if(l)return l(e,!0);var a=new Error("Cannot find module '"+e+"'");throw a.code="MODULE_NOT_FOUND",a}var r=c[e]={exports:{}};i[e][0].call(r.exports,function(t){return u(i[e][1][t]||t)},r,r.exports,o,i,c,s)}return c[e].exports}for(var l="function"==typeof require&&require,t=0;t<s.length;t++)u(s[t]);return u}({1:[function(t,e,n){"use strict";var a,r,o;"document"in window.self&&("classList"in document.createElement("_")&&(!document.createElementNS||"classList"in document.createElementNS("http://www.w3.org/2000/svg","g"))||function(t){if("Element"in t){var e="classList",n="prototype",a=t.Element[n],r=Object,o=String[n].trim||function(){return this.replace(/^\s+|\s+$/g,"")},i=Array[n].indexOf||function(t){for(var e=0,n=this.length;e<n;e++)if(e in this&&this[e]===t)return e;return-1},c=function(t,e){this.name=t,this.code=DOMException[t],this.message=e},s=function(t,e){if(""===e)throw new c("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(e))throw new c("INVALID_CHARACTER_ERR","String contains an invalid character");return i.call(t,e)},u=function(t){for(var e=o.call(t.getAttribute("class")||""),n=e?e.split(/\s+/):[],a=0,r=n.length;a<r;a++)this.push(n[a]);this._updateClassName=function(){t.setAttribute("class",this.toString())}},l=u[n]=[],d=function(){return new u(this)};if(c[n]=Error[n],l.item=function(t){return this[t]||null},l.contains=function(t){return-1!==s(this,t+="")},l.add=function(){for(var t,e=arguments,n=0,a=e.length,r=!1;-1===s(this,t=e[n]+"")&&(this.push(t),r=!0),++n<a;);r&&this._updateClassName()},l.remove=function(){var t,e,n=arguments,a=0,r=n.length,o=!1;do{for(e=s(this,t=n[a]+"");-1!==e;)this.splice(e,1),o=!0,e=s(this,t)}while(++a<r);o&&this._updateClassName()},l.toggle=function(t,e){t+="";var n=this.contains(t),a=n?!0!==e&&"remove":!1!==e&&"add";return a&&this[a](t),!0===e||!1===e?e:!n},l.toString=function(){return this.join(" ")},r.defineProperty){var f={get:d,enumerable:!0,configurable:!0};try{r.defineProperty(a,e,f)}catch(t){void 0!==t.number&&-2146823252!==t.number||(f.enumerable=!1,r.defineProperty(a,e,f))}}else r[n].__defineGetter__&&a.__defineGetter__(e,d)}}(window.self),(o=document.createElement("_")).classList.add("c1","c2"),o.classList.contains("c2")||((a=function(t){var a=DOMTokenList.prototype[t];DOMTokenList.prototype[t]=function(t){for(var e=arguments.length,n=0;n<e;n++)t=arguments[n],a.call(this,t)}})("add"),a("remove")),o.classList.toggle("c3",!1),o.classList.contains("c3")&&(r=DOMTokenList.prototype.toggle,DOMTokenList.prototype.toggle=function(t,e){return 1 in arguments&&!this.contains(t)==!e?e:r.call(this,t)}),o=null)},{}],2:[function(t,e,n){"use strict";function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(t){void 0!==e?e.exports=t():"function"==typeof define&&"object"==a(define.amd)?define(t):this.domready=t()}(function(){var t,e=[],n=document,a=n.documentElement.doScroll,r="DOMContentLoaded",o=(a?/^loaded|^c/:/^loaded|^i|^c/).test(n.readyState);return o||n.addEventListener(r,t=function(){for(n.removeEventListener(r,t),o=1;t=e.shift();)t()}),function(t){o?setTimeout(t,0):e.push(t)}})},{}],3:[function(t,e,n){"use strict";var a;e.exports=((a=document.createElement("div")).setAttribute("data-a-b","c"),Boolean(a.dataset&&"c"===a.dataset.aB)?function(t){return t.dataset}:function(t){var e={},n=t.attributes;function a(){return this.value}function r(t,e){void 0===e?this.removeAttribute(t):this.setAttribute(t,e)}for(var o=0,i=n.length;o<i;o++){var c,s,u,l=n[o];!l||0===(c=l.name).indexOf("data-")&&(s=c.slice(5).replace(/-./g,function(t){return t.charAt(1).toUpperCase()}),u=l.value,Object.defineProperty(e,s,{enumerable:!0,get:a.bind({value:u||""}),set:r.bind(t,c)}))}return e})},{}],4:[function(t,e,n){"use strict";var a;"function"!=typeof(a=window.Element.prototype).matches&&(a.matches=a.msMatchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||function(t){for(var e=(this.document||this.ownerDocument).querySelectorAll(t),n=0;e[n]&&e[n]!==this;)++n;return Boolean(e[n])}),"function"!=typeof a.closest&&(a.closest=function(t){for(var e=this;e&&1===e.nodeType;){if(e.matches(t))return e;e=e.parentNode}return null})},{}],5:[function(t,a,r){"use strict";!function(){for(var e={polyfill:function(){if(!("KeyboardEvent"in window)||"key"in KeyboardEvent.prototype)return!1;var t={get:function(){var t=e.keys[this.which||this.keyCode];return Array.isArray(t)&&(t=t[+this.shiftKey]),t}};return Object.defineProperty(KeyboardEvent.prototype,"key",t),t},keys:{3:"Cancel",6:"Help",8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",28:"Convert",29:"NonConvert",30:"Accept",31:"ModeChange",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",41:"Select",42:"Print",43:"Execute",44:"PrintScreen",45:"Insert",46:"Delete",48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],91:"OS",93:"ContextMenu",144:"NumLock",145:"ScrollLock",181:"VolumeMute",182:"VolumeDown",183:"VolumeUp",186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"'],224:"Meta",225:"AltGraph",246:"Attn",247:"CrSel",248:"ExSel",249:"EraseEof",250:"Play",251:"ZoomOut"}},t=1;t<25;t++)e.keys[111+t]="F"+t;var n="";for(t=65;t<91;t++)n=String.fromCharCode(t),e.keys[t]=[n.toLowerCase(),n.toUpperCase()];"function"==typeof define&&define.amd?define("keyboardevent-key-polyfill",e):void 0!==r&&void 0!==a?a.exports=e:window&&(window.keyboardeventKeyPolyfill=e)}()},{}],6:[function(t,v,e){(function(t){"use strict";function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function g(){return d.Date.now()}var a=NaN,r="[object Symbol]",o=/^\s+|\s+$/g,i=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,s=/^0o[0-7]+$/i,u=parseInt,e="object"==(void 0===t?"undefined":n(t))&&t&&t.Object===Object&&t,l="object"==("undefined"==typeof self?"undefined":n(self))&&self&&self.Object===Object&&self,d=e||l||Function("return this")(),f=Object.prototype.toString,y=Math.max,E=Math.min;function w(t){var e=n(t);return t&&("object"==e||"function"==e)}function p(t){return"symbol"==n(t)||!!(e=t)&&"object"==n(e)&&f.call(t)==r;var e}function x(t){if("number"==typeof t)return t;if(p(t))return a;var e;if(w(t)&&(t=w(e="function"==typeof t.valueOf?t.valueOf():t)?e+"":e),"string"!=typeof t)return 0===t?t:+t;t=t.replace(o,"");var n=c.test(t);return n||s.test(t)?u(t.slice(2),n?2:8):i.test(t)?a:+t}v.exports=function(a,r,t){var o,i,c,s,u,l,d=0,f=!1,p=!1,e=!0;if("function"!=typeof a)throw new TypeError("Expected a function");function v(t){var e=o,n=i;return o=i=void 0,d=t,s=a.apply(n,e)}function b(t){var e=t-l;return void 0===l||r<=e||e<0||p&&c<=t-d}function h(){var t,e,n=g();if(b(n))return m(n);u=setTimeout(h,(e=r-((t=n)-l),p?E(e,c-(t-d)):e))}function m(t){return u=void 0,e&&o?v(t):(o=i=void 0,s)}function n(){var t,e=g(),n=b(e);if(o=arguments,i=this,l=e,n){if(void 0===u)return d=t=l,u=setTimeout(h,r),f?v(t):s;if(p)return u=setTimeout(h,r),v(l)}return void 0===u&&(u=setTimeout(h,r)),s}return r=x(r)||0,w(t)&&(f=!!t.leading,p="maxWait"in t,c=p?y(x(t.maxWait)||0,r):c,e="trailing"in t?!!t.trailing:e),n.cancel=function(){void 0!==u&&clearTimeout(u),o=l=i=u=void(d=0)},n.flush=function(){return void 0===u?s:m(g())},n}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],7:[function(t,e,n){"use strict";var s=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map(function(t){return e[t]}).join(""))return;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(t){a[t]=t}),"abcdefghijklmnopqrst"!==Object.keys(Object.assign({},a)).join("")?void 0:1}catch(t){return}}()?Object.assign:function(t,e){for(var n,a,r=function(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}(t),o=1;o<arguments.length;o++){for(var i in n=Object(arguments[o]))u.call(n,i)&&(r[i]=n[i]);if(s){a=s(n);for(var c=0;c<a.length;c++)l.call(n,a[c])&&(r[a[c]]=n[a[c]])}}return r}},{}],8:[function(t,e,n){"use strict";function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var c=t("object-assign"),s=t("../delegate"),u=t("../delegateAll"),l=/^(.+):delegate\((.+)\)$/,d=function(t,e){var n=t[e];return delete t[e],n};e.exports=function(a,t){var n=Object.keys(a).reduce(function(t,e){var n=function(t,e){var n,a,r=t.match(l);r&&(t=r[1],n=r[2]),"object"===i(e)&&(a={capture:d(e,"capture"),passive:d(e,"passive")});var o={selector:n,delegate:"object"===i(e)?u(e):n?s(n,e):e,options:a};return-1<t.indexOf(" ")?t.split(" ").map(function(t){return c({type:t},o)}):(o.type=t,[o])}(e,a[e]);return t.concat(n)},[]);return c({add:function(e){n.forEach(function(t){e.addEventListener(t.type,t.delegate,t.options)})},remove:function(e){n.forEach(function(t){e.removeEventListener(t.type,t.delegate,t.options)})}},t)}},{"../delegate":10,"../delegateAll":11,"object-assign":7}],9:[function(t,e,n){"use strict";e.exports=function(t){return function(e){return t.some(function(t){return!1===t.call(this,e)},this)}}},{}],10:[function(t,e,n){"use strict";t("element-closest"),e.exports=function(n,a){return function(t){var e=t.target.closest(n);if(e)return a.call(e,t)}}},{"element-closest":4}],11:[function(t,e,n){"use strict";var a=t("../delegate"),r=t("../compose");e.exports=function(n){var t=Object.keys(n);if(1===t.length&&"*"===t[0])return n["*"];var e=t.reduce(function(t,e){return t.push(a(e,n[e])),t},[]);return r(e)}},{"../compose":9,"../delegate":10}],12:[function(t,e,n){"use strict";e.exports=function(e,n){return function(t){if(e!==t.target&&!e.contains(t.target))return n.call(this,t)}}},{}],13:[function(t,e,n){"use strict";e.exports={behavior:t("./behavior"),delegate:t("./delegate"),delegateAll:t("./delegateAll"),ignore:t("./ignore"),keymap:t("./keymap")}},{"./behavior":8,"./delegate":10,"./delegateAll":11,"./ignore":12,"./keymap":14}],14:[function(t,e,n){"use strict";t("keyboardevent-key-polyfill");var o={Alt:"altKey",Control:"ctrlKey",Ctrl:"ctrlKey",Shift:"shiftKey"};e.exports=function(r){var t=Object.keys(r).some(function(t){return-1<t.indexOf("+")});return function(n){var a=function(t,e){var n=t.key;if(e)for(var a in o)!0===t[o[a]]&&(n=[a,n].join("+"));return n}(n,t);return[a,a.toLowerCase()].reduce(function(t,e){return e in r&&(t=r[a].call(this,n)),t},void 0)}},e.exports.MODIFIERS=o},{"keyboardevent-key-polyfill":5}],15:[function(t,e,n){"use strict";e.exports=function(e,n){var a=function(t){return t.currentTarget.removeEventListener(t.type,a,n),e.call(this,t)};return a}},{}],16:[function(t,e,n){"use strict";function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=/(^\s+)|(\s+$)/g,o=/\s+/,i=String.prototype.trim?function(t){return t.trim()}:function(t){return t.replace(r,"")};e.exports=function(t,e){if("string"!=typeof t)throw new Error("Expected a string but got "+a(t));var n=(e=e||window.document).getElementById?e.getElementById.bind(e):function(t){return this.querySelector('[id="'+t.replace(/"/g,'\\"')+'"]')}.bind(e);return 1===(t=i(t).split(o)).length&&""===t[0]?[]:t.map(function(t){var e=n(t);if(!e)throw new Error('no element with id: "'+t+'"');return e})}},{}],17:[function(t,e,n){"use strict";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(e){return i(p,e).filter(function(t){return t.closest(f)===e})}function r(e,t){var n,a=e.closest(f);if(!a)throw new Error("".concat(p," is missing outer ").concat(f));n=s(e,t);var r="true"===a.getAttribute("aria-multiselectable");n&&!r&&o(a).forEach(function(t){t!==e&&s(t,!1)})}var i=t("../utils/select"),c=t("../utils/behavior"),s=t("../utils/toggle"),u=t("../utils/is-in-viewport"),l=t("../events").CLICK,d=t("../config").prefix,f=".".concat(d,"-accordion, .").concat(d,"-accordion--bordered"),p=".".concat(d,"-accordion__button[aria-controls]"),v="aria-expanded",b=c(a({},l,a({},p,function(t){t.preventDefault(),r(this),"true"===this.getAttribute(v)&&(u(this)||this.scrollIntoView())})),{init:function(t){i(p,t).forEach(function(t){var e="true"===t.getAttribute(v);r(t,e)})},ACCORDION:f,BUTTON:p,show:function(t){return r(t,!0)},hide:function(t){return r(t,!1)},toggle:r,getButtons:o});e.exports=b},{"../config":33,"../events":34,"../utils/behavior":41,"../utils/is-in-viewport":43,"../utils/select":45,"../utils/toggle":48}],18:[function(t,e,n){"use strict";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var r=t("../utils/behavior"),o=t("../events").CLICK,i=t("../config").prefix,c=".".concat(i,"-banner__header"),s="".concat(i,"-banner__header--expanded");e.exports=r(a({},o,a({},"".concat(c," [aria-controls]"),function(t){t.preventDefault(),this.closest(c).classList.toggle(s)})))},{"../config":33,"../events":34,"../utils/behavior":41}],19:[function(t,e,n){"use strict";function d(t){var e=t.closest(l);if(!e)throw new Error("".concat(f," is missing outer ").concat(l));var n=e.querySelector(p);if(!n)throw new Error("".concat(l," is missing inner ").concat(p));return{characterCountEl:e,messageEl:n}}function r(t){var e,n,a,r,o,i,c=d(t),s=c.characterCountEl,u=c.messageEl,l=parseInt(s.getAttribute("data-maxlength"),10);l&&(i="",n=(e=t.value.length)&&l<e,i=0===e?"".concat(l," characters allowed"):(a=Math.abs(l-e),r="character".concat(1===a?"":"s"),o=n?"over limit":"left","".concat(a," ").concat(r," ").concat(o)),u.classList.toggle(b,n),u.innerHTML=i,n&&!t.validationMessage&&t.setCustomValidity(v),n||t.validationMessage!==v||t.setCustomValidity(""))}var a,o,i,c=t("../utils/select"),s=t("../utils/behavior"),u=t("../config").prefix,l=".".concat(u,"-character-count"),f=".".concat(u,"-character-count__field"),p=".".concat(u,"-character-count__message"),v="The content is too long.",b="".concat(u,"-character-count__message--invalid"),h=s({input:(i=function(){r(this)},(o=f)in(a={})?Object.defineProperty(a,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):a[o]=i,a)},{init:function(t){c(f,t).forEach(function(t){var e,n,a;n=d(e=t).characterCountEl,(a=e.getAttribute("maxlength"))&&(e.removeAttribute("maxlength"),n.setAttribute("data-maxlength",a)),r(t)})},MESSAGE_INVALID_CLASS:b,VALIDATION_MESSAGE:v});e.exports=h},{"../config":33,"../utils/behavior":41,"../utils/select":45}],20:[function(t,e,n){"use strict";var a,r,o;function i(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function v(t,e){var n=1<arguments.length&&void 0!==e?e:"",a=t;a.value=n;var r=new CustomEvent("change",{bubbles:!0,cancelable:!0,detail:{value:n}});a.dispatchEvent(r)}function S(t){var e=t.closest(F);if(!e)throw new Error("Element is missing outer ".concat(F));var n=e.querySelector(H),a=e.querySelector(R),r=e.querySelector(K),o=e.querySelector(z),i=e.querySelector(W),c=e.querySelector($),s=e.querySelector(U),u=e.querySelector(Y),l=e.classList.contains(A);return{comboBoxEl:e,selectEl:n,inputEl:a,listEl:r,statusEl:o,focusedOptionEl:i,selectedOptionEl:c,toggleListBtnEl:s,clearInputBtnEl:u,isPristine:l,disableFiltering:"true"===e.dataset.disableFiltering}}function b(t){var e=S(t),n=e.inputEl,a=e.toggleListBtnEl,r=e.clearInputBtnEl;r.hidden=!0,r.disabled=!0,a.disabled=!0,n.disabled=!0}function c(t){var e=t.closest(F);if(!e.dataset.enhanced){var n=e.querySelector("select");if(!n)throw new Error("".concat(F," is missing inner select"));var a,r,o=n.id,i="".concat(o,"--list"),c="".concat(o,"--assistiveHint"),s=[],u=e.dataset.defaultValue,l=e.dataset.placeholder;if(l&&s.push('placeholder="'.concat(l,'"')),u)for(var d=0,f=n.options.length;d<f;d+=1){var p=n.options[d];if(p.value===u){a=p;break}}n.setAttribute("aria-hidden","true"),n.setAttribute("tabindex","-1"),n.classList.add("usa-sr-only",_),n.id="",n.value="",["required","aria-label","aria-labelledby"].forEach(function(t){var e;n.hasAttribute(t)&&(e=n.getAttribute(t),s.push("".concat(t,'="').concat(e,'"')),n.removeAttribute(t))}),e.insertAdjacentHTML("beforeend",['<input\n aria-owns="'.concat(i,'"\n aria-autocomplete="list"\n aria-describedby="').concat(c,'"\n aria-expanded="false"\n autocapitalize="off"\n autocomplete="off"\n id="').concat(o,'"\n class="').concat(C,'"\n type="text"\n role="combobox"\n ').concat(s.join(" "),"\n >"),'<span class="'.concat(T,'" tabindex="-1">\n <button type="button" class="').concat(k,'" aria-label="Clear the select contents">&nbsp;</button>\n </span>'),'<span class="'.concat(M,'">&nbsp;</span>'),'<span class="'.concat(j,'" tabindex="-1">\n <button type="button" tabindex="-1" class="').concat(O,'" aria-label="Toggle the dropdown list">&nbsp;</button>\n </span>'),'<ul\n tabindex="-1"\n id="'.concat(i,'"\n class="').concat(I,'"\n role="listbox"\n hidden>\n </ul>'),'<div class="'.concat(P,' usa-sr-only" role="status"></div>'),'<span id="'.concat(c,'" 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>')].join("")),a&&(r=S(e).inputEl,v(n,a.value),v(r,a.text),e.classList.add(A)),n.disabled&&(b(e),n.disabled=!1),e.dataset.enhanced="true"}}function D(t,e,n){var a,r=2<arguments.length&&void 0!==n?n:{},o=r.skipFocus,i=r.preventScroll,c=S(t),s=c.inputEl,u=c.listEl,l=c.focusedOptionEl;l&&(l.classList.remove(N),l.setAttribute("tabIndex","-1")),e?(s.setAttribute("aria-activedescendant",e.id),e.setAttribute("tabIndex","0"),e.classList.add(N),i||(a=e.offsetTop+e.offsetHeight,u.scrollTop+u.offsetHeight<a&&(u.scrollTop=a-u.offsetHeight),e.offsetTop<u.scrollTop&&(u.scrollTop=e.offsetTop)),o||e.focus({preventScroll:i})):(s.setAttribute("aria-activedescendant",""),s.focus())}function L(t,e,n){function i(t){return t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}var c=1<arguments.length&&void 0!==e?e:"",s=2<arguments.length&&void 0!==n?n:{},a="^(?:"+(a=t.replace(/{{(.*?)}}/g,function(t,e){var n=e.trim(),a=s[n];if("query"!==n&&a){var r=new RegExp(a,"i"),o=c.match(r);return o?i(o[1]):""}return i(c)}))+")$";return new RegExp(a,"i")}function s(t){for(var i,e,n=S(t),a=n.comboBoxEl,r=n.selectEl,o=n.inputEl,c=n.listEl,s=n.statusEl,u=n.isPristine,l=n.disableFiltering,d="".concat(c.id,"--option-"),f=(o.value||"").toLowerCase(),p=a.dataset.filter||".*{{query}}.*",v=L(p,f,a.dataset),b=[],h=0,m=r.options.length;h<m;h+=1){var g=r.options[h],y="".concat(d).concat(b.length);g.value&&(l||u||!f||v.test(g.text))&&(r.value&&g.value===r.value&&(i=y),l&&!e&&v.test(g.text)&&(e=y),b.push(g))}var E,w=b.length,x=b.map(function(t,e){var n="".concat(d).concat(e),a=[q],r="-1",o="false";return n===i&&(a.push(B,N),r="0",o="true"),i||0!==e||(a.push(N),r="0"),'<li\n aria-selected="false"\n aria-setsize="'.concat(b.length,'"\n aria-posinset="').concat(e+1,'"\n aria-selected="').concat(o,'"\n id="').concat(n,'"\n class="').concat(a.join(" "),'"\n tabindex="').concat(r,'"\n role="option"\n data-value="').concat(t.value,'"\n >').concat(t.text,"</li>")}).join(""),A='<li class="'.concat(q,'--no-results">No results found</li>');c.hidden=!1,c.innerHTML=w?x:A,o.setAttribute("aria-expanded","true"),s.innerHTML=w?"".concat(w," result").concat(1<w?"s":""," available."):"No results.",u&&i?E=c.querySelector("#"+i):l&&e&&(E=c.querySelector("#"+e)),E&&D(c,E,{skipFocus:!0})}function u(t){var e=S(t),n=e.inputEl,a=e.listEl,r=e.statusEl,o=e.focusedOptionEl;r.innerHTML="",n.setAttribute("aria-expanded","false"),n.setAttribute("aria-activedescendant",""),o&&o.classList.remove(N),a.scrollTop=0,a.hidden=!0}function l(t){var e=S(t),n=e.comboBoxEl,a=e.selectEl,r=e.inputEl;v(a,t.dataset.value),v(r,t.textContent),n.classList.add(A),u(n),r.focus()}function d(t){var e=S(t),n=e.comboBoxEl,a=e.selectEl,r=e.inputEl,o=a.value,i=(r.value||"").toLowerCase();if(o)for(var c=0,s=a.options.length;c<s;c+=1){var u=a.options[c];if(u.value===o)return i!==u.text&&v(r,u.text),n.classList.add(A),0}i&&v(r)}function f(t){var e=S(t.target),n=e.comboBoxEl,a=e.listEl;a.hidden&&s(n);var r=a.querySelector(W)||a.querySelector(V);r&&D(n,r),t.preventDefault()}function p(t){var e=t.target,n=e.nextSibling;n&&D(e,n),t.preventDefault()}function h(t){var e=S(t.target),n=e.comboBoxEl,a=e.listEl,r=e.focusedOptionEl,o=r&&r.previousSibling,i=!a.hidden;D(n,o),i&&t.preventDefault(),o||u(n)}var m=t("receptor/keymap"),g=t("../utils/select"),y=t("../utils/behavior"),E=t("../config").prefix,w=t("../events").CLICK,x="".concat(E,"-combo-box"),A="".concat(x,"--pristine"),_="".concat(x,"__select"),C="".concat(x,"__input"),k="".concat(x,"__clear-input"),T="".concat(k,"__wrapper"),M="".concat(x,"__input-button-separator"),O="".concat(x,"__toggle-list"),j="".concat(O,"__wrapper"),I="".concat(x,"__list"),q="".concat(x,"__list-option"),N="".concat(q,"--focused"),B="".concat(q,"--selected"),P="".concat(x,"__status"),F=".".concat(x),H=".".concat(_),R=".".concat(C),Y=".".concat(k),U=".".concat(O),K=".".concat(I),V=".".concat(q),W=".".concat(N),$=".".concat(B),z=".".concat(P),Q=y((i(o={},w,(i(a={},R,function(){var t,e;this.disabled||(t=S(this),e=t.comboBoxEl,t.listEl.hidden&&s(e))}),i(a,U,function(){var t,e,n,a;this.disabled||(t=S(this),e=t.comboBoxEl,n=t.listEl,a=t.inputEl,(n.hidden?s:u)(e),a.focus())}),i(a,V,function(){this.disabled||l(this)}),i(a,Y,function(){var t,e,n,a,r,o;this.disabled||(t=S(this),e=t.comboBoxEl,n=t.listEl,a=t.selectEl,r=t.inputEl,o=!n.hidden,a.value&&v(a),r.value&&v(r),e.classList.remove(A),o&&s(e),r.focus())}),a)),i(o,"focusout",i({},F,function(t){this.contains(t.relatedTarget)||(d(this),u(this))})),i(o,"keydown",(i(r={},F,m({Escape:function(t){var e=S(t.target),n=e.comboBoxEl,a=e.inputEl;u(n),d(n),a.focus()}})),i(r,R,m({Enter:function(t){var e=S(t.target),n=e.comboBoxEl,a=!e.listEl.hidden;!function(t){var e=S(t),n=e.comboBoxEl,a=e.selectEl,r=e.inputEl;e.statusEl.textContent="";var o=(r.value||"").toLowerCase();if(o)for(var i=0,c=a.options.length;i<c;i+=1){var s=a.options[i];if(s.text.toLowerCase()===o)return v(a,s.value),v(r,s.text),n.classList.add(A)}d(n)}(n),a&&u(n),t.preventDefault()},ArrowDown:f,Down:f})),i(r,V,m({ArrowUp:h,Up:h,ArrowDown:p,Down:p,Enter:function(t){l(t.target),t.preventDefault()},Tab:function(t){l(t.target),t.preventDefault()},"Shift+Tab":function(){}})),r)),i(o,"input",i({},R,function(){this.closest(F).classList.remove(A),s(this)})),i(o,"mousemove",i({},V,function(){var t;(t=this).classList.contains(N)||D(t,t,{preventScroll:!0})})),o),{init:function(t){g(F,t).forEach(function(t){c(t)})},getComboBoxContext:S,enhanceComboBox:c,generateDynamicRegExp:L,disable:b,enable:function(t){var e=S(t),n=e.inputEl,a=e.toggleListBtnEl,r=e.clearInputBtnEl;r.hidden=!1,r.disabled=!1,a.disabled=!1,n.disabled=!1},displayList:s,hideList:u,COMBO_BOX_CLASS:x});e.exports=Q},{"../config":33,"../events":34,"../utils/behavior":41,"../utils/select":45,"receptor/keymap":14}],21:[function(t,e,n){"use strict";var a,r,o,i;function c(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function h(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var n=[],a=!0,r=!1,o=void 0;try{for(var i,c=t[Symbol.iterator]();!(a=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);a=!0);}catch(t){r=!0,o=t}finally{try{a||null==c.return||c.return()}finally{if(r)throw o}}return n}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return s(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return s(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,a=new Array(e);n<e;n++)a[n]=t[n];return a}function u(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.map(function(t){return t+":not([disabled])"}).join(", ")}function l(t,e){return e!==t.getMonth()&&t.setDate(0),t}function m(t,e,n){var a=new Date(0);return a.setFullYear(t,e,n),a}function N(){var t=new Date,e=t.getDate(),n=t.getMonth(),a=t.getFullYear();return m(a,n,e)}function B(t){var e=new Date(0);return e.setFullYear(t.getFullYear(),t.getMonth(),1),e}function b(t){var e=new Date(0);return e.setFullYear(t.getFullYear(),t.getMonth()+1,0),e}function P(t,e){var n=new Date(t.getTime());return n.setDate(n.getDate()+e),n}function F(t,e){return P(t,-e)}function d(t,e){return P(t,7*e)}function H(t){var e=t.getDay();return F(t,e)}function R(t,e){var n=new Date(t.getTime()),a=(n.getMonth()+12+e)%12;return n.setMonth(n.getMonth()+e),l(n,a),n}function Y(t,e){return R(t,-e)}function f(t,e){return R(t,12*e)}function p(t,e){return f(t,-e)}function g(t,e){var n=new Date(t.getTime());return n.setMonth(e),l(n,e),n}function w(t,e){var n=new Date(t.getTime()),a=n.getMonth();return n.setFullYear(e),l(n,a),n}function v(t,e){return t&&e&&t.getFullYear()===e.getFullYear()}function U(t,e){return v(t,e)&&t.getMonth()===e.getMonth()}function K(t,e){return U(t,e)&&t.getDate()===e.getDate()}function y(t,e,n){var a=t;return t<e?a=e:n&&n<t&&(a=n),new Date(a.getTime())}function V(t,e,n){return e<=t&&(!n||t<=n)}function x(t,e,n){return b(g(t,11))<e||n&&B(g(t,0))>n}function E(t,e,n){var a,r,o,i,c,s,u,l,d,f,p,v,b=2<arguments.length&&void 0!==n&&n;return t&&((1<arguments.length&&void 0!==e?e:xe)===we?(i=(o=h(t.split("/"),3))[0],c=o[1],s=o[2]):(s=(u=h(t.split("-"),3))[0],i=u[1],c=u[2]),s&&(f=parseInt(s,10),Number.isNaN(f)||(d=f,b&&(d=Math.max(0,d),s.length<3&&(d=(l=N().getFullYear())-l%Math.pow(10,s.length)+f)))),i&&(f=parseInt(i,10),Number.isNaN(f)||(r=f,b&&(r=Math.max(1,r),r=Math.min(12,r)))),r&&c&&null!=d&&(f=parseInt(c,10),Number.isNaN(f)||(v=f,b&&(p=m(d,r,0).getDate(),v=Math.max(1,v),v=Math.min(p,v)))),r&&v&&null!=d&&(a=m(d,r-1,v))),a}function W(t,e){function n(t,e){return"0000".concat(t).slice(-e)}var a=1<arguments.length&&void 0!==e?e:xe,r=t.getMonth()+1,o=t.getDate(),i=t.getFullYear();return a===we?[n(r,2),n(o,2),n(i,4)].join("/"):[n(i,4),n(r,2),n(o,2)].join("-")}function $(t,e){for(var n=[],a=[],r=0;r<t.length;){for(a=[];r<t.length&&a.length<e;)a.push("<td>".concat(t[r],"</td>")),r+=1;n.push("<tr>".concat(a.join(""),"</tr>"))}return n.join("")}function A(t,e){var n=1<arguments.length&&void 0!==e?e:"",a=t;a.value=n;var r=new CustomEvent("change",{bubbles:!0,cancelable:!0,detail:{value:n}});a.dispatchEvent(r)}function z(t){var e=t.closest(zt);if(!e)throw new Error("Element is missing outer ".concat(zt));var n=e.querySelector(Gt),a=e.querySelector(Xt),r=e.querySelector(Jt),o=e.querySelector(Qt),i=e.querySelector(Zt),c=e.querySelector(le),s=E(a.value,we,!0),u=E(n.value),l=E(r.dataset.value),d=E(e.dataset.minDate),f=E(e.dataset.maxDate),p=E(e.dataset.rangeDate),v=E(e.dataset.defaultDate);if(d&&f&&f<d)throw new Error("Minimum date cannot be after maximum date");return{calendarDate:l,minDate:d,toggleBtnEl:o,selectedDate:u,maxDate:f,firstYearChunkEl:c,datePickerEl:e,inputDate:s,internalInputEl:n,externalInputEl:a,calendarEl:r,rangeDate:p,defaultDate:v,statusEl:i}}function S(t){var e=z(t),n=e.externalInputEl;e.toggleBtnEl.disabled=!0,n.disabled=!0}function D(t){var e,n,a,r,o,i,c=z(t),s=c.externalInputEl,u=c.minDate,l=c.maxDate,d=s.value,f=!1;return d&&(f=!0,a=(n=h((e=d.split("/")).map(function(t){var e,n=parseInt(t,10);return Number.isNaN(n)||(e=n),e}),3))[0],r=n[1],o=n[2],a&&r&&null!=o&&((i=m(o,a-1,r)).getMonth()===a-1&&i.getDate()===r&&i.getFullYear()===o&&4===e[2].length&&V(i,u,l)&&(f=!1))),f}function L(t){var e=z(t).externalInputEl,n=D(e);n&&!e.validationMessage&&e.setCustomValidity(ge),n||e.validationMessage!==ge||e.setCustomValidity("")}function _(t,e){var n,a,r,o,i,c=E(e);c&&(n=W(c,we),r=(a=z(t)).datePickerEl,o=a.internalInputEl,i=a.externalInputEl,A(o,e),A(i,n),L(r))}function C(t,e){for(var n,a,r,o,i=z(t),c=i.datePickerEl,s=i.calendarEl,u=i.statusEl,f=i.selectedDate,p=i.maxDate,v=i.minDate,b=i.rangeDate,h=N(),l=e||h,d=s.hidden,m=P(l,0),g=l.getMonth(),y=l.getFullYear(),E=Y(l,1),w=R(l,1),x=W(l),A=B(l),S=U(l,v),D=U(l,p),L=f||l,_=b&&(n=L,a=b,new Date((a<n?a:n).getTime())),C=b&&(r=L,o=b,new Date((r<o?o:r).getTime())),k=b&&P(_,1),T=b&&F(C,1),M=ye[g],l=H(A),O=[];O.length<28||l.getMonth()===g||O.length%7!=0;)O.push(function(t){var e=[vt],n=t.getDate(),a=t.getMonth(),r=t.getFullYear(),o=t.getDay(),i=W(t),c="-1",s=!V(t,v,p),u=K(t,f);U(t,E)&&e.push(mt),U(t,m)&&e.push(gt),U(t,w)&&e.push(yt),u&&e.push(ht),K(t,h)&&e.push(wt),b&&(K(t,b)&&e.push(Et),K(t,_)&&e.push(xt),K(t,C)&&e.push(At),V(t,k,T)&&e.push(St)),K(t,m)&&(c="0",e.push(bt));var l=ye[a],d=Ee[o];return'<button\n type="button"\n tabindex="'.concat(c,'"\n class="').concat(e.join(" "),'" \n data-day="').concat(n,'" \n data-month="').concat(a+1,'" \n data-year="').concat(r,'" \n data-value="').concat(i,'"\n aria-label="').concat(n," ").concat(l," ").concat(r," ").concat(d,'"\n aria-selected="').concat(u?"true":"false",'"\n ').concat(s?'disabled="disabled"':"","\n >").concat(n,"</button>")}(l)),l=P(l,1);var j=$(O,7),I=s.cloneNode();I.dataset.value=x,I.style.top="".concat(c.offsetHeight,"px"),I.hidden=!1,I.innerHTML='<div tabindex="-1" class="'.concat(Ft,'">\n <div class="').concat(Ut,'">\n <div class="').concat(Kt," ").concat(Vt,'">\n <button \n type="button"\n class="').concat(Dt,'"\n aria-label="Navigate back one year"\n ').concat(S?'disabled="disabled"':"",'\n >&nbsp;</button>\n </div>\n <div class="').concat(Kt," ").concat(Vt,'">\n <button \n type="button"\n class="').concat(Lt,'"\n aria-label="Navigate back one month"\n ').concat(S?'disabled="disabled"':"",'\n >&nbsp;</button>\n </div>\n <div class="').concat(Kt," ").concat(Wt,'">\n <button \n type="button"\n class="').concat(kt,'" aria-label="').concat(M,'. Click to select month"\n >').concat(M,'</button>\n <button \n type="button"\n class="').concat(Tt,'" aria-label="').concat(y,'. Click to select year"\n >').concat(y,'</button>\n </div>\n <div class="').concat(Kt," ").concat(Vt,'">\n <button \n type="button"\n class="').concat(Ct,'"\n aria-label="Navigate forward one month"\n ').concat(D?'disabled="disabled"':"",'\n >&nbsp;</button>\n </div>\n <div class="').concat(Kt," ").concat(Vt,'">\n <button \n type="button"\n class="').concat(_t,'"\n aria-label="Navigate forward one year"\n ').concat(D?'disabled="disabled"':"",'\n >&nbsp;</button>\n </div>\n </div>\n <table class="').concat(Yt,'" role="presentation">\n <thead>\n <tr>\n <th class="').concat($t,'" scope="col" aria-label="Sunday">S</th>\n <th class="').concat($t,'" scope="col" aria-label="Monday">M</th>\n <th class="').concat($t,'" scope="col" aria-label="Tuesday">T</th>\n <th class="').concat($t,'" scope="col" aria-label="Wednesday">W</th>\n <th class="').concat($t,'" scope="col" aria-label="Thursday">Th</th>\n <th class="').concat($t,'" scope="col" aria-label="Friday">F</th>\n <th class="').concat($t,'" scope="col" aria-label="Saturday">S</th>\n </tr>\n </thead>\n <tbody>\n ').concat(j,"\n </tbody>\n </table>\n </div>"),s.parentNode.replaceChild(I,s),c.classList.add(st);var q=[];return K(f,m)&&q.push("Selected date"),d?(q.push("You can navigate by day using left and right arrows","Weeks by using up and down arrows","Months by using page up and page down keys","Years by using shift plus page up and shift plus page down","Home and end keys navigate to the beginning and end of a week"),u.textContent=""):q.push("".concat(M," ").concat(y)),u.textContent=q.join(". "),I}function k(t){var e=z(t),n=e.datePickerEl,a=e.calendarEl,r=e.statusEl;n.classList.remove(st),a.hidden=!0,r.textContent=""}function T(t){var e,n=z(t),a=n.calendarEl,r=n.inputDate,o=n.minDate,i=n.maxDate;!a.hidden&&r&&(e=y(r,o,i),C(a,e))}function M(t,e){var n=z(t),a=n.calendarEl,r=n.statusEl,l=n.calendarDate,d=n.minDate,f=n.maxDate,p=l.getMonth(),v=null==e?p:e,o=ye.map(function(t,e){var n,a,r,o=g(l,e),i=(a=d,r=f,b(n=o)<a||r&&B(n)>r),c="-1",s=[Mt],u=e===p;return e===v&&(c="0",s.push(Ot)),u&&s.push(jt),'<button \n type="button"\n tabindex="'.concat(c,'"\n class="').concat(s.join(" "),'" \n data-value="').concat(e,'"\n data-label="').concat(t,'"\n aria-selected="').concat(u?"true":"false",'"\n ').concat(i?'disabled="disabled"':"","\n >").concat(t,"</button>")}),i='<div tabindex="-1" class="'.concat(Ht,'">\n <table class="').concat(Yt,'" role="presentation">\n <tbody>\n ').concat($(o,3),"\n </tbody>\n </table>\n </div>"),c=a.cloneNode();return c.innerHTML=i,a.parentNode.replaceChild(c,a),r.textContent="Select a month.",c}function O(t,e){var n=z(t),a=n.calendarEl,r=n.statusEl,o=n.calendarDate,i=n.minDate,c=n.maxDate,s=o.getFullYear(),u=null==e?s:e,l=u;l-=l%12,l=Math.max(0,l);for(var d=x(w(o,l-1),i,c),f=x(w(o,l+12),i,c),p=[],v=l;p.length<12;){var b=x(w(o,v),i,c),h="-1",m=[It],g=v===s;v===u&&(h="0",m.push(qt)),g&&m.push(Nt),p.push('<button \n type="button"\n tabindex="'.concat(h,'"\n class="').concat(m.join(" "),'" \n data-value="').concat(v,'"\n aria-selected="').concat(g?"true":"false",'"\n ').concat(b?'disabled="disabled"':"","\n >").concat(v,"</button>")),v+=1}var y=$(p,3),E=a.cloneNode();return E.innerHTML='<div tabindex="-1" class="'.concat(Rt,'">\n <table class="').concat(Yt,'" role="presentation">\n <tbody>\n <tr>\n <td>\n <button\n type="button"\n class="').concat(Bt,'" \n aria-label="Navigate back ').concat(12,' years"\n ').concat(d?'disabled="disabled"':"",'\n >&nbsp;</button>\n </td>\n <td colspan="3">\n <table class="').concat(Yt,'" role="presentation">\n <tbody>\n ').concat(y,'\n </tbody>\n </table>\n </td>\n <td>\n <button\n type="button"\n class="').concat(Pt,'" \n aria-label="Navigate forward ').concat(12,' years"\n ').concat(f?'disabled="disabled"':"","\n >&nbsp;</button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>"),a.parentNode.replaceChild(E,a),r.textContent="Showing years ".concat(l," to ").concat(l+12-1,". Select a year."),E}function j(t){var e=z(t.target),n=e.datePickerEl,a=e.externalInputEl;k(n),a.focus(),t.preventDefault()}function I(s){return function(t){var e=z(t.target),n=e.calendarEl,a=e.calendarDate,r=e.minDate,o=e.maxDate,i=s(a),c=y(i,r,o);K(a,c)||C(n,c).querySelector(ee).focus(),t.preventDefault()}}function q(f){return function(t){var e=t.target,n=parseInt(e.dataset.value,10),a=z(e),r=a.calendarEl,o=a.calendarDate,i=a.minDate,c=a.maxDate,s=g(o,n),u=f(n),u=Math.max(0,Math.min(11,u)),l=g(o,u),d=y(l,i,c);U(s,d)||M(r,d.getMonth()).querySelector(he).focus(),t.preventDefault()}}function Q(f){return function(t){var e=t.target,n=parseInt(e.dataset.value,10),a=z(e),r=a.calendarEl,o=a.calendarDate,i=a.minDate,c=a.maxDate,s=w(o,n),u=f(n),u=Math.max(0,u),l=w(o,u),d=y(l,i,c);v(s,d)||O(r,d.getFullYear()).querySelector(me).focus(),t.preventDefault()}}function G(c){function o(t){var e=z(t).calendarEl,n=tt(c,e),a=n.length-1,r=n[0],o=n[a],i=n.indexOf(at());return{focusableElements:n,isNotFound:-1===i,firstTabStop:r,isFirstTab:0===i,lastTabStop:o,isLastTab:i===a}}return{tabAhead:function(t){var e=o(t.target),n=e.firstTabStop,a=e.isLastTab,r=e.isNotFound;(a||r)&&(t.preventDefault(),n.focus())},tabBack:function(t){var e=o(t.target),n=e.lastTabStop,a=e.isFirstTab,r=e.isNotFound;(a||r)&&(t.preventDefault(),n.focus())}}}var X,J=t("receptor/keymap"),Z=t("../utils/behavior"),tt=t("../utils/select"),et=t("../config").prefix,nt=t("../events").CLICK,at=t("../utils/active-element"),rt=t("../utils/is-ios-device"),ot="".concat(et,"-date-picker"),it="".concat(ot,"__wrapper"),ct="".concat(ot,"--initialized"),st="".concat(ot,"--active"),ut="".concat(ot,"__internal-input"),lt="".concat(ot,"__external-input"),dt="".concat(ot,"__button"),ft="".concat(ot,"__calendar"),pt="".concat(ot,"__status"),vt="".concat(ft,"__date"),bt="".concat(vt,"--focused"),ht="".concat(vt,"--selected"),mt="".concat(vt,"--previous-month"),gt="".concat(vt,"--current-month"),yt="".concat(vt,"--next-month"),Et="".concat(vt,"--range-date"),wt="".concat(vt,"--today"),xt="".concat(vt,"--range-date-start"),At="".concat(vt,"--range-date-end"),St="".concat(vt,"--within-range"),Dt="".concat(ft,"__previous-year"),Lt="".concat(ft,"__previous-month"),_t="".concat(ft,"__next-year"),Ct="".concat(ft,"__next-month"),kt="".concat(ft,"__month-selection"),Tt="".concat(ft,"__year-selection"),Mt="".concat(ft,"__month"),Ot="".concat(Mt,"--focused"),jt="".concat(Mt,"--selected"),It="".concat(ft,"__year"),qt="".concat(It,"--focused"),Nt="".concat(It,"--selected"),Bt="".concat(ft,"__previous-year-chunk"),Pt="".concat(ft,"__next-year-chunk"),Ft="".concat(ft,"__date-picker"),Ht="".concat(ft,"__month-picker"),Rt="".concat(ft,"__year-picker"),Yt="".concat(ft,"__table"),Ut="".concat(ft,"__row"),Kt="".concat(ft,"__cell"),Vt="".concat(Kt,"--center-items"),Wt="".concat(ft,"__month-label"),$t="".concat(ft,"__day-of-week"),zt=".".concat(ot),Qt=".".concat(dt),Gt=".".concat(ut),Xt=".".concat(lt),Jt=".".concat(ft),Zt=".".concat(pt),te=".".concat(vt),ee=".".concat(bt),ne=".".concat(gt),ae=".".concat(Dt),re=".".concat(Lt),oe=".".concat(_t),ie=".".concat(Ct),ce=".".concat(Tt),se=".".concat(kt),ue=".".concat(Mt),le=".".concat(It),de=".".concat(Bt),fe=".".concat(Pt),pe=".".concat(Ft),ve=".".concat(Ht),be=".".concat(Rt),he=".".concat(Ot),me=".".concat(qt),ge="Please enter a valid date",ye=["January","February","March","April","May","June","July","August","September","October","November","December"],Ee=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],we="MM/DD/YYYY",xe="YYYY-MM-DD",Ae=u(ae,re,ce,se,oe,ie,ee),Se=u(he),De=u(de,fe,me),Le=I(function(t){return d(t,-1)}),_e=I(function(t){return d(t,1)}),Ce=I(function(t){return F(t,1)}),ke=I(function(t){return P(t,1)}),Te=I(H),Me=I(function(t){return n=(e=t).getDay(),P(e,6-n);var e,n}),Oe=I(function(t){return R(t,1)}),je=I(function(t){return Y(t,1)}),Ie=I(function(t){return f(t,1)}),qe=I(function(t){return p(t,1)}),Ne=q(function(t){return t-3}),Be=q(function(t){return t+3}),Pe=q(function(t){return t-1}),Fe=q(function(t){return t+1}),He=q(function(t){return t-t%3}),Re=q(function(t){return t+2-t%3}),Ye=q(function(){return 11}),Ue=q(function(){return 0}),Ke=Q(function(t){return t-3}),Ve=Q(function(t){return t+3}),We=Q(function(t){return t-1}),$e=Q(function(t){return t+1}),ze=Q(function(t){return t-t%3}),Qe=Q(function(t){return t+2-t%3}),Ge=Q(function(t){return t-12}),Xe=Q(function(t){return t+12}),Je=G(Ae),Ze=G(Se),tn=G(De),en=(c(i={},nt,(c(a={},Qt,function(){var t,e,n,a,r,o,i,c;(t=this).disabled||(n=(e=z(t)).calendarEl,a=e.inputDate,r=e.minDate,o=e.maxDate,i=e.defaultDate,n.hidden?(c=y(a||i||N(),r,o),C(n,c).querySelector(ee).focus()):k(t))}),c(a,te,function(){var t,e,n,a;(t=this).disabled||(n=(e=z(t)).datePickerEl,a=e.externalInputEl,_(t,t.dataset.value),k(n),a.focus())}),c(a,ue,function(){var t,e,n,a,r,o,i,c;(t=this).disabled||(n=(e=z(t)).calendarEl,a=e.calendarDate,r=e.minDate,o=e.maxDate,i=parseInt(t.dataset.value,10),c=g(a,i),c=y(c,r,o),C(n,c).querySelector(ee).focus())}),c(a,le,function(){var t,e,n,a,r,o,i,c;(t=this).disabled||(n=(e=z(t)).calendarEl,a=e.calendarDate,r=e.minDate,o=e.maxDate,i=parseInt(t.innerHTML,10),c=w(a,i),c=y(c,r,o),C(n,c).querySelector(ee).focus())}),c(a,re,function(){var t,e,n,a,r,o,i,c,s;(t=this).disabled||(n=(e=z(t)).calendarEl,a=e.calendarDate,r=e.minDate,o=e.maxDate,i=Y(a,1),i=y(i,r,o),(s=(c=C(n,i)).querySelector(re)).disabled&&(s=c.querySelector(pe)),s.focus())}),c(a,ie,function(){var t,e,n,a,r,o,i,c,s;(t=this).disabled||(n=(e=z(t)).calendarEl,a=e.calendarDate,r=e.minDate,o=e.maxDate,i=R(a,1),i=y(i,r,o),(s=(c=C(n,i)).querySelector(ie)).disabled&&(s=c.querySelector(pe)),s.focus())}),c(a,ae,function(){var t,e,n,a,r,o,i,c,s;(t=this).disabled||(n=(e=z(t)).calendarEl,a=e.calendarDate,r=e.minDate,o=e.maxDate,i=p(a,1),i=y(i,r,o),(s=(c=C(n,i)).querySelector(ae)).disabled&&(s=c.querySelector(pe)),s.focus())}),c(a,oe,function(){var t,e,n,a,r,o,i,c,s;(t=this).disabled||(n=(e=z(t)).calendarEl,a=e.calendarDate,r=e.minDate,o=e.maxDate,i=f(a,1),i=y(i,r,o),(s=(c=C(n,i)).querySelector(oe)).disabled&&(s=c.querySelector(pe)),s.focus())}),c(a,de,function(){var t,e,n,a,r,o,i,c,s,u,l,d;(t=this).disabled||(n=(e=z(t)).calendarEl,a=e.calendarDate,r=e.minDate,o=e.maxDate,i=n.querySelector(me),c=parseInt(i.textContent,10)-12,c=Math.max(0,c),s=w(a,c),u=y(s,r,o),(d=(l=O(n,u.getFullYear())).querySelector(de)).disabled&&(d=l.querySelector(be)),d.focus())}),c(a,fe,function(){var t,e,n,a,r,o,i,c,s,u,l,d;(t=this).disabled||(n=(e=z(t)).calendarEl,a=e.calendarDate,r=e.minDate,o=e.maxDate,i=n.querySelector(me),c=parseInt(i.textContent,10)+12,c=Math.max(0,c),s=w(a,c),u=y(s,r,o),(d=(l=O(n,u.getFullYear())).querySelector(fe)).disabled&&(d=l.querySelector(be)),d.focus())}),c(a,se,function(){M(this).querySelector(he).focus()}),c(a,ce,function(){O(this).querySelector(me).focus()}),a)),c(i,"keyup",c({},Jt,function(t){var e=this.dataset.keydownKeyCode;"".concat(t.keyCode)!==e&&t.preventDefault()})),c(i,"keydown",(c(r={},Xt,function(t){13===t.keyCode&&L(this)}),c(r,te,J({Up:Le,ArrowUp:Le,Down:_e,ArrowDown:_e,Left:Ce,ArrowLeft:Ce,Right:ke,ArrowRight:ke,Home:Te,End:Me,PageDown:Oe,PageUp:je,"Shift+PageDown":Ie,"Shift+PageUp":qe})),c(r,pe,J({Tab:Je.tabAhead,"Shift+Tab":Je.tabBack})),c(r,ue,J({Up:Ne,ArrowUp:Ne,Down:Be,ArrowDown:Be,Left:Pe,ArrowLeft:Pe,Right:Fe,ArrowRight:Fe,Home:He,End:Re,PageDown:Ye,PageUp:Ue})),c(r,ve,J({Tab:Ze.tabAhead,"Shift+Tab":Ze.tabBack})),c(r,le,J({Up:Ke,ArrowUp:Ke,Down:Ve,ArrowDown:Ve,Left:We,ArrowLeft:We,Right:$e,ArrowRight:$e,Home:ze,End:Qe,PageDown:Xe,PageUp:Ge})),c(r,be,J({Tab:tn.tabAhead,"Shift+Tab":tn.tabBack})),c(r,Jt,function(t){this.dataset.keydownKeyCode=t.keyCode}),c(r,zt,function(t){J({Escape:j})(t)}),r)),c(i,"focusout",(c(o={},Xt,function(){L(this)}),c(o,zt,function(t){this.contains(t.relatedTarget)||k(this)}),o)),c(i,"input",c({},Xt,function(){var t,e,n,a,r;e=z(t=this),n=e.internalInputEl,a=e.inputDate,r="",a&&!D(t)&&(r=W(a)),n.value!==r&&A(n,r),T(this)})),i);rt()||(en.mousemove=(c(X={},ne,function(){var t,e,n,a,r;(t=this).disabled||(n=(e=t.closest(Jt)).dataset.value,(a=t.dataset.value)!==n&&(r=E(a),C(e,r).querySelector(ee).focus()))}),c(X,ue,function(){var t,e;(t=this).disabled||t.classList.contains(Ot)||(e=parseInt(t.dataset.value,10),M(t,e).querySelector(he).focus())}),c(X,le,function(){var t,e;(t=this).disabled||t.classList.contains(qt)||(e=parseInt(t.dataset.value,10),O(t,e).querySelector(me).focus())}),X));var nn=Z(en,{init:function(t){tt(zt,t).forEach(function(t){!function(t){var e=t.closest(zt),n=e.dataset.defaultValue,a=e.querySelector("input");if(!a)throw new Error("".concat(zt," is missing inner input"));a.value&&(a.value="");var r=E(e.dataset.minDate||a.getAttribute("min"));e.dataset.minDate=r?W(r):"0000-01-01";var o=E(e.dataset.maxDate||a.getAttribute("max"));o&&(e.dataset.maxDate=W(o));var i=document.createElement("div");i.classList.add(it),i.tabIndex="-1";var c=a.cloneNode();c.classList.add(lt),c.type="text",c.name="",i.appendChild(c),i.insertAdjacentHTML("beforeend",['<button type="button" class="'.concat(dt,'" aria-haspopup="true" aria-label="Toggle calendar">&nbsp;</button>'),'<div class="'.concat(ft,'" role="dialog" aria-modal="true" hidden></div>'),'<div class="usa-sr-only '.concat(pt,'" role="status" aria-live="polite"></div>')].join("")),a.setAttribute("aria-hidden","true"),a.setAttribute("tabindex","-1"),a.classList.add("usa-sr-only",ut),a.id="",a.required=!1,e.appendChild(i),e.classList.add(ct),n&&_(e,n),a.disabled&&(S(e),a.disabled=!1)}(t)})},getDatePickerContext:z,disable:S,enable:function(t){var e=z(t),n=e.externalInputEl;e.toggleBtnEl.disabled=!1,n.disabled=!1},isDateInputInvalid:D,setCalendarValue:_,validateDateInput:L,renderCalendar:C,updateCalendarIfVisible:T});e.exports=nn},{"../config":33,"../events":34,"../utils/active-element":40,"../utils/behavior":41,"../utils/is-ios-device":44,"../utils/select":45,"receptor/keymap":14}],22:[function(t,e,n){"use strict";var a;function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var n=[],a=!0,r=!1,o=void 0;try{for(var i,c=t[Symbol.iterator]();!(a=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);a=!0);}catch(t){r=!0,o=t}finally{try{a||null==c.return||c.return()}finally{if(r)throw o}}return n}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return o(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,a=new Array(e);n<e;n++)a[n]=t[n];return a}function s(t){var e=t.closest(x);if(!e)throw new Error("Element is missing outer ".concat(x));var n=e.querySelector(A),a=e.querySelector(S);return{dateRangePickerEl:e,rangeStartEl:n,rangeEndEl:a}}function u(t){var e=s(t),n=e.dateRangePickerEl,a=e.rangeStartEl,r=e.rangeEndEl,o=v(a).internalInputEl,i=o.value;i&&!b(o)?(r.dataset.minDate=i,r.dataset.rangeDate=i,r.dataset.defaultDate=i):(r.dataset.minDate=n.dataset.minDate||"",r.dataset.rangeDate="",r.dataset.defaultDate=""),h(r)}function l(t){var e=s(t),n=e.dateRangePickerEl,a=e.rangeStartEl,r=e.rangeEndEl,o=v(r).internalInputEl,i=o.value;i&&!b(o)?(a.dataset.maxDate=i,a.dataset.rangeDate=i,a.dataset.defaultDate=i):(a.dataset.maxDate=n.dataset.maxDate||"",a.dataset.rangeDate="",a.dataset.defaultDate=""),h(a)}var i=t("../utils/behavior"),d=t("../utils/select"),f=t("../config").prefix,p=t("./date-picker"),v=p.getDatePickerContext,b=p.isDateInputInvalid,h=p.updateCalendarIfVisible,m="".concat(f,"-date-picker"),g="".concat(f,"-date-range-picker"),y="".concat(g,"__range-start"),E="".concat(g,"__range-end"),w=".".concat(m),x=".".concat(g),A=".".concat(y),S=".".concat(E),D=i({"input change":(r(a={},A,function(){u(this)}),r(a,S,function(){l(this)}),a)},{init:function(t){d(x,t).forEach(function(t){!function(t){var e=t.closest(x),n=c(d(w,e),2),a=n[0],r=n[1];if(!a)throw new Error("".concat(x," is missing inner two '").concat(w,"' elements"));if(!r)throw new Error("".concat(x," is missing second '").concat(w,"' element"));a.classList.add(y),r.classList.add(E),e.dataset.minDate||(e.dataset.minDate="0000-01-01");var o=e.dataset.minDate;a.dataset.minDate=o,r.dataset.minDate=o;var i=e.dataset.maxDate;i&&(a.dataset.maxDate=i,r.dataset.maxDate=i),u(e),l(e)}(t)})}});e.exports=D},{"../config":33,"../utils/behavior":41,"../utils/select":45,"./date-picker":21}],23:[function(t,e,n){"use strict";function d(t){return t.replace(/[^a-z0-9]/g,function(t){var e=t.charCodeAt(0);return 32===e?"-":65<=e&&e<=90?"img_".concat(t.toLowerCase()):"__".concat(e.toString(16).slice(-4))})}function f(t,e){var n=t.querySelectorAll(".".concat(g)),a=t.querySelector(".".concat(y)),r=t.querySelector(".".concat(x));a&&(a.outerHTML=""),r&&(r.outerHTML="",t.classList.remove(_)),null!==n&&(e&&e.classList.remove(L),Array.prototype.forEach.call(n,function(t){t.parentNode.removeChild(t)}))}var a=t("../utils/select"),r=t("../utils/behavior"),o=t("../config").prefix,p="".concat(o,"-file-input"),i=".".concat(p),v="".concat(o,"-file-input__input"),b="".concat(o,"-file-input__target"),h="".concat(o,"-file-input__box"),m="".concat(o,"-file-input__instructions"),g="".concat(o,"-file-input__preview"),y="".concat(o,"-file-input__preview-heading"),E="".concat(o,"-file-input--disabled"),w="".concat(o,"-file-input__choose"),x="".concat(o,"-file-input__accepted-files-message"),A="".concat(o,"-file-input__drag-text"),S="".concat(o,"-file-input--drag"),D="is-loading",L="display-none",_="has-invalid-file",C="".concat(o,"-file-input__preview-image"),k="".concat(C,"--generic"),T="".concat(C,"--pdf"),M="".concat(C,"--word"),O="".concat(C,"--video"),j="".concat(C,"--excel"),I="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",c=r({},{init:function(t){a(i,t).forEach(function(e){var t,n,a,r,o,i,c,s=(n=(t=e).hasAttribute("multiple"),a=document.createElement("div"),r=document.createElement("div"),o=document.createElement("div"),i=document.createElement("div"),c=t.hasAttribute("disabled"),t.classList.remove(p),t.classList.add(v),a.classList.add(p),o.classList.add(h),i.classList.add(m),i.setAttribute("aria-hidden","true"),r.classList.add(b),t.parentNode.insertBefore(r,t),t.parentNode.insertBefore(a,r),r.appendChild(t),a.appendChild(r),t.parentNode.insertBefore(i,t),t.parentNode.insertBefore(o,t),c&&(a.classList.add(E),a.setAttribute("aria-disabled","true")),i.innerHTML=n?'<span class="'.concat(A,'">Drag files here or </span><span class="').concat(w,'">choose from folder</span>'):'<span class="'.concat(A,'">Drag file here or </span><span class="').concat(w,'">choose from folder</span>'),(/rv:11.0/i.test(navigator.userAgent)||/Edge\/\d./i.test(navigator.userAgent))&&(a.querySelector(".".concat(A)).outerHTML=""),{instructions:i,dropTarget:r}),u=s.instructions,l=s.dropTarget;l.addEventListener("dragover",function(){this.classList.add(S)},!1),l.addEventListener("dragleave",function(){this.classList.remove(S)},!1),l.addEventListener("drop",function(t){!function(t,e,n,a){var r=e.getAttribute("accept");if(a.classList.remove(_),r){for(var o=document.createElement("div"),i=!0,c=0;c<t.dataTransfer.files.length;c+=1){var s=t.dataTransfer.files[c];if(i&&(i=s.name.indexOf(r))<0)break}i<0&&(f(a,n),e.value="",a.insertBefore(o,e),o.innerHTML="This is not a valid file type.",o.classList.add(x),a.classList.add(_),t.preventDefault(),t.stopPropagation())}}(t,e,u,l),this.classList.remove(S)},!1),e.onchange=function(t){!function(t,r,e){var o=t.target.files,i=document.createElement("div");f(e,r);for(var n=0;n<o.length;n+=1)!function(t){var n=new FileReader,a=o[t].name;n.onloadstart=function(){var t=d(a),e='<img id="'.concat(t,'" src="').concat(I,'" alt="" class="').concat(C," ").concat(D,'"/>');r.insertAdjacentHTML("afterend",'<div class="'.concat(g,'" aria-hidden="true">').concat(e).concat(a,"<div>"))},n.onloadend=function(){var t=d(a),e=document.getElementById(t);0<a.indexOf(".pdf")?e.setAttribute("onerror",'this.onerror=null;this.src="'.concat(I,'"; this.classList.add("').concat(T,'")')):0<a.indexOf(".doc")||0<a.indexOf(".pages")?e.setAttribute("onerror",'this.onerror=null;this.src="'.concat(I,'"; this.classList.add("').concat(M,'")')):0<a.indexOf(".xls")||0<a.indexOf(".numbers")?e.setAttribute("onerror",'this.onerror=null;this.src="'.concat(I,'"; this.classList.add("').concat(j,'")')):0<a.indexOf(".mov")||0<a.indexOf(".mp4")?e.setAttribute("onerror",'this.onerror=null;this.src="'.concat(I,'"; this.classList.add("').concat(O,'")')):e.setAttribute("onerror",'this.onerror=null;this.src="'.concat(I,'"; this.classList.add("').concat(k,'")')),e.classList.remove(D),e.src=n.result},o[t]&&n.readAsDataURL(o[t]),0===t?(e.insertBefore(i,r),i.innerHTML='Selected file <span class="usa-file-input__choose">Change file</span>'):1<=t&&(e.insertBefore(i,r),i.innerHTML="".concat(t+1,' files selected <span class="usa-file-input__choose">Change files</span>')),i&&(r.classList.add(L),i.classList.add(y))}(n)}(t,u,l)}})}});e.exports=c},{"../config":33,"../utils/behavior":41,"../utils/select":45}],24:[function(t,e,n){"use strict";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var r,o=t("lodash.debounce"),i=t("../utils/behavior"),c=t("../utils/select"),s=t("../events").CLICK,u=t("../config").prefix,l="hidden",d=".".concat(u,"-footer--big"),f="".concat(d," nav"),p="".concat(f," .").concat(u,"-footer__primary-link"),v=".".concat(u,"-footer__primary-content--collapsible");var b=o(function(){var e;r!==window.innerWidth&&(r=window.innerWidth,e=window.innerWidth<480,c(v).forEach(function(t){return t.classList.toggle(l,e)}))},180);e.exports=i(a({},s,a({},p,function(){var e;window.innerWidth<480&&((e=this.closest(v)).classList.toggle(l),c(v,e.closest(f)).forEach(function(t){t!==e&&t.classList.add(l)}))})),{HIDE_MAX_WIDTH:480,DEBOUNCE_RATE:180,init:function(){b(),window.addEventListener("resize",b)},teardown:function(){window.removeEventListener("resize",b)}})},{"../config":33,"../events":34,"../utils/behavior":41,"../utils/select":45,"lodash.debounce":6}],25:[function(t,e,n){"use strict";var a=t("./accordion"),r=t("./banner"),o=t("./character-count"),i=t("./combo-box"),c=t("./file-input"),s=t("./footer"),u=t("./navigation"),l=t("./password"),d=t("./search"),f=t("./skipnav"),p=t("./tooltip"),v=t("./validator"),b=t("./date-picker"),h=t("./date-range-picker"),m=t("./time-picker");e.exports={accordion:a,banner:r,characterCount:o,comboBox:i,datePicker:b,dateRangePicker:h,fileInput:c,footer:s,navigation:u,password:l,search:d,skipnav:f,timePicker:m,tooltip:p,validator:v}},{"./accordion":17,"./banner":18,"./character-count":19,"./combo-box":20,"./date-picker":21,"./date-range-picker":22,"./file-input":23,"./footer":24,"./navigation":26,"./password":27,"./search":28,"./skipnav":29,"./time-picker":30,"./tooltip":31,"./validator":32}],26:[function(t,e,n){"use strict";var a;function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(){return document.body.classList.contains(L)}function i(t){var e=document.body,n="boolean"==typeof t?t:!o();e.classList.toggle(L,n),f(D).forEach(function(t){return t.classList.toggle("is-visible",n)}),_.focusTrap.update(n);var a=e.querySelector(x),r=e.querySelector(w);return n&&a?a.focus():!n&&document.activeElement===a&&r&&r.focus(),n}function c(){var t=document.body.querySelector(x);o()&&t&&0===t.getBoundingClientRect().width&&_.toggleNav.call(t,!1)}function s(){return _.toggleNav.call(_,!1)}function u(){p(l,!1),l=null}var l,d=t("../utils/behavior"),f=t("../utils/select"),p=t("../utils/toggle"),v=t("../utils/focus-trap"),b=t("./accordion"),h=t("../events").CLICK,m=t("../config").prefix,g=".".concat(m,"-nav"),y="".concat(g," a"),E="button.".concat(m,"-nav__link"),w=".".concat(m,"-menu-btn"),x=".".concat(m,"-nav__close"),A=".".concat(m,"-overlay"),S="".concat(x,", .").concat(m,"-overlay"),D=[g,A].join(", "),L="usa-js-mobile-nav--active",_=d(r({},h,(r(a={},E,function(){return l&&l!==this&&u(),l?u():p(l=this,!0),!1}),r(a,"body",function(){l&&u()}),r(a,w,i),r(a,S,i),r(a,y,function(){var t=this.closest(b.ACCORDION);t&&b.getButtons(t).forEach(function(t){return b.hide(t)}),o()&&_.toggleNav.call(_,!1)}),a)),{init:function(t){var e=t.querySelector(g);e&&(_.focusTrap=v(e,{Escape:s})),c(),window.addEventListener("resize",c,!1)},teardown:function(){window.removeEventListener("resize",c,!1),l=!1},focusTrap:null,toggleNav:i});e.exports=_},{"../config":33,"../events":34,"../utils/behavior":41,"../utils/focus-trap":42,"../utils/select":45,"../utils/toggle":48,"./accordion":17}],27:[function(t,e,n){"use strict";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var r=t("../utils/behavior"),o=t("../utils/toggle-form-input"),i=t("../events").CLICK,c=t("../config").prefix,s=".".concat(c,"-show-password, .").concat(c,"-show-multipassword");e.exports=r(a({},i,a({},s,function(t){t.preventDefault(),o(this)})))},{"../config":33,"../events":34,"../utils/behavior":41,"../utils/toggle-form-input":47}],28:[function(t,e,n){"use strict";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var i,c=t("receptor/ignore"),r=t("../utils/behavior"),o=t("../utils/select"),s=t("../events").CLICK,u=".js-search-button",l=".js-search-form",d=function(t,e){var n,a,r,o=(n=t.closest("header"))?n.querySelector(l):document.querySelector(l);if(!o)throw new Error("No ".concat(l," found for search toggle in ").concat("header","!"));t.hidden=e,o.hidden=!e,e&&((a=o.querySelector("[type=search]"))&&a.focus(),r=c(o,function(){i&&function(){d(this,!1),i=void 0}.call(i),document.body.removeEventListener(s,r)}),setTimeout(function(){document.body.addEventListener(s,r)},0))};var f=r(a({},s,a({},u,function(){d(this,!0),i=this})),{init:function(t){o(u,t).forEach(function(t){d(t,!1)})},teardown:function(){i=void 0}});e.exports=f},{"../events":34,"../utils/behavior":41,"../utils/select":45,"receptor/ignore":12}],29:[function(t,e,n){"use strict";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var r=t("receptor/once"),o=t("../utils/behavior"),i=t("../events").CLICK,c=t("../config").prefix,s=".".concat(c,'-skipnav[href^="#"], .').concat(c,'-footer__return-to-top [href^="#"]');e.exports=o(a({},i,a({},s,function(){var t=this.getAttribute("href"),e=document.getElementById("#"===t?"main-content":t.slice(1));e&&(e.style.outline="0",e.setAttribute("tabindex",0),e.focus(),e.addEventListener("blur",r(function(){e.setAttribute("tabindex",-1)})))})))},{"../config":33,"../events":34,"../utils/behavior":41,"receptor/once":15}],30:[function(t,e,n){"use strict";function o(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var n=[],a=!0,r=!1,o=void 0;try{for(var i,c=t[Symbol.iterator]();!(a=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);a=!0);}catch(t){r=!0,o=t}finally{try{a||null==c.return||c.return()}finally{if(r)throw o}}return n}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return a(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return a(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,a=new Array(e);n<e;n++)a[n]=t[n];return a}function g(t){var e,n,a,r;return t&&(a=(n=o(t.split(":").map(function(t){var e,n=parseInt(t,10);return Number.isNaN(n)||(e=n),e}),2))[0],r=n[1],null!=a&&null!=r&&(e=60*a+r)),e}var r=t("../utils/behavior"),i=t("../utils/select"),c=t("../config").prefix,s=t("./combo-box"),y=s.COMBO_BOX_CLASS,u=s.enhanceComboBox,l="".concat(c,"-time-picker"),E=".".concat(l),w={filter:"0?{{ hourQueryFilter }}:{{minuteQueryFilter}}.*{{ apQueryFilter }}m?",apQueryFilter:"([ap])",hourQueryFilter:"([1-9][0-2]?)",minuteQueryFilter:"[\\d]+:([0-9]{0,2})"},d=r({},{init:function(t){i(E,t).forEach(function(t){!function(t){var e=t.closest(E),n=e.querySelector("input");if(!n)throw new Error("".concat(E," is missing inner input"));var a=document.createElement("select");["id","name","required","aria-label","aria-labelledby"].forEach(function(t){var e;n.hasAttribute(t)&&(e=n.getAttribute(t),a.setAttribute(t,e),n.removeAttribute(t))});for(var r,o,i,c=function(t,e){return"0000".concat(t).slice(-e)},s=Math.max(0,g(e.dataset.minTime)||0),u=Math.min(1439,g(e.dataset.maxTime)||1439),l=Math.floor(Math.max(1,e.dataset.step||30)),d=s;d<=u;d+=l){var f=(i=o=void 0,o=(r=d)%60,i=Math.floor(r/60),{minute:o,hour24:i,hour12:i%12||12,ampm:i<12?"am":"pm"}),p=f.minute,v=f.hour24,b=f.hour12,h=f.ampm,m=document.createElement("option");m.value="".concat(c(v,2),":").concat(c(p,2)),m.text="".concat(b,":").concat(c(p,2)).concat(h),a.appendChild(m)}e.classList.add(y),Object.keys(w).forEach(function(t){e.dataset[t]=w[t]}),e.dataset.disableFiltering="true",e.appendChild(a),n.style.display="none"}(t),u(t)})},FILTER_DATASET:w});e.exports=d},{"../config":33,"../utils/behavior":41,"../utils/select":45,"./combo-box":20}],31:[function(t,e,n){"use strict";function f(t,e,n){for(var a=e.split(" "),r=0,o=a.length;r<o;r+=1)t.addEventListener(a[r],n,!1)}function p(e,t,n,a){function r(t){e.classList.remove("".concat(x,"--top")),e.classList.remove("".concat(x,"--bottom")),e.classList.remove("".concat(x,"--right")),e.classList.remove("".concat(x,"--left")),e.classList.add("".concat(x,"--").concat(t))}function o(t){r("top"),t.style.marginLeft="".concat(g,"px"),w(t)||t.classList.add(S),t.style.marginBottom="".concat(E+f+v,"px")}function i(t){r("bottom"),t.style.marginLeft="".concat(g,"px"),w(t)||t.classList.add(S),t.style.marginTop="".concat(E+d+p,"px")}function c(t){return r("right"),t.style.marginBottom="0",t.style.marginLeft="".concat(y+h,"px"),t.style.bottom="".concat((l-b)/2+f+v,"px"),0}function s(t){r("left"),t.style.marginBottom="0",t.style.marginLeft=m<h?"".concat(h-m-7,"px"):"-".concat(m-h+7,"px"),t.style.bottom="".concat((l-b)/2+f+v,"px")}e.setAttribute("aria-hidden","false"),e.classList.add("is-set");var u=t.offsetWidth,l=t.offsetHeight,d=parseInt(window.getComputedStyle(t).getPropertyValue("margin-top"),10),f=parseInt(window.getComputedStyle(t).getPropertyValue("margin-bottom"),10),p=parseInt(window.getComputedStyle(a).getPropertyValue("padding-top"),10),v=parseInt(window.getComputedStyle(a).getPropertyValue("padding-bottom"),10),b=parseInt(window.getComputedStyle(e).getPropertyValue("height"),10),h=t.offsetLeft,m=e.offsetWidth,g=u/2+h,y=u+5+2,E=l+5+2;switch(n){case"top":o(e),w(e)||i(e);break;case"bottom":i(e),w(e)||o(e);break;case"right":c(e),w(e)||(s(e),w(e)||o(e));break;case"left":s(e),w(e)||(c(e),w(e)||o(e))}setTimeout(function(){e.classList.add(A)},20)}var a=t("../utils/select"),r=t("../utils/behavior"),o=t("../config").prefix,w=t("../utils/is-in-viewport"),i=".".concat(o,"-tooltip"),v="".concat(o,"-tooltip__trigger"),b="".concat(o,"-tooltip"),x="".concat(o,"-tooltip__body"),A="is-visible",S="".concat(o,"-tooltip__body--wrap"),c=r({},{init:function(t){a(i,t).forEach(function(t){var e,n,a,r,o,i,c,s=(e=t,n="tooltip-".concat(Math.floor(9e5*Math.random())+1e5),a=e.getAttribute("title"),r=document.createElement("span"),o=document.createElement("span"),i=e.getAttribute("data-position")?e.getAttribute("data-position"):"top",c=e.getAttribute("data-classes"),e.setAttribute("aria-describedby",n),e.setAttribute("tabindex","0"),e.setAttribute("title",""),e.classList.remove(b),e.classList.add(v),e.parentNode.insertBefore(r,e),r.appendChild(e),r.classList.add(b),r.appendChild(o),c&&c.split(" ").forEach(function(t){return r.classList.add(t)}),o.classList.add(x),o.setAttribute("id",n),o.setAttribute("role","tooltip"),o.setAttribute("aria-hidden","true"),o.innerHTML=a,{tooltipBody:o,position:i,tooltipContent:a,wrapper:r}),u=s.tooltipBody,l=s.position,d=s.wrapper;s.tooltipContent&&(f(t,"mouseenter focus",function(){return p(u,t,l,d),!1}),f(t,"mouseleave blur keydown",function(){var t;return(t=u).classList.remove(A),t.classList.remove("is-set"),t.classList.remove(S),t.setAttribute("aria-hidden","true"),!1}))})}});e.exports=c},{"../config":33,"../utils/behavior":41,"../utils/is-in-viewport":43,"../utils/select":45}],32:[function(t,e,n){"use strict";var a=t("../utils/behavior"),r=t("../utils/validate-input");var o=a({"keyup change":{"input[data-validation-element]":function(){r(this)}}});e.exports=o},{"../utils/behavior":41,"../utils/validate-input":49}],33:[function(t,e,n){"use strict";e.exports={prefix:"usa"}},{}],34:[function(t,e,n){"use strict";e.exports={CLICK:"click"}},{}],35:[function(t,e,n){"use strict";"function"!=typeof window.CustomEvent&&(window.CustomEvent=function(t,e){var n=e||{bubbles:!1,cancelable:!1,detail:null},a=document.createEvent("CustomEvent");return a.initCustomEvent(t,n.bubbles,n.cancelable,n.detail),a})},{}],36:[function(t,e,n){"use strict";var a=window.HTMLElement.prototype,r="hidden";r in a||Object.defineProperty(a,r,{get:function(){return this.hasAttribute(r)},set:function(t){t?this.setAttribute(r,""):this.removeAttribute(r)}})},{}],37:[function(t,e,n){"use strict";t("classlist-polyfill"),t("./element-hidden"),t("./number-is-nan"),t("./custom-event")},{"./custom-event":35,"./element-hidden":36,"./number-is-nan":38,"classlist-polyfill":1}],38:[function(t,e,n){"use strict";Number.isNaN=Number.isNaN||function(t){return"number"==typeof t&&t!=t}},{}],39:[function(t,e,n){"use strict";var a=t("domready");t("./polyfills");var r=t("./config"),o=t("./components");r.components=o,a(function(){var e=document.body;Object.keys(o).forEach(function(t){o[t].on(e)})}),e.exports=r},{"./components":25,"./config":33,"./polyfills":37,domready:2}],40:[function(t,e,n){"use strict";e.exports=function(){return(0<arguments.length&&void 0!==arguments[0]?arguments[0]:document).activeElement}},{}],41:[function(t,e,n){"use strict";function a(){for(var t=arguments.length,a=new Array(t),e=0;e<t;e++)a[e]=arguments[e];return function(t){var e=this,n=0<arguments.length&&void 0!==t?t:document.body;a.forEach(function(t){"function"==typeof e[t]&&e[t].call(e,n)})}}var r=t("object-assign"),o=t("receptor/behavior");e.exports=function(t,e){return o(t,r({on:a("init","add"),off:a("teardown","remove")},e))}},{"object-assign":7,"receptor/behavior":8}],42:[function(t,e,n){"use strict";function i(t){var e=r('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex="0"], [contenteditable]',t),n=e[0],a=e[e.length-1];return{firstTabStop:n,lastTabStop:a,tabAhead:function(t){o()===a&&(t.preventDefault(),n.focus())},tabBack:function(t){o()===n&&(t.preventDefault(),a.focus())}}}var c=t("object-assign"),s=t("receptor").keymap,u=t("./behavior"),r=t("./select"),o=t("./active-element");e.exports=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=i(t),a=e.Esc,r=e.Escape;r&&!a&&(e.Esc=r);var o=s(c({Tab:n.tabAhead,"Shift+Tab":n.tabBack},e));return u({keydown:o},{init:function(){n.firstTabStop.focus()},update:function(t){t?this.on():this.off()}})}},{"./active-element":40,"./behavior":41,"./select":45,"object-assign":7,receptor:13}],43:[function(t,e,n){"use strict";e.exports=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:window,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:document.documentElement,a=t.getBoundingClientRect();return 0<=a.top&&0<=a.left&&a.bottom<=(e.innerHeight||n.clientHeight)&&a.right<=(e.innerWidth||n.clientWidth)}},{}],44:[function(t,e,n){"use strict";e.exports=function(){return"undefined"!=typeof navigator&&(navigator.userAgent.match(/(iPod|iPhone|iPad)/g)||"MacIntel"===navigator.platform&&1<navigator.maxTouchPoints)&&!window.MSStream}},{}],45:[function(t,e,n){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}e.exports=function(t,e){if("string"!=typeof t)return[];var n;e&&((n=e)&&"object"===r(n)&&1===n.nodeType)||(e=window.document);var a=e.querySelectorAll(t);return Array.prototype.slice.call(a)}},{}],46:[function(t,e,n){"use strict";e.exports=function(t,e){t.setAttribute("autocapitalize","off"),t.setAttribute("autocorrect","off"),t.setAttribute("type",e?"password":"text")}},{}],47:[function(t,e,n){"use strict";var r=t("resolve-id-refs"),o=t("./toggle-field-mask"),i="aria-pressed",c="data-show-text";e.exports=function(t){var e=t.hasAttribute(i)&&"true"!==t.getAttribute(i);r(t.getAttribute("aria-controls")).forEach(function(t){return o(t,e)}),t.hasAttribute(c)||t.setAttribute(c,t.textContent);var n=t.getAttribute(c),a=t.getAttribute("data-hide-text")||n.replace(/\bShow\b/i,function(t){return"".concat("S"===t[0]?"H":"h","ide")});return t.textContent=e?n:a,t.setAttribute(i,e),e}},{"./toggle-field-mask":46,"resolve-id-refs":16}],48:[function(t,e,n){"use strict";var o="aria-expanded";e.exports=function(t,e){var n=e;"boolean"!=typeof n&&(n="false"===t.getAttribute(o)),t.setAttribute(o,n);var a=t.getAttribute("aria-controls"),r=document.getElementById(a);if(!r)throw new Error('No toggle target found with id: "'.concat(a,'"'));return n?r.removeAttribute("hidden"):r.setAttribute("hidden",""),n}},{}],49:[function(t,e,n){"use strict";function d(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var n=[],a=!0,r=!1,o=void 0;try{for(var i,c=t[Symbol.iterator]();!(a=(i=c.next()).done)&&(n.push(i.value),!e||n.length!==e);a=!0);}catch(t){r=!0,o=t}finally{try{a||null==c.return||c.return()}finally{if(r)throw o}}return n}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return a(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return a(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,a=new Array(e);n<e;n++)a[n]=t[n];return a}var r=t("elem-dataset"),o=t("../config").prefix,f="".concat(o,"-checklist__item--checked");e.exports=function(u){var t=r(u),e=t.validationElement,l="#"===e.charAt(0)?document.querySelector(e):document.getElementById(e);if(!l)throw new Error('No validation element found with id: "'.concat(e,'"'));Object.entries(t).forEach(function(t){var e=d(t,2),n=e[0],a=e[1];if(n.startsWith("validate")){var r=n.substr("validate".length).toLowerCase(),o=new RegExp(a),i='[data-validator="'.concat(r,'"]'),c=l.querySelector(i);if(!c)throw new Error('No validator checkbox found for: "'.concat(r,'"'));var s=o.test(u.value);c.classList.toggle(f,s),c.setAttribute("aria-checked",s)}})}},{"../config":33,"elem-dataset":3}]},{},[39]);
2
2
  //# sourceMappingURL=uswds.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["node_modules/browser-pack/_prelude.js","uswds.js","node_modules/array-filter/index.js","node_modules/array-foreach/index.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/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/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/behavior.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":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","arr","fn","self","filter","TypeError","ret","hasOwn","val","push","Object","prototype","hasOwnProperty","2","ary","callback","thisArg","forEach","3","window","document","createElement","createElementNS","view","classListProp","protoProp","elemCtrProto","Element","objCtr","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","_updateClassName","setAttribute","toString","classListProto","classListGetter","contains","add","tokens","arguments","updated","remove","index","splice","toggle","force","result","method","join","defineProperty","classListPropDesc","get","enumerable","configurable","ex","undefined","number","__defineGetter__","testElement","createMethod","original","DOMTokenList","_toggle","4","_typeof","Symbol","iterator","obj","constructor","definition","define","amd","_listener","fns","doc","hack","documentElement","doScroll","domContentLoaded","loaded","readyState","addEventListener","removeEventListener","shift","setTimeout","5","useNative","Boolean","dataset","aB","nativeDataset","element","getter","value","setter","removeAttribute","map","attributes","j","attribute","prop","slice","charAt","toUpperCase","bind","set","6","ElementProto","matches","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","selector","elements","ownerDocument","querySelectorAll","closest","nodeType","parentNode","7","global","debounce","func","wait","options","invokeFunc","time","args","lastArgs","lastThis","lastInvokeTime","apply","leadingEdge","timerId","timerExpired","leading","remainingWait","timeSinceLastCall","lastCallTime","timeSinceLastInvoke","maxing","nativeMin","maxWait","shouldInvoke","now","trailingEdge","trailing","cancel","clearTimeout","flush","debounced","isInvoking","FUNC_ERROR_TEXT","toNumber","isObject","nativeMax","isObjectLike","isSymbol","objectToString","symbolTag","NAN","other","valueOf","reTrim","isBinary","reIsBinary","reIsOctal","freeParseInt","reIsBadHex","parseInt","freeGlobal","freeSelf","root","Function","objectProto","Math","max","min","Date","8","toObject","shouldUseNative","assign","test1","getOwnPropertyNames","test2","fromCharCode","order2","test3","letter","keys","err","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","target","source","from","symbols","to","key","9","delegate","delegateAll","DELEGATE_PATTERN","SPACE","getListeners","handler","match","capture","popKey","passive","listener","_type","events","props","listeners","reduce","memo","concat","../delegate","../delegateAll","object-assign","10","functions","some","11","event","element-closest","12","compose","SPLAT","selectors","delegates","../compose","13","14","wrapped","currentTarget","15","RE_TRIM","RE_SPLIT","str","queryById","id","querySelector","ids","getElementById","el","16","_defineProperty","writable","behavior","isElementInViewport","CLICK","PREFIX","prefix","ACCORDION","BUTTON","EXPANDED","MULTISELECTABLE","toggleButton","button","expanded","accordion","multiselectable","getAccordionButtons","showButton","hideButton","preventDefault","scrollIntoView","init","show","hide","getButtons","Accordion","on","off","../config","../events","../utils/behavior","../utils/is-in-viewport","../utils/toggle","array-filter","array-foreach","17","HEADER","EXPANDED_CLASS","toggleBanner","18","select","HIDDEN","SCOPE","NAV","LIST","HIDE_MAX_WIDTH","DEBOUNCE_RATE","showPanel","list","lists","resize","hidden","innerWidth","teardown","../utils/select","./accordion","lodash.debounce","19","banner","footer","navigation","password","search","skipnav","validator","./banner","./footer","./navigation","./password","./search","./skipnav","./validator","20","_CLICK","NAV_LINKS","OPENERS","CLOSE_BUTTON","OVERLAY","CLOSERS","TOGGLES","ACTIVE_CLASS","VISIBLE_CLASS","isActive","body","toggleNav","active","closeButton","menuButton","focus","activeElement","closer","getBoundingClientRect","width","acc","btn","21","toggleFormInput","LINK","../utils/toggle-form-input","22","ignore","FORM","INPUT","CONTEXT","VISUALLY_HIDDEN","lastButton","showSearch","toggleSearch","hideSearch","getForm","context","form","input","receptor/ignore","23","once","setTabindex","receptor/once","24","validate","change","keyup change","input[data-validation-element]","../utils/validate-input","25","26","27","elproto","HTMLElement","hasAttribute","28","./element-hidden","classlist-polyfill","29","domready","uswds","components","./components","./config","./polyfills","30","Behavior","sequence","seq","_this","receptor/behavior","31","win","docEl","rect","top","left","bottom","innerHeight","clientHeight","right","clientWidth","32","isElement","selection","33","field","mask","34","resolveIdRefs","toggleFieldMask","CONTROLS","PRESSED","SHOW_ATTR","HIDE_ATTR","getHideText","showText","pressed","fields","textContent","hideText","./select","./toggle-field-mask","resolve-id-refs","35","controls","36","CHECKED","CHECKED_CLASS","data","validationElement","checkList","startsWith","validatorName","substr","toLowerCase","validatorPattern","RegExp","validatorSelector","validatorCheckbox","checked","elem-dataset"],"mappings":"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","file":"uswds.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})","(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n'use strict';\n\n/**\n * Array#filter.\n *\n * @param {Array} arr\n * @param {Function} fn\n * @param {Object=} self\n * @return {Array}\n * @throw TypeError\n */\n\nmodule.exports = function (arr, fn, self) {\n if (arr.filter) return arr.filter(fn, self);\n if (void 0 === arr || null === arr) throw new TypeError();\n if ('function' != typeof fn) throw new TypeError();\n var ret = [];\n for (var i = 0; i < arr.length; i++) {\n if (!hasOwn.call(arr, i)) continue;\n var val = arr[i];\n if (fn.call(self, val, i, arr)) ret.push(val);\n }\n return ret;\n};\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\n},{}],2:[function(require,module,exports){\n/**\n * array-foreach\n * Array#forEach ponyfill for older browsers\n * (Ponyfill: A polyfill that doesn't overwrite the native method)\n * \n * https://github.com/twada/array-foreach\n *\n * Copyright (c) 2015-2016 Takuto Wada\n * Licensed under the MIT license.\n * https://github.com/twada/array-foreach/blob/master/MIT-LICENSE\n */\n'use strict';\n\nmodule.exports = function forEach(ary, callback, thisArg) {\n if (ary.forEach) {\n ary.forEach(callback, thisArg);\n return;\n }\n for (var i = 0; i < ary.length; i += 1) {\n callback.call(thisArg, ary[i], i, ary);\n }\n};\n\n},{}],3:[function(require,module,exports){\n\"use strict\";\n\n/*\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\t// Full polyfill for browsers with no classList support\n\t// Including IE < Edge missing SVGElement.classList\n\tif (!(\"classList\" in document.createElement(\"_\")) || document.createElementNS && !(\"classList\" in document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\"))) {\n\n\t\t(function (view) {\n\n\t\t\t\"use strict\";\n\n\t\t\tif (!('Element' in view)) return;\n\n\t\t\tvar classListProp = \"classList\",\n\t\t\t protoProp = \"prototype\",\n\t\t\t elemCtrProto = view.Element[protoProp],\n\t\t\t objCtr = Object,\n\t\t\t strTrim = String[protoProp].trim || function () {\n\t\t\t\treturn this.replace(/^\\s+|\\s+$/g, \"\");\n\t\t\t},\n\t\t\t arrIndexOf = Array[protoProp].indexOf || function (item) {\n\t\t\t\tvar i = 0,\n\t\t\t\t len = this.length;\n\t\t\t\tfor (; i < len; i++) {\n\t\t\t\t\tif (i in this && this[i] === item) {\n\t\t\t\t\t\treturn i;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\t// Vendors: please allow content code to instantiate DOMExceptions\n\t\t\t,\n\t\t\t DOMEx = function DOMEx(type, message) {\n\t\t\t\tthis.name = type;\n\t\t\t\tthis.code = DOMException[type];\n\t\t\t\tthis.message = message;\n\t\t\t},\n\t\t\t checkTokenAndGetIndex = function checkTokenAndGetIndex(classList, token) {\n\t\t\t\tif (token === \"\") {\n\t\t\t\t\tthrow new DOMEx(\"SYNTAX_ERR\", \"An invalid or illegal string was specified\");\n\t\t\t\t}\n\t\t\t\tif (/\\s/.test(token)) {\n\t\t\t\t\tthrow new DOMEx(\"INVALID_CHARACTER_ERR\", \"String contains an invalid character\");\n\t\t\t\t}\n\t\t\t\treturn arrIndexOf.call(classList, token);\n\t\t\t},\n\t\t\t ClassList = function ClassList(elem) {\n\t\t\t\tvar trimmedClasses = strTrim.call(elem.getAttribute(\"class\") || \"\"),\n\t\t\t\t classes = trimmedClasses ? trimmedClasses.split(/\\s+/) : [],\n\t\t\t\t i = 0,\n\t\t\t\t len = classes.length;\n\t\t\t\tfor (; i < len; i++) {\n\t\t\t\t\tthis.push(classes[i]);\n\t\t\t\t}\n\t\t\t\tthis._updateClassName = function () {\n\t\t\t\t\telem.setAttribute(\"class\", this.toString());\n\t\t\t\t};\n\t\t\t},\n\t\t\t classListProto = ClassList[protoProp] = [],\n\t\t\t classListGetter = function classListGetter() {\n\t\t\t\treturn new ClassList(this);\n\t\t\t};\n\t\t\t// Most DOMException implementations don't allow calling DOMException's toString()\n\t\t\t// on non-DOMExceptions. Error's toString() is sufficient here.\n\t\t\tDOMEx[protoProp] = Error[protoProp];\n\t\t\tclassListProto.item = function (i) {\n\t\t\t\treturn this[i] || null;\n\t\t\t};\n\t\t\tclassListProto.contains = function (token) {\n\t\t\t\ttoken += \"\";\n\t\t\t\treturn checkTokenAndGetIndex(this, token) !== -1;\n\t\t\t};\n\t\t\tclassListProto.add = function () {\n\t\t\t\tvar tokens = arguments,\n\t\t\t\t i = 0,\n\t\t\t\t l = tokens.length,\n\t\t\t\t token,\n\t\t\t\t updated = false;\n\t\t\t\tdo {\n\t\t\t\t\ttoken = tokens[i] + \"\";\n\t\t\t\t\tif (checkTokenAndGetIndex(this, token) === -1) {\n\t\t\t\t\t\tthis.push(token);\n\t\t\t\t\t\tupdated = true;\n\t\t\t\t\t}\n\t\t\t\t} while (++i < l);\n\n\t\t\t\tif (updated) {\n\t\t\t\t\tthis._updateClassName();\n\t\t\t\t}\n\t\t\t};\n\t\t\tclassListProto.remove = function () {\n\t\t\t\tvar tokens = arguments,\n\t\t\t\t i = 0,\n\t\t\t\t l = tokens.length,\n\t\t\t\t token,\n\t\t\t\t updated = false,\n\t\t\t\t index;\n\t\t\t\tdo {\n\t\t\t\t\ttoken = tokens[i] + \"\";\n\t\t\t\t\tindex = checkTokenAndGetIndex(this, token);\n\t\t\t\t\twhile (index !== -1) {\n\t\t\t\t\t\tthis.splice(index, 1);\n\t\t\t\t\t\tupdated = true;\n\t\t\t\t\t\tindex = checkTokenAndGetIndex(this, token);\n\t\t\t\t\t}\n\t\t\t\t} while (++i < l);\n\n\t\t\t\tif (updated) {\n\t\t\t\t\tthis._updateClassName();\n\t\t\t\t}\n\t\t\t};\n\t\t\tclassListProto.toggle = function (token, force) {\n\t\t\t\ttoken += \"\";\n\n\t\t\t\tvar result = this.contains(token),\n\t\t\t\t method = result ? force !== true && \"remove\" : force !== false && \"add\";\n\n\t\t\t\tif (method) {\n\t\t\t\t\tthis[method](token);\n\t\t\t\t}\n\n\t\t\t\tif (force === true || force === false) {\n\t\t\t\t\treturn force;\n\t\t\t\t} else {\n\t\t\t\t\treturn !result;\n\t\t\t\t}\n\t\t\t};\n\t\t\tclassListProto.toString = function () {\n\t\t\t\treturn this.join(\" \");\n\t\t\t};\n\n\t\t\tif (objCtr.defineProperty) {\n\t\t\t\tvar classListPropDesc = {\n\t\t\t\t\tget: classListGetter,\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true\n\t\t\t\t};\n\t\t\t\ttry {\n\t\t\t\t\tobjCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n\t\t\t\t} catch (ex) {\n\t\t\t\t\t// IE 8 doesn't support enumerable:true\n\t\t\t\t\t// adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36\n\t\t\t\t\t// modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected\n\t\t\t\t\tif (ex.number === undefined || ex.number === -0x7FF5EC54) {\n\t\t\t\t\t\tclassListPropDesc.enumerable = false;\n\t\t\t\t\t\tobjCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (objCtr[protoProp].__defineGetter__) {\n\t\t\t\telemCtrProto.__defineGetter__(classListProp, classListGetter);\n\t\t\t}\n\t\t})(window.self);\n\t}\n\n\t// There is full or partial native classList support, so just check if we need\n\t// to normalize the add/remove and toggle APIs.\n\n\t(function () {\n\t\t\"use strict\";\n\n\t\tvar testElement = document.createElement(\"_\");\n\n\t\ttestElement.classList.add(\"c1\", \"c2\");\n\n\t\t// Polyfill for IE 10/11 and Firefox <26, where classList.add and\n\t\t// classList.remove exist but support only one argument at a time.\n\t\tif (!testElement.classList.contains(\"c2\")) {\n\t\t\tvar createMethod = function createMethod(method) {\n\t\t\t\tvar original = DOMTokenList.prototype[method];\n\n\t\t\t\tDOMTokenList.prototype[method] = function (token) {\n\t\t\t\t\tvar i,\n\t\t\t\t\t len = arguments.length;\n\n\t\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\t\ttoken = arguments[i];\n\t\t\t\t\t\toriginal.call(this, token);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t\tcreateMethod('add');\n\t\t\tcreateMethod('remove');\n\t\t}\n\n\t\ttestElement.classList.toggle(\"c3\", false);\n\n\t\t// Polyfill for IE 10 and Firefox <24, where classList.toggle does not\n\t\t// support the second argument.\n\t\tif (testElement.classList.contains(\"c3\")) {\n\t\t\tvar _toggle = DOMTokenList.prototype.toggle;\n\n\t\t\tDOMTokenList.prototype.toggle = function (token, force) {\n\t\t\t\tif (1 in arguments && !this.contains(token) === !force) {\n\t\t\t\t\treturn force;\n\t\t\t\t} else {\n\t\t\t\t\treturn _toggle.call(this, token);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\ttestElement = null;\n\t})();\n}\n\n},{}],4:[function(require,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*!\n * domready (c) Dustin Diaz 2014 - License MIT\n */\n!function (name, definition) {\n\n if (typeof module != 'undefined') module.exports = definition();else if (typeof define == 'function' && _typeof(define.amd) == 'object') define(definition);else this[name] = definition();\n}('domready', function () {\n\n var fns = [],\n _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 if (!loaded) doc.addEventListener(domContentLoaded, _listener = function listener() {\n doc.removeEventListener(domContentLoaded, _listener);\n loaded = 1;\n while (_listener = fns.shift()) {\n _listener();\n }\n });\n\n return function (fn) {\n loaded ? setTimeout(fn, 0) : fns.push(fn);\n };\n});\n\n},{}],5:[function(require,module,exports){\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},{}],6:[function(require,module,exports){\n'use strict';\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\n},{}],7:[function(require,module,exports){\n(function (global){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\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 === 'undefined' ? 'undefined' : _typeof(global)) == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = (typeof self === 'undefined' ? 'undefined' : _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 now() {\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 || 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 === 'undefined' ? 'undefined' : _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 === 'undefined' ? 'undefined' : _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 === 'undefined' ? 'undefined' : _typeof(value)) == 'symbol' || 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) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\nmodule.exports = debounce;\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],8:[function(require,module,exports){\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\n\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('') !== '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\n},{}],9:[function(require,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar assign = require('object-assign');\nvar delegate = require('../delegate');\nvar delegateAll = require('../delegateAll');\n\nvar DELEGATE_PATTERN = /^(.+):delegate\\((.+)\\)$/;\nvar SPACE = ' ';\n\nvar getListeners = function getListeners(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 === 'undefined' ? 'undefined' : _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 === 'undefined' ? 'undefined' : _typeof(handler)) === 'object' ? delegateAll(handler) : selector ? delegate(selector, handler) : 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 popKey(obj, key) {\n var value = obj[key];\n delete obj[key];\n return value;\n};\n\nmodule.exports = function behavior(events, props) {\n var listeners = Object.keys(events).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(listener.type, listener.delegate, listener.options);\n });\n },\n remove: function removeBehavior(element) {\n listeners.forEach(function (listener) {\n element.removeEventListener(listener.type, listener.delegate, listener.options);\n });\n }\n }, props);\n};\n\n},{\"../delegate\":11,\"../delegateAll\":12,\"object-assign\":8}],10:[function(require,module,exports){\n\"use strict\";\n\nmodule.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\n},{}],11:[function(require,module,exports){\n'use strict';\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\n},{\"element-closest\":6}],12:[function(require,module,exports){\n'use strict';\n\nvar delegate = require('../delegate');\nvar compose = require('../compose');\n\nvar SPLAT = '*';\n\nmodule.exports = function delegateAll(selectors) {\n var 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 var delegates = keys.reduce(function (memo, selector) {\n memo.push(delegate(selector, selectors[selector]));\n return memo;\n }, []);\n return compose(delegates);\n};\n\n},{\"../compose\":10,\"../delegate\":11}],13:[function(require,module,exports){\n\"use strict\";\n\nmodule.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\n},{}],14:[function(require,module,exports){\n\"use strict\";\n\nmodule.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},{}],15:[function(require,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar RE_TRIM = /(^\\s+)|(\\s+$)/g;\nvar RE_SPLIT = /\\s+/;\n\nvar trim = String.prototype.trim ? function (str) {\n return str.trim();\n} : function (str) {\n return str.replace(RE_TRIM, '');\n};\n\nvar queryById = function queryById(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 === 'undefined' ? 'undefined' : _typeof(ids)));\n }\n\n if (!doc) {\n doc = window.document;\n }\n\n var getElementById = doc.getElementById ? doc.getElementById.bind(doc) : 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.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\n},{}],16:[function(require,module,exports){\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar behavior = require('../utils/behavior');\nvar filter = require('array-filter');\nvar forEach = require('array-foreach');\nvar toggle = require('../utils/toggle');\nvar isElementInViewport = require('../utils/is-in-viewport');\n\nvar CLICK = require('../events').CLICK;\nvar PREFIX = require('../config').prefix;\n\n// XXX match .usa-accordion and .usa-accordion-bordered\nvar ACCORDION = '.' + PREFIX + '-accordion, .' + PREFIX + '-accordion-bordered';\nvar BUTTON = '.' + PREFIX + '-accordion-button[aria-controls]';\nvar EXPANDED = 'aria-expanded';\nvar MULTISELECTABLE = 'aria-multiselectable';\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 */\nvar toggleButton = function toggleButton(button, expanded) {\n var accordion = button.closest(ACCORDION);\n if (!accordion) {\n throw new Error(BUTTON + ' is missing outer ' + ACCORDION);\n }\n\n expanded = toggle(button, expanded);\n // XXX multiselectable is opt-in, to preserve legacy behavior\n var multiselectable = accordion.getAttribute(MULTISELECTABLE) === 'true';\n\n if (expanded && !multiselectable) {\n forEach(getAccordionButtons(accordion), function (other) {\n if (other !== button) {\n toggle(other, false);\n }\n });\n }\n};\n\n/**\n * @param {HTMLButtonElement} button\n * @return {boolean} true\n */\nvar showButton = function showButton(button) {\n return toggleButton(button, true);\n};\n\n/**\n * @param {HTMLButtonElement} button\n * @return {boolean} false\n */\nvar hideButton = function hideButton(button) {\n return toggleButton(button, false);\n};\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 */\nvar getAccordionButtons = function getAccordionButtons(accordion) {\n return filter(accordion.querySelectorAll(BUTTON), function (button) {\n return button.closest(ACCORDION) === accordion;\n });\n};\n\nvar accordion = behavior(_defineProperty({}, CLICK, _defineProperty({}, BUTTON, function (event) {\n event.preventDefault();\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 init: function init(root) {\n forEach(root.querySelectorAll(BUTTON), function (button) {\n var expanded = button.getAttribute(EXPANDED) === 'true';\n toggleButton(button, expanded);\n });\n },\n ACCORDION: ACCORDION,\n BUTTON: BUTTON,\n show: showButton,\n hide: hideButton,\n toggle: toggleButton,\n getButtons: getAccordionButtons\n});\n\n/**\n * TODO: for 2.0, remove everything below this comment and export the\n * behavior directly:\n *\n * module.exports = behavior({...});\n */\nvar Accordion = function Accordion(root) {\n this.root = root;\n accordion.on(this.root);\n};\n\n// copy all of the behavior methods and props to Accordion\nvar assign = require('object-assign');\nassign(Accordion, accordion);\n\nAccordion.prototype.show = showButton;\nAccordion.prototype.hide = hideButton;\n\nAccordion.prototype.remove = function () {\n accordion.off(this.root);\n};\n\nmodule.exports = Accordion;\n\n},{\"../config\":25,\"../events\":26,\"../utils/behavior\":30,\"../utils/is-in-viewport\":31,\"../utils/toggle\":35,\"array-filter\":1,\"array-foreach\":2,\"object-assign\":8}],17:[function(require,module,exports){\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar behavior = require('../utils/behavior');\nvar toggle = require('../utils/toggle');\n\nvar CLICK = require('../events').CLICK;\nvar PREFIX = require('../config').prefix;\n\nvar HEADER = '.' + PREFIX + '-banner-header';\nvar EXPANDED_CLASS = PREFIX + '-banner-header-expanded';\n\nvar toggleBanner = function toggleBanner(event) {\n event.preventDefault();\n this.closest(HEADER).classList.toggle(EXPANDED_CLASS);\n return false;\n};\n\nmodule.exports = behavior(_defineProperty({}, CLICK, _defineProperty({}, HEADER + ' [aria-controls]', toggleBanner)));\n\n},{\"../config\":25,\"../events\":26,\"../utils/behavior\":30,\"../utils/toggle\":35}],18:[function(require,module,exports){\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar accordion = require('./accordion');\nvar behavior = require('../utils/behavior');\nvar debounce = require('lodash.debounce');\nvar forEach = require('array-foreach');\nvar select = require('../utils/select');\n\nvar CLICK = require('../events').CLICK;\nvar PREFIX = require('../config').prefix;\n\nvar HIDDEN = 'hidden';\nvar SCOPE = '.' + PREFIX + '-footer-big';\nvar NAV = SCOPE + ' nav';\nvar BUTTON = NAV + ' .' + PREFIX + '-footer-primary-link';\nvar LIST = NAV + ' ul';\n\nvar HIDE_MAX_WIDTH = 600;\nvar DEBOUNCE_RATE = 180;\n\nvar showPanel = function showPanel() {\n var list = this.closest(LIST);\n list.classList.remove(HIDDEN);\n\n // NB: this *should* always succeed because the button\n // selector is scoped to \".{prefix}-footer-big nav\"\n var lists = list.closest(NAV).querySelectorAll('ul');\n\n forEach(lists, function (el) {\n if (el !== list) {\n el.classList.add(HIDDEN);\n }\n });\n};\n\nvar resize = debounce(function () {\n var hidden = window.innerWidth < HIDE_MAX_WIDTH;\n forEach(select(LIST), function (list) {\n list.classList.toggle(HIDDEN, hidden);\n });\n}, DEBOUNCE_RATE);\n\nmodule.exports = behavior(_defineProperty({}, CLICK, _defineProperty({}, BUTTON, showPanel)), {\n // export for use elsewhere\n HIDE_MAX_WIDTH: HIDE_MAX_WIDTH,\n DEBOUNCE_RATE: DEBOUNCE_RATE,\n\n init: function init(target) {\n resize();\n window.addEventListener('resize', resize);\n },\n\n teardown: function teardown(target) {\n window.removeEventListener('resize', resize);\n }\n});\n\n},{\"../config\":25,\"../events\":26,\"../utils/behavior\":30,\"../utils/select\":32,\"./accordion\":16,\"array-foreach\":2,\"lodash.debounce\":7}],19:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n accordion: require('./accordion'),\n banner: require('./banner'),\n footer: require('./footer'),\n navigation: require('./navigation'),\n password: require('./password'),\n search: require('./search'),\n skipnav: require('./skipnav'),\n validator: require('./validator')\n};\n\n},{\"./accordion\":16,\"./banner\":17,\"./footer\":18,\"./navigation\":20,\"./password\":21,\"./search\":22,\"./skipnav\":23,\"./validator\":24}],20:[function(require,module,exports){\n'use strict';\n\nvar _CLICK;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar behavior = require('../utils/behavior');\nvar forEach = require('array-foreach');\nvar select = require('../utils/select');\nvar accordion = require('./accordion');\n\nvar CLICK = require('../events').CLICK;\nvar PREFIX = require('../config').prefix;\n\nvar NAV = '.' + PREFIX + '-nav';\nvar NAV_LINKS = NAV + ' a';\nvar OPENERS = '.' + PREFIX + '-menu-btn';\nvar CLOSE_BUTTON = '.' + PREFIX + '-nav-close';\nvar OVERLAY = '.' + PREFIX + '-overlay';\nvar CLOSERS = CLOSE_BUTTON + ', .' + PREFIX + '-overlay';\nvar TOGGLES = [NAV, OVERLAY].join(', ');\n\nvar ACTIVE_CLASS = 'usa-mobile_nav-active';\nvar VISIBLE_CLASS = 'is-visible';\n\nvar isActive = function isActive() {\n return document.body.classList.contains(ACTIVE_CLASS);\n};\n\nvar toggleNav = function toggleNav(active) {\n var body = document.body;\n if (typeof active !== 'boolean') {\n active = !isActive();\n }\n body.classList.toggle(ACTIVE_CLASS, active);\n\n forEach(select(TOGGLES), function (el) {\n el.classList.toggle(VISIBLE_CLASS, active);\n });\n\n var closeButton = body.querySelector(CLOSE_BUTTON);\n var menuButton = body.querySelector(OPENERS);\n\n if (active && 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 (!active && document.activeElement === closeButton && menuButton) {\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 active;\n};\n\nvar resize = function resize() {\n var closer = document.body.querySelector(CLOSE_BUTTON);\n\n if (isActive() && closer && closer.getBoundingClientRect().width === 0) {\n // The mobile nav is active, but the close box isn't visible, which\n // means the user's viewport has been resized so that it is no longer\n // in mobile mode. Let's make the page state consistent by\n // deactivating the mobile nav.\n toggleNav.call(closer, false);\n }\n};\n\nvar navigation = behavior(_defineProperty({}, CLICK, (_CLICK = {}, _defineProperty(_CLICK, OPENERS, toggleNav), _defineProperty(_CLICK, CLOSERS, toggleNav), _defineProperty(_CLICK, NAV_LINKS, function () {\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 var acc = this.closest(accordion.ACCORDION);\n if (acc) {\n accordion.getButtons(acc).forEach(function (btn) {\n return accordion.hide(btn);\n });\n }\n\n // If the mobile navigation menu is active, we want to hide it.\n if (isActive()) {\n toggleNav.call(this, false);\n }\n}), _CLICK)), {\n init: function init() {\n resize();\n window.addEventListener('resize', resize, false);\n },\n teardown: function teardown() {\n window.removeEventListener('resize', resize, false);\n }\n});\n\n/**\n * TODO for 2.0, remove this statement and export `navigation` directly:\n *\n * module.exports = behavior({...});\n */\nvar assign = require('object-assign');\nmodule.exports = assign(function (el) {\n return navigation.on(el);\n}, navigation);\n\n},{\"../config\":25,\"../events\":26,\"../utils/behavior\":30,\"../utils/select\":32,\"./accordion\":16,\"array-foreach\":2,\"object-assign\":8}],21:[function(require,module,exports){\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar behavior = require('../utils/behavior');\nvar toggleFormInput = require('../utils/toggle-form-input');\n\nvar CLICK = require('../events').CLICK;\nvar PREFIX = require('../config').prefix;\n\nvar LINK = '.' + PREFIX + '-show_password, .' + PREFIX + '-show_multipassword';\n\nvar toggle = function toggle(event) {\n event.preventDefault();\n toggleFormInput(this);\n};\n\nmodule.exports = behavior(_defineProperty({}, CLICK, _defineProperty({}, LINK, toggle)));\n\n},{\"../config\":25,\"../events\":26,\"../utils/behavior\":30,\"../utils/toggle-form-input\":34}],22:[function(require,module,exports){\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar behavior = require('../utils/behavior');\nvar forEach = require('array-foreach');\nvar ignore = require('receptor/ignore');\nvar select = require('../utils/select');\n\nvar CLICK = require('../events').CLICK;\nvar PREFIX = require('../config').prefix;\n\nvar BUTTON = '.js-search-button';\nvar FORM = '.js-search-form';\nvar INPUT = '[type=search]';\nvar CONTEXT = 'header'; // XXX\nvar VISUALLY_HIDDEN = PREFIX + '-sr-only';\n\nvar lastButton = void 0;\n\nvar showSearch = function showSearch(event) {\n toggleSearch(this, true);\n lastButton = this;\n};\n\nvar hideSearch = function hideSearch(event) {\n toggleSearch(this, false);\n lastButton = undefined;\n};\n\nvar getForm = function getForm(button) {\n var context = button.closest(CONTEXT);\n return context ? context.querySelector(FORM) : document.querySelector(FORM);\n};\n\nvar toggleSearch = function toggleSearch(button, active) {\n var form = getForm(button);\n if (!form) {\n throw new Error('No ' + FORM + ' found for search toggle in ' + CONTEXT + '!');\n }\n\n button.hidden = active;\n form.classList.toggle(VISUALLY_HIDDEN, !active);\n\n if (active) {\n var input = form.querySelector(INPUT);\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 var listener = ignore(form, function (e) {\n if (lastButton) {\n hideSearch.call(lastButton);\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(function () {\n document.body.addEventListener(CLICK, listener);\n }, 0);\n }\n};\n\nvar search = behavior(_defineProperty({}, CLICK, _defineProperty({}, BUTTON, showSearch)), {\n init: function init(target) {\n forEach(select(BUTTON, target), function (button) {\n toggleSearch(button, false);\n });\n },\n teardown: function teardown(target) {\n // forget the last button clicked\n lastButton = undefined;\n }\n});\n\n/**\n * TODO for 2.0, remove this statement and export `navigation` directly:\n *\n * module.exports = behavior({...});\n */\nvar assign = require('object-assign');\nmodule.exports = assign(function (el) {\n return search.on(el);\n}, search);\n\n},{\"../config\":25,\"../events\":26,\"../utils/behavior\":30,\"../utils/select\":32,\"array-foreach\":2,\"object-assign\":8,\"receptor/ignore\":13}],23:[function(require,module,exports){\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar behavior = require('../utils/behavior');\nvar once = require('receptor/once');\n\nvar CLICK = require('../events').CLICK;\nvar PREFIX = require('../config').prefix;\nvar LINK = '.' + PREFIX + '-skipnav[href^=\"#\"]';\n\nvar setTabindex = function setTabindex(event) {\n // NB: we know because of the selector we're delegating to below that the\n // href already begins with '#'\n var id = this.getAttribute('href').slice(1);\n var target = document.getElementById(id);\n if (target) {\n target.setAttribute('tabindex', 0);\n target.addEventListener('blur', once(function (event) {\n target.setAttribute('tabindex', -1);\n }));\n } else {\n // throw an error?\n }\n};\n\nmodule.exports = behavior(_defineProperty({}, CLICK, _defineProperty({}, LINK, setTabindex)));\n\n},{\"../config\":25,\"../events\":26,\"../utils/behavior\":30,\"receptor/once\":14}],24:[function(require,module,exports){\n'use strict';\n\nvar behavior = require('../utils/behavior');\nvar validate = require('../utils/validate-input');\nvar debounce = require('lodash.debounce');\n\nvar change = function change(event) {\n return validate(this);\n};\n\nvar validator = behavior({\n 'keyup change': {\n 'input[data-validation-element]': change\n }\n});\n\n/**\n * TODO for 2.0, remove this statement and export `navigation` directly:\n *\n * module.exports = behavior({...});\n */\nvar assign = require('object-assign');\nmodule.exports = assign(function (el) {\n return validator.on(el);\n}, validator);\n\n},{\"../utils/behavior\":30,\"../utils/validate-input\":36,\"lodash.debounce\":7,\"object-assign\":8}],25:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n prefix: 'usa'\n};\n\n},{}],26:[function(require,module,exports){\n'use strict';\n\nmodule.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\n},{}],27:[function(require,module,exports){\n'use strict';\n\nvar elproto = window.HTMLElement.prototype;\nvar HIDDEN = 'hidden';\n\nif (!(HIDDEN in elproto)) {\n Object.defineProperty(elproto, HIDDEN, {\n get: function get() {\n return this.hasAttribute(HIDDEN);\n },\n set: function set(value) {\n if (value) {\n this.setAttribute(HIDDEN, '');\n } else {\n this.removeAttribute(HIDDEN);\n }\n }\n });\n}\n\n},{}],28:[function(require,module,exports){\n'use strict';\n// polyfills HTMLElement.prototype.classList and DOMTokenList\n\nrequire('classlist-polyfill');\n// polyfills HTMLElement.prototype.hidden\nrequire('./element-hidden');\n\n},{\"./element-hidden\":27,\"classlist-polyfill\":3}],29:[function(require,module,exports){\n'use strict';\n\nvar 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\nvar uswds = require('./config');\n\nvar components = require('./components');\nuswds.components = components;\n\ndomready(function () {\n var target = document.body;\n for (var name in components) {\n var behavior = components[name];\n behavior.on(target);\n }\n});\n\nmodule.exports = uswds;\n\n},{\"./components\":19,\"./config\":25,\"./polyfills\":28,\"domready\":4}],30:[function(require,module,exports){\n'use strict';\n\nvar assign = require('object-assign');\nvar forEach = require('array-foreach');\nvar Behavior = require('receptor/behavior');\n\nvar sequence = function sequence() {\n var seq = [].slice.call(arguments);\n return function (target) {\n var _this = this;\n\n if (!target) {\n target = document.body;\n }\n forEach(seq, function (method) {\n if (typeof _this[method] === 'function') {\n _this[method].call(_this, target);\n }\n });\n };\n};\n\n/**\n * @name behavior\n * @param {object} events\n * @param {object?} props\n * @return {receptor.behavior}\n */\nmodule.exports = function (events, props) {\n return Behavior(events, assign({\n on: sequence('init', 'add'),\n off: sequence('teardown', 'remove')\n }, props));\n};\n\n},{\"array-foreach\":2,\"object-assign\":8,\"receptor/behavior\":9}],31:[function(require,module,exports){\n\"use strict\";\n\n// https://stackoverflow.com/a/7557433\nfunction isElementInViewport(el) {\n var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n var docEl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : document.documentElement;\n\n var rect = el.getBoundingClientRect();\n\n return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (win.innerHeight || docEl.clientHeight) && rect.right <= (win.innerWidth || docEl.clientWidth);\n}\n\nmodule.exports = isElementInViewport;\n\n},{}],32:[function(require,module,exports){\n'use strict';\n\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 */\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar isElement = function isElement(value) {\n return value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.nodeType === 1;\n};\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 = function select(selector, context) {\n\n if (typeof selector !== 'string') {\n return [];\n }\n\n if (!context || !isElement(context)) {\n context = window.document;\n }\n\n var selection = context.querySelectorAll(selector);\n return Array.prototype.slice.call(selection);\n};\n\n},{}],33:[function(require,module,exports){\n'use strict';\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 = function (field, mask) {\n field.setAttribute('autocapitalize', 'off');\n field.setAttribute('autocorrect', 'off');\n field.setAttribute('type', mask ? 'password' : 'text');\n};\n\n},{}],34:[function(require,module,exports){\n'use strict';\n\nvar forEach = require('array-foreach');\nvar resolveIdRefs = require('resolve-id-refs');\nvar select = require('./select');\nvar toggleFieldMask = require('./toggle-field-mask');\n\nvar CONTROLS = 'aria-controls';\nvar PRESSED = 'aria-pressed';\nvar SHOW_ATTR = 'data-show-text';\nvar 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 */\nvar getHideText = function getHideText(showText) {\n return showText.replace(/\\bShow\\b/i, function (show) {\n return ('S' === show[0] ? 'H' : 'h') + 'ide';\n });\n};\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 = function (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 var pressed = el.hasAttribute(PRESSED) && el.getAttribute(PRESSED) !== 'true';\n\n var fields = resolveIdRefs(el.getAttribute(CONTROLS));\n forEach(fields, function (field) {\n return toggleFieldMask(field, pressed);\n });\n\n if (!el.hasAttribute(SHOW_ATTR)) {\n el.setAttribute(SHOW_ATTR, el.textContent);\n }\n\n var showText = el.getAttribute(SHOW_ATTR);\n var hideText = el.getAttribute(HIDE_ATTR) || getHideText(showText);\n\n el.textContent = pressed ? showText : hideText;\n el.setAttribute(PRESSED, pressed);\n return pressed;\n};\n\n},{\"./select\":32,\"./toggle-field-mask\":33,\"array-foreach\":2,\"resolve-id-refs\":15}],35:[function(require,module,exports){\n'use strict';\n\nvar EXPANDED = 'aria-expanded';\nvar CONTROLS = 'aria-controls';\nvar HIDDEN = 'aria-hidden';\n\nmodule.exports = function (button, expanded) {\n\n if (typeof expanded !== 'boolean') {\n expanded = button.getAttribute(EXPANDED) === 'false';\n }\n button.setAttribute(EXPANDED, expanded);\n\n var id = button.getAttribute(CONTROLS);\n var controls = document.getElementById(id);\n if (!controls) {\n throw new Error('No toggle target found with id: \"' + id + '\"');\n }\n\n controls.setAttribute(HIDDEN, !expanded);\n return expanded;\n};\n\n},{}],36:[function(require,module,exports){\n'use strict';\n\nvar dataset = require('elem-dataset');\n\nvar PREFIX = require('../config').prefix;\nvar CHECKED = 'aria-checked';\nvar CHECKED_CLASS = PREFIX + '-checklist-checked';\n\nmodule.exports = function validate(el) {\n var data = dataset(el);\n var id = data.validationElement;\n var checkList = id.charAt(0) === '#' ? document.querySelector(id) : document.getElementById(id);\n\n if (!checkList) {\n throw new Error('No validation element found with id: \"' + id + '\"');\n }\n\n for (var key in data) {\n if (key.startsWith('validate')) {\n var validatorName = key.substr('validate'.length).toLowerCase();\n var validatorPattern = new RegExp(data[key]);\n var validatorSelector = '[data-validator=\"' + validatorName + '\"]';\n var validatorCheckbox = checkList.querySelector(validatorSelector);\n if (!validatorCheckbox) {\n throw new Error('No validator checkbox found for: \"' + validatorName + '\"');\n }\n\n var checked = validatorPattern.test(el.value);\n validatorCheckbox.classList.toggle(CHECKED_CLASS, checked);\n validatorCheckbox.setAttribute(CHECKED, checked);\n }\n }\n};\n\n},{\"../config\":25,\"elem-dataset\":5}]},{},[29])\n\n","\n/**\n * Array#filter.\n *\n * @param {Array} arr\n * @param {Function} fn\n * @param {Object=} self\n * @return {Array}\n * @throw TypeError\n */\n\nmodule.exports = function (arr, fn, self) {\n if (arr.filter) return arr.filter(fn, self);\n if (void 0 === arr || null === arr) throw new TypeError;\n if ('function' != typeof fn) throw new TypeError;\n var ret = [];\n for (var i = 0; i < arr.length; i++) {\n if (!hasOwn.call(arr, i)) continue;\n var val = arr[i];\n if (fn.call(self, val, i, arr)) ret.push(val);\n }\n return ret;\n};\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n","/**\n * array-foreach\n * Array#forEach ponyfill for older browsers\n * (Ponyfill: A polyfill that doesn't overwrite the native method)\n * \n * https://github.com/twada/array-foreach\n *\n * Copyright (c) 2015-2016 Takuto Wada\n * Licensed under the MIT license.\n * https://github.com/twada/array-foreach/blob/master/MIT-LICENSE\n */\n'use strict';\n\nmodule.exports = function forEach (ary, callback, thisArg) {\n if (ary.forEach) {\n ary.forEach(callback, thisArg);\n return;\n }\n for (var i = 0; i < ary.length; i+=1) {\n callback.call(thisArg, ary[i], i, ary);\n }\n};\n","/*\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","/**\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 = 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","'use strict';\nconst behavior = require('../utils/behavior');\nconst filter = require('array-filter');\nconst forEach = require('array-foreach');\nconst toggle = require('../utils/toggle');\nconst isElementInViewport = require('../utils/is-in-viewport');\n\nconst CLICK = require('../events').CLICK;\nconst PREFIX = require('../config').prefix;\n\n// XXX match .usa-accordion and .usa-accordion-bordered\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 * 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 var accordion = button.closest(ACCORDION);\n if (!accordion) {\n throw new Error(`${BUTTON} is missing outer ${ACCORDION}`);\n }\n\n expanded = toggle(button, expanded);\n // XXX multiselectable is opt-in, to preserve legacy behavior\n const multiselectable = accordion.getAttribute(MULTISELECTABLE) === 'true';\n\n if (expanded && !multiselectable) {\n forEach(getAccordionButtons(accordion), 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\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 return filter(accordion.querySelectorAll(BUTTON), button => {\n return button.closest(ACCORDION) === accordion;\n });\n};\n\nconst accordion = behavior({\n [ CLICK ]: {\n [ BUTTON ]: function (event) {\n event.preventDefault();\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 init: root => {\n forEach(root.querySelectorAll(BUTTON), 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/**\n * TODO: for 2.0, remove everything below this comment and export the\n * behavior directly:\n *\n * module.exports = behavior({...});\n */\nconst Accordion = function (root) {\n this.root = root;\n accordion.on(this.root);\n};\n\n// copy all of the behavior methods and props to Accordion\nconst assign = require('object-assign');\nassign(Accordion, accordion);\n\nAccordion.prototype.show = showButton;\nAccordion.prototype.hide = hideButton;\n\nAccordion.prototype.remove = function () {\n accordion.off(this.root);\n};\n\nmodule.exports = Accordion;\n","'use strict';\nconst behavior = require('../utils/behavior');\nconst toggle = require('../utils/toggle');\n\nconst CLICK = require('../events').CLICK;\nconst PREFIX = require('../config').prefix;\n\nconst HEADER = `.${PREFIX}-banner-header`;\nconst EXPANDED_CLASS = `${PREFIX}-banner-header-expanded`;\n\nconst toggleBanner = function (event) {\n event.preventDefault();\n this.closest(HEADER).classList.toggle(EXPANDED_CLASS);\n return false;\n};\n\nmodule.exports = behavior({\n [ CLICK ]: {\n [ `${HEADER} [aria-controls]` ]: toggleBanner,\n },\n});\n","'use strict';\nconst accordion = require('./accordion');\nconst behavior = require('../utils/behavior');\nconst debounce = require('lodash.debounce');\nconst forEach = require('array-foreach');\nconst select = require('../utils/select');\n\nconst CLICK = require('../events').CLICK;\nconst PREFIX = require('../config').prefix;\n\nconst HIDDEN = 'hidden';\nconst SCOPE = `.${PREFIX}-footer-big`;\nconst NAV = `${SCOPE} nav`;\nconst BUTTON = `${NAV} .${PREFIX}-footer-primary-link`;\nconst LIST = `${NAV} ul`;\n\nconst HIDE_MAX_WIDTH = 600;\nconst DEBOUNCE_RATE = 180;\n\nconst showPanel = function () {\n const list = this.closest(LIST);\n list.classList.remove(HIDDEN);\n\n // NB: this *should* always succeed because the button\n // selector is scoped to \".{prefix}-footer-big nav\"\n const lists = list.closest(NAV)\n .querySelectorAll('ul');\n\n forEach(lists, el => {\n if (el !== list) {\n el.classList.add(HIDDEN);\n }\n });\n};\n\nconst resize = debounce(() => {\n const hidden = window.innerWidth < HIDE_MAX_WIDTH;\n forEach(select(LIST), list => {\n list.classList.toggle(HIDDEN, hidden);\n });\n}, DEBOUNCE_RATE);\n\nmodule.exports = behavior({\n [ CLICK ]: {\n [ BUTTON ]: showPanel,\n },\n}, {\n // export for use elsewhere\n HIDE_MAX_WIDTH,\n DEBOUNCE_RATE,\n\n init: target => {\n resize();\n window.addEventListener('resize', resize);\n },\n\n teardown: target => {\n window.removeEventListener('resize', resize);\n },\n});\n","module.exports = {\n accordion: require('./accordion'),\n banner: require('./banner'),\n footer: require('./footer'),\n navigation: require('./navigation'),\n password: require('./password'),\n search: require('./search'),\n skipnav: require('./skipnav'),\n validator: require('./validator'),\n};\n\n","'use strict';\nconst behavior = require('../utils/behavior');\nconst forEach = require('array-foreach');\nconst select = require('../utils/select');\nconst accordion = require('./accordion');\n\nconst CLICK = require('../events').CLICK;\nconst PREFIX = require('../config').prefix;\n\nconst NAV = `.${PREFIX}-nav`;\nconst NAV_LINKS = `${NAV} a`;\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-mobile_nav-active';\nconst VISIBLE_CLASS = 'is-visible';\n\nconst isActive = () => document.body.classList.contains(ACTIVE_CLASS);\n\nconst toggleNav = function (active) {\n const body = document.body;\n if (typeof active !== 'boolean') {\n active = !isActive();\n }\n body.classList.toggle(ACTIVE_CLASS, active);\n\n forEach(select(TOGGLES), el => {\n el.classList.toggle(VISIBLE_CLASS, active);\n });\n\n const closeButton = body.querySelector(CLOSE_BUTTON);\n const menuButton = body.querySelector(OPENERS);\n\n if (active && 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 (!active && document.activeElement === closeButton &&\n menuButton) {\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 active;\n};\n\nconst resize = () => {\n const closer = document.body.querySelector(CLOSE_BUTTON);\n\n if (isActive() && closer && closer.getBoundingClientRect().width === 0) {\n // The mobile nav is active, but the close box isn't visible, which\n // means the user's viewport has been resized so that it is no longer\n // in mobile mode. Let's make the page state consistent by\n // deactivating the mobile nav.\n toggleNav.call(closer, false);\n }\n};\n\nconst navigation = behavior({\n [ CLICK ]: {\n [ OPENERS ]: toggleNav,\n [ CLOSERS ]: toggleNav,\n [ NAV_LINKS ]: function () {\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 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 toggleNav.call(this, false);\n }\n },\n },\n}, {\n init () {\n resize();\n window.addEventListener('resize', resize, false);\n },\n teardown () {\n window.removeEventListener('resize', resize, false);\n },\n});\n\n/**\n * TODO for 2.0, remove this statement and export `navigation` directly:\n *\n * module.exports = behavior({...});\n */\nconst assign = require('object-assign');\nmodule.exports = assign(\n el => navigation.on(el),\n navigation\n);\n","'use strict';\nconst behavior = require('../utils/behavior');\nconst toggleFormInput = require('../utils/toggle-form-input');\n\nconst CLICK = require('../events').CLICK;\nconst PREFIX = require('../config').prefix;\n\nconst LINK = `.${PREFIX}-show_password, .${PREFIX}-show_multipassword`;\n\nconst toggle = function (event) {\n event.preventDefault();\n toggleFormInput(this);\n};\n\nmodule.exports = behavior({\n [ CLICK ]: {\n [ LINK ]: toggle,\n },\n});\n","'use strict';\nconst behavior = require('../utils/behavior');\nconst forEach = require('array-foreach');\nconst ignore = require('receptor/ignore');\nconst select = require('../utils/select');\n\nconst CLICK = require('../events').CLICK;\nconst PREFIX = require('../config').prefix;\n\nconst BUTTON = '.js-search-button';\nconst FORM = '.js-search-form';\nconst INPUT = '[type=search]';\nconst CONTEXT = 'header'; // XXX\nconst VISUALLY_HIDDEN = `${PREFIX}-sr-only`;\n\nlet lastButton;\n\nconst showSearch = function (event) {\n toggleSearch(this, true);\n lastButton = this;\n};\n\nconst hideSearch = function (event) {\n toggleSearch(this, false);\n lastButton = undefined;\n};\n\nconst getForm = button => {\n const context = button.closest(CONTEXT);\n return context\n ? context.querySelector(FORM)\n : document.querySelector(FORM);\n};\n\nconst toggleSearch = (button, active) => {\n const form = getForm(button);\n if (!form) {\n throw new Error(`No ${FORM} found for search toggle in ${CONTEXT}!`);\n }\n\n button.hidden = active;\n form.classList.toggle(VISUALLY_HIDDEN, !active);\n\n if (active) {\n const input = form.querySelector(INPUT);\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, e => {\n if (lastButton) {\n hideSearch.call(lastButton);\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};\n\nconst search = behavior({\n [ CLICK ]: {\n [ BUTTON ]: showSearch,\n },\n}, {\n init: (target) => {\n forEach(select(BUTTON, target), button => {\n toggleSearch(button, false);\n });\n },\n teardown: (target) => {\n // forget the last button clicked\n lastButton = undefined;\n },\n});\n\n/**\n * TODO for 2.0, remove this statement and export `navigation` directly:\n *\n * module.exports = behavior({...});\n */\nconst assign = require('object-assign');\nmodule.exports = assign(\n el => search.on(el),\n search\n);\n","'use strict';\nconst behavior = require('../utils/behavior');\nconst once = require('receptor/once');\n\nconst CLICK = require('../events').CLICK;\nconst PREFIX = require('../config').prefix;\nconst LINK = `.${PREFIX}-skipnav[href^=\"#\"]`;\n\nconst setTabindex = function (event) {\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').slice(1);\n const target = document.getElementById(id);\n if (target) {\n target.setAttribute('tabindex', 0);\n target.addEventListener('blur', once(event => {\n target.setAttribute('tabindex', -1);\n }));\n } else {\n // throw an error?\n }\n};\n\nmodule.exports = behavior({\n [ CLICK ]: {\n [ LINK ]: setTabindex,\n },\n});\n","'use strict';\nconst behavior = require('../utils/behavior');\nconst validate = require('../utils/validate-input');\nconst debounce = require('lodash.debounce');\n\nconst change = function (event) {\n return validate(this);\n};\n\nconst validator = behavior({\n 'keyup change': {\n 'input[data-validation-element]': change,\n },\n});\n\n/**\n * TODO for 2.0, remove this statement and export `navigation` directly:\n *\n * module.exports = behavior({...});\n */\nconst assign = require('object-assign');\nmodule.exports = assign(\n el => validator.on(el),\n validator\n);\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","'use strict';\nconst elproto = window.HTMLElement.prototype;\nconst HIDDEN = 'hidden';\n\nif (!(HIDDEN in elproto)) {\n Object.defineProperty(elproto, HIDDEN, {\n get: function () {\n return this.hasAttribute(HIDDEN);\n },\n set: function (value) {\n if (value) {\n this.setAttribute(HIDDEN, '');\n } else {\n this.removeAttribute(HIDDEN);\n }\n },\n });\n}\n","'use strict';\n// polyfills HTMLElement.prototype.classList and DOMTokenList\nrequire('classlist-polyfill');\n// polyfills HTMLElement.prototype.hidden\nrequire('./element-hidden');\n","'use strict';\nconst 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');\nuswds.components = components;\n\ndomready(() => {\n const target = document.body;\n for (let name in components) {\n const behavior = components[ name ];\n behavior.on(target);\n }\n});\n\nmodule.exports = uswds;\n","'use strict';\nconst assign = require('object-assign');\nconst forEach = require('array-foreach');\nconst Behavior = require('receptor/behavior');\n\nconst sequence = function () {\n const seq = [].slice.call(arguments);\n return function (target) {\n if (!target) {\n target = document.body;\n }\n forEach(seq, method => {\n if (typeof this[ method ] === 'function') {\n this[ method ].call(this, target);\n }\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 return Behavior(events, assign({\n on: sequence('init', 'add'),\n off: sequence('teardown', 'remove'),\n }, props));\n};\n","// https://stackoverflow.com/a/7557433\nfunction isElementInViewport (el, win=window,\n docEl=document.documentElement) {\n var 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","'use strict';\n\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 return value && typeof value === 'object' && value.nodeType === 1;\n};\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 = function select (selector, context) {\n\n if (typeof selector !== 'string') {\n return [];\n }\n\n if (!context || !isElement(context)) {\n context = window.document;\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","'use strict';\nconst forEach = require('array-foreach');\nconst resolveIdRefs = require('resolve-id-refs');\nconst select = require('./select');\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 return showText.replace(/\\bShow\\b/i, show => {\n return ('S' === show[ 0 ] ? 'H' : 'h') + 'ide';\n });\n};\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 = el.hasAttribute(PRESSED)\n && el.getAttribute(PRESSED) !== 'true';\n\n const fields = resolveIdRefs(el.getAttribute(CONTROLS));\n forEach(fields, 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;\n el.setAttribute(PRESSED, pressed);\n return pressed;\n};\n","'use strict';\nconst EXPANDED = 'aria-expanded';\nconst CONTROLS = 'aria-controls';\nconst HIDDEN = 'aria-hidden';\n\nmodule.exports = (button, expanded) => {\n\n if (typeof expanded !== 'boolean') {\n expanded = button.getAttribute(EXPANDED) === 'false';\n }\n button.setAttribute(EXPANDED, expanded);\n\n const id = button.getAttribute(CONTROLS);\n const controls = document.getElementById(id);\n if (!controls) {\n throw new Error(\n 'No toggle target found with id: \"' + id + '\"'\n );\n }\n\n controls.setAttribute(HIDDEN, !expanded);\n return expanded;\n};\n","'use strict';\nconst dataset = require('elem-dataset');\n\nconst PREFIX = require('../config').prefix;\nconst CHECKED = 'aria-checked';\nconst CHECKED_CLASS = `${PREFIX}-checklist-checked`;\n\nmodule.exports = function validate (el) {\n const data = dataset(el);\n const id = data.validationElement;\n const checkList = id.charAt(0) === '#'\n ? document.querySelector(id)\n : document.getElementById(id);\n\n if (!checkList) {\n throw new Error(\n `No validation element found with id: \"${id}\"`\n );\n }\n\n for (const key in data) {\n if (key.startsWith('validate')) {\n const validatorName = key.substr('validate'.length).toLowerCase();\n const validatorPattern = new RegExp(data[ key ]);\n const validatorSelector = `[data-validator=\"${validatorName}\"]`;\n const validatorCheckbox = checkList.querySelector(validatorSelector);\n if (!validatorCheckbox) {\n throw new Error(\n `No validator checkbox found for: \"${validatorName}\"`\n );\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"]}
1
+ {"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/date-picker.js","src/js/components/date-range-picker.js","src/js/components/file-input.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/time-picker.js","src/js/components/tooltip.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/polyfills/number-is-nan.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/is-ios-device.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","disableFiltering","disable","_getComboBoxContext","hidden","disabled","enhanceComboBox","_comboBoxEl","enhanced","selectedOption","selectId","listId","assistiveHintID","additionalAttributes","defaultValue","placeholder","optionEl","SELECT_CLASS","hasAttribute","insertAdjacentHTML","INPUT_CLASS","CLEAR_INPUT_BUTTON_WRAPPER_CLASS","CLEAR_INPUT_BUTTON_CLASS","INPUT_BUTTON_SEPARATOR_CLASS","TOGGLE_LIST_BUTTON_WRAPPER_CLASS","TOGGLE_LIST_BUTTON_CLASS","LIST_CLASS","STATUS_CLASS","text","highlightOption","nextEl","optionBottom","_ref","skipFocus","preventScroll","_getComboBoxContext4","LIST_OPTION_FOCUSED_CLASS","offsetTop","offsetHeight","scrollTop","focus","generateDynamicRegExp","escapeRegExp","query","extras","find","m","$1","queryFilter","matcher","RegExp","displayList","selectedItemId","firstFoundId","_getComboBoxContext5","listOptionBaseId","inputValue","regex","optionId","itemToFocus","numOptions","optionHtml","option","LIST_OPTION_CLASS","tabindex","ariaSelected","LIST_OPTION_SELECTED_CLASS","noResults","hideList","_getComboBoxContext6","selectItem","listOptionEl","_getComboBoxContext7","textContent","resetSelection","_getComboBoxContext9","selectValue","handleDownFromInput","_getComboBoxContext12","nextOptionEl","LIST_OPTION","handleDownFromListOption","nextSibling","handleUpFromListOption","_getComboBoxContext14","previousSibling","listShown","COMBO_BOX_CLASS","comboBox","_behavior","_CLICK","_getComboBoxContext16","_getComboBoxContext15","_getComboBoxContext8","relatedTarget","_keydown","Escape","_getComboBoxContext11","Enter","_getComboBoxContext13","_getComboBoxContext10","completeSelection","ArrowDown","Down","ArrowUp","Up","Tab","Shift+Tab","enable","_getComboBoxContext2","processFocusableSelectors","_len","keepDateWithinMonth","dateToCheck","month","getMonth","setDate","year","date","newDate","setFullYear","today","day","getDate","getFullYear","startOfMonth","lastDayOfMonth","addDays","_date","numDays","getTime","subDays","addWeeks","numWeeks","startOfWeek","dayOfWeek","getDay","addMonths","numMonths","dateMonth","setMonth","subMonths","addYears","numYears","subYears","setYear","isSameYear","dateA","dateB","isSameMonth","isSameDay","keepDateBetweenMinAndMax","minDate","maxDate","isDateWithinMinAndMax","isDatesYearOutsideMinOrMax","parseDateString","dateString","_dateString$split2","monthStr","dayStr","yearStr","_dateString$split4","currentYear","parsed","lastDayOfTheMonth","adjustDate","INTERNAL_DATE_FORMAT","DEFAULT_EXTERNAL_DATE_FORMAT","_slicedToArray","Number","isNaN","pow","formatDate","padZeros","dateFormat","listToGridHtml","htmlArray","rowSize","grid","row","getDatePickerContext","datePickerEl","DATE_PICKER","internalInputEl","DATE_PICKER_INTERNAL_INPUT","externalInputEl","DATE_PICKER_EXTERNAL_INPUT","calendarEl","DATE_PICKER_CALENDAR","toggleBtnEl","DATE_PICKER_BUTTON","DATE_PICKER_STATUS","firstYearChunkEl","CALENDAR_YEAR","inputDate","selectedDate","calendarDate","rangeDate","defaultDate","_getDatePickerContext","isDateInputInvalid","dateStringParts","_dateStringParts$map2","checkDate","_getDatePickerContext3","isInvalid","validateDateInput","setCalendarValue","formattedDate","_getDatePickerContext6","parsedDate","renderCalendar","_dateToDisplay","_getDatePickerContext7","todaysDate","dateToDisplay","calendarWasHidden","focusedDate","focusedMonth","focusedYear","prevMonth","nextMonth","currentFormattedDate","firstOfMonth","prevButtonsDisabled","nextButtonsDisabled","rangeConclusionDate","rangeStartDate","rangeEndDate","withinRangeStartDate","withinRangeEndDate","monthLabel","MONTH_LABELS","days","dateToRender","CALENDAR_DATE_CLASS","isDisabled","isSelected","CALENDAR_DATE_PREVIOUS_MONTH_CLASS","CALENDAR_DATE_CURRENT_MONTH_CLASS","CALENDAR_DATE_NEXT_MONTH_CLASS","CALENDAR_DATE_SELECTED_CLASS","CALENDAR_DATE_TODAY_CLASS","CALENDAR_DATE_RANGE_DATE_CLASS","CALENDAR_DATE_RANGE_DATE_START_CLASS","CALENDAR_DATE_RANGE_DATE_END_CLASS","CALENDAR_DATE_WITHIN_RANGE_CLASS","CALENDAR_DATE_FOCUSED_CLASS","DAY_OF_WEEK_LABELS","generateDateHtml","datesHtml","newCalendar","cloneNode","style","top","CALENDAR_DATE_PICKER_CLASS","CALENDAR_ROW_CLASS","CALENDAR_CELL_CLASS","CALENDAR_CELL_CENTER_ITEMS_CLASS","CALENDAR_PREVIOUS_YEAR_CLASS","CALENDAR_PREVIOUS_MONTH_CLASS","CALENDAR_MONTH_LABEL_CLASS","CALENDAR_MONTH_SELECTION_CLASS","CALENDAR_YEAR_SELECTION_CLASS","CALENDAR_NEXT_MONTH_CLASS","CALENDAR_NEXT_YEAR_CLASS","CALENDAR_TABLE_CLASS","CALENDAR_DAY_OF_WEEK_CLASS","replaceChild","DATE_PICKER_ACTIVE_CLASS","statuses","hideCalendar","_getDatePickerContext12","updateCalendarIfVisible","_getDatePickerContext15","displayMonthSelection","monthToDisplay","_getDatePickerContext16","selectedMonth","months","monthToCheck","CALENDAR_MONTH_CLASS","CALENDAR_MONTH_FOCUSED_CLASS","CALENDAR_MONTH_SELECTED_CLASS","monthsHtml","CALENDAR_MONTH_PICKER_CLASS","displayYearSelection","yearToDisplay","_getDatePickerContext18","selectedYear","yearToChunk","prevYearChunkDisabled","nextYearChunkDisabled","years","yearIndex","CALENDAR_YEAR_CLASS","CALENDAR_YEAR_FOCUSED_CLASS","CALENDAR_YEAR_SELECTED_CLASS","yearsHtml","CALENDAR_YEAR_PICKER_CLASS","CALENDAR_PREVIOUS_YEAR_CHUNK_CLASS","CALENDAR_NEXT_YEAR_CHUNK_CLASS","handleEscapeFromCalendar","_getDatePickerContext22","adjustCalendar","adjustDateFn","_getDatePickerContext23","cappedDate","CALENDAR_DATE_FOCUSED","adjustMonthSelectionScreen","adjustMonthFn","monthEl","_getDatePickerContext24","currentDate","adjustedMonth","CALENDAR_MONTH_FOCUSED","adjustYearSelectionScreen","adjustYearFn","yearEl","_getDatePickerContext25","adjustedYear","CALENDAR_YEAR_FOCUSED","tabHandler","focusable","getFocusableContext","focusableElements","lastTabIndex","firstTabStop","lastTabStop","focusIndex","activeElement","isNotFound","isFirstTab","isLastTab","tabAhead","_getFocusableContext","tabBack","_getFocusableContext2","_datePickerEvents$mou","isIosDevice","DATE_PICKER_CLASS","DATE_PICKER_WRAPPER_CLASS","DATE_PICKER_INITIALIZED_CLASS","DATE_PICKER_INTERNAL_INPUT_CLASS","DATE_PICKER_EXTERNAL_INPUT_CLASS","DATE_PICKER_BUTTON_CLASS","DATE_PICKER_CALENDAR_CLASS","DATE_PICKER_STATUS_CLASS","CALENDAR_DATE","CALENDAR_DATE_CURRENT_MONTH","CALENDAR_PREVIOUS_YEAR","CALENDAR_PREVIOUS_MONTH","CALENDAR_NEXT_YEAR","CALENDAR_NEXT_MONTH","CALENDAR_YEAR_SELECTION","CALENDAR_MONTH_SELECTION","CALENDAR_MONTH","CALENDAR_PREVIOUS_YEAR_CHUNK","CALENDAR_NEXT_YEAR_CHUNK","CALENDAR_DATE_PICKER","CALENDAR_MONTH_PICKER","CALENDAR_YEAR_PICKER","DATE_PICKER_FOCUSABLE","MONTH_PICKER_FOCUSABLE","YEAR_PICKER_FOCUSABLE","handleUpFromDate","handleDownFromDate","handleLeftFromDate","handleRightFromDate","handleHomeFromDate","handleEndFromDate","handlePageDownFromDate","handlePageUpFromDate","handleShiftPageDownFromDate","handleShiftPageUpFromDate","handleUpFromMonth","handleDownFromMonth","handleLeftFromMonth","handleRightFromMonth","handleHomeFromMonth","handleEndFromMonth","handlePageDownFromMonth","handlePageUpFromMonth","handleUpFromYear","handleDownFromYear","handleLeftFromYear","handleRightFromYear","handleHomeFromYear","handleEndFromYear","handlePageUpFromYear","handlePageDownFromYear","datePickerTabEventHandler","monthPickerTabEventHandler","yearPickerTabEventHandler","datePickerEvents","_datePickerEvents","_getDatePickerContext14","calendarDateEl","_getDatePickerContext13","_getDatePickerContext17","_getDatePickerContext21","_buttonEl","_getDatePickerContext9","nextToFocus","_getDatePickerContext10","_getDatePickerContext8","_getDatePickerContext11","_getDatePickerContext19","_getDatePickerContext20","keydown","keydownKeyCode","Left","ArrowLeft","Right","ArrowRight","Home","End","PageDown","PageUp","Shift+PageDown","Shift+PageUp","keyMap","_focusout","_getDatePickerContext5","newValue","mousemove","dateEl","currentCalendarDate","hoverDate","focusMonth","focusYear","datePicker","calendarWrapper","tabIndex","appendChild","required","enhanceDatePicker","_getDatePickerContext2","getDateRangePickerContext","dateRangePickerEl","DATE_RANGE_PICKER","rangeStartEl","DATE_RANGE_PICKER_RANGE_START","rangeEndEl","DATE_RANGE_PICKER_RANGE_END","handleRangeStartUpdate","_getDateRangePickerCo","updatedDate","handleRangeEndUpdate","_getDateRangePickerCo2","DATE_RANGE_PICKER_CLASS","DATE_RANGE_PICKER_RANGE_START_CLASS","DATE_RANGE_PICKER_RANGE_END_CLASS","dateRangePicker","input change","_inputChange","_select2","rangeStart","rangeEnd","enhanceDateRangePicker","makeSafeForID","charCodeAt","removeOldPreviews","dropTarget","instructions","filePreviews","PREVIEW_CLASS","currentPreviewHeading","PREVIEW_HEADING_CLASS","currentErrorMessage","ACCEPTED_FILE_MESSAGE_CLASS","outerHTML","INVALID_FILE_CLASS","HIDDEN_CLASS","node","removeChild","DROPZONE_CLASS","DROPZONE","TARGET_CLASS","BOX_CLASS","INSTRUCTIONS_CLASS","DISABLED_CLASS","CHOOSE_CLASS","DRAG_TEXT_CLASS","DRAG_CLASS","LOADING_CLASS","GENERIC_PREVIEW_CLASS_NAME","GENERIC_PREVIEW_CLASS","PDF_PREVIEW_CLASS","WORD_PREVIEW_CLASS","VIDEO_PREVIEW_CLASS","EXCEL_PREVIEW_CLASS","SPACER_GIF","fileInput","fileInputEl","acceptsMultiple","fileInputParent","box","_buildFileInput","insertBefore","navigator","userAgent","acceptedFiles","errorMessage","allFilesAllowed","dataTransfer","files","file","stopPropagation","preventInvalidFiles","onchange","fileNames","filePreviewsHeading","reader","FileReader","fileName","onloadstart","imageId","previewImage","onloadend","src","readAsDataURL","_loop","handleChange","lastInnerWidth","debounce","HIDDEN","SCOPE","NAV","COLLAPSIBLE","resize","innerWidth","list","collapseEl","HIDE_MAX_WIDTH","DEBOUNCE_RATE","teardown","banner","footer","navigation","password","search","skipnav","tooltip","validator","timePicker","isActive","body","ACTIVE_CLASS","toggleNav","active","safeActive","TOGGLES","focusTrap","update","closeButton","CLOSE_BUTTON","menuButton","OPENERS","closer","getBoundingClientRect","width","onMenuClose","hideActiveNavDropdown","navActive","FocusTrap","NAV_LINKS","NAV_CONTROL","OVERLAY","CLOSERS","acc","btn","trapContainer","toggleFormInput","LINK","lastButton","FORM","toggleSearch","context","form","once","outline","parseTimeString","timeStr","minutes","_timeStr$split$map2","hours","mins","TIME_PICKER_CLASS","TIME_PICKER","FILTER_DATASET","apQueryFilter","hourQueryFilter","minuteQueryFilter","timePickerEl","initialInputEl","minute","hour24","minTime","maxTime","step","floor","_getTimeContext","hour12","ampm","display","transformTimePicker","addListenerMulti","eventNames","iLen","showToolTip","tooltipBody","tooltipTrigger","position","wrapper","setPositionClass","setPos","TOOLTIP_BODY_CLASS","positionTop","marginLeft","adjustHorizontalCenter","ADJUST_WIDTH_CLASS","marginBottom","adjustToEdgeY","offsetForBottomMargin","offsetForBottomPadding","positionBottom","marginTop","offsetForTopMargin","offsetForTopPadding","positionRight","adjustToEdgeX","leftOffset","bottom","tooltipHeight","offsetForTooltipBodyHeight","positionLeft","toolTipBodyWidth","tooltipWidth","offsetWidth","getComputedStyle","getPropertyValue","offsetLeft","VISIBLE_CLASS","TOOLTIP","TOOLTIP_TRIGGER_CLASS","TOOLTIP_CLASS","tooltipID","tooltipContent","additionalClasses","_setUpAttributes","random","classname","validate","keyup change","input[data-validation-element]","_params","params","evt","createEvent","initCustomEvent","elproto","HTMLElement","domready","uswds","components","on","sequence","seq","_this","Behavior","off","additionalKeyBindings","tabEventHandler","Esc","keyMappings","win","docEl","rect","left","innerHeight","clientHeight","right","clientWidth","platform","maxTouchPoints","MSStream","selection","field","mask","resolveIdRefs","toggleFieldMask","PRESSED","SHOW_ATTR","pressed","showText","hideText","controls","CHECKED_CLASS","data","validationElement","checkList","entries","_ref2","startsWith","validatorName","substr","validatorPattern","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\nfunction useNative() {\n var elem = document.createElement('div');\n elem.setAttribute('data-a-b', 'c');\n return Boolean(elem.dataset && elem.dataset.aB === 'c');\n}\n\nfunction nativeDataset(element) {\n return element.dataset;\n}\n\nmodule.exports = useNative() ? nativeDataset : function (element) {\n var map = {};\n var attributes = element.attributes;\n\n function getter() {\n return this.value;\n }\n\n function setter(name, value) {\n if (typeof value === 'undefined') {\n this.removeAttribute(name);\n } else {\n this.setAttribute(name, value);\n }\n }\n\n for (var i = 0, j = attributes.length; i < j; i++) {\n var attribute = attributes[i];\n\n if (attribute) {\n var name = attribute.name;\n\n if (name.indexOf('data-') === 0) {\n var prop = name.slice(5).replace(/-./g, function (u) {\n return u.charAt(1).toUpperCase();\n });\n var value = attribute.value;\n Object.defineProperty(map, prop, {\n enumerable: true,\n get: getter.bind({\n value: value || ''\n }),\n set: setter.bind(element, name)\n });\n }\n }\n }\n\n return 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 DEFAULT_FILTER = \".*{{query}}.*\";\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 * @property {boolean} isPristine\n * @property {boolean} disableFiltering\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 const disableFiltering = comboBoxEl.dataset.disableFiltering === \"true\";\n\n return {\n comboBoxEl,\n selectEl,\n inputEl,\n listEl,\n statusEl,\n focusedOptionEl,\n selectedOptionEl,\n toggleListBtnEl,\n clearInputBtnEl,\n isPristine,\n disableFiltering,\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 comboBoxEl = _comboBoxEl.closest(COMBO_BOX);\n\n if (comboBoxEl.dataset.enhanced) return;\n\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 comboBoxEl.dataset.enhanced = \"true\";\n};\n\n/**\n * Manage the focused element within the list options when\n * navigating via keyboard.\n *\n * @param {HTMLElement} el An anchor 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 = (el, nextEl, { skipFocus, preventScroll } = {}) => {\n const { inputEl, listEl, focusedOptionEl } = getComboBoxContext(el);\n\n if (focusedOptionEl) {\n focusedOptionEl.classList.remove(LIST_OPTION_FOCUSED_CLASS);\n focusedOptionEl.setAttribute(\"tabIndex\", \"-1\");\n }\n\n if (nextEl) {\n inputEl.setAttribute(\"aria-activedescendant\", nextEl.id);\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 * Generate a dynamic regular expression based off of a replaceable and possibly filtered value.\n *\n * @param {string} el An element within the combo box component\n * @param {string} query The value to use in the regular expression\n * @param {object} extras An object of regular expressions to replace and filter the query\n */\nconst generateDynamicRegExp = (filter, query = \"\", extras = {}) => {\n const escapeRegExp = (text) => {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\");\n };\n\n let find = filter.replace(/{{(.*?)}}/g, (m, $1) => {\n const key = $1.trim();\n const queryFilter = extras[key];\n if (key !== \"query\" && queryFilter) {\n const matcher = new RegExp(queryFilter, \"i\");\n const matches = query.match(matcher);\n\n if (matches) {\n return escapeRegExp(matches[1]);\n }\n\n return \"\";\n }\n return escapeRegExp(query);\n });\n\n find = \"^(?:\" + find + \")$\";\n\n return new RegExp(find, \"i\");\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 comboBoxEl,\n selectEl,\n inputEl,\n listEl,\n statusEl,\n isPristine,\n disableFiltering,\n } = getComboBoxContext(el);\n let selectedItemId;\n let firstFoundId;\n\n const listOptionBaseId = `${listEl.id}--option-`;\n\n const inputValue = (inputEl.value || \"\").toLowerCase();\n const filter = comboBoxEl.dataset.filter || DEFAULT_FILTER;\n const regex = generateDynamicRegExp(filter, inputValue, comboBoxEl.dataset);\n\n const options = [];\n for (let i = 0, len = selectEl.options.length; i < len; i += 1) {\n const optionEl = selectEl.options[i];\n const optionId = `${listOptionBaseId}${options.length}`;\n\n if (\n optionEl.value &&\n (disableFiltering ||\n isPristine ||\n !inputValue ||\n regex.test(optionEl.text))\n ) {\n if (selectEl.value && optionEl.value === selectEl.value) {\n selectedItemId = optionId;\n }\n\n if (disableFiltering && !firstFoundId && regex.test(optionEl.text)) {\n firstFoundId = optionId;\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 let ariaSelected = \"false\";\n\n if (optionId === selectedItemId) {\n classes.push(LIST_OPTION_SELECTED_CLASS, LIST_OPTION_FOCUSED_CLASS);\n tabindex = \"0\";\n ariaSelected = \"true\";\n }\n\n if (!selectedItemId && index === 0) {\n classes.push(LIST_OPTION_FOCUSED_CLASS);\n tabindex = \"0\";\n }\n\n return `<li\n aria-selected=\"false\"\n aria-setsize=\"${options.length}\"\n aria-posinset=\"${index + 1}\"\n aria-selected=\"${ariaSelected}\"\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 let itemToFocus;\n\n if (isPristine && selectedItemId) {\n itemToFocus = listEl.querySelector(\"#\" + selectedItemId);\n } else if (disableFiltering && firstFoundId) {\n itemToFocus = listEl.querySelector(\"#\" + firstFoundId);\n }\n\n if (itemToFocus) {\n highlightOption(listEl, itemToFocus, {\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 { comboBoxEl, selectEl, inputEl, statusEl } = getComboBoxContext(el);\n\n statusEl.textContent = \"\";\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 handleDownFromInput = (event) => {\n const { comboBoxEl, listEl } = getComboBoxContext(event.target);\n\n if (listEl.hidden) {\n displayList(comboBoxEl);\n }\n\n let nextOptionEl =\n listEl.querySelector(LIST_OPTION_FOCUSED) ||\n listEl.querySelector(LIST_OPTION);\n\n if (nextOptionEl) {\n highlightOption(comboBoxEl, 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 down event within the combo box component.\n *\n * @param {KeyboardEvent} event An event within the combo box component\n */\nconst handleDownFromListOption = (event) => {\n const focusedOptionEl = event.target;\n const nextOptionEl = focusedOptionEl.nextSibling;\n\n if (nextOptionEl) {\n highlightOption(focusedOptionEl, nextOptionEl);\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, 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 highlightOption(listOptionEl, 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 Escape: handleEscape,\n }),\n [INPUT]: keymap({\n Enter: handleEnterFromInput,\n ArrowDown: handleDownFromInput,\n Down: handleDownFromInput,\n }),\n [LIST_OPTION]: keymap({\n ArrowUp: handleUpFromListOption,\n Up: handleUpFromListOption,\n ArrowDown: handleDownFromListOption,\n Down: handleDownFromListOption,\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 enhanceComboBox,\n generateDynamicRegExp,\n disable,\n enable,\n displayList,\n hideList,\n COMBO_BOX_CLASS,\n }\n);\n\nmodule.exports = comboBox;\n","const keymap = require(\"receptor/keymap\");\nconst behavior = require(\"../utils/behavior\");\nconst select = require(\"../utils/select\");\nconst { prefix: PREFIX } = require(\"../config\");\nconst { CLICK } = require(\"../events\");\nconst activeElement = require(\"../utils/active-element\");\nconst isIosDevice = require(\"../utils/is-ios-device\");\n\nconst DATE_PICKER_CLASS = `${PREFIX}-date-picker`;\nconst DATE_PICKER_WRAPPER_CLASS = `${DATE_PICKER_CLASS}__wrapper`;\nconst DATE_PICKER_INITIALIZED_CLASS = `${DATE_PICKER_CLASS}--initialized`;\nconst DATE_PICKER_ACTIVE_CLASS = `${DATE_PICKER_CLASS}--active`;\nconst DATE_PICKER_INTERNAL_INPUT_CLASS = `${DATE_PICKER_CLASS}__internal-input`;\nconst DATE_PICKER_EXTERNAL_INPUT_CLASS = `${DATE_PICKER_CLASS}__external-input`;\nconst DATE_PICKER_BUTTON_CLASS = `${DATE_PICKER_CLASS}__button`;\nconst DATE_PICKER_CALENDAR_CLASS = `${DATE_PICKER_CLASS}__calendar`;\nconst DATE_PICKER_STATUS_CLASS = `${DATE_PICKER_CLASS}__status`;\nconst CALENDAR_DATE_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__date`;\n\nconst CALENDAR_DATE_FOCUSED_CLASS = `${CALENDAR_DATE_CLASS}--focused`;\nconst CALENDAR_DATE_SELECTED_CLASS = `${CALENDAR_DATE_CLASS}--selected`;\nconst CALENDAR_DATE_PREVIOUS_MONTH_CLASS = `${CALENDAR_DATE_CLASS}--previous-month`;\nconst CALENDAR_DATE_CURRENT_MONTH_CLASS = `${CALENDAR_DATE_CLASS}--current-month`;\nconst CALENDAR_DATE_NEXT_MONTH_CLASS = `${CALENDAR_DATE_CLASS}--next-month`;\nconst CALENDAR_DATE_RANGE_DATE_CLASS = `${CALENDAR_DATE_CLASS}--range-date`;\nconst CALENDAR_DATE_TODAY_CLASS = `${CALENDAR_DATE_CLASS}--today`;\nconst CALENDAR_DATE_RANGE_DATE_START_CLASS = `${CALENDAR_DATE_CLASS}--range-date-start`;\nconst CALENDAR_DATE_RANGE_DATE_END_CLASS = `${CALENDAR_DATE_CLASS}--range-date-end`;\nconst CALENDAR_DATE_WITHIN_RANGE_CLASS = `${CALENDAR_DATE_CLASS}--within-range`;\nconst CALENDAR_PREVIOUS_YEAR_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__previous-year`;\nconst CALENDAR_PREVIOUS_MONTH_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__previous-month`;\nconst CALENDAR_NEXT_YEAR_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__next-year`;\nconst CALENDAR_NEXT_MONTH_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__next-month`;\nconst CALENDAR_MONTH_SELECTION_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__month-selection`;\nconst CALENDAR_YEAR_SELECTION_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__year-selection`;\nconst CALENDAR_MONTH_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__month`;\nconst CALENDAR_MONTH_FOCUSED_CLASS = `${CALENDAR_MONTH_CLASS}--focused`;\nconst CALENDAR_MONTH_SELECTED_CLASS = `${CALENDAR_MONTH_CLASS}--selected`;\nconst CALENDAR_YEAR_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__year`;\nconst CALENDAR_YEAR_FOCUSED_CLASS = `${CALENDAR_YEAR_CLASS}--focused`;\nconst CALENDAR_YEAR_SELECTED_CLASS = `${CALENDAR_YEAR_CLASS}--selected`;\nconst CALENDAR_PREVIOUS_YEAR_CHUNK_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__previous-year-chunk`;\nconst CALENDAR_NEXT_YEAR_CHUNK_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__next-year-chunk`;\nconst CALENDAR_DATE_PICKER_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__date-picker`;\nconst CALENDAR_MONTH_PICKER_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__month-picker`;\nconst CALENDAR_YEAR_PICKER_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__year-picker`;\nconst CALENDAR_TABLE_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__table`;\nconst CALENDAR_ROW_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__row`;\nconst CALENDAR_CELL_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__cell`;\nconst CALENDAR_CELL_CENTER_ITEMS_CLASS = `${CALENDAR_CELL_CLASS}--center-items`;\nconst CALENDAR_MONTH_LABEL_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__month-label`;\nconst CALENDAR_DAY_OF_WEEK_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__day-of-week`;\n\nconst DATE_PICKER = `.${DATE_PICKER_CLASS}`;\nconst DATE_PICKER_BUTTON = `.${DATE_PICKER_BUTTON_CLASS}`;\nconst DATE_PICKER_INTERNAL_INPUT = `.${DATE_PICKER_INTERNAL_INPUT_CLASS}`;\nconst DATE_PICKER_EXTERNAL_INPUT = `.${DATE_PICKER_EXTERNAL_INPUT_CLASS}`;\nconst DATE_PICKER_CALENDAR = `.${DATE_PICKER_CALENDAR_CLASS}`;\nconst DATE_PICKER_STATUS = `.${DATE_PICKER_STATUS_CLASS}`;\nconst CALENDAR_DATE = `.${CALENDAR_DATE_CLASS}`;\nconst CALENDAR_DATE_FOCUSED = `.${CALENDAR_DATE_FOCUSED_CLASS}`;\nconst CALENDAR_DATE_CURRENT_MONTH = `.${CALENDAR_DATE_CURRENT_MONTH_CLASS}`;\nconst CALENDAR_PREVIOUS_YEAR = `.${CALENDAR_PREVIOUS_YEAR_CLASS}`;\nconst CALENDAR_PREVIOUS_MONTH = `.${CALENDAR_PREVIOUS_MONTH_CLASS}`;\nconst CALENDAR_NEXT_YEAR = `.${CALENDAR_NEXT_YEAR_CLASS}`;\nconst CALENDAR_NEXT_MONTH = `.${CALENDAR_NEXT_MONTH_CLASS}`;\nconst CALENDAR_YEAR_SELECTION = `.${CALENDAR_YEAR_SELECTION_CLASS}`;\nconst CALENDAR_MONTH_SELECTION = `.${CALENDAR_MONTH_SELECTION_CLASS}`;\nconst CALENDAR_MONTH = `.${CALENDAR_MONTH_CLASS}`;\nconst CALENDAR_YEAR = `.${CALENDAR_YEAR_CLASS}`;\nconst CALENDAR_PREVIOUS_YEAR_CHUNK = `.${CALENDAR_PREVIOUS_YEAR_CHUNK_CLASS}`;\nconst CALENDAR_NEXT_YEAR_CHUNK = `.${CALENDAR_NEXT_YEAR_CHUNK_CLASS}`;\nconst CALENDAR_DATE_PICKER = `.${CALENDAR_DATE_PICKER_CLASS}`;\nconst CALENDAR_MONTH_PICKER = `.${CALENDAR_MONTH_PICKER_CLASS}`;\nconst CALENDAR_YEAR_PICKER = `.${CALENDAR_YEAR_PICKER_CLASS}`;\nconst CALENDAR_MONTH_FOCUSED = `.${CALENDAR_MONTH_FOCUSED_CLASS}`;\nconst CALENDAR_YEAR_FOCUSED = `.${CALENDAR_YEAR_FOCUSED_CLASS}`;\n\nconst VALIDATION_MESSAGE = \"Please enter a valid date\";\n\nconst MONTH_LABELS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nconst DAY_OF_WEEK_LABELS = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n];\n\nconst ENTER_KEYCODE = 13;\n\nconst YEAR_CHUNK = 12;\n\nconst DEFAULT_MIN_DATE = \"0000-01-01\";\nconst DEFAULT_EXTERNAL_DATE_FORMAT = \"MM/DD/YYYY\";\nconst INTERNAL_DATE_FORMAT = \"YYYY-MM-DD\";\n\nconst NOT_DISABLED_SELECTOR = \":not([disabled])\";\n\nconst processFocusableSelectors = (...selectors) =>\n selectors.map((query) => query + NOT_DISABLED_SELECTOR).join(\", \");\n\nconst DATE_PICKER_FOCUSABLE = processFocusableSelectors(\n CALENDAR_PREVIOUS_YEAR,\n CALENDAR_PREVIOUS_MONTH,\n CALENDAR_YEAR_SELECTION,\n CALENDAR_MONTH_SELECTION,\n CALENDAR_NEXT_YEAR,\n CALENDAR_NEXT_MONTH,\n CALENDAR_DATE_FOCUSED\n);\n\nconst MONTH_PICKER_FOCUSABLE = processFocusableSelectors(\n CALENDAR_MONTH_FOCUSED\n);\n\nconst YEAR_PICKER_FOCUSABLE = processFocusableSelectors(\n CALENDAR_PREVIOUS_YEAR_CHUNK,\n CALENDAR_NEXT_YEAR_CHUNK,\n CALENDAR_YEAR_FOCUSED\n);\n\n// #region Date Manipulation Functions\n\n/**\n * Keep date within month. Month would only be over by 1 to 3 days\n *\n * @param {Date} dateToCheck the date object to check\n * @param {number} month the correct month\n * @returns {Date} the date, corrected if needed\n */\nconst keepDateWithinMonth = (dateToCheck, month) => {\n if (month !== dateToCheck.getMonth()) {\n dateToCheck.setDate(0);\n }\n\n return dateToCheck;\n};\n\n/**\n * Set date from month day year\n *\n * @param {number} year the year to set\n * @param {number} month the month to set (zero-indexed)\n * @param {number} date the date to set\n * @returns {Date} the set date\n */\nconst setDate = (year, month, date) => {\n const newDate = new Date(0);\n newDate.setFullYear(year, month, date);\n return newDate;\n};\n\n/**\n * todays date\n *\n * @returns {Date} todays date\n */\nconst today = () => {\n const newDate = new Date();\n const day = newDate.getDate();\n const month = newDate.getMonth();\n const year = newDate.getFullYear();\n return setDate(year, month, day);\n};\n\n/**\n * Set date to first day of the month\n *\n * @param {number} date the date to adjust\n * @returns {Date} the adjusted date\n */\nconst startOfMonth = (date) => {\n const newDate = new Date(0);\n newDate.setFullYear(date.getFullYear(), date.getMonth(), 1);\n return newDate;\n};\n\n/**\n * Set date to last day of the month\n *\n * @param {number} date the date to adjust\n * @returns {Date} the adjusted date\n */\nconst lastDayOfMonth = (date) => {\n const newDate = new Date(0);\n newDate.setFullYear(date.getFullYear(), date.getMonth() + 1, 0);\n return newDate;\n};\n\n/**\n * Add days to date\n *\n * @param {Date} _date the date to adjust\n * @param {number} numDays the difference in days\n * @returns {Date} the adjusted date\n */\nconst addDays = (_date, numDays) => {\n const newDate = new Date(_date.getTime());\n newDate.setDate(newDate.getDate() + numDays);\n return newDate;\n};\n\n/**\n * Subtract days from date\n *\n * @param {Date} _date the date to adjust\n * @param {number} numDays the difference in days\n * @returns {Date} the adjusted date\n */\nconst subDays = (_date, numDays) => addDays(_date, -numDays);\n\n/**\n * Add weeks to date\n *\n * @param {Date} _date the date to adjust\n * @param {number} numWeeks the difference in weeks\n * @returns {Date} the adjusted date\n */\nconst addWeeks = (_date, numWeeks) => addDays(_date, numWeeks * 7);\n\n/**\n * Subtract weeks from date\n *\n * @param {Date} _date the date to adjust\n * @param {number} numWeeks the difference in weeks\n * @returns {Date} the adjusted date\n */\nconst subWeeks = (_date, numWeeks) => addWeeks(_date, -numWeeks);\n\n/**\n * Set date to the start of the week (Sunday)\n *\n * @param {Date} _date the date to adjust\n * @returns {Date} the adjusted date\n */\nconst startOfWeek = (_date) => {\n const dayOfWeek = _date.getDay();\n return subDays(_date, dayOfWeek);\n};\n\n/**\n * Set date to the end of the week (Saturday)\n *\n * @param {Date} _date the date to adjust\n * @param {number} numWeeks the difference in weeks\n * @returns {Date} the adjusted date\n */\nconst endOfWeek = (_date) => {\n const dayOfWeek = _date.getDay();\n return addDays(_date, 6 - dayOfWeek);\n};\n\n/**\n * Add months to date and keep date within month\n *\n * @param {Date} _date the date to adjust\n * @param {number} numMonths the difference in months\n * @returns {Date} the adjusted date\n */\nconst addMonths = (_date, numMonths) => {\n const newDate = new Date(_date.getTime());\n\n const dateMonth = (newDate.getMonth() + 12 + numMonths) % 12;\n newDate.setMonth(newDate.getMonth() + numMonths);\n keepDateWithinMonth(newDate, dateMonth);\n\n return newDate;\n};\n\n/**\n * Subtract months from date\n *\n * @param {Date} _date the date to adjust\n * @param {number} numMonths the difference in months\n * @returns {Date} the adjusted date\n */\nconst subMonths = (_date, numMonths) => addMonths(_date, -numMonths);\n\n/**\n * Add years to date and keep date within month\n *\n * @param {Date} _date the date to adjust\n * @param {number} numYears the difference in years\n * @returns {Date} the adjusted date\n */\nconst addYears = (_date, numYears) => addMonths(_date, numYears * 12);\n\n/**\n * Subtract years from date\n *\n * @param {Date} _date the date to adjust\n * @param {number} numYears the difference in years\n * @returns {Date} the adjusted date\n */\nconst subYears = (_date, numYears) => addYears(_date, -numYears);\n\n/**\n * Set months of date\n *\n * @param {Date} _date the date to adjust\n * @param {number} month zero-indexed month to set\n * @returns {Date} the adjusted date\n */\nconst setMonth = (_date, month) => {\n const newDate = new Date(_date.getTime());\n\n newDate.setMonth(month);\n keepDateWithinMonth(newDate, month);\n\n return newDate;\n};\n\n/**\n * Set year of date\n *\n * @param {Date} _date the date to adjust\n * @param {number} year the year to set\n * @returns {Date} the adjusted date\n */\nconst setYear = (_date, year) => {\n const newDate = new Date(_date.getTime());\n\n const month = newDate.getMonth();\n newDate.setFullYear(year);\n keepDateWithinMonth(newDate, month);\n\n return newDate;\n};\n\n/**\n * Return the earliest date\n *\n * @param {Date} dateA date to compare\n * @param {Date} dateB date to compare\n * @returns {Date} the earliest date\n */\nconst min = (dateA, dateB) => {\n let newDate = dateA;\n\n if (dateB < dateA) {\n newDate = dateB;\n }\n\n return new Date(newDate.getTime());\n};\n\n/**\n * Return the latest date\n *\n * @param {Date} dateA date to compare\n * @param {Date} dateB date to compare\n * @returns {Date} the latest date\n */\nconst max = (dateA, dateB) => {\n let newDate = dateA;\n\n if (dateB > dateA) {\n newDate = dateB;\n }\n\n return new Date(newDate.getTime());\n};\n\n/**\n * Check if dates are the in the same year\n *\n * @param {Date} dateA date to compare\n * @param {Date} dateB date to compare\n * @returns {boolean} are dates in the same year\n */\nconst isSameYear = (dateA, dateB) => {\n return dateA && dateB && dateA.getFullYear() === dateB.getFullYear();\n};\n\n/**\n * Check if dates are the in the same month\n *\n * @param {Date} dateA date to compare\n * @param {Date} dateB date to compare\n * @returns {boolean} are dates in the same month\n */\nconst isSameMonth = (dateA, dateB) => {\n return isSameYear(dateA, dateB) && dateA.getMonth() === dateB.getMonth();\n};\n\n/**\n * Check if dates are the same date\n *\n * @param {Date} dateA the date to compare\n * @param {Date} dateA the date to compare\n * @returns {boolean} are dates the same date\n */\nconst isSameDay = (dateA, dateB) => {\n return isSameMonth(dateA, dateB) && dateA.getDate() === dateB.getDate();\n};\n\n/**\n * return a new date within minimum and maximum date\n *\n * @param {Date} date date to check\n * @param {Date} minDate minimum date to allow\n * @param {Date} maxDate maximum date to allow\n * @returns {Date} the date between min and max\n */\nconst keepDateBetweenMinAndMax = (date, minDate, maxDate) => {\n let newDate = date;\n\n if (date < minDate) {\n newDate = minDate;\n } else if (maxDate && date > maxDate) {\n newDate = maxDate;\n }\n\n return new Date(newDate.getTime());\n};\n\n/**\n * Check if dates is valid.\n *\n * @param {Date} date date to check\n * @param {Date} minDate minimum date to allow\n * @param {Date} maxDate maximum date to allow\n * @return {boolean} is there a day within the month within min and max dates\n */\nconst isDateWithinMinAndMax = (date, minDate, maxDate) =>\n date >= minDate && (!maxDate || date <= maxDate);\n\n/**\n * Check if dates month is invalid.\n *\n * @param {Date} date date to check\n * @param {Date} minDate minimum date to allow\n * @param {Date} maxDate maximum date to allow\n * @return {boolean} is the month outside min or max dates\n */\nconst isDatesMonthOutsideMinOrMax = (date, minDate, maxDate) => {\n return (\n lastDayOfMonth(date) < minDate || (maxDate && startOfMonth(date) > maxDate)\n );\n};\n\n/**\n * Check if dates year is invalid.\n *\n * @param {Date} date date to check\n * @param {Date} minDate minimum date to allow\n * @param {Date} maxDate maximum date to allow\n * @return {boolean} is the month outside min or max dates\n */\nconst isDatesYearOutsideMinOrMax = (date, minDate, maxDate) => {\n return (\n lastDayOfMonth(setMonth(date, 11)) < minDate ||\n (maxDate && startOfMonth(setMonth(date, 0)) > maxDate)\n );\n};\n\n/**\n * Parse a date with format M-D-YY\n *\n * @param {string} dateString the date string to parse\n * @param {string} dateFormat the format of the date string\n * @param {boolean} adjustDate should the date be adjusted\n * @returns {Date} the parsed date\n */\nconst parseDateString = (\n dateString,\n dateFormat = INTERNAL_DATE_FORMAT,\n adjustDate = false\n) => {\n let date;\n let month;\n let day;\n let year;\n let parsed;\n\n if (dateString) {\n let monthStr, dayStr, yearStr;\n\n if (dateFormat === DEFAULT_EXTERNAL_DATE_FORMAT) {\n [monthStr, dayStr, yearStr] = dateString.split(\"/\");\n } else {\n [yearStr, monthStr, dayStr] = dateString.split(\"-\");\n }\n\n if (yearStr) {\n parsed = parseInt(yearStr, 10);\n if (!Number.isNaN(parsed)) {\n year = parsed;\n if (adjustDate) {\n year = Math.max(0, year);\n if (yearStr.length < 3) {\n const currentYear = today().getFullYear();\n const currentYearStub =\n currentYear - (currentYear % 10 ** yearStr.length);\n year = currentYearStub + parsed;\n }\n }\n }\n }\n\n if (monthStr) {\n parsed = parseInt(monthStr, 10);\n if (!Number.isNaN(parsed)) {\n month = parsed;\n if (adjustDate) {\n month = Math.max(1, month);\n month = Math.min(12, month);\n }\n }\n }\n\n if (month && dayStr && year != null) {\n parsed = parseInt(dayStr, 10);\n if (!Number.isNaN(parsed)) {\n day = parsed;\n if (adjustDate) {\n const lastDayOfTheMonth = setDate(year, month, 0).getDate();\n day = Math.max(1, day);\n day = Math.min(lastDayOfTheMonth, day);\n }\n }\n }\n\n if (month && day && year != null) {\n date = setDate(year, month - 1, day);\n }\n }\n\n return date;\n};\n\n/**\n * Format a date to format MM-DD-YYYY\n *\n * @param {Date} date the date to format\n * @param {string} dateFormat the format of the date string\n * @returns {string} the formatted date string\n */\nconst formatDate = (date, dateFormat = INTERNAL_DATE_FORMAT) => {\n const padZeros = (value, length) => {\n return `0000${value}`.slice(-length);\n };\n\n const month = date.getMonth() + 1;\n const day = date.getDate();\n const year = date.getFullYear();\n\n if (dateFormat === DEFAULT_EXTERNAL_DATE_FORMAT) {\n return [padZeros(month, 2), padZeros(day, 2), padZeros(year, 4)].join(\"/\");\n }\n\n return [padZeros(year, 4), padZeros(month, 2), padZeros(day, 2)].join(\"-\");\n};\n\n// #endregion Date Manipulation Functions\n\n/**\n * Create a grid string from an array of html strings\n *\n * @param {string[]} htmlArray the array of html items\n * @param {number} rowSize the length of a row\n * @returns {string} the grid string\n */\nconst listToGridHtml = (htmlArray, rowSize) => {\n const grid = [];\n let row = [];\n\n let i = 0;\n while (i < htmlArray.length) {\n row = [];\n while (i < htmlArray.length && row.length < rowSize) {\n row.push(`<td>${htmlArray[i]}</td>`);\n i += 1;\n }\n grid.push(`<tr>${row.join(\"\")}</tr>`);\n }\n\n return grid.join(\"\");\n};\n\n/**\n * set the value of the element and dispatch a change event\n *\n * @param {HTMLInputElement} 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 properties and elements within the date picker.\n * @typedef {Object} DatePickerContext\n * @property {HTMLDivElement} calendarEl\n * @property {HTMLElement} datePickerEl\n * @property {HTMLInputElement} internalInputEl\n * @property {HTMLInputElement} externalInputEl\n * @property {HTMLDivElement} statusEl\n * @property {HTMLDivElement} firstYearChunkEl\n * @property {Date} calendarDate\n * @property {Date} minDate\n * @property {Date} maxDate\n * @property {Date} selectedDate\n * @property {Date} rangeDate\n * @property {Date} defaultDate\n */\n\n/**\n * Get an object of the properties and elements belonging directly to the given\n * date picker component.\n *\n * @param {HTMLElement} el the element within the date picker\n * @returns {DatePickerContext} elements\n */\nconst getDatePickerContext = (el) => {\n const datePickerEl = el.closest(DATE_PICKER);\n\n if (!datePickerEl) {\n throw new Error(`Element is missing outer ${DATE_PICKER}`);\n }\n\n const internalInputEl = datePickerEl.querySelector(\n DATE_PICKER_INTERNAL_INPUT\n );\n const externalInputEl = datePickerEl.querySelector(\n DATE_PICKER_EXTERNAL_INPUT\n );\n const calendarEl = datePickerEl.querySelector(DATE_PICKER_CALENDAR);\n const toggleBtnEl = datePickerEl.querySelector(DATE_PICKER_BUTTON);\n const statusEl = datePickerEl.querySelector(DATE_PICKER_STATUS);\n const firstYearChunkEl = datePickerEl.querySelector(CALENDAR_YEAR);\n\n const inputDate = parseDateString(\n externalInputEl.value,\n DEFAULT_EXTERNAL_DATE_FORMAT,\n true\n );\n const selectedDate = parseDateString(internalInputEl.value);\n\n const calendarDate = parseDateString(calendarEl.dataset.value);\n const minDate = parseDateString(datePickerEl.dataset.minDate);\n const maxDate = parseDateString(datePickerEl.dataset.maxDate);\n const rangeDate = parseDateString(datePickerEl.dataset.rangeDate);\n const defaultDate = parseDateString(datePickerEl.dataset.defaultDate);\n\n if (minDate && maxDate && minDate > maxDate) {\n throw new Error(\"Minimum date cannot be after maximum date\");\n }\n\n return {\n calendarDate,\n minDate,\n toggleBtnEl,\n selectedDate,\n maxDate,\n firstYearChunkEl,\n datePickerEl,\n inputDate,\n internalInputEl,\n externalInputEl,\n calendarEl,\n rangeDate,\n defaultDate,\n statusEl,\n };\n};\n\n/**\n * Disable the date picker component\n *\n * @param {HTMLElement} el An element within the date picker component\n */\nconst disable = (el) => {\n const { externalInputEl, toggleBtnEl } = getDatePickerContext(el);\n\n toggleBtnEl.disabled = true;\n externalInputEl.disabled = true;\n};\n\n/**\n * Enable the date picker component\n *\n * @param {HTMLElement} el An element within the date picker component\n */\nconst enable = (el) => {\n const { externalInputEl, toggleBtnEl } = getDatePickerContext(el);\n\n toggleBtnEl.disabled = false;\n externalInputEl.disabled = false;\n};\n\n// #region Validation\n\n/**\n * Validate the value in the input as a valid date of format M/D/YYYY\n *\n * @param {HTMLElement} el An element within the date picker component\n */\nconst isDateInputInvalid = (el) => {\n const { externalInputEl, minDate, maxDate } = getDatePickerContext(el);\n\n const dateString = externalInputEl.value;\n let isInvalid = false;\n\n if (dateString) {\n isInvalid = true;\n\n const dateStringParts = dateString.split(\"/\");\n const [month, day, year] = dateStringParts.map((str) => {\n let value;\n const parsed = parseInt(str, 10);\n if (!Number.isNaN(parsed)) value = parsed;\n return value;\n });\n\n if (month && day && year != null) {\n const checkDate = setDate(year, month - 1, day);\n\n if (\n checkDate.getMonth() === month - 1 &&\n checkDate.getDate() === day &&\n checkDate.getFullYear() === year &&\n dateStringParts[2].length === 4 &&\n isDateWithinMinAndMax(checkDate, minDate, maxDate)\n ) {\n isInvalid = false;\n }\n }\n }\n\n return isInvalid;\n};\n\n/**\n * Validate the value in the input as a valid date of format M/D/YYYY\n *\n * @param {HTMLElement} el An element within the date picker component\n */\nconst validateDateInput = (el) => {\n const { externalInputEl } = getDatePickerContext(el);\n const isInvalid = isDateInputInvalid(externalInputEl);\n\n if (isInvalid && !externalInputEl.validationMessage) {\n externalInputEl.setCustomValidity(VALIDATION_MESSAGE);\n }\n\n if (!isInvalid && externalInputEl.validationMessage === VALIDATION_MESSAGE) {\n externalInputEl.setCustomValidity(\"\");\n }\n};\n\n// #endregion Validation\n\n/**\n * Enable the date picker component\n *\n * @param {HTMLElement} el An element within the date picker component\n */\nconst reconcileInputValues = (el) => {\n const { internalInputEl, inputDate } = getDatePickerContext(el);\n let newValue = \"\";\n\n if (inputDate && !isDateInputInvalid(el)) {\n newValue = formatDate(inputDate);\n }\n\n if (internalInputEl.value !== newValue) {\n changeElementValue(internalInputEl, newValue);\n }\n};\n\n/**\n * Select the value of the date picker inputs.\n *\n * @param {HTMLButtonElement} el An element within the date picker component\n * @param {string} dateString The date string to update in YYYY-MM-DD format\n */\nconst setCalendarValue = (el, dateString) => {\n const parsedDate = parseDateString(dateString);\n\n if (parsedDate) {\n const formattedDate = formatDate(parsedDate, DEFAULT_EXTERNAL_DATE_FORMAT);\n\n const {\n datePickerEl,\n internalInputEl,\n externalInputEl,\n } = getDatePickerContext(el);\n\n changeElementValue(internalInputEl, dateString);\n changeElementValue(externalInputEl, formattedDate);\n\n validateDateInput(datePickerEl);\n }\n};\n\n/**\n * Enhance an input with the date picker elements\n *\n * @param {HTMLElement} el The initial wrapping element of the date picker component\n */\nconst enhanceDatePicker = (el) => {\n const datePickerEl = el.closest(DATE_PICKER);\n const defaultValue = datePickerEl.dataset.defaultValue;\n\n const internalInputEl = datePickerEl.querySelector(`input`);\n\n if (!internalInputEl) {\n throw new Error(`${DATE_PICKER} is missing inner input`);\n }\n\n if (internalInputEl.value) {\n internalInputEl.value = \"\";\n }\n\n const minDate = parseDateString(\n datePickerEl.dataset.minDate || internalInputEl.getAttribute(\"min\")\n );\n datePickerEl.dataset.minDate = minDate\n ? formatDate(minDate)\n : DEFAULT_MIN_DATE;\n\n const maxDate = parseDateString(\n datePickerEl.dataset.maxDate || internalInputEl.getAttribute(\"max\")\n );\n if (maxDate) {\n datePickerEl.dataset.maxDate = formatDate(maxDate);\n }\n\n const calendarWrapper = document.createElement(\"div\");\n calendarWrapper.classList.add(DATE_PICKER_WRAPPER_CLASS);\n calendarWrapper.tabIndex = \"-1\";\n\n const externalInputEl = internalInputEl.cloneNode();\n externalInputEl.classList.add(DATE_PICKER_EXTERNAL_INPUT_CLASS);\n externalInputEl.type = \"text\";\n externalInputEl.name = \"\";\n\n calendarWrapper.appendChild(externalInputEl);\n calendarWrapper.insertAdjacentHTML(\n \"beforeend\",\n [\n `<button type=\"button\" class=\"${DATE_PICKER_BUTTON_CLASS}\" aria-haspopup=\"true\" aria-label=\"Toggle calendar\">&nbsp;</button>`,\n `<div class=\"${DATE_PICKER_CALENDAR_CLASS}\" role=\"dialog\" aria-modal=\"true\" hidden></div>`,\n `<div class=\"usa-sr-only ${DATE_PICKER_STATUS_CLASS}\" role=\"status\" aria-live=\"polite\"></div>`,\n ].join(\"\")\n );\n\n internalInputEl.setAttribute(\"aria-hidden\", \"true\");\n internalInputEl.setAttribute(\"tabindex\", \"-1\");\n internalInputEl.classList.add(\n \"usa-sr-only\",\n DATE_PICKER_INTERNAL_INPUT_CLASS\n );\n internalInputEl.id = \"\";\n internalInputEl.required = false;\n\n datePickerEl.appendChild(calendarWrapper);\n datePickerEl.classList.add(DATE_PICKER_INITIALIZED_CLASS);\n\n if (defaultValue) {\n setCalendarValue(datePickerEl, defaultValue);\n }\n\n if (internalInputEl.disabled) {\n disable(datePickerEl);\n internalInputEl.disabled = false;\n }\n};\n\n// #region Calendar - Date Selection View\n\n/**\n * render the calendar.\n *\n * @param {HTMLElement} el An element within the date picker component\n * @param {Date} _dateToDisplay a date to render on the calendar\n * @returns {HTMLElement} a reference to the new calendar element\n */\nconst renderCalendar = (el, _dateToDisplay) => {\n const {\n datePickerEl,\n calendarEl,\n statusEl,\n selectedDate,\n maxDate,\n minDate,\n rangeDate,\n } = getDatePickerContext(el);\n const todaysDate = today();\n let dateToDisplay = _dateToDisplay || todaysDate;\n\n const calendarWasHidden = calendarEl.hidden;\n\n const focusedDate = addDays(dateToDisplay, 0);\n const focusedMonth = dateToDisplay.getMonth();\n const focusedYear = dateToDisplay.getFullYear();\n\n const prevMonth = subMonths(dateToDisplay, 1);\n const nextMonth = addMonths(dateToDisplay, 1);\n\n const currentFormattedDate = formatDate(dateToDisplay);\n\n const firstOfMonth = startOfMonth(dateToDisplay);\n const prevButtonsDisabled = isSameMonth(dateToDisplay, minDate);\n const nextButtonsDisabled = isSameMonth(dateToDisplay, maxDate);\n\n const rangeConclusionDate = selectedDate || dateToDisplay;\n const rangeStartDate = rangeDate && min(rangeConclusionDate, rangeDate);\n const rangeEndDate = rangeDate && max(rangeConclusionDate, rangeDate);\n\n const withinRangeStartDate = rangeDate && addDays(rangeStartDate, 1);\n const withinRangeEndDate = rangeDate && subDays(rangeEndDate, 1);\n\n const monthLabel = MONTH_LABELS[focusedMonth];\n\n const generateDateHtml = (dateToRender) => {\n const classes = [CALENDAR_DATE_CLASS];\n const day = dateToRender.getDate();\n const month = dateToRender.getMonth();\n const year = dateToRender.getFullYear();\n const dayOfWeek = dateToRender.getDay();\n\n const formattedDate = formatDate(dateToRender);\n\n let tabindex = \"-1\";\n\n const isDisabled = !isDateWithinMinAndMax(dateToRender, minDate, maxDate);\n const isSelected = isSameDay(dateToRender, selectedDate);\n\n if (isSameMonth(dateToRender, prevMonth)) {\n classes.push(CALENDAR_DATE_PREVIOUS_MONTH_CLASS);\n }\n\n if (isSameMonth(dateToRender, focusedDate)) {\n classes.push(CALENDAR_DATE_CURRENT_MONTH_CLASS);\n }\n\n if (isSameMonth(dateToRender, nextMonth)) {\n classes.push(CALENDAR_DATE_NEXT_MONTH_CLASS);\n }\n\n if (isSelected) {\n classes.push(CALENDAR_DATE_SELECTED_CLASS);\n }\n\n if (isSameDay(dateToRender, todaysDate)) {\n classes.push(CALENDAR_DATE_TODAY_CLASS);\n }\n\n if (rangeDate) {\n if (isSameDay(dateToRender, rangeDate)) {\n classes.push(CALENDAR_DATE_RANGE_DATE_CLASS);\n }\n\n if (isSameDay(dateToRender, rangeStartDate)) {\n classes.push(CALENDAR_DATE_RANGE_DATE_START_CLASS);\n }\n\n if (isSameDay(dateToRender, rangeEndDate)) {\n classes.push(CALENDAR_DATE_RANGE_DATE_END_CLASS);\n }\n\n if (\n isDateWithinMinAndMax(\n dateToRender,\n withinRangeStartDate,\n withinRangeEndDate\n )\n ) {\n classes.push(CALENDAR_DATE_WITHIN_RANGE_CLASS);\n }\n }\n\n if (isSameDay(dateToRender, focusedDate)) {\n tabindex = \"0\";\n classes.push(CALENDAR_DATE_FOCUSED_CLASS);\n }\n\n const monthStr = MONTH_LABELS[month];\n const dayStr = DAY_OF_WEEK_LABELS[dayOfWeek];\n\n return `<button\n type=\"button\"\n tabindex=\"${tabindex}\"\n class=\"${classes.join(\" \")}\" \n data-day=\"${day}\" \n data-month=\"${month + 1}\" \n data-year=\"${year}\" \n data-value=\"${formattedDate}\"\n aria-label=\"${day} ${monthStr} ${year} ${dayStr}\"\n aria-selected=\"${isSelected ? \"true\" : \"false\"}\"\n ${isDisabled ? `disabled=\"disabled\"` : \"\"}\n >${day}</button>`;\n };\n\n // set date to first rendered day\n dateToDisplay = startOfWeek(firstOfMonth);\n\n const days = [];\n\n while (\n days.length < 28 ||\n dateToDisplay.getMonth() === focusedMonth ||\n days.length % 7 !== 0\n ) {\n days.push(generateDateHtml(dateToDisplay));\n dateToDisplay = addDays(dateToDisplay, 1);\n }\n\n const datesHtml = listToGridHtml(days, 7);\n\n const newCalendar = calendarEl.cloneNode();\n newCalendar.dataset.value = currentFormattedDate;\n newCalendar.style.top = `${datePickerEl.offsetHeight}px`;\n newCalendar.hidden = false;\n newCalendar.innerHTML = `<div tabindex=\"-1\" class=\"${CALENDAR_DATE_PICKER_CLASS}\">\n <div class=\"${CALENDAR_ROW_CLASS}\">\n <div class=\"${CALENDAR_CELL_CLASS} ${CALENDAR_CELL_CENTER_ITEMS_CLASS}\">\n <button \n type=\"button\"\n class=\"${CALENDAR_PREVIOUS_YEAR_CLASS}\"\n aria-label=\"Navigate back one year\"\n ${prevButtonsDisabled ? `disabled=\"disabled\"` : \"\"}\n >&nbsp;</button>\n </div>\n <div class=\"${CALENDAR_CELL_CLASS} ${CALENDAR_CELL_CENTER_ITEMS_CLASS}\">\n <button \n type=\"button\"\n class=\"${CALENDAR_PREVIOUS_MONTH_CLASS}\"\n aria-label=\"Navigate back one month\"\n ${prevButtonsDisabled ? `disabled=\"disabled\"` : \"\"}\n >&nbsp;</button>\n </div>\n <div class=\"${CALENDAR_CELL_CLASS} ${CALENDAR_MONTH_LABEL_CLASS}\">\n <button \n type=\"button\"\n class=\"${CALENDAR_MONTH_SELECTION_CLASS}\" aria-label=\"${monthLabel}. Click to select month\"\n >${monthLabel}</button>\n <button \n type=\"button\"\n class=\"${CALENDAR_YEAR_SELECTION_CLASS}\" aria-label=\"${focusedYear}. Click to select year\"\n >${focusedYear}</button>\n </div>\n <div class=\"${CALENDAR_CELL_CLASS} ${CALENDAR_CELL_CENTER_ITEMS_CLASS}\">\n <button \n type=\"button\"\n class=\"${CALENDAR_NEXT_MONTH_CLASS}\"\n aria-label=\"Navigate forward one month\"\n ${nextButtonsDisabled ? `disabled=\"disabled\"` : \"\"}\n >&nbsp;</button>\n </div>\n <div class=\"${CALENDAR_CELL_CLASS} ${CALENDAR_CELL_CENTER_ITEMS_CLASS}\">\n <button \n type=\"button\"\n class=\"${CALENDAR_NEXT_YEAR_CLASS}\"\n aria-label=\"Navigate forward one year\"\n ${nextButtonsDisabled ? `disabled=\"disabled\"` : \"\"}\n >&nbsp;</button>\n </div>\n </div>\n <table class=\"${CALENDAR_TABLE_CLASS}\" role=\"presentation\">\n <thead>\n <tr>\n <th class=\"${CALENDAR_DAY_OF_WEEK_CLASS}\" scope=\"col\" aria-label=\"Sunday\">S</th>\n <th class=\"${CALENDAR_DAY_OF_WEEK_CLASS}\" scope=\"col\" aria-label=\"Monday\">M</th>\n <th class=\"${CALENDAR_DAY_OF_WEEK_CLASS}\" scope=\"col\" aria-label=\"Tuesday\">T</th>\n <th class=\"${CALENDAR_DAY_OF_WEEK_CLASS}\" scope=\"col\" aria-label=\"Wednesday\">W</th>\n <th class=\"${CALENDAR_DAY_OF_WEEK_CLASS}\" scope=\"col\" aria-label=\"Thursday\">Th</th>\n <th class=\"${CALENDAR_DAY_OF_WEEK_CLASS}\" scope=\"col\" aria-label=\"Friday\">F</th>\n <th class=\"${CALENDAR_DAY_OF_WEEK_CLASS}\" scope=\"col\" aria-label=\"Saturday\">S</th>\n </tr>\n </thead>\n <tbody>\n ${datesHtml}\n </tbody>\n </table>\n </div>`;\n\n calendarEl.parentNode.replaceChild(newCalendar, calendarEl);\n\n datePickerEl.classList.add(DATE_PICKER_ACTIVE_CLASS);\n\n const statuses = [];\n\n if (isSameDay(selectedDate, focusedDate)) {\n statuses.push(\"Selected date\");\n }\n\n if (calendarWasHidden) {\n statuses.push(\n \"You can navigate by day using left and right arrows\",\n \"Weeks by using up and down arrows\",\n \"Months by using page up and page down keys\",\n \"Years by using shift plus page up and shift plus page down\",\n \"Home and end keys navigate to the beginning and end of a week\"\n );\n statusEl.textContent = \"\";\n } else {\n statuses.push(`${monthLabel} ${focusedYear}`);\n }\n statusEl.textContent = statuses.join(\". \");\n\n return newCalendar;\n};\n\n/**\n * Navigate back one year and display the calendar.\n *\n * @param {HTMLButtonElement} _buttonEl An element within the date picker component\n */\nconst displayPreviousYear = (_buttonEl) => {\n if (_buttonEl.disabled) return;\n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(\n _buttonEl\n );\n let date = subYears(calendarDate, 1);\n date = keepDateBetweenMinAndMax(date, minDate, maxDate);\n const newCalendar = renderCalendar(calendarEl, date);\n\n let nextToFocus = newCalendar.querySelector(CALENDAR_PREVIOUS_YEAR);\n if (nextToFocus.disabled) {\n nextToFocus = newCalendar.querySelector(CALENDAR_DATE_PICKER);\n }\n nextToFocus.focus();\n};\n\n/**\n * Navigate back one month and display the calendar.\n *\n * @param {HTMLButtonElement} _buttonEl An element within the date picker component\n */\nconst displayPreviousMonth = (_buttonEl) => {\n if (_buttonEl.disabled) return;\n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(\n _buttonEl\n );\n let date = subMonths(calendarDate, 1);\n date = keepDateBetweenMinAndMax(date, minDate, maxDate);\n const newCalendar = renderCalendar(calendarEl, date);\n\n let nextToFocus = newCalendar.querySelector(CALENDAR_PREVIOUS_MONTH);\n if (nextToFocus.disabled) {\n nextToFocus = newCalendar.querySelector(CALENDAR_DATE_PICKER);\n }\n nextToFocus.focus();\n};\n\n/**\n * Navigate forward one month and display the calendar.\n *\n * @param {HTMLButtonElement} _buttonEl An element within the date picker component\n */\nconst displayNextMonth = (_buttonEl) => {\n if (_buttonEl.disabled) return;\n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(\n _buttonEl\n );\n let date = addMonths(calendarDate, 1);\n date = keepDateBetweenMinAndMax(date, minDate, maxDate);\n const newCalendar = renderCalendar(calendarEl, date);\n\n let nextToFocus = newCalendar.querySelector(CALENDAR_NEXT_MONTH);\n if (nextToFocus.disabled) {\n nextToFocus = newCalendar.querySelector(CALENDAR_DATE_PICKER);\n }\n nextToFocus.focus();\n};\n\n/**\n * Navigate forward one year and display the calendar.\n *\n * @param {HTMLButtonElement} _buttonEl An element within the date picker component\n */\nconst displayNextYear = (_buttonEl) => {\n if (_buttonEl.disabled) return;\n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(\n _buttonEl\n );\n let date = addYears(calendarDate, 1);\n date = keepDateBetweenMinAndMax(date, minDate, maxDate);\n const newCalendar = renderCalendar(calendarEl, date);\n\n let nextToFocus = newCalendar.querySelector(CALENDAR_NEXT_YEAR);\n if (nextToFocus.disabled) {\n nextToFocus = newCalendar.querySelector(CALENDAR_DATE_PICKER);\n }\n nextToFocus.focus();\n};\n\n/**\n * Hide the calendar of a date picker component.\n *\n * @param {HTMLElement} el An element within the date picker component\n */\nconst hideCalendar = (el) => {\n const { datePickerEl, calendarEl, statusEl } = getDatePickerContext(el);\n\n datePickerEl.classList.remove(DATE_PICKER_ACTIVE_CLASS);\n calendarEl.hidden = true;\n statusEl.textContent = \"\";\n};\n\n/**\n * Select a date within the date picker component.\n *\n * @param {HTMLButtonElement} calendarDateEl A date element within the date picker component\n */\nconst selectDate = (calendarDateEl) => {\n if (calendarDateEl.disabled) return;\n\n const { datePickerEl, externalInputEl } = getDatePickerContext(\n calendarDateEl\n );\n\n setCalendarValue(calendarDateEl, calendarDateEl.dataset.value);\n hideCalendar(datePickerEl);\n\n externalInputEl.focus();\n};\n\n/**\n * Toggle the calendar.\n *\n * @param {HTMLButtonElement} el An element within the date picker component\n */\nconst toggleCalendar = (el) => {\n if (el.disabled) return;\n const {\n calendarEl,\n inputDate,\n minDate,\n maxDate,\n defaultDate,\n } = getDatePickerContext(el);\n\n if (calendarEl.hidden) {\n const dateToDisplay = keepDateBetweenMinAndMax(\n inputDate || defaultDate || today(),\n minDate,\n maxDate\n );\n const newCalendar = renderCalendar(calendarEl, dateToDisplay);\n newCalendar.querySelector(CALENDAR_DATE_FOCUSED).focus();\n } else {\n hideCalendar(el);\n }\n};\n\n/**\n * Update the calendar when visible.\n *\n * @param {HTMLElement} el an element within the date picker\n */\nconst updateCalendarIfVisible = (el) => {\n const { calendarEl, inputDate, minDate, maxDate } = getDatePickerContext(el);\n const calendarShown = !calendarEl.hidden;\n\n if (calendarShown && inputDate) {\n const dateToDisplay = keepDateBetweenMinAndMax(inputDate, minDate, maxDate);\n renderCalendar(calendarEl, dateToDisplay);\n }\n};\n\n// #endregion Calendar - Date Selection View\n\n// #region Calendar - Month Selection View\n/**\n * Display the month selection screen in the date picker.\n *\n * @param {HTMLButtonElement} el An element within the date picker component\n * @returns {HTMLElement} a reference to the new calendar element\n */\nconst displayMonthSelection = (el, monthToDisplay) => {\n const {\n calendarEl,\n statusEl,\n calendarDate,\n minDate,\n maxDate,\n } = getDatePickerContext(el);\n\n const selectedMonth = calendarDate.getMonth();\n const focusedMonth = monthToDisplay == null ? selectedMonth : monthToDisplay;\n\n const months = MONTH_LABELS.map((month, index) => {\n const monthToCheck = setMonth(calendarDate, index);\n\n const isDisabled = isDatesMonthOutsideMinOrMax(\n monthToCheck,\n minDate,\n maxDate\n );\n\n let tabindex = \"-1\";\n\n const classes = [CALENDAR_MONTH_CLASS];\n const isSelected = index === selectedMonth;\n\n if (index === focusedMonth) {\n tabindex = \"0\";\n classes.push(CALENDAR_MONTH_FOCUSED_CLASS);\n }\n\n if (isSelected) {\n classes.push(CALENDAR_MONTH_SELECTED_CLASS);\n }\n\n return `<button \n type=\"button\"\n tabindex=\"${tabindex}\"\n class=\"${classes.join(\" \")}\" \n data-value=\"${index}\"\n data-label=\"${month}\"\n aria-selected=\"${isSelected ? \"true\" : \"false\"}\"\n ${isDisabled ? `disabled=\"disabled\"` : \"\"}\n >${month}</button>`;\n });\n\n const monthsHtml = `<div tabindex=\"-1\" class=\"${CALENDAR_MONTH_PICKER_CLASS}\">\n <table class=\"${CALENDAR_TABLE_CLASS}\" role=\"presentation\">\n <tbody>\n ${listToGridHtml(months, 3)}\n </tbody>\n </table>\n </div>`;\n\n const newCalendar = calendarEl.cloneNode();\n newCalendar.innerHTML = monthsHtml;\n calendarEl.parentNode.replaceChild(newCalendar, calendarEl);\n\n statusEl.textContent = \"Select a month.\";\n\n return newCalendar;\n};\n\n/**\n * Select a month in the date picker component.\n *\n * @param {HTMLButtonElement} monthEl An month element within the date picker component\n */\nconst selectMonth = (monthEl) => {\n if (monthEl.disabled) return;\n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(\n monthEl\n );\n const selectedMonth = parseInt(monthEl.dataset.value, 10);\n let date = setMonth(calendarDate, selectedMonth);\n date = keepDateBetweenMinAndMax(date, minDate, maxDate);\n const newCalendar = renderCalendar(calendarEl, date);\n newCalendar.querySelector(CALENDAR_DATE_FOCUSED).focus();\n};\n\n// #endregion Calendar - Month Selection View\n\n// #region Calendar - Year Selection View\n\n/**\n * Display the year selection screen in the date picker.\n *\n * @param {HTMLButtonElement} el An element within the date picker component\n * @param {number} yearToDisplay year to display in year selection\n * @returns {HTMLElement} a reference to the new calendar element\n */\nconst displayYearSelection = (el, yearToDisplay) => {\n const {\n calendarEl,\n statusEl,\n calendarDate,\n minDate,\n maxDate,\n } = getDatePickerContext(el);\n\n const selectedYear = calendarDate.getFullYear();\n const focusedYear = yearToDisplay == null ? selectedYear : yearToDisplay;\n\n let yearToChunk = focusedYear;\n yearToChunk -= yearToChunk % YEAR_CHUNK;\n yearToChunk = Math.max(0, yearToChunk);\n\n const prevYearChunkDisabled = isDatesYearOutsideMinOrMax(\n setYear(calendarDate, yearToChunk - 1),\n minDate,\n maxDate\n );\n\n const nextYearChunkDisabled = isDatesYearOutsideMinOrMax(\n setYear(calendarDate, yearToChunk + YEAR_CHUNK),\n minDate,\n maxDate\n );\n\n const years = [];\n let yearIndex = yearToChunk;\n while (years.length < YEAR_CHUNK) {\n const isDisabled = isDatesYearOutsideMinOrMax(\n setYear(calendarDate, yearIndex),\n minDate,\n maxDate\n );\n\n let tabindex = \"-1\";\n\n const classes = [CALENDAR_YEAR_CLASS];\n const isSelected = yearIndex === selectedYear;\n\n if (yearIndex === focusedYear) {\n tabindex = \"0\";\n classes.push(CALENDAR_YEAR_FOCUSED_CLASS);\n }\n\n if (isSelected) {\n classes.push(CALENDAR_YEAR_SELECTED_CLASS);\n }\n\n years.push(\n `<button \n type=\"button\"\n tabindex=\"${tabindex}\"\n class=\"${classes.join(\" \")}\" \n data-value=\"${yearIndex}\"\n aria-selected=\"${isSelected ? \"true\" : \"false\"}\"\n ${isDisabled ? `disabled=\"disabled\"` : \"\"}\n >${yearIndex}</button>`\n );\n yearIndex += 1;\n }\n\n const yearsHtml = listToGridHtml(years, 3);\n\n const newCalendar = calendarEl.cloneNode();\n newCalendar.innerHTML = `<div tabindex=\"-1\" class=\"${CALENDAR_YEAR_PICKER_CLASS}\">\n <table class=\"${CALENDAR_TABLE_CLASS}\" role=\"presentation\">\n <tbody>\n <tr>\n <td>\n <button\n type=\"button\"\n class=\"${CALENDAR_PREVIOUS_YEAR_CHUNK_CLASS}\" \n aria-label=\"Navigate back ${YEAR_CHUNK} years\"\n ${prevYearChunkDisabled ? `disabled=\"disabled\"` : \"\"}\n >&nbsp;</button>\n </td>\n <td colspan=\"3\">\n <table class=\"${CALENDAR_TABLE_CLASS}\" role=\"presentation\">\n <tbody>\n ${yearsHtml}\n </tbody>\n </table>\n </td>\n <td>\n <button\n type=\"button\"\n class=\"${CALENDAR_NEXT_YEAR_CHUNK_CLASS}\" \n aria-label=\"Navigate forward ${YEAR_CHUNK} years\"\n ${nextYearChunkDisabled ? `disabled=\"disabled\"` : \"\"}\n >&nbsp;</button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>`;\n calendarEl.parentNode.replaceChild(newCalendar, calendarEl);\n\n statusEl.textContent = `Showing years ${yearToChunk} to ${\n yearToChunk + YEAR_CHUNK - 1\n }. Select a year.`;\n\n return newCalendar;\n};\n\n/**\n * Navigate back by years and display the year selection screen.\n *\n * @param {HTMLButtonElement} el An element within the date picker component\n */\nconst displayPreviousYearChunk = (el) => {\n if (el.disabled) return;\n\n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(\n el\n );\n const yearEl = calendarEl.querySelector(CALENDAR_YEAR_FOCUSED);\n const selectedYear = parseInt(yearEl.textContent, 10);\n\n let adjustedYear = selectedYear - YEAR_CHUNK;\n adjustedYear = Math.max(0, adjustedYear);\n\n const date = setYear(calendarDate, adjustedYear);\n const cappedDate = keepDateBetweenMinAndMax(date, minDate, maxDate);\n const newCalendar = displayYearSelection(\n calendarEl,\n cappedDate.getFullYear()\n );\n\n let nextToFocus = newCalendar.querySelector(CALENDAR_PREVIOUS_YEAR_CHUNK);\n if (nextToFocus.disabled) {\n nextToFocus = newCalendar.querySelector(CALENDAR_YEAR_PICKER);\n }\n nextToFocus.focus();\n};\n\n/**\n * Navigate forward by years and display the year selection screen.\n *\n * @param {HTMLButtonElement} el An element within the date picker component\n */\nconst displayNextYearChunk = (el) => {\n if (el.disabled) return;\n\n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(\n el\n );\n const yearEl = calendarEl.querySelector(CALENDAR_YEAR_FOCUSED);\n const selectedYear = parseInt(yearEl.textContent, 10);\n\n let adjustedYear = selectedYear + YEAR_CHUNK;\n adjustedYear = Math.max(0, adjustedYear);\n\n const date = setYear(calendarDate, adjustedYear);\n const cappedDate = keepDateBetweenMinAndMax(date, minDate, maxDate);\n const newCalendar = displayYearSelection(\n calendarEl,\n cappedDate.getFullYear()\n );\n\n let nextToFocus = newCalendar.querySelector(CALENDAR_NEXT_YEAR_CHUNK);\n if (nextToFocus.disabled) {\n nextToFocus = newCalendar.querySelector(CALENDAR_YEAR_PICKER);\n }\n nextToFocus.focus();\n};\n\n/**\n * Select a year in the date picker component.\n *\n * @param {HTMLButtonElement} yearEl A year element within the date picker component\n */\nconst selectYear = (yearEl) => {\n if (yearEl.disabled) return;\n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(\n yearEl\n );\n const selectedYear = parseInt(yearEl.innerHTML, 10);\n let date = setYear(calendarDate, selectedYear);\n date = keepDateBetweenMinAndMax(date, minDate, maxDate);\n const newCalendar = renderCalendar(calendarEl, date);\n newCalendar.querySelector(CALENDAR_DATE_FOCUSED).focus();\n};\n\n// #endregion Calendar - Year Selection View\n\n// #region Calendar Event Handling\n\n/**\n * Hide the calendar.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleEscapeFromCalendar = (event) => {\n const { datePickerEl, externalInputEl } = getDatePickerContext(event.target);\n\n hideCalendar(datePickerEl);\n externalInputEl.focus();\n\n event.preventDefault();\n};\n\n// #endregion Calendar Event Handling\n\n// #region Calendar Date Event Handling\n\n/**\n * Adjust the date and display the calendar if needed.\n *\n * @param {function} adjustDateFn function that returns the adjusted date\n */\nconst adjustCalendar = (adjustDateFn) => {\n return (event) => {\n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(\n event.target\n );\n\n const date = adjustDateFn(calendarDate);\n\n const cappedDate = keepDateBetweenMinAndMax(date, minDate, maxDate);\n if (!isSameDay(calendarDate, cappedDate)) {\n const newCalendar = renderCalendar(calendarEl, cappedDate);\n newCalendar.querySelector(CALENDAR_DATE_FOCUSED).focus();\n }\n event.preventDefault();\n };\n};\n\n/**\n * Navigate back one week and display the calendar.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleUpFromDate = adjustCalendar((date) => subWeeks(date, 1));\n\n/**\n * Navigate forward one week and display the calendar.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleDownFromDate = adjustCalendar((date) => addWeeks(date, 1));\n\n/**\n * Navigate back one day and display the calendar.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleLeftFromDate = adjustCalendar((date) => subDays(date, 1));\n\n/**\n * Navigate forward one day and display the calendar.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleRightFromDate = adjustCalendar((date) => addDays(date, 1));\n\n/**\n * Navigate to the start of the week and display the calendar.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleHomeFromDate = adjustCalendar((date) => startOfWeek(date));\n\n/**\n * Navigate to the end of the week and display the calendar.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleEndFromDate = adjustCalendar((date) => endOfWeek(date));\n\n/**\n * Navigate forward one month and display the calendar.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handlePageDownFromDate = adjustCalendar((date) => addMonths(date, 1));\n\n/**\n * Navigate back one month and display the calendar.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handlePageUpFromDate = adjustCalendar((date) => subMonths(date, 1));\n\n/**\n * Navigate forward one year and display the calendar.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleShiftPageDownFromDate = adjustCalendar((date) => addYears(date, 1));\n\n/**\n * Navigate back one year and display the calendar.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleShiftPageUpFromDate = adjustCalendar((date) => subYears(date, 1));\n\n/**\n * display the calendar for the mousemove date.\n *\n * @param {MouseEvent} event The mousemove event\n * @param {HTMLButtonElement} dateEl A date element within the date picker component\n */\nconst handleMousemoveFromDate = (dateEl) => {\n if (dateEl.disabled) return;\n\n const calendarEl = dateEl.closest(DATE_PICKER_CALENDAR);\n\n const currentCalendarDate = calendarEl.dataset.value;\n const hoverDate = dateEl.dataset.value;\n\n if (hoverDate === currentCalendarDate) return;\n\n const dateToDisplay = parseDateString(hoverDate);\n const newCalendar = renderCalendar(calendarEl, dateToDisplay);\n newCalendar.querySelector(CALENDAR_DATE_FOCUSED).focus();\n};\n\n// #endregion Calendar Date Event Handling\n\n// #region Calendar Month Event Handling\n\n/**\n * Adjust the month and display the month selection screen if needed.\n *\n * @param {function} adjustMonthFn function that returns the adjusted month\n */\nconst adjustMonthSelectionScreen = (adjustMonthFn) => {\n return (event) => {\n const monthEl = event.target;\n const selectedMonth = parseInt(monthEl.dataset.value, 10);\n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(\n monthEl\n );\n const currentDate = setMonth(calendarDate, selectedMonth);\n\n let adjustedMonth = adjustMonthFn(selectedMonth);\n adjustedMonth = Math.max(0, Math.min(11, adjustedMonth));\n\n const date = setMonth(calendarDate, adjustedMonth);\n const cappedDate = keepDateBetweenMinAndMax(date, minDate, maxDate);\n if (!isSameMonth(currentDate, cappedDate)) {\n const newCalendar = displayMonthSelection(\n calendarEl,\n cappedDate.getMonth()\n );\n newCalendar.querySelector(CALENDAR_MONTH_FOCUSED).focus();\n }\n event.preventDefault();\n };\n};\n\n/**\n * Navigate back three months and display the month selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleUpFromMonth = adjustMonthSelectionScreen((month) => month - 3);\n\n/**\n * Navigate forward three months and display the month selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleDownFromMonth = adjustMonthSelectionScreen((month) => month + 3);\n\n/**\n * Navigate back one month and display the month selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleLeftFromMonth = adjustMonthSelectionScreen((month) => month - 1);\n\n/**\n * Navigate forward one month and display the month selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleRightFromMonth = adjustMonthSelectionScreen((month) => month + 1);\n\n/**\n * Navigate to the start of the row of months and display the month selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleHomeFromMonth = adjustMonthSelectionScreen(\n (month) => month - (month % 3)\n);\n\n/**\n * Navigate to the end of the row of months and display the month selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleEndFromMonth = adjustMonthSelectionScreen(\n (month) => month + 2 - (month % 3)\n);\n\n/**\n * Navigate to the last month (December) and display the month selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handlePageDownFromMonth = adjustMonthSelectionScreen(() => 11);\n\n/**\n * Navigate to the first month (January) and display the month selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handlePageUpFromMonth = adjustMonthSelectionScreen(() => 0);\n\n/**\n * update the focus on a month when the mouse moves.\n *\n * @param {MouseEvent} event The mousemove event\n * @param {HTMLButtonElement} monthEl A month element within the date picker component\n */\nconst handleMousemoveFromMonth = (monthEl) => {\n if (monthEl.disabled) return;\n if (monthEl.classList.contains(CALENDAR_MONTH_FOCUSED_CLASS)) return;\n\n const focusMonth = parseInt(monthEl.dataset.value, 10);\n\n const newCalendar = displayMonthSelection(monthEl, focusMonth);\n newCalendar.querySelector(CALENDAR_MONTH_FOCUSED).focus();\n};\n\n// #endregion Calendar Month Event Handling\n\n// #region Calendar Year Event Handling\n\n/**\n * Adjust the year and display the year selection screen if needed.\n *\n * @param {function} adjustYearFn function that returns the adjusted year\n */\nconst adjustYearSelectionScreen = (adjustYearFn) => {\n return (event) => {\n const yearEl = event.target;\n const selectedYear = parseInt(yearEl.dataset.value, 10);\n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(\n yearEl\n );\n const currentDate = setYear(calendarDate, selectedYear);\n\n let adjustedYear = adjustYearFn(selectedYear);\n adjustedYear = Math.max(0, adjustedYear);\n\n const date = setYear(calendarDate, adjustedYear);\n const cappedDate = keepDateBetweenMinAndMax(date, minDate, maxDate);\n if (!isSameYear(currentDate, cappedDate)) {\n const newCalendar = displayYearSelection(\n calendarEl,\n cappedDate.getFullYear()\n );\n newCalendar.querySelector(CALENDAR_YEAR_FOCUSED).focus();\n }\n event.preventDefault();\n };\n};\n\n/**\n * Navigate back three years and display the year selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleUpFromYear = adjustYearSelectionScreen((year) => year - 3);\n\n/**\n * Navigate forward three years and display the year selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleDownFromYear = adjustYearSelectionScreen((year) => year + 3);\n\n/**\n * Navigate back one year and display the year selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleLeftFromYear = adjustYearSelectionScreen((year) => year - 1);\n\n/**\n * Navigate forward one year and display the year selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleRightFromYear = adjustYearSelectionScreen((year) => year + 1);\n\n/**\n * Navigate to the start of the row of years and display the year selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleHomeFromYear = adjustYearSelectionScreen(\n (year) => year - (year % 3)\n);\n\n/**\n * Navigate to the end of the row of years and display the year selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handleEndFromYear = adjustYearSelectionScreen(\n (year) => year + 2 - (year % 3)\n);\n\n/**\n * Navigate to back 12 years and display the year selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handlePageUpFromYear = adjustYearSelectionScreen(\n (year) => year - YEAR_CHUNK\n);\n\n/**\n * Navigate forward 12 years and display the year selection screen.\n *\n * @param {KeyboardEvent} event the keydown event\n */\nconst handlePageDownFromYear = adjustYearSelectionScreen(\n (year) => year + YEAR_CHUNK\n);\n\n/**\n * update the focus on a year when the mouse moves.\n *\n * @param {MouseEvent} event The mousemove event\n * @param {HTMLButtonElement} dateEl A year element within the date picker component\n */\nconst handleMousemoveFromYear = (yearEl) => {\n if (yearEl.disabled) return;\n if (yearEl.classList.contains(CALENDAR_YEAR_FOCUSED_CLASS)) return;\n\n const focusYear = parseInt(yearEl.dataset.value, 10);\n\n const newCalendar = displayYearSelection(yearEl, focusYear);\n newCalendar.querySelector(CALENDAR_YEAR_FOCUSED).focus();\n};\n\n// #endregion Calendar Year Event Handling\n\n// #region Focus Handling Event Handling\n\nconst tabHandler = (focusable) => {\n const getFocusableContext = (el) => {\n const { calendarEl } = getDatePickerContext(el);\n const focusableElements = select(focusable, calendarEl);\n\n const firstTabIndex = 0;\n const lastTabIndex = focusableElements.length - 1;\n const firstTabStop = focusableElements[firstTabIndex];\n const lastTabStop = focusableElements[lastTabIndex];\n const focusIndex = focusableElements.indexOf(activeElement());\n\n const isLastTab = focusIndex === lastTabIndex;\n const isFirstTab = focusIndex === firstTabIndex;\n const isNotFound = focusIndex === -1;\n\n return {\n focusableElements,\n isNotFound,\n firstTabStop,\n isFirstTab,\n lastTabStop,\n isLastTab,\n };\n };\n\n return {\n tabAhead(event) {\n const { firstTabStop, isLastTab, isNotFound } = getFocusableContext(\n event.target\n );\n\n if (isLastTab || isNotFound) {\n event.preventDefault();\n firstTabStop.focus();\n }\n },\n tabBack(event) {\n const { lastTabStop, isFirstTab, isNotFound } = getFocusableContext(\n event.target\n );\n\n if (isFirstTab || isNotFound) {\n event.preventDefault();\n lastTabStop.focus();\n }\n },\n };\n};\n\nconst datePickerTabEventHandler = tabHandler(DATE_PICKER_FOCUSABLE);\nconst monthPickerTabEventHandler = tabHandler(MONTH_PICKER_FOCUSABLE);\nconst yearPickerTabEventHandler = tabHandler(YEAR_PICKER_FOCUSABLE);\n\n// #endregion Focus Handling Event Handling\n\n// #region Date Picker Event Delegation Registration / Component\n\nconst datePickerEvents = {\n [CLICK]: {\n [DATE_PICKER_BUTTON]() {\n toggleCalendar(this);\n },\n [CALENDAR_DATE]() {\n selectDate(this);\n },\n [CALENDAR_MONTH]() {\n selectMonth(this);\n },\n [CALENDAR_YEAR]() {\n selectYear(this);\n },\n [CALENDAR_PREVIOUS_MONTH]() {\n displayPreviousMonth(this);\n },\n [CALENDAR_NEXT_MONTH]() {\n displayNextMonth(this);\n },\n [CALENDAR_PREVIOUS_YEAR]() {\n displayPreviousYear(this);\n },\n [CALENDAR_NEXT_YEAR]() {\n displayNextYear(this);\n },\n [CALENDAR_PREVIOUS_YEAR_CHUNK]() {\n displayPreviousYearChunk(this);\n },\n [CALENDAR_NEXT_YEAR_CHUNK]() {\n displayNextYearChunk(this);\n },\n [CALENDAR_MONTH_SELECTION]() {\n const newCalendar = displayMonthSelection(this);\n newCalendar.querySelector(CALENDAR_MONTH_FOCUSED).focus();\n },\n [CALENDAR_YEAR_SELECTION]() {\n const newCalendar = displayYearSelection(this);\n newCalendar.querySelector(CALENDAR_YEAR_FOCUSED).focus();\n },\n },\n keyup: {\n [DATE_PICKER_CALENDAR](event) {\n const keydown = this.dataset.keydownKeyCode;\n if (`${event.keyCode}` !== keydown) {\n event.preventDefault();\n }\n },\n },\n keydown: {\n [DATE_PICKER_EXTERNAL_INPUT](event) {\n if (event.keyCode === ENTER_KEYCODE) {\n validateDateInput(this);\n }\n },\n [CALENDAR_DATE]: keymap({\n Up: handleUpFromDate,\n ArrowUp: handleUpFromDate,\n Down: handleDownFromDate,\n ArrowDown: handleDownFromDate,\n Left: handleLeftFromDate,\n ArrowLeft: handleLeftFromDate,\n Right: handleRightFromDate,\n ArrowRight: handleRightFromDate,\n Home: handleHomeFromDate,\n End: handleEndFromDate,\n PageDown: handlePageDownFromDate,\n PageUp: handlePageUpFromDate,\n \"Shift+PageDown\": handleShiftPageDownFromDate,\n \"Shift+PageUp\": handleShiftPageUpFromDate,\n }),\n [CALENDAR_DATE_PICKER]: keymap({\n Tab: datePickerTabEventHandler.tabAhead,\n \"Shift+Tab\": datePickerTabEventHandler.tabBack,\n }),\n [CALENDAR_MONTH]: keymap({\n Up: handleUpFromMonth,\n ArrowUp: handleUpFromMonth,\n Down: handleDownFromMonth,\n ArrowDown: handleDownFromMonth,\n Left: handleLeftFromMonth,\n ArrowLeft: handleLeftFromMonth,\n Right: handleRightFromMonth,\n ArrowRight: handleRightFromMonth,\n Home: handleHomeFromMonth,\n End: handleEndFromMonth,\n PageDown: handlePageDownFromMonth,\n PageUp: handlePageUpFromMonth,\n }),\n [CALENDAR_MONTH_PICKER]: keymap({\n Tab: monthPickerTabEventHandler.tabAhead,\n \"Shift+Tab\": monthPickerTabEventHandler.tabBack,\n }),\n [CALENDAR_YEAR]: keymap({\n Up: handleUpFromYear,\n ArrowUp: handleUpFromYear,\n Down: handleDownFromYear,\n ArrowDown: handleDownFromYear,\n Left: handleLeftFromYear,\n ArrowLeft: handleLeftFromYear,\n Right: handleRightFromYear,\n ArrowRight: handleRightFromYear,\n Home: handleHomeFromYear,\n End: handleEndFromYear,\n PageDown: handlePageDownFromYear,\n PageUp: handlePageUpFromYear,\n }),\n [CALENDAR_YEAR_PICKER]: keymap({\n Tab: yearPickerTabEventHandler.tabAhead,\n \"Shift+Tab\": yearPickerTabEventHandler.tabBack,\n }),\n [DATE_PICKER_CALENDAR](event) {\n this.dataset.keydownKeyCode = event.keyCode;\n },\n [DATE_PICKER](event) {\n const keyMap = keymap({\n Escape: handleEscapeFromCalendar,\n });\n\n keyMap(event);\n },\n },\n focusout: {\n [DATE_PICKER_EXTERNAL_INPUT]() {\n validateDateInput(this);\n },\n [DATE_PICKER](event) {\n if (!this.contains(event.relatedTarget)) {\n hideCalendar(this);\n }\n },\n },\n input: {\n [DATE_PICKER_EXTERNAL_INPUT]() {\n reconcileInputValues(this);\n updateCalendarIfVisible(this);\n },\n },\n};\n\nif (!isIosDevice()) {\n datePickerEvents.mousemove = {\n [CALENDAR_DATE_CURRENT_MONTH]() {\n handleMousemoveFromDate(this);\n },\n [CALENDAR_MONTH]() {\n handleMousemoveFromMonth(this);\n },\n [CALENDAR_YEAR]() {\n handleMousemoveFromYear(this);\n },\n };\n}\n\nconst datePicker = behavior(datePickerEvents, {\n init(root) {\n select(DATE_PICKER, root).forEach((datePickerEl) => {\n enhanceDatePicker(datePickerEl);\n });\n },\n getDatePickerContext,\n disable,\n enable,\n isDateInputInvalid,\n setCalendarValue,\n validateDateInput,\n renderCalendar,\n updateCalendarIfVisible,\n});\n\n// #endregion Date Picker Event Delegation Registration / Component\n\nmodule.exports = datePicker;\n","const behavior = require(\"../utils/behavior\");\nconst select = require(\"../utils/select\");\nconst { prefix: PREFIX } = require(\"../config\");\nconst {\n getDatePickerContext,\n isDateInputInvalid,\n updateCalendarIfVisible,\n} = require(\"./date-picker\");\n\nconst DATE_PICKER_CLASS = `${PREFIX}-date-picker`;\nconst DATE_RANGE_PICKER_CLASS = `${PREFIX}-date-range-picker`;\nconst DATE_RANGE_PICKER_RANGE_START_CLASS = `${DATE_RANGE_PICKER_CLASS}__range-start`;\nconst DATE_RANGE_PICKER_RANGE_END_CLASS = `${DATE_RANGE_PICKER_CLASS}__range-end`;\n\nconst DATE_PICKER = `.${DATE_PICKER_CLASS}`;\nconst DATE_RANGE_PICKER = `.${DATE_RANGE_PICKER_CLASS}`;\nconst DATE_RANGE_PICKER_RANGE_START = `.${DATE_RANGE_PICKER_RANGE_START_CLASS}`;\nconst DATE_RANGE_PICKER_RANGE_END = `.${DATE_RANGE_PICKER_RANGE_END_CLASS}`;\n\nconst DEFAULT_MIN_DATE = \"0000-01-01\";\n\n/**\n * The properties and elements within the date range picker.\n * @typedef {Object} DateRangePickerContext\n * @property {HTMLElement} dateRangePickerEl\n * @property {HTMLElement} rangeStartEl\n * @property {HTMLElement} rangeEndEl\n */\n\n/**\n * Get an object of the properties and elements belonging directly to the given\n * date picker component.\n *\n * @param {HTMLElement} el the element within the date picker\n * @returns {DateRangePickerContext} elements\n */\nconst getDateRangePickerContext = (el) => {\n const dateRangePickerEl = el.closest(DATE_RANGE_PICKER);\n\n if (!dateRangePickerEl) {\n throw new Error(`Element is missing outer ${DATE_RANGE_PICKER}`);\n }\n\n const rangeStartEl = dateRangePickerEl.querySelector(\n DATE_RANGE_PICKER_RANGE_START\n );\n const rangeEndEl = dateRangePickerEl.querySelector(\n DATE_RANGE_PICKER_RANGE_END\n );\n\n return {\n dateRangePickerEl,\n rangeStartEl,\n rangeEndEl,\n };\n};\n\n/**\n * handle update from range start date picker\n *\n * @param {HTMLElement} el an element within the date range picker\n */\nconst handleRangeStartUpdate = (el) => {\n const {\n dateRangePickerEl,\n rangeStartEl,\n rangeEndEl,\n } = getDateRangePickerContext(el);\n const { internalInputEl } = getDatePickerContext(rangeStartEl);\n const updatedDate = internalInputEl.value;\n\n if (updatedDate && !isDateInputInvalid(internalInputEl)) {\n rangeEndEl.dataset.minDate = updatedDate;\n rangeEndEl.dataset.rangeDate = updatedDate;\n rangeEndEl.dataset.defaultDate = updatedDate;\n } else {\n rangeEndEl.dataset.minDate = dateRangePickerEl.dataset.minDate || \"\";\n rangeEndEl.dataset.rangeDate = \"\";\n rangeEndEl.dataset.defaultDate = \"\";\n }\n\n updateCalendarIfVisible(rangeEndEl);\n};\n\n/**\n * handle update from range start date picker\n *\n * @param {HTMLElement} el an element within the date range picker\n */\nconst handleRangeEndUpdate = (el) => {\n const {\n dateRangePickerEl,\n rangeStartEl,\n rangeEndEl,\n } = getDateRangePickerContext(el);\n const { internalInputEl } = getDatePickerContext(rangeEndEl);\n const updatedDate = internalInputEl.value;\n\n if (updatedDate && !isDateInputInvalid(internalInputEl)) {\n rangeStartEl.dataset.maxDate = updatedDate;\n rangeStartEl.dataset.rangeDate = updatedDate;\n rangeStartEl.dataset.defaultDate = updatedDate;\n } else {\n rangeStartEl.dataset.maxDate = dateRangePickerEl.dataset.maxDate || \"\";\n rangeStartEl.dataset.rangeDate = \"\";\n rangeStartEl.dataset.defaultDate = \"\";\n }\n\n updateCalendarIfVisible(rangeStartEl);\n};\n\n/**\n * Enhance an input with the date picker elements\n *\n * @param {HTMLElement} el The initial wrapping element of the date range picker component\n */\nconst enhanceDateRangePicker = (el) => {\n const dateRangePickerEl = el.closest(DATE_RANGE_PICKER);\n\n const [rangeStart, rangeEnd] = select(DATE_PICKER, dateRangePickerEl);\n\n if (!rangeStart) {\n throw new Error(\n `${DATE_RANGE_PICKER} is missing inner two '${DATE_PICKER}' elements`\n );\n }\n\n if (!rangeEnd) {\n throw new Error(\n `${DATE_RANGE_PICKER} is missing second '${DATE_PICKER}' element`\n );\n }\n\n rangeStart.classList.add(DATE_RANGE_PICKER_RANGE_START_CLASS);\n rangeEnd.classList.add(DATE_RANGE_PICKER_RANGE_END_CLASS);\n\n if (!dateRangePickerEl.dataset.minDate) {\n dateRangePickerEl.dataset.minDate = DEFAULT_MIN_DATE;\n }\n\n const minDate = dateRangePickerEl.dataset.minDate;\n rangeStart.dataset.minDate = minDate;\n rangeEnd.dataset.minDate = minDate;\n\n const maxDate = dateRangePickerEl.dataset.maxDate;\n if (maxDate) {\n rangeStart.dataset.maxDate = maxDate;\n rangeEnd.dataset.maxDate = maxDate;\n }\n\n handleRangeStartUpdate(dateRangePickerEl);\n handleRangeEndUpdate(dateRangePickerEl);\n};\n\nconst dateRangePicker = behavior(\n {\n \"input change\": {\n [DATE_RANGE_PICKER_RANGE_START]() {\n handleRangeStartUpdate(this);\n },\n [DATE_RANGE_PICKER_RANGE_END]() {\n handleRangeEndUpdate(this);\n },\n },\n },\n {\n init(root) {\n select(DATE_RANGE_PICKER, root).forEach((dateRangePickerEl) => {\n enhanceDateRangePicker(dateRangePickerEl);\n });\n },\n }\n);\n\nmodule.exports = dateRangePicker;\n","const select = require(\"../utils/select\");\nconst behavior = require(\"../utils/behavior\");\nconst { prefix: PREFIX } = require(\"../config\");\n\nconst DROPZONE_CLASS = `${PREFIX}-file-input`;\nconst DROPZONE = `.${DROPZONE_CLASS}`;\nconst INPUT_CLASS = `${PREFIX}-file-input__input`;\nconst TARGET_CLASS = `${PREFIX}-file-input__target`;\nconst BOX_CLASS = `${PREFIX}-file-input__box`;\nconst INSTRUCTIONS_CLASS = `${PREFIX}-file-input__instructions`;\nconst PREVIEW_CLASS = `${PREFIX}-file-input__preview`;\nconst PREVIEW_HEADING_CLASS = `${PREFIX}-file-input__preview-heading`;\nconst DISABLED_CLASS = `${PREFIX}-file-input--disabled`;\nconst CHOOSE_CLASS = `${PREFIX}-file-input__choose`;\nconst ACCEPTED_FILE_MESSAGE_CLASS = `${PREFIX}-file-input__accepted-files-message`;\nconst DRAG_TEXT_CLASS = `${PREFIX}-file-input__drag-text`;\nconst DRAG_CLASS = `${PREFIX}-file-input--drag`;\nconst LOADING_CLASS = \"is-loading\";\nconst HIDDEN_CLASS = \"display-none\";\nconst INVALID_FILE_CLASS = \"has-invalid-file\";\nconst GENERIC_PREVIEW_CLASS_NAME = `${PREFIX}-file-input__preview-image`;\nconst GENERIC_PREVIEW_CLASS = `${GENERIC_PREVIEW_CLASS_NAME}--generic`;\nconst PDF_PREVIEW_CLASS = `${GENERIC_PREVIEW_CLASS_NAME}--pdf`;\nconst WORD_PREVIEW_CLASS = `${GENERIC_PREVIEW_CLASS_NAME}--word`;\nconst VIDEO_PREVIEW_CLASS = `${GENERIC_PREVIEW_CLASS_NAME}--video`;\nconst EXCEL_PREVIEW_CLASS = `${GENERIC_PREVIEW_CLASS_NAME}--excel`;\nconst SPACER_GIF =\n \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";\n\n/**\n * Creates an ID name for each file that strips all invalid characters.\n * @param {string} name - name of the file added to file input\n * @returns {string} same characters as the name with invalide chars removed\n */\nconst makeSafeForID = (name) => {\n return name.replace(/[^a-z0-9]/g, function replaceName(s) {\n const c = s.charCodeAt(0);\n if (c === 32) return \"-\";\n if (c >= 65 && c <= 90) return `img_${s.toLowerCase()}`;\n return `__${(\"000\", c.toString(16)).slice(-4)}`;\n });\n};\n\n/**\n * Builds full file input comonent\n * @param {HTMLElement} fileInputEl - original file input on page\n * @returns {HTMLElement|HTMLElement} - Instructions, target area div\n */\nconst buildFileInput = (fileInputEl) => {\n const acceptsMultiple = fileInputEl.hasAttribute(\"multiple\");\n const fileInputParent = document.createElement(\"div\");\n const dropTarget = document.createElement(\"div\");\n const box = document.createElement(\"div\");\n const instructions = document.createElement(\"div\");\n const disabled = fileInputEl.hasAttribute(\"disabled\");\n\n // Adds class names and other attributes\n fileInputEl.classList.remove(DROPZONE_CLASS);\n fileInputEl.classList.add(INPUT_CLASS);\n fileInputParent.classList.add(DROPZONE_CLASS);\n box.classList.add(BOX_CLASS);\n instructions.classList.add(INSTRUCTIONS_CLASS);\n instructions.setAttribute(\"aria-hidden\", \"true\");\n dropTarget.classList.add(TARGET_CLASS);\n\n // Adds child elements to the DOM\n fileInputEl.parentNode.insertBefore(dropTarget, fileInputEl);\n fileInputEl.parentNode.insertBefore(fileInputParent, dropTarget);\n dropTarget.appendChild(fileInputEl);\n fileInputParent.appendChild(dropTarget);\n fileInputEl.parentNode.insertBefore(instructions, fileInputEl);\n fileInputEl.parentNode.insertBefore(box, fileInputEl);\n\n // Disabled styling\n if (disabled) {\n fileInputParent.classList.add(DISABLED_CLASS);\n fileInputParent.setAttribute(\"aria-disabled\", \"true\");\n }\n\n // Sets instruction test based on whether or not multipe files are accepted\n if (acceptsMultiple) {\n instructions.innerHTML = `<span class=\"${DRAG_TEXT_CLASS}\">Drag files here or </span><span class=\"${CHOOSE_CLASS}\">choose from folder</span>`;\n } else {\n instructions.innerHTML = `<span class=\"${DRAG_TEXT_CLASS}\">Drag file here or </span><span class=\"${CHOOSE_CLASS}\">choose from folder</span>`;\n }\n\n // IE11 and Edge do not support drop files on file inputs, so we've removed text that indicates that\n if (\n /rv:11.0/i.test(navigator.userAgent) ||\n /Edge\\/\\d./i.test(navigator.userAgent)\n ) {\n fileInputParent.querySelector(`.${DRAG_TEXT_CLASS}`).outerHTML = \"\";\n }\n\n return { instructions, dropTarget };\n};\n\n/**\n * Removes image previews, we want to start with a clean list every time files are added to the file input\n * @param {HTMLElement} dropTarget - target area div that encases the input\n * @param {HTMLElement} instructions - text to infrom users to drag or select files\n */\nconst removeOldPreviews = (dropTarget, instructions) => {\n const filePreviews = dropTarget.querySelectorAll(`.${PREVIEW_CLASS}`);\n const currentPreviewHeading = dropTarget.querySelector(\n `.${PREVIEW_HEADING_CLASS}`\n );\n const currentErrorMessage = dropTarget.querySelector(\n `.${ACCEPTED_FILE_MESSAGE_CLASS}`\n );\n\n // Remove the heading above the previews\n if (currentPreviewHeading) {\n currentPreviewHeading.outerHTML = \"\";\n }\n\n // Remove existing error messages\n if (currentErrorMessage) {\n currentErrorMessage.outerHTML = \"\";\n dropTarget.classList.remove(INVALID_FILE_CLASS);\n }\n\n // Get rid of existing previews if they exist, show instructions\n if (filePreviews !== null) {\n if (instructions) {\n instructions.classList.remove(HIDDEN_CLASS);\n }\n Array.prototype.forEach.call(filePreviews, function removeImages(node) {\n node.parentNode.removeChild(node);\n });\n }\n};\n\n/**\n * When using an Accept attribute, invalid files will be hidden from\n * file browser, but they can still be dragged to the input. This\n * function prevents them from being dragged and removes error states\n * when correct files are added.\n * @param {event} e\n * @param {HTMLElement} fileInputEl - file input element\n * @param {HTMLElement} instructions - text to infrom users to drag or select files\n * @param {HTMLElement} dropTarget - target area div that encases the input\n */\nconst preventInvalidFiles = (e, fileInputEl, instructions, dropTarget) => {\n const acceptedFiles = fileInputEl.getAttribute(\"accept\");\n dropTarget.classList.remove(INVALID_FILE_CLASS);\n\n // Runs if only specific files are accepted\n if (acceptedFiles) {\n const errorMessage = document.createElement(\"div\");\n\n // If multiple files are dragged, this iterates through them and look for any files that are not accepted.\n let allFilesAllowed = true;\n for (let i = 0; i < e.dataTransfer.files.length; i += 1) {\n const file = e.dataTransfer.files[i];\n if (allFilesAllowed) {\n allFilesAllowed = file.name.indexOf(acceptedFiles);\n if (allFilesAllowed < 0) {\n break;\n }\n }\n }\n\n // If dragged files are not accepted, this removes them from the value of the input and creates and error state\n if (allFilesAllowed < 0) {\n removeOldPreviews(dropTarget, instructions);\n fileInputEl.value = \"\"; // eslint-disable-line no-param-reassign\n dropTarget.insertBefore(errorMessage, fileInputEl);\n errorMessage.innerHTML = `This is not a valid file type.`;\n errorMessage.classList.add(ACCEPTED_FILE_MESSAGE_CLASS);\n dropTarget.classList.add(INVALID_FILE_CLASS);\n e.preventDefault();\n e.stopPropagation();\n }\n }\n};\n\n/**\n * When new files are applied to file input, this function generates previews\n * and removes old ones.\n * @param {event} e\n * @param {HTMLElement} fileInputEl - file input element\n * @param {HTMLElement} instructions - text to infrom users to drag or select files\n * @param {HTMLElement} dropTarget - target area div that encases the input\n */\nconst handleChange = (e, fileInputEl, instructions, dropTarget) => {\n const fileNames = e.target.files;\n const filePreviewsHeading = document.createElement(\"div\");\n\n // First, get rid of existing previews\n removeOldPreviews(dropTarget, instructions);\n\n // Iterates through files list and creates previews\n for (let i = 0; i < fileNames.length; i += 1) {\n const reader = new FileReader();\n const fileName = fileNames[i].name;\n\n // Starts with a loading image while preview is created\n reader.onloadstart = function createLoadingImage() {\n const imageId = makeSafeForID(fileName);\n const previewImage = `<img id=\"${imageId}\" src=\"${SPACER_GIF}\" alt=\"\" class=\"${GENERIC_PREVIEW_CLASS_NAME} ${LOADING_CLASS}\"/>`;\n\n instructions.insertAdjacentHTML(\n \"afterend\",\n `<div class=\"${PREVIEW_CLASS}\" aria-hidden=\"true\">${previewImage}${fileName}<div>`\n );\n };\n\n // Not all files will be able to generate previews. In case this happens, we provide several types \"generic previews\" based on the file extension.\n reader.onloadend = function createFilePreview() {\n const imageId = makeSafeForID(fileName);\n const previewImage = document.getElementById(imageId);\n if (fileName.indexOf(\".pdf\") > 0) {\n previewImage.setAttribute(\n \"onerror\",\n `this.onerror=null;this.src=\"${SPACER_GIF}\"; this.classList.add(\"${PDF_PREVIEW_CLASS}\")`\n );\n } else if (\n fileName.indexOf(\".doc\") > 0 ||\n fileName.indexOf(\".pages\") > 0\n ) {\n previewImage.setAttribute(\n \"onerror\",\n `this.onerror=null;this.src=\"${SPACER_GIF}\"; this.classList.add(\"${WORD_PREVIEW_CLASS}\")`\n );\n } else if (\n fileName.indexOf(\".xls\") > 0 ||\n fileName.indexOf(\".numbers\") > 0\n ) {\n previewImage.setAttribute(\n \"onerror\",\n `this.onerror=null;this.src=\"${SPACER_GIF}\"; this.classList.add(\"${EXCEL_PREVIEW_CLASS}\")`\n );\n } else if (fileName.indexOf(\".mov\") > 0 || fileName.indexOf(\".mp4\") > 0) {\n previewImage.setAttribute(\n \"onerror\",\n `this.onerror=null;this.src=\"${SPACER_GIF}\"; this.classList.add(\"${VIDEO_PREVIEW_CLASS}\")`\n );\n } else {\n previewImage.setAttribute(\n \"onerror\",\n `this.onerror=null;this.src=\"${SPACER_GIF}\"; this.classList.add(\"${GENERIC_PREVIEW_CLASS}\")`\n );\n }\n\n // Removes loader and displays preview\n previewImage.classList.remove(LOADING_CLASS);\n previewImage.src = reader.result;\n };\n\n if (fileNames[i]) {\n reader.readAsDataURL(fileNames[i]);\n }\n\n // Adds heading above file previews, pluralizes if there are multiple\n if (i === 0) {\n dropTarget.insertBefore(filePreviewsHeading, instructions);\n filePreviewsHeading.innerHTML = `Selected file <span class=\"usa-file-input__choose\">Change file</span>`;\n } else if (i >= 1) {\n dropTarget.insertBefore(filePreviewsHeading, instructions);\n filePreviewsHeading.innerHTML = `${\n i + 1\n } files selected <span class=\"usa-file-input__choose\">Change files</span>`;\n }\n\n // Hides null state content and sets preview heading class\n if (filePreviewsHeading) {\n instructions.classList.add(HIDDEN_CLASS);\n filePreviewsHeading.classList.add(PREVIEW_HEADING_CLASS);\n }\n }\n};\n\nconst fileInput = behavior(\n {},\n {\n init(root) {\n select(DROPZONE, root).forEach((fileInputEl) => {\n const { instructions, dropTarget } = buildFileInput(fileInputEl);\n\n dropTarget.addEventListener(\n \"dragover\",\n function handleDragOver() {\n this.classList.add(DRAG_CLASS);\n },\n false\n );\n\n dropTarget.addEventListener(\n \"dragleave\",\n function handleDragLeave() {\n this.classList.remove(DRAG_CLASS);\n },\n false\n );\n\n dropTarget.addEventListener(\n \"drop\",\n function handleDrop(e) {\n preventInvalidFiles(e, fileInputEl, instructions, dropTarget);\n this.classList.remove(DRAG_CLASS);\n },\n false\n );\n\n // eslint-disable-next-line no-param-reassign\n fileInputEl.onchange = (e) => {\n handleChange(e, fileInputEl, instructions, dropTarget);\n };\n });\n },\n }\n);\n\nmodule.exports = fileInput;\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 fileInput = require(\"./file-input\");\nconst footer = require(\"./footer\");\nconst navigation = require(\"./navigation\");\nconst password = require(\"./password\");\nconst search = require(\"./search\");\nconst skipnav = require(\"./skipnav\");\nconst tooltip = require(\"./tooltip\");\nconst validator = require(\"./validator\");\nconst datePicker = require(\"./date-picker\");\nconst dateRangePicker = require(\"./date-range-picker\");\nconst timePicker = require(\"./time-picker\");\n\nmodule.exports = {\n accordion,\n banner,\n characterCount,\n comboBox,\n datePicker,\n dateRangePicker,\n fileInput,\n footer,\n navigation,\n password,\n search,\n skipnav,\n timePicker,\n tooltip,\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) =>\n el.classList.toggle(VISIBLE_CLASS, safeActive)\n );\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 select = require(\"../utils/select\");\nconst { prefix: PREFIX } = require(\"../config\");\nconst { COMBO_BOX_CLASS, enhanceComboBox } = require(\"./combo-box\");\n\nconst TIME_PICKER_CLASS = `${PREFIX}-time-picker`;\nconst TIME_PICKER = `.${TIME_PICKER_CLASS}`;\nconst MAX_TIME = 60 * 24 - 1;\nconst MIN_TIME = 0;\nconst DEFAULT_STEP = 30;\nconst MIN_STEP = 1;\n\nconst FILTER_DATASET = {\n filter:\n \"0?{{ hourQueryFilter }}:{{minuteQueryFilter}}.*{{ apQueryFilter }}m?\",\n apQueryFilter: \"([ap])\",\n hourQueryFilter: \"([1-9][0-2]?)\",\n minuteQueryFilter: \"[\\\\d]+:([0-9]{0,2})\",\n};\n\n/**\n * Parse a string of hh:mm into minutes\n *\n * @param {string} timeStr the time string to parse\n * @returns {number} the number of minutes\n */\nconst parseTimeString = (timeStr) => {\n let minutes;\n\n if (timeStr) {\n const [hours, mins] = timeStr.split(\":\").map((str) => {\n let value;\n const parsed = parseInt(str, 10);\n if (!Number.isNaN(parsed)) value = parsed;\n return value;\n });\n\n if (hours != null && mins != null) {\n minutes = hours * 60 + mins;\n }\n }\n\n return minutes;\n};\n\n/**\n * Enhance an input with the date picker elements\n *\n * @param {HTMLElement} el The initial wrapping element of the date picker component\n */\nconst transformTimePicker = (el) => {\n const timePickerEl = el.closest(TIME_PICKER);\n\n const initialInputEl = timePickerEl.querySelector(`input`);\n\n if (!initialInputEl) {\n throw new Error(`${TIME_PICKER} is missing inner input`);\n }\n\n const selectEl = document.createElement(\"select\");\n\n [\"id\", \"name\", \"required\", \"aria-label\", \"aria-labelledby\"].forEach(\n (name) => {\n if (initialInputEl.hasAttribute(name)) {\n const value = initialInputEl.getAttribute(name);\n selectEl.setAttribute(name, value);\n initialInputEl.removeAttribute(name);\n }\n }\n );\n\n const padZeros = (value, length) => {\n return `0000${value}`.slice(-length);\n };\n\n const getTimeContext = (minutes) => {\n const minute = minutes % 60;\n const hour24 = Math.floor(minutes / 60);\n const hour12 = hour24 % 12 || 12;\n const ampm = hour24 < 12 ? \"am\" : \"pm\";\n\n return {\n minute,\n hour24,\n hour12,\n ampm,\n };\n };\n\n const minTime = Math.max(\n MIN_TIME,\n parseTimeString(timePickerEl.dataset.minTime) || MIN_TIME\n );\n const maxTime = Math.min(\n MAX_TIME,\n parseTimeString(timePickerEl.dataset.maxTime) || MAX_TIME\n );\n const step = Math.floor(\n Math.max(MIN_STEP, timePickerEl.dataset.step || DEFAULT_STEP)\n );\n\n for (let time = minTime; time <= maxTime; time += step) {\n const { minute, hour24, hour12, ampm } = getTimeContext(time);\n\n const option = document.createElement(\"option\");\n option.value = `${padZeros(hour24, 2)}:${padZeros(minute, 2)}`;\n option.text = `${hour12}:${padZeros(minute, 2)}${ampm}`;\n selectEl.appendChild(option);\n }\n\n timePickerEl.classList.add(COMBO_BOX_CLASS);\n\n // combo box properties\n Object.keys(FILTER_DATASET).forEach((key) => {\n timePickerEl.dataset[key] = FILTER_DATASET[key];\n });\n timePickerEl.dataset.disableFiltering = \"true\";\n\n timePickerEl.appendChild(selectEl);\n initialInputEl.style.display = \"none\";\n};\n\nconst timePicker = behavior(\n {},\n {\n init(root) {\n select(TIME_PICKER, root).forEach((timePickerEl) => {\n transformTimePicker(timePickerEl);\n enhanceComboBox(timePickerEl);\n });\n },\n FILTER_DATASET,\n }\n);\n\nmodule.exports = timePicker;\n","// Tooltips\nconst select = require(\"../utils/select\");\nconst behavior = require(\"../utils/behavior\");\nconst { prefix: PREFIX } = require(\"../config\");\nconst isElementInViewport = require(\"../utils/is-in-viewport\");\n\nconst TOOLTIP = `.${PREFIX}-tooltip`;\nconst TOOLTIP_TRIGGER_CLASS = `${PREFIX}-tooltip__trigger`;\nconst TOOLTIP_CLASS = `${PREFIX}-tooltip`;\nconst TOOLTIP_BODY_CLASS = `${PREFIX}-tooltip__body`;\nconst SET_CLASS = \"is-set\";\nconst VISIBLE_CLASS = \"is-visible\";\nconst TRIANGLE_SIZE = 5;\nconst SPACER = 2;\nconst ADJUST_WIDTH_CLASS = `${PREFIX}-tooltip__body--wrap`;\n\n/**\n * Add one or more listeners to an element\n * @param {DOMElement} element - DOM element to add listeners to\n * @param {events} eventNames - space separated list of event names, e.g. 'click change'\n * @param {Function} listener - function to attach for each event as a listener\n */\nconst addListenerMulti = (element, eventNames, listener) => {\n const events = eventNames.split(\" \");\n for (let i = 0, iLen = events.length; i < iLen; i += 1) {\n element.addEventListener(events[i], listener, false);\n }\n};\n\n/**\n * Shows the tooltip\n * @param {HTMLElement} tooltipTrigger - the element that initializes the tooltip\n */\nconst showToolTip = (tooltipBody, tooltipTrigger, position, wrapper) => {\n tooltipBody.setAttribute(\"aria-hidden\", \"false\");\n\n // This sets up the tooltip body. The opacity is 0, but\n // we can begin running the calculations below.\n tooltipBody.classList.add(SET_CLASS);\n\n // Calculate sizing and adjustments for positioning\n const tooltipWidth = tooltipTrigger.offsetWidth;\n const tooltipHeight = tooltipTrigger.offsetHeight;\n const offsetForTopMargin = parseInt(\n window.getComputedStyle(tooltipTrigger).getPropertyValue(\"margin-top\"),\n 10\n );\n const offsetForBottomMargin = parseInt(\n window.getComputedStyle(tooltipTrigger).getPropertyValue(\"margin-bottom\"),\n 10\n );\n const offsetForTopPadding = parseInt(\n window.getComputedStyle(wrapper).getPropertyValue(\"padding-top\"),\n 10\n );\n const offsetForBottomPadding = parseInt(\n window.getComputedStyle(wrapper).getPropertyValue(\"padding-bottom\"),\n 10\n );\n const offsetForTooltipBodyHeight = parseInt(\n window.getComputedStyle(tooltipBody).getPropertyValue(\"height\"),\n 10\n );\n const leftOffset = tooltipTrigger.offsetLeft;\n const toolTipBodyWidth = tooltipBody.offsetWidth;\n const adjustHorizontalCenter = tooltipWidth / 2 + leftOffset;\n const adjustToEdgeX = tooltipWidth + TRIANGLE_SIZE + SPACER;\n const adjustToEdgeY = tooltipHeight + TRIANGLE_SIZE + SPACER;\n\n /**\n * Position the tooltip body when the trigger is hovered\n * Removes old positioning classnames and reapplies. This allows\n * positioning to change in case the user resizes browser or DOM manipulation\n * causes tooltip to get clipped from viewport\n *\n * @param {string} setPos - can be \"top\", \"bottom\", \"right\", \"left\"\n */\n const setPositionClass = (setPos) => {\n tooltipBody.classList.remove(`${TOOLTIP_BODY_CLASS}--top`);\n tooltipBody.classList.remove(`${TOOLTIP_BODY_CLASS}--bottom`);\n tooltipBody.classList.remove(`${TOOLTIP_BODY_CLASS}--right`);\n tooltipBody.classList.remove(`${TOOLTIP_BODY_CLASS}--left`);\n tooltipBody.classList.add(`${TOOLTIP_BODY_CLASS}--${setPos}`);\n };\n\n /**\n * Positions tooltip at the top\n * We check if the element is in the viewport so we know whether or not we\n * need to constrain the width\n * @param {HTMLElement} e - this is the tooltip body\n */\n const positionTop = (e) => {\n setPositionClass(\"top\");\n e.style.marginLeft = `${adjustHorizontalCenter}px`;\n if (!isElementInViewport(e)) {\n e.classList.add(ADJUST_WIDTH_CLASS);\n }\n e.style.marginBottom = `${\n adjustToEdgeY + offsetForBottomMargin + offsetForBottomPadding\n }px`;\n };\n\n /**\n * Positions tooltip at the bottom\n * We check if the element is in theviewport so we know whether or not we\n * need to constrain the width\n * @param {HTMLElement} e - this is the tooltip body\n */\n const positionBottom = (e) => {\n setPositionClass(\"bottom\");\n e.style.marginLeft = `${adjustHorizontalCenter}px`;\n if (!isElementInViewport(e)) {\n e.classList.add(ADJUST_WIDTH_CLASS);\n }\n e.style.marginTop = `${\n adjustToEdgeY + offsetForTopMargin + offsetForTopPadding\n }px`;\n };\n\n /**\n * Positions tooltip at the right\n * @param {HTMLElement} e - this is the tooltip body\n */\n const positionRight = (e) => {\n setPositionClass(\"right\");\n e.style.marginBottom = \"0\";\n e.style.marginLeft = `${adjustToEdgeX + leftOffset}px`;\n e.style.bottom = `${\n (tooltipHeight - offsetForTooltipBodyHeight) / 2 +\n offsetForBottomMargin +\n offsetForBottomPadding\n }px`;\n return false;\n };\n\n /**\n * Positions tooltip at the right\n * @param {HTMLElement} e - this is the tooltip body\n */\n const positionLeft = (e) => {\n setPositionClass(\"left\");\n e.style.marginBottom = \"0\";\n if (leftOffset > toolTipBodyWidth) {\n e.style.marginLeft = `${\n leftOffset - toolTipBodyWidth - (TRIANGLE_SIZE + SPACER)\n }px`;\n } else {\n e.style.marginLeft = `-${\n toolTipBodyWidth - leftOffset + (TRIANGLE_SIZE + SPACER)\n }px`;\n }\n e.style.bottom = `${\n (tooltipHeight - offsetForTooltipBodyHeight) / 2 +\n offsetForBottomMargin +\n offsetForBottomPadding\n }px`;\n };\n\n /**\n * We try to set the position based on the\n * original intention, but make adjustments\n * if the element is clipped out of the viewport\n */\n switch (position) {\n case \"top\":\n positionTop(tooltipBody);\n if (!isElementInViewport(tooltipBody)) {\n positionBottom(tooltipBody);\n }\n break;\n case \"bottom\":\n positionBottom(tooltipBody);\n if (!isElementInViewport(tooltipBody)) {\n positionTop(tooltipBody);\n }\n break;\n case \"right\":\n positionRight(tooltipBody);\n if (!isElementInViewport(tooltipBody)) {\n positionLeft(tooltipBody);\n if (!isElementInViewport(tooltipBody)) {\n positionTop(tooltipBody);\n }\n }\n break;\n case \"left\":\n positionLeft(tooltipBody);\n if (!isElementInViewport(tooltipBody)) {\n positionRight(tooltipBody);\n if (!isElementInViewport(tooltipBody)) {\n positionTop(tooltipBody);\n }\n }\n break;\n\n default:\n // skip default case\n break;\n }\n\n /**\n * Actually show the tooltip. The VISIBLE_CLASS\n * will change the opacity to 1\n */\n setTimeout(function makeVisible() {\n tooltipBody.classList.add(VISIBLE_CLASS);\n }, 20);\n};\n\n/**\n * Removes all the properties to show and position the tooltip,\n * and resets the tooltip position to the original intention\n * in case the window is resized or the element is moved through\n * DOM maniulation.\n * @param {HTMLElement} tooltipBody - The body of the tooltip\n */\nconst hideToolTip = (tooltipBody) => {\n tooltipBody.classList.remove(VISIBLE_CLASS);\n tooltipBody.classList.remove(SET_CLASS);\n tooltipBody.classList.remove(ADJUST_WIDTH_CLASS);\n tooltipBody.setAttribute(\"aria-hidden\", \"true\");\n};\n\n/**\n * Setup the tooltip component\n * @param {HTMLElement} tooltipTrigger The element that creates the tooltip\n */\nconst setUpAttributes = (tooltipTrigger) => {\n const tooltipID = `tooltip-${Math.floor(Math.random() * 900000) + 100000}`;\n const tooltipContent = tooltipTrigger.getAttribute(\"title\");\n const wrapper = document.createElement(\"span\");\n const tooltipBody = document.createElement(\"span\");\n const position = tooltipTrigger.getAttribute(\"data-position\")\n ? tooltipTrigger.getAttribute(\"data-position\")\n : \"top\";\n const additionalClasses = tooltipTrigger.getAttribute(\"data-classes\");\n\n // Set up tooltip attributes\n tooltipTrigger.setAttribute(\"aria-describedby\", tooltipID);\n tooltipTrigger.setAttribute(\"tabindex\", \"0\");\n tooltipTrigger.setAttribute(\"title\", \"\");\n tooltipTrigger.classList.remove(TOOLTIP_CLASS);\n tooltipTrigger.classList.add(TOOLTIP_TRIGGER_CLASS);\n\n // insert wrapper before el in the DOM tree\n tooltipTrigger.parentNode.insertBefore(wrapper, tooltipTrigger);\n\n // set up the wrapper\n wrapper.appendChild(tooltipTrigger);\n wrapper.classList.add(TOOLTIP_CLASS);\n wrapper.appendChild(tooltipBody);\n\n // Apply additional class names to wrapper element\n if (additionalClasses) {\n const classesArray = additionalClasses.split(\" \");\n classesArray.forEach((classname) => wrapper.classList.add(classname));\n }\n\n // set up the tooltip body\n tooltipBody.classList.add(TOOLTIP_BODY_CLASS);\n tooltipBody.setAttribute(\"id\", tooltipID);\n tooltipBody.setAttribute(\"role\", \"tooltip\");\n tooltipBody.setAttribute(\"aria-hidden\", \"true\");\n\n // place the text in the tooltip\n tooltipBody.innerHTML = tooltipContent;\n\n return { tooltipBody, position, tooltipContent, wrapper };\n};\n\n// Setup our function to run on various events\nconst tooltip = behavior(\n {},\n {\n init(root) {\n select(TOOLTIP, root).forEach((tooltipTrigger) => {\n const {\n tooltipBody,\n position,\n tooltipContent,\n wrapper,\n } = setUpAttributes(tooltipTrigger);\n\n if (tooltipContent) {\n // Listeners for showing and hiding the tooltip\n addListenerMulti(\n tooltipTrigger,\n \"mouseenter focus\",\n function handleShow() {\n showToolTip(tooltipBody, tooltipTrigger, position, wrapper);\n return false;\n }\n );\n\n // Keydown here prevents tooltips from being read twice by screen reader. also allows excape key to close it (along with any other.)\n addListenerMulti(\n tooltipTrigger,\n \"mouseleave blur keydown\",\n function handleHide() {\n hideToolTip(tooltipBody);\n return false;\n }\n );\n } else {\n // throw error or let other tooltips on page function?\n }\n });\n },\n }\n);\n\nmodule.exports = tooltip;\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 Number.isNaN()\nrequire(\"./number-is-nan\");\n// polyfills CustomEvent\nrequire(\"./custom-event\");\n","Number.isNaN =\n Number.isNaN ||\n function isNaN(input) {\n // eslint-disable-next-line no-self-compare\n return typeof input === \"number\" && input !== input;\n };\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","// iOS detection from: http://stackoverflow.com/a/9039885/177710\nfunction isIosDevice() {\n return (\n typeof navigator !== \"undefined\" &&\n (navigator.userAgent.match(/(iPod|iPhone|iPad)/g) ||\n (navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1)) &&\n !window.MSStream\n );\n}\n\nmodule.exports = isIosDevice;\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"]}
metadata CHANGED
@@ -1,31 +1,67 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uswds-jekyll
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shawn Allen
8
+ - Tom Black
8
9
  - Brian Hurst
9
10
  - Scott Weber
10
- autorequire:
11
+ - Dan O. Williams
12
+ autorequire:
11
13
  bindir: bin
12
14
  cert_chain: []
13
- date: 2018-03-19 00:00:00.000000000 Z
15
+ date: 2021-01-29 00:00:00.000000000 Z
14
16
  dependencies:
15
17
  - !ruby/object:Gem::Dependency
16
18
  name: jekyll
17
19
  requirement: !ruby/object:Gem::Requirement
18
20
  requirements:
19
- - - "~>"
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: '4.0'
24
+ - - "<"
25
+ - !ruby/object:Gem::Version
26
+ version: '5'
27
+ type: :runtime
28
+ prerelease: false
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '4.0'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '5'
37
+ - !ruby/object:Gem::Dependency
38
+ name: jekyll-autoprefixer
39
+ requirement: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
20
49
  - !ruby/object:Gem::Version
21
- version: '3.4'
50
+ version: '0'
51
+ - !ruby/object:Gem::Dependency
52
+ name: mini_racer
53
+ requirement: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
22
58
  type: :runtime
23
59
  prerelease: false
24
60
  version_requirements: !ruby/object:Gem::Requirement
25
61
  requirements:
26
- - - "~>"
62
+ - - ">="
27
63
  - !ruby/object:Gem::Version
28
- version: '3.4'
64
+ version: '0'
29
65
  - !ruby/object:Gem::Dependency
30
66
  name: bundler
31
67
  requirement: !ruby/object:Gem::Requirement
@@ -54,10 +90,9 @@ dependencies:
54
90
  - - ">="
55
91
  - !ruby/object:Gem::Version
56
92
  version: '0'
57
- description:
93
+ description:
58
94
  email:
59
- - brian.hurst@gsa.gov
60
- - scott.weber@gsa.gov
95
+ - daniel.williams@gsa.gov
61
96
  executables: []
62
97
  extensions: []
63
98
  extra_rdoc_files: []
@@ -67,11 +102,14 @@ files:
67
102
  - _includes/analytics.html
68
103
  - _includes/banner.html
69
104
  - _includes/components/banner.html
70
- - _includes/components/footer--medium.html
105
+ - _includes/components/footer--big.html
106
+ - _includes/components/footer--default.html
107
+ - _includes/components/footer--slim.html
108
+ - _includes/components/github-edit.html
71
109
  - _includes/components/graphic-list.html
72
- - _includes/components/header--basic.html
73
- - _includes/components/header--extended.html
110
+ - _includes/components/header.html
74
111
  - _includes/components/hero.html
112
+ - _includes/components/search.html
75
113
  - _includes/favicon.html
76
114
  - _includes/footer.html
77
115
  - _includes/graphic-list.html
@@ -90,231 +128,546 @@ files:
90
128
  - _layouts/post.html
91
129
  - _layouts/project.html
92
130
  - _layouts/team-member.html
93
- - _sass/components/_all.scss
94
- - _sass/components/_alt-color-section.scss
95
- - _sass/components/_card.scss
96
- - _sass/components/_footer.scss
97
- - _sass/components/_header.scss
98
- - _sass/components/_hero.scss
99
- - _sass/components/_nav-buttons.scss
100
- - _sass/components/_side-nav.scss
101
- - _sass/components/_site-width.scss
102
- - _sass/components/_top-nav.scss
103
- - _sass/components/_usa-banner.scss
104
- - _sass/uswds/_all.scss
105
- - _sass/uswds/components/_accordions.scss
106
- - _sass/uswds/components/_alerts.scss
107
- - _sass/uswds/components/_banner.scss
131
+ - _sass/_uswds-theme-custom-styles.scss
132
+ - _sass/_uswds-theme-override-settings.scss
133
+ - _sass/_uswds-theme-packages.scss
134
+ - _sass/_uswds-theme-settings.scss
135
+ - _sass/uswds/components/_all.scss
136
+ - _sass/uswds/components/_alt-color-section.scss
137
+ - _sass/uswds/components/_card.scss
108
138
  - _sass/uswds/components/_footer.scss
109
- - _sass/uswds/components/_forms.scss
110
- - _sass/uswds/components/_graphic-list.scss
111
139
  - _sass/uswds/components/_header.scss
112
140
  - _sass/uswds/components/_hero.scss
113
- - _sass/uswds/components/_layout.scss
114
- - _sass/uswds/components/_media-block.scss
115
- - _sass/uswds/components/_navigation.scss
116
- - _sass/uswds/components/_search.scss
117
- - _sass/uswds/components/_section.scss
118
- - _sass/uswds/components/_sidenav.scss
119
- - _sass/uswds/components/_skipnav.scss
120
- - _sass/uswds/core/_base.scss
121
- - _sass/uswds/core/_defaults.scss
122
- - _sass/uswds/core/_fonts.scss
123
- - _sass/uswds/core/_grid-settings.scss
124
- - _sass/uswds/core/_grid.scss
125
- - _sass/uswds/core/_utilities.scss
126
- - _sass/uswds/core/_variables.scss
127
- - _sass/uswds/elements/_buttons.scss
128
- - _sass/uswds/elements/_embed.scss
129
- - _sass/uswds/elements/_figure.scss
130
- - _sass/uswds/elements/_inputs.scss
131
- - _sass/uswds/elements/_labels.scss
132
- - _sass/uswds/elements/_list.scss
133
- - _sass/uswds/elements/_table.scss
134
- - _sass/uswds/elements/_typography.scss
135
- - _sass/uswds/lib/_bourbon-deprecated-upcoming.scss
136
- - _sass/uswds/lib/_bourbon.scss
137
- - _sass/uswds/lib/_neat-helpers.scss
138
- - _sass/uswds/lib/_neat.scss
139
- - _sass/uswds/lib/_normalize.scss
140
- - _sass/uswds/lib/addons/_border-color.scss
141
- - _sass/uswds/lib/addons/_border-radius.scss
142
- - _sass/uswds/lib/addons/_border-style.scss
143
- - _sass/uswds/lib/addons/_border-width.scss
144
- - _sass/uswds/lib/addons/_buttons.scss
145
- - _sass/uswds/lib/addons/_clearfix.scss
146
- - _sass/uswds/lib/addons/_ellipsis.scss
147
- - _sass/uswds/lib/addons/_font-stacks.scss
148
- - _sass/uswds/lib/addons/_hide-text.scss
149
- - _sass/uswds/lib/addons/_margin.scss
150
- - _sass/uswds/lib/addons/_padding.scss
151
- - _sass/uswds/lib/addons/_position.scss
152
- - _sass/uswds/lib/addons/_prefixer.scss
153
- - _sass/uswds/lib/addons/_retina-image.scss
154
- - _sass/uswds/lib/addons/_size.scss
155
- - _sass/uswds/lib/addons/_text-inputs.scss
156
- - _sass/uswds/lib/addons/_timing-functions.scss
157
- - _sass/uswds/lib/addons/_triangle.scss
158
- - _sass/uswds/lib/addons/_word-wrap.scss
159
- - _sass/uswds/lib/css3/_animation.scss
160
- - _sass/uswds/lib/css3/_appearance.scss
161
- - _sass/uswds/lib/css3/_backface-visibility.scss
162
- - _sass/uswds/lib/css3/_background-image.scss
163
- - _sass/uswds/lib/css3/_background.scss
164
- - _sass/uswds/lib/css3/_border-image.scss
165
- - _sass/uswds/lib/css3/_calc.scss
166
- - _sass/uswds/lib/css3/_columns.scss
167
- - _sass/uswds/lib/css3/_filter.scss
168
- - _sass/uswds/lib/css3/_flex-box.scss
169
- - _sass/uswds/lib/css3/_font-face.scss
170
- - _sass/uswds/lib/css3/_font-feature-settings.scss
171
- - _sass/uswds/lib/css3/_hidpi-media-query.scss
172
- - _sass/uswds/lib/css3/_hyphens.scss
173
- - _sass/uswds/lib/css3/_image-rendering.scss
174
- - _sass/uswds/lib/css3/_keyframes.scss
175
- - _sass/uswds/lib/css3/_linear-gradient.scss
176
- - _sass/uswds/lib/css3/_perspective.scss
177
- - _sass/uswds/lib/css3/_placeholder.scss
178
- - _sass/uswds/lib/css3/_radial-gradient.scss
179
- - _sass/uswds/lib/css3/_selection.scss
180
- - _sass/uswds/lib/css3/_text-decoration.scss
181
- - _sass/uswds/lib/css3/_transform.scss
182
- - _sass/uswds/lib/css3/_transition.scss
183
- - _sass/uswds/lib/css3/_user-select.scss
184
- - _sass/uswds/lib/functions/_assign-inputs.scss
185
- - _sass/uswds/lib/functions/_contains-falsy.scss
186
- - _sass/uswds/lib/functions/_contains.scss
187
- - _sass/uswds/lib/functions/_is-length.scss
188
- - _sass/uswds/lib/functions/_is-light.scss
189
- - _sass/uswds/lib/functions/_is-number.scss
190
- - _sass/uswds/lib/functions/_is-size.scss
191
- - _sass/uswds/lib/functions/_modular-scale.scss
192
- - _sass/uswds/lib/functions/_new-breakpoint.scss
193
- - _sass/uswds/lib/functions/_private.scss
194
- - _sass/uswds/lib/functions/_px-to-em.scss
195
- - _sass/uswds/lib/functions/_px-to-rem.scss
196
- - _sass/uswds/lib/functions/_shade.scss
197
- - _sass/uswds/lib/functions/_strip-units.scss
198
- - _sass/uswds/lib/functions/_tint.scss
199
- - _sass/uswds/lib/functions/_transition-property-name.scss
200
- - _sass/uswds/lib/functions/_unpack.scss
201
- - _sass/uswds/lib/grid/_box-sizing.scss
202
- - _sass/uswds/lib/grid/_direction-context.scss
203
- - _sass/uswds/lib/grid/_display-context.scss
204
- - _sass/uswds/lib/grid/_fill-parent.scss
205
- - _sass/uswds/lib/grid/_media.scss
206
- - _sass/uswds/lib/grid/_omega.scss
207
- - _sass/uswds/lib/grid/_outer-container.scss
208
- - _sass/uswds/lib/grid/_pad.scss
209
- - _sass/uswds/lib/grid/_private.scss
210
- - _sass/uswds/lib/grid/_row.scss
211
- - _sass/uswds/lib/grid/_shift.scss
212
- - _sass/uswds/lib/grid/_span-columns.scss
213
- - _sass/uswds/lib/grid/_to-deprecate.scss
214
- - _sass/uswds/lib/grid/_visual-grid.scss
215
- - _sass/uswds/lib/helpers/_convert-units.scss
216
- - _sass/uswds/lib/helpers/_directional-values.scss
217
- - _sass/uswds/lib/helpers/_font-source-declaration.scss
218
- - _sass/uswds/lib/helpers/_gradient-positions-parser.scss
219
- - _sass/uswds/lib/helpers/_linear-angle-parser.scss
220
- - _sass/uswds/lib/helpers/_linear-gradient-parser.scss
221
- - _sass/uswds/lib/helpers/_linear-positions-parser.scss
222
- - _sass/uswds/lib/helpers/_linear-side-corner-parser.scss
223
- - _sass/uswds/lib/helpers/_radial-arg-parser.scss
224
- - _sass/uswds/lib/helpers/_radial-gradient-parser.scss
225
- - _sass/uswds/lib/helpers/_radial-positions-parser.scss
226
- - _sass/uswds/lib/helpers/_render-gradients.scss
227
- - _sass/uswds/lib/helpers/_shape-size-stripper.scss
228
- - _sass/uswds/lib/helpers/_str-to-num.scss
229
- - _sass/uswds/lib/mixins/_clearfix.scss
230
- - _sass/uswds/lib/settings/_asset-pipeline.scss
231
- - _sass/uswds/lib/settings/_disable-warnings.scss
232
- - _sass/uswds/lib/settings/_grid.scss
233
- - _sass/uswds/lib/settings/_prefixer.scss
234
- - _sass/uswds/lib/settings/_px-to-em.scss
235
- - _sass/uswds/lib/settings/_visual-grid.scss
236
- - _sass/uswds/uswds.scss
237
- - assets/css/main.scss
141
+ - _sass/uswds/components/_nav-buttons.scss
142
+ - _sass/uswds/components/_side-nav.scss
143
+ - _sass/uswds/components/_site-width.scss
144
+ - _sass/uswds/components/_top-nav.scss
145
+ - _sass/uswds/components/_usa-banner.scss
146
+ - _sass/uswds/custom/_uswds-theme-custom-styles.scss
147
+ - _sass/uswds/settings/_uswds-conversion-variables.scss
148
+ - _sass/uswds/src/base/_accessibility.scss
149
+ - _sass/uswds/src/base/_body.scss
150
+ - _sass/uswds/src/components/_accordions.scss
151
+ - _sass/uswds/src/components/_alerts.scss
152
+ - _sass/uswds/src/components/_banner.scss
153
+ - _sass/uswds/src/components/_breadcrumb.scss
154
+ - _sass/uswds/src/components/_button-groups.scss
155
+ - _sass/uswds/src/components/_card.scss
156
+ - _sass/uswds/src/components/_checklist.scss
157
+ - _sass/uswds/src/components/_footer.scss
158
+ - _sass/uswds/src/components/_forms.scss
159
+ - _sass/uswds/src/components/_graphic-list.scss
160
+ - _sass/uswds/src/components/_header.scss
161
+ - _sass/uswds/src/components/_hero.scss
162
+ - _sass/uswds/src/components/_identifier.scss
163
+ - _sass/uswds/src/components/_layout.scss
164
+ - _sass/uswds/src/components/_media-block.scss
165
+ - _sass/uswds/src/components/_megamenu.scss
166
+ - _sass/uswds/src/components/_nav-container.scss
167
+ - _sass/uswds/src/components/_navbar.scss
168
+ - _sass/uswds/src/components/_navigation.scss
169
+ - _sass/uswds/src/components/_search.scss
170
+ - _sass/uswds/src/components/_section.scss
171
+ - _sass/uswds/src/components/_sidenav.scss
172
+ - _sass/uswds/src/components/_skipnav.scss
173
+ - _sass/uswds/src/components/_step-indicator.scss
174
+ - _sass/uswds/src/components/_tooltip.scss
175
+ - _sass/uswds/src/core/_defaults.scss
176
+ - _sass/uswds/src/core/_deprecated.scss
177
+ - _sass/uswds/src/core/_functions.scss
178
+ - _sass/uswds/src/core/_notifications.scss
179
+ - _sass/uswds/src/core/_properties.scss
180
+ - _sass/uswds/src/core/_system-tokens.scss
181
+ - _sass/uswds/src/core/_variables.scss
182
+ - _sass/uswds/src/core/mixins/_add-aspect.scss
183
+ - _sass/uswds/src/core/mixins/_add-background-svg.scss
184
+ - _sass/uswds/src/core/mixins/_add-bar.scss
185
+ - _sass/uswds/src/core/mixins/_add-checkbox-placeholder.scss
186
+ - _sass/uswds/src/core/mixins/_add-kerning.scss
187
+ - _sass/uswds/src/core/mixins/_add-knockout-font-smoothing.scss
188
+ - _sass/uswds/src/core/mixins/_add-link-styles.scss
189
+ - _sass/uswds/src/core/mixins/_add-list-reset.scss
190
+ - _sass/uswds/src/core/mixins/_add-responsive-site-margins.scss
191
+ - _sass/uswds/src/core/mixins/_add-success-mark.scss
192
+ - _sass/uswds/src/core/mixins/_all.scss
193
+ - _sass/uswds/src/core/mixins/_at-media.scss
194
+ - _sass/uswds/src/core/mixins/_border-box-sizing.scss
195
+ - _sass/uswds/src/core/mixins/_button-disabled.scss
196
+ - _sass/uswds/src/core/mixins/_button-unstyled.scss
197
+ - _sass/uswds/src/core/mixins/_clearfix.scss
198
+ - _sass/uswds/src/core/mixins/_embed-container.scss
199
+ - _sass/uswds/src/core/mixins/_external-link.scss
200
+ - _sass/uswds/src/core/mixins/_focus.scss
201
+ - _sass/uswds/src/core/mixins/_font-face.scss
202
+ - _sass/uswds/src/core/mixins/_icon.scss
203
+ - _sass/uswds/src/core/mixins/_layout-grid.scss
204
+ - _sass/uswds/src/core/mixins/_media-block-img.scss
205
+ - _sass/uswds/src/core/mixins/_media-link.scss
206
+ - _sass/uswds/src/core/mixins/_nav-list.scss
207
+ - _sass/uswds/src/core/mixins/_override-prose.scss
208
+ - _sass/uswds/src/core/mixins/_screen-reader.scss
209
+ - _sass/uswds/src/core/mixins/_set-link-from-bg.scss
210
+ - _sass/uswds/src/core/mixins/_set-text-from-bg.scss
211
+ - _sass/uswds/src/core/mixins/_typography.scss
212
+ - _sass/uswds/src/core/mixins/_unstyled-list.scss
213
+ - _sass/uswds/src/core/mixins/_usa-list-styles.scss
214
+ - _sass/uswds/src/core/mixins/_usa-table-styles.scss
215
+ - _sass/uswds/src/core/mixins/_usa-typography.scss
216
+ - _sass/uswds/src/core/mixins/_utility-builder.scss
217
+ - _sass/uswds/src/core/mixins/layout-grid/_grid-container.scss
218
+ - _sass/uswds/src/core/mixins/layout-grid/_grid-row.scss
219
+ - _sass/uswds/src/core/mixins/utilities/_align-items.scss
220
+ - _sass/uswds/src/core/mixins/utilities/_align-self.scss
221
+ - _sass/uswds/src/core/mixins/utilities/_background-color.scss
222
+ - _sass/uswds/src/core/mixins/utilities/_border-color.scss
223
+ - _sass/uswds/src/core/mixins/utilities/_border-radius.scss
224
+ - _sass/uswds/src/core/mixins/utilities/_border-width.scss
225
+ - _sass/uswds/src/core/mixins/utilities/_border.scss
226
+ - _sass/uswds/src/core/mixins/utilities/_bottom.scss
227
+ - _sass/uswds/src/core/mixins/utilities/_circle.scss
228
+ - _sass/uswds/src/core/mixins/utilities/_color.scss
229
+ - _sass/uswds/src/core/mixins/utilities/_cursor.scss
230
+ - _sass/uswds/src/core/mixins/utilities/_display.scss
231
+ - _sass/uswds/src/core/mixins/utilities/_flex-direction.scss
232
+ - _sass/uswds/src/core/mixins/utilities/_flex.scss
233
+ - _sass/uswds/src/core/mixins/utilities/_float.scss
234
+ - _sass/uswds/src/core/mixins/utilities/_font-weight.scss
235
+ - _sass/uswds/src/core/mixins/utilities/_font.scss
236
+ - _sass/uswds/src/core/mixins/utilities/_height.scss
237
+ - _sass/uswds/src/core/mixins/utilities/_justify-content.scss
238
+ - _sass/uswds/src/core/mixins/utilities/_left.scss
239
+ - _sass/uswds/src/core/mixins/utilities/_line-height.scss
240
+ - _sass/uswds/src/core/mixins/utilities/_margin.scss
241
+ - _sass/uswds/src/core/mixins/utilities/_max-height.scss
242
+ - _sass/uswds/src/core/mixins/utilities/_max-width.scss
243
+ - _sass/uswds/src/core/mixins/utilities/_measure.scss
244
+ - _sass/uswds/src/core/mixins/utilities/_min-height.scss
245
+ - _sass/uswds/src/core/mixins/utilities/_min-width.scss
246
+ - _sass/uswds/src/core/mixins/utilities/_order.scss
247
+ - _sass/uswds/src/core/mixins/utilities/_outline-color.scss
248
+ - _sass/uswds/src/core/mixins/utilities/_outline.scss
249
+ - _sass/uswds/src/core/mixins/utilities/_overflow.scss
250
+ - _sass/uswds/src/core/mixins/utilities/_padding.scss
251
+ - _sass/uswds/src/core/mixins/utilities/_pin.scss
252
+ - _sass/uswds/src/core/mixins/utilities/_position.scss
253
+ - _sass/uswds/src/core/mixins/utilities/_right.scss
254
+ - _sass/uswds/src/core/mixins/utilities/_shadow.scss
255
+ - _sass/uswds/src/core/mixins/utilities/_square.scss
256
+ - _sass/uswds/src/core/mixins/utilities/_text-align.scss
257
+ - _sass/uswds/src/core/mixins/utilities/_text-decoration-color.scss
258
+ - _sass/uswds/src/core/mixins/utilities/_text-decoration.scss
259
+ - _sass/uswds/src/core/mixins/utilities/_text-indent.scss
260
+ - _sass/uswds/src/core/mixins/utilities/_text.scss
261
+ - _sass/uswds/src/core/mixins/utilities/_top.scss
262
+ - _sass/uswds/src/core/mixins/utilities/_vertical-align.scss
263
+ - _sass/uswds/src/core/mixins/utilities/_white-space.scss
264
+ - _sass/uswds/src/core/mixins/utilities/_width.scss
265
+ - _sass/uswds/src/core/mixins/utilities/_z-index.scss
266
+ - _sass/uswds/src/core/placeholders/_all.scss
267
+ - _sass/uswds/src/core/placeholders/_list.scss
268
+ - _sass/uswds/src/core/placeholders/_table.scss
269
+ - _sass/uswds/src/core/system-tokens/_blue-cool.scss
270
+ - _sass/uswds/src/core/system-tokens/_blue-warm.scss
271
+ - _sass/uswds/src/core/system-tokens/_blue.scss
272
+ - _sass/uswds/src/core/system-tokens/_cyan.scss
273
+ - _sass/uswds/src/core/system-tokens/_gold.scss
274
+ - _sass/uswds/src/core/system-tokens/_gray-cool.scss
275
+ - _sass/uswds/src/core/system-tokens/_gray-warm.scss
276
+ - _sass/uswds/src/core/system-tokens/_gray.scss
277
+ - _sass/uswds/src/core/system-tokens/_green-cool.scss
278
+ - _sass/uswds/src/core/system-tokens/_green-warm.scss
279
+ - _sass/uswds/src/core/system-tokens/_green.scss
280
+ - _sass/uswds/src/core/system-tokens/_indigo-cool.scss
281
+ - _sass/uswds/src/core/system-tokens/_indigo-warm.scss
282
+ - _sass/uswds/src/core/system-tokens/_indigo.scss
283
+ - _sass/uswds/src/core/system-tokens/_magenta.scss
284
+ - _sass/uswds/src/core/system-tokens/_mint-cool.scss
285
+ - _sass/uswds/src/core/system-tokens/_mint.scss
286
+ - _sass/uswds/src/core/system-tokens/_orange-warm.scss
287
+ - _sass/uswds/src/core/system-tokens/_orange.scss
288
+ - _sass/uswds/src/core/system-tokens/_red-cool.scss
289
+ - _sass/uswds/src/core/system-tokens/_red-warm.scss
290
+ - _sass/uswds/src/core/system-tokens/_red.scss
291
+ - _sass/uswds/src/core/system-tokens/_violet-warm.scss
292
+ - _sass/uswds/src/core/system-tokens/_violet.scss
293
+ - _sass/uswds/src/core/system-tokens/_yellow.scss
294
+ - _sass/uswds/src/elements/_buttons.scss
295
+ - _sass/uswds/src/elements/_embed.scss
296
+ - _sass/uswds/src/elements/_figure.scss
297
+ - _sass/uswds/src/elements/_layout-grid.scss
298
+ - _sass/uswds/src/elements/_table.scss
299
+ - _sass/uswds/src/elements/_tags.scss
300
+ - _sass/uswds/src/elements/form-controls/_all.scss
301
+ - _sass/uswds/src/elements/form-controls/_character-count.scss
302
+ - _sass/uswds/src/elements/form-controls/_checkbox-and-radio.scss
303
+ - _sass/uswds/src/elements/form-controls/_combo-box.scss
304
+ - _sass/uswds/src/elements/form-controls/_date-input.scss
305
+ - _sass/uswds/src/elements/form-controls/_date-picker.scss
306
+ - _sass/uswds/src/elements/form-controls/_dropdown.scss
307
+ - _sass/uswds/src/elements/form-controls/_file-input.scss
308
+ - _sass/uswds/src/elements/form-controls/_global.scss
309
+ - _sass/uswds/src/elements/form-controls/_range-input.scss
310
+ - _sass/uswds/src/elements/form-controls/_text-input.scss
311
+ - _sass/uswds/src/elements/form-controls/_time-picker.scss
312
+ - _sass/uswds/src/elements/typography/_content.scss
313
+ - _sass/uswds/src/elements/typography/_links.scss
314
+ - _sass/uswds/src/elements/typography/_list.scss
315
+ - _sass/uswds/src/elements/typography/_prose.scss
316
+ - _sass/uswds/src/global/_focus.scss
317
+ - _sass/uswds/src/global/_font-face.scss
318
+ - _sass/uswds/src/global/_sizing.scss
319
+ - _sass/uswds/src/global/_typography.scss
320
+ - _sass/uswds/src/lib/_normalize.scss
321
+ - _sass/uswds/src/packages/_form-controls.scss
322
+ - _sass/uswds/src/packages/_form-templates.scss
323
+ - _sass/uswds/src/packages/_global.scss
324
+ - _sass/uswds/src/packages/_layout-grid.scss
325
+ - _sass/uswds/src/packages/_required.scss
326
+ - _sass/uswds/src/packages/_typography.scss
327
+ - _sass/uswds/src/packages/_usa-accordion.scss
328
+ - _sass/uswds/src/packages/_usa-alert.scss
329
+ - _sass/uswds/src/packages/_usa-banner.scss
330
+ - _sass/uswds/src/packages/_usa-breadcrumb.scss
331
+ - _sass/uswds/src/packages/_usa-button-group.scss
332
+ - _sass/uswds/src/packages/_usa-button.scss
333
+ - _sass/uswds/src/packages/_usa-card.scss
334
+ - _sass/uswds/src/packages/_usa-checklist.scss
335
+ - _sass/uswds/src/packages/_usa-footer.scss
336
+ - _sass/uswds/src/packages/_usa-header.scss
337
+ - _sass/uswds/src/packages/_usa-hero.scss
338
+ - _sass/uswds/src/packages/_usa-identifier.scss
339
+ - _sass/uswds/src/packages/_usa-media-block.scss
340
+ - _sass/uswds/src/packages/_usa-megamenu.scss
341
+ - _sass/uswds/src/packages/_usa-nav-container.scss
342
+ - _sass/uswds/src/packages/_usa-nav.scss
343
+ - _sass/uswds/src/packages/_usa-navbar.scss
344
+ - _sass/uswds/src/packages/_usa-search.scss
345
+ - _sass/uswds/src/packages/_usa-sidenav.scss
346
+ - _sass/uswds/src/packages/_usa-skipnav.scss
347
+ - _sass/uswds/src/packages/_usa-step-indicator.scss
348
+ - _sass/uswds/src/packages/_usa-table.scss
349
+ - _sass/uswds/src/packages/_usa-tag.scss
350
+ - _sass/uswds/src/packages/_usa-tooltip.scss
351
+ - _sass/uswds/src/packages/_uswds-components.scss
352
+ - _sass/uswds/src/packages/_uswds-fonts.scss
353
+ - _sass/uswds/src/packages/_uswds-utilities.scss
354
+ - _sass/uswds/src/packages/_validation.scss
355
+ - _sass/uswds/src/settings/_settings-color.scss
356
+ - _sass/uswds/src/settings/_settings-components.scss
357
+ - _sass/uswds/src/settings/_settings-general.scss
358
+ - _sass/uswds/src/settings/_settings-spacing.scss
359
+ - _sass/uswds/src/settings/_settings-typography.scss
360
+ - _sass/uswds/src/settings/_settings-utilities.scss
361
+ - _sass/uswds/src/theme/_uswds-theme-color.scss
362
+ - _sass/uswds/src/theme/_uswds-theme-components.scss
363
+ - _sass/uswds/src/theme/_uswds-theme-custom-styles.scss
364
+ - _sass/uswds/src/theme/_uswds-theme-general.scss
365
+ - _sass/uswds/src/theme/_uswds-theme-spacing.scss
366
+ - _sass/uswds/src/theme/_uswds-theme-typography.scss
367
+ - _sass/uswds/src/theme/_uswds-theme-utilities.scss
368
+ - _sass/uswds/src/theme/styles.scss
369
+ - _sass/uswds/src/uswds.scss
370
+ - _sass/uswds/src/utilities/palettes/_all.scss
371
+ - _sass/uswds/src/utilities/palettes/_default-palettes.scss
372
+ - _sass/uswds/src/utilities/palettes/_font-palettes.scss
373
+ - _sass/uswds/src/utilities/palettes/_palette-registry.scss
374
+ - _sass/uswds/src/utilities/palettes/_spacing-palettes.scss
375
+ - _sass/uswds/src/utilities/palettes/colors/_all-colors-palettes.scss
376
+ - _sass/uswds/src/utilities/palettes/colors/_black-transparent-palettes.scss
377
+ - _sass/uswds/src/utilities/palettes/colors/_blue-cool-palettes.scss
378
+ - _sass/uswds/src/utilities/palettes/colors/_blue-palettes.scss
379
+ - _sass/uswds/src/utilities/palettes/colors/_blue-warm-palettes.scss
380
+ - _sass/uswds/src/utilities/palettes/colors/_cyan-palettes.scss
381
+ - _sass/uswds/src/utilities/palettes/colors/_gold-palettes.scss
382
+ - _sass/uswds/src/utilities/palettes/colors/_gray-cool-palettes.scss
383
+ - _sass/uswds/src/utilities/palettes/colors/_gray-palettes.scss
384
+ - _sass/uswds/src/utilities/palettes/colors/_gray-warm-palettes.scss
385
+ - _sass/uswds/src/utilities/palettes/colors/_green-cool-palettes.scss
386
+ - _sass/uswds/src/utilities/palettes/colors/_green-palettes.scss
387
+ - _sass/uswds/src/utilities/palettes/colors/_green-warm-palettes.scss
388
+ - _sass/uswds/src/utilities/palettes/colors/_indigo-cool-palettes.scss
389
+ - _sass/uswds/src/utilities/palettes/colors/_indigo-palettes.scss
390
+ - _sass/uswds/src/utilities/palettes/colors/_indigo-warm-palettes.scss
391
+ - _sass/uswds/src/utilities/palettes/colors/_magenta-palettes.scss
392
+ - _sass/uswds/src/utilities/palettes/colors/_mint-cool-palettes.scss
393
+ - _sass/uswds/src/utilities/palettes/colors/_mint-palettes.scss
394
+ - _sass/uswds/src/utilities/palettes/colors/_orange-palettes.scss
395
+ - _sass/uswds/src/utilities/palettes/colors/_orange-warm-palettes.scss
396
+ - _sass/uswds/src/utilities/palettes/colors/_red-cool-palettes.scss
397
+ - _sass/uswds/src/utilities/palettes/colors/_red-palettes.scss
398
+ - _sass/uswds/src/utilities/palettes/colors/_red-warm-palettes.scss
399
+ - _sass/uswds/src/utilities/palettes/colors/_violet-palettes.scss
400
+ - _sass/uswds/src/utilities/palettes/colors/_violet-warm-palettes.scss
401
+ - _sass/uswds/src/utilities/palettes/colors/_white-transparent-palettes.scss
402
+ - _sass/uswds/src/utilities/palettes/colors/_yellow-palettes.scss
403
+ - _sass/uswds/src/utilities/rules/_all.scss
404
+ - _sass/uswds/src/utilities/rules/_package.scss
405
+ - _sass/uswds/src/utilities/rules/add-aspect.scss
406
+ - _sass/uswds/src/utilities/rules/add-list-reset.scss
407
+ - _sass/uswds/src/utilities/rules/align-items.scss
408
+ - _sass/uswds/src/utilities/rules/align-self.scss
409
+ - _sass/uswds/src/utilities/rules/background-color.scss
410
+ - _sass/uswds/src/utilities/rules/border-color.scss
411
+ - _sass/uswds/src/utilities/rules/border-radius.scss
412
+ - _sass/uswds/src/utilities/rules/border-style.scss
413
+ - _sass/uswds/src/utilities/rules/border-width.scss
414
+ - _sass/uswds/src/utilities/rules/border.scss
415
+ - _sass/uswds/src/utilities/rules/bottom.scss
416
+ - _sass/uswds/src/utilities/rules/box-shadow.scss
417
+ - _sass/uswds/src/utilities/rules/circle.scss
418
+ - _sass/uswds/src/utilities/rules/clearfix.scss
419
+ - _sass/uswds/src/utilities/rules/color.scss
420
+ - _sass/uswds/src/utilities/rules/cursor.scss
421
+ - _sass/uswds/src/utilities/rules/display.scss
422
+ - _sass/uswds/src/utilities/rules/flex-direction.scss
423
+ - _sass/uswds/src/utilities/rules/flex-wrap.scss
424
+ - _sass/uswds/src/utilities/rules/flex.scss
425
+ - _sass/uswds/src/utilities/rules/float.scss
426
+ - _sass/uswds/src/utilities/rules/font-family.scss
427
+ - _sass/uswds/src/utilities/rules/font-feature.scss
428
+ - _sass/uswds/src/utilities/rules/font-style.scss
429
+ - _sass/uswds/src/utilities/rules/font-weight.scss
430
+ - _sass/uswds/src/utilities/rules/font.scss
431
+ - _sass/uswds/src/utilities/rules/height.scss
432
+ - _sass/uswds/src/utilities/rules/justify-content.scss
433
+ - _sass/uswds/src/utilities/rules/left.scss
434
+ - _sass/uswds/src/utilities/rules/letter-spacing.scss
435
+ - _sass/uswds/src/utilities/rules/line-height.scss
436
+ - _sass/uswds/src/utilities/rules/margin.scss
437
+ - _sass/uswds/src/utilities/rules/max-height.scss
438
+ - _sass/uswds/src/utilities/rules/max-width.scss
439
+ - _sass/uswds/src/utilities/rules/measure.scss
440
+ - _sass/uswds/src/utilities/rules/min-height.scss
441
+ - _sass/uswds/src/utilities/rules/min-width.scss
442
+ - _sass/uswds/src/utilities/rules/opacity.scss
443
+ - _sass/uswds/src/utilities/rules/order.scss
444
+ - _sass/uswds/src/utilities/rules/outline-color.scss
445
+ - _sass/uswds/src/utilities/rules/outline.scss
446
+ - _sass/uswds/src/utilities/rules/overflow.scss
447
+ - _sass/uswds/src/utilities/rules/padding.scss
448
+ - _sass/uswds/src/utilities/rules/pin.scss
449
+ - _sass/uswds/src/utilities/rules/position.scss
450
+ - _sass/uswds/src/utilities/rules/right.scss
451
+ - _sass/uswds/src/utilities/rules/square.scss
452
+ - _sass/uswds/src/utilities/rules/text-align.scss
453
+ - _sass/uswds/src/utilities/rules/text-decoration-color.scss
454
+ - _sass/uswds/src/utilities/rules/text-decoration.scss
455
+ - _sass/uswds/src/utilities/rules/text-indent.scss
456
+ - _sass/uswds/src/utilities/rules/text-transform.scss
457
+ - _sass/uswds/src/utilities/rules/top.scss
458
+ - _sass/uswds/src/utilities/rules/vertical-align.scss
459
+ - _sass/uswds/src/utilities/rules/whitespace.scss
460
+ - _sass/uswds/src/utilities/rules/width.scss
461
+ - _sass/uswds/src/utilities/rules/z-index.scss
462
+ - _sass/uswds/src/utilities/utility-fonts.scss
463
+ - assets/css/uswds-theme.scss
238
464
  - assets/img/circle.png
239
465
  - assets/img/hero.png
240
466
  - assets/img/project-images/project-placeholder.png
241
467
  - assets/img/team-images/team-placeholder.png
242
- - assets/js/main.js
468
+ - assets/js/anchor.js
469
+ - assets/js/private_eye_conf.js
243
470
  - assets/js/vendor/anchor.min.js
244
- - assets/uswds/fonts/merriweather-bold-webfont.eot
245
- - assets/uswds/fonts/merriweather-bold-webfont.ttf
246
- - assets/uswds/fonts/merriweather-bold-webfont.woff
247
- - assets/uswds/fonts/merriweather-bold-webfont.woff2
248
- - assets/uswds/fonts/merriweather-italic-webfont.eot
249
- - assets/uswds/fonts/merriweather-italic-webfont.ttf
250
- - assets/uswds/fonts/merriweather-italic-webfont.woff
251
- - assets/uswds/fonts/merriweather-italic-webfont.woff2
252
- - assets/uswds/fonts/merriweather-light-webfont.eot
253
- - assets/uswds/fonts/merriweather-light-webfont.ttf
254
- - assets/uswds/fonts/merriweather-light-webfont.woff
255
- - assets/uswds/fonts/merriweather-light-webfont.woff2
256
- - assets/uswds/fonts/merriweather-regular-webfont.eot
257
- - assets/uswds/fonts/merriweather-regular-webfont.ttf
258
- - assets/uswds/fonts/merriweather-regular-webfont.woff
259
- - assets/uswds/fonts/merriweather-regular-webfont.woff2
260
- - assets/uswds/fonts/sourcesanspro-bold-webfont.eot
261
- - assets/uswds/fonts/sourcesanspro-bold-webfont.ttf
262
- - assets/uswds/fonts/sourcesanspro-bold-webfont.woff
263
- - assets/uswds/fonts/sourcesanspro-bold-webfont.woff2
264
- - assets/uswds/fonts/sourcesanspro-italic-webfont.eot
265
- - assets/uswds/fonts/sourcesanspro-italic-webfont.ttf
266
- - assets/uswds/fonts/sourcesanspro-italic-webfont.woff
267
- - assets/uswds/fonts/sourcesanspro-italic-webfont.woff2
268
- - assets/uswds/fonts/sourcesanspro-light-webfont.eot
269
- - assets/uswds/fonts/sourcesanspro-light-webfont.ttf
270
- - assets/uswds/fonts/sourcesanspro-light-webfont.woff
271
- - assets/uswds/fonts/sourcesanspro-light-webfont.woff2
272
- - assets/uswds/fonts/sourcesanspro-regular-webfont.eot
273
- - assets/uswds/fonts/sourcesanspro-regular-webfont.ttf
274
- - assets/uswds/fonts/sourcesanspro-regular-webfont.woff
275
- - assets/uswds/fonts/sourcesanspro-regular-webfont.woff2
276
- - assets/uswds/img/alerts/error.png
471
+ - assets/js/vendor/private_eye.js
472
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Black.ttf
473
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Black.woff
474
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Black.woff2
475
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-BlackItalic.ttf
476
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-BlackItalic.woff
477
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-BlackItalic.woff2
478
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Bold.ttf
479
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Bold.woff
480
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Bold.woff2
481
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-BoldItalic.ttf
482
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-BoldItalic.woff
483
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-BoldItalic.woff2
484
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Italic.ttf
485
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Italic.woff
486
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Italic.woff2
487
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Light.ttf
488
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Light.woff
489
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Light.woff2
490
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-LightItalic.ttf
491
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-LightItalic.woff
492
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-LightItalic.woff2
493
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Regular.ttf
494
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Regular.woff
495
+ - assets/uswds/fonts/merriweather/Latin-Merriweather-Regular.woff2
496
+ - assets/uswds/fonts/public-sans/PublicSans-Black.ttf
497
+ - assets/uswds/fonts/public-sans/PublicSans-Black.woff
498
+ - assets/uswds/fonts/public-sans/PublicSans-Black.woff2
499
+ - assets/uswds/fonts/public-sans/PublicSans-BlackItalic.ttf
500
+ - assets/uswds/fonts/public-sans/PublicSans-BlackItalic.woff
501
+ - assets/uswds/fonts/public-sans/PublicSans-BlackItalic.woff2
502
+ - assets/uswds/fonts/public-sans/PublicSans-Bold.ttf
503
+ - assets/uswds/fonts/public-sans/PublicSans-Bold.woff
504
+ - assets/uswds/fonts/public-sans/PublicSans-Bold.woff2
505
+ - assets/uswds/fonts/public-sans/PublicSans-BoldItalic.ttf
506
+ - assets/uswds/fonts/public-sans/PublicSans-BoldItalic.woff
507
+ - assets/uswds/fonts/public-sans/PublicSans-BoldItalic.woff2
508
+ - assets/uswds/fonts/public-sans/PublicSans-ExtraBold.ttf
509
+ - assets/uswds/fonts/public-sans/PublicSans-ExtraBold.woff
510
+ - assets/uswds/fonts/public-sans/PublicSans-ExtraBold.woff2
511
+ - assets/uswds/fonts/public-sans/PublicSans-ExtraBoldItalic.ttf
512
+ - assets/uswds/fonts/public-sans/PublicSans-ExtraBoldItalic.woff
513
+ - assets/uswds/fonts/public-sans/PublicSans-ExtraBoldItalic.woff2
514
+ - assets/uswds/fonts/public-sans/PublicSans-ExtraLight.ttf
515
+ - assets/uswds/fonts/public-sans/PublicSans-ExtraLight.woff
516
+ - assets/uswds/fonts/public-sans/PublicSans-ExtraLight.woff2
517
+ - assets/uswds/fonts/public-sans/PublicSans-ExtraLightItalic.ttf
518
+ - assets/uswds/fonts/public-sans/PublicSans-ExtraLightItalic.woff
519
+ - assets/uswds/fonts/public-sans/PublicSans-ExtraLightItalic.woff2
520
+ - assets/uswds/fonts/public-sans/PublicSans-Italic.ttf
521
+ - assets/uswds/fonts/public-sans/PublicSans-Italic.woff
522
+ - assets/uswds/fonts/public-sans/PublicSans-Italic.woff2
523
+ - assets/uswds/fonts/public-sans/PublicSans-Light.ttf
524
+ - assets/uswds/fonts/public-sans/PublicSans-Light.woff
525
+ - assets/uswds/fonts/public-sans/PublicSans-Light.woff2
526
+ - assets/uswds/fonts/public-sans/PublicSans-LightItalic.ttf
527
+ - assets/uswds/fonts/public-sans/PublicSans-LightItalic.woff
528
+ - assets/uswds/fonts/public-sans/PublicSans-LightItalic.woff2
529
+ - assets/uswds/fonts/public-sans/PublicSans-Medium.ttf
530
+ - assets/uswds/fonts/public-sans/PublicSans-Medium.woff
531
+ - assets/uswds/fonts/public-sans/PublicSans-Medium.woff2
532
+ - assets/uswds/fonts/public-sans/PublicSans-MediumItalic.ttf
533
+ - assets/uswds/fonts/public-sans/PublicSans-MediumItalic.woff
534
+ - assets/uswds/fonts/public-sans/PublicSans-MediumItalic.woff2
535
+ - assets/uswds/fonts/public-sans/PublicSans-Regular.ttf
536
+ - assets/uswds/fonts/public-sans/PublicSans-Regular.woff
537
+ - assets/uswds/fonts/public-sans/PublicSans-Regular.woff2
538
+ - assets/uswds/fonts/public-sans/PublicSans-SemiBold.ttf
539
+ - assets/uswds/fonts/public-sans/PublicSans-SemiBold.woff
540
+ - assets/uswds/fonts/public-sans/PublicSans-SemiBold.woff2
541
+ - assets/uswds/fonts/public-sans/PublicSans-SemiBoldItalic.ttf
542
+ - assets/uswds/fonts/public-sans/PublicSans-SemiBoldItalic.woff
543
+ - assets/uswds/fonts/public-sans/PublicSans-SemiBoldItalic.woff2
544
+ - assets/uswds/fonts/public-sans/PublicSans-Thin.ttf
545
+ - assets/uswds/fonts/public-sans/PublicSans-Thin.woff
546
+ - assets/uswds/fonts/public-sans/PublicSans-Thin.woff2
547
+ - assets/uswds/fonts/public-sans/PublicSans-ThinItalic.ttf
548
+ - assets/uswds/fonts/public-sans/PublicSans-ThinItalic.woff
549
+ - assets/uswds/fonts/public-sans/PublicSans-ThinItalic.woff2
550
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-100.ttf
551
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-100.woff
552
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-100.woff2
553
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-100italic.ttf
554
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-100italic.woff
555
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-100italic.woff2
556
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-300.ttf
557
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-300.woff
558
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-300.woff2
559
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-300italic.ttf
560
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-300italic.woff
561
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-300italic.woff2
562
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-500.ttf
563
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-500.woff
564
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-500.woff2
565
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-500italic.ttf
566
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-500italic.woff
567
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-500italic.woff2
568
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-700.ttf
569
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-700.woff
570
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-700.woff2
571
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-700italic.ttf
572
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-700italic.woff
573
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-700italic.woff2
574
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-italic.ttf
575
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-italic.woff
576
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-italic.woff2
577
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-regular.ttf
578
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-regular.woff
579
+ - assets/uswds/fonts/roboto-mono/roboto-mono-v5-latin-regular.woff2
580
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-black-webfont.ttf
581
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-black-webfont.woff
582
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-black-webfont.woff2
583
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-blackitalic-webfont.ttf
584
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-blackitalic-webfont.woff
585
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-blackitalic-webfont.woff2
586
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-bold-webfont.ttf
587
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-bold-webfont.woff
588
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-bold-webfont.woff2
589
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-bolditalic-webfont.ttf
590
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-bolditalic-webfont.woff
591
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-bolditalic-webfont.woff2
592
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-extralight-webfont.ttf
593
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-extralight-webfont.woff
594
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-extralight-webfont.woff2
595
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-extralightitalic-webfont.ttf
596
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-extralightitalic-webfont.woff
597
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-extralightitalic-webfont.woff2
598
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-italic-webfont.ttf
599
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-italic-webfont.woff
600
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-italic-webfont.woff2
601
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-light-webfont.ttf
602
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-light-webfont.woff
603
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-light-webfont.woff2
604
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-lightitalic-webfont.ttf
605
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-lightitalic-webfont.woff
606
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-lightitalic-webfont.woff2
607
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-regular-webfont.ttf
608
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-regular-webfont.woff
609
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-regular-webfont.woff2
610
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-semibold-webfont.ttf
611
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-semibold-webfont.woff
612
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-semibold-webfont.woff2
613
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-semibolditalic-webfont.ttf
614
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-semibolditalic-webfont.woff
615
+ - assets/uswds/fonts/source-sans-pro/sourcesanspro-semibolditalic-webfont.woff2
277
616
  - assets/uswds/img/alerts/error.svg
278
- - assets/uswds/img/alerts/info.png
279
617
  - assets/uswds/img/alerts/info.svg
280
- - assets/uswds/img/alerts/success.png
281
618
  - assets/uswds/img/alerts/success.svg
282
- - assets/uswds/img/alerts/warning.png
283
619
  - assets/uswds/img/alerts/warning.svg
284
- - assets/uswds/img/angle-arrow-down-hover.png
620
+ - assets/uswds/img/angle-arrow-down-gray-90.svg
285
621
  - assets/uswds/img/angle-arrow-down-hover.svg
286
- - assets/uswds/img/angle-arrow-down-primary-hover.png
287
622
  - assets/uswds/img/angle-arrow-down-primary-hover.svg
288
- - assets/uswds/img/angle-arrow-down-primary.png
289
623
  - assets/uswds/img/angle-arrow-down-primary.svg
290
- - assets/uswds/img/angle-arrow-down.png
624
+ - assets/uswds/img/angle-arrow-down-white.svg
291
625
  - assets/uswds/img/angle-arrow-down.svg
292
- - assets/uswds/img/angle-arrow-up-primary-hover.png
626
+ - assets/uswds/img/angle-arrow-right-white.svg
627
+ - assets/uswds/img/angle-arrow-right.svg
293
628
  - assets/uswds/img/angle-arrow-up-primary-hover.svg
294
- - assets/uswds/img/angle-arrow-up-primary.png
295
629
  - assets/uswds/img/angle-arrow-up-primary.svg
296
- - assets/uswds/img/arrow-both.png
630
+ - assets/uswds/img/angle-arrow-up-white.svg
631
+ - assets/uswds/img/angle-double-left-solid.svg
632
+ - assets/uswds/img/angle-double-right-solid.svg
633
+ - assets/uswds/img/angle-left-solid.svg
634
+ - assets/uswds/img/angle-right-solid.svg
297
635
  - assets/uswds/img/arrow-both.svg
298
- - assets/uswds/img/arrow-down.png
636
+ - assets/uswds/img/arrow-down-gray-60.svg
299
637
  - assets/uswds/img/arrow-down.svg
300
- - assets/uswds/img/arrow-right.png
638
+ - assets/uswds/img/arrow-left-indigo-cool-50v.svg
639
+ - assets/uswds/img/arrow-left-white.svg
640
+ - assets/uswds/img/arrow-left.svg
301
641
  - assets/uswds/img/arrow-right.svg
642
+ - assets/uswds/img/calendar-alt-solid.svg
643
+ - assets/uswds/img/checkbox-check-print.svg
644
+ - assets/uswds/img/chevron-right-white.svg
645
+ - assets/uswds/img/chevron-right.svg
646
+ - assets/uswds/img/chevron-white.svg
647
+ - assets/uswds/img/chevron.svg
302
648
  - assets/uswds/img/circle-124.png
303
- - assets/uswds/img/close-primary.png
649
+ - assets/uswds/img/circle-gray-20.svg
650
+ - assets/uswds/img/close-alt-blue-60v.svg
651
+ - assets/uswds/img/close-alt.svg
652
+ - assets/uswds/img/close-blue-30-alt.svg
653
+ - assets/uswds/img/close-blue-40v-alt.svg
654
+ - assets/uswds/img/close-blue-50-alt.svg
655
+ - assets/uswds/img/close-blue-50v-alt.svg
656
+ - assets/uswds/img/close-blue-60-alt.svg
657
+ - assets/uswds/img/close-blue-60v-alt.svg
658
+ - assets/uswds/img/close-gray-60.svg
659
+ - assets/uswds/img/close-gray-90-alt.svg
304
660
  - assets/uswds/img/close-primary.svg
305
- - assets/uswds/img/close.png
661
+ - assets/uswds/img/close-white-alt.svg
662
+ - assets/uswds/img/close-white.svg
306
663
  - assets/uswds/img/close.svg
307
- - assets/uswds/img/correct8.png
664
+ - assets/uswds/img/correct8-alt.png
665
+ - assets/uswds/img/correct8-alt.svg
308
666
  - assets/uswds/img/correct8.svg
309
- - assets/uswds/img/correct9.png
310
667
  - assets/uswds/img/correct9.svg
311
- - assets/uswds/img/external-link-alt-hover.png
312
668
  - assets/uswds/img/external-link-alt-hover.svg
313
- - assets/uswds/img/external-link-alt.png
314
669
  - assets/uswds/img/external-link-alt.svg
315
- - assets/uswds/img/external-link-hover.png
316
670
  - assets/uswds/img/external-link-hover.svg
317
- - assets/uswds/img/external-link.png
318
671
  - assets/uswds/img/external-link.svg
319
672
  - assets/uswds/img/favicons/favicon-114.png
320
673
  - assets/uswds/img/favicons/favicon-144.png
@@ -325,32 +678,33 @@ files:
325
678
  - assets/uswds/img/favicons/favicon-72.png
326
679
  - assets/uswds/img/favicons/favicon.ico
327
680
  - assets/uswds/img/favicons/favicon.png
681
+ - assets/uswds/img/file-excel.svg
682
+ - assets/uswds/img/file-pdf.svg
683
+ - assets/uswds/img/file-video.svg
684
+ - assets/uswds/img/file-word.svg
685
+ - assets/uswds/img/file.svg
328
686
  - assets/uswds/img/hero.png
329
687
  - assets/uswds/img/icon-dot-gov.svg
330
688
  - assets/uswds/img/icon-https.svg
689
+ - assets/uswds/img/loader.gif
690
+ - assets/uswds/img/loader.svg
691
+ - assets/uswds/img/lock.svg
331
692
  - assets/uswds/img/logo-img.png
332
- - assets/uswds/img/minus-alt.png
333
693
  - assets/uswds/img/minus-alt.svg
334
- - assets/uswds/img/minus.png
335
694
  - assets/uswds/img/minus.svg
336
- - assets/uswds/img/plus-alt.png
337
695
  - assets/uswds/img/plus-alt.svg
338
- - assets/uswds/img/plus.png
339
696
  - assets/uswds/img/plus.svg
340
- - assets/uswds/img/search-alt.png
341
697
  - assets/uswds/img/search-alt.svg
342
- - assets/uswds/img/search-primary.png
343
698
  - assets/uswds/img/search-primary.svg
344
- - assets/uswds/img/search.png
345
699
  - assets/uswds/img/search.svg
346
- - assets/uswds/img/social-icons/png/facebook25.png
347
- - assets/uswds/img/social-icons/png/rss25.png
348
- - assets/uswds/img/social-icons/png/twitter16.png
349
- - assets/uswds/img/social-icons/png/youtube15.png
350
- - assets/uswds/img/social-icons/svg/facebook25.svg
351
- - assets/uswds/img/social-icons/svg/rss25.svg
352
- - assets/uswds/img/social-icons/svg/twitter16.svg
353
- - assets/uswds/img/social-icons/svg/youtube15.svg
700
+ - assets/uswds/img/social-icons/facebook25.png
701
+ - assets/uswds/img/social-icons/facebook25.svg
702
+ - assets/uswds/img/social-icons/rss25.png
703
+ - assets/uswds/img/social-icons/rss25.svg
704
+ - assets/uswds/img/social-icons/twitter16.png
705
+ - assets/uswds/img/social-icons/twitter16.svg
706
+ - assets/uswds/img/social-icons/youtube15.png
707
+ - assets/uswds/img/social-icons/youtube15.svg
354
708
  - assets/uswds/img/us_flag_small.png
355
709
  - assets/uswds/js/uswds.js
356
710
  - assets/uswds/js/uswds.min.js
@@ -359,7 +713,7 @@ homepage: https://designsystem.digital.gov/
359
713
  licenses:
360
714
  - CC0-1.0
361
715
  metadata: {}
362
- post_install_message:
716
+ post_install_message:
363
717
  rdoc_options: []
364
718
  require_paths:
365
719
  - lib
@@ -374,9 +728,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
374
728
  - !ruby/object:Gem::Version
375
729
  version: '0'
376
730
  requirements: []
377
- rubyforge_project:
378
- rubygems_version: 2.6.10
379
- signing_key:
731
+ rubygems_version: 3.2.6
732
+ signing_key:
380
733
  specification_version: 4
381
734
  summary: A Jekyll theme for the U.S. Web Design System.
382
735
  test_files: []