@cfpb/cfpb-design-system 3.14.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/dist/base/index.css +1 -1
  3. package/dist/base/index.css.map +2 -2
  4. package/dist/base/index.js.map +1 -1
  5. package/dist/components/cfpb-buttons/index.css +1 -1
  6. package/dist/components/cfpb-buttons/index.css.map +2 -2
  7. package/dist/components/cfpb-buttons/index.js.map +1 -1
  8. package/dist/components/cfpb-expandables/index.css +1 -1
  9. package/dist/components/cfpb-expandables/index.css.map +2 -2
  10. package/dist/components/cfpb-expandables/index.js +1 -1
  11. package/dist/components/cfpb-expandables/index.js.map +4 -4
  12. package/dist/components/cfpb-forms/index.css +1 -1
  13. package/dist/components/cfpb-forms/index.css.map +2 -2
  14. package/dist/components/cfpb-forms/index.js +1 -1
  15. package/dist/components/cfpb-forms/index.js.map +4 -4
  16. package/dist/elements/cfpb-button/index.js +3 -3
  17. package/dist/elements/cfpb-button/index.js.map +3 -3
  18. package/dist/elements/cfpb-file-upload/index.js +4 -3
  19. package/dist/elements/cfpb-file-upload/index.js.map +4 -4
  20. package/dist/index.css +1 -1
  21. package/dist/index.css.map +2 -2
  22. package/dist/index.js +4 -4
  23. package/dist/index.js.map +3 -3
  24. package/package.json +2 -1
  25. package/src/abstracts/vars.scss +1 -1
  26. package/src/base/base.scss +5 -0
  27. package/src/base/font.scss +11 -13
  28. package/src/components/cfpb-buttons/button.scss +1 -1
  29. package/src/components/cfpb-expandables/summary-minimal.scss +5 -0
  30. package/src/components/cfpb-expandables/summary.scss +10 -2
  31. package/src/components/cfpb-forms/search-input.scss +4 -7
  32. package/src/components/cfpb-forms/tag.scss +2 -2
  33. package/src/components/cfpb-typography/mixins.scss +1 -1
  34. package/src/elements/cfpb-button/index.js +5 -3
  35. package/src/elements/cfpb-file-upload/index.js +10 -3
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../packages/cfpb-design-system/src/components/cfpb-forms/form.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/form-alert.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/form-field.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/label.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/range.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/search-input.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/select.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/tag.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/text-input.scss", "../../../../../packages/cfpb-design-system/src/utilities/utilities.scss", "../../../../../packages/cfpb-design-system/src/utilities/standard-type.js", "../../../../../packages/cfpb-design-system/src/utilities/event-observer.js", "../../../../../packages/cfpb-design-system/src/utilities/data-hook.js", "../../../../../packages/cfpb-design-system/src/utilities/atomic-helpers.js", "../../../../../packages/cfpb-design-system/src/utilities/type-checkers.js", "../../../../../packages/cfpb-design-system/src/utilities/media-helpers.js", "../../../../../packages/cfpb-design-system/src/utilities/transition/base-transition.js", "../../../../../packages/cfpb-design-system/src/utilities/behavior/flyout-menu.js", "../../../../../packages/cfpb-design-system/src/utilities/transition/alpha-transition.js", "../../../../../packages/cfpb-design-system/src/utilities/transition/max-height-transition.js", "../../../../../packages/cfpb-design-system/src/utilities/transition/move-transition.js", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/multiselect-model.js", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/multiselect-utils.js", "../../../../../packages/cfpb-design-system/src/components/cfpb-icons/icons/error.svg", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/multiselect.js"],
4
- "sourcesContent": [":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.o-form__group{margin-bottom:1.875em}.o-form__fieldset{border:none;margin:0;padding:0}.o-form__fieldset .m-form-field+.m-form-field{margin-top:.625em}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.a-form-alert{--form-alert-icon-color:var(--form-alert-icon-color-default);display:flex;gap:.3125rem}.a-form-alert .cf-icon-svg{color:var(--form-alert-icon-color);flex:none;margin-top:.0625rem}.a-form-alert__text{display:block}.a-form-alert--success .cf-icon-svg{--form-alert-icon-color:var(--form-alert-icon-color-success)}.a-form-alert--warning .cf-icon-svg{--form-alert-icon-color:var(--form-alert-icon-color-warning)}.a-form-alert--error .cf-icon-svg{--form-alert-icon-color:var(--form-alert-icon-color-error)}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.no-js .u-js-only,.u-hide-if-js{display:none!important}.no-js .u-hide-if-js{display:block!important}@media screen{.u-print-only{display:none}}@media print{.u-screen-only{display:none}}.u-clearfix:after{clear:both;content:\"\";display:table}.u-visually-hidden{border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0 0 0 0)}@media only screen and (max-width:37.5em){.u-hide-on-mobile{display:none}}@media only screen and (min-width:37.5625em){.u-show-on-mobile{display:none}}.u-hidden{display:none!important}.u-invisible{visibility:hidden}.u-right{float:right}.u-nowrap{white-space:nowrap}.u-flexible-container{height:0;padding-bottom:56.25%;position:relative}.u-flexible-container__inner{height:100%;left:0;position:absolute;top:0;width:100%}.u-flexible-container--4-3{height:0;padding-bottom:75%;position:relative}.u-mt0{margin-top:0!important}.u-mb0{margin-bottom:0!important}.u-mt5{margin-top:5px!important}.u-mb5{margin-bottom:5px!important}.u-mt10{margin-top:10px!important}.u-mb10{margin-bottom:10px!important}.u-mt15{margin-top:15px!important}.u-mb15{margin-bottom:15px!important}.u-mt20{margin-top:20px!important}.u-mb20{margin-bottom:20px!important}.u-mt30{margin-top:30px!important}.u-mb30{margin-bottom:30px!important}.u-mt45{margin-top:45px!important}.u-mb45{margin-bottom:45px!important}.u-mt60{margin-top:60px!important}.u-mb60{margin-bottom:60px!important}.u-w100pct{width:100%}.u-w90pct{width:90%}.u-w80pct{width:80%}.u-w70pct{width:70%}.u-w60pct{width:60%}.u-w50pct{width:50%}.u-w40pct{width:40%}.u-w30pct{width:30%}.u-w20pct{width:20%}.u-w10pct{width:10%}.u-w75pct{width:75%}.u-w65pct{width:65%}.u-w25pct{width:25%}.u-w15pct{width:15%}.u-w66pct{width:66.6666666667%}.u-w33pct{width:33.3333333333%}.u-small-text,small{font-size:.875em}.u-small-text--subtle,small--subtle{color:var(--gray)}.u-no-animation{transition-duration:0s!important}.u-move-transition{transition:transform .25s ease-out}.u-move-to-origin{transform:translateZ(0)}.u-move-left{transform:translate3d(-100%,0,0)}.u-move-left-2x{transform:translate3d(-200%,0,0)}.u-move-left-3x{transform:translate3d(-300%,0,0)}.u-move-right{transform:translate3d(100%,0,0)}.u-move-up{transform:translate3d(0,-100%,0)}.u-alpha-transition{transition:opacity .25s linear}.u-alpha-100{opacity:1}.u-alpha-0{opacity:0}.u-max-height-transition{contain:paint;overflow:hidden;transition:max-height .2s ease-out}.u-max-height-zero{max-height:0!important}.u-max-height-summary{max-height:88px!important}.m-form-field{--choice-border:var(--choice-border-default);--choice-border-hover:var(--choice-border-hover-default);--choice-border-focus:var(--choice-border-focus-default);--choice-outline-focus:var(--choice-outline-focus-default);--choice-bg:var(--choice-bg-default);--choice-bg-selected:var(--choice-bg-selected-default);--choice-bg-selected-focus:var(--choice-bg-selected-focus-default);--choice-label-disabled:var(--choice-label-disabled-default);--choice-border-width-addendum:0}.m-form-field .a-text-input--full{width:100%}.m-form-field .a-label+.a-text-input{margin-top:.3125em}.m-form-field--checkbox .a-label,.m-form-field--radio .a-label{cursor:pointer;display:inline-grid;grid-template-columns:1.875em auto;overflow-wrap:anywhere;vertical-align:top}.m-form-field--checkbox .a-label:before,.m-form-field--radio .a-label:before{background-color:var(--choice-bg);border:1px solid var(--choice-border);content:\"\";display:inline-block;grid-row-end:3;grid-row-start:1;height:1.125em;left:1px;margin-right:10px;outline:var(--choice-border-width-addendum) solid var(--choice-border);position:relative;top:1px;vertical-align:top;width:1.125em}.m-form-field--checkbox .a-label.hover:before,.m-form-field--checkbox .a-label:hover:before,.m-form-field--radio .a-label.hover:before,.m-form-field--radio .a-label:hover:before{border-color:var(--choice-border-hover)}.m-form-field--checkbox .a-checkbox,.m-form-field--checkbox .a-radio,.m-form-field--radio .a-checkbox,.m-form-field--radio .a-radio{border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0 0 0 0)}.m-form-field--checkbox .a-checkbox.focus+.a-label,.m-form-field--checkbox .a-checkbox:focus+.a-label,.m-form-field--checkbox .a-radio.focus+.a-label,.m-form-field--checkbox .a-radio:focus+.a-label,.m-form-field--radio .a-checkbox.focus+.a-label,.m-form-field--radio .a-checkbox:focus+.a-label,.m-form-field--radio .a-radio.focus+.a-label,.m-form-field--radio .a-radio:focus+.a-label{outline:1px dotted var(--choice-outline-focus);outline-offset:1px}.m-form-field--checkbox .a-checkbox:disabled.focus+.a-label:before,.m-form-field--checkbox .a-checkbox:disabled.hover+.a-label:before,.m-form-field--checkbox .a-checkbox:disabled:checked+.a-label:before,.m-form-field--checkbox .a-checkbox:disabled:focus+.a-label:before,.m-form-field--checkbox .a-checkbox:disabled:hover+.a-label:before,.m-form-field--checkbox .a-radio:disabled.focus+.a-label:before,.m-form-field--checkbox .a-radio:disabled.hover+.a-label:before,.m-form-field--checkbox .a-radio:disabled:checked+.a-label:before,.m-form-field--checkbox .a-radio:disabled:focus+.a-label:before,.m-form-field--checkbox .a-radio:disabled:hover+.a-label:before,.m-form-field--radio .a-checkbox:disabled.focus+.a-label:before,.m-form-field--radio .a-checkbox:disabled.hover+.a-label:before,.m-form-field--radio .a-checkbox:disabled:checked+.a-label:before,.m-form-field--radio .a-checkbox:disabled:focus+.a-label:before,.m-form-field--radio .a-checkbox:disabled:hover+.a-label:before,.m-form-field--radio .a-radio:disabled.focus+.a-label:before,.m-form-field--radio .a-radio:disabled.hover+.a-label:before,.m-form-field--radio .a-radio:disabled:checked+.a-label:before,.m-form-field--radio .a-radio:disabled:focus+.a-label:before,.m-form-field--radio .a-radio:disabled:hover+.a-label:before{border-color:var(--choice-border);box-shadow:none;outline:none}.m-form-field--checkbox .a-checkbox:disabled+.a-label,.m-form-field--checkbox .a-radio:disabled+.a-label,.m-form-field--radio .a-checkbox:disabled+.a-label,.m-form-field--radio .a-radio:disabled+.a-label{color:var(--choice-label-disabled);cursor:not-allowed}.m-form-field--checkbox .a-checkbox:disabled+.a-label:before,.m-form-field--checkbox .a-radio:disabled+.a-label:before,.m-form-field--radio .a-checkbox:disabled+.a-label:before,.m-form-field--radio .a-radio:disabled+.a-label:before{outline:none}.m-form-field--checkbox:has(.a-checkbox:disabled),.m-form-field--checkbox:has(.a-radio:disabled),.m-form-field--radio:has(.a-checkbox:disabled),.m-form-field--radio:has(.a-radio:disabled){--choice-border:var(--choice-border-disabled);--choice-bg:var(--choice-bg-disabled);--choice-bg-selected:var(--choice-bg-selected-disabled)}.m-form-field--checkbox-error,.m-form-field--checkbox-success,.m-form-field--checkbox-warning,.m-form-field--radio-error,.m-form-field--radio-success,.m-form-field--radio-warning{--choice-border-width-addendum:1px}.m-form-field--checkbox-success,.m-form-field--radio-success{--choice-border:var(--choice-border-success)}.m-form-field--checkbox-warning,.m-form-field--radio-warning{--choice-border:var(--choice-border-warning)}.m-form-field--checkbox-error,.m-form-field--radio-error{--choice-border:var(--choice-border-error)}.m-form-field--checkbox .a-checkbox.focus+.a-label:before,.m-form-field--checkbox .a-checkbox:focus+.a-label:before{border-color:var(--choice-border-focus);box-shadow:0 0 0 1px var(--choice-border-focus);outline-color:var(--choice-border-focus)}.m-form-field--checkbox .a-checkbox.hover+.a-label:before,.m-form-field--checkbox .a-checkbox:hover+.a-label:before{border-color:var(--choice-border-hover);box-shadow:0 0 0 1px var(--choice-border-hover);outline-color:var(--choice-border-hover)}.m-form-field--checkbox .a-checkbox:checked+.a-label:before{background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" class=\"cf-icon-svg cf-icon-svg--approved\" viewBox=\"0 0 12 19\"><path d=\"M4.63 15.638a1.03 1.03 0 0 1-.79-.37L.36 11.09a1.03 1.03 0 1 1 1.58-1.316l2.535 3.043L9.958 3.32a1.029 1.029 0 0 1 1.783 1.03L5.52 15.122a1.03 1.03 0 0 1-.803.511l-.088.004z\"/></svg>');background-position:center 0;background-repeat:no-repeat;background-size:auto 1.1875em}.m-form-field--checkbox .a-checkbox:disabled:checked+.a-label:before{background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"%235A5D61\" aria-hidden=\"true\" viewBox=\"0 0 12 19\"><path d=\"M4.63 15.638a1.03 1.03 0 0 1-.79-.37L.36 11.09a1.03 1.03 0 1 1 1.58-1.316l2.535 3.043L9.958 3.32a1.029 1.029 0 0 1 1.783 1.03L5.52 15.122a1.03 1.03 0 0 1-.803.511l-.088.004z\"/></svg>')}.m-form-field--radio .a-label:before{border-radius:50%;transform:rotate(0deg)}.m-form-field--radio .a-radio.focus+.a-label:before,.m-form-field--radio .a-radio:focus+.a-label:before{border-color:var(--choice-border-focus);box-shadow:0 0 0 1px var(--choice-border-focus);outline:none}.m-form-field--radio .a-radio.hover+.a-label:before,.m-form-field--radio .a-radio:hover+.a-label:before{border-color:var(--choice-border-hover);box-shadow:0 0 0 1px var(--choice-border-hover);outline:none}.m-form-field--radio .a-radio:checked+.a-label:before{background-color:var(--choice-bg-selected);box-shadow:inset 0 0 0 2px var(--white)}.m-form-field--radio .a-radio.focus:checked+.a-label:before,.m-form-field--radio .a-radio:focus:checked+.a-label:before{background-color:var(--choice-bg-selected-focus);border-color:var(--choice-border-focus);box-shadow:0 0 0 1px var(--choice-border-focus),inset 0 0 0 2px var(--white)}.m-form-field--radio .a-radio.hover:checked+.a-label:before,.m-form-field--radio .a-radio:hover:checked+.a-label:before{border-color:var(--choice-border-hover);box-shadow:0 0 0 1px var(--choice-border-hover),inset 0 0 0 2px var(--white)}.m-form-field--radio .a-radio.hover:checked:disabled+.a-label:before,.m-form-field--radio .a-radio:checked:disabled+.a-label:before,.m-form-field--radio .a-radio:hover:checked:disabled+.a-label:before{background-color:var(--choice-bg-selected);border-color:var(--choice-border-disabled);box-shadow:inset 0 0 0 2px var(--gray-10)}.m-form-field--lg-target{display:block}.m-form-field--lg-target .a-label{background-color:var(--gray-10);box-sizing:border-box;padding:15px;width:100%}.m-form-field--lg-target .a-checkbox:checked+.a-label,.m-form-field--lg-target .a-radio:checked+.a-label{background-color:var(--pacific-20);box-shadow:inset 0 0 0 1px var(--pacific)}.m-form-field--lg-target .a-checkbox.focus+.a-label,.m-form-field--lg-target .a-checkbox.hover+.a-label,.m-form-field--lg-target .a-checkbox:focus+.a-label,.m-form-field--lg-target .a-checkbox:hover+.a-label,.m-form-field--lg-target .a-radio.focus+.a-label,.m-form-field--lg-target .a-radio.hover+.a-label,.m-form-field--lg-target .a-radio:focus+.a-label,.m-form-field--lg-target .a-radio:hover+.a-label{box-shadow:inset 0 0 0 2px var(--pacific)}.m-form-field--lg-target .a-checkbox.focus+.a-label,.m-form-field--lg-target .a-checkbox:checked+.a-label,.m-form-field--lg-target .a-checkbox:focus+.a-label,.m-form-field--lg-target .a-radio.focus+.a-label,.m-form-field--lg-target .a-radio:checked+.a-label,.m-form-field--lg-target .a-radio:focus+.a-label{outline-offset:1px}.m-form-field--lg-target .a-checkbox:checked:disabled+.a-label,.m-form-field--lg-target .a-checkbox:disabled+.a-label,.m-form-field--lg-target .a-checkbox:hover:disabled+.a-label,.m-form-field--lg-target .a-radio:checked:disabled+.a-label,.m-form-field--lg-target .a-radio:disabled+.a-label,.m-form-field--lg-target .a-radio:hover:disabled+.a-label{background-color:var(--gray-20);box-shadow:none;color:var(--choice-label-disabled)}.m-form-field--lg-target .a-checkbox:checked:disabled+.a-label,.m-form-field--lg-target .a-checkbox:checked:disabled+.a-label:before,.m-form-field--lg-target .a-radio:checked:disabled+.a-label,.m-form-field--lg-target .a-radio:checked:disabled+.a-label:before{border:1px solid var(--form-field-border-disabled)}.m-form-field .a-form-alert{margin-top:.9375em}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.a-label{display:inline-block}.a-label__helper{color:var(--gray-dark);font-size:1rem;font-weight:400}.a-label__helper--block{display:block;margin-top:.8333333333em}.a-label--heading{display:block;font-size:1.125em;font-weight:500;letter-spacing:inherit;line-height:1.25;margin-bottom:.5555555556em;text-transform:inherit}.h1+.a-label--heading,.h2+.a-label--heading,.h3+.a-label--heading,.h5+.a-label--heading,.h6+.a-label--heading,blockquote+.a-label--heading,dl+.a-label--heading,figure+.a-label--heading,h1+.a-label--heading,h2+.a-label--heading,h3+.a-label--heading,h5+.a-label--heading,h6+.a-label--heading,img+.a-label--heading,ol+.a-label--heading,p+.a-label--heading,table+.a-label--heading,ul+.a-label--heading{margin-top:1.6666666667em}@media only screen and (max-width:37.5em){.a-label--heading{font-size:1em;line-height:1.125;margin-bottom:.625em}}.a-label--heading .a-label__helper--block{margin-top:.625rem}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.a-range{appearance:none;min-height:49px;width:100%}.a-range::-webkit-slider-runnable-track{background-color:var(--gray-80);border:1px solid var(--gray-40);border-radius:8px;cursor:pointer;height:.6875rem;width:100%}.a-range::-moz-range-track{background-color:var(--gray-80);border:1px solid var(--gray-40);border-radius:8px;cursor:pointer;height:.6875rem;width:100%}.a-range::-webkit-slider-thumb{appearance:none;background-color:var(--gray-10);border:1px solid var(--gray-40);border-radius:50%;cursor:pointer;height:2.8125rem;margin-top:-1.125rem;width:2.8125rem}.a-range::-moz-range-thumb{appearance:none;background-color:var(--gray-10);border:1px solid var(--gray-40);border-radius:50%;cursor:pointer;height:2.8125rem;margin-top:-1.125rem;width:2.8125rem}.a-range.focus,.a-range:focus{box-shadow:none;outline:none}.a-range.focus::-webkit-slider-thumb,.a-range:focus::-webkit-slider-thumb{background-color:var(--pacific-20);border:2px solid var(--pacific)}.a-range.focus::-moz-range-thumb,.a-range:focus::-moz-range-thumb{background-color:var(--pacific-20);border:2px solid var(--pacific)}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.o-search-input{display:flex;flex-direction:column;row-gap:.9375rem}.o-search-input__input{display:flex;flex:0 1 100%;position:relative;width:auto}.o-search-input__input-label{align-self:center;cursor:pointer;left:10px;position:absolute}.o-search-input__input input[type=search]{appearance:none;padding-left:30px;white-space:nowrap;width:100%}.o-search-input__input button[type=reset]{align-self:center;background-color:transparent;border:1px solid transparent;color:var(--gray-40);display:none;font-size:20px;outline:0;padding:5px;position:absolute;right:0;text-align:right;width:44px}.o-search-input__input button[type=reset]>svg{cursor:pointer;pointer-events:none;width:25px}.o-search-input__input button[type=reset]:focus,.o-search-input__input button[type=reset]:hover{color:var(--black)}.o-search-input__input button[type=reset]:focus>svg{outline:1px dotted var(--pacific)}.o-search-input__input input[type=search]:-ms-input-placeholder~button[type=reset]{display:none}.o-search-input__input input[type=search]:placeholder-shown~button[type=reset]{display:none}.o-search-input__input input[type=search]:not(:-ms-input-placeholder){padding-right:34px}.o-search-input__input input[type=search]:not(:placeholder-shown){padding-right:34px}.o-search-input__input input[type=search]::-webkit-search-cancel-button,.o-search-input__input input[type=search]::-webkit-search-decoration,.o-search-input__input input[type=search]::-webkit-search-results-button,.o-search-input__input input[type=search]::-webkit-search-results-decoration{display:none}.o-search-input .o-search-input__input:hover button[type=reset],.o-search-input:focus-within button[type=reset]{display:block}.o-search-input button[type=submit]{line-height:1.1875}@media only screen and (min-width:37.5625em){.o-search-input{border-left:0;flex-direction:row}.o-search-input button[type=submit]{border-bottom-left-radius:0;border-top-left-radius:0;flex-basis:25%}}.no-js .o-search-input button[type=reset]{display:none!important}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.a-select{--select-border:var(--select-border-default);--select-border-width:var(--select-border-width-default);border:var(--select-border-width) solid var(--select-border);position:relative}.a-select:has(select[disabled]){border:var(--select-border-width-default) solid var(--select-border-default)}.a-select select{appearance:none;background-color:var(--white);border:0;border-radius:0;color:var(--black);line-height:1.375;padding:.4375em .375em .375em;width:100%}.a-select select.hover,.a-select select:hover{cursor:pointer;outline:2px solid var(--select-border-hover-default);outline-offset:0}.a-select select.focus,.a-select select:active,.a-select select:focus{box-shadow:0 0 0 2px var(--select-border-focus-default);outline:1px dotted var(--select-border-focus-default);outline-offset:3px}.a-select select[disabled]{background-color:var(--select-bg-disabled-default);cursor:not-allowed}.a-select select[disabled].focus,.a-select select[disabled].hover,.a-select select[disabled]:focus,.a-select select[disabled]:hover{outline:none}.a-select select option:disabled,.a-select select[disabled],.a-select select[disabled] option,.a-select select[disabled] option:disabled{color:var(--select-text-disabled-default)}.a-select:after{background-color:var(--select-icon-bg-default);background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" class=\"cf-icon-svg cf-icon-svg--down\" viewBox=\"0 0 17 19\"><path d=\"M8.5 15.313a1.03 1.03 0 0 1-.728-.302l-6.8-6.8a1.03 1.03 0 0 1 1.455-1.456L8.5 12.828l6.073-6.073a1.03 1.03 0 0 1 1.455 1.456l-6.8 6.8a1.03 1.03 0 0 1-.728.302\"/></svg>');background-position:50%;background-repeat:no-repeat;background-size:auto 1.1875em;border-left:1px solid var(--select-border-default);bottom:0;box-sizing:border-box;content:\"\";pointer-events:none;position:absolute;right:0;top:0;width:2.1875em}.a-select--disabled:after{background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"%235A5D61\" aria-hidden=\"true\" viewBox=\"0 0 17 19\"><path d=\"M8.5 15.313a1.03 1.03 0 0 1-.728-.302l-6.8-6.8a1.03 1.03 0 0 1 1.455-1.456L8.5 12.828l6.073-6.073a1.03 1.03 0 0 1 1.455 1.456l-6.8 6.8a1.03 1.03 0 0 1-.728.302\"/></svg>')}.a-select--error{--select-border:var(--select-border-error);--select-border-width:var(--select-border-width-error)}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.no-js .u-js-only,.u-hide-if-js{display:none!important}.no-js .u-hide-if-js{display:block!important}@media screen{.u-print-only{display:none}}@media print{.u-screen-only{display:none}}.u-clearfix:after{clear:both;content:\"\";display:table}.u-visually-hidden{border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0 0 0 0)}@media only screen and (max-width:37.5em){.u-hide-on-mobile{display:none}}@media only screen and (min-width:37.5625em){.u-show-on-mobile{display:none}}.u-hidden{display:none!important}.u-invisible{visibility:hidden}.u-right{float:right}.u-nowrap{white-space:nowrap}.u-flexible-container{height:0;padding-bottom:56.25%;position:relative}.u-flexible-container__inner{height:100%;left:0;position:absolute;top:0;width:100%}.u-flexible-container--4-3{height:0;padding-bottom:75%;position:relative}.u-mt0{margin-top:0!important}.u-mb0{margin-bottom:0!important}.u-mt5{margin-top:5px!important}.u-mb5{margin-bottom:5px!important}.u-mt10{margin-top:10px!important}.u-mb10{margin-bottom:10px!important}.u-mt15{margin-top:15px!important}.u-mb15{margin-bottom:15px!important}.u-mt20{margin-top:20px!important}.u-mb20{margin-bottom:20px!important}.u-mt30{margin-top:30px!important}.u-mb30{margin-bottom:30px!important}.u-mt45{margin-top:45px!important}.u-mb45{margin-bottom:45px!important}.u-mt60{margin-top:60px!important}.u-mb60{margin-bottom:60px!important}.u-w100pct{width:100%}.u-w90pct{width:90%}.u-w80pct{width:80%}.u-w70pct{width:70%}.u-w60pct{width:60%}.u-w50pct{width:50%}.u-w40pct{width:40%}.u-w30pct{width:30%}.u-w20pct{width:20%}.u-w10pct{width:10%}.u-w75pct{width:75%}.u-w65pct{width:65%}.u-w25pct{width:25%}.u-w15pct{width:15%}.u-w66pct{width:66.6666666667%}.u-w33pct{width:33.3333333333%}.u-small-text,small{font-size:.875em}.u-small-text--subtle,small--subtle{color:var(--gray)}.u-no-animation{transition-duration:0s!important}.u-move-transition{transition:transform .25s ease-out}.u-move-to-origin{transform:translateZ(0)}.u-move-left{transform:translate3d(-100%,0,0)}.u-move-left-2x{transform:translate3d(-200%,0,0)}.u-move-left-3x{transform:translate3d(-300%,0,0)}.u-move-right{transform:translate3d(100%,0,0)}.u-move-up{transform:translate3d(0,-100%,0)}.u-alpha-transition{transition:opacity .25s linear}.u-alpha-100{opacity:1}.u-alpha-0{opacity:0}.u-max-height-transition{contain:paint;overflow:hidden;transition:max-height .2s ease-out}.u-max-height-zero{max-height:0!important}.u-max-height-summary{max-height:88px!important}.a-tag-filter{background-color:var(--teal-20);border:1px solid var(--teal);border-radius:.1875rem;color:var(--black);display:flex;gap:.625rem;min-width:fit-content;padding:4px 6px;text-align:left}.a-tag-filter .cf-icon-svg{flex:none;pointer-events:none}.a-tag-filter>label{display:contents;pointer-events:none}a.a-tag-filter:hover,button.a-tag-filter:hover{background-color:var(--teal-40);cursor:pointer}a.a-tag-filter:focus,button.a-tag-filter:focus{outline:1px dotted var(--teal);outline-offset:1px}a.a-tag-filter:active,button.a-tag-filter:active{background-color:var(--teal-60)}a.a-tag-filter{line-height:normal}a.a-tag-filter,a.a-tag-filter.focus,a.a-tag-filter.hover,a.a-tag-filter.visited,a.a-tag-filter:focus,a.a-tag-filter:hover,a.a-tag-filter:visited{border-color:var(--teal);color:var(--black)}a.a-tag-filter.active,a.a-tag-filter:active{border-color:var(--teal-60);color:var(--black)}.a-tag-topic{color:var(--gold-80);display:flex;font-size:.75rem;font-weight:600;gap:.3125rem;letter-spacing:1px;text-transform:uppercase}.a-tag-topic .a-tag-topic__text{color:var(--gray);word-break:break-word}@media only screen and (max-width:37.5em){.a-tag-topic{align-items:center;box-sizing:border-box;display:flex;gap:.3125rem;padding-bottom:.625em;padding-top:.625em;position:relative;width:100%}.a-tag-topic .cf-icon-svg--right{margin-left:auto}.a-tag-topic .a-tag-topic__text{border-bottom-width:0;flex-shrink:10}}a.a-tag-topic,a.a-tag-topic.active,a.a-tag-topic.focus,a.a-tag-topic.hover,a.a-tag-topic.visited,a.a-tag-topic:active,a.a-tag-topic:focus,a.a-tag-topic:hover,a.a-tag-topic:visited{border-color:var(--gold-80);color:var(--gold-80)}a.a-tag-topic .a-tag-topic__text{border-bottom-color:var(--gold-80)}@media only screen and (max-width:37.5em){a.a-tag-topic{border-bottom-width:1px;border-top-width:1px}a.a-tag-topic:focus{outline:none}a.a-tag-topic:focus:after{content:\"\";display:block;height:100%;outline:1px dotted var(--gray);outline-offset:2px;position:absolute;width:100%}}@media only screen and (max-width:37.5em){li:has(.a-tag-topic)+li:has(.a-tag-topic) .a-tag-topic{border-top:none;position:relative}li:has(.a-tag-topic)+li:has(.a-tag-topic) a.a-tag-topic:focus:before,li:has(.a-tag-topic)+li:has(.a-tag-topic) a.a-tag-topic:hover:before{border-top:1px solid;content:\"\";display:block;height:1px;position:absolute;top:-1px;width:100%}}.a-tag-topic__bullet{font-size:1rem;line-height:1rem}@media only screen and (min-width:37.5625em){a.a-tag-topic__text,a.a-tag-topic__text.active,a.a-tag-topic__text.focus,a.a-tag-topic__text.hover,a.a-tag-topic__text.visited,a.a-tag-topic__text:active,a.a-tag-topic__text:focus,a.a-tag-topic__text:hover,a.a-tag-topic__text:visited{border-color:var(--gray);color:var(--gray)}a.a-tag-topic,a.a-tag-topic:active,a.a-tag-topic:focus,a.a-tag-topic:hover,a.a-tag-topic:visited{border-bottom:none;outline-offset:1px}a.a-tag-topic .a-tag-topic__text,a.a-tag-topic:active .a-tag-topic__text,a.a-tag-topic:focus .a-tag-topic__text,a.a-tag-topic:hover .a-tag-topic__text,a.a-tag-topic:visited .a-tag-topic__text{border-bottom:1px dotted var(--gold-80);padding-bottom:1px}a.a-tag-topic:hover .a-tag-topic__text{border-bottom:1px solid var(--gold-80)}a.a-tag-topic:focus{outline-color:var(--gray)}a.a-tag-topic:focus .a-tag-topic__text{border-bottom-style:solid!important}}.m-tag-group{list-style-type:none;padding-left:0}.m-tag-group li{display:contents;margin-bottom:0}@media only screen and (min-width:37.5625em){.m-tag-group{display:flex;flex-wrap:wrap;gap:.9375em}.m-tag-group--stacked{flex-direction:column;width:fit-content}}.m-tag-group:has(.a-tag-filter){display:flex;flex-wrap:wrap;gap:.9375em}html[lang=ar] .m-tag-group{direction:rtl;padding-right:0}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.a-text-input{--input-text:var(--input-text-default);--input-text-disabled:var(--input-text-disabled-default);--input-text-placeholder:var(--input-text-placeholder-default);--input-border:var(--input-border-default);--input-border-hover:var(--input-border-hover-default);--input-border-focus:var(--input-border-focus-default);--input-bg:var(--input-bg-default);--input-bg-disabled:var(--input-bg-disabled-default);appearance:none;background:var(--input-bg);border:1px solid var(--input-border);box-sizing:border-box;color:var(--input-text);display:inline-block;outline:0 solid var(--input-border);padding:.4375em}.a-text-input.hover,.a-text-input:hover{border-color:var(--input-border-hover);outline:1px solid var(--input-border-hover)}.a-text-input.focus,.a-text-input:focus{border-color:var(--input-border-focus);box-shadow:0 0 0 1px var(--input-border-focus);outline:1px dotted var(--input-border-focus);outline-offset:2px}.a-text-input:disabled{--input-border:var(--input-border-disabled)}.a-text-input:disabled,.a-text-input:disabled.focus,.a-text-input:disabled.hover,.a-text-input:disabled:focus,.a-text-input:disabled:hover{background-color:var(--input-bg-disabled);border-color:var(--input-border);color:var(--input-text-disabled);cursor:not-allowed;outline:none}.a-text-input--error,.a-text-input--success,.a-text-input--warning{outline-width:1px}.a-text-input--error{--input-border:var(--input-border-error)}.a-text-input--warning{--input-border:var(--input-border-warning)}.a-text-input--success{--input-border:var(--input-border-success)}::-webkit-search-decoration{appearance:none}:-ms-input-placeholder{color:var(--input-text-placeholder)}::placeholder{color:var(--input-text-placeholder)}input[type=date]::-webkit-datetime-edit{color:var(--input-text-placeholder)}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.no-js .u-js-only,.u-hide-if-js{display:none!important}.no-js .u-hide-if-js{display:block!important}@media screen{.u-print-only{display:none}}@media print{.u-screen-only{display:none}}.u-clearfix:after{clear:both;content:\"\";display:table}.u-visually-hidden{border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0 0 0 0)}@media only screen and (max-width:37.5em){.u-hide-on-mobile{display:none}}@media only screen and (min-width:37.5625em){.u-show-on-mobile{display:none}}.u-hidden{display:none!important}.u-invisible{visibility:hidden}.u-right{float:right}.u-nowrap{white-space:nowrap}.u-flexible-container{height:0;padding-bottom:56.25%;position:relative}.u-flexible-container__inner{height:100%;left:0;position:absolute;top:0;width:100%}.u-flexible-container--4-3{height:0;padding-bottom:75%;position:relative}.u-mt0{margin-top:0!important}.u-mb0{margin-bottom:0!important}.u-mt5{margin-top:5px!important}.u-mb5{margin-bottom:5px!important}.u-mt10{margin-top:10px!important}.u-mb10{margin-bottom:10px!important}.u-mt15{margin-top:15px!important}.u-mb15{margin-bottom:15px!important}.u-mt20{margin-top:20px!important}.u-mb20{margin-bottom:20px!important}.u-mt30{margin-top:30px!important}.u-mb30{margin-bottom:30px!important}.u-mt45{margin-top:45px!important}.u-mb45{margin-bottom:45px!important}.u-mt60{margin-top:60px!important}.u-mb60{margin-bottom:60px!important}.u-w100pct{width:100%}.u-w90pct{width:90%}.u-w80pct{width:80%}.u-w70pct{width:70%}.u-w60pct{width:60%}.u-w50pct{width:50%}.u-w40pct{width:40%}.u-w30pct{width:30%}.u-w20pct{width:20%}.u-w10pct{width:10%}.u-w75pct{width:75%}.u-w65pct{width:65%}.u-w25pct{width:25%}.u-w15pct{width:15%}.u-w66pct{width:66.6666666667%}.u-w33pct{width:33.3333333333%}.u-small-text,small{font-size:.875em}.u-small-text--subtle,small--subtle{color:var(--gray)}", "/**\n * @constant\n * @type {string}\n * @description\n * Constant for the name of the data-* attribute set on\n * HTML DOM elements for access by JavaScript.\n */\nconst JS_HOOK = 'data-js-hook';\n\n/**\n * @constant\n * @type {string}\n * @description\n * Flag prefix for settings that describe what JavaScript\n * behaviors should be attached to a component.\n * This would be set in the markup and initialized when\n * the JavaScript loads.\n * @example\n * A component may flag that it has certain JavaScript behaviors attached,\n * such as:\n * `data-js-hook=\"behavior_flyout-menu behavior_clearable-input\"`,\n * which defines that two scripts (FlyoutMenu) and (ClearableInput)\n * should access this DOM element and initialize its behaviors.\n */\nconst BEHAVIOR_PREFIX = 'behavior_';\n\n/**\n * @constant\n * @type {string}\n * @description\n * Flag prefix for settings related to changes in a components\n * state set in the data-* JavaScript hook.\n * @example\n * A component may flag that it has been initialized by setting\n * `data-js-hook=\"state_atomic_init\"` after page load.\n * Which specifies that the init method of a atomic constructor\n * has been called, such as\n * `var globalSearch = new GlobalSearch( 'm-global-search' ).init()`.\n */\nconst STATE_PREFIX = 'state_';\n\nexport { JS_HOOK, BEHAVIOR_PREFIX, STATE_PREFIX };\n", "/**\n * EventObserver\n * @class\n * @classdesc Used to create an object\n * that can dispatch and listen to custom events.\n * @returns {object} An EventObserver instance.\n */\nfunction EventObserver() {\n // The events registered on this instance.\n const _events = {};\n\n /**\n * Register an event listener.\n * @param {string} event - The event name to listen for.\n * @param {Function} callback - The function called when the event has fired.\n * @returns {object} The instance this EventObserver instance is decorating.\n */\n function addEventListener(event, callback) {\n if ({}.hasOwnProperty.call(_events, event)) {\n _events[event].push(callback);\n } else {\n _events[event] = [callback];\n }\n\n return this;\n }\n\n /**\n * Remove an added event listener.\n * Must match a call made to addEventListener.\n * @param {string} event - The event name to remove.\n * @param {Function} callback - The function attached to the event.\n * @returns {object} The instance this EventObserver instance is decorating.\n */\n function removeEventListener(event, callback) {\n if (!{}.hasOwnProperty.call(_events, event)) {\n return this;\n }\n\n const index = _events[event].indexOf(callback);\n // Check if there are any callbacks associated with a particular event.\n if (index !== -1) {\n _events[event].splice(index, 1);\n }\n\n return this;\n }\n\n /**\n * Broadcast an event.\n * @param {string} event - The type of event to broadcast.\n * @param {object} options - The event object to pass to the event handler.\n * @returns {object} The instance this EventObserver instance is decorating.\n */\n function dispatchEvent(event, options) {\n if (!{}.hasOwnProperty.call(_events, event)) {\n return this;\n }\n\n options = options || {};\n\n const evts = _events[event];\n for (let i = 0, len = evts.length; i < len; i++) {\n evts[i].call(this, options);\n }\n\n return this;\n }\n\n this.addEventListener = addEventListener;\n this.removeEventListener = removeEventListener;\n this.dispatchEvent = dispatchEvent;\n this.getRegisteredEvents = () => _events;\n\n return this;\n}\n\nexport { EventObserver };\n", "import { JS_HOOK } from './standard-type.js';\n\n/**\n * @param {HTMLElement} element - DOM element.\n * @param {string} value - Value to check as existing as a JS data-* hook value.\n * @returns {boolean} True if the data-* hook value exists, false otherwise.\n */\nfunction contains(element, value) {\n if (!element) {\n return false;\n }\n let values = element.getAttribute(JS_HOOK);\n // If JS data-* hook is not set return immediately.\n if (!values) {\n return false;\n }\n values = values.split(' ');\n\n return values.indexOf(value) > -1 ? true : false;\n}\n\n/**\n * @param {HTMLElement} element - DOM element.\n * @param {string} value - Value to add to the element's JS data-* hook.\n * @returns {string} The value that was added.\n * @throws {Error} If supplied value contains a space,\n * meaning it would be two values, which is likely a typo.\n */\nfunction add(element, value) {\n if (contains(element, value)) return value;\n\n if (value.indexOf(' ') !== -1) {\n const msg = JS_HOOK + ' values cannot contain spaces!';\n throw new Error(msg);\n }\n\n const values = element.getAttribute(JS_HOOK);\n if (values !== null) {\n value = values + ' ' + value;\n }\n element.setAttribute(JS_HOOK, value);\n\n return value;\n}\n\nexport { add, contains };\n", "/* ==========================================================================\n Atomic Helpers.\n Utilities for helping validate atomic design element architecture.\n In descending order of scope, atomic components are:\n - Page\n - Template\n - Organism\n - Molecule\n - Atom\n ========================================================================= */\n\nimport { add, contains } from './data-hook.js';\nimport { STATE_PREFIX } from './standard-type.js';\n\n/**\n * @constant\n * @type {string}\n * @description\n * Flag that gets set on an atomic component after its .init()\n * method has been called. This is used so that an atomic\n * component won't get initialized a second time after it\n * has already been initialized.\n */\nconst INIT_FLAG = STATE_PREFIX + 'atomic_init';\n\n/**\n * @param {HTMLElement} element - The DOM element within which to search for\n * the atomic element class.\n * @param {string} baseClass - The CSS class name for the atomic element.\n * @returns {HTMLElement} The DOM element for the atomic element.\n * @throws {Error} If DOM element passed into the atomic element is not valid.\n */\nfunction _verifyElementExists(element, baseClass) {\n if (!element || !element.classList) {\n const msg =\n element +\n ' is not valid. ' +\n 'Check that element is a DOM node with class \"' +\n baseClass +\n '\"';\n throw new Error(msg);\n }\n\n return element;\n}\n\n/**\n * @param {HTMLElement} element - The DOM element within which to search\n * for the atomic element class.\n * @param {string} baseClass - The CSS class name for the atomic element.\n * @returns {HTMLElement} The DOM element for the atomic element.\n * @throws {Error} If baseClass was not found on the element.\n */\nfunction _verifyClassExists(element, baseClass) {\n const dom = element.classList.contains(baseClass)\n ? element\n : element.querySelector('.' + baseClass);\n if (!dom) {\n const msg = baseClass + ' not found on or in passed DOM node.';\n throw new Error(msg);\n }\n\n return dom;\n}\n\n/**\n * Check that a particular element passed into the constructor of\n * an atomic component exists and that the correct atomic class\n * is present on the element.\n * @param {HTMLElement} element - The DOM element within which to search\n * for the atomic element class.\n * @param {string} baseClass - The CSS class name for the atomic element.\n * @returns {HTMLElement} The DOM element for the atomic element.\n * @throws {Error} If DOM element passed into the atomic element is not valid.\n */\nfunction checkDom(element, baseClass) {\n _verifyElementExists(element, baseClass);\n const dom = _verifyClassExists(element, baseClass);\n\n return dom;\n}\n\n/**\n * Set a flag on an atomic component when it is initialized.\n * Use the returned boolean to handle cases where an atomic component\n * is initializing when it has already been initialized elsewhere.\n * @param {HTMLElement} element - The DOM element for the atomic component.\n * @returns {boolean} True if the init data-js-* hook attribute was set,\n * false otherwise.\n */\nfunction setInitFlag(element) {\n if (contains(element, INIT_FLAG)) {\n return false;\n }\n\n add(element, INIT_FLAG);\n\n return true;\n}\n\n/**\n * @param {string} selector - Selector to search for in the document.\n * @param {Function} Constructor - A constructor function.\n * @param {HTMLElement} [scope] - A dom node in which to query the selector.\n * If not supplied, it defaults to the `document`.\n * @param {object} config - Configuration will be provided to the Constructor's init()\n * @returns {Array} List of instances that were instantiated.\n */\nfunction instantiateAll(selector, Constructor, scope, config = {}) {\n const base = scope || document;\n const elements = base.querySelectorAll(selector);\n const insts = [];\n let inst;\n let element;\n for (let i = 0, len = elements.length; i < len; i++) {\n element = elements[i];\n if (contains(element, INIT_FLAG) === false) {\n inst = new Constructor(element);\n inst.init(config);\n insts.push(inst);\n }\n }\n return insts;\n}\n\n// Expose public methods.\nexport { checkDom, instantiateAll, setInitFlag };\n", "/* ==========================================================================\n Javascript Type Checkers\n\n Various utility functions to check Javascript types and primitives.\n\n Contains code copied from with moderate modifications:\n\n https://github.com/angular/angular.js/blob/master/src/Angular.js.\n Copyright (c) 2010-2015 Google, Inc. http://angularjs.org\n\n ========================================================================== */\n\nconst _toString = Object.prototype.toString;\n\n/**\n * @name isUndefined\n * @kind function\n * @description\n * Determines if a reference is undefined.\n * @param {*} value - Reference to check.\n * @returns {boolean} True if `value` is undefined.\n */\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\n\n/**\n * @name isDefined\n * @kind function\n * @description\n * Determines if a reference is defined.\n * @param {*} value - Reference to check.\n * @returns {boolean} True if `value` is defined.\n */\nfunction isDefined(value) {\n return typeof value !== 'undefined';\n}\n\n/**\n * @name isObject\n * @kind function\n * @description\n * Determines if a reference is an `Object`.\n * Unlike `typeof` in JavaScript, `null`s are not\n * considered to be objects. Note that JavaScript arrays are objects.\n * @param {*} value - Reference to check.\n * @returns {boolean} True if `value` is an `Object` but not `null`.\n */\nfunction isObject(value) {\n // http://jsperf.com/isobject4\n return value !== null && typeof value === 'object';\n}\n\n/**\n * @name isString\n * @kind function\n * @description\n * Determines if a reference is a `String`.\n * @param {*} value - Reference to check.\n * @returns {boolean} True if `value` is a `String`.\n */\nfunction isString(value) {\n return _toString.call(value) === '[object String]';\n}\n\n/**\n * @name isNumber\n * @kind function\n * @description\n * Determines if a reference is a `Number`.\n *\n * This includes the \"special\" numbers `NaN`, `+Infinity` and `-Infinity`.\n *\n * If you wish to exclude these then you can use the native\n * [`isFinite'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/\n * Reference/Global_Objects/isFinite)\n * method.\n * @param {*} value - Reference to check.\n * @returns {boolean} True if `value` is a `Number`.\n */\nfunction isNumber(value) {\n return _toString.call(value) === '[object Number]';\n}\n\n/**\n * @name isDate\n * @kind function\n * @description\n * Determines if a value is a date.\n * @param {*} value - Reference to check.\n * @returns {boolean} True if `value` is a `Date`.\n */\nfunction isDate(value) {\n return _toString.call(value) === '[object Date]';\n}\n\n/**\n * @name isArray\n * @kind function\n * @description\n * Determines if a reference is an `Array`.\n * @param {*} value - Reference to check.\n * @returns {boolean} True if `value` is an `Array`.\n */\nconst isArray =\n Array.isArray ||\n function isArray(value) {\n return _toString.call(value) === '[object Array]';\n };\n\n/**\n * @name isFunction\n * @kind function\n * @description\n * Determines if a reference is a `Function`.\n * @param {*} value - Reference to check.\n * @returns {boolean} True if `value` is a `Function`.\n */\nfunction isFunction(value) {\n return _toString.call(value) === '[object Function]';\n}\n\n// TODO Fix complexity issue\n\n/**\n * @name isEmpty\n * @kind function\n * @description\n * Determines if a reference is empty.\n * @param {*} value - Reference to check.\n * @returns {boolean} True if `value` is empty.\n */\nfunction isEmpty(value) {\n return (\n isUndefined(value) ||\n value === null ||\n (isString(value) && value.length <= 0) ||\n /^\\s*$/.test(value)\n );\n}\n\n// Expose public methods.\nexport {\n isUndefined,\n isDefined,\n isObject,\n isString,\n isNumber,\n isDate,\n isArray,\n isFunction,\n isEmpty,\n};\n", "/* ==========================================================================\n Media Helpers.\n Utilities for working with different screen sizes and operating systems.\n ========================================================================= */\n\n/**\n * Query the browser's user agent string to see if it's on a mobile OS.\n * @returns {boolean} True if on a mobile user agent, false otherwise.\n */\nfunction isMobileUserAgent() {\n const regex = new RegExp(\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i,\n );\n if (regex.test(navigator.userAgent)) {\n return true;\n }\n return false;\n}\n\n// Expose public methods.\nexport { isMobileUserAgent };\n", "import * as TransitionStyles from './transition.scss';\n\n/**\n * BaseTransition\n * @class\n * @classdesc Initializes new BaseTransition behavior.\n * This shouldn't be used directly, but instead should be\n * the base class used through composition by a specific transition.\n * @param {HTMLElement} element - DOM element to apply transition to.\n * @param {object} classes - The classes to apply to this transition.\n * @param {object} child - The child transition using this as a base.\n * @returns {BaseTransition} An instance.\n */\nfunction BaseTransition(element, classes, child) {\n const _classes = classes;\n let _dom = element;\n if (!child) throw new Error('Child transition argument must be defined!');\n const _child = child;\n\n let _lastClass;\n let _transitionEndEvent;\n let _transitionCompleteBinded;\n\n let _isAnimated = false;\n let _isAnimating = false;\n let _isFlushed = false;\n\n // Make sure required attributes are passed in.\n if (\n typeof _classes.CSS_PROPERTY === 'undefined' ||\n typeof _classes.BASE_CLASS === 'undefined'\n ) {\n throw new Error(\n 'Transitions require CSS_PROPERTY and BASE_CLASS ' +\n 'to be passed into BaseTransition.',\n );\n }\n\n /**\n * Add an event listener to the transition, or call the transition\n * complete handler immediately if the transition is not supported.\n */\n function _addEventListener() {\n /*\n If transition is supported and the animation is animated,\n listen for transition end event, otherwise call the handler directly.\n Some browsers (e.g. IE9/OperaMini) do not support transitionend event.\n If \"transition-duration: 0s\" is set, transitionEnd event will not\n fire, so we need to call the handler straight away.\n */\n if (_transitionEndEvent && _isAnimated) {\n _dom.addEventListener(_transitionEndEvent, _transitionCompleteBinded);\n _child.dispatchEvent(BaseTransition.BEGIN_EVENT, {\n target: _child,\n type: BaseTransition.BEGIN_EVENT,\n });\n\n _dom.classList.add(BaseTransition.ANIMATING_CLASS);\n _isAnimating = true;\n } else {\n _child.dispatchEvent(BaseTransition.BEGIN_EVENT, {\n target: _child,\n type: BaseTransition.BEGIN_EVENT,\n });\n _transitionCompleteBinded();\n }\n }\n\n /**\n * Remove an event listener to the transition.\n */\n function _removeEventListener() {\n _dom.removeEventListener(_transitionEndEvent, _transitionCompleteBinded);\n }\n\n /**\n * Handle the end of a transition.\n * @param {TransitionEvent} evt - Transition event object.\n * @returns {boolean} True if transition was cleaned up,\n * false if an outside transitioning property triggered this event handler.\n */\n function _transitionComplete(evt) {\n if (evt && evt.propertyName !== _classes.CSS_PROPERTY) {\n return false;\n }\n\n _removeEventListener();\n _dom.classList.remove(BaseTransition.ANIMATING_CLASS);\n _child.dispatchEvent(BaseTransition.END_EVENT, {\n target: _child,\n type: BaseTransition.END_EVENT,\n });\n _isAnimating = false;\n return true;\n }\n\n /**\n * Search for and remove initial BaseTransition classes that have\n * already been applied to this BaseTransition's target element.\n */\n function _flush() {\n let prop;\n for (prop in _classes) {\n if (\n {}.hasOwnProperty.call(_classes, prop) &&\n _classes[prop] !== _classes.BASE_CLASS &&\n _dom.classList.contains(_classes[prop])\n ) {\n _dom.classList.remove(_classes[prop]);\n }\n }\n }\n\n /**\n * Halt an in-progress animation and call the complete event immediately.\n */\n function halt() {\n if (!_isAnimating) {\n return;\n }\n _dom.style.webkitTransitionDuration = '0';\n _dom.style.mozTransitionDuration = '0';\n _dom.style.oTransitionDuration = '0';\n _dom.style.transitionDuration = '0';\n _dom.removeEventListener(_transitionEndEvent, _transitionCompleteBinded);\n _transitionCompleteBinded();\n _dom.style.webkitTransitionDuration = '';\n _dom.style.mozTransitionDuration = '';\n _dom.style.oTransitionDuration = '';\n _dom.style.transitionDuration = '';\n }\n\n /**\n * Remove all transition classes, if transition is initialized.\n */\n function remove() {\n halt();\n _flush();\n _dom.classList.remove(_classes.BASE_CLASS);\n }\n\n /**\n * Add a \"transition-duration: 0s\" utility CSS class.\n */\n function animateOn() {\n _dom.classList.remove(BaseTransition.NO_ANIMATION_CLASS);\n _isAnimated = true;\n }\n\n /**\n * Remove a \"transition-duration: 0s\" utility CSS class.\n */\n function animateOff() {\n _dom.classList.add(BaseTransition.NO_ANIMATION_CLASS);\n _isAnimated = false;\n }\n\n /**\n * @param {HTMLElement} elem - The element to check\n * for support of transition end event.\n * @returns {string} The browser-prefixed transition end event.\n */\n function _getTransitionEndEvent(elem) {\n if (!elem) {\n const msg = 'Element does not have TransitionEnd event. It may be null!';\n throw new Error(msg);\n }\n\n let transition;\n const transitions = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend',\n };\n\n let transitionEvent;\n for (transitionEvent in transitions) {\n if (\n {}.hasOwnProperty.call(transitions, transitionEvent) &&\n typeof elem.style[transitionEvent] !== 'undefined'\n ) {\n transition = transitions[transitionEvent];\n break;\n }\n }\n return transition;\n }\n\n /**\n * Set the HTML element target of this transition.\n * @param {HTMLElement} targetElement - The target of the transition.\n */\n function setElement(targetElement) {\n // Clear the transition classes from the old element.\n remove();\n animateOn();\n\n _dom = targetElement;\n _dom.classList.add(_classes.BASE_CLASS);\n _transitionEndEvent = _getTransitionEndEvent(_dom);\n }\n\n /**\n * @param {Function} initialClass - The initial state for this transition.\n * @returns {BaseTransition} An instance.\n */\n function init(initialClass) {\n _isAnimated = !_dom.classList.contains(BaseTransition.NO_ANIMATION_CLASS);\n _transitionCompleteBinded = _transitionComplete.bind(this);\n setElement(_dom);\n if (!initialClass) {\n throw new Error(\n 'Transition needs to be passed an initial CSS class on initialization!',\n );\n }\n _dom.classList.add(initialClass);\n\n return this;\n }\n\n /**\n * @param {string} className - A CSS class.\n * @returns {boolean} False if the class is already applied,\n * otherwise true if the class was applied.\n */\n function applyClass(className) {\n if (!_isFlushed) {\n _flush();\n _isFlushed = true;\n }\n\n if (_dom.classList.contains(className)) {\n return false;\n }\n\n _removeEventListener();\n _dom.classList.remove(_lastClass);\n _lastClass = className;\n _addEventListener();\n _dom.classList.add(_lastClass);\n\n return true;\n }\n\n // Attach public events.\n this.animateOff = animateOff;\n this.animateOn = animateOn;\n this.applyClass = applyClass;\n this.halt = halt;\n this.init = init;\n this.isAnimated = () => _isAnimated;\n this.remove = remove;\n this.setElement = setElement;\n\n return this;\n}\n\n// Public static constants.\nBaseTransition.BEGIN_EVENT = 'transitionbegin';\nBaseTransition.END_EVENT = 'transitionend';\nBaseTransition.NO_ANIMATION_CLASS = 'u-no-animation';\nBaseTransition.ANIMATING_CLASS = 'u-is-animating';\n\nexport { BaseTransition, TransitionStyles };\n", "import { BaseTransition } from '../transition/base-transition.js';\nimport { EventObserver } from '../event-observer.js';\nimport { checkBehaviorDom } from '../behavior/behavior.js';\nimport { BEHAVIOR_PREFIX, JS_HOOK } from '../standard-type.js';\n\nconst BASE_CLASS = BEHAVIOR_PREFIX + 'flyout-menu';\nconst SEL_PREFIX = '[' + JS_HOOK + '=' + BASE_CLASS;\n\n/**\n * FlyoutMenu\n * @class\n * @classdesc Initializes new FlyoutMenu behavior.\n * Behaviors are functionality that can be shared between different pieces\n * of markup. They are not strictly atomic, though they likely are used\n * on atomic components.\n * As added JS behavior, this is added through HTML data-js-hook attributes.\n *\n * Structure is:\n * behavior_flyout-menu\n * behavior_flyout-menu_trigger\n * behavior_flyout-menu_content\n * behavior_flyout-menu_trigger (optional)\n *\n * The second trigger is optional and may be used for a button in the content\n * area, which may obscure the first trigger.\n * The flyout can be triggered through a click of either trigger.\n * @param {HTMLElement} element - The DOM element to attach FlyoutMenu behavior.\n * @param {boolean} autoHideContent - Whether to add `hidden` attribute to\n * content when it is collapsed.\n * @returns {FlyoutMenu} An instance.\n */\nfunction FlyoutMenu(element, autoHideContent = true) {\n // Verify that the expected dom attributes are present.\n const _dom = checkBehaviorDom(element, BASE_CLASS);\n const _triggerDoms = _findTriggers(element);\n const _contentDom = checkBehaviorDom(element, BASE_CLASS + '_content');\n\n // Flyouts appear in one of four states.\n let _state = 0;\n const COLLAPSED = 0;\n const COLLAPSING = 1;\n const EXPANDING = 2;\n const EXPANDED = 3;\n\n let _transition;\n let _expandTransitionMethod;\n let _collapseTransitionMethod;\n\n // Binded events.\n // Needed to add and remove events to transitions.\n const _collapseEndBinded = _collapseEnd.bind(this);\n const _expandEndBinded = _expandEnd.bind(this);\n\n /* If this menu appears in a data source,\n this can be used to store the source.\n Examples include the index in an Array,\n a key in an Hash, or a node in a Tree. */\n let _data;\n\n // Whether this instance's behaviors are suspended or not.\n let _suspended = true;\n\n /* Event immediately preceeding mouseover is touchstart,\n if that event's present we'll want to ignore mouseover\n to avoid a mouseover and click immediately after each other. */\n let _touchTriggered = false;\n\n /**\n * Iterate over dom tree and find FlyoutMenu triggers.\n * We need to exclude the ones that are nested FlyoutMenus, since those\n * will be managed by their own instance of this class.\n * @param {HTMLElement} element - The DOM element to search for triggers within.\n * @returns {Array} List of trigger DOM references within this FlyoutMenu.\n */\n function _findTriggers(element) {\n const triggersList = [];\n const triggers = element.querySelectorAll(`${SEL_PREFIX}_trigger]`);\n\n let trigger;\n let triggerParent;\n let isSubTrigger;\n // Iterate backwards ensuring that length is an UInt32.\n for (let i = triggers.length >>> 0; i--; ) {\n isSubTrigger = false;\n trigger = triggers[i];\n triggerParent = trigger.parentElement;\n while (triggerParent !== element) {\n if (\n triggerParent.getAttribute(JS_HOOK) &&\n triggerParent.getAttribute(JS_HOOK).split(' ').indexOf(BASE_CLASS) !==\n -1\n ) {\n isSubTrigger = true;\n triggerParent = element;\n } else {\n triggerParent = triggerParent.parentElement;\n }\n }\n\n if (!isSubTrigger) {\n triggersList.unshift(triggers[i]);\n }\n }\n\n return triggersList;\n }\n\n /**\n * @returns {FlyoutMenu} An instance.\n * @param {boolean} isExpanded - Whether the flyout menu is expanded at\n * initialization-time or collapsed.\n */\n function init(isExpanded = false) {\n _state = isExpanded ? EXPANDED : COLLAPSED;\n _triggerDoms.forEach((triggerDom) => {\n _setAriaAttr('expanded', triggerDom, isExpanded);\n\n triggerDom.addEventListener('click', _handleTriggerClicked.bind(this));\n triggerDom.addEventListener('touchstart', _handleTouchStart, {\n passive: true,\n });\n triggerDom.addEventListener('mouseover', _handleTriggerOver.bind(this));\n triggerDom.addEventListener('mouseout', _handleTriggerOut.bind(this));\n });\n\n _contentDom.setAttribute('data-open', isExpanded ? 'true' : 'false');\n if (autoHideContent && !isExpanded) _contentDom.setAttribute('hidden', '');\n\n resume();\n\n return this;\n }\n\n /**\n * Set an aria attribute on an HTML element.\n * @param {string} type - The aria attribute to set\n * (without the aria- prefix).\n * @param {HTMLElement} elem - The element to set.\n * @param {boolean} value - The value to set on `aria-expanded`,\n * casts to a string.\n * @returns {string} The cast value.\n */\n function _setAriaAttr(type, elem, value) {\n const strValue = String(value);\n elem.setAttribute('aria-' + type, strValue);\n return strValue;\n }\n\n /**\n * Event handler for when the search input trigger is touched.\n */\n function _handleTouchStart() {\n _touchTriggered = true;\n }\n\n /**\n * Event handler for when the trigger is hovered over.\n * @param {MouseEvent} event - The clicked flyout trigger event object.\n */\n function _handleTriggerOver(event) {\n if (_suspended) return;\n\n if (!_touchTriggered) {\n this.dispatchEvent('triggerover', {\n target: this,\n trigger: event.target,\n type: 'triggerover',\n });\n }\n\n _touchTriggered = false;\n }\n\n /**\n * Event handler for when the trigger is hovered out.\n * @param {MouseEvent} event - The clicked flyout trigger event object.\n */\n function _handleTriggerOut(event) {\n if (_suspended) return;\n\n this.dispatchEvent('triggerout', {\n target: this,\n trigger: event.target,\n type: 'triggerout',\n });\n }\n\n /**\n * Event handler for when the search input trigger is clicked,\n * which opens/closes the search input.\n * @param {MouseEvent} event - The clicked flyout trigger event object.\n */\n function _handleTriggerClicked(event) {\n if (_suspended) return;\n\n this.dispatchEvent('triggerclick', {\n target: this,\n trigger: event.target,\n type: 'triggerclick',\n });\n\n event.preventDefault();\n\n switch (_state) {\n case COLLAPSED:\n case COLLAPSING:\n this.expand();\n break;\n case EXPANDING:\n case EXPANDED:\n this.collapse();\n break;\n }\n }\n\n /**\n * Open the search box.\n * @returns {FlyoutMenu} An instance.\n */\n function expand() {\n _transition?.halt();\n if (_state === EXPANDING || _state === EXPANDED) return this;\n\n _state = EXPANDING;\n if (autoHideContent) _contentDom.removeAttribute('hidden');\n this.dispatchEvent('expandbegin', { target: this, type: 'expandbegin' });\n\n // Only use transitions if both expand and collapse are set.\n if (!_expandTransitionMethod || !_collapseTransitionMethod) {\n _expandEndBinded();\n return this;\n }\n\n const hasTransition = _transition?.isAnimated();\n if (hasTransition) {\n _transition.addEventListener(BaseTransition.END_EVENT, _expandEndBinded);\n }\n\n _expandTransitionMethod();\n\n if (!hasTransition) {\n _expandEndBinded();\n }\n\n return this;\n }\n\n /**\n * Close the search box.\n * If collapse is called when expand animation is underway,\n * save a deferred call to collapse, which is called when\n * expand completes.\n * @returns {FlyoutMenu} An instance.\n */\n function collapse() {\n _transition?.halt();\n if (_state === COLLAPSING || _state === COLLAPSED) return this;\n\n for (let i = 0, len = _triggerDoms.length; i < len; i++) {\n _setAriaAttr('expanded', _triggerDoms[i], false);\n }\n\n _contentDom.setAttribute('data-open', 'false');\n\n _state = COLLAPSING;\n this.dispatchEvent('collapsebegin', {\n target: this,\n type: 'collapsebegin',\n });\n\n // Only use transitions if both expand and collapse are set.\n if (!_collapseTransitionMethod || !_expandTransitionMethod) {\n _collapseEndBinded();\n return this;\n }\n\n const hasTransition = _transition?.isAnimated();\n if (hasTransition) {\n _transition.addEventListener(\n BaseTransition.END_EVENT,\n _collapseEndBinded,\n );\n }\n\n _collapseTransitionMethod();\n\n if (!hasTransition) {\n _collapseEndBinded();\n }\n\n return this;\n }\n\n /**\n * Expand animation has completed.\n * Call deferred collapse function,\n * if set (otherwise it will call a noop function).\n */\n function _expandEnd() {\n _state = EXPANDED;\n _contentDom.setAttribute('data-open', 'true');\n if (_transition) {\n _transition.removeEventListener(\n BaseTransition.END_EVENT,\n _expandEndBinded,\n );\n }\n this.dispatchEvent('expandend', { target: this, type: 'expandend' });\n\n for (let i = 0, len = _triggerDoms.length; i < len; i++) {\n _setAriaAttr('expanded', _triggerDoms[i], true);\n }\n }\n\n /**\n * Collapse animation has completed.\n */\n function _collapseEnd() {\n _state = COLLAPSED;\n\n if (autoHideContent) _contentDom.setAttribute('hidden', '');\n\n if (_transition) {\n _transition.removeEventListener(\n BaseTransition.END_EVENT,\n _collapseEndBinded,\n );\n }\n\n this.dispatchEvent('collapseend', { target: this, type: 'collapseend' });\n }\n\n /**\n * Set the transition that runs when this flyout is expanded/collapsed.\n * @param {BaseTransition} transition - A transition object.\n * @param {Function} collapseMethod - The collapse method to call on the transition.\n * @param {Function} expandMethod - The expand method to call on the transition.\n */\n function setTransition(transition, collapseMethod, expandMethod) {\n _transition = transition;\n\n if (collapseMethod && collapseMethod !== _collapseTransitionMethod) {\n _collapseTransitionMethod = collapseMethod;\n }\n\n if (expandMethod && expandMethod !== _expandTransitionMethod) {\n _expandTransitionMethod = expandMethod;\n }\n }\n\n /**\n * Clear the transitions attached to this FlyoutMenu instance.\n */\n function clearTransition() {\n if (_transition) {\n _transition.remove();\n }\n\n let UNDEFINED;\n\n _transition = UNDEFINED;\n\n _expandTransitionMethod = UNDEFINED;\n _collapseTransitionMethod = UNDEFINED;\n }\n\n /**\n * @returns {object}\n * Hash of container, content DOM references, and a list of trigger DOMs.\n */\n function getDom() {\n return {\n container: _dom,\n content: _contentDom,\n trigger: _triggerDoms,\n };\n }\n\n /**\n * Enable broadcasting of trigger events.\n * @returns {boolean} True if resumed, false otherwise.\n */\n function resume() {\n if (_suspended) _suspended = false;\n\n return !_suspended;\n }\n\n /**\n * Suspend broadcasting of trigger events.\n * @returns {boolean} True if suspended, false otherwise.\n */\n function suspend() {\n if (!_suspended) _suspended = true;\n\n return _suspended;\n }\n\n /**\n * @param {number | string | object} data - A data identifier\n * such as an Array index, Hash key, or Tree node.\n * @returns {FlyoutMenu} An instance.\n */\n function setData(data) {\n _data = data;\n\n return this;\n }\n\n // Attach public events.\n const eventObserver = new EventObserver();\n this.addEventListener = eventObserver.addEventListener;\n this.removeEventListener = eventObserver.removeEventListener;\n this.dispatchEvent = eventObserver.dispatchEvent;\n\n this.init = init;\n this.expand = expand;\n this.collapse = collapse;\n this.setTransition = setTransition;\n this.clearTransition = clearTransition;\n this.getData = () => _data;\n this.getTransition = () => _transition;\n this.getDom = getDom;\n this.isAnimating = () => _state === EXPANDING || _state === COLLAPSING;\n this.isExpanded = () => _state === EXPANDED;\n this.resume = resume;\n this.setData = setData;\n this.suspend = suspend;\n\n // Public static properties.\n FlyoutMenu.BASE_CLASS = BASE_CLASS;\n\n return this;\n}\n\nexport { FlyoutMenu };\n", "import { BaseTransition } from '../transition/base-transition.js';\nimport { EventObserver } from '../event-observer.js';\n\n// Exported constants.\nconst CLASSES = {\n CSS_PROPERTY: 'opacity',\n BASE_CLASS: 'u-alpha-transition',\n ALPHA_100: 'u-alpha-100',\n ALPHA_0: 'u-alpha-0',\n};\n\n/**\n * AlphaTransition\n * @class\n * @classdesc Initializes new AlphaTransition behavior.\n * @param {HTMLElement} element - DOM element to apply opacity transition to.\n * @returns {AlphaTransition} An instance.\n */\nfunction AlphaTransition(element) {\n const eventObserver = new EventObserver();\n const _baseTransition = new BaseTransition(element, CLASSES, this);\n\n /**\n * @param {Function} initialClass - The initial state for this transition.\n * @returns {AlphaTransition} An instance.\n */\n function init(initialClass) {\n _baseTransition.init(initialClass);\n\n return this;\n }\n\n /**\n * Fade to 100% by applying a utility alpha class.\n * @returns {AlphaTransition} An instance.\n */\n function fadeIn() {\n _baseTransition.applyClass(CLASSES.ALPHA_100);\n\n return this;\n }\n\n /**\n * Fade to nothing by applying a utility alpha class.\n * @returns {AlphaTransition} An instance.\n */\n function fadeOut() {\n _baseTransition.applyClass(CLASSES.ALPHA_0);\n\n return this;\n }\n\n // Attach public events.\n this.addEventListener = eventObserver.addEventListener;\n this.dispatchEvent = eventObserver.dispatchEvent;\n this.removeEventListener = eventObserver.removeEventListener;\n\n this.animateOff = _baseTransition.animateOff;\n this.animateOn = _baseTransition.animateOn;\n this.halt = _baseTransition.halt;\n this.isAnimated = _baseTransition.isAnimated;\n this.remove = _baseTransition.remove;\n this.setElement = _baseTransition.setElement;\n\n this.fadeIn = fadeIn;\n this.fadeOut = fadeOut;\n this.init = init;\n\n return this;\n}\n\n// Public static properties.\nAlphaTransition.CLASSES = CLASSES;\n\nexport { AlphaTransition };\n", "import { BaseTransition } from '../transition/base-transition.js';\nimport { EventObserver } from '../event-observer.js';\n\n// Exported constants.\nconst CLASSES = {\n CSS_PROPERTY: 'max-height',\n BASE_CLASS: 'u-max-height-transition',\n MH_DEFAULT: 'u-max-height-default',\n MH_SUMMARY: 'u-max-height-summary',\n MH_ZERO: 'u-max-height-zero',\n};\n\n/**\n * MoveTransition\n * @class\n * @classdesc Initializes new MoveTransition behavior.\n * @param {HTMLElement} element - DOM element to apply transition to.\n * @returns {MaxHeightTransition} An instance.\n */\nfunction MaxHeightTransition(element) {\n const eventObserver = new EventObserver();\n const _baseTransition = new BaseTransition(element, CLASSES, this);\n let _previousHeight = 0;\n\n /**\n * Refresh the max height set on the element.\n * This may be useful if resizing the window and the content height changes.\n */\n function refresh() {\n const elmHeight = element.scrollHeight;\n const newHeight = elmHeight + 'px';\n element.style.maxHeight = newHeight;\n }\n\n /**\n * The whole page has loaded,\n * including all dependent resources such as stylesheets and images.\n */\n function _pageLoaded() {\n window.removeEventListener('load', _pageLoaded);\n refresh();\n }\n\n /**\n * @param {Function} initialClass - The initial state for this transition.\n * @returns {MaxHeightTransition} An instance.\n */\n function init(initialClass) {\n _baseTransition.init(initialClass);\n\n /*\n The scrollHeight of an element may be incorrect if the page hasn't\n fully loaded yet, so we listen for that to happen before calculating\n the element max-height.\n */\n window.addEventListener('load', _pageLoaded);\n\n /*\n The scrollHeight of an element may change on page load.\n */\n window.addEventListener('resize', () => {\n refresh();\n });\n\n return this;\n }\n\n /**\n * Reset the max-height to the default size.\n * @returns {MaxHeightTransition} An instance.\n */\n function maxHeightDefault() {\n refresh();\n _baseTransition.applyClass(CLASSES.MH_DEFAULT);\n\n if (!_previousHeight || element.scrollHeight > _previousHeight) {\n _previousHeight = element.scrollHeight;\n }\n\n return this;\n }\n\n /**\n * Collapses the max-height to just a summary height.\n * @returns {MaxHeightTransition} An instance.\n */\n function maxHeightSummary() {\n _baseTransition.applyClass(CLASSES.MH_SUMMARY);\n\n _previousHeight = element.scrollHeight;\n\n return this;\n }\n\n /**\n * Collapses thte max-height completely.\n * @returns {MaxHeightTransition} An instance.\n */\n function maxHeightZero() {\n _baseTransition.applyClass(CLASSES.MH_ZERO);\n\n _previousHeight = element.scrollHeight;\n\n return this;\n }\n\n /**\n * Remove style attribute.\n * Remove all transition classes, if transition is initialized.\n * @returns {boolean}\n * True, if the element's CSS classes were touched, false otherwise.\n */\n function remove() {\n element.style.maxHeight = '';\n return _baseTransition.remove();\n }\n\n // Attach public events.\n this.addEventListener = eventObserver.addEventListener;\n this.dispatchEvent = eventObserver.dispatchEvent;\n this.removeEventListener = eventObserver.removeEventListener;\n\n this.animateOff = _baseTransition.animateOff;\n this.animateOn = _baseTransition.animateOn;\n this.halt = _baseTransition.halt;\n this.isAnimated = _baseTransition.isAnimated;\n this.setElement = _baseTransition.setElement;\n this.refresh = refresh;\n this.remove = remove;\n\n this.init = init;\n this.maxHeightDefault = maxHeightDefault;\n this.maxHeightSummary = maxHeightSummary;\n this.maxHeightZero = maxHeightZero;\n\n return this;\n}\n\n// Public static properties.\nMaxHeightTransition.CLASSES = CLASSES;\n\nexport { MaxHeightTransition };\n", "import { BaseTransition } from '../transition/base-transition.js';\nimport { EventObserver } from '../event-observer.js';\n\n// Exported constants.\nconst CLASSES = {\n CSS_PROPERTY: 'transform',\n BASE_CLASS: 'u-move-transition',\n MOVE_TO_ORIGIN: 'u-move-to-origin',\n MOVE_LEFT: 'u-move-left',\n MOVE_LEFT_2X: 'u-move-left-2x',\n MOVE_LEFT_3X: 'u-move-left-3x',\n MOVE_RIGHT: 'u-move-right',\n MOVE_UP: 'u-move-up',\n};\n\n/**\n * MoveTransition\n * @class\n * @classdesc Initializes new MoveTransition behavior.\n * @param {HTMLElement} element - DOM element to apply move transition to.\n * @returns {MoveTransition} An instance.\n */\nfunction MoveTransition(element) {\n const eventObserver = new EventObserver();\n const _baseTransition = new BaseTransition(element, CLASSES, this);\n\n /**\n * @param {Function} initialClass - The initial state for this transition.\n * @returns {MoveTransition} An instance.\n */\n function init(initialClass) {\n _baseTransition.init(initialClass);\n\n return this;\n }\n\n /**\n * Move to the element's original coordinates.\n * @returns {MoveTransition} An instance.\n */\n function moveToOrigin() {\n _baseTransition.applyClass(CLASSES.MOVE_TO_ORIGIN);\n\n return this;\n }\n\n /**\n * Move to the left by applying a utility move class.\n * @param {number} count - How many times to move left\n * as a multiplication of the element's width.\n * @returns {MoveTransition} An instance.\n */\n function _moveLeft(count) {\n count = count || 1;\n const moveClasses = [\n CLASSES.MOVE_LEFT,\n CLASSES.MOVE_LEFT_2X,\n CLASSES.MOVE_LEFT_3X,\n ];\n\n _baseTransition.applyClass(moveClasses[count - 1]);\n\n return this;\n }\n\n /**\n * Move to the right by applying a utility move class.\n * @returns {MoveTransition} An instance.\n */\n function moveRight() {\n _baseTransition.applyClass(CLASSES.MOVE_RIGHT);\n\n return this;\n }\n\n /**\n * Move up by applying a utility move class.\n * @returns {MoveTransition} An instance.\n */\n function moveUp() {\n _baseTransition.applyClass(CLASSES.MOVE_UP);\n\n return this;\n }\n\n // Attach public events.\n this.addEventListener = eventObserver.addEventListener;\n this.dispatchEvent = eventObserver.dispatchEvent;\n this.removeEventListener = eventObserver.removeEventListener;\n\n this.animateOff = _baseTransition.animateOff;\n this.animateOn = _baseTransition.animateOn;\n this.halt = _baseTransition.halt;\n this.isAnimated = _baseTransition.isAnimated;\n this.setElement = _baseTransition.setElement;\n this.remove = _baseTransition.remove;\n\n this.init = init;\n this.moveLeft = () => _moveLeft(1);\n this.moveLeft2 = () => _moveLeft(2);\n this.moveLeft3 = () => _moveLeft(3);\n this.moveRight = moveRight;\n this.moveToOrigin = moveToOrigin;\n this.moveUp = moveUp;\n\n return this;\n}\n\n// Public static properties.\nMoveTransition.CLASSES = CLASSES;\n\nexport { MoveTransition };\n", "// Undefined return value for void methods.\nlet UNDEFINED;\n\n// How many options may be checked.\nexport const MAX_SELECTIONS = 5;\n\n/**\n * Escapes a string.\n * @param {string} str - The string to escape.\n * @returns {string} The escaped string.\n */\nfunction stringEscape(str) {\n return str.replace(/[-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\n/**\n * Tests whether a string matches another.\n * @param {string} x - The control string.\n * @param {string} y - The comparison string.\n * @returns {boolean} True if `x` and `y` match, false otherwise.\n */\nfunction stringMatch(x, y) {\n return RegExp(stringEscape(y.trim()), 'i').test(x);\n}\n\n/**\n * @class\n * MultiselectModel\n * @param {HTMLOptionsCollection} options -\n * Set of options from a <select> element.\n * @param {string} name - a unique name for this multiselect.\n * @param {object} config - Customization of Multiselect behavior\n */\nfunction MultiselectModel(options, name, config) {\n const _options = options;\n const _name = name;\n const _max = config?.maxSelections || MAX_SELECTIONS;\n\n let _optionsData = [];\n\n let _selectedIndices = [];\n let _filterIndices = [];\n\n /* When the options list is filtered, we store a list of filtered indices\n so that when the filter changes we can reset the last matched options. */\n let _lastFilterIndices = [];\n\n // Which option is in focus. -1 means the focus is on the search input.\n let _index = -1;\n\n /**\n * @param {HTMLElement} item - An option HTML node.\n * @returns {string} A (hopefully) unique ID.\n * If it's not unique, we have a duplicate option value.\n */\n function _getOptionId(item) {\n return _name + '-' + item.value.trim().replace(/\\s+/g, '-').toLowerCase();\n }\n\n /**\n * @returns {boolean}\n * True if the maximum number of options are checked, false otherwise.\n */\n function isAtMaxSelections() {\n return _selectedIndices.length >= _max;\n }\n\n /**\n * Cleans up a list of options for saving to memory.\n * @param {HTMLOptionsCollection} list - The options from a select element.\n * @returns {Array} An array of option objects.\n */\n function _formatOptions(list) {\n let item;\n const cleaned = [];\n\n let isChecked = false;\n for (let i = 0, len = list.length; i < len; i++) {\n item = list[i];\n isChecked = isAtMaxSelections() ? false : item.defaultSelected;\n cleaned.push({\n id: _getOptionId(item),\n value: item.value,\n text: item.text,\n checked: isChecked,\n });\n\n // If an option is initially checked, we need to record it.\n if (isChecked) {\n _selectedIndices.push(i);\n }\n }\n\n return cleaned;\n }\n\n /**\n * @returns {MultiselectModel} An instance.\n */\n function init() {\n _optionsData = _formatOptions(_options);\n\n return this;\n }\n\n /**\n * Toggle checked value of an option.\n * @param {number} index - The index position of the option in the list.\n * @returns {boolean} A value of true is checked and false is unchecked.\n */\n function toggleOption(index) {\n _optionsData[index].checked = !_optionsData[index].checked;\n\n if (_selectedIndices.length < _max && _optionsData[index].checked) {\n _selectedIndices.push(index);\n _selectedIndices.sort();\n\n return true;\n }\n // We're over the max selections, reverse the check of the option.\n _optionsData[index].checked = false;\n _selectedIndices = _selectedIndices.filter(function (currIndex) {\n return currIndex !== index;\n });\n\n return false;\n }\n\n /**\n * Utility function for Array.reduce() used in searchIndices.\n * @param {Array} aggregate - The reducer's accumulator.\n * @param {object} item - Each item in the collection.\n * @param {number} index - The index of item in the collection.\n * @param {string} value - The value of item in the collection.\n * @returns {Array} The reducer's accumulator.\n */\n function _searchAggregator(aggregate, item, index, value) {\n if (stringMatch(item.text, value)) {\n aggregate.push(index);\n }\n return aggregate;\n }\n\n /**\n * Search for a query string in the options text and return the indices of\n * the matching positions in the options array.\n * @param {string} query - A query string.\n * @returns {Array} List of indices of the matching entries from the options.\n */\n function filterIndices(query) {\n // Convert query to a string if its not.\n if (Object.prototype.toString.call(query) !== '[object String]') {\n query = '';\n }\n _lastFilterIndices = _filterIndices;\n if (_optionsData.length > 0) {\n _filterIndices = _optionsData.reduce(function (acc, item, index) {\n return _searchAggregator(acc, item, index, query);\n }, []);\n }\n // Reset index position.\n _index = -1;\n\n return _filterIndices;\n }\n\n /**\n * Retrieve an option object from the options list.\n * @param {number} index - The index position in the options list.\n * @returns {object} The option object with text, value, and checked value.\n */\n function getOption(index) {\n return _optionsData[index];\n }\n\n /**\n * Set the index of the collection (represents the highlighted option).\n * @param {number} value - The index to set.\n */\n function setIndex(value) {\n const filterCount = _filterIndices.length;\n const count = filterCount === 0 ? _optionsData.length : filterCount;\n if (value < 0) {\n _index = -1;\n } else if (value >= count) {\n _index = count - 1;\n } else {\n _index = value;\n }\n }\n\n /**\n * @returns {number} The current index (highlighted option).\n */\n function getIndex() {\n return _index;\n }\n\n this.init = init;\n\n // This is used to check an item in the collection.\n this.toggleOption = toggleOption;\n this.getSelectedIndices = function () {\n return _selectedIndices;\n };\n this.isAtMaxSelections = isAtMaxSelections;\n\n // This is used to search the items in the collection.\n this.filterIndices = filterIndices;\n this.clearFilter = function () {\n _filterIndices = _lastFilterIndices = [];\n return UNDEFINED;\n };\n this.getFilterIndices = function () {\n return _filterIndices;\n };\n this.getLastFilterIndices = function () {\n return _lastFilterIndices;\n };\n\n // These are used to highlight items in the collection.\n this.getIndex = getIndex;\n this.setIndex = setIndex;\n this.resetIndex = function () {\n _index = -1;\n return _index;\n };\n\n // This is used to retrieve items from the collection.\n this.getOption = getOption;\n\n return this;\n}\n\nexport default MultiselectModel;\n", "/**\n * Shortcut for creating new dom elements.\n * @param {string} tag - The html elem to create.\n * @param {HTMLElement} parentNode - The parent node to attach to.\n * @param {object} options - The options for building the elem.\n * @returns {HTMLElement} The created elem.\n */\nexport function create(tag, parentNode, options) {\n const elem = document.createElement(tag);\n\n Object.keys(options).forEach((key) => {\n const val = options[key];\n if (key in elem) {\n elem[key] = val;\n } else {\n elem.setAttribute(key, val);\n }\n });\n\n if (parentNode) parentNode.appendChild(elem);\n return elem;\n}\n", "<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" class=\"cf-icon-svg cf-icon-svg--error\" viewBox=\"0 0 12 19\"><path d=\"M11.383 13.644A1.03 1.03 0 0 1 9.928 15.1L6 11.172 2.072 15.1a1.03 1.03 0 1 1-1.455-1.456l3.928-3.928L.617 5.79a1.03 1.03 0 1 1 1.455-1.456L6 8.261l3.928-3.928a1.03 1.03 0 0 1 1.455 1.456L7.455 9.716z\"/></svg>", "import {\n EventObserver,\n checkDom,\n setInitFlag,\n isMobileUserAgent,\n instantiateAll,\n} from '../../utilities';\nimport MultiselectModel, { MAX_SELECTIONS } from './multiselect-model.js';\nimport { create } from './multiselect-utils.js';\n\nimport * as MultiselectStyles from './multiselect.scss';\n\nimport * as closeIconSrc from '../cfpb-icons/icons/error.svg';\nconst closeIcon = closeIconSrc.default;\n\nconst BASE_CLASS = 'o-multiselect';\nconst CHECKBOX_INPUT_CLASS = 'a-checkbox';\nconst TEXT_INPUT_CLASS = 'a-text-input';\n\n// Constants for direction.\nconst DIR_PREV = 'prev';\nconst DIR_NEXT = 'next';\n\n// Constants for key binding.\nconst KEY_RETURN = 'Enter';\nconst KEY_SPACE = ' ';\nconst KEY_ESCAPE = 'Escape';\nconst KEY_UP = 'ArrowUp';\nconst KEY_DOWN = 'ArrowDown';\nconst KEY_TAB = 'Tab';\n\n// Configuration default\nconst DEFAULT_CONFIG = {\n // TODO: renderTags was added as a workaround for DS icons not rendering correctly when integrating with a React implementation.\n renderTags: true, // Allow the Multiselect to generate the Tag elements in the DOM\n maxSelections: MAX_SELECTIONS, // Maximum number of options a user can select\n};\n\n/**\n * Multiselect\n * @class\n * @classdesc Initializes a new Multiselect molecule.\n * @param {HTMLElement} element - The DOM element within which to search\n * for the molecule.\n * @returns {Multiselect} An instance.\n */\nfunction Multiselect(element) {\n /* TODO: As the multiselect is developed further\n explore whether it should use an updated\n class name or data-* attribute in the\n markup so that it doesn't apply globally by default. */\n element.classList.add(BASE_CLASS);\n\n // Internal vars.\n let _dom = checkDom(element, BASE_CLASS);\n let _isBlurSkipped = false;\n let _name;\n let _placeholder;\n let _model;\n let _options;\n let _config; // Multiselect configuration object\n\n // Markup elems, convert this to templating engine in the future.\n let _containerDom;\n let _selectionsDom;\n let _headerDom;\n let _searchDom;\n let _fieldsetDom;\n let _optionsDom;\n const _optionItemDoms = [];\n let _instance;\n\n /**\n * Set the filtered matched state.\n */\n function _filterMatches() {\n _optionsDom.classList.remove('u-no-results');\n _optionsDom.classList.add('u-filtered');\n\n let filteredIndices = _model.getLastFilterIndices();\n for (let i = 0, len = filteredIndices.length; i < len; i++) {\n _optionItemDoms[filteredIndices[i]].classList.remove('u-filter-match');\n }\n\n filteredIndices = _model.getFilterIndices();\n for (let j = 0, len = filteredIndices.length; j < len; j++) {\n _optionItemDoms[filteredIndices[j]].classList.add('u-filter-match');\n }\n }\n\n /**\n * Resets the filtered option list.\n */\n function _resetFilter() {\n _optionsDom.classList.remove('u-filtered', 'u-no-results');\n\n for (let i = 0, len = _optionsDom.children.length; i < len; i++) {\n _optionsDom.children[i].classList.remove('u-filter-match');\n }\n\n _model.clearFilter();\n }\n\n /**\n * Updates the list of options to show the user there\n * are no matching results.\n */\n function _filterNoMatches() {\n _optionsDom.classList.add('u-no-results');\n _optionsDom.classList.remove('u-filtered');\n }\n\n /**\n * Filter the options list.\n * Every time we filter we have two lists of indices:\n * - The matching options (filterIndices).\n * - The matching options of the last filter (_lastFilterIndices).\n * We need to turn off the filter for any of the last filter matches\n * that are not in the new set, and turn on the filter for the matches\n * that are not in the last set.\n * @param {Array} filterIndices - List of indices to filter from the options.\n * @returns {boolean} True if options are filtered, false otherwise.\n */\n function _filterList(filterIndices) {\n if (filterIndices.length > 0) {\n _filterMatches();\n return true;\n }\n\n _filterNoMatches();\n return false;\n }\n\n /**\n * Evaluates the list of options based on the user's query in the\n * search input.\n * @param {string} value - Text the user has entered in the search query.\n */\n function _evaluate(value) {\n _resetFilter();\n _model.resetIndex();\n const matchedIndices = _model.filterIndices(value);\n _filterList(matchedIndices);\n }\n\n /**\n * Expand the multiselect drop down.\n * @returns {Multiselect} An instance.\n */\n function expand() {\n _containerDom.classList.add('u-active');\n _fieldsetDom.classList.remove('u-invisible');\n _fieldsetDom.setAttribute('aria-hidden', false);\n _instance.dispatchEvent('expandbegin', { target: _instance });\n\n return _instance;\n }\n\n /**\n * Collapse the multiselect drop down.\n * @returns {Multiselect} An instance.\n */\n function collapse() {\n _containerDom.classList.remove('u-active');\n _fieldsetDom.classList.add('u-invisible');\n _fieldsetDom.setAttribute('aria-hidden', true);\n _model.resetIndex();\n _instance.dispatchEvent('collapsebegin', { target: _instance });\n\n return _instance;\n }\n\n /**\n * Highlights an option in the list.\n * @param {string} direction -\n * Direction to highlight compared to the current focus.\n */\n function _highlight(direction) {\n if (direction === DIR_NEXT) {\n _model.setIndex(_model.getIndex() + 1);\n } else if (direction === DIR_PREV) {\n _model.setIndex(_model.getIndex() - 1);\n }\n\n const index = _model.getIndex();\n if (index > -1) {\n let filteredIndex = index;\n const filterIndices = _model.getFilterIndices();\n if (filterIndices.length > 0) {\n filteredIndex = filterIndices[index];\n }\n const option = _model.getOption(filteredIndex);\n const value = option.value;\n const item = _optionsDom.querySelector('[data-option=\"' + value + '\"]');\n const input = item.querySelector('input');\n\n _isBlurSkipped = true;\n input.focus();\n } else {\n _isBlurSkipped = false;\n _searchDom.focus();\n }\n }\n\n /**\n * Resets the search input and filtering.\n */\n function _resetSearch() {\n _searchDom.value = '';\n _resetFilter();\n }\n\n /**\n * This passes the click of the selected item button down to the label it\n * contains. This is only required for browsers (IE11) that prevent the\n * click of a selected item from cascading from the button down to the label\n * it contains.\n * @param {MouseEvent} event - The mouse click event object.\n */\n function _selectionClickHandler(event) {\n const target = event.target;\n if (target.tagName === 'BUTTON') {\n event.preventDefault();\n target.removeEventListener('click', _selectionClickHandler);\n target.querySelector('label').click();\n }\n }\n\n /**\n * @param {KeyboardEvent} event - The key down event object.\n */\n function _selectionKeyDownHandler(event) {\n if (event.key === KEY_SPACE || event.key === KEY_RETURN) {\n const label = event.target.querySelector('label');\n const checkbox = _optionsDom.querySelector(\n '#' + label.getAttribute('for'),\n );\n checkbox.click();\n }\n }\n\n /**\n * Create a unique ID based on a select's option HTML element.\n * @param {HTMLElement} option - A option HTML element.\n * @returns {string} A hopefully unique ID.\n */\n function _getOptionId(option) {\n /* Replace any character that is not a word character with a dash.\n https://regex101.com/r/ShHmRw/1\n */\n return (\n _name + '-' + option.value.trim().replace(/[^\\w]/g, '-').toLowerCase()\n );\n }\n\n /**\n * @param {HTMLElement} selectionsDom - The UL item to inject list item into.\n * @param {HTMLElement} option - The OPTION item to extract content from.\n */\n function _createSelectedItem(selectionsDom, option) {\n const optionId = _getOptionId(option);\n const selectionsItemDom = create('li', null, {\n 'data-option': option.value,\n });\n\n const selectionsItemLabelDom = create('button', selectionsItemDom, {\n type: 'button',\n class: 'a-tag-filter',\n innerHTML:\n '<label for=' + optionId + '>' + option.text + closeIcon + '</label>',\n });\n\n selectionsDom.appendChild(selectionsItemDom);\n\n selectionsItemLabelDom.addEventListener('click', _selectionClickHandler);\n selectionsItemLabelDom.addEventListener(\n 'keydown',\n _selectionKeyDownHandler,\n );\n }\n\n /**\n * Tracks a user's selections and updates the list in the dom.\n * @param {number} optionIndex - The index position of the chosen option.\n */\n function _updateSelections(optionIndex) {\n const option =\n _model.getOption(optionIndex) || _model.getOption(_model.getIndex());\n\n if (option) {\n if (option.checked) {\n if (_optionsDom.classList.contains('u-max-selections')) {\n _optionsDom.classList.remove('u-max-selections');\n }\n\n const dataOptionSel = '[data-option=\"' + option.value + '\"]';\n const _selectionsItemDom = _selectionsDom.querySelector(dataOptionSel);\n\n // If the <Tag> exists\n if (typeof _selectionsItemDom !== 'undefined' && _selectionsItemDom) {\n _selectionsDom?.removeChild(_selectionsItemDom);\n }\n }\n // Else, if we are configured to display <Tag>s then render them\n else if (_config?.renderTags && _selectionsDom) {\n _createSelectedItem(_selectionsDom, option);\n }\n _model.toggleOption(optionIndex);\n\n if (_model.isAtMaxSelections()) {\n _optionsDom.classList.add('u-max-selections');\n }\n\n _instance.dispatchEvent('selectionsupdated', { target: _instance });\n }\n\n _model.resetIndex();\n _isBlurSkipped = false;\n\n if (_fieldsetDom.getAttribute('aria-hidden') === 'false') {\n _searchDom.focus();\n }\n }\n\n /**\n * Handles the functions to trigger on the checkbox change.\n * @param {Event} event - The checkbox change event.\n */\n function _changeHandler(event) {\n _updateSelections(Number(event.target.getAttribute('data-index')));\n _resetSearch();\n }\n\n /**\n * Binds events to the search input, option list, and checkboxes.\n */\n function _bindEvents() {\n _headerDom.addEventListener('mousemove', function (event) {\n const target = event.target;\n // Check if we're over the down-arrow on the right side of the input.\n if (event.offsetX > target.offsetWidth - 35) {\n target.style.cursor = 'pointer';\n } else {\n target.style.cursor = 'auto';\n }\n });\n\n _headerDom.addEventListener('mouseup', function (event) {\n const target = event.target;\n\n /* Check if we're over the down-arrow on the right side of the input.\n Also check if the fieldset is open.\n 35 = width of the arrow on the right of the search input.\n 140 = the max-height value set in multiselect.src for the fieldset.\n */\n if (\n event.offsetX > target.offsetWidth - 35 &&\n _fieldsetDom.offsetHeight === 140\n ) {\n _searchDom.blur();\n }\n });\n\n _searchDom.addEventListener('input', function () {\n _evaluate(this.value);\n });\n\n _searchDom.addEventListener('focus', function () {\n if (_fieldsetDom.getAttribute('aria-hidden') === 'true') {\n expand();\n }\n });\n\n _searchDom.addEventListener('blur', function () {\n if (\n !_isBlurSkipped &&\n _fieldsetDom.getAttribute('aria-hidden') === 'false'\n ) {\n collapse();\n }\n });\n\n _searchDom.addEventListener('keydown', function (event) {\n const key = event.key;\n\n if (\n _fieldsetDom.getAttribute('aria-hidden') === 'true' &&\n key !== KEY_TAB\n ) {\n expand();\n }\n\n if (key === KEY_RETURN) {\n event.preventDefault();\n _highlight(DIR_NEXT);\n } else if (key === KEY_ESCAPE) {\n _resetSearch();\n collapse();\n } else if (key === KEY_DOWN) {\n _highlight(DIR_NEXT);\n } else if (\n key === KEY_TAB &&\n !event.shiftKey &&\n _fieldsetDom.getAttribute('aria-hidden') === 'false'\n ) {\n collapse();\n }\n });\n\n _optionsDom.addEventListener('mousedown', function () {\n _isBlurSkipped = true;\n });\n\n _optionsDom.addEventListener('keydown', function (event) {\n const key = event.key;\n const target = event.target;\n const checked = target.checked;\n\n if (key === KEY_RETURN) {\n event.preventDefault();\n\n /* Programmatically checking a checkbox does not fire a change event\n so we need to manually create an event and dispatch it from the input.\n */\n target.checked = !checked;\n const evt = new Event('change', { bubbles: false, cancelable: true });\n target.dispatchEvent(evt);\n } else if (key === KEY_ESCAPE) {\n _searchDom.focus();\n collapse();\n } else if (key === KEY_UP) {\n _highlight(DIR_PREV);\n } else if (key === KEY_DOWN) {\n _highlight(DIR_NEXT);\n }\n });\n\n _fieldsetDom.addEventListener('mousedown', function (event) {\n if (event.target.tagName === 'LABEL') {\n _isBlurSkipped = true;\n }\n });\n\n const inputs = _optionsDom.querySelectorAll('input');\n for (let i = 0, len = inputs.length; i < len; i++) {\n inputs[i].addEventListener('change', _changeHandler);\n }\n\n // Add event listeners to any selections that are present at page load.\n const labelButtons = _selectionsDom.querySelectorAll('button');\n for (let j = 0, len = labelButtons.length; j < len; j++) {\n labelButtons[j].addEventListener('click', _selectionClickHandler);\n labelButtons[j].addEventListener('keydown', _selectionKeyDownHandler);\n }\n }\n\n /**\n * Populates and injects the markup for the custom multiselect.\n * @returns {HTMLElement} Newly created <div> element to hold the multiselect.\n */\n function _populateMarkup() {\n // Add a container for our markup\n _containerDom = document.createElement('div');\n _containerDom.className = BASE_CLASS;\n\n // Create all our markup but wait to manipulate the DOM just once\n _selectionsDom = create('ul', null, {\n className: 'm-tag-group',\n });\n\n _headerDom = create('header', _containerDom, {\n className: BASE_CLASS + '__header',\n });\n\n _searchDom = create('input', _headerDom, {\n className: BASE_CLASS + '__search ' + TEXT_INPUT_CLASS,\n type: 'text',\n placeholder: _placeholder || 'Select up to five',\n id: _dom.id,\n autocomplete: 'off',\n });\n\n _fieldsetDom = create('fieldset', _containerDom, {\n className: BASE_CLASS + '__fieldset u-invisible',\n 'aria-hidden': 'true',\n });\n\n let optionsClasses = BASE_CLASS + '__options';\n if (_model.isAtMaxSelections()) {\n optionsClasses += ' u-max-selections';\n }\n\n _optionsDom = create('ul', _fieldsetDom, {\n className: optionsClasses,\n });\n\n let option;\n let optionId;\n let isChecked;\n for (let i = 0, len = _options.length; i < len; i++) {\n option = _options[i];\n optionId = _getOptionId(option);\n isChecked = _model.getOption(i).checked;\n const optionsItemDom = create('li', _optionsDom, {\n 'data-option': option.value,\n 'data-cy': 'multiselect-option',\n class: 'm-form-field m-form-field--checkbox',\n });\n\n create('input', optionsItemDom, {\n id: optionId,\n // Type must come before value or IE fails\n type: 'checkbox',\n value: option.value,\n name: _name,\n class: CHECKBOX_INPUT_CLASS + ' ' + BASE_CLASS + '__checkbox',\n checked: isChecked,\n 'data-index': i,\n });\n\n create('label', optionsItemDom, {\n for: optionId,\n textContent: option.text,\n className: BASE_CLASS + '__label a-label',\n });\n\n _optionItemDoms.push(optionsItemDom);\n\n // Create <Tag> if enabled\n if (isChecked && _config?.renderTags) {\n _createSelectedItem(_selectionsDom, option);\n }\n }\n\n // Write our new markup to the DOM.\n _containerDom.insertBefore(_selectionsDom, _headerDom);\n _dom.parentNode.insertBefore(_containerDom, _dom);\n _containerDom.appendChild(_dom);\n\n return _containerDom;\n }\n\n /**\n * Set up and create the multiselect.\n * @param {object} multiselectConfig - Multiselect configuration options\n * @returns {Multiselect} An instance.\n */\n function init(multiselectConfig = DEFAULT_CONFIG) {\n if (!setInitFlag(_dom)) {\n return this;\n }\n\n if (isMobileUserAgent()) {\n return this;\n }\n\n _instance = this;\n _name = _dom.name || _dom.id;\n _placeholder = _dom.getAttribute('placeholder');\n _options = _dom.options || [];\n\n // Allow devs to pass the config settings they want and not worry about the rest\n _config = { ...DEFAULT_CONFIG, ...multiselectConfig };\n\n if (_options.length > 0) {\n // Store underlying model so we can expose it externally\n _model = new MultiselectModel(_options, _name, _config).init();\n const newDom = _populateMarkup();\n\n /* Removes <select> element,\n and re-assign DOM reference. */\n _dom.parentNode.removeChild(_dom);\n _dom = newDom;\n\n /* We need to set init flag again since we've created a new <div>\n to replace the <select> element. */\n setInitFlag(_dom);\n\n _bindEvents();\n }\n\n return this;\n }\n\n /**\n * Allow external access to the underlying model for integration/customization when used in other applications.\n * @returns {object} Model\n */\n function getModel() {\n return _model;\n }\n\n // Attach public events.\n this.init = init;\n this.expand = expand;\n this.collapse = collapse;\n\n const eventObserver = new EventObserver();\n this.addEventListener = eventObserver.addEventListener;\n this.removeEventListener = eventObserver.removeEventListener;\n this.dispatchEvent = eventObserver.dispatchEvent;\n this.getModel = getModel;\n this.updateSelections = _updateSelections;\n this.selectionClickHandler = _selectionClickHandler;\n this.selectionKeyDownHandler = _selectionKeyDownHandler;\n\n return this;\n}\n\nMultiselect.BASE_CLASS = BASE_CLASS;\nMultiselect.init = (config) =>\n instantiateAll(`.${BASE_CLASS}`, Multiselect, undefined, config);\n\nexport { Multiselect, MultiselectStyles };\n"],
5
- "mappings": "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",
6
- "names": ["form_exports", "__export", "form_default", "form_alert_exports", "__export", "form_alert_default", "form_field_exports", "__export", "form_field_default", "label_exports", "__export", "label_default", "range_exports", "__export", "range_default", "search_input_exports", "__export", "search_input_default", "select_exports", "__export", "select_default", "tag_exports", "__export", "tag_default", "text_input_exports", "__export", "text_input_default", "utilities_exports", "__export", "utilities_default", "JS_HOOK", "BEHAVIOR_PREFIX", "STATE_PREFIX", "EventObserver", "_events", "addEventListener", "event", "callback", "removeEventListener", "index", "dispatchEvent", "options", "evts", "i", "len", "contains", "element", "value", "values", "JS_HOOK", "add", "msg", "INIT_FLAG", "STATE_PREFIX", "_verifyElementExists", "element", "baseClass", "msg", "_verifyClassExists", "dom", "checkDom", "setInitFlag", "contains", "add", "instantiateAll", "selector", "Constructor", "scope", "config", "elements", "insts", "inst", "i", "len", "_toString", "isArray", "value", "_toString", "isMobileUserAgent", "BaseTransition", "element", "classes", "child", "_classes", "_dom", "_child", "_lastClass", "_transitionEndEvent", "_transitionCompleteBinded", "_isAnimated", "_isAnimating", "_isFlushed", "_addEventListener", "_removeEventListener", "_transitionComplete", "evt", "_flush", "prop", "halt", "remove", "animateOn", "animateOff", "_getTransitionEndEvent", "elem", "msg", "transition", "transitions", "transitionEvent", "setElement", "targetElement", "init", "initialClass", "applyClass", "className", "BASE_CLASS", "BEHAVIOR_PREFIX", "SEL_PREFIX", "JS_HOOK", "CLASSES", "AlphaTransition", "element", "eventObserver", "EventObserver", "_baseTransition", "BaseTransition", "init", "initialClass", "fadeIn", "fadeOut", "CLASSES", "MaxHeightTransition", "element", "eventObserver", "EventObserver", "_baseTransition", "BaseTransition", "_previousHeight", "refresh", "newHeight", "_pageLoaded", "init", "initialClass", "maxHeightDefault", "maxHeightSummary", "maxHeightZero", "remove", "CLASSES", "MoveTransition", "element", "eventObserver", "EventObserver", "_baseTransition", "BaseTransition", "init", "initialClass", "moveToOrigin", "_moveLeft", "count", "moveClasses", "moveRight", "moveUp", "UNDEFINED", "stringEscape", "str", "stringMatch", "x", "y", "MultiselectModel", "options", "name", "config", "_options", "_name", "_max", "_optionsData", "_selectedIndices", "_filterIndices", "_lastFilterIndices", "_index", "_getOptionId", "item", "isAtMaxSelections", "_formatOptions", "list", "cleaned", "isChecked", "i", "len", "init", "toggleOption", "index", "currIndex", "_searchAggregator", "aggregate", "value", "filterIndices", "query", "acc", "getOption", "setIndex", "filterCount", "count", "getIndex", "UNDEFINED", "multiselect_model_default", "create", "tag", "parentNode", "options", "elem", "key", "val", "error_default", "closeIcon", "error_default", "BASE_CLASS", "CHECKBOX_INPUT_CLASS", "TEXT_INPUT_CLASS", "DIR_PREV", "DIR_NEXT", "KEY_RETURN", "KEY_SPACE", "KEY_ESCAPE", "KEY_UP", "KEY_DOWN", "KEY_TAB", "DEFAULT_CONFIG", "Multiselect", "element", "_dom", "checkDom", "_isBlurSkipped", "_name", "_placeholder", "_model", "_options", "_config", "_containerDom", "_selectionsDom", "_headerDom", "_searchDom", "_fieldsetDom", "_optionsDom", "_optionItemDoms", "_instance", "_filterMatches", "filteredIndices", "len", "j", "_resetFilter", "i", "_filterNoMatches", "_filterList", "filterIndices", "_evaluate", "value", "matchedIndices", "expand", "collapse", "_highlight", "direction", "index", "filteredIndex", "input", "_resetSearch", "_selectionClickHandler", "event", "target", "_selectionKeyDownHandler", "label", "_getOptionId", "option", "_createSelectedItem", "selectionsDom", "optionId", "selectionsItemDom", "create", "selectionsItemLabelDom", "_updateSelections", "optionIndex", "dataOptionSel", "_selectionsItemDom", "_changeHandler", "_bindEvents", "key", "checked", "evt", "inputs", "labelButtons", "_populateMarkup", "optionsClasses", "isChecked", "optionsItemDom", "init", "multiselectConfig", "setInitFlag", "isMobileUserAgent", "__spreadValues", "multiselect_model_default", "newDom", "getModel", "eventObserver", "EventObserver", "config", "instantiateAll"]
3
+ "sources": ["../../../../../packages/cfpb-design-system/src/components/cfpb-forms/form.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/form-alert.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/form-field.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/label.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/range.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/search-input.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/select.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/tag.scss", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/text-input.scss", "../../../../../packages/cfpb-design-system/src/utilities/utilities.scss", "../../../../../packages/cfpb-design-system/src/utilities/standard-type.js", "../../../../../packages/cfpb-design-system/src/utilities/event-observer.js", "../../../../../packages/cfpb-design-system/src/utilities/data-hook.js", "../../../../../packages/cfpb-design-system/src/utilities/atomic-helpers.js", "../../../../../packages/cfpb-design-system/src/utilities/media-helpers.js", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/multiselect-model.js", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/multiselect-utils.js", "../../../../../packages/cfpb-design-system/src/components/cfpb-icons/icons/error.svg", "../../../../../packages/cfpb-design-system/src/components/cfpb-forms/multiselect.js"],
4
+ "sourcesContent": [":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.o-form__group{margin-bottom:1.875em}.o-form__fieldset{border:none;margin:0;padding:0}.o-form__fieldset .m-form-field+.m-form-field{margin-top:.625em}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.a-form-alert{--form-alert-icon-color:var(--form-alert-icon-color-default);display:flex;gap:.3125rem}.a-form-alert .cf-icon-svg{color:var(--form-alert-icon-color);flex:none;margin-top:.0625rem}.a-form-alert__text{display:block}.a-form-alert--success .cf-icon-svg{--form-alert-icon-color:var(--form-alert-icon-color-success)}.a-form-alert--warning .cf-icon-svg{--form-alert-icon-color:var(--form-alert-icon-color-warning)}.a-form-alert--error .cf-icon-svg{--form-alert-icon-color:var(--form-alert-icon-color-error)}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.no-js .u-js-only,.u-hide-if-js{display:none!important}.no-js .u-hide-if-js{display:block!important}@media screen{.u-print-only{display:none}}@media print{.u-screen-only{display:none}}.u-clearfix:after{clear:both;content:\"\";display:table}.u-visually-hidden{border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0 0 0 0)}@media only screen and (max-width:37.5em){.u-hide-on-mobile{display:none}}@media only screen and (min-width:37.5625em){.u-show-on-mobile{display:none}}.u-hidden{display:none!important}.u-invisible{visibility:hidden}.u-right{float:right}.u-nowrap{white-space:nowrap}.u-flexible-container{height:0;padding-bottom:56.25%;position:relative}.u-flexible-container__inner{height:100%;left:0;position:absolute;top:0;width:100%}.u-flexible-container--4-3{height:0;padding-bottom:75%;position:relative}.u-mt0{margin-top:0!important}.u-mb0{margin-bottom:0!important}.u-mt5{margin-top:5px!important}.u-mb5{margin-bottom:5px!important}.u-mt10{margin-top:10px!important}.u-mb10{margin-bottom:10px!important}.u-mt15{margin-top:15px!important}.u-mb15{margin-bottom:15px!important}.u-mt20{margin-top:20px!important}.u-mb20{margin-bottom:20px!important}.u-mt30{margin-top:30px!important}.u-mb30{margin-bottom:30px!important}.u-mt45{margin-top:45px!important}.u-mb45{margin-bottom:45px!important}.u-mt60{margin-top:60px!important}.u-mb60{margin-bottom:60px!important}.u-w100pct{width:100%}.u-w90pct{width:90%}.u-w80pct{width:80%}.u-w70pct{width:70%}.u-w60pct{width:60%}.u-w50pct{width:50%}.u-w40pct{width:40%}.u-w30pct{width:30%}.u-w20pct{width:20%}.u-w10pct{width:10%}.u-w75pct{width:75%}.u-w65pct{width:65%}.u-w25pct{width:25%}.u-w15pct{width:15%}.u-w66pct{width:66.6666666667%}.u-w33pct{width:33.3333333333%}.u-small-text,small{font-size:.875em}.u-small-text--subtle,small--subtle{color:var(--gray)}.u-no-animation{transition-duration:0s!important}.u-move-transition{transition:transform .25s ease-out}.u-move-to-origin{transform:translateZ(0)}.u-move-left{transform:translate3d(-100%,0,0)}.u-move-left-2x{transform:translate3d(-200%,0,0)}.u-move-left-3x{transform:translate3d(-300%,0,0)}.u-move-right{transform:translate3d(100%,0,0)}.u-move-up{transform:translate3d(0,-100%,0)}.u-alpha-transition{transition:opacity .25s linear}.u-alpha-100{opacity:1}.u-alpha-0{opacity:0}.u-max-height-transition{contain:paint;overflow:hidden;transition:max-height .2s ease-out}.u-max-height-zero{max-height:0!important}.u-max-height-summary{max-height:88px!important}.m-form-field{--choice-border:var(--choice-border-default);--choice-border-hover:var(--choice-border-hover-default);--choice-border-focus:var(--choice-border-focus-default);--choice-outline-focus:var(--choice-outline-focus-default);--choice-bg:var(--choice-bg-default);--choice-bg-selected:var(--choice-bg-selected-default);--choice-bg-selected-focus:var(--choice-bg-selected-focus-default);--choice-label-disabled:var(--choice-label-disabled-default);--choice-border-width-addendum:0}.m-form-field .a-text-input--full{width:100%}.m-form-field .a-label+.a-text-input{margin-top:.3125em}.m-form-field--checkbox .a-label,.m-form-field--radio .a-label{cursor:pointer;display:inline-grid;grid-template-columns:1.875em auto;overflow-wrap:anywhere;vertical-align:top}.m-form-field--checkbox .a-label:before,.m-form-field--radio .a-label:before{background-color:var(--choice-bg);border:1px solid var(--choice-border);content:\"\";display:inline-block;grid-row-end:3;grid-row-start:1;height:1.125em;left:1px;margin-right:10px;outline:var(--choice-border-width-addendum) solid var(--choice-border);position:relative;top:1px;vertical-align:top;width:1.125em}.m-form-field--checkbox .a-label.hover:before,.m-form-field--checkbox .a-label:hover:before,.m-form-field--radio .a-label.hover:before,.m-form-field--radio .a-label:hover:before{border-color:var(--choice-border-hover)}.m-form-field--checkbox .a-checkbox,.m-form-field--checkbox .a-radio,.m-form-field--radio .a-checkbox,.m-form-field--radio .a-radio{border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0 0 0 0)}.m-form-field--checkbox .a-checkbox.focus+.a-label,.m-form-field--checkbox .a-checkbox:focus+.a-label,.m-form-field--checkbox .a-radio.focus+.a-label,.m-form-field--checkbox .a-radio:focus+.a-label,.m-form-field--radio .a-checkbox.focus+.a-label,.m-form-field--radio .a-checkbox:focus+.a-label,.m-form-field--radio .a-radio.focus+.a-label,.m-form-field--radio .a-radio:focus+.a-label{outline:1px dotted var(--choice-outline-focus);outline-offset:1px}.m-form-field--checkbox .a-checkbox:disabled.focus+.a-label:before,.m-form-field--checkbox .a-checkbox:disabled.hover+.a-label:before,.m-form-field--checkbox .a-checkbox:disabled:checked+.a-label:before,.m-form-field--checkbox .a-checkbox:disabled:focus+.a-label:before,.m-form-field--checkbox .a-checkbox:disabled:hover+.a-label:before,.m-form-field--checkbox .a-radio:disabled.focus+.a-label:before,.m-form-field--checkbox .a-radio:disabled.hover+.a-label:before,.m-form-field--checkbox .a-radio:disabled:checked+.a-label:before,.m-form-field--checkbox .a-radio:disabled:focus+.a-label:before,.m-form-field--checkbox .a-radio:disabled:hover+.a-label:before,.m-form-field--radio .a-checkbox:disabled.focus+.a-label:before,.m-form-field--radio .a-checkbox:disabled.hover+.a-label:before,.m-form-field--radio .a-checkbox:disabled:checked+.a-label:before,.m-form-field--radio .a-checkbox:disabled:focus+.a-label:before,.m-form-field--radio .a-checkbox:disabled:hover+.a-label:before,.m-form-field--radio .a-radio:disabled.focus+.a-label:before,.m-form-field--radio .a-radio:disabled.hover+.a-label:before,.m-form-field--radio .a-radio:disabled:checked+.a-label:before,.m-form-field--radio .a-radio:disabled:focus+.a-label:before,.m-form-field--radio .a-radio:disabled:hover+.a-label:before{border-color:var(--choice-border);box-shadow:none;outline:none}.m-form-field--checkbox .a-checkbox:disabled+.a-label,.m-form-field--checkbox .a-radio:disabled+.a-label,.m-form-field--radio .a-checkbox:disabled+.a-label,.m-form-field--radio .a-radio:disabled+.a-label{color:var(--choice-label-disabled);cursor:not-allowed}.m-form-field--checkbox .a-checkbox:disabled+.a-label:before,.m-form-field--checkbox .a-radio:disabled+.a-label:before,.m-form-field--radio .a-checkbox:disabled+.a-label:before,.m-form-field--radio .a-radio:disabled+.a-label:before{outline:none}.m-form-field--checkbox:has(.a-checkbox:disabled),.m-form-field--checkbox:has(.a-radio:disabled),.m-form-field--radio:has(.a-checkbox:disabled),.m-form-field--radio:has(.a-radio:disabled){--choice-border:var(--choice-border-disabled);--choice-bg:var(--choice-bg-disabled);--choice-bg-selected:var(--choice-bg-selected-disabled)}.m-form-field--checkbox-error,.m-form-field--checkbox-success,.m-form-field--checkbox-warning,.m-form-field--radio-error,.m-form-field--radio-success,.m-form-field--radio-warning{--choice-border-width-addendum:1px}.m-form-field--checkbox-success,.m-form-field--radio-success{--choice-border:var(--choice-border-success)}.m-form-field--checkbox-warning,.m-form-field--radio-warning{--choice-border:var(--choice-border-warning)}.m-form-field--checkbox-error,.m-form-field--radio-error{--choice-border:var(--choice-border-error)}.m-form-field--checkbox .a-checkbox.focus+.a-label:before,.m-form-field--checkbox .a-checkbox:focus+.a-label:before{border-color:var(--choice-border-focus);box-shadow:0 0 0 1px var(--choice-border-focus);outline-color:var(--choice-border-focus)}.m-form-field--checkbox .a-checkbox.hover+.a-label:before,.m-form-field--checkbox .a-checkbox:hover+.a-label:before{border-color:var(--choice-border-hover);box-shadow:0 0 0 1px var(--choice-border-hover);outline-color:var(--choice-border-hover)}.m-form-field--checkbox .a-checkbox:checked+.a-label:before{background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" class=\"cf-icon-svg cf-icon-svg--approved\" viewBox=\"0 0 12 19\"><path d=\"M4.63 15.638a1.03 1.03 0 0 1-.79-.37L.36 11.09a1.03 1.03 0 1 1 1.58-1.316l2.535 3.043L9.958 3.32a1.029 1.029 0 0 1 1.783 1.03L5.52 15.122a1.03 1.03 0 0 1-.803.511l-.088.004z\"/></svg>');background-position:center 0;background-repeat:no-repeat;background-size:auto 1.1875em}.m-form-field--checkbox .a-checkbox:disabled:checked+.a-label:before{background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"%235A5D61\" aria-hidden=\"true\" viewBox=\"0 0 12 19\"><path d=\"M4.63 15.638a1.03 1.03 0 0 1-.79-.37L.36 11.09a1.03 1.03 0 1 1 1.58-1.316l2.535 3.043L9.958 3.32a1.029 1.029 0 0 1 1.783 1.03L5.52 15.122a1.03 1.03 0 0 1-.803.511l-.088.004z\"/></svg>')}.m-form-field--radio .a-label:before{border-radius:50%;transform:rotate(0deg)}.m-form-field--radio .a-radio.focus+.a-label:before,.m-form-field--radio .a-radio:focus+.a-label:before{border-color:var(--choice-border-focus);box-shadow:0 0 0 1px var(--choice-border-focus);outline:none}.m-form-field--radio .a-radio.hover+.a-label:before,.m-form-field--radio .a-radio:hover+.a-label:before{border-color:var(--choice-border-hover);box-shadow:0 0 0 1px var(--choice-border-hover);outline:none}.m-form-field--radio .a-radio:checked+.a-label:before{background-color:var(--choice-bg-selected);box-shadow:inset 0 0 0 2px var(--white)}.m-form-field--radio .a-radio.focus:checked+.a-label:before,.m-form-field--radio .a-radio:focus:checked+.a-label:before{background-color:var(--choice-bg-selected-focus);border-color:var(--choice-border-focus);box-shadow:0 0 0 1px var(--choice-border-focus),inset 0 0 0 2px var(--white)}.m-form-field--radio .a-radio.hover:checked+.a-label:before,.m-form-field--radio .a-radio:hover:checked+.a-label:before{border-color:var(--choice-border-hover);box-shadow:0 0 0 1px var(--choice-border-hover),inset 0 0 0 2px var(--white)}.m-form-field--radio .a-radio.hover:checked:disabled+.a-label:before,.m-form-field--radio .a-radio:checked:disabled+.a-label:before,.m-form-field--radio .a-radio:hover:checked:disabled+.a-label:before{background-color:var(--choice-bg-selected);border-color:var(--choice-border-disabled);box-shadow:inset 0 0 0 2px var(--gray-10)}.m-form-field--lg-target{display:block}.m-form-field--lg-target .a-label{background-color:var(--gray-10);box-sizing:border-box;padding:15px;width:100%}.m-form-field--lg-target .a-checkbox:checked+.a-label,.m-form-field--lg-target .a-radio:checked+.a-label{background-color:var(--pacific-20);box-shadow:inset 0 0 0 1px var(--pacific)}.m-form-field--lg-target .a-checkbox.focus+.a-label,.m-form-field--lg-target .a-checkbox.hover+.a-label,.m-form-field--lg-target .a-checkbox:focus+.a-label,.m-form-field--lg-target .a-checkbox:hover+.a-label,.m-form-field--lg-target .a-radio.focus+.a-label,.m-form-field--lg-target .a-radio.hover+.a-label,.m-form-field--lg-target .a-radio:focus+.a-label,.m-form-field--lg-target .a-radio:hover+.a-label{box-shadow:inset 0 0 0 2px var(--pacific)}.m-form-field--lg-target .a-checkbox.focus+.a-label,.m-form-field--lg-target .a-checkbox:checked+.a-label,.m-form-field--lg-target .a-checkbox:focus+.a-label,.m-form-field--lg-target .a-radio.focus+.a-label,.m-form-field--lg-target .a-radio:checked+.a-label,.m-form-field--lg-target .a-radio:focus+.a-label{outline-offset:1px}.m-form-field--lg-target .a-checkbox:checked:disabled+.a-label,.m-form-field--lg-target .a-checkbox:disabled+.a-label,.m-form-field--lg-target .a-checkbox:hover:disabled+.a-label,.m-form-field--lg-target .a-radio:checked:disabled+.a-label,.m-form-field--lg-target .a-radio:disabled+.a-label,.m-form-field--lg-target .a-radio:hover:disabled+.a-label{background-color:var(--gray-20);box-shadow:none;color:var(--choice-label-disabled)}.m-form-field--lg-target .a-checkbox:checked:disabled+.a-label,.m-form-field--lg-target .a-checkbox:checked:disabled+.a-label:before,.m-form-field--lg-target .a-radio:checked:disabled+.a-label,.m-form-field--lg-target .a-radio:checked:disabled+.a-label:before{border:1px solid var(--form-field-border-disabled)}.m-form-field .a-form-alert{margin-top:.9375em}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.a-label{display:inline-block}.a-label__helper{color:var(--gray-dark);font-size:1rem;font-weight:400}.a-label__helper--block{display:block;margin-top:.8333333333em}.a-label--heading{display:block;font-size:1.125em;font-weight:500;letter-spacing:inherit;line-height:1.25;margin-bottom:.5555555556em;text-transform:inherit}.h1+.a-label--heading,.h2+.a-label--heading,.h3+.a-label--heading,.h5+.a-label--heading,.h6+.a-label--heading,blockquote+.a-label--heading,dl+.a-label--heading,figure+.a-label--heading,h1+.a-label--heading,h2+.a-label--heading,h3+.a-label--heading,h5+.a-label--heading,h6+.a-label--heading,img+.a-label--heading,ol+.a-label--heading,p+.a-label--heading,table+.a-label--heading,ul+.a-label--heading{margin-top:1.6666666667em}@media only screen and (max-width:37.5em){.a-label--heading{font-size:1em;line-height:1.125;margin-bottom:.625em}}.a-label--heading .a-label__helper--block{margin-top:.625rem}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.a-range{appearance:none;min-height:49px;width:100%}.a-range::-webkit-slider-runnable-track{background-color:var(--gray-80);border:1px solid var(--gray-40);border-radius:8px;cursor:pointer;height:.6875rem;width:100%}.a-range::-moz-range-track{background-color:var(--gray-80);border:1px solid var(--gray-40);border-radius:8px;cursor:pointer;height:.6875rem;width:100%}.a-range::-webkit-slider-thumb{appearance:none;background-color:var(--gray-10);border:1px solid var(--gray-40);border-radius:50%;cursor:pointer;height:2.8125rem;margin-top:-1.125rem;width:2.8125rem}.a-range::-moz-range-thumb{appearance:none;background-color:var(--gray-10);border:1px solid var(--gray-40);border-radius:50%;cursor:pointer;height:2.8125rem;margin-top:-1.125rem;width:2.8125rem}.a-range.focus,.a-range:focus{box-shadow:none;outline:none}.a-range.focus::-webkit-slider-thumb,.a-range:focus::-webkit-slider-thumb{background-color:var(--pacific-20);border:2px solid var(--pacific)}.a-range.focus::-moz-range-thumb,.a-range:focus::-moz-range-thumb{background-color:var(--pacific-20);border:2px solid var(--pacific)}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.o-search-input{display:flex;flex-direction:column;row-gap:.9375rem}.o-search-input__input{display:flex;flex:0 1 100%;position:relative;width:auto}.o-search-input__input-label{align-self:center;cursor:pointer;left:10px;line-height:.9;position:absolute}.o-search-input__input input[type=search]{appearance:none;padding-left:30px;white-space:nowrap;width:100%}.o-search-input__input button[type=reset]{align-self:center;background-color:transparent;border:1px solid transparent;color:var(--gray-40);display:none;font-size:20px;outline:0;padding:5px;position:absolute;right:0;text-align:right;width:44px}.o-search-input__input button[type=reset]>svg{cursor:pointer;pointer-events:none;width:25px}.o-search-input__input button[type=reset]:focus,.o-search-input__input button[type=reset]:hover{color:var(--black)}.o-search-input__input button[type=reset]:focus>svg{outline:1px dotted var(--pacific)}.o-search-input__input input[type=search]:-ms-input-placeholder~button[type=reset]{display:none}.o-search-input__input input[type=search]:placeholder-shown~button[type=reset]{display:none}.o-search-input__input input[type=search]:not(:-ms-input-placeholder){padding-right:34px}.o-search-input__input input[type=search]:not(:placeholder-shown){padding-right:34px}.o-search-input__input input[type=search]::-webkit-search-cancel-button,.o-search-input__input input[type=search]::-webkit-search-decoration,.o-search-input__input input[type=search]::-webkit-search-results-button,.o-search-input__input input[type=search]::-webkit-search-results-decoration{display:none}.o-search-input .o-search-input__input:hover button[type=reset],.o-search-input:focus-within button[type=reset]{display:block}@media only screen and (min-width:37.5625em){.o-search-input{border-left:0;flex-direction:row}.o-search-input button[type=submit]{border-bottom-left-radius:0;border-top-left-radius:0;flex-basis:25%}}.no-js .o-search-input button[type=reset]{display:none!important}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.a-select{--select-border:var(--select-border-default);--select-border-width:var(--select-border-width-default);border:var(--select-border-width) solid var(--select-border);position:relative}.a-select:has(select[disabled]){border:var(--select-border-width-default) solid var(--select-border-default)}.a-select select{appearance:none;background-color:var(--white);border:0;border-radius:0;color:var(--black);line-height:1.375;padding:.4375em .375em .375em;width:100%}.a-select select.hover,.a-select select:hover{cursor:pointer;outline:2px solid var(--select-border-hover-default);outline-offset:0}.a-select select.focus,.a-select select:active,.a-select select:focus{box-shadow:0 0 0 2px var(--select-border-focus-default);outline:1px dotted var(--select-border-focus-default);outline-offset:3px}.a-select select[disabled]{background-color:var(--select-bg-disabled-default);cursor:not-allowed}.a-select select[disabled].focus,.a-select select[disabled].hover,.a-select select[disabled]:focus,.a-select select[disabled]:hover{outline:none}.a-select select option:disabled,.a-select select[disabled],.a-select select[disabled] option,.a-select select[disabled] option:disabled{color:var(--select-text-disabled-default)}.a-select:after{background-color:var(--select-icon-bg-default);background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" class=\"cf-icon-svg cf-icon-svg--down\" viewBox=\"0 0 17 19\"><path d=\"M8.5 15.313a1.03 1.03 0 0 1-.728-.302l-6.8-6.8a1.03 1.03 0 0 1 1.455-1.456L8.5 12.828l6.073-6.073a1.03 1.03 0 0 1 1.455 1.456l-6.8 6.8a1.03 1.03 0 0 1-.728.302\"/></svg>');background-position:50%;background-repeat:no-repeat;background-size:auto 1.1875em;border-left:1px solid var(--select-border-default);bottom:0;box-sizing:border-box;content:\"\";pointer-events:none;position:absolute;right:0;top:0;width:2.1875em}.a-select--disabled:after{background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"%235A5D61\" aria-hidden=\"true\" viewBox=\"0 0 17 19\"><path d=\"M8.5 15.313a1.03 1.03 0 0 1-.728-.302l-6.8-6.8a1.03 1.03 0 0 1 1.455-1.456L8.5 12.828l6.073-6.073a1.03 1.03 0 0 1 1.455 1.456l-6.8 6.8a1.03 1.03 0 0 1-.728.302\"/></svg>')}.a-select--error{--select-border:var(--select-border-error);--select-border-width:var(--select-border-width-error)}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.no-js .u-js-only,.u-hide-if-js{display:none!important}.no-js .u-hide-if-js{display:block!important}@media screen{.u-print-only{display:none}}@media print{.u-screen-only{display:none}}.u-clearfix:after{clear:both;content:\"\";display:table}.u-visually-hidden{border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0 0 0 0)}@media only screen and (max-width:37.5em){.u-hide-on-mobile{display:none}}@media only screen and (min-width:37.5625em){.u-show-on-mobile{display:none}}.u-hidden{display:none!important}.u-invisible{visibility:hidden}.u-right{float:right}.u-nowrap{white-space:nowrap}.u-flexible-container{height:0;padding-bottom:56.25%;position:relative}.u-flexible-container__inner{height:100%;left:0;position:absolute;top:0;width:100%}.u-flexible-container--4-3{height:0;padding-bottom:75%;position:relative}.u-mt0{margin-top:0!important}.u-mb0{margin-bottom:0!important}.u-mt5{margin-top:5px!important}.u-mb5{margin-bottom:5px!important}.u-mt10{margin-top:10px!important}.u-mb10{margin-bottom:10px!important}.u-mt15{margin-top:15px!important}.u-mb15{margin-bottom:15px!important}.u-mt20{margin-top:20px!important}.u-mb20{margin-bottom:20px!important}.u-mt30{margin-top:30px!important}.u-mb30{margin-bottom:30px!important}.u-mt45{margin-top:45px!important}.u-mb45{margin-bottom:45px!important}.u-mt60{margin-top:60px!important}.u-mb60{margin-bottom:60px!important}.u-w100pct{width:100%}.u-w90pct{width:90%}.u-w80pct{width:80%}.u-w70pct{width:70%}.u-w60pct{width:60%}.u-w50pct{width:50%}.u-w40pct{width:40%}.u-w30pct{width:30%}.u-w20pct{width:20%}.u-w10pct{width:10%}.u-w75pct{width:75%}.u-w65pct{width:65%}.u-w25pct{width:25%}.u-w15pct{width:15%}.u-w66pct{width:66.6666666667%}.u-w33pct{width:33.3333333333%}.u-small-text,small{font-size:.875em}.u-small-text--subtle,small--subtle{color:var(--gray)}.u-no-animation{transition-duration:0s!important}.u-move-transition{transition:transform .25s ease-out}.u-move-to-origin{transform:translateZ(0)}.u-move-left{transform:translate3d(-100%,0,0)}.u-move-left-2x{transform:translate3d(-200%,0,0)}.u-move-left-3x{transform:translate3d(-300%,0,0)}.u-move-right{transform:translate3d(100%,0,0)}.u-move-up{transform:translate3d(0,-100%,0)}.u-alpha-transition{transition:opacity .25s linear}.u-alpha-100{opacity:1}.u-alpha-0{opacity:0}.u-max-height-transition{contain:paint;overflow:hidden;transition:max-height .2s ease-out}.u-max-height-zero{max-height:0!important}.u-max-height-summary{max-height:88px!important}.a-tag-filter{background-color:var(--teal-20);border:1px solid var(--teal);border-radius:.1875rem;color:var(--black);display:flex;gap:.625rem;line-height:1.1875;min-width:fit-content;padding:4px 6px;text-align:left}.a-tag-filter .cf-icon-svg{flex:none;pointer-events:none}.a-tag-filter>label{display:contents;pointer-events:none}a.a-tag-filter:hover,button.a-tag-filter:hover{background-color:var(--teal-40);cursor:pointer}a.a-tag-filter:focus,button.a-tag-filter:focus{outline:1px dotted var(--teal);outline-offset:1px}a.a-tag-filter:active,button.a-tag-filter:active{background-color:var(--teal-60)}a.a-tag-filter,a.a-tag-filter.focus,a.a-tag-filter.hover,a.a-tag-filter.visited,a.a-tag-filter:focus,a.a-tag-filter:hover,a.a-tag-filter:visited{border-color:var(--teal);color:var(--black)}a.a-tag-filter.active,a.a-tag-filter:active{border-color:var(--teal-60);color:var(--black)}.a-tag-topic{color:var(--gold-80);display:flex;font-size:.875rem;font-weight:600;gap:.3125rem;letter-spacing:1px;text-transform:uppercase}.a-tag-topic .a-tag-topic__text{color:var(--gray);word-break:break-word}@media only screen and (max-width:37.5em){.a-tag-topic{align-items:center;box-sizing:border-box;display:flex;gap:.3125rem;padding-bottom:.625em;padding-top:.625em;position:relative;width:100%}.a-tag-topic .cf-icon-svg--right{margin-left:auto}.a-tag-topic .a-tag-topic__text{border-bottom-width:0;flex-shrink:10}}a.a-tag-topic,a.a-tag-topic.active,a.a-tag-topic.focus,a.a-tag-topic.hover,a.a-tag-topic.visited,a.a-tag-topic:active,a.a-tag-topic:focus,a.a-tag-topic:hover,a.a-tag-topic:visited{border-color:var(--gold-80);color:var(--gold-80)}a.a-tag-topic .a-tag-topic__text{border-bottom-color:var(--gold-80)}@media only screen and (max-width:37.5em){a.a-tag-topic{border-bottom-width:1px;border-top-width:1px}a.a-tag-topic:focus{outline:none}a.a-tag-topic:focus:after{content:\"\";display:block;height:100%;outline:1px dotted var(--gray);outline-offset:2px;position:absolute;width:100%}}@media only screen and (max-width:37.5em){li:has(.a-tag-topic)+li:has(.a-tag-topic) .a-tag-topic{border-top:none;position:relative}li:has(.a-tag-topic)+li:has(.a-tag-topic) a.a-tag-topic:focus:before,li:has(.a-tag-topic)+li:has(.a-tag-topic) a.a-tag-topic:hover:before{border-top:1px solid;content:\"\";display:block;height:1px;position:absolute;top:-1px;width:100%}}.a-tag-topic__bullet{font-size:1rem;line-height:1rem}@media only screen and (min-width:37.5625em){a.a-tag-topic__text,a.a-tag-topic__text.active,a.a-tag-topic__text.focus,a.a-tag-topic__text.hover,a.a-tag-topic__text.visited,a.a-tag-topic__text:active,a.a-tag-topic__text:focus,a.a-tag-topic__text:hover,a.a-tag-topic__text:visited{border-color:var(--gray);color:var(--gray)}a.a-tag-topic,a.a-tag-topic:active,a.a-tag-topic:focus,a.a-tag-topic:hover,a.a-tag-topic:visited{border-bottom:none;outline-offset:1px}a.a-tag-topic .a-tag-topic__text,a.a-tag-topic:active .a-tag-topic__text,a.a-tag-topic:focus .a-tag-topic__text,a.a-tag-topic:hover .a-tag-topic__text,a.a-tag-topic:visited .a-tag-topic__text{border-bottom:1px dotted var(--gold-80);padding-bottom:1px}a.a-tag-topic:hover .a-tag-topic__text{border-bottom:1px solid var(--gold-80)}a.a-tag-topic:focus{outline-color:var(--gray)}a.a-tag-topic:focus .a-tag-topic__text{border-bottom-style:solid!important}}.m-tag-group{list-style-type:none;padding-left:0}.m-tag-group li{display:contents;margin-bottom:0}@media only screen and (min-width:37.5625em){.m-tag-group{display:flex;flex-wrap:wrap;gap:.9375em}.m-tag-group--stacked{flex-direction:column;width:fit-content}}.m-tag-group:has(.a-tag-filter){display:flex;flex-wrap:wrap;gap:.9375em}html[lang=ar] .m-tag-group{direction:rtl;padding-right:0}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.a-text-input{--input-text:var(--input-text-default);--input-text-disabled:var(--input-text-disabled-default);--input-text-placeholder:var(--input-text-placeholder-default);--input-border:var(--input-border-default);--input-border-hover:var(--input-border-hover-default);--input-border-focus:var(--input-border-focus-default);--input-bg:var(--input-bg-default);--input-bg-disabled:var(--input-bg-disabled-default);appearance:none;background:var(--input-bg);border:1px solid var(--input-border);box-sizing:border-box;color:var(--input-text);display:inline-block;outline:0 solid var(--input-border);padding:.4375em}.a-text-input.hover,.a-text-input:hover{border-color:var(--input-border-hover);outline:1px solid var(--input-border-hover)}.a-text-input.focus,.a-text-input:focus{border-color:var(--input-border-focus);box-shadow:0 0 0 1px var(--input-border-focus);outline:1px dotted var(--input-border-focus);outline-offset:2px}.a-text-input:disabled{--input-border:var(--input-border-disabled)}.a-text-input:disabled,.a-text-input:disabled.focus,.a-text-input:disabled.hover,.a-text-input:disabled:focus,.a-text-input:disabled:hover{background-color:var(--input-bg-disabled);border-color:var(--input-border);color:var(--input-text-disabled);cursor:not-allowed;outline:none}.a-text-input--error,.a-text-input--success,.a-text-input--warning{outline-width:1px}.a-text-input--error{--input-border:var(--input-border-error)}.a-text-input--warning{--input-border:var(--input-border-warning)}.a-text-input--success{--input-border:var(--input-border-success)}::-webkit-search-decoration{appearance:none}:-ms-input-placeholder{color:var(--input-text-placeholder)}::placeholder{color:var(--input-text-placeholder)}input[type=date]::-webkit-datetime-edit{color:var(--input-text-placeholder)}", ":root{--input-text-default:var(--black);--input-text-disabled-default:var(--gray-dark);--input-text-placeholder-default:var(--gray-dark);--input-border-default:var(--gray-60);--input-border-disabled:var(--gray-60);--input-border-success:var(--green);--input-border-warning:var(--gold);--input-border-error:var(--red);--input-border-hover-default:var(--pacific);--input-border-focus-default:var(--pacific);--input-bg-default:var(--white);--input-bg-disabled-default:var(--gray-10);--form-alert-icon-color-default:var(--gray);--form-alert-icon-color-success:var(--green);--form-alert-icon-color-warning:var(--gold);--form-alert-icon-color-error:var(--red);--select-border-default:var(--gray-60);--select-border-width-default:1px;--select-border-error:var(--red);--select-border-width-error:2px;--select-border-hover-default:var(--pacific);--select-border-focus-default:var(--pacific);--select-bg-disabled-default:var(--gray-10);--select-icon-bg-default:var(--gray-10);--select-text-disabled-default:var(--gray-dark);--choice-border-default:var(--gray-60);--choice-border-disabled:var(--gray-60);--choice-border-success:var(--green);--choice-border-warning:var(--gold);--choice-border-error:var(--red);--choice-border-hover-default:var(--pacific);--choice-border-focus-default:var(--pacific);--choice-outline-focus-default:var(--pacific);--choice-bg-default:var(--white);--choice-bg-disabled:var(--gray-10);--choice-bg-selected-default:var(--pacific);--choice-bg-selected-disabled:var(--gray-40);--choice-bg-selected-focus-default:var(--pacific);--choice-label-disabled-default:var(--gray-dark)}.no-js .u-js-only,.u-hide-if-js{display:none!important}.no-js .u-hide-if-js{display:block!important}@media screen{.u-print-only{display:none}}@media print{.u-screen-only{display:none}}.u-clearfix:after{clear:both;content:\"\";display:table}.u-visually-hidden{border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0 0 0 0)}@media only screen and (max-width:37.5em){.u-hide-on-mobile{display:none}}@media only screen and (min-width:37.5625em){.u-show-on-mobile{display:none}}.u-hidden{display:none!important}.u-invisible{visibility:hidden}.u-right{float:right}.u-nowrap{white-space:nowrap}.u-flexible-container{height:0;padding-bottom:56.25%;position:relative}.u-flexible-container__inner{height:100%;left:0;position:absolute;top:0;width:100%}.u-flexible-container--4-3{height:0;padding-bottom:75%;position:relative}.u-mt0{margin-top:0!important}.u-mb0{margin-bottom:0!important}.u-mt5{margin-top:5px!important}.u-mb5{margin-bottom:5px!important}.u-mt10{margin-top:10px!important}.u-mb10{margin-bottom:10px!important}.u-mt15{margin-top:15px!important}.u-mb15{margin-bottom:15px!important}.u-mt20{margin-top:20px!important}.u-mb20{margin-bottom:20px!important}.u-mt30{margin-top:30px!important}.u-mb30{margin-bottom:30px!important}.u-mt45{margin-top:45px!important}.u-mb45{margin-bottom:45px!important}.u-mt60{margin-top:60px!important}.u-mb60{margin-bottom:60px!important}.u-w100pct{width:100%}.u-w90pct{width:90%}.u-w80pct{width:80%}.u-w70pct{width:70%}.u-w60pct{width:60%}.u-w50pct{width:50%}.u-w40pct{width:40%}.u-w30pct{width:30%}.u-w20pct{width:20%}.u-w10pct{width:10%}.u-w75pct{width:75%}.u-w65pct{width:65%}.u-w25pct{width:25%}.u-w15pct{width:15%}.u-w66pct{width:66.6666666667%}.u-w33pct{width:33.3333333333%}.u-small-text,small{font-size:.875em}.u-small-text--subtle,small--subtle{color:var(--gray)}", "/**\n * @constant\n * @type {string}\n * @description\n * Constant for the name of the data-* attribute set on\n * HTML DOM elements for access by JavaScript.\n */\nconst JS_HOOK = 'data-js-hook';\n\n/**\n * @constant\n * @type {string}\n * @description\n * Flag prefix for settings that describe what JavaScript\n * behaviors should be attached to a component.\n * This would be set in the markup and initialized when\n * the JavaScript loads.\n * @example\n * A component may flag that it has certain JavaScript behaviors attached,\n * such as:\n * `data-js-hook=\"behavior_flyout-menu behavior_clearable-input\"`,\n * which defines that two scripts (FlyoutMenu) and (ClearableInput)\n * should access this DOM element and initialize its behaviors.\n */\nconst BEHAVIOR_PREFIX = 'behavior_';\n\n/**\n * @constant\n * @type {string}\n * @description\n * Flag prefix for settings related to changes in a components\n * state set in the data-* JavaScript hook.\n * @example\n * A component may flag that it has been initialized by setting\n * `data-js-hook=\"state_atomic_init\"` after page load.\n * Which specifies that the init method of a atomic constructor\n * has been called, such as\n * `var globalSearch = new GlobalSearch( 'm-global-search' ).init()`.\n */\nconst STATE_PREFIX = 'state_';\n\nexport { JS_HOOK, BEHAVIOR_PREFIX, STATE_PREFIX };\n", "/**\n * EventObserver\n * @class\n * @classdesc Used to create an object\n * that can dispatch and listen to custom events.\n * @returns {object} An EventObserver instance.\n */\nfunction EventObserver() {\n // The events registered on this instance.\n const _events = {};\n\n /**\n * Register an event listener.\n * @param {string} event - The event name to listen for.\n * @param {Function} callback - The function called when the event has fired.\n * @returns {object} The instance this EventObserver instance is decorating.\n */\n function addEventListener(event, callback) {\n if ({}.hasOwnProperty.call(_events, event)) {\n _events[event].push(callback);\n } else {\n _events[event] = [callback];\n }\n\n return this;\n }\n\n /**\n * Remove an added event listener.\n * Must match a call made to addEventListener.\n * @param {string} event - The event name to remove.\n * @param {Function} callback - The function attached to the event.\n * @returns {object} The instance this EventObserver instance is decorating.\n */\n function removeEventListener(event, callback) {\n if (!{}.hasOwnProperty.call(_events, event)) {\n return this;\n }\n\n const index = _events[event].indexOf(callback);\n // Check if there are any callbacks associated with a particular event.\n if (index !== -1) {\n _events[event].splice(index, 1);\n }\n\n return this;\n }\n\n /**\n * Broadcast an event.\n * @param {string} event - The type of event to broadcast.\n * @param {object} options - The event object to pass to the event handler.\n * @returns {object} The instance this EventObserver instance is decorating.\n */\n function dispatchEvent(event, options) {\n if (!{}.hasOwnProperty.call(_events, event)) {\n return this;\n }\n\n options = options || {};\n\n const evts = _events[event];\n for (let i = 0, len = evts.length; i < len; i++) {\n evts[i].call(this, options);\n }\n\n return this;\n }\n\n this.addEventListener = addEventListener;\n this.removeEventListener = removeEventListener;\n this.dispatchEvent = dispatchEvent;\n this.getRegisteredEvents = () => _events;\n\n return this;\n}\n\nexport { EventObserver };\n", "import { JS_HOOK } from './standard-type.js';\n\n/**\n * @param {HTMLElement} element - DOM element.\n * @param {string} value - Value to check as existing as a JS data-* hook value.\n * @returns {boolean} True if the data-* hook value exists, false otherwise.\n */\nfunction contains(element, value) {\n if (!element) {\n return false;\n }\n let values = element.getAttribute(JS_HOOK);\n // If JS data-* hook is not set return immediately.\n if (!values) {\n return false;\n }\n values = values.split(' ');\n\n return values.indexOf(value) > -1 ? true : false;\n}\n\n/**\n * @param {HTMLElement} element - DOM element.\n * @param {string} value - Value to add to the element's JS data-* hook.\n * @returns {string} The value that was added.\n * @throws {Error} If supplied value contains a space,\n * meaning it would be two values, which is likely a typo.\n */\nfunction add(element, value) {\n if (contains(element, value)) return value;\n\n if (value.indexOf(' ') !== -1) {\n const msg = JS_HOOK + ' values cannot contain spaces!';\n throw new Error(msg);\n }\n\n const values = element.getAttribute(JS_HOOK);\n if (values !== null) {\n value = values + ' ' + value;\n }\n element.setAttribute(JS_HOOK, value);\n\n return value;\n}\n\nexport { add, contains };\n", "/* ==========================================================================\n Atomic Helpers.\n Utilities for helping validate atomic design element architecture.\n In descending order of scope, atomic components are:\n - Page\n - Template\n - Organism\n - Molecule\n - Atom\n ========================================================================= */\n\nimport { add, contains } from './data-hook.js';\nimport { STATE_PREFIX } from './standard-type.js';\n\n/**\n * @constant\n * @type {string}\n * @description\n * Flag that gets set on an atomic component after its .init()\n * method has been called. This is used so that an atomic\n * component won't get initialized a second time after it\n * has already been initialized.\n */\nconst INIT_FLAG = STATE_PREFIX + 'atomic_init';\n\n/**\n * @param {HTMLElement} element - The DOM element within which to search for\n * the atomic element class.\n * @param {string} baseClass - The CSS class name for the atomic element.\n * @returns {HTMLElement} The DOM element for the atomic element.\n * @throws {Error} If DOM element passed into the atomic element is not valid.\n */\nfunction _verifyElementExists(element, baseClass) {\n if (!element || !element.classList) {\n const msg =\n element +\n ' is not valid. ' +\n 'Check that element is a DOM node with class \"' +\n baseClass +\n '\"';\n throw new Error(msg);\n }\n\n return element;\n}\n\n/**\n * @param {HTMLElement} element - The DOM element within which to search\n * for the atomic element class.\n * @param {string} baseClass - The CSS class name for the atomic element.\n * @returns {HTMLElement} The DOM element for the atomic element.\n * @throws {Error} If baseClass was not found on the element.\n */\nfunction _verifyClassExists(element, baseClass) {\n const dom = element.classList.contains(baseClass)\n ? element\n : element.querySelector('.' + baseClass);\n if (!dom) {\n const msg = baseClass + ' not found on or in passed DOM node.';\n throw new Error(msg);\n }\n\n return dom;\n}\n\n/**\n * Check that a particular element passed into the constructor of\n * an atomic component exists and that the correct atomic class\n * is present on the element.\n * @param {HTMLElement} element - The DOM element within which to search\n * for the atomic element class.\n * @param {string} baseClass - The CSS class name for the atomic element.\n * @returns {HTMLElement} The DOM element for the atomic element.\n * @throws {Error} If DOM element passed into the atomic element is not valid.\n */\nfunction checkDom(element, baseClass) {\n _verifyElementExists(element, baseClass);\n const dom = _verifyClassExists(element, baseClass);\n\n return dom;\n}\n\n/**\n * Set a flag on an atomic component when it is initialized.\n * Use the returned boolean to handle cases where an atomic component\n * is initializing when it has already been initialized elsewhere.\n * @param {HTMLElement} element - The DOM element for the atomic component.\n * @returns {boolean} True if the init data-js-* hook attribute was set,\n * false otherwise.\n */\nfunction setInitFlag(element) {\n if (contains(element, INIT_FLAG)) {\n return false;\n }\n\n add(element, INIT_FLAG);\n\n return true;\n}\n\n/**\n * @param {string} selector - Selector to search for in the document.\n * @param {Function} Constructor - A constructor function.\n * @param {HTMLElement} [scope] - A dom node in which to query the selector.\n * If not supplied, it defaults to the `document`.\n * @param {object} config - Configuration will be provided to the Constructor's init()\n * @returns {Array} List of instances that were instantiated.\n */\nfunction instantiateAll(selector, Constructor, scope, config = {}) {\n const base = scope || document;\n const elements = base.querySelectorAll(selector);\n const insts = [];\n let inst;\n let element;\n for (let i = 0, len = elements.length; i < len; i++) {\n element = elements[i];\n if (contains(element, INIT_FLAG) === false) {\n inst = new Constructor(element);\n inst.init(config);\n insts.push(inst);\n }\n }\n return insts;\n}\n\n// Expose public methods.\nexport { checkDom, instantiateAll, setInitFlag };\n", "/* ==========================================================================\n Media Helpers.\n Utilities for working with different screen sizes and operating systems.\n ========================================================================= */\n\n/**\n * Query the browser's user agent string to see if it's on a mobile OS.\n * @returns {boolean} True if on a mobile user agent, false otherwise.\n */\nfunction isMobileUserAgent() {\n const regex = new RegExp(\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i,\n );\n if (regex.test(navigator.userAgent)) {\n return true;\n }\n return false;\n}\n\n// Expose public methods.\nexport { isMobileUserAgent };\n", "// Undefined return value for void methods.\nlet UNDEFINED;\n\n// How many options may be checked.\nexport const MAX_SELECTIONS = 5;\n\n/**\n * Escapes a string.\n * @param {string} str - The string to escape.\n * @returns {string} The escaped string.\n */\nfunction stringEscape(str) {\n return str.replace(/[-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\n/**\n * Tests whether a string matches another.\n * @param {string} x - The control string.\n * @param {string} y - The comparison string.\n * @returns {boolean} True if `x` and `y` match, false otherwise.\n */\nfunction stringMatch(x, y) {\n return RegExp(stringEscape(y.trim()), 'i').test(x);\n}\n\n/**\n * @class\n * MultiselectModel\n * @param {HTMLOptionsCollection} options -\n * Set of options from a <select> element.\n * @param {string} name - a unique name for this multiselect.\n * @param {object} config - Customization of Multiselect behavior\n */\nfunction MultiselectModel(options, name, config) {\n const _options = options;\n const _name = name;\n const _max = config?.maxSelections || MAX_SELECTIONS;\n\n let _optionsData = [];\n\n let _selectedIndices = [];\n let _filterIndices = [];\n\n /* When the options list is filtered, we store a list of filtered indices\n so that when the filter changes we can reset the last matched options. */\n let _lastFilterIndices = [];\n\n // Which option is in focus. -1 means the focus is on the search input.\n let _index = -1;\n\n /**\n * @param {HTMLElement} item - An option HTML node.\n * @returns {string} A (hopefully) unique ID.\n * If it's not unique, we have a duplicate option value.\n */\n function _getOptionId(item) {\n return _name + '-' + item.value.trim().replace(/\\s+/g, '-').toLowerCase();\n }\n\n /**\n * @returns {boolean}\n * True if the maximum number of options are checked, false otherwise.\n */\n function isAtMaxSelections() {\n return _selectedIndices.length >= _max;\n }\n\n /**\n * Cleans up a list of options for saving to memory.\n * @param {HTMLOptionsCollection} list - The options from a select element.\n * @returns {Array} An array of option objects.\n */\n function _formatOptions(list) {\n let item;\n const cleaned = [];\n\n let isChecked = false;\n for (let i = 0, len = list.length; i < len; i++) {\n item = list[i];\n isChecked = isAtMaxSelections() ? false : item.defaultSelected;\n cleaned.push({\n id: _getOptionId(item),\n value: item.value,\n text: item.text,\n checked: isChecked,\n });\n\n // If an option is initially checked, we need to record it.\n if (isChecked) {\n _selectedIndices.push(i);\n }\n }\n\n return cleaned;\n }\n\n /**\n * @returns {MultiselectModel} An instance.\n */\n function init() {\n _optionsData = _formatOptions(_options);\n\n return this;\n }\n\n /**\n * Toggle checked value of an option.\n * @param {number} index - The index position of the option in the list.\n * @returns {boolean} A value of true is checked and false is unchecked.\n */\n function toggleOption(index) {\n _optionsData[index].checked = !_optionsData[index].checked;\n\n if (_selectedIndices.length < _max && _optionsData[index].checked) {\n _selectedIndices.push(index);\n _selectedIndices.sort();\n\n return true;\n }\n // We're over the max selections, reverse the check of the option.\n _optionsData[index].checked = false;\n _selectedIndices = _selectedIndices.filter(function (currIndex) {\n return currIndex !== index;\n });\n\n return false;\n }\n\n /**\n * Utility function for Array.reduce() used in searchIndices.\n * @param {Array} aggregate - The reducer's accumulator.\n * @param {object} item - Each item in the collection.\n * @param {number} index - The index of item in the collection.\n * @param {string} value - The value of item in the collection.\n * @returns {Array} The reducer's accumulator.\n */\n function _searchAggregator(aggregate, item, index, value) {\n if (stringMatch(item.text, value)) {\n aggregate.push(index);\n }\n return aggregate;\n }\n\n /**\n * Search for a query string in the options text and return the indices of\n * the matching positions in the options array.\n * @param {string} query - A query string.\n * @returns {Array} List of indices of the matching entries from the options.\n */\n function filterIndices(query) {\n // Convert query to a string if its not.\n if (Object.prototype.toString.call(query) !== '[object String]') {\n query = '';\n }\n _lastFilterIndices = _filterIndices;\n if (_optionsData.length > 0) {\n _filterIndices = _optionsData.reduce(function (acc, item, index) {\n return _searchAggregator(acc, item, index, query);\n }, []);\n }\n // Reset index position.\n _index = -1;\n\n return _filterIndices;\n }\n\n /**\n * Retrieve an option object from the options list.\n * @param {number} index - The index position in the options list.\n * @returns {object} The option object with text, value, and checked value.\n */\n function getOption(index) {\n return _optionsData[index];\n }\n\n /**\n * Set the index of the collection (represents the highlighted option).\n * @param {number} value - The index to set.\n */\n function setIndex(value) {\n const filterCount = _filterIndices.length;\n const count = filterCount === 0 ? _optionsData.length : filterCount;\n if (value < 0) {\n _index = -1;\n } else if (value >= count) {\n _index = count - 1;\n } else {\n _index = value;\n }\n }\n\n /**\n * @returns {number} The current index (highlighted option).\n */\n function getIndex() {\n return _index;\n }\n\n this.init = init;\n\n // This is used to check an item in the collection.\n this.toggleOption = toggleOption;\n this.getSelectedIndices = function () {\n return _selectedIndices;\n };\n this.isAtMaxSelections = isAtMaxSelections;\n\n // This is used to search the items in the collection.\n this.filterIndices = filterIndices;\n this.clearFilter = function () {\n _filterIndices = _lastFilterIndices = [];\n return UNDEFINED;\n };\n this.getFilterIndices = function () {\n return _filterIndices;\n };\n this.getLastFilterIndices = function () {\n return _lastFilterIndices;\n };\n\n // These are used to highlight items in the collection.\n this.getIndex = getIndex;\n this.setIndex = setIndex;\n this.resetIndex = function () {\n _index = -1;\n return _index;\n };\n\n // This is used to retrieve items from the collection.\n this.getOption = getOption;\n\n return this;\n}\n\nexport default MultiselectModel;\n", "/**\n * Shortcut for creating new dom elements.\n * @param {string} tag - The html elem to create.\n * @param {HTMLElement} parentNode - The parent node to attach to.\n * @param {object} options - The options for building the elem.\n * @returns {HTMLElement} The created elem.\n */\nexport function create(tag, parentNode, options) {\n const elem = document.createElement(tag);\n\n Object.keys(options).forEach((key) => {\n const val = options[key];\n if (key in elem) {\n elem[key] = val;\n } else {\n elem.setAttribute(key, val);\n }\n });\n\n if (parentNode) parentNode.appendChild(elem);\n return elem;\n}\n", "<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" class=\"cf-icon-svg cf-icon-svg--error\" viewBox=\"0 0 12 19\"><path d=\"M11.383 13.644A1.03 1.03 0 0 1 9.928 15.1L6 11.172 2.072 15.1a1.03 1.03 0 1 1-1.455-1.456l3.928-3.928L.617 5.79a1.03 1.03 0 1 1 1.455-1.456L6 8.261l3.928-3.928a1.03 1.03 0 0 1 1.455 1.456L7.455 9.716z\"/></svg>", "import {\n EventObserver,\n checkDom,\n setInitFlag,\n isMobileUserAgent,\n instantiateAll,\n} from '../../utilities';\nimport MultiselectModel, { MAX_SELECTIONS } from './multiselect-model.js';\nimport { create } from './multiselect-utils.js';\n\nimport * as MultiselectStyles from './multiselect.scss';\n\nimport * as closeIconSrc from '../cfpb-icons/icons/error.svg';\nconst closeIcon = closeIconSrc.default;\n\nconst BASE_CLASS = 'o-multiselect';\nconst CHECKBOX_INPUT_CLASS = 'a-checkbox';\nconst TEXT_INPUT_CLASS = 'a-text-input';\n\n// Constants for direction.\nconst DIR_PREV = 'prev';\nconst DIR_NEXT = 'next';\n\n// Constants for key binding.\nconst KEY_RETURN = 'Enter';\nconst KEY_SPACE = ' ';\nconst KEY_ESCAPE = 'Escape';\nconst KEY_UP = 'ArrowUp';\nconst KEY_DOWN = 'ArrowDown';\nconst KEY_TAB = 'Tab';\n\n// Configuration default\nconst DEFAULT_CONFIG = {\n // TODO: renderTags was added as a workaround for DS icons not rendering correctly when integrating with a React implementation.\n renderTags: true, // Allow the Multiselect to generate the Tag elements in the DOM\n maxSelections: MAX_SELECTIONS, // Maximum number of options a user can select\n};\n\n/**\n * Multiselect\n * @class\n * @classdesc Initializes a new Multiselect molecule.\n * @param {HTMLElement} element - The DOM element within which to search\n * for the molecule.\n * @returns {Multiselect} An instance.\n */\nfunction Multiselect(element) {\n /* TODO: As the multiselect is developed further\n explore whether it should use an updated\n class name or data-* attribute in the\n markup so that it doesn't apply globally by default. */\n element.classList.add(BASE_CLASS);\n\n // Internal vars.\n let _dom = checkDom(element, BASE_CLASS);\n let _isBlurSkipped = false;\n let _name;\n let _placeholder;\n let _model;\n let _options;\n let _config; // Multiselect configuration object\n\n // Markup elems, convert this to templating engine in the future.\n let _containerDom;\n let _selectionsDom;\n let _headerDom;\n let _searchDom;\n let _fieldsetDom;\n let _optionsDom;\n const _optionItemDoms = [];\n let _instance;\n\n /**\n * Set the filtered matched state.\n */\n function _filterMatches() {\n _optionsDom.classList.remove('u-no-results');\n _optionsDom.classList.add('u-filtered');\n\n let filteredIndices = _model.getLastFilterIndices();\n for (let i = 0, len = filteredIndices.length; i < len; i++) {\n _optionItemDoms[filteredIndices[i]].classList.remove('u-filter-match');\n }\n\n filteredIndices = _model.getFilterIndices();\n for (let j = 0, len = filteredIndices.length; j < len; j++) {\n _optionItemDoms[filteredIndices[j]].classList.add('u-filter-match');\n }\n }\n\n /**\n * Resets the filtered option list.\n */\n function _resetFilter() {\n _optionsDom.classList.remove('u-filtered', 'u-no-results');\n\n for (let i = 0, len = _optionsDom.children.length; i < len; i++) {\n _optionsDom.children[i].classList.remove('u-filter-match');\n }\n\n _model.clearFilter();\n }\n\n /**\n * Updates the list of options to show the user there\n * are no matching results.\n */\n function _filterNoMatches() {\n _optionsDom.classList.add('u-no-results');\n _optionsDom.classList.remove('u-filtered');\n }\n\n /**\n * Filter the options list.\n * Every time we filter we have two lists of indices:\n * - The matching options (filterIndices).\n * - The matching options of the last filter (_lastFilterIndices).\n * We need to turn off the filter for any of the last filter matches\n * that are not in the new set, and turn on the filter for the matches\n * that are not in the last set.\n * @param {Array} filterIndices - List of indices to filter from the options.\n * @returns {boolean} True if options are filtered, false otherwise.\n */\n function _filterList(filterIndices) {\n if (filterIndices.length > 0) {\n _filterMatches();\n return true;\n }\n\n _filterNoMatches();\n return false;\n }\n\n /**\n * Evaluates the list of options based on the user's query in the\n * search input.\n * @param {string} value - Text the user has entered in the search query.\n */\n function _evaluate(value) {\n _resetFilter();\n _model.resetIndex();\n const matchedIndices = _model.filterIndices(value);\n _filterList(matchedIndices);\n }\n\n /**\n * Expand the multiselect drop down.\n * @returns {Multiselect} An instance.\n */\n function expand() {\n _containerDom.classList.add('u-active');\n _fieldsetDom.classList.remove('u-invisible');\n _fieldsetDom.setAttribute('aria-hidden', false);\n _instance.dispatchEvent('expandbegin', { target: _instance });\n\n return _instance;\n }\n\n /**\n * Collapse the multiselect drop down.\n * @returns {Multiselect} An instance.\n */\n function collapse() {\n _containerDom.classList.remove('u-active');\n _fieldsetDom.classList.add('u-invisible');\n _fieldsetDom.setAttribute('aria-hidden', true);\n _model.resetIndex();\n _instance.dispatchEvent('collapsebegin', { target: _instance });\n\n return _instance;\n }\n\n /**\n * Highlights an option in the list.\n * @param {string} direction -\n * Direction to highlight compared to the current focus.\n */\n function _highlight(direction) {\n if (direction === DIR_NEXT) {\n _model.setIndex(_model.getIndex() + 1);\n } else if (direction === DIR_PREV) {\n _model.setIndex(_model.getIndex() - 1);\n }\n\n const index = _model.getIndex();\n if (index > -1) {\n let filteredIndex = index;\n const filterIndices = _model.getFilterIndices();\n if (filterIndices.length > 0) {\n filteredIndex = filterIndices[index];\n }\n const option = _model.getOption(filteredIndex);\n const value = option.value;\n const item = _optionsDom.querySelector('[data-option=\"' + value + '\"]');\n const input = item.querySelector('input');\n\n _isBlurSkipped = true;\n input.focus();\n } else {\n _isBlurSkipped = false;\n _searchDom.focus();\n }\n }\n\n /**\n * Resets the search input and filtering.\n */\n function _resetSearch() {\n _searchDom.value = '';\n _resetFilter();\n }\n\n /**\n * This passes the click of the selected item button down to the label it\n * contains. This is only required for browsers (IE11) that prevent the\n * click of a selected item from cascading from the button down to the label\n * it contains.\n * @param {MouseEvent} event - The mouse click event object.\n */\n function _selectionClickHandler(event) {\n const target = event.target;\n if (target.tagName === 'BUTTON') {\n event.preventDefault();\n target.removeEventListener('click', _selectionClickHandler);\n target.querySelector('label').click();\n }\n }\n\n /**\n * @param {KeyboardEvent} event - The key down event object.\n */\n function _selectionKeyDownHandler(event) {\n if (event.key === KEY_SPACE || event.key === KEY_RETURN) {\n const label = event.target.querySelector('label');\n const checkbox = _optionsDom.querySelector(\n '#' + label.getAttribute('for'),\n );\n checkbox.click();\n }\n }\n\n /**\n * Create a unique ID based on a select's option HTML element.\n * @param {HTMLElement} option - A option HTML element.\n * @returns {string} A hopefully unique ID.\n */\n function _getOptionId(option) {\n /* Replace any character that is not a word character with a dash.\n https://regex101.com/r/ShHmRw/1\n */\n return (\n _name + '-' + option.value.trim().replace(/[^\\w]/g, '-').toLowerCase()\n );\n }\n\n /**\n * @param {HTMLElement} selectionsDom - The UL item to inject list item into.\n * @param {HTMLElement} option - The OPTION item to extract content from.\n */\n function _createSelectedItem(selectionsDom, option) {\n const optionId = _getOptionId(option);\n const selectionsItemDom = create('li', null, {\n 'data-option': option.value,\n });\n\n const selectionsItemLabelDom = create('button', selectionsItemDom, {\n type: 'button',\n class: 'a-tag-filter',\n innerHTML:\n '<label for=' + optionId + '>' + option.text + closeIcon + '</label>',\n });\n\n selectionsDom.appendChild(selectionsItemDom);\n\n selectionsItemLabelDom.addEventListener('click', _selectionClickHandler);\n selectionsItemLabelDom.addEventListener(\n 'keydown',\n _selectionKeyDownHandler,\n );\n }\n\n /**\n * Tracks a user's selections and updates the list in the dom.\n * @param {number} optionIndex - The index position of the chosen option.\n */\n function _updateSelections(optionIndex) {\n const option =\n _model.getOption(optionIndex) || _model.getOption(_model.getIndex());\n\n if (option) {\n if (option.checked) {\n if (_optionsDom.classList.contains('u-max-selections')) {\n _optionsDom.classList.remove('u-max-selections');\n }\n\n const dataOptionSel = '[data-option=\"' + option.value + '\"]';\n const _selectionsItemDom = _selectionsDom.querySelector(dataOptionSel);\n\n // If the <Tag> exists\n if (typeof _selectionsItemDom !== 'undefined' && _selectionsItemDom) {\n _selectionsDom?.removeChild(_selectionsItemDom);\n }\n }\n // Else, if we are configured to display <Tag>s then render them\n else if (_config?.renderTags && _selectionsDom) {\n _createSelectedItem(_selectionsDom, option);\n }\n _model.toggleOption(optionIndex);\n\n if (_model.isAtMaxSelections()) {\n _optionsDom.classList.add('u-max-selections');\n }\n\n _instance.dispatchEvent('selectionsupdated', { target: _instance });\n }\n\n _model.resetIndex();\n _isBlurSkipped = false;\n\n if (_fieldsetDom.getAttribute('aria-hidden') === 'false') {\n _searchDom.focus();\n }\n }\n\n /**\n * Handles the functions to trigger on the checkbox change.\n * @param {Event} event - The checkbox change event.\n */\n function _changeHandler(event) {\n _updateSelections(Number(event.target.getAttribute('data-index')));\n _resetSearch();\n }\n\n /**\n * Binds events to the search input, option list, and checkboxes.\n */\n function _bindEvents() {\n _headerDom.addEventListener('mousemove', function (event) {\n const target = event.target;\n // Check if we're over the down-arrow on the right side of the input.\n if (event.offsetX > target.offsetWidth - 35) {\n target.style.cursor = 'pointer';\n } else {\n target.style.cursor = 'auto';\n }\n });\n\n _headerDom.addEventListener('mouseup', function (event) {\n const target = event.target;\n\n /* Check if we're over the down-arrow on the right side of the input.\n Also check if the fieldset is open.\n 35 = width of the arrow on the right of the search input.\n 140 = the max-height value set in multiselect.src for the fieldset.\n */\n if (\n event.offsetX > target.offsetWidth - 35 &&\n _fieldsetDom.offsetHeight === 140\n ) {\n _searchDom.blur();\n }\n });\n\n _searchDom.addEventListener('input', function () {\n _evaluate(this.value);\n });\n\n _searchDom.addEventListener('focus', function () {\n if (_fieldsetDom.getAttribute('aria-hidden') === 'true') {\n expand();\n }\n });\n\n _searchDom.addEventListener('blur', function () {\n if (\n !_isBlurSkipped &&\n _fieldsetDom.getAttribute('aria-hidden') === 'false'\n ) {\n collapse();\n }\n });\n\n _searchDom.addEventListener('keydown', function (event) {\n const key = event.key;\n\n if (\n _fieldsetDom.getAttribute('aria-hidden') === 'true' &&\n key !== KEY_TAB\n ) {\n expand();\n }\n\n if (key === KEY_RETURN) {\n event.preventDefault();\n _highlight(DIR_NEXT);\n } else if (key === KEY_ESCAPE) {\n _resetSearch();\n collapse();\n } else if (key === KEY_DOWN) {\n _highlight(DIR_NEXT);\n } else if (\n key === KEY_TAB &&\n !event.shiftKey &&\n _fieldsetDom.getAttribute('aria-hidden') === 'false'\n ) {\n collapse();\n }\n });\n\n _optionsDom.addEventListener('mousedown', function () {\n _isBlurSkipped = true;\n });\n\n _optionsDom.addEventListener('keydown', function (event) {\n const key = event.key;\n const target = event.target;\n const checked = target.checked;\n\n if (key === KEY_RETURN) {\n event.preventDefault();\n\n /* Programmatically checking a checkbox does not fire a change event\n so we need to manually create an event and dispatch it from the input.\n */\n target.checked = !checked;\n const evt = new Event('change', { bubbles: false, cancelable: true });\n target.dispatchEvent(evt);\n } else if (key === KEY_ESCAPE) {\n _searchDom.focus();\n collapse();\n } else if (key === KEY_UP) {\n _highlight(DIR_PREV);\n } else if (key === KEY_DOWN) {\n _highlight(DIR_NEXT);\n }\n });\n\n _fieldsetDom.addEventListener('mousedown', function (event) {\n if (event.target.tagName === 'LABEL') {\n _isBlurSkipped = true;\n }\n });\n\n const inputs = _optionsDom.querySelectorAll('input');\n for (let i = 0, len = inputs.length; i < len; i++) {\n inputs[i].addEventListener('change', _changeHandler);\n }\n\n // Add event listeners to any selections that are present at page load.\n const labelButtons = _selectionsDom.querySelectorAll('button');\n for (let j = 0, len = labelButtons.length; j < len; j++) {\n labelButtons[j].addEventListener('click', _selectionClickHandler);\n labelButtons[j].addEventListener('keydown', _selectionKeyDownHandler);\n }\n }\n\n /**\n * Populates and injects the markup for the custom multiselect.\n * @returns {HTMLElement} Newly created <div> element to hold the multiselect.\n */\n function _populateMarkup() {\n // Add a container for our markup\n _containerDom = document.createElement('div');\n _containerDom.className = BASE_CLASS;\n\n // Create all our markup but wait to manipulate the DOM just once\n _selectionsDom = create('ul', null, {\n className: 'm-tag-group',\n });\n\n _headerDom = create('header', _containerDom, {\n className: BASE_CLASS + '__header',\n });\n\n _searchDom = create('input', _headerDom, {\n className: BASE_CLASS + '__search ' + TEXT_INPUT_CLASS,\n type: 'text',\n placeholder: _placeholder || 'Select up to five',\n id: _dom.id,\n autocomplete: 'off',\n });\n\n _fieldsetDom = create('fieldset', _containerDom, {\n className: BASE_CLASS + '__fieldset u-invisible',\n 'aria-hidden': 'true',\n });\n\n let optionsClasses = BASE_CLASS + '__options';\n if (_model.isAtMaxSelections()) {\n optionsClasses += ' u-max-selections';\n }\n\n _optionsDom = create('ul', _fieldsetDom, {\n className: optionsClasses,\n });\n\n let option;\n let optionId;\n let isChecked;\n for (let i = 0, len = _options.length; i < len; i++) {\n option = _options[i];\n optionId = _getOptionId(option);\n isChecked = _model.getOption(i).checked;\n const optionsItemDom = create('li', _optionsDom, {\n 'data-option': option.value,\n 'data-cy': 'multiselect-option',\n class: 'm-form-field m-form-field--checkbox',\n });\n\n create('input', optionsItemDom, {\n id: optionId,\n // Type must come before value or IE fails\n type: 'checkbox',\n value: option.value,\n name: _name,\n class: CHECKBOX_INPUT_CLASS + ' ' + BASE_CLASS + '__checkbox',\n checked: isChecked,\n 'data-index': i,\n });\n\n create('label', optionsItemDom, {\n for: optionId,\n textContent: option.text,\n className: BASE_CLASS + '__label a-label',\n });\n\n _optionItemDoms.push(optionsItemDom);\n\n // Create <Tag> if enabled\n if (isChecked && _config?.renderTags) {\n _createSelectedItem(_selectionsDom, option);\n }\n }\n\n // Write our new markup to the DOM.\n _containerDom.insertBefore(_selectionsDom, _headerDom);\n _dom.parentNode.insertBefore(_containerDom, _dom);\n _containerDom.appendChild(_dom);\n\n return _containerDom;\n }\n\n /**\n * Set up and create the multiselect.\n * @param {object} multiselectConfig - Multiselect configuration options\n * @returns {Multiselect} An instance.\n */\n function init(multiselectConfig = DEFAULT_CONFIG) {\n if (!setInitFlag(_dom)) {\n return this;\n }\n\n if (isMobileUserAgent()) {\n return this;\n }\n\n _instance = this;\n _name = _dom.name || _dom.id;\n _placeholder = _dom.getAttribute('placeholder');\n _options = _dom.options || [];\n\n // Allow devs to pass the config settings they want and not worry about the rest\n _config = { ...DEFAULT_CONFIG, ...multiselectConfig };\n\n if (_options.length > 0) {\n // Store underlying model so we can expose it externally\n _model = new MultiselectModel(_options, _name, _config).init();\n const newDom = _populateMarkup();\n\n /* Removes <select> element,\n and re-assign DOM reference. */\n _dom.parentNode.removeChild(_dom);\n _dom = newDom;\n\n /* We need to set init flag again since we've created a new <div>\n to replace the <select> element. */\n setInitFlag(_dom);\n\n _bindEvents();\n }\n\n return this;\n }\n\n /**\n * Allow external access to the underlying model for integration/customization when used in other applications.\n * @returns {object} Model\n */\n function getModel() {\n return _model;\n }\n\n // Attach public events.\n this.init = init;\n this.expand = expand;\n this.collapse = collapse;\n\n const eventObserver = new EventObserver();\n this.addEventListener = eventObserver.addEventListener;\n this.removeEventListener = eventObserver.removeEventListener;\n this.dispatchEvent = eventObserver.dispatchEvent;\n this.getModel = getModel;\n this.updateSelections = _updateSelections;\n this.selectionClickHandler = _selectionClickHandler;\n this.selectionKeyDownHandler = _selectionKeyDownHandler;\n\n return this;\n}\n\nMultiselect.BASE_CLASS = BASE_CLASS;\nMultiselect.init = (config) =>\n instantiateAll(`.${BASE_CLASS}`, Multiselect, undefined, config);\n\nexport { Multiselect, MultiselectStyles };\n"],
5
+ "mappings": "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",
6
+ "names": ["form_exports", "__export", "form_default", "form_alert_exports", "__export", "form_alert_default", "form_field_exports", "__export", "form_field_default", "label_exports", "__export", "label_default", "range_exports", "__export", "range_default", "search_input_exports", "__export", "search_input_default", "select_exports", "__export", "select_default", "tag_exports", "__export", "tag_default", "text_input_exports", "__export", "text_input_default", "utilities_exports", "__export", "utilities_default", "JS_HOOK", "STATE_PREFIX", "EventObserver", "_events", "addEventListener", "event", "callback", "removeEventListener", "index", "dispatchEvent", "options", "evts", "i", "len", "contains", "element", "value", "values", "JS_HOOK", "add", "msg", "INIT_FLAG", "STATE_PREFIX", "_verifyElementExists", "element", "baseClass", "msg", "_verifyClassExists", "dom", "checkDom", "setInitFlag", "contains", "add", "instantiateAll", "selector", "Constructor", "scope", "config", "elements", "insts", "inst", "i", "len", "isMobileUserAgent", "UNDEFINED", "stringEscape", "str", "stringMatch", "x", "y", "MultiselectModel", "options", "name", "config", "_options", "_name", "_max", "_optionsData", "_selectedIndices", "_filterIndices", "_lastFilterIndices", "_index", "_getOptionId", "item", "isAtMaxSelections", "_formatOptions", "list", "cleaned", "isChecked", "i", "len", "init", "toggleOption", "index", "currIndex", "_searchAggregator", "aggregate", "value", "filterIndices", "query", "acc", "getOption", "setIndex", "filterCount", "count", "getIndex", "UNDEFINED", "multiselect_model_default", "create", "tag", "parentNode", "options", "elem", "key", "val", "error_default", "closeIcon", "error_default", "BASE_CLASS", "CHECKBOX_INPUT_CLASS", "TEXT_INPUT_CLASS", "DIR_PREV", "DIR_NEXT", "KEY_RETURN", "KEY_SPACE", "KEY_ESCAPE", "KEY_UP", "KEY_DOWN", "KEY_TAB", "DEFAULT_CONFIG", "Multiselect", "element", "_dom", "checkDom", "_isBlurSkipped", "_name", "_placeholder", "_model", "_options", "_config", "_containerDom", "_selectionsDom", "_headerDom", "_searchDom", "_fieldsetDom", "_optionsDom", "_optionItemDoms", "_instance", "_filterMatches", "filteredIndices", "i", "len", "j", "_resetFilter", "_filterNoMatches", "_filterList", "filterIndices", "_evaluate", "value", "matchedIndices", "expand", "collapse", "_highlight", "direction", "index", "filteredIndex", "input", "_resetSearch", "_selectionClickHandler", "event", "target", "_selectionKeyDownHandler", "label", "_getOptionId", "option", "_createSelectedItem", "selectionsDom", "optionId", "selectionsItemDom", "create", "selectionsItemLabelDom", "_updateSelections", "optionIndex", "dataOptionSel", "_selectionsItemDom", "_changeHandler", "_bindEvents", "key", "checked", "evt", "inputs", "labelButtons", "_populateMarkup", "optionsClasses", "isChecked", "optionsItemDom", "init", "multiselectConfig", "setInitFlag", "isMobileUserAgent", "__spreadValues", "multiselect_model_default", "newDom", "getModel", "eventObserver", "EventObserver", "config", "instantiateAll"]
7
7
  }