{“version”:3,“sources”:,“names”:[“r”,“e”,“n”,“t”,“o”,“i”,“f”,“c”,“require”,“u”,“a”,“Error”,“code”,“p”,“exports”,“call”,“length”,“1”,“module”,“createMethod”,“_toggle”,“testElement”,“window”,“self”,“document”,“createElement”,“createElementNS”,“view”,“classListProp”,“protoProp”,“elemCtrProto”,“Element”,“objCtr”,“Object”,“strTrim”,“String”,“trim”,“this”,“replace”,“arrIndexOf”,“Array”,“indexOf”,“item”,“len”,“DOMEx”,“type”,“message”,“name”,“DOMException”,“checkTokenAndGetIndex”,“classList”,“token”,“test”,“ClassList”,“elem”,“trimmedClasses”,“getAttribute”,“classes”,“split”,“push”,“_updateClassName”,“setAttribute”,“toString”,“classListProto”,“classListGetter”,“contains”,“add”,“tokens”,“arguments”,“l”,“updated”,“remove”,“index”,“splice”,“toggle”,“force”,“result”,“method”,“join”,“defineProperty”,“classListPropDesc”,“get”,“enumerable”,“configurable”,“ex”,“undefined”,“number”,“__defineGetter__”,“original”,“DOMTokenList”,“prototype”,“definition”,“define”,“_typeof”,“amd”,“_listener”,“fns”,“doc”,“hack”,“documentElement”,“doScroll”,“domContentLoaded”,“loaded”,“readyState”,“addEventListener”,“removeEventListener”,“shift”,“fn”,“setTimeout”,“Boolean”,“dataset”,“aB”,“element”,“map”,“attributes”,“getter”,“value”,“setter”,“removeAttribute”,“j”,“prop”,“attribute”,“slice”,“charAt”,“toUpperCase”,“bind”,“set”,“ElementProto”,“matches”,“msMatchesSelector”,“mozMatchesSelector”,“webkitMatchesSelector”,“selector”,“elements”,“ownerDocument”,“querySelectorAll”,“closest”,“nodeType”,“parentNode”,“keyboardeventKeyPolyfill”,“polyfill”,“KeyboardEvent”,“proto”,“key”,“keys”,“which”,“keyCode”,“isArray”,“shiftKey”,“3”,“6”,“8”,“9”,“12”,“13”,“16”,“17”,“18”,“19”,“20”,“27”,“28”,“29”,“30”,“31”,“32”,“33”,“34”,“35”,“36”,“37”,“38”,“39”,“40”,“41”,“42”,“43”,“44”,“45”,“46”,“48”,“49”,“50”,“51”,“52”,“53”,“54”,“55”,“56”,“57”,“91”,“93”,“144”,“145”,“181”,“182”,“183”,“186”,“187”,“188”,“189”,“190”,“191”,“192”,“219”,“220”,“221”,“222”,“224”,“225”,“246”,“247”,“248”,“249”,“250”,“251”,“letter”,“fromCharCode”,“toLowerCase”,“now”,“root”,“Date”,“NAN”,“symbolTag”,“reTrim”,“reIsBadHex”,“reIsBinary”,“reIsOctal”,“freeParseInt”,“parseInt”,“freeGlobal”,“global”,“freeSelf”,“Function”,“objectToString”,“nativeMax”,“Math”,“max”,“nativeMin”,“min”,“isObject”,“isSymbol”,“toNumber”,“other”,“valueOf”,“isBinary”,“func”,“wait”,“options”,“lastArgs”,“lastThis”,“maxWait”,“timerId”,“lastCallTime”,“lastInvokeTime”,“leading”,“maxing”,“trailing”,“TypeError”,“invokeFunc”,“time”,“args”,“thisArg”,“apply”,“shouldInvoke”,“timeSinceLastCall”,“timerExpired”,“trailingEdge”,“debounced”,“isInvoking”,“cancel”,“clearTimeout”,“flush”,“getOwnPropertySymbols”,“hasOwnProperty”,“propIsEnumerable”,“propertyIsEnumerable”,“assign”,“test1”,“getOwnPropertyNames”,“test2”,“test3”,“forEach”,“err”,“shouldUseNative”,“target”,“source”,“from”,“symbols”,“to”,“val”,“toObject”,“s”,“delegate”,“delegateAll”,“DELEGATE_PATTERN”,“popKey”,“obj”,“events”,“props”,“listeners”,“reduce”,“memo”,“handler”,“match”,“capture”,“passive”,“listener”,“_type”,“getListeners”,“concat”,“functions”,“some”,“event”,“compose”,“selectors”,“delegates”,“behavior”,“ignore”,“keymap”,“MODIFIERS”,“Alt”,“Control”,“Ctrl”,“Shift”,“hasModifiers”,“modifier”,“getEventKey”,“_key”,“wrapped”,“currentTarget”,“RE_TRIM”,“RE_SPLIT”,“str”,“ids”,“getElementById”,“id”,“querySelector”,“el”,“getAccordionButtons”,“accordion”,“select”,“BUTTON”,“filter”,“button”,“ACCORDION”,“toggleButton”,“expanded”,“safeExpanded”,“multiselectable”,“isElementInViewport”,“CLICK”,“PREFIX”,“prefix”,“EXPANDED”,“_defineProperty”,“preventDefault”,“scrollIntoView”,“init”,“show”,“hide”,“getButtons”,“HEADER”,“EXPANDED_CLASS”,“getCharacterCountElements”,“inputEl”,“characterCountEl”,“CHARACTER_COUNT”,“INPUT”,“messageEl”,“MESSAGE”,“updateCountMessage”,“guidance”,“newMessage”,“_getCharacterCountEle”,“maxlength”,“isOverLimit”,“currentLength”,“difference”,“abs”,“characters”,“MESSAGE_INVALID_CLASS”,“innerHTML”,“validationMessage”,“setCustomValidity”,“VALIDATION_MESSAGE”,“characterCount”,“input”,“changeElementValue”,“elementToChange”,“CustomEvent”,“bubbles”,“cancelable”,“detail”,“dispatchEvent”,“getComboBoxContext”,“comboBoxEl”,“COMBO_BOX”,“selectEl”,“SELECT”,“listEl”,“LIST”,“statusEl”,“STATUS”,“focusedOptionEl”,“LIST_OPTION_FOCUSED”,“selectedOptionEl”,“LIST_OPTION_SELECTED”,“toggleListBtnEl”,“TOGGLE_LIST_BUTTON”,“clearInputBtnEl”,“CLEAR_INPUT_BUTTON”,“isPristine”,“COMBO_BOX_PRISTINE_CLASS”,“disableFiltering”,“disable”,“_getComboBoxContext”,“hidden”,“disabled”,“enhanceComboBox”,“_comboBoxEl”,“enhanced”,“selectedOption”,“selectId”,“selectLabel”,“listId”,“listIdLabel”,“assistiveHintID”,“additionalAttributes”,“defaultValue”,“placeholder”,“optionEl”,“SELECT_CLASS”,“hasAttribute”,“insertAdjacentHTML”,“INPUT_CLASS”,“CLEAR_INPUT_BUTTON_WRAPPER_CLASS”,“CLEAR_INPUT_BUTTON_CLASS”,“INPUT_BUTTON_SEPARATOR_CLASS”,“TOGGLE_LIST_BUTTON_WRAPPER_CLASS”,“TOGGLE_LIST_BUTTON_CLASS”,“LIST_CLASS”,“STATUS_CLASS”,“text”,“highlightOption”,“nextEl”,“skipFocus”,“_ref”,“preventScroll”,“_getComboBoxContext4”,“LIST_OPTION_FOCUSED_CLASS”,“optionBottom”,“offsetTop”,“offsetHeight”,“scrollTop”,“focus”,“generateDynamicRegExp”,“escapeRegExp”,“query”,“extras”,“find”,“m”,“$1”,“queryFilter”,“matcher”,“RegExp”,“displayList”,“selectedItemId”,“firstFoundId”,“_getComboBoxContext5”,“listOptionBaseId”,“inputValue”,“regex”,“optionId”,“itemToFocus”,“numOptions”,“optionHtml”,“option”,“LIST_OPTION_CLASS”,“tabindex”,“ariaSelected”,“LIST_OPTION_SELECTED_CLASS”,“noResults”,“hideList”,“_getComboBoxContext6”,“selectItem”,“listOptionEl”,“_getComboBoxContext7”,“textContent”,“resetSelection”,“_getComboBoxContext9”,“selectValue”,“handleDownFromInput”,“_getComboBoxContext12”,“nextOptionEl”,“LIST_OPTION”,“COMBO_BOX_CLASS”,“handleDownFromListOption”,“nextSibling”,“handleUpFromListOption”,“_getComboBoxContext14”,“previousSibling”,“listShown”,“comboBox”,“_behavior”,“_CLICK”,“_getComboBoxContext16”,“_getComboBoxContext15”,“clearButtonEl”,“_getComboBoxContext8”,“relatedTarget”,“_keydown”,“Escape”,“_getComboBoxContext11”,“Enter”,“_getComboBoxContext13”,“_getComboBoxContext10”,“completeSelection”,“ArrowDown”,“Down”,“ArrowUp”,“Up”,“Tab”,“Shift+Tab”,“enable”,“_getComboBoxContext2”,“keepDateWithinMonth”,“dateToCheck”,“month”,“getMonth”,“setDate”,“year”,“date”,“newDate”,“setFullYear”,“today”,“day”,“getDate”,“getFullYear”,“startOfMonth”,“lastDayOfMonth”,“addDays”,“_date”,“numDays”,“getTime”,“subDays”,“addWeeks”,“numWeeks”,“startOfWeek”,“dayOfWeek”,“getDay”,“addMonths”,“numMonths”,“dateMonth”,“setMonth”,“subMonths”,“addYears”,“numYears”,“subYears”,“setYear”,“isSameYear”,“dateA”,“dateB”,“isSameMonth”,“isSameDay”,“keepDateBetweenMinAndMax”,“minDate”,“maxDate”,“isDateWithinMinAndMax”,“isDatesYearOutsideMinOrMax”,“parseDateString”,“dateString”,“monthStr”,“dayStr”,“yearStr”,“currentYear”,“parsed”,“adjustDate”,“INTERNAL_DATE_FORMAT”,“DEFAULT_EXTERNAL_DATE_FORMAT”,“_dateString$split2”,“_slicedToArray”,“_dateString$split4”,“Number”,“isNaN”,“pow”,“lastDayOfTheMonth”,“formatDate”,“padZeros”,“dateFormat”,“listToGridHtml”,“htmlArray”,“rowSize”,“grid”,“row”,“getDatePickerContext”,“datePickerEl”,“DATE_PICKER”,“internalInputEl”,“DATE_PICKER_INTERNAL_INPUT”,“externalInputEl”,“DATE_PICKER_EXTERNAL_INPUT”,“calendarEl”,“DATE_PICKER_CALENDAR”,“toggleBtnEl”,“DATE_PICKER_BUTTON”,“DATE_PICKER_STATUS”,“firstYearChunkEl”,“CALENDAR_YEAR”,“inputDate”,“selectedDate”,“calendarDate”,“rangeDate”,“defaultDate”,“_getDatePickerContext”,“isDateInputInvalid”,“dateStringParts”,“_getDatePickerContext3”,“isInvalid”,“_dateStringParts$map2”,“checkDate”,“validateDateInput”,“setCalendarValue”,“formattedDate”,“parsedDate”,“_getDatePickerContext6”,“renderCalendar”,“_dateToDisplay”,“_getDatePickerContext7”,“todaysDate”,“dateToDisplay”,“calendarWasHidden”,“focusedDate”,“focusedMonth”,“focusedYear”,“prevMonth”,“nextMonth”,“currentFormattedDate”,“firstOfMonth”,“prevButtonsDisabled”,“nextButtonsDisabled”,“rangeConclusionDate”,“rangeStartDate”,“rangeEndDate”,“withinRangeStartDate”,“withinRangeEndDate”,“monthLabel”,“MONTH_LABELS”,“days”,“dateToRender”,“CALENDAR_DATE_CLASS”,“isDisabled”,“isSelected”,“CALENDAR_DATE_PREVIOUS_MONTH_CLASS”,“CALENDAR_DATE_CURRENT_MONTH_CLASS”,“CALENDAR_DATE_NEXT_MONTH_CLASS”,“CALENDAR_DATE_SELECTED_CLASS”,“CALENDAR_DATE_TODAY_CLASS”,“CALENDAR_DATE_RANGE_DATE_CLASS”,“CALENDAR_DATE_RANGE_DATE_START_CLASS”,“CALENDAR_DATE_RANGE_DATE_END_CLASS”,“CALENDAR_DATE_WITHIN_RANGE_CLASS”,“CALENDAR_DATE_FOCUSED_CLASS”,“DAY_OF_WEEK_LABELS”,“generateDateHtml”,“datesHtml”,“newCalendar”,“cloneNode”,“style”,“top”,“CALENDAR_DATE_PICKER_CLASS”,“CALENDAR_ROW_CLASS”,“CALENDAR_CELL_CLASS”,“CALENDAR_CELL_CENTER_ITEMS_CLASS”,“CALENDAR_PREVIOUS_YEAR_CLASS”,“CALENDAR_PREVIOUS_MONTH_CLASS”,“CALENDAR_MONTH_LABEL_CLASS”,“CALENDAR_MONTH_SELECTION_CLASS”,“CALENDAR_YEAR_SELECTION_CLASS”,“CALENDAR_NEXT_MONTH_CLASS”,“CALENDAR_NEXT_YEAR_CLASS”,“CALENDAR_TABLE_CLASS”,“CALENDAR_DAY_OF_WEEK_CLASS”,“replaceChild”,“DATE_PICKER_ACTIVE_CLASS”,“statuses”,“hideCalendar”,“_getDatePickerContext12”,“updateCalendarIfVisible”,“_getDatePickerContext15”,“displayMonthSelection”,“monthToDisplay”,“_getDatePickerContext16”,“selectedMonth”,“months”,“monthToCheck”,“CALENDAR_MONTH_CLASS”,“CALENDAR_MONTH_FOCUSED_CLASS”,“CALENDAR_MONTH_SELECTED_CLASS”,“monthsHtml”,“CALENDAR_MONTH_PICKER_CLASS”,“displayYearSelection”,“yearToDisplay”,“_getDatePickerContext18”,“selectedYear”,“yearToChunk”,“prevYearChunkDisabled”,“nextYearChunkDisabled”,“years”,“yearIndex”,“CALENDAR_YEAR_CLASS”,“CALENDAR_YEAR_FOCUSED_CLASS”,“CALENDAR_YEAR_SELECTED_CLASS”,“yearsHtml”,“CALENDAR_YEAR_PICKER_CLASS”,“CALENDAR_PREVIOUS_YEAR_CHUNK_CLASS”,“CALENDAR_NEXT_YEAR_CHUNK_CLASS”,“handleEscapeFromCalendar”,“_getDatePickerContext22”,“activeElement”,“isIosDevice”,“DATE_PICKER_CLASS”,“DATE_PICKER_WRAPPER_CLASS”,“DATE_PICKER_INITIALIZED_CLASS”,“DATE_PICKER_INTERNAL_INPUT_CLASS”,“DATE_PICKER_EXTERNAL_INPUT_CLASS”,“DATE_PICKER_BUTTON_CLASS”,“DATE_PICKER_CALENDAR_CLASS”,“DATE_PICKER_STATUS_CLASS”,“CALENDAR_DATE”,“CALENDAR_DATE_FOCUSED”,“CALENDAR_DATE_CURRENT_MONTH”,“CALENDAR_PREVIOUS_YEAR”,“CALENDAR_PREVIOUS_MONTH”,“CALENDAR_NEXT_YEAR”,“CALENDAR_NEXT_MONTH”,“CALENDAR_YEAR_SELECTION”,“CALENDAR_MONTH_SELECTION”,“CALENDAR_MONTH”,“CALENDAR_PREVIOUS_YEAR_CHUNK”,“CALENDAR_NEXT_YEAR_CHUNK”,“CALENDAR_DATE_PICKER”,“CALENDAR_MONTH_PICKER”,“CALENDAR_YEAR_PICKER”,“CALENDAR_MONTH_FOCUSED”,“CALENDAR_YEAR_FOCUSED”,“processFocusableSelectors”,“_len”,“DATE_PICKER_FOCUSABLE”,“MONTH_PICKER_FOCUSABLE”,“YEAR_PICKER_FOCUSABLE”,“adjustCalendar”,“adjustDateFn”,“_getDatePickerContext23”,“cappedDate”,“handleUpFromDate”,“handleDownFromDate”,“handleLeftFromDate”,“handleRightFromDate”,“handleHomeFromDate”,“handleEndFromDate”,“handlePageDownFromDate”,“handlePageUpFromDate”,“handleShiftPageDownFromDate”,“handleShiftPageUpFromDate”,“adjustMonthSelectionScreen”,“adjustMonthFn”,“monthEl”,“_getDatePickerContext24”,“currentDate”,“adjustedMonth”,“handleUpFromMonth”,“handleDownFromMonth”,“handleLeftFromMonth”,“handleRightFromMonth”,“handleHomeFromMonth”,“handleEndFromMonth”,“handlePageDownFromMonth”,“handlePageUpFromMonth”,“adjustYearSelectionScreen”,“adjustYearFn”,“yearEl”,“_getDatePickerContext25”,“adjustedYear”,“handleUpFromYear”,“handleDownFromYear”,“handleLeftFromYear”,“handleRightFromYear”,“handleHomeFromYear”,“handleEndFromYear”,“handlePageUpFromYear”,“handlePageDownFromYear”,“tabHandler”,“focusable”,“getFocusableContext”,“focusableElements”,“lastTabIndex”,“firstTabStop”,“lastTabStop”,“focusIndex”,“isNotFound”,“isFirstTab”,“isLastTab”,“tabAhead”,“_getFocusableContext”,“tabBack”,“_getFocusableContext2”,“datePickerTabEventHandler”,“monthPickerTabEventHandler”,“yearPickerTabEventHandler”,“datePickerEvents”,“_datePickerEvents”,“_getDatePickerContext14”,“calendarDateEl”,“_getDatePickerContext13”,“_getDatePickerContext17”,“_getDatePickerContext21”,“_buttonEl”,“nextToFocus”,“_getDatePickerContext9”,“_getDatePickerContext10”,“_getDatePickerContext8”,“_getDatePickerContext11”,“_getDatePickerContext19”,“_getDatePickerContext20”,“keydown”,“keydownKeyCode”,“Left”,“ArrowLeft”,“Right”,“ArrowRight”,“Home”,“End”,“PageDown”,“PageUp”,“Shift+PageDown”,“Shift+PageUp”,“keyMap”,“_focusout”,“_getDatePickerContext5”,“newValue”,“mousemove”,“_datePickerEvents$mou”,“dateEl”,“currentCalendarDate”,“hoverDate”,“focusMonth”,“focusYear”,“datePicker”,“calendarWrapper”,“tabIndex”,“appendChild”,“required”,“enhanceDatePicker”,“_getDatePickerContext2”,“getDateRangePickerContext”,“dateRangePickerEl”,“DATE_RANGE_PICKER”,“rangeStartEl”,“DATE_RANGE_PICKER_RANGE_START”,“rangeEndEl”,“DATE_RANGE_PICKER_RANGE_END”,“handleRangeStartUpdate”,“_getDateRangePickerCo”,“updatedDate”,“handleRangeEndUpdate”,“_getDateRangePickerCo2”,“DATE_RANGE_PICKER_CLASS”,“DATE_RANGE_PICKER_RANGE_START_CLASS”,“DATE_RANGE_PICKER_RANGE_END_CLASS”,“dateRangePicker”,“input change”,“_inputChange”,“_select2”,“rangeStart”,“rangeEnd”,“enhanceDateRangePicker”,“getFileInputContext”,“dropZoneEl”,“DROPZONE”,“_getFileInputContext”,“DISABLED_CLASS”,“makeSafeForID”,“charCodeAt”,“removeOldPreviews”,“dropTarget”,“instructions”,“filePreviews”,“PREVIEW_CLASS”,“currentPreviewHeading”,“PREVIEW_HEADING_CLASS”,“currentErrorMessage”,“ACCEPTED_FILE_MESSAGE_CLASS”,“outerHTML”,“INVALID_FILE_CLASS”,“HIDDEN_CLASS”,“node”,“removeChild”,“handleChange”,“fileInputEl”,“fileNames”,“files”,“filePreviewsHeading”,“reader”,“FileReader”,“fileName”,“onloadstart”,“imageId”,“previewImage”,“SPACER_GIF”,“GENERIC_PREVIEW_CLASS_NAME”,“LOADING_CLASS”,“onloadend”,“PDF_PREVIEW_CLASS”,“WORD_PREVIEW_CLASS”,“EXCEL_PREVIEW_CLASS”,“VIDEO_PREVIEW_CLASS”,“GENERIC_PREVIEW_CLASS”,“src”,“readAsDataURL”,“insertBefore”,“_loop”,“DROPZONE_CLASS”,“TARGET_CLASS”,“BOX_CLASS”,“INSTRUCTIONS_CLASS”,“CHOOSE_CLASS”,“DRAG_TEXT_CLASS”,“DRAG_CLASS”,“fileInput”,“acceptsMultiple”,“fileInputParent”,“box”,“_buildFileInput”,“navigator”,“userAgent”,“acceptedFilesAttr”,“acceptedFiles”,“errorMessage”,“allFilesAllowed”,“dataTransfer”,“file”,“fileType”,“includes”,“stopPropagation”,“preventInvalidFiles”,“onchange”,“_getFileInputContext2”,“lastInnerWidth”,“debounce”,“HIDDEN”,“SCOPE”,“NAV”,“COLLAPSIBLE”,“resize”,“innerWidth”,“list”,“collapseEl”,“HIDE_MAX_WIDTH”,“DEBOUNCE_RATE”,“teardown”,“banner”,“footer”,“navigation”,“password”,“search”,“skipnav”,“tooltip”,“validator”,“timePicker”,“isActive”,“body”,“ACTIVE_CLASS”,“closer”,“CLOSE_BUTTON”,“getBoundingClientRect”,“width”,“toggleNav”,“onMenuClose”,“hideActiveNavDropdown”,“navActive”,“FocusTrap”,“NAV_LINKS”,“NAV_CONTROL”,“OPENERS”,“OVERLAY”,“CLOSERS”,“TOGGLES”,“active”,“safeActive”,“focusTrap”,“update”,“closeButton”,“menuButton”,“acc”,“btn”,“trapContainer”,“toggleFormInput”,“LINK”,“lastButton”,“FORM”,“toggleSearch”,“form”,“context”,“getForm”,“once”,“encodeURI”,“outline”,“parseTimeString”,“timeStr”,“minutes”,“mins”,“hours”,“_timeStr$split$map2”,“TIME_PICKER_CLASS”,“TIME_PICKER”,“FILTER_DATASET”,“apQueryFilter”,“hourQueryFilter”,“minuteQueryFilter”,“timePickerEl”,“initialInputEl”,“minTime”,“maxTime”,“step”,“floor”,“_getTimeContext”,“minute”,“hour24”,“hour12”,“ampm”,“display”,“transformTimePicker”,“addListenerMulti”,“eventNames”,“iLen”,“showToolTip”,“tooltipBody”,“tooltipTrigger”,“position”,“wrapper”,“setPositionClass”,“setPos”,“TOOLTIP_BODY_CLASS”,“positionTop”,“marginLeft”,“adjustHorizontalCenter”,“ADJUST_WIDTH_CLASS”,“marginBottom”,“adjustToEdgeY”,“offsetForBottomMargin”,“offsetForBottomPadding”,“positionBottom”,“marginTop”,“offsetForTopMargin”,“offsetForTopPadding”,“positionRight”,“adjustToEdgeX”,“leftOffset”,“bottom”,“tooltipHeight”,“offsetForTooltipBodyHeight”,“positionLeft”,“toolTipBodyWidth”,“tooltipWidth”,“offsetWidth”,“getComputedStyle”,“getPropertyValue”,“offsetLeft”,“VISIBLE_CLASS”,“TOOLTIP”,“TOOLTIP_TRIGGER_CLASS”,“TOOLTIP_CLASS”,“tooltipID”,“tooltipContent”,“additionalClasses”,“_setUpAttributes”,“random”,“classname”,“validate”,“keyup change”,“input”,“_params”,“params”,“evt”,“createEvent”,“initCustomEvent”,“elproto”,“HTMLElement”,“factory”,“embed”,“parent”,“svg”,“use”,“fragment”,“createDocumentFragment”,“viewBox”,“clone”,“importNode”,“g”,“namespaceURI”,“childNodes”,“firstChild”,“attr”,“rawopts”,“opts”,“inIframe”,“requests”,“requestAnimationFrame”,“uses”,“getElementsByTagName”,“numberOfSvgUseElementsToBypass”,“oninterval”,“url”,“xhr”,“nodeName”,“getSVGAncestor”,“attributeName”,“srcSplit”,“XMLHttpRequest”,“open”,“send”,“_embeds”,“onreadystatechange”,“cachedDocument”,“_cachedDocument”,“implementation”,“createHTMLDocument”,“responseText”,“domain”,“_cachedTarget”,“loadreadystatechange”,“svg4everybody”,“domready”,“uswdsPresent”,“uswds”,“components”,“on”,“sequence”,“seq”,“_this”,“Behavior”,“off”,“additionalKeyBindings”,“tabEventHandler”,“Esc”,“keyMappings”,“win”,“docEl”,“rect”,“left”,“innerHeight”,“clientHeight”,“right”,“clientWidth”,“platform”,“maxTouchPoints”,“MSStream”,“selection”,“field”,“mask”,“resolveIdRefs”,“toggleFieldMask”,“PRESSED”,“SHOW_ATTR”,“pressed”,“showText”,“hideText”,“controls”,“CHECKED_CLASS”,“data”,“validationElement”,“checkList”,“entries”,“_ref2”,“startsWith”,“validatorName”,“substr”,“validatorPattern”,“validatorSelector”,“validatorCheckbox”,“checked”],“mappings”:“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”,“file”:“uswds.min.js”,“sourcesContent”:[“(function(){function r(e,n,t){function o(i,f){if(!n){if(!e){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"i
"'");throw a.code="MODULE_NOT_FOUND",a}var p=n={exports:{}};e[0].call(p.exports,function®{var n=e[1];return o(n||r)},p,p.exports,r,e,n,t)}return n.exports}for(var u="function"==typeof require&&require,i=0;i]0x[0-9a-f]
$/i;nn/** Used to detect binary string values. */nvar reIsBinary = /^0b+$/i;nn/** Used to detect octal string values. */nvar reIsOctal = /^0o+$/i;nn/** Built-in method references without a dependency on `root`. */nvar freeParseInt = parseInt;nn/** Detect free variable `global` from Node.js. */nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;nn/** Detect free variable `self`. */nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;nn/** Used as a reference to the global object. */nvar root = freeGlobal || freeSelf || Function('return this')();nn/** Used for built-in method references. */nvar objectProto = Object.prototype;nn/**n * Used to resolve then * [`toStringTag`](ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)n * of values.n */nvar objectToString = objectProto.toString;nn/* Built-in method references for those with the same name as other `lodash` methods. */nvar nativeMax = Math.max,n nativeMin = Math.min;nn/**n * Gets the timestamp of the number of milliseconds that have elapsed sincen * the Unix epoch (1 January 1970 00:00:00 UTC).n *n * @staticn * @memberOf _n * @since 2.4.0n * @category Daten * @returns {number} Returns the timestamp.n * @examplen *n * _.defer(function(stamp) {n * console.log(_.now() - stamp);n * }, _.now());n * // => Logs the number of milliseconds it took for the deferred invocation.n */nvar now = function() {n return root.Date.now();n};nn/**n * Creates a debounced function that delays invoking `func` until after `wait`n * milliseconds have elapsed since the last time the debounced function wasn * invoked. The debounced function comes with a `cancel` method to canceln * delayed `func` invocations and a `flush` method to immediately invoke them.n * Provide `options` to indicate whether `func` should be invoked on then * leading and/or trailing edge of the `wait` timeout. The `func` is invokedn * with the last arguments provided to the debounced function. Subsequentn * calls to the debounced function return the result of the last `func`n * invocation.n *n * Note: If `leading` and `trailing` options are `true`, `func` isn * invoked on the trailing edge of the timeout only if the debounced functionn * is invoked more than once during the `wait` timeout.n *n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferredn * until to the next tick, similar to `setTimeout` with a timeout of `0`.n *n * See [David Corbacho's article](css-tricks.com/debouncing-throttling-explained-examples/)n * for details over the differences between `_.debounce` and `_.throttle`.n *n * @staticn * @memberOf _n * @since 0.1.0n * @category Functionn * @param {Function} func The function to debounce.n * @param {number} [wait=0] The number of milliseconds to delay.n * @param {Object} [options={}] The options object.n * @param {boolean} [options.leading=false]n * Specify invoking on the leading edge of the timeout.n * @param {number} [options.maxWait]n * The maximum time `func` is allowed to be delayed before it's invoked.n * @param {boolean} [options.trailing=true]n * Specify invoking on the trailing edge of the timeout.n * @returns {Function} Returns the new debounced function.n * @examplen *n * // Avoid costly calculations while the window size is in flux.n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));n *n * // Invoke `sendMail` when clicked, debouncing subsequent calls.n * jQuery(element).on('click', _.debounce(sendMail, 300, {n * 'leading': true,n * 'trailing': falsen * }));n *n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });n * var source = new EventSource('/stream');n * jQuery(source).on('message', debounced);n *n * // Cancel the trailing debounced invocation.n * jQuery(window).on('popstate', debounced.cancel);n */nfunction debounce(func, wait, options) {n var lastArgs,n lastThis,n maxWait,n result,n timerId,n lastCallTime,n lastInvokeTime = 0,n leading = false,n maxing = false,n trailing = true;nn if (typeof func != 'function') {n throw new TypeError(FUNC_ERROR_TEXT);n }n wait = toNumber(wait) || 0;n if (isObject(options)) {n leading = !!options.leading;n maxing = 'maxWait' in options;n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;n trailing = 'trailing' in options ? !!options.trailing : trailing;n }nn function invokeFunc(time) {n var args = lastArgs,n thisArg = lastThis;nn lastArgs = lastThis = undefined;n lastInvokeTime = time;n result = func.apply(thisArg, args);n return result;n }nn function leadingEdge(time) {n // Reset any `maxWait` timer.n lastInvokeTime = time;n // Start the timer for the trailing edge.n timerId = setTimeout(timerExpired, wait);n // Invoke the leading edge.n return leading ? invokeFunc(time) : result;n }nn function remainingWait(time) {n var timeSinceLastCall = time - lastCallTime,n timeSinceLastInvoke = time - lastInvokeTime,n result = wait - timeSinceLastCall;nn return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;n }nn function shouldInvoke(time) {n var timeSinceLastCall = time - lastCallTime,n timeSinceLastInvoke = time - lastInvokeTime;nn // Either this is the first call, activity has stopped and we're at then // trailing edge, the system time has gone backwards and we're treatingn // it as the trailing edge, or we've hit the `maxWait` limit.n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));n }nn function timerExpired() {n var time = now();n if (shouldInvoke(time)) {n return trailingEdge(time);n }n // Restart the timer.n timerId = setTimeout(timerExpired, remainingWait(time));n }nn function trailingEdge(time) {n timerId = undefined;nn // Only invoke if we have `lastArgs` which means `func` has beenn // debounced at least once.n if (trailing && lastArgs) {n return invokeFunc(time);n }n lastArgs = lastThis = undefined;n return result;n }nn function cancel() {n if (timerId !== undefined) {n clearTimeout(timerId);n }n lastInvokeTime = 0;n lastArgs = lastCallTime = lastThis = timerId = undefined;n }nn function flush() {n return timerId === undefined ? result : trailingEdge(now());n }nn function debounced() {n var time = now(),n isInvoking = shouldInvoke(time);nn lastArgs = arguments;n lastThis = this;n lastCallTime = time;nn if (isInvoking) {n if (timerId === undefined) {n return leadingEdge(lastCallTime);n }n if (maxing) {n // Handle invocations in a tight loop.n timerId = setTimeout(timerExpired, wait);n return invokeFunc(lastCallTime);n }n }n if (timerId === undefined) {n timerId = setTimeout(timerExpired, wait);n }n return result;n }n debounced.cancel = cancel;n debounced.flush = flush;n return debounced;n}nn/**n * Checks if `value` is then * [language type](www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)n *n * @staticn * @memberOf _n * @since 0.1.0n * @category Langn * @param {*} value The value to check.n * @returns {boolean} Returns `true` if `value` is an object, else `false`.n * @examplen *n * _.isObject({});n * // => truen *n * _.isObject([1, 2, 3]);n * // => truen *n * .isObject(.noop);n * // => truen *n * _.isObject(null);n * // => falsen */nfunction isObject(value) {n var type = typeof value;n return !!value && (type == 'object' || type == 'function');n}nn/**n * Checks if `value` is object-like. A value is object-like if it's not `null`n * and has a `typeof` result of "object".n *n * @staticn * @memberOf _n * @since 4.0.0n * @category Langn * @param {*} value The value to check.n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.n * @examplen *n * _.isObjectLike({});n * // => truen *n * _.isObjectLike([1, 2, 3]);n * // => truen *n * .isObjectLike(.noop);n * // => falsen *n * _.isObjectLike(null);n * // => falsen */nfunction isObjectLike(value) {n return !!value && typeof value == 'object';n}nn/**n * Checks if `value` is classified as a `Symbol` primitive or object.n *n * @staticn * @memberOf _n * @since 4.0.0n * @category Langn * @param {*} value The value to check.n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.n * @examplen *n * _.isSymbol(Symbol.iterator);n * // => truen *n * _.isSymbol('abc');n * // => falsen */nfunction isSymbol(value) {n return typeof value == 'symbol' ||n (isObjectLike(value) && objectToString.call(value) == symbolTag);n}nn/**n * Converts `value` to a number.n *n * @staticn * @memberOf _n * @since 4.0.0n * @category Langn * @param {*} value The value to process.n * @returns {number} Returns the number.n * @examplen *n * _.toNumber(3.2);n * // => 3.2n *n * _.toNumber(Number.MIN_VALUE);n * // => 5e-324n *n * _.toNumber(Infinity);n * // => Infinityn *n * _.toNumber('3.2');n * // => 3.2n */nfunction toNumber(value) {n if (typeof value == 'number') {n return value;n }n if (isSymbol(value)) {n return NAN;n }n if (isObject(value)) {n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;n value = isObject(other) ? (other + '') : other;n }n if (typeof value != 'string') {n return value === 0 ? value : +value;n }n value = value.replace(reTrim, '');n var isBinary = reIsBinary.test(value);n return (isBinary || reIsOctal.test(value))n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)n : (reIsBadHex.test(value) ? NAN : +value);n}nnmodule.exports = debounce;n”,“/*nobject-assignn© Sindre Sorhusn@license MITn*/nn'use strict';n/* eslint-disable no-unused-vars */nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;nvar hasOwnProperty = Object.prototype.hasOwnProperty;nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;nnfunction toObject(val) {ntif (val === null || val === undefined) {nttthrow new TypeError('Object.assign cannot be called with null or undefined');nt}nntreturn Object(val);n}nnfunction shouldUseNative() {nttry {nttif (!Object.assign) {ntttreturn false;ntt}nntt// Detect buggy property enumeration order in older V8 versions.nntt// bugs.chromium.org/p/v8/issues/detail?id=4118nttvar test1 = new String('abc'); // eslint-disable-line no-new-wrappersntttest1 = 'de';nttif (Object.getOwnPropertyNames(test1) === '5') {ntttreturn false;ntt}nntt// bugs.chromium.org/p/v8/issues/detail?id=3056nttvar test2 = {};nttfor (var i = 0; i < 10; i++) {nttttest2['_' + String.fromCharCode(i)] = i;ntt}nttvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {ntttreturn test2;ntt});nttif (order2.join('') !== '0123456789') {ntttreturn false;ntt}nntt// bugs.chromium.org/p/v8/issues/detail?id=3056nttvar test3 = {};ntt'abcdefghijklmnopqrst'.split('').forEach(function (letter) {nttttest3 = letter;ntt});nttif (Object.keys(Object.assign({}, test3)).join('') !==ntttt'abcdefghijklmnopqrst') {ntttreturn false;ntt}nnttreturn true;nt} catch (err) {ntt// We don't expect any of the above to throw, but better to be safe.nttreturn false;nt}n}nnmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {ntvar from;ntvar to = toObject(target);ntvar symbols;nntfor (var s = 1; s < arguments.length; s++) {nttfrom = Object(arguments);nnttfor (var key in from) {ntttif (hasOwnProperty.call(from, key)) {nttttto = from;nttt}ntt}nnttif (getOwnPropertySymbols) {ntttsymbols = getOwnPropertySymbols(from);ntttfor (var i = 0; i < symbols.length; i++) {nttttif (propIsEnumerable.call(from, symbols)) {ntttttto[symbols] = from[symbols];ntttt}nttt}ntt}nt}nntreturn to;n};n”,“const assign = require('object-assign');nconst delegate = require('../delegate');nconst delegateAll = require('../delegateAll');nnconst DELEGATE_PATTERN = /^(.+):delegate\((.+)\)$/;nconst SPACE = ' ';nnconst getListeners = function(type, handler) {n var match = type.match(DELEGATE_PATTERN);n var selector;n if (match) {n type = match;n selector = match;n }nn var options;n if (typeof handler === 'object') {n options = {n capture: popKey(handler, 'capture'),n passive: popKey(handler, 'passive')n };n }nn var listener = {n selector: selector,n delegate: (typeof handler === 'object')n ? delegateAll(handler)n : selectorn ? delegate(selector, handler)n : handler,n options: optionsn };nn if (type.indexOf(SPACE) > -1) {n return type.split(SPACE).map(function(_type) {n return assign({type: _type}, listener);n });n } else {n listener.type = type;n return [listener];n }n};nnvar popKey = function(obj, key) {n var value = obj;n delete obj;n return value;n};nnmodule.exports = function behavior(events, props) {n const listeners = Object.keys(events)n .reduce(function(memo, type) {n var listeners = getListeners(type, events);n return memo.concat(listeners);n }, []);nn return assign({n add: function addBehavior(element) {n listeners.forEach(function(listener) {n element.addEventListener(n listener.type,n listener.delegate,n listener.optionsn );n });n },n remove: function removeBehavior(element) {n listeners.forEach(function(listener) {n element.removeEventListener(n listener.type,n listener.delegate,n listener.optionsn );n });n }n }, props);n};n”,“module.exports = function compose(functions) {n return function(e) {n return functions.some(function(fn) {n return fn.call(this, e) === false;n }, this);n };n};n”,“// polyfill Element.prototype.closestnrequire('element-closest');nnmodule.exports = function delegate(selector, fn) {n return function delegation(event) {n var target = event.target.closest(selector);n if (target) {n return fn.call(target, event);n }n }n};n”,“const delegate = require('../delegate');nconst compose = require('../compose');nnconst SPLAT = '*';nnmodule.exports = function delegateAll(selectors) {n const keys = Object.keys(selectors)nn // XXX optimization: if there is only one handler and it applies ton // all elements (the "*" CSS selector), then just return thatn // handlern if (keys.length === 1 && keys === SPLAT) {n return selectors;n }nn const delegates = keys.reduce(function(memo, selector) {n memo.push(delegate(selector, selectors));n return memo;n }, []);n return compose(delegates);n};n”,“module.exports = function ignore(element, fn) {n return function ignorance(e) {n if (element !== e.target && !element.contains(e.target)) {n return fn.call(this, e);n }n };n};n”,“module.exports = {n behavior: require('./behavior'),n delegate: require('./delegate'),n delegateAll: require('./delegateAll'),n ignore: require('./ignore'),n keymap: require('./keymap'),n};n”,“require('keyboardevent-key-polyfill');nn// these are the only relevant modifiers supported on all platforms,n// according to MDN:n// <event[MODIFIERS] === true) {n key = [modifier, key].join(MODIFIER_SEPARATOR);n }n }n }n return key;n};nnmodule.exports = function keymap(keys) {n const hasModifiers = Object.keys(keys).some(function(key) {n return key.indexOf(MODIFIER_SEPARATOR) > -1;n });n return function(event) {n var key = getEventKey(event, hasModifiers);n return [key, key.toLowerCase()]n .reduce(function(result, _key) {n if (_key in keys) {n result = keys.call(this, event);n }n return result;n }, undefined);n };n};nnmodule.exports.MODIFIERS = MODIFIERS;n“,”module.exports = function once(listener, options) {n var wrapped = function wrappedOnce(e) {n e.currentTarget.removeEventListener(e.type, wrapped, options);n return listener.call(this, e);n };n return wrapped;n};nn“,”'use strict';nnvar RE_TRIM = /(^\s+)|(\s+$)/g;nvar RE_SPLIT = /\s+/;nnvar trim = String.prototype.trimn ? function(str) { return str.trim(); }n : function(str) { return str.replace(RE_TRIM, ''); };nnvar queryById = function(id) {n return this.querySelector('[id="' + id.replace(/"/g, '\\"') + '"]');n};nnmodule.exports = function resolveIds(ids, doc) {n if (typeof ids !== 'string') {n throw new Error('Expected a string but got ' + (typeof ids));n }nn if (!doc) {n doc = window.document;n }nn var getElementById = doc.getElementByIdn ? doc.getElementById.bind(doc)n : queryById.bind(doc);nn ids = trim(ids).split(RE_SPLIT);nn // XXX we can short-circuit here because trimming and splitting an // string of just whitespace produces an array containing a single,n // empty stringn if (ids.length === 1 && ids === '') {n return [];n }nn return idsn .map(function(id) {n var el = getElementById(id);n if (!el) {n throw new Error('no element with id: "' + id + '"');n }n return el;n });n};n“,”const select = require("../utils/select");nconst behavior = require("../utils/behavior");nconst toggle = require("../utils/toggle");nconst isElementInViewport = require("../utils/is-in-viewport");nconst { CLICK } = require("../events");nconst { prefix: PREFIX } = require("../config");nnconst ACCORDION = `.${PREFIX}-accordion, .${PREFIX}-accordion–bordered`;nconst BUTTON = `.${PREFIX}-accordion__button`;nconst EXPANDED = "aria-expanded";nconst MULTISELECTABLE = "aria-multiselectable";nn/**n * Get an Array of button elements belonging directly to the givenn * accordion element.n * @param {HTMLElement} accordionn * @return {array<HTMLButtonElement>}n */nconst getAccordionButtons = (accordion) => {n const buttons = select(BUTTON, accordion);nn return buttons.filter((button) => button.closest(ACCORDION) === accordion);n};nn/**n * Toggle a button's "pressed" state, optionally providing a targetn * state.n *n * @param {HTMLButtonElement} buttonn * @param {boolean?} expanded If no state is provided, the currentn * state will be toggled (from false to true, and vice-versa).n * @return {boolean} the resulting staten */nconst toggleButton = (button, expanded) => {n const accordion = button.closest(ACCORDION);n let safeExpanded = expanded;nn if (!accordion) {n throw new Error(`${BUTTON} is missing outer ${ACCORDION}`);n }nn safeExpanded = toggle(button, expanded);nn // XXX multiselectable is opt-in, to preserve legacy behaviorn const multiselectable = accordion.getAttribute(MULTISELECTABLE) === "true";nn if (safeExpanded && !multiselectable) {n getAccordionButtons(accordion).forEach((other) => {n if (other !== button) {n toggle(other, false);n }n });n }n};nn/**n * @param {HTMLButtonElement} buttonn * @return {boolean} truen */nconst showButton = (button) => toggleButton(button, true);nn/**n * @param {HTMLButtonElement} buttonn * @return {boolean} falsen */nconst hideButton = (button) => toggleButton(button, false);nnconst accordion = behavior(n {n [CLICK]: {n [BUTTON](event) {n event.preventDefault();nn toggleButton(this);nn if (this.getAttribute(EXPANDED) === "true") {n // We were just expanded, but if another accordion was also justn // collapsed, we may no longer be in the viewport. This ensuresn // that we are still visible, so the user isn't confused.n if (!isElementInViewport(this)) this.scrollIntoView();n }n },n },n },n {n init(root) {n select(BUTTON, root).forEach((button) => {n const expanded = button.getAttribute(EXPANDED) === "true";n toggleButton(button, expanded);n });n },n ACCORDION,n BUTTON,n show: showButton,n hide: hideButton,n toggle: toggleButton,n getButtons: getAccordionButtons,n }n);nnmodule.exports = accordion;n“,”const behavior = require("../utils/behavior");nconst { CLICK } = require("../events");nconst { prefix: PREFIX } = require("../config");nnconst HEADER = `.${PREFIX}-banner__header`;nconst EXPANDED_CLASS = `${PREFIX}-banner__header–expanded`;nnconst toggleBanner = function toggleEl(event) {n event.preventDefault();n this.closest(HEADER).classList.toggle(EXPANDED_CLASS);n};nnmodule.exports = behavior({n [CLICK]: {n [`${HEADER} [aria-controls]`]: toggleBanner,n },n});n“,”const select = require("../utils/select");nconst behavior = require("../utils/behavior");nconst { prefix: PREFIX } = require("../config");nnconst CHARACTER_COUNT = `.${PREFIX}-character-count`;nconst INPUT = `.${PREFIX}-character-count__field`;nconst MESSAGE = `.${PREFIX}-character-count__message`;nconst VALIDATION_MESSAGE = "The content is too long.";nconst MESSAGE_INVALID_CLASS = `${PREFIX}-character-count__message–invalid`;nn/**n * The elements within the character count.n * @typedef {Object} CharacterCountElementsn * @property {HTMLDivElement} characterCountEln * @property {HTMLSpanElement} messageEln */nn/**n * Returns the root and message elementn * for an character count inputn *n * @param {HTMLInputElement|HTMLTextAreaElement} inputEl The character count input elementn * @returns {CharacterCountElements} elements The root and message element.n */nconst getCharacterCountElements = (inputEl) => {n const characterCountEl = inputEl.closest(CHARACTER_COUNT);nn if (!characterCountEl) {n throw new Error(`${INPUT} is missing outer ${CHARACTER_COUNT}`);n }nn const messageEl = characterCountEl.querySelector(MESSAGE);nn if (!messageEl) {n throw new Error(`${CHARACTER_COUNT} is missing inner ${MESSAGE}`);n }nn return { characterCountEl, messageEl };n};nn/**n * Update the character count componentn *n * @param {HTMLInputElement|HTMLTextAreaElement} inputEl The character count input elementn */nconst updateCountMessage = (inputEl) => {n const { characterCountEl, messageEl } = getCharacterCountElements(inputEl);nn const maxlength = parseInt(n characterCountEl.getAttribute("data-maxlength"),n 10n );nn if (!maxlength) return;nn let newMessage = "";n const currentLength = inputEl.value.length;n const isOverLimit = currentLength && currentLength > maxlength;nn if (currentLength === 0) {n newMessage = `${maxlength} characters allowed`;n } else {n const difference = Math.abs(maxlength - currentLength);n const characters = `character${difference === 1 ? "" : "s"}`;n const guidance = isOverLimit ? "over limit" : "left";nn newMessage = `${difference} ${characters} ${guidance}`;n }nn messageEl.classList.toggle(MESSAGE_INVALID_CLASS, isOverLimit);n messageEl.innerHTML = newMessage;nn if (isOverLimit && !inputEl.validationMessage) {n inputEl.setCustomValidity(VALIDATION_MESSAGE);n }nn if (!isOverLimit && inputEl.validationMessage === VALIDATION_MESSAGE) {n inputEl.setCustomValidity("");n }n};nn/**n * Setup the character count componentn *n * @param {HTMLInputElement|HTMLTextAreaElement} inputEl The character count input elementn */nconst setupAttributes = (inputEl) => {n const { characterCountEl } = getCharacterCountElements(inputEl);nn const maxlength = inputEl.getAttribute("maxlength");nn if (!maxlength) return;nn inputEl.removeAttribute("maxlength");n characterCountEl.setAttribute("data-maxlength", maxlength);n};nnconst characterCount = behavior(n {n input: {n [INPUT]() {n updateCountMessage(this);n },n },n },n {n init(root) {n select(INPUT, root).forEach((input) => {n setupAttributes(input);n updateCountMessage(input);n });n },n MESSAGE_INVALID_CLASS,n VALIDATION_MESSAGE,n }n);nnmodule.exports = characterCount;n“,”const keymap = require("receptor/keymap");nconst select = require("../utils/select");nconst behavior = require("../utils/behavior");nconst { prefix: PREFIX } = require("../config");nconst { CLICK } = require("../events");nnconst COMBO_BOX_CLASS = `${PREFIX}-combo-box`;nconst COMBO_BOX_PRISTINE_CLASS = `${COMBO_BOX_CLASS}–pristine`;nconst SELECT_CLASS = `${COMBO_BOX_CLASS}__select`;nconst INPUT_CLASS = `${COMBO_BOX_CLASS}__input`;nconst CLEAR_INPUT_BUTTON_CLASS = `${COMBO_BOX_CLASS}__clear-input`;nconst CLEAR_INPUT_BUTTON_WRAPPER_CLASS = `${CLEAR_INPUT_BUTTON_CLASS}__wrapper`;nconst INPUT_BUTTON_SEPARATOR_CLASS = `${COMBO_BOX_CLASS}__input-button-separator`;nconst TOGGLE_LIST_BUTTON_CLASS = `${COMBO_BOX_CLASS}__toggle-list`;nconst TOGGLE_LIST_BUTTON_WRAPPER_CLASS = `${TOGGLE_LIST_BUTTON_CLASS}__wrapper`;nconst LIST_CLASS = `${COMBO_BOX_CLASS}__list`;nconst LIST_OPTION_CLASS = `${COMBO_BOX_CLASS}__list-option`;nconst LIST_OPTION_FOCUSED_CLASS = `${LIST_OPTION_CLASS}–focused`;nconst LIST_OPTION_SELECTED_CLASS = `${LIST_OPTION_CLASS}–selected`;nconst STATUS_CLASS = `${COMBO_BOX_CLASS}__status`;nnconst COMBO_BOX = `.${COMBO_BOX_CLASS}`;nconst SELECT = `.${SELECT_CLASS}`;nconst INPUT = `.${INPUT_CLASS}`;nconst CLEAR_INPUT_BUTTON = `.${CLEAR_INPUT_BUTTON_CLASS}`;nconst TOGGLE_LIST_BUTTON = `.${TOGGLE_LIST_BUTTON_CLASS}`;nconst LIST = `.${LIST_CLASS}`;nconst LIST_OPTION = `.${LIST_OPTION_CLASS}`;nconst LIST_OPTION_FOCUSED = `.${LIST_OPTION_FOCUSED_CLASS}`;nconst LIST_OPTION_SELECTED = `.${LIST_OPTION_SELECTED_CLASS}`;nconst STATUS = `.${STATUS_CLASS}`;nnconst DEFAULT_FILTER = ".*{{query}}.*";nnconst noop = () => {};nn/**n * set the value of the element and dispatch a change eventn *n * @param {HTMLInputElement|HTMLSelectElement} el The element to updaten * @param {string} value The new value of the elementn */nconst changeElementValue = (el, value = "") => {n const elementToChange = el;n elementToChange.value = value;nn const event = new CustomEvent("change", {n bubbles: true,n cancelable: true,n detail: { value },n });n elementToChange.dispatchEvent(event);n};nn/**n * The elements within the combo box.n * @typedef {Object} ComboBoxContextn * @property {HTMLElement} comboBoxEln * @property {HTMLSelectElement} selectEln * @property {HTMLInputElement} inputEln * @property {HTMLUListElement} listEln * @property {HTMLDivElement} statusEln * @property {HTMLLIElement} focusedOptionEln * @property {HTMLLIElement} selectedOptionEln * @property {HTMLButtonElement} toggleListBtnEln * @property {HTMLButtonElement} clearInputBtnEln * @property {boolean} isPristinen * @property {boolean} disableFilteringn */nn/**n * Get an object of elements belonging directly to the givenn * combo box component.n *n * @param {HTMLElement} el the element within the combo boxn * @returns {ComboBoxContext} elementsn */nconst getComboBoxContext = (el) => {n const comboBoxEl = el.closest(COMBO_BOX);nn if (!comboBoxEl) {n throw new Error(`Element is missing outer ${COMBO_BOX}`);n }nn const selectEl = comboBoxEl.querySelector(SELECT);n const inputEl = comboBoxEl.querySelector(INPUT);n const listEl = comboBoxEl.querySelector(LIST);n const statusEl = comboBoxEl.querySelector(STATUS);n const focusedOptionEl = comboBoxEl.querySelector(LIST_OPTION_FOCUSED);n const selectedOptionEl = comboBoxEl.querySelector(LIST_OPTION_SELECTED);n const toggleListBtnEl = comboBoxEl.querySelector(TOGGLE_LIST_BUTTON);n const clearInputBtnEl = comboBoxEl.querySelector(CLEAR_INPUT_BUTTON);nn const isPristine = comboBoxEl.classList.contains(COMBO_BOX_PRISTINE_CLASS);n const disableFiltering = comboBoxEl.dataset.disableFiltering === "true";nn return {n comboBoxEl,n selectEl,n inputEl,n listEl,n statusEl,n focusedOptionEl,n selectedOptionEl,n toggleListBtnEl,n clearInputBtnEl,n isPristine,n disableFiltering,n };n};nn/**n * Disable the combo-box componentn *n * @param {HTMLInputElement} el An element within the combo box componentn */nconst disable = (el) => {n const { inputEl, toggleListBtnEl, clearInputBtnEl } = getComboBoxContext(el);nn clearInputBtnEl.hidden = true;n clearInputBtnEl.disabled = true;n toggleListBtnEl.disabled = true;n inputEl.disabled = true;n};nn/**n * Enable the combo-box componentn *n * @param {HTMLInputElement} el An element within the combo box componentn */nconst enable = (el) => {n const { inputEl, toggleListBtnEl, clearInputBtnEl } = getComboBoxContext(el);nn clearInputBtnEl.hidden = false;n clearInputBtnEl.disabled = false;n toggleListBtnEl.disabled = false;n inputEl.disabled = false;n};nn/**n * Enhance a select element into a combo box component.n *n * @param {HTMLElement} _comboBoxEl The initial element of the combo box componentn */nconst enhanceComboBox = (_comboBoxEl) => {n const comboBoxEl = _comboBoxEl.closest(COMBO_BOX);nn if (comboBoxEl.dataset.enhanced) return;nn const selectEl = comboBoxEl.querySelector("select");nn if (!selectEl) {n throw new Error(`${COMBO_BOX} is missing inner select`);n }nn const selectId = selectEl.id;n const selectLabel = document.querySelector(`label`);n const listId = `${selectId}–list`;n const listIdLabel = `${selectId}-label`;n const assistiveHintID = `${selectId}–assistiveHint`;n const additionalAttributes = [];n const defaultValue = comboBoxEl.dataset.defaultValue;n const placeholder = comboBoxEl.dataset.placeholder;n let selectedOption;nn if (placeholder) {n additionalAttributes.push(`placeholder="${placeholder}"`);n }nn if (defaultValue) {n for (let i = 0, len = selectEl.options.length; i < len; i += 1) {n const optionEl = selectEl.options;nn if (optionEl.value === defaultValue) {n selectedOption = optionEl;n break;n }n }n }nn /**n * Throw error if combobox is missing a label or label is missingn * `for` attribute. Otherwise, set the ID to match the <ul> aria-labelledbyn */n if (!selectLabel || !selectLabel.matches(`label`)) {n throw new Error(n `${COMBO_BOX} for ${selectId} is either missing a label or a "for" attribute`n );n } else {n selectLabel.setAttribute("id", listIdLabel);n }nn selectLabel.setAttribute("id", listIdLabel);n selectEl.setAttribute("aria-hidden", "true");n selectEl.setAttribute("tabindex", "-1");n selectEl.classList.add("usa-sr-only", SELECT_CLASS);n selectEl.id = "";n selectEl.value = "";nn ["required", "aria-label", "aria-labelledby"].forEach((name) => {n if (selectEl.hasAttribute(name)) {n const value = selectEl.getAttribute(name);n additionalAttributes.push(`${name}="${value}"`);n selectEl.removeAttribute(name);n }n });nn comboBoxEl.insertAdjacentHTML(n "beforeend",n [n `<inputn aria-owns="${listId}"n aria-autocomplete="list"n aria-describedby="${assistiveHintID}"n aria-expanded="false"n autocapitalize="off"n autocomplete="off"n id="${selectId}"n class="${INPUT_CLASS}"n type="text"n role="combobox"n ${additionalAttributes.join(" ")}n >`,n `<span class="${CLEAR_INPUT_BUTTON_WRAPPER_CLASS}" tabindex="-1">n <button type="button" class="${CLEAR_INPUT_BUTTON_CLASS}" aria-label="Clear the select contents"> </button>n </span>`,n `<span class="${INPUT_BUTTON_SEPARATOR_CLASS}"> </span>`,n `<span class="${TOGGLE_LIST_BUTTON_WRAPPER_CLASS}" tabindex="-1">n <button type="button" tabindex="-1" class="${TOGGLE_LIST_BUTTON_CLASS}" aria-label="Toggle the dropdown list"> </button>n </span>`,n `<uln tabindex="-1"n id="${listId}"n class="${LIST_CLASS}"n role="listbox"n aria-labelledby="${listIdLabel}"n hidden>n </ul>`,n `<div class="${STATUS_CLASS} usa-sr-only" role="status"></div>`,n `<span id="${assistiveHintID}" class="usa-sr-only">n When autocomplete results are available use up and down arrows to review and enter to select.n Touch device users, explore by touch or with swipe gestures.n </span>`,n ].join("")n );nn if (selectedOption) {n const { inputEl } = getComboBoxContext(comboBoxEl);n changeElementValue(selectEl, selectedOption.value);n changeElementValue(inputEl, selectedOption.text);n comboBoxEl.classList.add(COMBO_BOX_PRISTINE_CLASS);n }nn if (selectEl.disabled) {n disable(comboBoxEl);n selectEl.disabled = false;n }nn comboBoxEl.dataset.enhanced = "true";n};nn/**n * Manage the focused element within the list options whenn * navigating via keyboard.n *n * @param {HTMLElement} el An anchor element within the combo box componentn * @param {HTMLElement} nextEl An element within the combo box componentn * @param {Object} options optionsn * @param {boolean} options.skipFocus skip focus of highlighted itemn * @param {boolean} options.preventScroll should skip procedure to scroll to elementn */nconst highlightOption = (el, nextEl, { skipFocus, preventScroll } = {}) => {n const { inputEl, listEl, focusedOptionEl } = getComboBoxContext(el);nn if (focusedOptionEl) {n focusedOptionEl.classList.remove(LIST_OPTION_FOCUSED_CLASS);n focusedOptionEl.setAttribute("tabIndex", "-1");n }nn if (nextEl) {n inputEl.setAttribute("aria-activedescendant", nextEl.id);n nextEl.setAttribute("tabIndex", "0");n nextEl.classList.add(LIST_OPTION_FOCUSED_CLASS);nn if (!preventScroll) {n const optionBottom = nextEl.offsetTop + nextEl.offsetHeight;n const currentBottom = listEl.scrollTop + listEl.offsetHeight;nn if (optionBottom > currentBottom) {n listEl.scrollTop = optionBottom - listEl.offsetHeight;n }nn if (nextEl.offsetTop < listEl.scrollTop) {n listEl.scrollTop = nextEl.offsetTop;n }n }nn if (!skipFocus) {n nextEl.focus({ preventScroll });n }n } else {n inputEl.setAttribute("aria-activedescendant", "");n inputEl.focus();n }n};nn/**n * Generate a dynamic regular expression based off of a replaceable and possibly filtered value.n *n * @param {string} el An element within the combo box componentn * @param {string} query The value to use in the regular expressionn * @param {object} extras An object of regular expressions to replace and filter the queryn */nconst generateDynamicRegExp = (filter, query = "", extras = {}) => {n const escapeRegExp = (text) => {n return text.replace(/[-{}()*+?.,\\^$|#\s]/g, "\\$&");n };nn let find = filter.replace(/{{(.*?)}}/g, (m, $1) => {n const key = $1.trim();n const queryFilter = extras;n if (key !== "query" && queryFilter) {n const matcher = new RegExp(queryFilter, "i");n const matches = query.match(matcher);nn if (matches) {n return escapeRegExp(matches);n }nn return "";n }n return escapeRegExp(query);n });nn find = "^(?:" + find + ")$";nn return new RegExp(find, "i");n};nn/**n * Display the option list of a combo box component.n *n * @param {HTMLElement} el An element within the combo box componentn */nconst displayList = (el) => {n const {n comboBoxEl,n selectEl,n inputEl,n listEl,n statusEl,n isPristine,n disableFiltering,n } = getComboBoxContext(el);n let selectedItemId;n let firstFoundId;nn const listOptionBaseId = `${listEl.id}–option-`;nn const inputValue = (inputEl.value || "").toLowerCase();n const filter = comboBoxEl.dataset.filter || DEFAULT_FILTER;n const regex = generateDynamicRegExp(filter, inputValue, comboBoxEl.dataset);nn const options = [];n for (let i = 0, len = selectEl.options.length; i < len; i += 1) {n const optionEl = selectEl.options;n const optionId = `${listOptionBaseId}${options.length}`;nn if (n optionEl.value &&n (disableFiltering ||n isPristine ||n !inputValue ||n regex.test(optionEl.text))n ) {n if (selectEl.value && optionEl.value === selectEl.value) {n selectedItemId = optionId;n }nn if (disableFiltering && !firstFoundId && regex.test(optionEl.text)) {n firstFoundId = optionId;n }nn options.push(optionEl);n }n }nn const numOptions = options.length;n const optionHtml = optionsn .map((option, index) => {n const optionId = `${listOptionBaseId}${index}`;n const classes = [LIST_OPTION_CLASS];n let tabindex = "-1";n let ariaSelected = "false";nn if (optionId === selectedItemId) {n classes.push(LIST_OPTION_SELECTED_CLASS, LIST_OPTION_FOCUSED_CLASS);n tabindex = "0";n ariaSelected = "true";n }nn if (!selectedItemId && index === 0) {n classes.push(LIST_OPTION_FOCUSED_CLASS);n tabindex = "0";n }nn return `<lin aria-selected="false"n aria-setsize="${options.length}"n aria-posinset="${index + 1}"n aria-selected="${ariaSelected}"n id="${optionId}"n class="${classes.join(" ")}"n tabindex="${tabindex}"n role="option"n data-value="${option.value}"n >${option.text}</li>`;n })n .join("");nn const noResults = `<li class="${LIST_OPTION_CLASS}–no-results">No results found</li>`;nn listEl.hidden = false;n listEl.innerHTML = numOptions ? optionHtml : noResults;nn inputEl.setAttribute("aria-expanded", "true");nn statusEl.innerHTML = numOptionsn ? `${numOptions} result${numOptions > 1 ? "s" : ""} available.`n : "No results.";nn let itemToFocus;nn if (isPristine && selectedItemId) {n itemToFocus = listEl.querySelector("#" + selectedItemId);n } else if (disableFiltering && firstFoundId) {n itemToFocus = listEl.querySelector("#" + firstFoundId);n }nn if (itemToFocus) {n highlightOption(listEl, itemToFocus, {n skipFocus: true,n });n }n};nn/**n * Hide the option list of a combo box component.n *n * @param {HTMLElement} el An element within the combo box componentn */nconst hideList = (el) => {n const { inputEl, listEl, statusEl, focusedOptionEl } = getComboBoxContext(el);nn statusEl.innerHTML = "";nn inputEl.setAttribute("aria-expanded", "false");n inputEl.setAttribute("aria-activedescendant", "");nn if (focusedOptionEl) {n focusedOptionEl.classList.remove(LIST_OPTION_FOCUSED_CLASS);n }nn listEl.scrollTop = 0;n listEl.hidden = true;n};nn/**n * Select an option list of the combo box component.n *n * @param {HTMLElement} listOptionEl The list option being selectedn */nconst selectItem = (listOptionEl) => {n const { comboBoxEl, selectEl, inputEl } = getComboBoxContext(listOptionEl);nn changeElementValue(selectEl, listOptionEl.dataset.value);n changeElementValue(inputEl, listOptionEl.textContent);n comboBoxEl.classList.add(COMBO_BOX_PRISTINE_CLASS);n hideList(comboBoxEl);n inputEl.focus();n};nn/**n * Clear the input of the combo boxn *n * @param {HTMLButtonElement} clearButtonEl The clear input buttonn */nconst clearInput = (clearButtonEl) => {n const { comboBoxEl, listEl, selectEl, inputEl } = getComboBoxContext(n clearButtonEln );n const listShown = !listEl.hidden;nn if (selectEl.value) changeElementValue(selectEl);n if (inputEl.value) changeElementValue(inputEl);n comboBoxEl.classList.remove(COMBO_BOX_PRISTINE_CLASS);nn if (listShown) displayList(comboBoxEl);n inputEl.focus();n};nn/**n * Reset the select based off of currently set select valuen *n * @param {HTMLElement} el An element within the combo box componentn */nconst resetSelection = (el) => {n const { comboBoxEl, selectEl, inputEl } = getComboBoxContext(el);nn const selectValue = selectEl.value;n const inputValue = (inputEl.value || "").toLowerCase();nn if (selectValue) {n for (let i = 0, len = selectEl.options.length; i < len; i += 1) {n const optionEl = selectEl.options;n if (optionEl.value === selectValue) {n if (inputValue !== optionEl.text) {n changeElementValue(inputEl, optionEl.text);n }n comboBoxEl.classList.add(COMBO_BOX_PRISTINE_CLASS);n return;n }n }n }nn if (inputValue) {n changeElementValue(inputEl);n }n};nn/**n * Select an option list of the combo box component based off ofn * having a current focused list option orn * having test that completely matches a list option.n * Otherwise it clears the input and select.n *n * @param {HTMLElement} el An element within the combo box componentn */nconst completeSelection = (el) => {n const { comboBoxEl, selectEl, inputEl, statusEl } = getComboBoxContext(el);nn statusEl.textContent = "";nn const inputValue = (inputEl.value || "").toLowerCase();nn if (inputValue) {n for (let i = 0, len = selectEl.options.length; i < len; i += 1) {n const optionEl = selectEl.options;n if (optionEl.text.toLowerCase() === inputValue) {n changeElementValue(selectEl, optionEl.value);n changeElementValue(inputEl, optionEl.text);n comboBoxEl.classList.add(COMBO_BOX_PRISTINE_CLASS);n return;n }n }n }nn resetSelection(comboBoxEl);n};nn/**n * Handle the escape event within the combo box component.n *n * @param {KeyboardEvent} event An event within the combo box componentn */nconst handleEscape = (event) => {n const { comboBoxEl, inputEl } = getComboBoxContext(event.target);nn hideList(comboBoxEl);n resetSelection(comboBoxEl);n inputEl.focus();n};nn/**n * Handle the down event within the combo box component.n *n * @param {KeyboardEvent} event An event within the combo box componentn */nconst handleDownFromInput = (event) => {n const { comboBoxEl, listEl } = getComboBoxContext(event.target);nn if (listEl.hidden) {n displayList(comboBoxEl);n }nn let nextOptionEl =n listEl.querySelector(LIST_OPTION_FOCUSED) ||n listEl.querySelector(LIST_OPTION);nn if (nextOptionEl) {n highlightOption(comboBoxEl, nextOptionEl);n }nn event.preventDefault();n};nn/**n * Handle the enter event from an input element within the combo box component.n *n * @param {KeyboardEvent} event An event within the combo box componentn */nconst handleEnterFromInput = (event) => {n const { comboBoxEl, listEl } = getComboBoxContext(event.target);n const listShown = !listEl.hidden;nn completeSelection(comboBoxEl);nn if (listShown) {n hideList(comboBoxEl);n }nn event.preventDefault();n};nn/**n * Handle the down event within the combo box component.n *n * @param {KeyboardEvent} event An event within the combo box componentn */nconst handleDownFromListOption = (event) => {n const focusedOptionEl = event.target;n const nextOptionEl = focusedOptionEl.nextSibling;nn if (nextOptionEl) {n highlightOption(focusedOptionEl, nextOptionEl);n }nn event.preventDefault();n};nn/**n * Handle the tab event from an list option element within the combo box component.n *n * @param {KeyboardEvent} event An event within the combo box componentn */nconst handleTabFromListOption = (event) => {n selectItem(event.target);n event.preventDefault();n};nn/**n * Handle the enter event from list option within the combo box component.n *n * @param {KeyboardEvent} event An event within the combo box componentn */nconst handleEnterFromListOption = (event) => {n selectItem(event.target);n event.preventDefault();n};nn/**n * Handle the up event from list option within the combo box component.n *n * @param {KeyboardEvent} event An event within the combo box componentn */nconst handleUpFromListOption = (event) => {n const { comboBoxEl, listEl, focusedOptionEl } = getComboBoxContext(n event.targetn );n const nextOptionEl = focusedOptionEl && focusedOptionEl.previousSibling;n const listShown = !listEl.hidden;nn highlightOption(comboBoxEl, nextOptionEl);nn if (listShown) {n event.preventDefault();n }nn if (!nextOptionEl) {n hideList(comboBoxEl);n }n};nn/**n * Select list option on the mousemove event.n *n * @param {MouseEvent} event The mousemove eventn * @param {HTMLLIElement} listOptionEl An element within the combo box componentn */nconst handleMousemove = (listOptionEl) => {n const isCurrentlyFocused = listOptionEl.classList.contains(n LIST_OPTION_FOCUSED_CLASSn );nn if (isCurrentlyFocused) return;nn highlightOption(listOptionEl, listOptionEl, {n preventScroll: true,n });n};nn/**n * Toggle the list when the button is clickedn *n * @param {HTMLElement} el An element within the combo box componentn */nconst toggleList = (el) => {n const { comboBoxEl, listEl, inputEl } = getComboBoxContext(el);nn if (listEl.hidden) {n displayList(comboBoxEl);n } else {n hideList(comboBoxEl);n }nn inputEl.focus();n};nn/**n * Handle click from inputn *n * @param {HTMLInputElement} el An element within the combo box componentn */nconst handleClickFromInput = (el) => {n const { comboBoxEl, listEl } = getComboBoxContext(el);nn if (listEl.hidden) {n displayList(comboBoxEl);n }n};nnconst comboBox = behavior(n {n [CLICK]: {n [INPUT]() {n if (this.disabled) return;n handleClickFromInput(this);n },n [TOGGLE_LIST_BUTTON]() {n if (this.disabled) return;n toggleList(this);n },n [LIST_OPTION]() {n if (this.disabled) return;n selectItem(this);n },n [CLEAR_INPUT_BUTTON]() {n if (this.disabled) return;n clearInput(this);n },n },n focusout: {n [COMBO_BOX](event) {n if (!this.contains(event.relatedTarget)) {n resetSelection(this);n hideList(this);n }n },n },n keydown: {n [COMBO_BOX]: keymap({n Escape: handleEscape,n }),n [INPUT]: keymap({n Enter: handleEnterFromInput,n ArrowDown: handleDownFromInput,n Down: handleDownFromInput,n }),n [LIST_OPTION]: keymap({n ArrowUp: handleUpFromListOption,n Up: handleUpFromListOption,n ArrowDown: handleDownFromListOption,n Down: handleDownFromListOption,n Enter: handleEnterFromListOption,n Tab: handleTabFromListOption,n "Shift+Tab": noop,n }),n },n input: {n [INPUT]() {n const comboBoxEl = this.closest(COMBO_BOX);n comboBoxEl.classList.remove(COMBO_BOX_PRISTINE_CLASS);n displayList(this);n },n },n mousemove: {n [LIST_OPTION]() {n handleMousemove(this);n },n },n },n {n init(root) {n select(COMBO_BOX, root).forEach((comboBoxEl) => {n enhanceComboBox(comboBoxEl);n });n },n getComboBoxContext,n enhanceComboBox,n generateDynamicRegExp,n disable,n enable,n displayList,n hideList,n COMBO_BOX_CLASS,n }n);nnmodule.exports = comboBox;n“,”const keymap = require("receptor/keymap");nconst behavior = require("../utils/behavior");nconst select = require("../utils/select");nconst { prefix: PREFIX } = require("../config");nconst { CLICK } = require("../events");nconst activeElement = require("../utils/active-element");nconst isIosDevice = require("../utils/is-ios-device");nnconst DATE_PICKER_CLASS = `${PREFIX}-date-picker`;nconst DATE_PICKER_WRAPPER_CLASS = `${DATE_PICKER_CLASS}__wrapper`;nconst DATE_PICKER_INITIALIZED_CLASS = `${DATE_PICKER_CLASS}–initialized`;nconst DATE_PICKER_ACTIVE_CLASS = `${DATE_PICKER_CLASS}–active`;nconst DATE_PICKER_INTERNAL_INPUT_CLASS = `${DATE_PICKER_CLASS}__internal-input`;nconst DATE_PICKER_EXTERNAL_INPUT_CLASS = `${DATE_PICKER_CLASS}__external-input`;nconst DATE_PICKER_BUTTON_CLASS = `${DATE_PICKER_CLASS}__button`;nconst DATE_PICKER_CALENDAR_CLASS = `${DATE_PICKER_CLASS}__calendar`;nconst DATE_PICKER_STATUS_CLASS = `${DATE_PICKER_CLASS}__status`;nconst CALENDAR_DATE_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__date`;nnconst CALENDAR_DATE_FOCUSED_CLASS = `${CALENDAR_DATE_CLASS}–focused`;nconst CALENDAR_DATE_SELECTED_CLASS = `${CALENDAR_DATE_CLASS}–selected`;nconst CALENDAR_DATE_PREVIOUS_MONTH_CLASS = `${CALENDAR_DATE_CLASS}–previous-month`;nconst CALENDAR_DATE_CURRENT_MONTH_CLASS = `${CALENDAR_DATE_CLASS}–current-month`;nconst CALENDAR_DATE_NEXT_MONTH_CLASS = `${CALENDAR_DATE_CLASS}–next-month`;nconst CALENDAR_DATE_RANGE_DATE_CLASS = `${CALENDAR_DATE_CLASS}–range-date`;nconst CALENDAR_DATE_TODAY_CLASS = `${CALENDAR_DATE_CLASS}–today`;nconst CALENDAR_DATE_RANGE_DATE_START_CLASS = `${CALENDAR_DATE_CLASS}–range-date-start`;nconst CALENDAR_DATE_RANGE_DATE_END_CLASS = `${CALENDAR_DATE_CLASS}–range-date-end`;nconst CALENDAR_DATE_WITHIN_RANGE_CLASS = `${CALENDAR_DATE_CLASS}–within-range`;nconst CALENDAR_PREVIOUS_YEAR_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__previous-year`;nconst CALENDAR_PREVIOUS_MONTH_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__previous-month`;nconst CALENDAR_NEXT_YEAR_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__next-year`;nconst CALENDAR_NEXT_MONTH_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__next-month`;nconst CALENDAR_MONTH_SELECTION_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__month-selection`;nconst CALENDAR_YEAR_SELECTION_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__year-selection`;nconst CALENDAR_MONTH_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__month`;nconst CALENDAR_MONTH_FOCUSED_CLASS = `${CALENDAR_MONTH_CLASS}–focused`;nconst CALENDAR_MONTH_SELECTED_CLASS = `${CALENDAR_MONTH_CLASS}–selected`;nconst CALENDAR_YEAR_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__year`;nconst CALENDAR_YEAR_FOCUSED_CLASS = `${CALENDAR_YEAR_CLASS}–focused`;nconst CALENDAR_YEAR_SELECTED_CLASS = `${CALENDAR_YEAR_CLASS}–selected`;nconst CALENDAR_PREVIOUS_YEAR_CHUNK_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__previous-year-chunk`;nconst CALENDAR_NEXT_YEAR_CHUNK_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__next-year-chunk`;nconst CALENDAR_DATE_PICKER_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__date-picker`;nconst CALENDAR_MONTH_PICKER_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__month-picker`;nconst CALENDAR_YEAR_PICKER_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__year-picker`;nconst CALENDAR_TABLE_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__table`;nconst CALENDAR_ROW_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__row`;nconst CALENDAR_CELL_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__cell`;nconst CALENDAR_CELL_CENTER_ITEMS_CLASS = `${CALENDAR_CELL_CLASS}–center-items`;nconst CALENDAR_MONTH_LABEL_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__month-label`;nconst CALENDAR_DAY_OF_WEEK_CLASS = `${DATE_PICKER_CALENDAR_CLASS}__day-of-week`;nnconst DATE_PICKER = `.${DATE_PICKER_CLASS}`;nconst DATE_PICKER_BUTTON = `.${DATE_PICKER_BUTTON_CLASS}`;nconst DATE_PICKER_INTERNAL_INPUT = `.${DATE_PICKER_INTERNAL_INPUT_CLASS}`;nconst DATE_PICKER_EXTERNAL_INPUT = `.${DATE_PICKER_EXTERNAL_INPUT_CLASS}`;nconst DATE_PICKER_CALENDAR = `.${DATE_PICKER_CALENDAR_CLASS}`;nconst DATE_PICKER_STATUS = `.${DATE_PICKER_STATUS_CLASS}`;nconst CALENDAR_DATE = `.${CALENDAR_DATE_CLASS}`;nconst CALENDAR_DATE_FOCUSED = `.${CALENDAR_DATE_FOCUSED_CLASS}`;nconst CALENDAR_DATE_CURRENT_MONTH = `.${CALENDAR_DATE_CURRENT_MONTH_CLASS}`;nconst CALENDAR_PREVIOUS_YEAR = `.${CALENDAR_PREVIOUS_YEAR_CLASS}`;nconst CALENDAR_PREVIOUS_MONTH = `.${CALENDAR_PREVIOUS_MONTH_CLASS}`;nconst CALENDAR_NEXT_YEAR = `.${CALENDAR_NEXT_YEAR_CLASS}`;nconst CALENDAR_NEXT_MONTH = `.${CALENDAR_NEXT_MONTH_CLASS}`;nconst CALENDAR_YEAR_SELECTION = `.${CALENDAR_YEAR_SELECTION_CLASS}`;nconst CALENDAR_MONTH_SELECTION = `.${CALENDAR_MONTH_SELECTION_CLASS}`;nconst CALENDAR_MONTH = `.${CALENDAR_MONTH_CLASS}`;nconst CALENDAR_YEAR = `.${CALENDAR_YEAR_CLASS}`;nconst CALENDAR_PREVIOUS_YEAR_CHUNK = `.${CALENDAR_PREVIOUS_YEAR_CHUNK_CLASS}`;nconst CALENDAR_NEXT_YEAR_CHUNK = `.${CALENDAR_NEXT_YEAR_CHUNK_CLASS}`;nconst CALENDAR_DATE_PICKER = `.${CALENDAR_DATE_PICKER_CLASS}`;nconst CALENDAR_MONTH_PICKER = `.${CALENDAR_MONTH_PICKER_CLASS}`;nconst CALENDAR_YEAR_PICKER = `.${CALENDAR_YEAR_PICKER_CLASS}`;nconst CALENDAR_MONTH_FOCUSED = `.${CALENDAR_MONTH_FOCUSED_CLASS}`;nconst CALENDAR_YEAR_FOCUSED = `.${CALENDAR_YEAR_FOCUSED_CLASS}`;nnconst VALIDATION_MESSAGE = "Please enter a valid date";nnconst MONTH_LABELS = [n "January",n "February",n "March",n "April",n "May",n "June",n "July",n "August",n "September",n "October",n "November",n "December",n];nnconst DAY_OF_WEEK_LABELS = [n "Sunday",n "Monday",n "Tuesday",n "Wednesday",n "Thursday",n "Friday",n "Saturday",n];nnconst ENTER_KEYCODE = 13;nnconst YEAR_CHUNK = 12;nnconst DEFAULT_MIN_DATE = "0000-01-01";nconst DEFAULT_EXTERNAL_DATE_FORMAT = "MM/DD/YYYY";nconst INTERNAL_DATE_FORMAT = "YYYY-MM-DD";nnconst NOT_DISABLED_SELECTOR = ":not()";nnconst processFocusableSelectors = (…selectors) =>n selectors.map((query) => query + NOT_DISABLED_SELECTOR).join(", ");nnconst DATE_PICKER_FOCUSABLE = processFocusableSelectors(n CALENDAR_PREVIOUS_YEAR,n CALENDAR_PREVIOUS_MONTH,n CALENDAR_YEAR_SELECTION,n CALENDAR_MONTH_SELECTION,n CALENDAR_NEXT_YEAR,n CALENDAR_NEXT_MONTH,n CALENDAR_DATE_FOCUSEDn);nnconst MONTH_PICKER_FOCUSABLE = processFocusableSelectors(n CALENDAR_MONTH_FOCUSEDn);nnconst YEAR_PICKER_FOCUSABLE = processFocusableSelectors(n CALENDAR_PREVIOUS_YEAR_CHUNK,n CALENDAR_NEXT_YEAR_CHUNK,n CALENDAR_YEAR_FOCUSEDn);nn// region Date Manipulation Functionsnn/**n * Keep date within month. Month would only be over by 1 to 3 daysn *n * @param {Date} dateToCheck the date object to checkn * @param {number} month the correct monthn * @returns {Date} the date, corrected if neededn */nconst keepDateWithinMonth = (dateToCheck, month) => {n if (month !== dateToCheck.getMonth()) {n dateToCheck.setDate(0);n }nn return dateToCheck;n};nn/**n * Set date from month day yearn *n * @param {number} year the year to setn * @param {number} month the month to set (zero-indexed)n * @param {number} date the date to setn * @returns {Date} the set daten */nconst setDate = (year, month, date) => {n const newDate = new Date(0);n newDate.setFullYear(year, month, date);n return newDate;n};nn/**n * todays daten *n * @returns {Date} todays daten */nconst today = () => {n const newDate = new Date();n const day = newDate.getDate();n const month = newDate.getMonth();n const year = newDate.getFullYear();n return setDate(year, month, day);n};nn/**n * Set date to first day of the monthn *n * @param {number} date the date to adjustn * @returns {Date} the adjusted daten */nconst startOfMonth = (date) => {n const newDate = new Date(0);n newDate.setFullYear(date.getFullYear(), date.getMonth(), 1);n return newDate;n};nn/**n * Set date to last day of the monthn *n * @param {number} date the date to adjustn * @returns {Date} the adjusted daten */nconst lastDayOfMonth = (date) => {n const newDate = new Date(0);n newDate.setFullYear(date.getFullYear(), date.getMonth() + 1, 0);n return newDate;n};nn/**n * Add days to daten *n * @param {Date} _date the date to adjustn * @param {number} numDays the difference in daysn * @returns {Date} the adjusted daten */nconst addDays = (_date, numDays) => {n const newDate = new Date(_date.getTime());n newDate.setDate(newDate.getDate() + numDays);n return newDate;n};nn/**n * Subtract days from daten *n * @param {Date} _date the date to adjustn * @param {number} numDays the difference in daysn * @returns {Date} the adjusted daten */nconst subDays = (_date, numDays) => addDays(_date, -numDays);nn/**n * Add weeks to daten *n * @param {Date} _date the date to adjustn * @param {number} numWeeks the difference in weeksn * @returns {Date} the adjusted daten */nconst addWeeks = (_date, numWeeks) => addDays(_date, numWeeks * 7);nn/**n * Subtract weeks from daten *n * @param {Date} _date the date to adjustn * @param {number} numWeeks the difference in weeksn * @returns {Date} the adjusted daten */nconst subWeeks = (_date, numWeeks) => addWeeks(_date, -numWeeks);nn/**n * Set date to the start of the week (Sunday)n *n * @param {Date} _date the date to adjustn * @returns {Date} the adjusted daten */nconst startOfWeek = (_date) => {n const dayOfWeek = _date.getDay();n return subDays(_date, dayOfWeek);n};nn/**n * Set date to the end of the week (Saturday)n *n * @param {Date} _date the date to adjustn * @param {number} numWeeks the difference in weeksn * @returns {Date} the adjusted daten */nconst endOfWeek = (_date) => {n const dayOfWeek = _date.getDay();n return addDays(_date, 6 - dayOfWeek);n};nn/**n * Add months to date and keep date within monthn *n * @param {Date} _date the date to adjustn * @param {number} numMonths the difference in monthsn * @returns {Date} the adjusted daten */nconst addMonths = (_date, numMonths) => {n const newDate = new Date(_date.getTime());nn const dateMonth = (newDate.getMonth() + 12 + numMonths) % 12;n newDate.setMonth(newDate.getMonth() + numMonths);n keepDateWithinMonth(newDate, dateMonth);nn return newDate;n};nn/**n * Subtract months from daten *n * @param {Date} _date the date to adjustn * @param {number} numMonths the difference in monthsn * @returns {Date} the adjusted daten */nconst subMonths = (_date, numMonths) => addMonths(_date, -numMonths);nn/**n * Add years to date and keep date within monthn *n * @param {Date} _date the date to adjustn * @param {number} numYears the difference in yearsn * @returns {Date} the adjusted daten */nconst addYears = (_date, numYears) => addMonths(_date, numYears * 12);nn/**n * Subtract years from daten *n * @param {Date} _date the date to adjustn * @param {number} numYears the difference in yearsn * @returns {Date} the adjusted daten */nconst subYears = (_date, numYears) => addYears(_date, -numYears);nn/**n * Set months of daten *n * @param {Date} _date the date to adjustn * @param {number} month zero-indexed month to setn * @returns {Date} the adjusted daten */nconst setMonth = (_date, month) => {n const newDate = new Date(_date.getTime());nn newDate.setMonth(month);n keepDateWithinMonth(newDate, month);nn return newDate;n};nn/**n * Set year of daten *n * @param {Date} _date the date to adjustn * @param {number} year the year to setn * @returns {Date} the adjusted daten */nconst setYear = (_date, year) => {n const newDate = new Date(_date.getTime());nn const month = newDate.getMonth();n newDate.setFullYear(year);n keepDateWithinMonth(newDate, month);nn return newDate;n};nn/**n * Return the earliest daten *n * @param {Date} dateA date to comparen * @param {Date} dateB date to comparen * @returns {Date} the earliest daten */nconst min = (dateA, dateB) => {n let newDate = dateA;nn if (dateB < dateA) {n newDate = dateB;n }nn return new Date(newDate.getTime());n};nn/**n * Return the latest daten *n * @param {Date} dateA date to comparen * @param {Date} dateB date to comparen * @returns {Date} the latest daten */nconst max = (dateA, dateB) => {n let newDate = dateA;nn if (dateB > dateA) {n newDate = dateB;n }nn return new Date(newDate.getTime());n};nn/**n * Check if dates are the in the same yearn *n * @param {Date} dateA date to comparen * @param {Date} dateB date to comparen * @returns {boolean} are dates in the same yearn */nconst isSameYear = (dateA, dateB) => {n return dateA && dateB && dateA.getFullYear() === dateB.getFullYear();n};nn/**n * Check if dates are the in the same monthn *n * @param {Date} dateA date to comparen * @param {Date} dateB date to comparen * @returns {boolean} are dates in the same monthn */nconst isSameMonth = (dateA, dateB) => {n return isSameYear(dateA, dateB) && dateA.getMonth() === dateB.getMonth();n};nn/**n * Check if dates are the same daten *n * @param {Date} dateA the date to comparen * @param {Date} dateA the date to comparen * @returns {boolean} are dates the same daten */nconst isSameDay = (dateA, dateB) => {n return isSameMonth(dateA, dateB) && dateA.getDate() === dateB.getDate();n};nn/**n * return a new date within minimum and maximum daten *n * @param {Date} date date to checkn * @param {Date} minDate minimum date to allown * @param {Date} maxDate maximum date to allown * @returns {Date} the date between min and maxn */nconst keepDateBetweenMinAndMax = (date, minDate, maxDate) => {n let newDate = date;nn if (date < minDate) {n newDate = minDate;n } else if (maxDate && date > maxDate) {n newDate = maxDate;n }nn return new Date(newDate.getTime());n};nn/**n * Check if dates is valid.n *n * @param {Date} date date to checkn * @param {Date} minDate minimum date to allown * @param {Date} maxDate maximum date to allown * @return {boolean} is there a day within the month within min and max datesn */nconst isDateWithinMinAndMax = (date, minDate, maxDate) =>n date >= minDate && (!maxDate || date <= maxDate);nn/**n * Check if dates month is invalid.n *n * @param {Date} date date to checkn * @param {Date} minDate minimum date to allown * @param {Date} maxDate maximum date to allown * @return {boolean} is the month outside min or max datesn */nconst isDatesMonthOutsideMinOrMax = (date, minDate, maxDate) => {n return (n lastDayOfMonth(date) < minDate || (maxDate && startOfMonth(date) > maxDate)n );n};nn/**n * Check if dates year is invalid.n *n * @param {Date} date date to checkn * @param {Date} minDate minimum date to allown * @param {Date} maxDate maximum date to allown * @return {boolean} is the month outside min or max datesn */nconst isDatesYearOutsideMinOrMax = (date, minDate, maxDate) => {n return (n lastDayOfMonth(setMonth(date, 11)) < minDate ||n (maxDate && startOfMonth(setMonth(date, 0)) > maxDate)n );n};nn/**n * Parse a date with format M-D-YYn *n * @param {string} dateString the date string to parsen * @param {string} dateFormat the format of the date stringn * @param {boolean} adjustDate should the date be adjustedn * @returns {Date} the parsed daten */nconst parseDateString = (n dateString,n dateFormat = INTERNAL_DATE_FORMAT,n adjustDate = falsen) => {n let date;n let month;n let day;n let year;n let parsed;nn if (dateString) {n let monthStr, dayStr, yearStr;nn if (dateFormat === DEFAULT_EXTERNAL_DATE_FORMAT) {n [monthStr, dayStr, yearStr] = dateString.split("/");n } else {n [yearStr, monthStr, dayStr] = dateString.split("-");n }nn if (yearStr) {n parsed = parseInt(yearStr, 10);n if (!Number.isNaN(parsed)) {n year = parsed;n if (adjustDate) {n year = Math.max(0, year);n if (yearStr.length < 3) {n const currentYear = today().getFullYear();n const currentYearStub =n currentYear - (currentYear % 10 ** yearStr.length);n year = currentYearStub + parsed;n }n }n }n }nn if (monthStr) {n parsed = parseInt(monthStr, 10);n if (!Number.isNaN(parsed)) {n month = parsed;n if (adjustDate) {n month = Math.max(1, month);n month = Math.min(12, month);n }n }n }nn if (month && dayStr && year != null) {n parsed = parseInt(dayStr, 10);n if (!Number.isNaN(parsed)) {n day = parsed;n if (adjustDate) {n const lastDayOfTheMonth = setDate(year, month, 0).getDate();n day = Math.max(1, day);n day = Math.min(lastDayOfTheMonth, day);n }n }n }nn if (month && day && year != null) {n date = setDate(year, month - 1, day);n }n }nn return date;n};nn/**n * Format a date to format MM-DD-YYYYn *n * @param {Date} date the date to formatn * @param {string} dateFormat the format of the date stringn * @returns {string} the formatted date stringn */nconst formatDate = (date, dateFormat = INTERNAL_DATE_FORMAT) => {n const padZeros = (value, length) => {n return `0000${value}`.slice(-length);n };nn const month = date.getMonth() + 1;n const day = date.getDate();n const year = date.getFullYear();nn if (dateFormat === DEFAULT_EXTERNAL_DATE_FORMAT) {n return [padZeros(month, 2), padZeros(day, 2), padZeros(year, 4)].join("/");n }nn return [padZeros(year, 4), padZeros(month, 2), padZeros(day, 2)].join("-");n};nn// endregion Date Manipulation Functionsnn/**n * Create a grid string from an array of html stringsn *n * @param {string[]} htmlArray the array of html itemsn * @param {number} rowSize the length of a rown * @returns {string} the grid stringn */nconst listToGridHtml = (htmlArray, rowSize) => {n const grid = [];n let row = [];nn let i = 0;n while (i < htmlArray.length) {n row = [];n while (i < htmlArray.length && row.length < rowSize) {n row.push(`<td>${htmlArray}</td>`);n i += 1;n }n grid.push(`<tr>${row.join("")}</tr>`);n }nn return grid.join("");n};nn/**n * set the value of the element and dispatch a change eventn *n * @param {HTMLInputElement} el The element to updaten * @param {string} value The new value of the elementn */nconst changeElementValue = (el, value = "") => {n const elementToChange = el;n elementToChange.value = value;nn const event = new CustomEvent("change", {n bubbles: true,n cancelable: true,n detail: { value },n });n elementToChange.dispatchEvent(event);n};nn/**n * The properties and elements within the date picker.n * @typedef {Object} DatePickerContextn * @property {HTMLDivElement} calendarEln * @property {HTMLElement} datePickerEln * @property {HTMLInputElement} internalInputEln * @property {HTMLInputElement} externalInputEln * @property {HTMLDivElement} statusEln * @property {HTMLDivElement} firstYearChunkEln * @property {Date} calendarDaten * @property {Date} minDaten * @property {Date} maxDaten * @property {Date} selectedDaten * @property {Date} rangeDaten * @property {Date} defaultDaten */nn/**n * Get an object of the properties and elements belonging directly to the givenn * date picker component.n *n * @param {HTMLElement} el the element within the date pickern * @returns {DatePickerContext} elementsn */nconst getDatePickerContext = (el) => {n const datePickerEl = el.closest(DATE_PICKER);nn if (!datePickerEl) {n throw new Error(`Element is missing outer ${DATE_PICKER}`);n }nn const internalInputEl = datePickerEl.querySelector(n DATE_PICKER_INTERNAL_INPUTn );n const externalInputEl = datePickerEl.querySelector(n DATE_PICKER_EXTERNAL_INPUTn );n const calendarEl = datePickerEl.querySelector(DATE_PICKER_CALENDAR);n const toggleBtnEl = datePickerEl.querySelector(DATE_PICKER_BUTTON);n const statusEl = datePickerEl.querySelector(DATE_PICKER_STATUS);n const firstYearChunkEl = datePickerEl.querySelector(CALENDAR_YEAR);nn const inputDate = parseDateString(n externalInputEl.value,n DEFAULT_EXTERNAL_DATE_FORMAT,n truen );n const selectedDate = parseDateString(internalInputEl.value);nn const calendarDate = parseDateString(calendarEl.dataset.value);n const minDate = parseDateString(datePickerEl.dataset.minDate);n const maxDate = parseDateString(datePickerEl.dataset.maxDate);n const rangeDate = parseDateString(datePickerEl.dataset.rangeDate);n const defaultDate = parseDateString(datePickerEl.dataset.defaultDate);nn if (minDate && maxDate && minDate > maxDate) {n throw new Error("Minimum date cannot be after maximum date");n }nn return {n calendarDate,n minDate,n toggleBtnEl,n selectedDate,n maxDate,n firstYearChunkEl,n datePickerEl,n inputDate,n internalInputEl,n externalInputEl,n calendarEl,n rangeDate,n defaultDate,n statusEl,n };n};nn/**n * Disable the date picker componentn *n * @param {HTMLElement} el An element within the date picker componentn */nconst disable = (el) => {n const { externalInputEl, toggleBtnEl } = getDatePickerContext(el);nn toggleBtnEl.disabled = true;n externalInputEl.disabled = true;n};nn/**n * Enable the date picker componentn *n * @param {HTMLElement} el An element within the date picker componentn */nconst enable = (el) => {n const { externalInputEl, toggleBtnEl } = getDatePickerContext(el);nn toggleBtnEl.disabled = false;n externalInputEl.disabled = false;n};nn// region Validationnn/**n * Validate the value in the input as a valid date of format M/D/YYYYn *n * @param {HTMLElement} el An element within the date picker componentn */nconst isDateInputInvalid = (el) => {n const { externalInputEl, minDate, maxDate } = getDatePickerContext(el);nn const dateString = externalInputEl.value;n let isInvalid = false;nn if (dateString) {n isInvalid = true;nn const dateStringParts = dateString.split("/");n const [month, day, year] = dateStringParts.map((str) => {n let value;n const parsed = parseInt(str, 10);n if (!Number.isNaN(parsed)) value = parsed;n return value;n });nn if (month && day && year != null) {n const checkDate = setDate(year, month - 1, day);nn if (n checkDate.getMonth() === month - 1 &&n checkDate.getDate() === day &&n checkDate.getFullYear() === year &&n dateStringParts.length === 4 &&n isDateWithinMinAndMax(checkDate, minDate, maxDate)n ) {n isInvalid = false;n }n }n }nn return isInvalid;n};nn/**n * Validate the value in the input as a valid date of format M/D/YYYYn *n * @param {HTMLElement} el An element within the date picker componentn */nconst validateDateInput = (el) => {n const { externalInputEl } = getDatePickerContext(el);n const isInvalid = isDateInputInvalid(externalInputEl);nn if (isInvalid && !externalInputEl.validationMessage) {n externalInputEl.setCustomValidity(VALIDATION_MESSAGE);n }nn if (!isInvalid && externalInputEl.validationMessage === VALIDATION_MESSAGE) {n externalInputEl.setCustomValidity("");n }n};nn// endregion Validationnn/**n * Enable the date picker componentn *n * @param {HTMLElement} el An element within the date picker componentn */nconst reconcileInputValues = (el) => {n const { internalInputEl, inputDate } = getDatePickerContext(el);n let newValue = "";nn if (inputDate && !isDateInputInvalid(el)) {n newValue = formatDate(inputDate);n }nn if (internalInputEl.value !== newValue) {n changeElementValue(internalInputEl, newValue);n }n};nn/**n * Select the value of the date picker inputs.n *n * @param {HTMLButtonElement} el An element within the date picker componentn * @param {string} dateString The date string to update in YYYY-MM-DD formatn */nconst setCalendarValue = (el, dateString) => {n const parsedDate = parseDateString(dateString);nn if (parsedDate) {n const formattedDate = formatDate(parsedDate, DEFAULT_EXTERNAL_DATE_FORMAT);nn const {n datePickerEl,n internalInputEl,n externalInputEl,n } = getDatePickerContext(el);nn changeElementValue(internalInputEl, dateString);n changeElementValue(externalInputEl, formattedDate);nn validateDateInput(datePickerEl);n }n};nn/**n * Enhance an input with the date picker elementsn *n * @param {HTMLElement} el The initial wrapping element of the date picker componentn */nconst enhanceDatePicker = (el) => {n const datePickerEl = el.closest(DATE_PICKER);n const defaultValue = datePickerEl.dataset.defaultValue;nn const internalInputEl = datePickerEl.querySelector(`input`);nn if (!internalInputEl) {n throw new Error(`${DATE_PICKER} is missing inner input`);n }nn if (internalInputEl.value) {n internalInputEl.value = "";n }nn const minDate = parseDateString(n datePickerEl.dataset.minDate || internalInputEl.getAttribute("min")n );n datePickerEl.dataset.minDate = minDaten ? formatDate(minDate)n : DEFAULT_MIN_DATE;nn const maxDate = parseDateString(n datePickerEl.dataset.maxDate || internalInputEl.getAttribute("max")n );n if (maxDate) {n datePickerEl.dataset.maxDate = formatDate(maxDate);n }nn const calendarWrapper = document.createElement("div");n calendarWrapper.classList.add(DATE_PICKER_WRAPPER_CLASS);n calendarWrapper.tabIndex = "-1";nn const externalInputEl = internalInputEl.cloneNode();n externalInputEl.classList.add(DATE_PICKER_EXTERNAL_INPUT_CLASS);n externalInputEl.type = "text";n externalInputEl.name = "";nn calendarWrapper.appendChild(externalInputEl);n calendarWrapper.insertAdjacentHTML(n "beforeend",n [n `<button type="button" class="${DATE_PICKER_BUTTON_CLASS}" aria-haspopup="true" aria-label="Toggle calendar"> </button>`,n `<div class="${DATE_PICKER_CALENDAR_CLASS}" role="dialog" aria-modal="true" hidden></div>`,n `<div class="usa-sr-only ${DATE_PICKER_STATUS_CLASS}" role="status" aria-live="polite"></div>`,n ].join("")n );nn internalInputEl.setAttribute("aria-hidden", "true");n internalInputEl.setAttribute("tabindex", "-1");n internalInputEl.classList.add(n "usa-sr-only",n DATE_PICKER_INTERNAL_INPUT_CLASSn );n internalInputEl.id = "";n internalInputEl.required = false;nn datePickerEl.appendChild(calendarWrapper);n datePickerEl.classList.add(DATE_PICKER_INITIALIZED_CLASS);nn if (defaultValue) {n setCalendarValue(datePickerEl, defaultValue);n }nn if (internalInputEl.disabled) {n disable(datePickerEl);n internalInputEl.disabled = false;n }n};nn// region Calendar - Date Selection Viewnn/**n * render the calendar.n *n * @param {HTMLElement} el An element within the date picker componentn * @param {Date} _dateToDisplay a date to render on the calendarn * @returns {HTMLElement} a reference to the new calendar elementn */nconst renderCalendar = (el, _dateToDisplay) => {n const {n datePickerEl,n calendarEl,n statusEl,n selectedDate,n maxDate,n minDate,n rangeDate,n } = getDatePickerContext(el);n const todaysDate = today();n let dateToDisplay = _dateToDisplay || todaysDate;nn const calendarWasHidden = calendarEl.hidden;nn const focusedDate = addDays(dateToDisplay, 0);n const focusedMonth = dateToDisplay.getMonth();n const focusedYear = dateToDisplay.getFullYear();nn const prevMonth = subMonths(dateToDisplay, 1);n const nextMonth = addMonths(dateToDisplay, 1);nn const currentFormattedDate = formatDate(dateToDisplay);nn const firstOfMonth = startOfMonth(dateToDisplay);n const prevButtonsDisabled = isSameMonth(dateToDisplay, minDate);n const nextButtonsDisabled = isSameMonth(dateToDisplay, maxDate);nn const rangeConclusionDate = selectedDate || dateToDisplay;n const rangeStartDate = rangeDate && min(rangeConclusionDate, rangeDate);n const rangeEndDate = rangeDate && max(rangeConclusionDate, rangeDate);nn const withinRangeStartDate = rangeDate && addDays(rangeStartDate, 1);n const withinRangeEndDate = rangeDate && subDays(rangeEndDate, 1);nn const monthLabel = MONTH_LABELS;nn const generateDateHtml = (dateToRender) => {n const classes = [CALENDAR_DATE_CLASS];n const day = dateToRender.getDate();n const month = dateToRender.getMonth();n const year = dateToRender.getFullYear();n const dayOfWeek = dateToRender.getDay();nn const formattedDate = formatDate(dateToRender);nn let tabindex = "-1";nn const isDisabled = !isDateWithinMinAndMax(dateToRender, minDate, maxDate);n const isSelected = isSameDay(dateToRender, selectedDate);nn if (isSameMonth(dateToRender, prevMonth)) {n classes.push(CALENDAR_DATE_PREVIOUS_MONTH_CLASS);n }nn if (isSameMonth(dateToRender, focusedDate)) {n classes.push(CALENDAR_DATE_CURRENT_MONTH_CLASS);n }nn if (isSameMonth(dateToRender, nextMonth)) {n classes.push(CALENDAR_DATE_NEXT_MONTH_CLASS);n }nn if (isSelected) {n classes.push(CALENDAR_DATE_SELECTED_CLASS);n }nn if (isSameDay(dateToRender, todaysDate)) {n classes.push(CALENDAR_DATE_TODAY_CLASS);n }nn if (rangeDate) {n if (isSameDay(dateToRender, rangeDate)) {n classes.push(CALENDAR_DATE_RANGE_DATE_CLASS);n }nn if (isSameDay(dateToRender, rangeStartDate)) {n classes.push(CALENDAR_DATE_RANGE_DATE_START_CLASS);n }nn if (isSameDay(dateToRender, rangeEndDate)) {n classes.push(CALENDAR_DATE_RANGE_DATE_END_CLASS);n }nn if (n isDateWithinMinAndMax(n dateToRender,n withinRangeStartDate,n withinRangeEndDaten )n ) {n classes.push(CALENDAR_DATE_WITHIN_RANGE_CLASS);n }n }nn if (isSameDay(dateToRender, focusedDate)) {n tabindex = "0";n classes.push(CALENDAR_DATE_FOCUSED_CLASS);n }nn const monthStr = MONTH_LABELS;n const dayStr = DAY_OF_WEEK_LABELS;nn return `<buttonn type="button"n tabindex="${tabindex}"n class="${classes.join(" ")}" n data-day="${day}" n data-month="${month + 1}" n data-year="${year}" n data-value="${formattedDate}"n aria-label="${day} ${monthStr} ${year} ${dayStr}"n aria-selected="${isSelected ? "true" : "false"}"n ${isDisabled ? `disabled="disabled"` : ""}n >${day}</button>`;n };nn // set date to first rendered dayn dateToDisplay = startOfWeek(firstOfMonth);nn const days = [];nn while (n days.length < 28 ||n dateToDisplay.getMonth() === focusedMonth ||n days.length % 7 !== 0n ) {n days.push(generateDateHtml(dateToDisplay));n dateToDisplay = addDays(dateToDisplay, 1);n }nn const datesHtml = listToGridHtml(days, 7);nn const newCalendar = calendarEl.cloneNode();n newCalendar.dataset.value = currentFormattedDate;n newCalendar.style.top = `${datePickerEl.offsetHeight}px`;n newCalendar.hidden = false;n newCalendar.innerHTML = `<div tabindex="-1" class="${CALENDAR_DATE_PICKER_CLASS}">n <div class="${CALENDAR_ROW_CLASS}">n <div class="${CALENDAR_CELL_CLASS} ${CALENDAR_CELL_CENTER_ITEMS_CLASS}">n <button n type="button"n class="${CALENDAR_PREVIOUS_YEAR_CLASS}"n aria-label="Navigate back one year"n ${prevButtonsDisabled ? `disabled="disabled"` : ""}n > </button>n </div>n <div class="${CALENDAR_CELL_CLASS} ${CALENDAR_CELL_CENTER_ITEMS_CLASS}">n <button n type="button"n class="${CALENDAR_PREVIOUS_MONTH_CLASS}"n aria-label="Navigate back one month"n ${prevButtonsDisabled ? `disabled="disabled"` : ""}n > </button>n </div>n <div class="${CALENDAR_CELL_CLASS} ${CALENDAR_MONTH_LABEL_CLASS}">n <button n type="button"n class="${CALENDAR_MONTH_SELECTION_CLASS}" aria-label="${monthLabel}. Click to select month"n >${monthLabel}</button>n <button n type="button"n class="${CALENDAR_YEAR_SELECTION_CLASS}" aria-label="${focusedYear}. Click to select year"n >${focusedYear}</button>n </div>n <div class="${CALENDAR_CELL_CLASS} ${CALENDAR_CELL_CENTER_ITEMS_CLASS}">n <button n type="button"n class="${CALENDAR_NEXT_MONTH_CLASS}"n aria-label="Navigate forward one month"n ${nextButtonsDisabled ? `disabled="disabled"` : ""}n > </button>n </div>n <div class="${CALENDAR_CELL_CLASS} ${CALENDAR_CELL_CENTER_ITEMS_CLASS}">n <button n type="button"n class="${CALENDAR_NEXT_YEAR_CLASS}"n aria-label="Navigate forward one year"n ${nextButtonsDisabled ? `disabled="disabled"` : ""}n > </button>n </div>n </div>n <table class="${CALENDAR_TABLE_CLASS}" role="presentation">n <thead>n <tr>n <th class="${CALENDAR_DAY_OF_WEEK_CLASS}" scope="col" aria-label="Sunday">S</th>n <th class="${CALENDAR_DAY_OF_WEEK_CLASS}" scope="col" aria-label="Monday">M</th>n <th class="${CALENDAR_DAY_OF_WEEK_CLASS}" scope="col" aria-label="Tuesday">T</th>n <th class="${CALENDAR_DAY_OF_WEEK_CLASS}" scope="col" aria-label="Wednesday">W</th>n <th class="${CALENDAR_DAY_OF_WEEK_CLASS}" scope="col" aria-label="Thursday">Th</th>n <th class="${CALENDAR_DAY_OF_WEEK_CLASS}" scope="col" aria-label="Friday">F</th>n <th class="${CALENDAR_DAY_OF_WEEK_CLASS}" scope="col" aria-label="Saturday">S</th>n </tr>n </thead>n <tbody>n ${datesHtml}n </tbody>n </table>n </div>`;nn calendarEl.parentNode.replaceChild(newCalendar, calendarEl);nn datePickerEl.classList.add(DATE_PICKER_ACTIVE_CLASS);nn const statuses = [];nn if (isSameDay(selectedDate, focusedDate)) {n statuses.push("Selected date");n }nn if (calendarWasHidden) {n statuses.push(n "You can navigate by day using left and right arrows",n "Weeks by using up and down arrows",n "Months by using page up and page down keys",n "Years by using shift plus page up and shift plus page down",n "Home and end keys navigate to the beginning and end of a week"n );n statusEl.textContent = "";n } else {n statuses.push(`${monthLabel} ${focusedYear}`);n }n statusEl.textContent = statuses.join(". ");nn return newCalendar;n};nn/**n * Navigate back one year and display the calendar.n *n * @param {HTMLButtonElement} _buttonEl An element within the date picker componentn */nconst displayPreviousYear = (_buttonEl) => {n if (_buttonEl.disabled) return;n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(n _buttonEln );n let date = subYears(calendarDate, 1);n date = keepDateBetweenMinAndMax(date, minDate, maxDate);n const newCalendar = renderCalendar(calendarEl, date);nn let nextToFocus = newCalendar.querySelector(CALENDAR_PREVIOUS_YEAR);n if (nextToFocus.disabled) {n nextToFocus = newCalendar.querySelector(CALENDAR_DATE_PICKER);n }n nextToFocus.focus();n};nn/**n * Navigate back one month and display the calendar.n *n * @param {HTMLButtonElement} _buttonEl An element within the date picker componentn */nconst displayPreviousMonth = (_buttonEl) => {n if (_buttonEl.disabled) return;n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(n _buttonEln );n let date = subMonths(calendarDate, 1);n date = keepDateBetweenMinAndMax(date, minDate, maxDate);n const newCalendar = renderCalendar(calendarEl, date);nn let nextToFocus = newCalendar.querySelector(CALENDAR_PREVIOUS_MONTH);n if (nextToFocus.disabled) {n nextToFocus = newCalendar.querySelector(CALENDAR_DATE_PICKER);n }n nextToFocus.focus();n};nn/**n * Navigate forward one month and display the calendar.n *n * @param {HTMLButtonElement} _buttonEl An element within the date picker componentn */nconst displayNextMonth = (_buttonEl) => {n if (_buttonEl.disabled) return;n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(n _buttonEln );n let date = addMonths(calendarDate, 1);n date = keepDateBetweenMinAndMax(date, minDate, maxDate);n const newCalendar = renderCalendar(calendarEl, date);nn let nextToFocus = newCalendar.querySelector(CALENDAR_NEXT_MONTH);n if (nextToFocus.disabled) {n nextToFocus = newCalendar.querySelector(CALENDAR_DATE_PICKER);n }n nextToFocus.focus();n};nn/**n * Navigate forward one year and display the calendar.n *n * @param {HTMLButtonElement} _buttonEl An element within the date picker componentn */nconst displayNextYear = (_buttonEl) => {n if (_buttonEl.disabled) return;n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(n _buttonEln );n let date = addYears(calendarDate, 1);n date = keepDateBetweenMinAndMax(date, minDate, maxDate);n const newCalendar = renderCalendar(calendarEl, date);nn let nextToFocus = newCalendar.querySelector(CALENDAR_NEXT_YEAR);n if (nextToFocus.disabled) {n nextToFocus = newCalendar.querySelector(CALENDAR_DATE_PICKER);n }n nextToFocus.focus();n};nn/**n * Hide the calendar of a date picker component.n *n * @param {HTMLElement} el An element within the date picker componentn */nconst hideCalendar = (el) => {n const { datePickerEl, calendarEl, statusEl } = getDatePickerContext(el);nn datePickerEl.classList.remove(DATE_PICKER_ACTIVE_CLASS);n calendarEl.hidden = true;n statusEl.textContent = "";n};nn/**n * Select a date within the date picker component.n *n * @param {HTMLButtonElement} calendarDateEl A date element within the date picker componentn */nconst selectDate = (calendarDateEl) => {n if (calendarDateEl.disabled) return;nn const { datePickerEl, externalInputEl } = getDatePickerContext(n calendarDateEln );nn setCalendarValue(calendarDateEl, calendarDateEl.dataset.value);n hideCalendar(datePickerEl);nn externalInputEl.focus();n};nn/**n * Toggle the calendar.n *n * @param {HTMLButtonElement} el An element within the date picker componentn */nconst toggleCalendar = (el) => {n if (el.disabled) return;n const {n calendarEl,n inputDate,n minDate,n maxDate,n defaultDate,n } = getDatePickerContext(el);nn if (calendarEl.hidden) {n const dateToDisplay = keepDateBetweenMinAndMax(n inputDate || defaultDate || today(),n minDate,n maxDaten );n const newCalendar = renderCalendar(calendarEl, dateToDisplay);n newCalendar.querySelector(CALENDAR_DATE_FOCUSED).focus();n } else {n hideCalendar(el);n }n};nn/**n * Update the calendar when visible.n *n * @param {HTMLElement} el an element within the date pickern */nconst updateCalendarIfVisible = (el) => {n const { calendarEl, inputDate, minDate, maxDate } = getDatePickerContext(el);n const calendarShown = !calendarEl.hidden;nn if (calendarShown && inputDate) {n const dateToDisplay = keepDateBetweenMinAndMax(inputDate, minDate, maxDate);n renderCalendar(calendarEl, dateToDisplay);n }n};nn// endregion Calendar - Date Selection Viewnn// region Calendar - Month Selection Viewn/**n * Display the month selection screen in the date picker.n *n * @param {HTMLButtonElement} el An element within the date picker componentn * @returns {HTMLElement} a reference to the new calendar elementn */nconst displayMonthSelection = (el, monthToDisplay) => {n const {n calendarEl,n statusEl,n calendarDate,n minDate,n maxDate,n } = getDatePickerContext(el);nn const selectedMonth = calendarDate.getMonth();n const focusedMonth = monthToDisplay == null ? selectedMonth : monthToDisplay;nn const months = MONTH_LABELS.map((month, index) => {n const monthToCheck = setMonth(calendarDate, index);nn const isDisabled = isDatesMonthOutsideMinOrMax(n monthToCheck,n minDate,n maxDaten );nn let tabindex = "-1";nn const classes = [CALENDAR_MONTH_CLASS];n const isSelected = index === selectedMonth;nn if (index === focusedMonth) {n tabindex = "0";n classes.push(CALENDAR_MONTH_FOCUSED_CLASS);n }nn if (isSelected) {n classes.push(CALENDAR_MONTH_SELECTED_CLASS);n }nn return `<button n type="button"n tabindex="${tabindex}"n class="${classes.join(" ")}" n data-value="${index}"n data-label="${month}"n aria-selected="${isSelected ? "true" : "false"}"n ${isDisabled ? `disabled="disabled"` : ""}n >${month}</button>`;n });nn const monthsHtml = `<div tabindex="-1" class="${CALENDAR_MONTH_PICKER_CLASS}">n <table class="${CALENDAR_TABLE_CLASS}" role="presentation">n <tbody>n ${listToGridHtml(months, 3)}n </tbody>n </table>n </div>`;nn const newCalendar = calendarEl.cloneNode();n newCalendar.innerHTML = monthsHtml;n calendarEl.parentNode.replaceChild(newCalendar, calendarEl);nn statusEl.textContent = "Select a month.";nn return newCalendar;n};nn/**n * Select a month in the date picker component.n *n * @param {HTMLButtonElement} monthEl An month element within the date picker componentn */nconst selectMonth = (monthEl) => {n if (monthEl.disabled) return;n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(n monthEln );n const selectedMonth = parseInt(monthEl.dataset.value, 10);n let date = setMonth(calendarDate, selectedMonth);n date = keepDateBetweenMinAndMax(date, minDate, maxDate);n const newCalendar = renderCalendar(calendarEl, date);n newCalendar.querySelector(CALENDAR_DATE_FOCUSED).focus();n};nn// endregion Calendar - Month Selection Viewnn// region Calendar - Year Selection Viewnn/**n * Display the year selection screen in the date picker.n *n * @param {HTMLButtonElement} el An element within the date picker componentn * @param {number} yearToDisplay year to display in year selectionn * @returns {HTMLElement} a reference to the new calendar elementn */nconst displayYearSelection = (el, yearToDisplay) => {n const {n calendarEl,n statusEl,n calendarDate,n minDate,n maxDate,n } = getDatePickerContext(el);nn const selectedYear = calendarDate.getFullYear();n const focusedYear = yearToDisplay == null ? selectedYear : yearToDisplay;nn let yearToChunk = focusedYear;n yearToChunk -= yearToChunk % YEAR_CHUNK;n yearToChunk = Math.max(0, yearToChunk);nn const prevYearChunkDisabled = isDatesYearOutsideMinOrMax(n setYear(calendarDate, yearToChunk - 1),n minDate,n maxDaten );nn const nextYearChunkDisabled = isDatesYearOutsideMinOrMax(n setYear(calendarDate, yearToChunk + YEAR_CHUNK),n minDate,n maxDaten );nn const years = [];n let yearIndex = yearToChunk;n while (years.length < YEAR_CHUNK) {n const isDisabled = isDatesYearOutsideMinOrMax(n setYear(calendarDate, yearIndex),n minDate,n maxDaten );nn let tabindex = "-1";nn const classes = [CALENDAR_YEAR_CLASS];n const isSelected = yearIndex === selectedYear;nn if (yearIndex === focusedYear) {n tabindex = "0";n classes.push(CALENDAR_YEAR_FOCUSED_CLASS);n }nn if (isSelected) {n classes.push(CALENDAR_YEAR_SELECTED_CLASS);n }nn years.push(n `<button n type="button"n tabindex="${tabindex}"n class="${classes.join(" ")}" n data-value="${yearIndex}"n aria-selected="${isSelected ? "true" : "false"}"n ${isDisabled ? `disabled="disabled"` : ""}n >${yearIndex}</button>`n );n yearIndex += 1;n }nn const yearsHtml = listToGridHtml(years, 3);nn const newCalendar = calendarEl.cloneNode();n newCalendar.innerHTML = `<div tabindex="-1" class="${CALENDAR_YEAR_PICKER_CLASS}">n <table class="${CALENDAR_TABLE_CLASS}" role="presentation">n <tbody>n <tr>n <td>n <buttonn type="button"n class="${CALENDAR_PREVIOUS_YEAR_CHUNK_CLASS}" n aria-label="Navigate back ${YEAR_CHUNK} years"n ${prevYearChunkDisabled ? `disabled="disabled"` : ""}n > </button>n </td>n <td colspan="3">n <table class="${CALENDAR_TABLE_CLASS}" role="presentation">n <tbody>n ${yearsHtml}n </tbody>n </table>n </td>n <td>n <buttonn type="button"n class="${CALENDAR_NEXT_YEAR_CHUNK_CLASS}" n aria-label="Navigate forward ${YEAR_CHUNK} years"n ${nextYearChunkDisabled ? `disabled="disabled"` : ""}n > </button>n </td>n </tr>n </tbody>n </table>n </div>`;n calendarEl.parentNode.replaceChild(newCalendar, calendarEl);nn statusEl.textContent = `Showing years ${yearToChunk} to ${n yearToChunk + YEAR_CHUNK - 1n }. Select a year.`;nn return newCalendar;n};nn/**n * Navigate back by years and display the year selection screen.n *n * @param {HTMLButtonElement} el An element within the date picker componentn */nconst displayPreviousYearChunk = (el) => {n if (el.disabled) return;nn const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(n eln );n const yearEl = calendarEl.querySelector(CALENDAR_YEAR_FOCUSED);n const selectedYear = parseInt(yearEl.textContent, 10);nn let adjustedYear = selectedYear - YEAR_CHUNK;n adjustedYear = Math.max(0, adjustedYear);nn const date = setYear(calendarDate, adjustedYear);n const cappedDate = keepDateBetweenMinAndMax(date, minDate, maxDate);n const newCalendar = displayYearSelection(n calendarEl,n cappedDate.getFullYear()n );nn let nextToFocus = newCalendar.querySelector(CALENDAR_PREVIOUS_YEAR_CHUNK);n if (nextToFocus.disabled) {n nextToFocus = newCalendar.querySelector(CALENDAR_YEAR_PICKER);n }n nextToFocus.focus();n};nn/**n * Navigate forward by years and display the year selection screen.n *n * @param {HTMLButtonElement} el An element within the date picker componentn */nconst displayNextYearChunk = (el) => {n if (el.disabled) return;nn const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(n eln );n const yearEl = calendarEl.querySelector(CALENDAR_YEAR_FOCUSED);n const selectedYear = parseInt(yearEl.textContent, 10);nn let adjustedYear = selectedYear + YEAR_CHUNK;n adjustedYear = Math.max(0, adjustedYear);nn const date = setYear(calendarDate, adjustedYear);n const cappedDate = keepDateBetweenMinAndMax(date, minDate, maxDate);n const newCalendar = displayYearSelection(n calendarEl,n cappedDate.getFullYear()n );nn let nextToFocus = newCalendar.querySelector(CALENDAR_NEXT_YEAR_CHUNK);n if (nextToFocus.disabled) {n nextToFocus = newCalendar.querySelector(CALENDAR_YEAR_PICKER);n }n nextToFocus.focus();n};nn/**n * Select a year in the date picker component.n *n * @param {HTMLButtonElement} yearEl A year element within the date picker componentn */nconst selectYear = (yearEl) => {n if (yearEl.disabled) return;n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(n yearEln );n const selectedYear = parseInt(yearEl.innerHTML, 10);n let date = setYear(calendarDate, selectedYear);n date = keepDateBetweenMinAndMax(date, minDate, maxDate);n const newCalendar = renderCalendar(calendarEl, date);n newCalendar.querySelector(CALENDAR_DATE_FOCUSED).focus();n};nn// endregion Calendar - Year Selection Viewnn// region Calendar Event Handlingnn/**n * Hide the calendar.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleEscapeFromCalendar = (event) => {n const { datePickerEl, externalInputEl } = getDatePickerContext(event.target);nn hideCalendar(datePickerEl);n externalInputEl.focus();nn event.preventDefault();n};nn// endregion Calendar Event Handlingnn// region Calendar Date Event Handlingnn/**n * Adjust the date and display the calendar if needed.n *n * @param {function} adjustDateFn function that returns the adjusted daten */nconst adjustCalendar = (adjustDateFn) => {n return (event) => {n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(n event.targetn );nn const date = adjustDateFn(calendarDate);nn const cappedDate = keepDateBetweenMinAndMax(date, minDate, maxDate);n if (!isSameDay(calendarDate, cappedDate)) {n const newCalendar = renderCalendar(calendarEl, cappedDate);n newCalendar.querySelector(CALENDAR_DATE_FOCUSED).focus();n }n event.preventDefault();n };n};nn/**n * Navigate back one week and display the calendar.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleUpFromDate = adjustCalendar((date) => subWeeks(date, 1));nn/**n * Navigate forward one week and display the calendar.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleDownFromDate = adjustCalendar((date) => addWeeks(date, 1));nn/**n * Navigate back one day and display the calendar.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleLeftFromDate = adjustCalendar((date) => subDays(date, 1));nn/**n * Navigate forward one day and display the calendar.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleRightFromDate = adjustCalendar((date) => addDays(date, 1));nn/**n * Navigate to the start of the week and display the calendar.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleHomeFromDate = adjustCalendar((date) => startOfWeek(date));nn/**n * Navigate to the end of the week and display the calendar.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleEndFromDate = adjustCalendar((date) => endOfWeek(date));nn/**n * Navigate forward one month and display the calendar.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handlePageDownFromDate = adjustCalendar((date) => addMonths(date, 1));nn/**n * Navigate back one month and display the calendar.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handlePageUpFromDate = adjustCalendar((date) => subMonths(date, 1));nn/**n * Navigate forward one year and display the calendar.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleShiftPageDownFromDate = adjustCalendar((date) => addYears(date, 1));nn/**n * Navigate back one year and display the calendar.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleShiftPageUpFromDate = adjustCalendar((date) => subYears(date, 1));nn/**n * display the calendar for the mousemove date.n *n * @param {MouseEvent} event The mousemove eventn * @param {HTMLButtonElement} dateEl A date element within the date picker componentn */nconst handleMousemoveFromDate = (dateEl) => {n if (dateEl.disabled) return;nn const calendarEl = dateEl.closest(DATE_PICKER_CALENDAR);nn const currentCalendarDate = calendarEl.dataset.value;n const hoverDate = dateEl.dataset.value;nn if (hoverDate === currentCalendarDate) return;nn const dateToDisplay = parseDateString(hoverDate);n const newCalendar = renderCalendar(calendarEl, dateToDisplay);n newCalendar.querySelector(CALENDAR_DATE_FOCUSED).focus();n};nn// endregion Calendar Date Event Handlingnn// region Calendar Month Event Handlingnn/**n * Adjust the month and display the month selection screen if needed.n *n * @param {function} adjustMonthFn function that returns the adjusted monthn */nconst adjustMonthSelectionScreen = (adjustMonthFn) => {n return (event) => {n const monthEl = event.target;n const selectedMonth = parseInt(monthEl.dataset.value, 10);n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(n monthEln );n const currentDate = setMonth(calendarDate, selectedMonth);nn let adjustedMonth = adjustMonthFn(selectedMonth);n adjustedMonth = Math.max(0, Math.min(11, adjustedMonth));nn const date = setMonth(calendarDate, adjustedMonth);n const cappedDate = keepDateBetweenMinAndMax(date, minDate, maxDate);n if (!isSameMonth(currentDate, cappedDate)) {n const newCalendar = displayMonthSelection(n calendarEl,n cappedDate.getMonth()n );n newCalendar.querySelector(CALENDAR_MONTH_FOCUSED).focus();n }n event.preventDefault();n };n};nn/**n * Navigate back three months and display the month selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleUpFromMonth = adjustMonthSelectionScreen((month) => month - 3);nn/**n * Navigate forward three months and display the month selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleDownFromMonth = adjustMonthSelectionScreen((month) => month + 3);nn/**n * Navigate back one month and display the month selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleLeftFromMonth = adjustMonthSelectionScreen((month) => month - 1);nn/**n * Navigate forward one month and display the month selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleRightFromMonth = adjustMonthSelectionScreen((month) => month + 1);nn/**n * Navigate to the start of the row of months and display the month selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleHomeFromMonth = adjustMonthSelectionScreen(n (month) => month - (month % 3)n);nn/**n * Navigate to the end of the row of months and display the month selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleEndFromMonth = adjustMonthSelectionScreen(n (month) => month + 2 - (month % 3)n);nn/**n * Navigate to the last month (December) and display the month selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handlePageDownFromMonth = adjustMonthSelectionScreen(() => 11);nn/**n * Navigate to the first month (January) and display the month selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handlePageUpFromMonth = adjustMonthSelectionScreen(() => 0);nn/**n * update the focus on a month when the mouse moves.n *n * @param {MouseEvent} event The mousemove eventn * @param {HTMLButtonElement} monthEl A month element within the date picker componentn */nconst handleMousemoveFromMonth = (monthEl) => {n if (monthEl.disabled) return;n if (monthEl.classList.contains(CALENDAR_MONTH_FOCUSED_CLASS)) return;nn const focusMonth = parseInt(monthEl.dataset.value, 10);nn const newCalendar = displayMonthSelection(monthEl, focusMonth);n newCalendar.querySelector(CALENDAR_MONTH_FOCUSED).focus();n};nn// endregion Calendar Month Event Handlingnn// region Calendar Year Event Handlingnn/**n * Adjust the year and display the year selection screen if needed.n *n * @param {function} adjustYearFn function that returns the adjusted yearn */nconst adjustYearSelectionScreen = (adjustYearFn) => {n return (event) => {n const yearEl = event.target;n const selectedYear = parseInt(yearEl.dataset.value, 10);n const { calendarEl, calendarDate, minDate, maxDate } = getDatePickerContext(n yearEln );n const currentDate = setYear(calendarDate, selectedYear);nn let adjustedYear = adjustYearFn(selectedYear);n adjustedYear = Math.max(0, adjustedYear);nn const date = setYear(calendarDate, adjustedYear);n const cappedDate = keepDateBetweenMinAndMax(date, minDate, maxDate);n if (!isSameYear(currentDate, cappedDate)) {n const newCalendar = displayYearSelection(n calendarEl,n cappedDate.getFullYear()n );n newCalendar.querySelector(CALENDAR_YEAR_FOCUSED).focus();n }n event.preventDefault();n };n};nn/**n * Navigate back three years and display the year selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleUpFromYear = adjustYearSelectionScreen((year) => year - 3);nn/**n * Navigate forward three years and display the year selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleDownFromYear = adjustYearSelectionScreen((year) => year + 3);nn/**n * Navigate back one year and display the year selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleLeftFromYear = adjustYearSelectionScreen((year) => year - 1);nn/**n * Navigate forward one year and display the year selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleRightFromYear = adjustYearSelectionScreen((year) => year + 1);nn/**n * Navigate to the start of the row of years and display the year selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleHomeFromYear = adjustYearSelectionScreen(n (year) => year - (year % 3)n);nn/**n * Navigate to the end of the row of years and display the year selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handleEndFromYear = adjustYearSelectionScreen(n (year) => year + 2 - (year % 3)n);nn/**n * Navigate to back 12 years and display the year selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handlePageUpFromYear = adjustYearSelectionScreen(n (year) => year - YEAR_CHUNKn);nn/**n * Navigate forward 12 years and display the year selection screen.n *n * @param {KeyboardEvent} event the keydown eventn */nconst handlePageDownFromYear = adjustYearSelectionScreen(n (year) => year + YEAR_CHUNKn);nn/**n * update the focus on a year when the mouse moves.n *n * @param {MouseEvent} event The mousemove eventn * @param {HTMLButtonElement} dateEl A year element within the date picker componentn */nconst handleMousemoveFromYear = (yearEl) => {n if (yearEl.disabled) return;n if (yearEl.classList.contains(CALENDAR_YEAR_FOCUSED_CLASS)) return;nn const focusYear = parseInt(yearEl.dataset.value, 10);nn const newCalendar = displayYearSelection(yearEl, focusYear);n newCalendar.querySelector(CALENDAR_YEAR_FOCUSED).focus();n};nn// endregion Calendar Year Event Handlingnn// region Focus Handling Event Handlingnnconst tabHandler = (focusable) => {n const getFocusableContext = (el) => {n const { calendarEl } = getDatePickerContext(el);n const focusableElements = select(focusable, calendarEl);nn const firstTabIndex = 0;n const lastTabIndex = focusableElements.length - 1;n const firstTabStop = focusableElements;n const lastTabStop = focusableElements;n const focusIndex = focusableElements.indexOf(activeElement());nn const isLastTab = focusIndex === lastTabIndex;n const isFirstTab = focusIndex === firstTabIndex;n const isNotFound = focusIndex === -1;nn return {n focusableElements,n isNotFound,n firstTabStop,n isFirstTab,n lastTabStop,n isLastTab,n };n };nn return {n tabAhead(event) {n const { firstTabStop, isLastTab, isNotFound } = getFocusableContext(n event.targetn );nn if (isLastTab || isNotFound) {n event.preventDefault();n firstTabStop.focus();n }n },n tabBack(event) {n const { lastTabStop, isFirstTab, isNotFound } = getFocusableContext(n event.targetn );nn if (isFirstTab || isNotFound) {n event.preventDefault();n lastTabStop.focus();n }n },n };n};nnconst datePickerTabEventHandler = tabHandler(DATE_PICKER_FOCUSABLE);nconst monthPickerTabEventHandler = tabHandler(MONTH_PICKER_FOCUSABLE);nconst yearPickerTabEventHandler = tabHandler(YEAR_PICKER_FOCUSABLE);nn// endregion Focus Handling Event Handlingnn// region Date Picker Event Delegation Registration / Componentnnconst datePickerEvents = {n [CLICK]: {n [DATE_PICKER_BUTTON]() {n toggleCalendar(this);n },n [CALENDAR_DATE]() {n selectDate(this);n },n [CALENDAR_MONTH]() {n selectMonth(this);n },n [CALENDAR_YEAR]() {n selectYear(this);n },n [CALENDAR_PREVIOUS_MONTH]() {n displayPreviousMonth(this);n },n [CALENDAR_NEXT_MONTH]() {n displayNextMonth(this);n },n [CALENDAR_PREVIOUS_YEAR]() {n displayPreviousYear(this);n },n [CALENDAR_NEXT_YEAR]() {n displayNextYear(this);n },n [CALENDAR_PREVIOUS_YEAR_CHUNK]() {n displayPreviousYearChunk(this);n },n [CALENDAR_NEXT_YEAR_CHUNK]() {n displayNextYearChunk(this);n },n [CALENDAR_MONTH_SELECTION]() {n const newCalendar = displayMonthSelection(this);n newCalendar.querySelector(CALENDAR_MONTH_FOCUSED).focus();n },n [CALENDAR_YEAR_SELECTION]() {n const newCalendar = displayYearSelection(this);n newCalendar.querySelector(CALENDAR_YEAR_FOCUSED).focus();n },n },n keyup: {n [DATE_PICKER_CALENDAR](event) {n const keydown = this.dataset.keydownKeyCode;n if (`${event.keyCode}` !== keydown) {n event.preventDefault();n }n },n },n keydown: {n [DATE_PICKER_EXTERNAL_INPUT](event) {n if (event.keyCode === ENTER_KEYCODE) {n validateDateInput(this);n }n },n [CALENDAR_DATE]: keymap({n Up: handleUpFromDate,n ArrowUp: handleUpFromDate,n Down: handleDownFromDate,n ArrowDown: handleDownFromDate,n Left: handleLeftFromDate,n ArrowLeft: handleLeftFromDate,n Right: handleRightFromDate,n ArrowRight: handleRightFromDate,n Home: handleHomeFromDate,n End: handleEndFromDate,n PageDown: handlePageDownFromDate,n PageUp: handlePageUpFromDate,n "Shift+PageDown": handleShiftPageDownFromDate,n "Shift+PageUp": handleShiftPageUpFromDate,n }),n [CALENDAR_DATE_PICKER]: keymap({n Tab: datePickerTabEventHandler.tabAhead,n "Shift+Tab": datePickerTabEventHandler.tabBack,n }),n [CALENDAR_MONTH]: keymap({n Up: handleUpFromMonth,n ArrowUp: handleUpFromMonth,n Down: handleDownFromMonth,n ArrowDown: handleDownFromMonth,n Left: handleLeftFromMonth,n ArrowLeft: handleLeftFromMonth,n Right: handleRightFromMonth,n ArrowRight: handleRightFromMonth,n Home: handleHomeFromMonth,n End: handleEndFromMonth,n PageDown: handlePageDownFromMonth,n PageUp: handlePageUpFromMonth,n }),n [CALENDAR_MONTH_PICKER]: keymap({n Tab: monthPickerTabEventHandler.tabAhead,n "Shift+Tab": monthPickerTabEventHandler.tabBack,n }),n [CALENDAR_YEAR]: keymap({n Up: handleUpFromYear,n ArrowUp: handleUpFromYear,n Down: handleDownFromYear,n ArrowDown: handleDownFromYear,n Left: handleLeftFromYear,n ArrowLeft: handleLeftFromYear,n Right: handleRightFromYear,n ArrowRight: handleRightFromYear,n Home: handleHomeFromYear,n End: handleEndFromYear,n PageDown: handlePageDownFromYear,n PageUp: handlePageUpFromYear,n }),n [CALENDAR_YEAR_PICKER]: keymap({n Tab: yearPickerTabEventHandler.tabAhead,n "Shift+Tab": yearPickerTabEventHandler.tabBack,n }),n [DATE_PICKER_CALENDAR](event) {n this.dataset.keydownKeyCode = event.keyCode;n },n [DATE_PICKER](event) {n const keyMap = keymap({n Escape: handleEscapeFromCalendar,n });nn keyMap(event);n },n },n focusout: {n [DATE_PICKER_EXTERNAL_INPUT]() {n validateDateInput(this);n },n [DATE_PICKER](event) {n if (!this.contains(event.relatedTarget)) {n hideCalendar(this);n }n },n },n input: {n [DATE_PICKER_EXTERNAL_INPUT]() {n reconcileInputValues(this);n updateCalendarIfVisible(this);n },n },n};nnif (!isIosDevice()) {n datePickerEvents.mousemove = {n [CALENDAR_DATE_CURRENT_MONTH]() {n handleMousemoveFromDate(this);n },n [CALENDAR_MONTH]() {n handleMousemoveFromMonth(this);n },n [CALENDAR_YEAR]() {n handleMousemoveFromYear(this);n },n };n}nnconst datePicker = behavior(datePickerEvents, {n init(root) {n select(DATE_PICKER, root).forEach((datePickerEl) => {n enhanceDatePicker(datePickerEl);n });n },n getDatePickerContext,n disable,n enable,n isDateInputInvalid,n setCalendarValue,n validateDateInput,n renderCalendar,n updateCalendarIfVisible,n});nn// endregion Date Picker Event Delegation Registration / Componentnnmodule.exports = datePicker;n“,”const behavior = require("../utils/behavior");nconst select = require("../utils/select");nconst { prefix: PREFIX } = require("../config");nconst {n getDatePickerContext,n isDateInputInvalid,n updateCalendarIfVisible,n} = require("./date-picker");nnconst DATE_PICKER_CLASS = `${PREFIX}-date-picker`;nconst DATE_RANGE_PICKER_CLASS = `${PREFIX}-date-range-picker`;nconst DATE_RANGE_PICKER_RANGE_START_CLASS = `${DATE_RANGE_PICKER_CLASS}__range-start`;nconst DATE_RANGE_PICKER_RANGE_END_CLASS = `${DATE_RANGE_PICKER_CLASS}__range-end`;nnconst DATE_PICKER = `.${DATE_PICKER_CLASS}`;nconst DATE_RANGE_PICKER = `.${DATE_RANGE_PICKER_CLASS}`;nconst DATE_RANGE_PICKER_RANGE_START = `.${DATE_RANGE_PICKER_RANGE_START_CLASS}`;nconst DATE_RANGE_PICKER_RANGE_END = `.${DATE_RANGE_PICKER_RANGE_END_CLASS}`;nnconst DEFAULT_MIN_DATE = "0000-01-01";nn/**n * The properties and elements within the date range picker.n * @typedef {Object} DateRangePickerContextn * @property {HTMLElement} dateRangePickerEln * @property {HTMLElement} rangeStartEln * @property {HTMLElement} rangeEndEln */nn/**n * Get an object of the properties and elements belonging directly to the givenn * date picker component.n *n * @param {HTMLElement} el the element within the date pickern * @returns {DateRangePickerContext} elementsn */nconst getDateRangePickerContext = (el) => {n const dateRangePickerEl = el.closest(DATE_RANGE_PICKER);nn if (!dateRangePickerEl) {n throw new Error(`Element is missing outer ${DATE_RANGE_PICKER}`);n }nn const rangeStartEl = dateRangePickerEl.querySelector(n DATE_RANGE_PICKER_RANGE_STARTn );n const rangeEndEl = dateRangePickerEl.querySelector(n DATE_RANGE_PICKER_RANGE_ENDn );nn return {n dateRangePickerEl,n rangeStartEl,n rangeEndEl,n };n};nn/**n * handle update from range start date pickern *n * @param {HTMLElement} el an element within the date range pickern */nconst handleRangeStartUpdate = (el) => {n const {n dateRangePickerEl,n rangeStartEl,n rangeEndEl,n } = getDateRangePickerContext(el);n const { internalInputEl } = getDatePickerContext(rangeStartEl);n const updatedDate = internalInputEl.value;nn if (updatedDate && !isDateInputInvalid(internalInputEl)) {n rangeEndEl.dataset.minDate = updatedDate;n rangeEndEl.dataset.rangeDate = updatedDate;n rangeEndEl.dataset.defaultDate = updatedDate;n } else {n rangeEndEl.dataset.minDate = dateRangePickerEl.dataset.minDate || "";n rangeEndEl.dataset.rangeDate = "";n rangeEndEl.dataset.defaultDate = "";n }nn updateCalendarIfVisible(rangeEndEl);n};nn/**n * handle update from range start date pickern *n * @param {HTMLElement} el an element within the date range pickern */nconst handleRangeEndUpdate = (el) => {n const {n dateRangePickerEl,n rangeStartEl,n rangeEndEl,n } = getDateRangePickerContext(el);n const { internalInputEl } = getDatePickerContext(rangeEndEl);n const updatedDate = internalInputEl.value;nn if (updatedDate && !isDateInputInvalid(internalInputEl)) {n rangeStartEl.dataset.maxDate = updatedDate;n rangeStartEl.dataset.rangeDate = updatedDate;n rangeStartEl.dataset.defaultDate = updatedDate;n } else {n rangeStartEl.dataset.maxDate = dateRangePickerEl.dataset.maxDate || "";n rangeStartEl.dataset.rangeDate = "";n rangeStartEl.dataset.defaultDate = "";n }nn updateCalendarIfVisible(rangeStartEl);n};nn/**n * Enhance an input with the date picker elementsn *n * @param {HTMLElement} el The initial wrapping element of the date range picker componentn */nconst enhanceDateRangePicker = (el) => {n const dateRangePickerEl = el.closest(DATE_RANGE_PICKER);nn const [rangeStart, rangeEnd] = select(DATE_PICKER, dateRangePickerEl);nn if (!rangeStart) {n throw new Error(n `${DATE_RANGE_PICKER} is missing inner two '${DATE_PICKER}' elements`n );n }nn if (!rangeEnd) {n throw new Error(n `${DATE_RANGE_PICKER} is missing second '${DATE_PICKER}' element`n );n }nn rangeStart.classList.add(DATE_RANGE_PICKER_RANGE_START_CLASS);n rangeEnd.classList.add(DATE_RANGE_PICKER_RANGE_END_CLASS);nn if (!dateRangePickerEl.dataset.minDate) {n dateRangePickerEl.dataset.minDate = DEFAULT_MIN_DATE;n }nn const minDate = dateRangePickerEl.dataset.minDate;n rangeStart.dataset.minDate = minDate;n rangeEnd.dataset.minDate = minDate;nn const maxDate = dateRangePickerEl.dataset.maxDate;n if (maxDate) {n rangeStart.dataset.maxDate = maxDate;n rangeEnd.dataset.maxDate = maxDate;n }nn handleRangeStartUpdate(dateRangePickerEl);n handleRangeEndUpdate(dateRangePickerEl);n};nnconst dateRangePicker = behavior(n {n "input change": {n [DATE_RANGE_PICKER_RANGE_START]() {n handleRangeStartUpdate(this);n },n [DATE_RANGE_PICKER_RANGE_END]() {n handleRangeEndUpdate(this);n },n },n },n {n init(root) {n select(DATE_RANGE_PICKER, root).forEach((dateRangePickerEl) => {n enhanceDateRangePicker(dateRangePickerEl);n });n },n }n);nnmodule.exports = dateRangePicker;n“,”const select = require("../utils/select");nconst behavior = require("../utils/behavior");nconst { prefix: PREFIX } = require("../config");nnconst DROPZONE_CLASS = `${PREFIX}-file-input`;nconst DROPZONE = `.${DROPZONE_CLASS}`;nconst INPUT_CLASS = `${PREFIX}-file-input__input`;nconst TARGET_CLASS = `${PREFIX}-file-input__target`;nconst INPUT = `.${INPUT_CLASS}`;nconst BOX_CLASS = `${PREFIX}-file-input__box`;nconst INSTRUCTIONS_CLASS = `${PREFIX}-file-input__instructions`;nconst PREVIEW_CLASS = `${PREFIX}-file-input__preview`;nconst PREVIEW_HEADING_CLASS = `${PREFIX}-file-input__preview-heading`;nconst DISABLED_CLASS = `${PREFIX}-file-input–disabled`;nconst CHOOSE_CLASS = `${PREFIX}-file-input__choose`;nconst ACCEPTED_FILE_MESSAGE_CLASS = `${PREFIX}-file-input__accepted-files-message`;nconst DRAG_TEXT_CLASS = `${PREFIX}-file-input__drag-text`;nconst DRAG_CLASS = `${PREFIX}-file-input–drag`;nconst LOADING_CLASS = "is-loading";nconst HIDDEN_CLASS = "display-none";nconst INVALID_FILE_CLASS = "has-invalid-file";nconst GENERIC_PREVIEW_CLASS_NAME = `${PREFIX}-file-input__preview-image`;nconst GENERIC_PREVIEW_CLASS = `${GENERIC_PREVIEW_CLASS_NAME}–generic`;nconst PDF_PREVIEW_CLASS = `${GENERIC_PREVIEW_CLASS_NAME}–pdf`;nconst WORD_PREVIEW_CLASS = `${GENERIC_PREVIEW_CLASS_NAME}–word`;nconst VIDEO_PREVIEW_CLASS = `${GENERIC_PREVIEW_CLASS_NAME}–video`;nconst EXCEL_PREVIEW_CLASS = `${GENERIC_PREVIEW_CLASS_NAME}–excel`;nconst SPACER_GIF =n "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";nn/**n * The properties and elements within the file input.n * @typedef {Object} FileInputContextn * @property {HTMLDivElement} dropZoneEln * @property {HTMLInputElement} inputEln */nn/**n * Get an object of the properties and elements belonging directly to the givenn * file input component.n *n * @param {HTMLElement} el the element within the file inputn * @returns {FileInputContext} elementsn */nconst getFileInputContext = (el) => {n const dropZoneEl = el.closest(DROPZONE);nn if (!dropZoneEl) {n throw new Error(`Element is missing outer ${DROPZONE}`);n }nn const inputEl = dropZoneEl.querySelector(INPUT);nn return {n dropZoneEl,n inputEl,n };n};nn/**n * Disable the file input componentn *n * @param {HTMLElement} el An element within the file input componentn */nconst disable = (el) => {n const { dropZoneEl, inputEl } = getFileInputContext(el);nn inputEl.disabled = true;n dropZoneEl.classList.add(DISABLED_CLASS);n dropZoneEl.setAttribute("aria-disabled", "true");n};nn/**n * Enable the file input componentn *n * @param {HTMLElement} el An element within the file input componentn */nconst enable = (el) => {n const { dropZoneEl, inputEl } = getFileInputContext(el);nn inputEl.disabled = false;n dropZoneEl.classList.remove(DISABLED_CLASS);n dropZoneEl.removeAttribute("aria-disabled");n};nn/**n * Creates an ID name for each file that strips all invalid characters.n * @param {string} name - name of the file added to file inputn * @returns {string} same characters as the name with invalid chars removedn */nconst makeSafeForID = (name) => {n return name.replace(//g, function replaceName(s) {n const c = s.charCodeAt(0);n if (c === 32) return "-";n if (c >= 65 && c <= 90) return `img_${s.toLowerCase()}`;n return `__${("000", c.toString(16)).slice(-4)}`;n });n};nn/**n * Builds full file input comonentn * @param {HTMLElement} fileInputEl - original file input on pagen * @returns {HTMLElement|HTMLElement} - Instructions, target area divn */nconst buildFileInput = (fileInputEl) => {n const acceptsMultiple = fileInputEl.hasAttribute("multiple");n const fileInputParent = document.createElement("div");n const dropTarget = document.createElement("div");n const box = document.createElement("div");n const instructions = document.createElement("div");n const disabled = fileInputEl.hasAttribute("disabled");nn // Adds class names and other attributesn fileInputEl.classList.remove(DROPZONE_CLASS);n fileInputEl.classList.add(INPUT_CLASS);n fileInputParent.classList.add(DROPZONE_CLASS);n box.classList.add(BOX_CLASS);n instructions.classList.add(INSTRUCTIONS_CLASS);n instructions.setAttribute("aria-hidden", "true");n dropTarget.classList.add(TARGET_CLASS);nn // Adds child elements to the DOMn fileInputEl.parentNode.insertBefore(dropTarget, fileInputEl);n fileInputEl.parentNode.insertBefore(fileInputParent, dropTarget);n dropTarget.appendChild(fileInputEl);n fileInputParent.appendChild(dropTarget);n fileInputEl.parentNode.insertBefore(instructions, fileInputEl);n fileInputEl.parentNode.insertBefore(box, fileInputEl);nn // Disabled stylingn if (disabled) {n disable(fileInputEl);n }nn // Sets instruction test based on whether or not multiple files are acceptedn if (acceptsMultiple) {n instructions.innerHTML = `<span class="${DRAG_TEXT_CLASS}">Drag files here or </span><span class="${CHOOSE_CLASS}">choose from folder</span>`;n } else {n instructions.innerHTML = `<span class="${DRAG_TEXT_CLASS}">Drag file here or </span><span class="${CHOOSE_CLASS}">choose from folder</span>`;n }nn // IE11 and Edge do not support drop files on file inputs, so we've removed text that indicates thatn if (n /rv:11.0/i.test(navigator.userAgent) ||n /Edge\/\d./i.test(navigator.userAgent)n ) {n fileInputParent.querySelector(`.${DRAG_TEXT_CLASS}`).outerHTML = "";n }nn return { instructions, dropTarget };n};nn/**n * Removes image previews, we want to start with a clean list every time files are added to the file inputn * @param {HTMLElement} dropTarget - target area div that encases the inputn * @param {HTMLElement} instructions - text to inform users to drag or select filesn */nconst removeOldPreviews = (dropTarget, instructions) => {n const filePreviews = dropTarget.querySelectorAll(`.${PREVIEW_CLASS}`);n const currentPreviewHeading = dropTarget.querySelector(n `.${PREVIEW_HEADING_CLASS}`n );n const currentErrorMessage = dropTarget.querySelector(n `.${ACCEPTED_FILE_MESSAGE_CLASS}`n );nn // Remove the heading above the previewsn if (currentPreviewHeading) {n currentPreviewHeading.outerHTML = "";n }nn // Remove existing error messagesn if (currentErrorMessage) {n currentErrorMessage.outerHTML = "";n dropTarget.classList.remove(INVALID_FILE_CLASS);n }nn // Get rid of existing previews if they exist, show instructionsn if (filePreviews !== null) {n if (instructions) {n instructions.classList.remove(HIDDEN_CLASS);n }n Array.prototype.forEach.call(filePreviews, function removeImages(node) {n node.parentNode.removeChild(node);n });n }n};nn/**n * When using an Accept attribute, invalid files will be hidden fromn * file browser, but they can still be dragged to the input. Thisn * function prevents them from being dragged and removes error statesn * when correct files are added.n * @param {event} en * @param {HTMLElement} fileInputEl - file input elementn * @param {HTMLElement} instructions - text to inform users to drag or select filesn * @param {HTMLElement} dropTarget - target area div that encases the inputn */nconst preventInvalidFiles = (e, fileInputEl, instructions, dropTarget) => {n const acceptedFilesAttr = fileInputEl.getAttribute("accept");n dropTarget.classList.remove(INVALID_FILE_CLASS);nn // Runs if only specific files are acceptedn if (acceptedFilesAttr) {n const acceptedFiles = acceptedFilesAttr.split(",");n const errorMessage = document.createElement("div");nn // If multiple files are dragged, this iterates through them and look for any files that are not accepted.n let allFilesAllowed = true;n for (let i = 0; i < e.dataTransfer.files.length; i += 1) {n const file = e.dataTransfer.files;n if (allFilesAllowed) {n for (let j = 0; j < acceptedFiles.length; j += 1) {n const fileType = acceptedFiles;n allFilesAllowed =n file.name.indexOf(fileType) > 0 ||n file.type.includes(fileType.replace(/*/g, ""));n if (allFilesAllowed) break;n }n } else break;n }nn // If dragged files are not accepted, this removes them from the value of the input and creates and error staten if (!allFilesAllowed) {n removeOldPreviews(dropTarget, instructions);n fileInputEl.value = ""; // eslint-disable-line no-param-reassignn dropTarget.insertBefore(errorMessage, fileInputEl);n errorMessage.innerHTML = `This is not a valid file type.`;n errorMessage.classList.add(ACCEPTED_FILE_MESSAGE_CLASS);n dropTarget.classList.add(INVALID_FILE_CLASS);n e.preventDefault();n e.stopPropagation();n }n }n};nn/**n * When new files are applied to file input, this function generates previewsn * and removes old ones.n * @param {event} en * @param {HTMLElement} fileInputEl - file input elementn * @param {HTMLElement} instructions - text to inform users to drag or select filesn * @param {HTMLElement} dropTarget - target area div that encases the inputn */nconst handleChange = (e, fileInputEl, instructions, dropTarget) => {n const fileNames = e.target.files;n const filePreviewsHeading = document.createElement("div");nn // First, get rid of existing previewsn removeOldPreviews(dropTarget, instructions);nn // Iterates through files list and creates previewsn for (let i = 0; i < fileNames.length; i += 1) {n const reader = new FileReader();n const fileName = fileNames.name;nn // Starts with a loading image while preview is createdn reader.onloadstart = function createLoadingImage() {n const imageId = makeSafeForID(fileName);n const previewImage = `<img id="${imageId}" src="${SPACER_GIF}" alt="" class="${GENERIC_PREVIEW_CLASS_NAME} ${LOADING_CLASS}"/>`;nn instructions.insertAdjacentHTML(n "afterend",n `<div class="${PREVIEW_CLASS}" aria-hidden="true">${previewImage}${fileName}<div>`n );n };nn // Not all files will be able to generate previews. In case this happens, we provide several types "generic previews" based on the file extension.n reader.onloadend = function createFilePreview() {n const imageId = makeSafeForID(fileName);n const previewImage = document.getElementById(imageId);n if (fileName.indexOf(".pdf") > 0) {n previewImage.setAttribute(n "onerror",n `this.onerror=null;this.src="${SPACER_GIF}"; this.classList.add("${PDF_PREVIEW_CLASS}")`n );n } else if (n fileName.indexOf(".doc") > 0 ||n fileName.indexOf(".pages") > 0n ) {n previewImage.setAttribute(n "onerror",n `this.onerror=null;this.src="${SPACER_GIF}"; this.classList.add("${WORD_PREVIEW_CLASS}")`n );n } else if (n fileName.indexOf(".xls") > 0 ||n fileName.indexOf(".numbers") > 0n ) {n previewImage.setAttribute(n "onerror",n `this.onerror=null;this.src="${SPACER_GIF}"; this.classList.add("${EXCEL_PREVIEW_CLASS}")`n );n } else if (fileName.indexOf(".mov") > 0 || fileName.indexOf(".mp4") > 0) {n previewImage.setAttribute(n "onerror",n `this.onerror=null;this.src="${SPACER_GIF}"; this.classList.add("${VIDEO_PREVIEW_CLASS}")`n );n } else {n previewImage.setAttribute(n "onerror",n `this.onerror=null;this.src="${SPACER_GIF}"; this.classList.add("${GENERIC_PREVIEW_CLASS}")`n );n }nn // Removes loader and displays previewn previewImage.classList.remove(LOADING_CLASS);n previewImage.src = reader.result;n };nn if (fileNames) {n reader.readAsDataURL(fileNames);n }nn // Adds heading above file previews, pluralizes if there are multiplen if (i === 0) {n dropTarget.insertBefore(filePreviewsHeading, instructions);n filePreviewsHeading.innerHTML = `Selected file <span class="usa-file-input__choose">Change file</span>`;n } else if (i >= 1) {n dropTarget.insertBefore(filePreviewsHeading, instructions);n filePreviewsHeading.innerHTML = `${n i + 1n } files selected <span class="usa-file-input__choose">Change files</span>`;n }nn // Hides null state content and sets preview heading classn if (filePreviewsHeading) {n instructions.classList.add(HIDDEN_CLASS);n filePreviewsHeading.classList.add(PREVIEW_HEADING_CLASS);n }n }n};nnconst fileInput = behavior(n {},n {n init(root) {n select(DROPZONE, root).forEach((fileInputEl) => {n const { instructions, dropTarget } = buildFileInput(fileInputEl);nn dropTarget.addEventListener(n "dragover",n function handleDragOver() {n this.classList.add(DRAG_CLASS);n },n falsen );nn dropTarget.addEventListener(n "dragleave",n function handleDragLeave() {n this.classList.remove(DRAG_CLASS);n },n falsen );nn dropTarget.addEventListener(n "drop",n function handleDrop(e) {n preventInvalidFiles(e, fileInputEl, instructions, dropTarget);n this.classList.remove(DRAG_CLASS);n },n falsen );nn // eslint-disable-next-line no-param-reassignn fileInputEl.onchange = (e) => {n handleChange(e, fileInputEl, instructions, dropTarget);n };n });n },n getFileInputContext,n disable,n enable,n }n);nnmodule.exports = fileInput;n“,”const debounce = require("lodash.debounce");nconst behavior = require("../utils/behavior");nconst select = require("../utils/select");nconst { CLICK } = require("../events");nconst { prefix: PREFIX } = require("../config");nnconst HIDDEN = "hidden";nconst SCOPE = `.${PREFIX}-footer–big`;nconst NAV = `${SCOPE} nav`;nconst BUTTON = `${NAV} .${PREFIX}-footer__primary-link`;nconst COLLAPSIBLE = `.${PREFIX}-footer__primary-content–collapsible`;nnconst HIDE_MAX_WIDTH = 480;nconst DEBOUNCE_RATE = 180;nnfunction showPanel() {n if (window.innerWidth < HIDE_MAX_WIDTH) {n const collapseEl = this.closest(COLLAPSIBLE);n collapseEl.classList.toggle(HIDDEN);nn // NB: this should always succeed because the buttonn // selector is scoped to ".{prefix}-footer-big nav"n const collapsibleEls = select(COLLAPSIBLE, collapseEl.closest(NAV));nn collapsibleEls.forEach((el) => {n if (el !== collapseEl) {n el.classList.add(HIDDEN);n }n });n }n}nnlet lastInnerWidth;nnconst resize = debounce(() => {n if (lastInnerWidth === window.innerWidth) return;n lastInnerWidth = window.innerWidth;n const hidden = window.innerWidth < HIDE_MAX_WIDTH;n select(COLLAPSIBLE).forEach((list) => list.classList.toggle(HIDDEN, hidden));n}, DEBOUNCE_RATE);nnmodule.exports = behavior(n {n [CLICK]: {n [BUTTON]: showPanel,n },n },n {n // export for use elsewheren HIDE_MAX_WIDTH,n DEBOUNCE_RATE,nn init() {n resize();n window.addEventListener("resize", resize);n },nn teardown() {n window.removeEventListener("resize", resize);n },n }n);n“,”const accordion = require("./accordion");nconst banner = require("./banner");nconst characterCount = require("./character-count");nconst comboBox = require("./combo-box");nconst fileInput = require("./file-input");nconst footer = require("./footer");nconst navigation = require("./navigation");nconst password = require("./password");nconst search = require("./search");nconst skipnav = require("./skipnav");nconst tooltip = require("./tooltip");nconst validator = require("./validator");nconst datePicker = require("./date-picker");nconst dateRangePicker = require("./date-range-picker");nconst timePicker = require("./time-picker");nnmodule.exports = {n accordion,n banner,n characterCount,n comboBox,n datePicker,n dateRangePicker,n fileInput,n footer,n navigation,n password,n search,n skipnav,n timePicker,n tooltip,n validator,n};n“,”const behavior = require("../utils/behavior");nconst select = require("../utils/select");nconst toggle = require("../utils/toggle");nconst FocusTrap = require("../utils/focus-trap");nconst accordion = require("./accordion");nnconst { CLICK } = require("../events");nconst { prefix: PREFIX } = require("../config");nnconst BODY = "body";nconst NAV = `.${PREFIX}-nav`;nconst NAV_LINKS = `${NAV} a`;nconst NAV_CONTROL = `button.${PREFIX}-nav__link`;nconst OPENERS = `.${PREFIX}-menu-btn`;nconst CLOSE_BUTTON = `.${PREFIX}-nav__close`;nconst OVERLAY = `.${PREFIX}-overlay`;nconst CLOSERS = `${CLOSE_BUTTON}, .${PREFIX}-overlay`;nconst TOGGLES = [NAV, OVERLAY].join(", ");nnconst ACTIVE_CLASS = "usa-js-mobile-nav–active";nconst VISIBLE_CLASS = "is-visible";nnlet navigation;nlet navActive;nnconst isActive = () => document.body.classList.contains(ACTIVE_CLASS);nnconst toggleNav = (active) => {n const { body } = document;n const safeActive = typeof active === "boolean" ? active : !isActive();nn body.classList.toggle(ACTIVE_CLASS, safeActive);nn select(TOGGLES).forEach((el) =>n el.classList.toggle(VISIBLE_CLASS, safeActive)n );nn navigation.focusTrap.update(safeActive);nn const closeButton = body.querySelector(CLOSE_BUTTON);n const menuButton = body.querySelector(OPENERS);nn if (safeActive && closeButton) {n // The mobile nav was just activated, so focus on the close button,n // which is just before all the nav elements in the tab order.n closeButton.focus();n } else if (n !safeActive &&n document.activeElement === closeButton &&n menuButtonn ) {n // The mobile nav was just deactivated, and focus was on the closen // button, which is no longer visible. We don't want the focus ton // disappear into the void, so focus on the menu button if it'sn // visible (this may have been what the user was just focused on,n // if they triggered the mobile nav by mistake).n menuButton.focus();n }nn return safeActive;n};nnconst resize = () => {n const closer = document.body.querySelector(CLOSE_BUTTON);nn if (isActive() && closer && closer.getBoundingClientRect().width === 0) {n // When the mobile nav is active, and the close box isn't visible,n // we know the user's viewport has been resized to be larger.n // Let's make the page state consistent by deactivating the mobile nav.n navigation.toggleNav.call(closer, false);n }n};nnconst onMenuClose = () => navigation.toggleNav.call(navigation, false);nconst hideActiveNavDropdown = () => {n toggle(navActive, false);n navActive = null;n};nnnavigation = behavior(n {n [CLICK]: {n [NAV_CONTROL]() {n // If another nav is open, close itn if (navActive && navActive !== this) {n hideActiveNavDropdown();n }n // store a reference to the last clicked nav link element, so wen // can hide the dropdown if another element on the page is clickedn if (navActive) {n hideActiveNavDropdown();n } else {n navActive = this;n toggle(navActive, true);n }nn // Do this so the event handler on the body doesn't firen return false;n },n [BODY]() {n if (navActive) {n hideActiveNavDropdown();n }n },n [OPENERS]: toggleNav,n [CLOSERS]: toggleNav,n [NAV_LINKS]() {n // A navigation link has been clicked! We want to collapse anyn // hierarchical navigation UI it's a part of, so that the usern // can focus on whatever they've just selected.nn // Some navigation links are inside accordions; when they'ren // clicked, we want to collapse those accordions.n const acc = this.closest(accordion.ACCORDION);nn if (acc) {n accordion.getButtons(acc).forEach((btn) => accordion.hide(btn));n }nn // If the mobile navigation menu is active, we want to hide it.n if (isActive()) {n navigation.toggleNav.call(navigation, false);n }n },n },n },n {n init(root) {n const trapContainer = root.querySelector(NAV);nn if (trapContainer) {n navigation.focusTrap = FocusTrap(trapContainer, {n Escape: onMenuClose,n });n }nn resize();n window.addEventListener("resize", resize, false);n },n teardown() {n window.removeEventListener("resize", resize, false);n navActive = false;n },n focusTrap: null,n toggleNav,n }n);nnmodule.exports = navigation;n“,”const behavior = require("../utils/behavior");nconst toggleFormInput = require("../utils/toggle-form-input");nnconst { CLICK } = require("../events");nconst { prefix: PREFIX } = require("../config");nnconst LINK = `.${PREFIX}-show-password, .${PREFIX}-show-multipassword`;nnfunction toggle(event) {n event.preventDefault();n toggleFormInput(this);n}nnmodule.exports = behavior({n [CLICK]: {n [LINK]: toggle,n },n});n“,”const ignore = require("receptor/ignore");nconst behavior = require("../utils/behavior");nconst select = require("../utils/select");nnconst { CLICK } = require("../events");nnconst BUTTON = ".js-search-button";nconst FORM = ".js-search-form";nconst INPUT = "[type=search]";nconst CONTEXT = "header"; // XXXnnlet lastButton;nnconst getForm = (button) => {n const context = button.closest(CONTEXT);n return context ? context.querySelector(FORM) : document.querySelector(FORM);n};nnconst toggleSearch = (button, active) => {n const form = getForm(button);nn if (!form) {n throw new Error(`No ${FORM} found for search toggle in ${CONTEXT}!`);n }nn /* eslint-disable no-param-reassign */n button.hidden = active;n form.hidden = !active;n /* eslint-enable */nn if (!active) {n return;n }nn const input = form.querySelector(INPUT);nn if (input) {n input.focus();n }n // when the user clicks outside of the form w/ignore(): hide then // search, then remove the listenern const listener = ignore(form, () => {n if (lastButton) {n hideSearch.call(lastButton); // eslint-disable-line no-use-before-definen }nn document.body.removeEventListener(CLICK, listener);n });nn // Normally we would just run this code without a timeout, butn // IE11 and Edge will actually call the listener immediately becausen // they are currently handling this exact type of event, so we'lln // make sure the browser is done handling the current click event,n // if any, before we attach the listener.n setTimeout(() => {n document.body.addEventListener(CLICK, listener);n }, 0);n};nnfunction showSearch() {n toggleSearch(this, true);n lastButton = this;n}nnfunction hideSearch() {n toggleSearch(this, false);n lastButton = undefined;n}nnconst search = behavior(n {n [CLICK]: {n [BUTTON]: showSearch,n },n },n {n init(target) {n select(BUTTON, target).forEach((button) => {n toggleSearch(button, false);n });n },n teardown() {n // forget the last button clickedn lastButton = undefined;n },n }n);nnmodule.exports = search;n“,”const once = require("receptor/once");nconst behavior = require("../utils/behavior");nconst { CLICK } = require("../events");nconst { prefix: PREFIX } = require("../config");nnconst LINK = `.${PREFIX}-skipnav, .${PREFIX}-footer__return-to-top [href^="#"]`;nconst MAINCONTENT = "main-content";nnfunction setTabindex() {n // NB: we know because of the selector we're delegating to below that then // href already begins with '#'n const id = encodeURI(this.getAttribute("href"));n const target = document.getElementById(n id === "#" ? MAINCONTENT : id.slice(1)n );nn if (target) {n target.style.outline = "0";n target.setAttribute("tabindex", 0);n target.focus();n target.addEventListener(n "blur",n once(() => {n target.setAttribute("tabindex", -1);n })n );n } else {n // throw an error?n }n}nnmodule.exports = behavior({n [CLICK]: {n [LINK]: setTabindex,n },n});n“,”const behavior = require("../utils/behavior");nconst select = require("../utils/select");nconst { prefix: PREFIX } = require("../config");nconst { COMBO_BOX_CLASS, enhanceComboBox } = require("./combo-box");nnconst TIME_PICKER_CLASS = `${PREFIX}-time-picker`;nconst TIME_PICKER = `.${TIME_PICKER_CLASS}`;nconst MAX_TIME = 60 * 24 - 1;nconst MIN_TIME = 0;nconst DEFAULT_STEP = 30;nconst MIN_STEP = 1;nnconst FILTER_DATASET = {n filter:n "0?{{ hourQueryFilter }}:{{minuteQueryFilter}}.*{{ apQueryFilter }}m?",n apQueryFilter: "([ap])",n hourQueryFilter: "([1-9]?)",n minuteQueryFilter: "[\\d]+:({0,2})",n};nn/**n * Parse a string of hh:mm into minutesn *n * @param {string} timeStr the time string to parsen * @returns {number} the number of minutesn */nconst parseTimeString = (timeStr) => {n let minutes;nn if (timeStr) {n const [hours, mins] = timeStr.split(":").map((str) => {n let value;n const parsed = parseInt(str, 10);n if (!Number.isNaN(parsed)) value = parsed;n return value;n });nn if (hours != null && mins != null) {n minutes = hours * 60 + mins;n }n }nn return minutes;n};nn/**n * Enhance an input with the date picker elementsn *n * @param {HTMLElement} el The initial wrapping element of the date picker componentn */nconst transformTimePicker = (el) => {n const timePickerEl = el.closest(TIME_PICKER);nn const initialInputEl = timePickerEl.querySelector(`input`);nn if (!initialInputEl) {n throw new Error(`${TIME_PICKER} is missing inner input`);n }nn const selectEl = document.createElement("select");nn ["id", "name", "required", "aria-label", "aria-labelledby"].forEach(n (name) => {n if (initialInputEl.hasAttribute(name)) {n const value = initialInputEl.getAttribute(name);n selectEl.setAttribute(name, value);n initialInputEl.removeAttribute(name);n }n }n );nn const padZeros = (value, length) => {n return `0000${value}`.slice(-length);n };nn const getTimeContext = (minutes) => {n const minute = minutes % 60;n const hour24 = Math.floor(minutes / 60);n const hour12 = hour24 % 12 || 12;n const ampm = hour24 < 12 ? "am" : "pm";nn return {n minute,n hour24,n hour12,n ampm,n };n };nn const minTime = Math.max(n MIN_TIME,n parseTimeString(timePickerEl.dataset.minTime) || MIN_TIMEn );n const maxTime = Math.min(n MAX_TIME,n parseTimeString(timePickerEl.dataset.maxTime) || MAX_TIMEn );n const step = Math.floor(n Math.max(MIN_STEP, timePickerEl.dataset.step || DEFAULT_STEP)n );nn for (let time = minTime; time <= maxTime; time += step) {n const { minute, hour24, hour12, ampm } = getTimeContext(time);nn const option = document.createElement("option");n option.value = `${padZeros(hour24, 2)}:${padZeros(minute, 2)}`;n option.text = `${hour12}:${padZeros(minute, 2)}${ampm}`;n selectEl.appendChild(option);n }nn timePickerEl.classList.add(COMBO_BOX_CLASS);nn // combo box propertiesn Object.keys(FILTER_DATASET).forEach((key) => {n timePickerEl.dataset = FILTER_DATASET;n });n timePickerEl.dataset.disableFiltering = "true";nn timePickerEl.appendChild(selectEl);n initialInputEl.style.display = "none";n};nnconst timePicker = behavior(n {},n {n init(root) {n select(TIME_PICKER, root).forEach((timePickerEl) => {n transformTimePicker(timePickerEl);n enhanceComboBox(timePickerEl);n });n },n FILTER_DATASET,n }n);nnmodule.exports = timePicker;n“,”// Tooltipsnconst select = require("../utils/select");nconst behavior = require("../utils/behavior");nconst { prefix: PREFIX } = require("../config");nconst isElementInViewport = require("../utils/is-in-viewport");nnconst TOOLTIP = `.${PREFIX}-tooltip`;nconst TOOLTIP_TRIGGER_CLASS = `${PREFIX}-tooltip__trigger`;nconst TOOLTIP_CLASS = `${PREFIX}-tooltip`;nconst TOOLTIP_BODY_CLASS = `${PREFIX}-tooltip__body`;nconst SET_CLASS = "is-set";nconst VISIBLE_CLASS = "is-visible";nconst TRIANGLE_SIZE = 5;nconst SPACER = 2;nconst ADJUST_WIDTH_CLASS = `${PREFIX}-tooltip__body–wrap`;nn/**n * Add one or more listeners to an elementn * @param {DOMElement} element - DOM element to add listeners ton * @param {events} eventNames - space separated list of event names, e.g. 'click change'n * @param {Function} listener - function to attach for each event as a listenern */nconst addListenerMulti = (element, eventNames, listener) => {n const events = eventNames.split(" ");n for (let i = 0, iLen = events.length; i < iLen; i += 1) {n element.addEventListener(events, listener, false);n }n};nn/**n * Shows the tooltipn * @param {HTMLElement} tooltipTrigger - the element that initializes the tooltipn */nconst showToolTip = (tooltipBody, tooltipTrigger, position, wrapper) => {n tooltipBody.setAttribute("aria-hidden", "false");nn // This sets up the tooltip body. The opacity is 0, butn // we can begin running the calculations below.n tooltipBody.classList.add(SET_CLASS);nn // Calculate sizing and adjustments for positioningn const tooltipWidth = tooltipTrigger.offsetWidth;n const tooltipHeight = tooltipTrigger.offsetHeight;n const offsetForTopMargin = parseInt(n window.getComputedStyle(tooltipTrigger).getPropertyValue("margin-top"),n 10n );n const offsetForBottomMargin = parseInt(n window.getComputedStyle(tooltipTrigger).getPropertyValue("margin-bottom"),n 10n );n const offsetForTopPadding = parseInt(n window.getComputedStyle(wrapper).getPropertyValue("padding-top"),n 10n );n const offsetForBottomPadding = parseInt(n window.getComputedStyle(wrapper).getPropertyValue("padding-bottom"),n 10n );n const offsetForTooltipBodyHeight = parseInt(n window.getComputedStyle(tooltipBody).getPropertyValue("height"),n 10n );n const leftOffset = tooltipTrigger.offsetLeft;n const toolTipBodyWidth = tooltipBody.offsetWidth;n const adjustHorizontalCenter = tooltipWidth / 2 + leftOffset;n const adjustToEdgeX = tooltipWidth + TRIANGLE_SIZE + SPACER;n const adjustToEdgeY = tooltipHeight + TRIANGLE_SIZE + SPACER;nn /**n * Position the tooltip body when the trigger is hoveredn * Removes old positioning classnames and reapplies. This allowsn * positioning to change in case the user resizes browser or DOM manipulationn * causes tooltip to get clipped from viewportn *n * @param {string} setPos - can be "top", "bottom", "right", "left"n */n const setPositionClass = (setPos) => {n tooltipBody.classList.remove(`${TOOLTIP_BODY_CLASS}–top`);n tooltipBody.classList.remove(`${TOOLTIP_BODY_CLASS}–bottom`);n tooltipBody.classList.remove(`${TOOLTIP_BODY_CLASS}–right`);n tooltipBody.classList.remove(`${TOOLTIP_BODY_CLASS}–left`);n tooltipBody.classList.add(`${TOOLTIP_BODY_CLASS}–${setPos}`);n };nn /**n * Positions tooltip at the topn * We check if the element is in the viewport so we know whether or not wen * need to constrain the widthn * @param {HTMLElement} e - this is the tooltip bodyn */n const positionTop = (e) => {n setPositionClass("top");n e.style.marginLeft = `${adjustHorizontalCenter}px`;n if (!isElementInViewport(e)) {n e.classList.add(ADJUST_WIDTH_CLASS);n }n e.style.marginBottom = `${n adjustToEdgeY + offsetForBottomMargin + offsetForBottomPaddingn }px`;n };nn /**n * Positions tooltip at the bottomn * We check if the element is in theviewport so we know whether or not wen * need to constrain the widthn * @param {HTMLElement} e - this is the tooltip bodyn */n const positionBottom = (e) => {n setPositionClass("bottom");n e.style.marginLeft = `${adjustHorizontalCenter}px`;n if (!isElementInViewport(e)) {n e.classList.add(ADJUST_WIDTH_CLASS);n }n e.style.marginTop = `${n adjustToEdgeY + offsetForTopMargin + offsetForTopPaddingn }px`;n };nn /**n * Positions tooltip at the rightn * @param {HTMLElement} e - this is the tooltip bodyn */n const positionRight = (e) => {n setPositionClass("right");n e.style.marginBottom = "0";n e.style.marginLeft = `${adjustToEdgeX + leftOffset}px`;n e.style.bottom = `${n (tooltipHeight - offsetForTooltipBodyHeight) / 2 +n offsetForBottomMargin +n offsetForBottomPaddingn }px`;n return false;n };nn /**n * Positions tooltip at the rightn * @param {HTMLElement} e - this is the tooltip bodyn */n const positionLeft = (e) => {n setPositionClass("left");n e.style.marginBottom = "0";n if (leftOffset > toolTipBodyWidth) {n e.style.marginLeft = `${n leftOffset - toolTipBodyWidth - (TRIANGLE_SIZE + SPACER)n }px`;n } else {n e.style.marginLeft = `-${n toolTipBodyWidth - leftOffset + (TRIANGLE_SIZE + SPACER)n }px`;n }n e.style.bottom = `${n (tooltipHeight - offsetForTooltipBodyHeight) / 2 +n offsetForBottomMargin +n offsetForBottomPaddingn }px`;n };nn /**n * We try to set the position based on then * original intention, but make adjustmentsn * if the element is clipped out of the viewportn */n switch (position) {n case "top":n positionTop(tooltipBody);n if (!isElementInViewport(tooltipBody)) {n positionBottom(tooltipBody);n }n break;n case "bottom":n positionBottom(tooltipBody);n if (!isElementInViewport(tooltipBody)) {n positionTop(tooltipBody);n }n break;n case "right":n positionRight(tooltipBody);n if (!isElementInViewport(tooltipBody)) {n positionLeft(tooltipBody);n if (!isElementInViewport(tooltipBody)) {n positionTop(tooltipBody);n }n }n break;n case "left":n positionLeft(tooltipBody);n if (!isElementInViewport(tooltipBody)) {n positionRight(tooltipBody);n if (!isElementInViewport(tooltipBody)) {n positionTop(tooltipBody);n }n }n break;nn default:n // skip default casen break;n }nn /**n * Actually show the tooltip. The VISIBLE_CLASSn * will change the opacity to 1n */n setTimeout(function makeVisible() {n tooltipBody.classList.add(VISIBLE_CLASS);n }, 20);n};nn/**n * Removes all the properties to show and position the tooltip,n * and resets the tooltip position to the original intentionn * in case the window is resized or the element is moved throughn * DOM maniulation.n * @param {HTMLElement} tooltipBody - The body of the tooltipn */nconst hideToolTip = (tooltipBody) => {n tooltipBody.classList.remove(VISIBLE_CLASS);n tooltipBody.classList.remove(SET_CLASS);n tooltipBody.classList.remove(ADJUST_WIDTH_CLASS);n tooltipBody.setAttribute("aria-hidden", "true");n};nn/**n * Setup the tooltip componentn * @param {HTMLElement} tooltipTrigger The element that creates the tooltipn */nconst setUpAttributes = (tooltipTrigger) => {n const tooltipID = `tooltip-${Math.floor(Math.random() * 900000) + 100000}`;n const tooltipContent = tooltipTrigger.getAttribute("title");n const wrapper = document.createElement("span");n const tooltipBody = document.createElement("span");n const position = tooltipTrigger.getAttribute("data-position")n ? tooltipTrigger.getAttribute("data-position")n : "top";n const additionalClasses = tooltipTrigger.getAttribute("data-classes");nn // Set up tooltip attributesn tooltipTrigger.setAttribute("aria-describedby", tooltipID);n tooltipTrigger.setAttribute("tabindex", "0");n tooltipTrigger.setAttribute("title", "");n tooltipTrigger.classList.remove(TOOLTIP_CLASS);n tooltipTrigger.classList.add(TOOLTIP_TRIGGER_CLASS);nn // insert wrapper before el in the DOM treen tooltipTrigger.parentNode.insertBefore(wrapper, tooltipTrigger);nn // set up the wrappern wrapper.appendChild(tooltipTrigger);n wrapper.classList.add(TOOLTIP_CLASS);n wrapper.appendChild(tooltipBody);nn // Apply additional class names to wrapper elementn if (additionalClasses) {n const classesArray = additionalClasses.split(" ");n classesArray.forEach((classname) => wrapper.classList.add(classname));n }nn // set up the tooltip bodyn tooltipBody.classList.add(TOOLTIP_BODY_CLASS);n tooltipBody.setAttribute("id", tooltipID);n tooltipBody.setAttribute("role", "tooltip");n tooltipBody.setAttribute("aria-hidden", "true");nn // place the text in the tooltipn tooltipBody.innerHTML = tooltipContent;nn return { tooltipBody, position, tooltipContent, wrapper };n};nn// Setup our function to run on various eventsnconst tooltip = behavior(n {},n {n init(root) {n select(TOOLTIP, root).forEach((tooltipTrigger) => {n const {n tooltipBody,n position,n tooltipContent,n wrapper,n } = setUpAttributes(tooltipTrigger);nn if (tooltipContent) {n // Listeners for showing and hiding the tooltipn addListenerMulti(n tooltipTrigger,n "mouseenter focus",n function handleShow() {n showToolTip(tooltipBody, tooltipTrigger, position, wrapper);n return false;n }n );nn // Keydown here prevents tooltips from being read twice by screen reader. also allows excape key to close it (along with any other.)n addListenerMulti(n tooltipTrigger,n "mouseleave blur keydown",n function handleHide() {n hideToolTip(tooltipBody);n return false;n }n );n } else {n // throw error or let other tooltips on page function?n }n });n },n }n);nnmodule.exports = tooltip;n“,”const behavior = require("../utils/behavior");nconst validate = require("../utils/validate-input");nnfunction change() {n validate(this);n}nnconst validator = behavior({n "keyup change": {n "input[data-validation-element]": change,n },n});nnmodule.exports = validator;n“,”module.exports = {n prefix: "usa",n};n“,”module.exports = {n // This used to be conditionally dependent on whether then // browser supported touch events; if it did, `CLICK` was set ton // `touchstart`. However, this had downsides:n //n // * It pre-empted mobile browsers' default behavior of detectingn // whether a touch turned into a scroll, thereby preventingn // users from using some of our components as scroll surfaces.n //n // * Some devices, such as the Microsoft Surface Pro, support bothn // touch and clicks. This meant the conditional effectively droppedn // support for the user's mouse, frustrating users who preferredn // it on those systems.n CLICK: "click",n};n“,”/* eslint-disable consistent-return */n/* eslint-disable func-names */n(function () {n if (typeof window.CustomEvent === "function") return false;nn function CustomEvent(event, _params) {n const params = _params || {n bubbles: false,n cancelable: false,n detail: null,n };n const evt = document.createEvent("CustomEvent");n evt.initCustomEvent(n event,n params.bubbles,n params.cancelable,n params.detailn );n return evt;n }nn window.CustomEvent = CustomEvent;n})();n“,”const elproto = window.HTMLElement.prototype;nconst HIDDEN = "hidden";nnif (!(HIDDEN in elproto)) {n Object.defineProperty(elproto, HIDDEN, {n get() {n return this.hasAttribute(HIDDEN);n },n set(value) {n if (value) {n this.setAttribute(HIDDEN, "");n } else {n this.removeAttribute(HIDDEN);n }n },n });n}n“,”// polyfills HTMLElement.prototype.classList and DOMTokenListnrequire("classlist-polyfill");n// polyfills HTMLElement.prototype.hiddennrequire("./element-hidden");n// polyfills Number.isNaN()nrequire("./number-is-nan");n// polyfills CustomEventnrequire("./custom-event");n// polyfills svg4everybodynrequire("./svg4everybody");nn“,”Number.isNaN =n Number.isNaN ||n function isNaN(input) {n // eslint-disable-next-line no-self-comparen return typeof input === "number" && input !== input;n };n“,”/* eslint-disable */n!function(root, factory) {n if(root === undefined) root = window; //* THIS IS A HOTFIX FOR BABEL TRANSPILERS ADDING USING STRICT MODE CAUSING ROOT TO BE UNDEFINED. n "function" == typeof define && define.amd ? // AMD. Register as an anonymous module unless amdModuleId is setn define([], function() {n return root.svg4everybody = factory();n }) : "object" == typeof module && module.exports ? // Node. Does not work with strict CommonJS, butn // only CommonJS-like environments that support module.exports,n // like Node.n module.exports = factory() : root.svg4everybody = factory();n}(this, function() {n /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */n function embed(parent, svg, target, use) {n // if the target existsn if (target) {n // create a document fragment to hold the contents of the targetn var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute("viewBox") && target.getAttribute("viewBox");n // conditionally set the viewBox on the svgn viewBox && svg.setAttribute("viewBox", viewBox);n // copy the contents of the clone into the fragmentn for (// clone the targetn var clone = document.importNode ? document.importNode(target, !0) : target.cloneNode(!0), g = document.createElementNS(svg.namespaceURI || "http://www.w3.org/2000/svg", "g"); clone.childNodes.length; ) {n g.appendChild(clone.firstChild);n }n if (use) {n for (var i = 0; use.attributes.length > i; i++) {n var attr = use.attributes;n "xhref" !== attr.name && "href" !== attr.name && g.setAttribute(attr.name, attr.value);n }n }n fragment.appendChild(g), // append the fragment into the svgn parent.appendChild(fragment);n }n }n function loadreadystatechange(xhr, use) {n // listen to changes in the requestn xhr.onreadystatechange = function() {n // if the request is readyn if (4 === xhr.readyState) {n // get the cached html documentn var cachedDocument = xhr._cachedDocument;n // ensure the cached html document based on the xhr responsen cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(""), n cachedDocument.body.innerHTML = xhr.responseText, // ensure domains are the same, otherwise we'll have issues appending then // element in IE 11n cachedDocument.domain !== document.domain && (cachedDocument.domain = document.domain), n xhr._cachedTarget = {}), // clear the xhr embeds list and embed each itemn xhr._embeds.splice(0).map(function(item) {n // get the cached targetn var target = xhr._cachedTarget;n // ensure the cached targetn target || (target = xhr._cachedTarget = cachedDocument.getElementById(item.id)), n // embed the target into the svgn embed(item.parent, item.svg, target, use);n });n }n }, // test the ready state change immediatelyn xhr.onreadystatechange();n }n function svg4everybody(rawopts) {n function oninterval() {n // if all <use>s in the array are being bypassed, don't proceed.n if (numberOfSvgUseElementsToBypass && uses.length - numberOfSvgUseElementsToBypass <= 0) {n return void requestAnimationFrame(oninterval, 67);n }n // if there are <use>s to process, proceed.n // reset the bypass counter, since the counter will be incremented for every bypassed element,n // even ones that were counted before.n numberOfSvgUseElementsToBypass = 0;n // while the index exists in the live <use> collectionn for (// get the cached <use> indexn var index = 0; index < uses.length; ) {n // get the current <use>n var use = uses, parent = use.parentNode, svg = getSVGAncestor(parent), src = use.getAttribute("xhref") || use.getAttribute("href");n if (!src && opts.attributeName && (src = use.getAttribute(opts.attributeName)), n svg && src) {n if (polyfill) {n if (!opts.validate || opts.validate(src, svg, use)) {n // remove the <use> elementn parent.removeChild(use);n // parse the src and get the url and idn var srcSplit = src.split("#"), url = srcSplit.shift(), id = srcSplit.join("#");n // if the link is externaln if (url.length) {n // get the cached xhr requestn var xhr = requests;n // ensure the xhr request existsn xhr || (xhr = requests = new XMLHttpRequest(), xhr.open("GET", url), xhr.send(), n xhr._embeds = []), // add the svg and id as an item to the xhr embeds listn xhr._embeds.push({n parent: parent,n svg: svg,n id: idn }), // prepare the xhr ready state change eventn loadreadystatechange(xhr, use);n } else {n // embed the local id into the svgn embed(parent, svg, document.getElementById(id), use);n }n } else {n // increase the index when the previous value was not "valid"n ++index, ++numberOfSvgUseElementsToBypass;n }n }n } else {n // increase the index when the previous value was not "valid"n ++index;n }n }n // continue the intervaln requestAnimationFrame(oninterval, 67);n }n var polyfill, opts = Object(rawopts), newerIEUA = /\bTrident\/\b|\bMSIE (?:9|10)\.0\b/, webkitUA = /\bAppleWebKit\/(\d+)\b/, olderEdgeUA = /\bEdge\/12\.(\d+)\b/, edgeUA = /\bEdge\/.(\d+)\b/, inIframe = window.top !== window.self;n polyfill = "polyfill" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537 || edgeUA.test(navigator.userAgent) && inIframe;n // create xhr requests objectn var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName("use"), numberOfSvgUseElementsToBypass = 0;n // conditionally start the interval if the polyfill is activen polyfill && oninterval();n }n function getSVGAncestor(node) {n for (var svg = node; "svg" !== svg.nodeName.toLowerCase() && (svg = svg.parentNode); ) {}n return svg;n }n return svg4everybody;n});“,”const domready = require("domready");nnwindow.uswdsPresent = true; // GLOBAL variable to indicate that the uswds.js has loaded in the DOM.nn/**n * The 'polyfills' define key ECMAScript 5 methods that may be missing fromn * older browsers, so must be loaded first.n */nrequire("./polyfills");nnconst uswds = require("./config");nnconst components = require("./components");nconst svg4everybody = require("./polyfills/svg4everybody");nnuswds.components = components;nndomready(() => {n const target = document.body;n Object.keys(components).forEach((key) => {n const behavior = components;n behavior.on(target);n });n svg4everybody();n});nnmodule.exports = uswds;“,”module.exports = (htmlDocument = document) => htmlDocument.activeElement;n“,”const assign = require("object-assign");nconst Behavior = require("receptor/behavior");nn/**n * @name sequencen * @param {…Function} seq an array of functionsn * @return { closure } callHooksn */n// We use a named function here because we want it to inherit its lexical scopen// from the behavior props object, not from the modulenconst sequence = (…seq) =>n function callHooks(target = document.body) {n seq.forEach((method) => {n if (typeof this === "function") {n this.call(this, target);n }n });n };nn/**n * @name behaviorn * @param {object} eventsn * @param {object?} propsn * @return {receptor.behavior}n */nmodule.exports = (events, props) =>n Behavior(n events,n assign(n {n on: sequence("init", "add"),n off: sequence("teardown", "remove"),n },n propsn )n );n“,”const assign = require("object-assign");nconst { keymap } = require("receptor");nconst behavior = require("./behavior");nconst select = require("./select");nconst activeElement = require("./active-element");nnconst FOCUSABLE =n 'a, area, input:not(), select:not(), textarea:not(), button:not(), iframe, object, embed, [tabindex="0"], [contenteditable]';nnconst tabHandler = (context) => {n const focusableElements = select(FOCUSABLE, context);n const firstTabStop = focusableElements;n const lastTabStop = focusableElements[focusableElements.length - 1];nn // Special rules for when the user is tabbing forward from the last focusable element,n // or when tabbing backwards from the first focusable elementn function tabAhead(event) {n if (activeElement() === lastTabStop) {n event.preventDefault();n firstTabStop.focus();n }n }nn function tabBack(event) {n if (activeElement() === firstTabStop) {n event.preventDefault();n lastTabStop.focus();n }n }nn return {n firstTabStop,n lastTabStop,n tabAhead,n tabBack,n };n};nnmodule.exports = (context, additionalKeyBindings = {}) => {n const tabEventHandler = tabHandler(context);n const bindings = additionalKeyBindings;n const { Esc, Escape } = bindings;nn if (Escape && !Esc) bindings.Esc = Escape;nn // TODO: In the future, loop over additional keybindings and pass an arrayn // of functions, if necessary, to the map keys. Then people implementingn // the focus trap could pass callbacks to fire when tabbingn const keyMappings = keymap(n assign(n {n Tab: tabEventHandler.tabAhead,n "Shift+Tab": tabEventHandler.tabBack,n },n additionalKeyBindingsn )n );nn const focusTrap = behavior(n {n keydown: keyMappings,n },n {n init() {n // TODO: is this desireable behavior? Should the trap always do this by default or shouldn // the component getting decorated handle this?n tabEventHandler.firstTabStop.focus();n },n update(isActive) {n if (isActive) {n this.on();n } else {n this.off();n }n },n }n );nn return focusTrap;n};n“,”// stackoverflow.com/a/7557433nfunction isElementInViewport(n el,n win = window,n docEl = document.documentElementn) {n const rect = el.getBoundingClientRect();nn return (n rect.top >= 0 &&n rect.left >= 0 &&n rect.bottom <= (win.innerHeight || docEl.clientHeight) &&n rect.right <= (win.innerWidth || docEl.clientWidth)n );n}nnmodule.exports = isElementInViewport;n“,”// iOS detection from: stackoverflow.com/a/9039885/177710nfunction isIosDevice() {n return (n typeof navigator !== "undefined" &&n (navigator.userAgent.match(/(iPod|iPhone|iPad)/g) ||n (navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1)) &&n !window.MSStreamn );n}nnmodule.exports = isIosDevice;n“,”/**n * @name isElementn * @desc returns whether or not the given argument is a DOM element.n * @param {any} valuen * @return {boolean}n */nconst isElement = (value) =>n value && typeof value === "object" && value.nodeType === 1;nn/**n * @name selectn * @desc selects elements from the DOM by class selector or ID selector.n * @param {string} selector - The selector to traverse the DOM with.n * @param {Document|HTMLElement?} context - The context to traverse the DOMn * in. If not provided, it defaults to the document.n * @return {HTMLElement[]} - An array of DOM nodes or an empty array.n */nmodule.exports = (selector, context) => {n if (typeof selector !== "string") {n return [];n }nn if (!context || !isElement(context)) {n context = window.document; // eslint-disable-line no-param-reassignn }nn const selection = context.querySelectorAll(selector);n return Array.prototype.slice.call(selection);n};n“,”/**n * Flips given INPUT elements between masked (hiding the field value) and unmaskedn * @param {Array.HTMLElement} fields - An array of INPUT elementsn * @param {Boolean} mask - Whether the mask should be applied, hiding the field valuen */nmodule.exports = (field, mask) => {n field.setAttribute("autocapitalize", "off");n field.setAttribute("autocorrect", "off");n field.setAttribute("type", mask ? "password" : "text");n};n“,”const resolveIdRefs = require("resolve-id-refs");nconst toggleFieldMask = require("./toggle-field-mask");nnconst CONTROLS = "aria-controls";nconst PRESSED = "aria-pressed";nconst SHOW_ATTR = "data-show-text";nconst HIDE_ATTR = "data-hide-text";nn/**n * Replace the word "Show" (or "show") with "Hide" (or "hide") in a string.n * @param {string} showTextn * @return {strong} hideTextn */nconst getHideText = (showText) =>n showText.replace(/\bShow\b/i, (show) => `${show === "S" ? "H" : "h"}ide`);nn/**n * Component that decorates an HTML element with the ability to toggle then * masked state of an input field (like a password) when clicked.n * The ids of the fields to be masked will be pulled directly from the button'sn * `aria-controls` attribute.n *n * @param {HTMLElement} el Parent element containing the fields to be maskedn * @return {boolean}n */nmodule.exports = (el) => {n // this is the target state:n // * if the element has the attr and it's !== "true", pressed is truen // * otherwise, pressed is falsen const pressed =n el.hasAttribute(PRESSED) && el.getAttribute(PRESSED) !== "true";nn const fields = resolveIdRefs(el.getAttribute(CONTROLS));n fields.forEach((field) => toggleFieldMask(field, pressed));nn if (!el.hasAttribute(SHOW_ATTR)) {n el.setAttribute(SHOW_ATTR, el.textContent);n }nn const showText = el.getAttribute(SHOW_ATTR);n const hideText = el.getAttribute(HIDE_ATTR) || getHideText(showText);nn el.textContent = pressed ? showText : hideText; // eslint-disable-line no-param-reassignn el.setAttribute(PRESSED, pressed);n return pressed;n};n“,”const EXPANDED = "aria-expanded";nconst CONTROLS = "aria-controls";nconst HIDDEN = "hidden";nnmodule.exports = (button, expanded) => {n let safeExpanded = expanded;nn if (typeof safeExpanded !== "boolean") {n safeExpanded = button.getAttribute(EXPANDED) === "false";n }nn button.setAttribute(EXPANDED, safeExpanded);nn const id = button.getAttribute(CONTROLS);n const controls = document.getElementById(id);n if (!controls) {n throw new Error(`No toggle target found with id: "${id}"`);n }nn if (safeExpanded) {n controls.removeAttribute(HIDDEN);n } else {n controls.setAttribute(HIDDEN, "");n }nn return safeExpanded;n};n“,”const dataset = require("elem-dataset");nnconst { prefix: PREFIX } = require("../config");nnconst CHECKED = "aria-checked";nconst CHECKED_CLASS = `${PREFIX}-checklist__item–checked`;nnmodule.exports = function validate(el) {n const data = dataset(el);n const id = data.validationElement;n const checkList =n id.charAt(0) === "#"n ? document.querySelector(id)n : document.getElementById(id);nn if (!checkList) {n throw new Error(`No validation element found with id: "${id}"`);n }nn Object.entries(data).forEach(([key, value]) => {n if (key.startsWith("validate")) {n const validatorName = key.substr("validate".length).toLowerCase();n const validatorPattern = new RegExp(value);n const validatorSelector = `[data-validator="${validatorName}"]`;n const validatorCheckbox = checkList.querySelector(validatorSelector);nn if (!validatorCheckbox) {n throw new Error(`No validator checkbox found for: "${validatorName}"`);n }nn const checked = validatorPattern.test(el.value);n validatorCheckbox.classList.toggle(CHECKED_CLASS, checked);n validatorCheckbox.setAttribute(CHECKED, checked);n }n });n};n“]}