@loadsmart/loadsmart-ui 5.19.1 → 5.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/components/DatePicker/DatePicker.types.d.ts +3 -0
  2. package/dist/components/Dropdown/Dropdown.d.ts +2 -2
  3. package/dist/components/Dropdown/Dropdown.types.d.ts +5 -1
  4. package/dist/components/Popover/Popover.d.ts +9 -3
  5. package/dist/components/Popover/Popover.stories.d.ts +1 -1
  6. package/dist/components/Popover/Popover.types.d.ts +33 -0
  7. package/dist/components/Popover/index.d.ts +2 -2
  8. package/dist/components/TablePagination/RowsPerPage.d.ts +1 -1
  9. package/dist/components/TablePagination/TablePagination.types.d.ts +7 -1
  10. package/dist/components/Text/Text.d.ts +1 -1
  11. package/dist/components/Tooltip/Tooltip.d.ts +3 -2
  12. package/dist/index.d.ts +2 -2
  13. package/dist/index.js +442 -481
  14. package/dist/index.js.map +1 -1
  15. package/dist/miranda-compatibility.theme-f37aba71.js +2 -0
  16. package/dist/miranda-compatibility.theme-f37aba71.js.map +1 -0
  17. package/dist/prop-ee1dfc7f.js +2 -0
  18. package/dist/{prop-a330029f.js.map → prop-ee1dfc7f.js.map} +1 -1
  19. package/dist/testing/index.js +1 -1
  20. package/dist/testing/index.js.map +1 -1
  21. package/dist/theming/index.js +1 -1
  22. package/dist/theming/themes/alice.theme.d.ts +4 -0
  23. package/dist/theming/themes/loadsmart.theme.d.ts +4 -0
  24. package/dist/theming/themes/miranda-compatibility.theme.d.ts +4 -0
  25. package/dist/tools/index.js +1 -1
  26. package/package.json +4 -5
  27. package/src/components/DatePicker/DatePicker.tsx +8 -4
  28. package/src/components/DatePicker/DatePicker.types.ts +3 -0
  29. package/src/components/DatePicker/DateRangePicker.tsx +16 -12
  30. package/src/components/Dropdown/Dropdown.stories.tsx +41 -40
  31. package/src/components/Dropdown/Dropdown.tsx +35 -11
  32. package/src/components/Dropdown/Dropdown.types.ts +7 -1
  33. package/src/components/Dropdown/DropdownMenu.tsx +10 -14
  34. package/src/components/Dropdown/DropdownTrigger.tsx +8 -5
  35. package/src/components/Popover/Popover.stories.tsx +27 -4
  36. package/src/components/Popover/Popover.tsx +145 -13
  37. package/src/components/Popover/Popover.types.ts +41 -0
  38. package/src/components/Popover/index.ts +11 -2
  39. package/src/components/Select/Select.test.tsx +3 -3
  40. package/src/components/Select/Select.tsx +0 -1
  41. package/src/components/Select/SelectOption.tsx +0 -1
  42. package/src/components/Select/SelectTrigger.tsx +18 -1
  43. package/src/components/Table/Table.stories.tsx +0 -1
  44. package/src/components/Table/Table.tsx +2 -2
  45. package/src/components/TablePagination/RowsPerPage.tsx +9 -4
  46. package/src/components/TablePagination/TablePagination.tsx +3 -0
  47. package/src/components/TablePagination/TablePagination.types.ts +12 -5
  48. package/src/components/Tooltip/Tooltip.tsx +59 -85
  49. package/src/components/TopNavigation/Menu/MenuItemDropdown.tsx +11 -8
  50. package/src/index.ts +10 -2
  51. package/src/testing/DatePickerEvent/DatePickerEvent.ts +1 -1
  52. package/src/theming/themes/alice.theme.ts +6 -0
  53. package/src/theming/themes/loadsmart.theme.ts +6 -0
  54. package/dist/miranda-compatibility.theme-4cecc6cf.js +0 -2
  55. package/dist/miranda-compatibility.theme-4cecc6cf.js.map +0 -1
  56. package/dist/prop-a330029f.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/testing/DatePickerEvent/DatePickerEvent.ts","../../src/testing/DatePickerEvent/DateRangePickerEvent.ts","../../src/testing/DragDropFileEvent/DragDropFileEvent.ts","../../node_modules/@testing-library/user-event/dist/utils/click/getMouseEventOptions.js","../../node_modules/@testing-library/user-event/dist/utils/misc/isElementType.js","../../node_modules/@testing-library/user-event/dist/utils/click/isClickableInput.js","../../node_modules/@testing-library/user-event/dist/utils/edit/buildTimeValue.js","../../node_modules/@testing-library/user-event/dist/utils/edit/selectionRange.js","../../node_modules/@testing-library/user-event/dist/utils/edit/isContentEditable.js","../../node_modules/@testing-library/user-event/dist/utils/edit/getValue.js","../../node_modules/@testing-library/user-event/dist/utils/edit/isValidDateValue.js","../../node_modules/@testing-library/user-event/dist/utils/edit/isValidInputTimeValue.js","../../node_modules/@testing-library/user-event/dist/utils/edit/calculateNewValue.js","../../node_modules/@testing-library/user-event/dist/utils/edit/cursorPosition.js","../../node_modules/@testing-library/user-event/dist/utils/edit/hasUnreliableEmptyValue.js","../../node_modules/@testing-library/user-event/dist/utils/edit/isEditable.js","../../node_modules/@testing-library/user-event/dist/utils/edit/maxLength.js","../../node_modules/@testing-library/user-event/dist/utils/misc/isDisabled.js","../../node_modules/@testing-library/user-event/dist/utils/focus/getActiveElement.js","../../node_modules/@testing-library/user-event/dist/utils/misc/isLabelWithInternallyDisabledControl.js","../../node_modules/@testing-library/user-event/dist/utils/focus/selector.js","../../node_modules/@testing-library/user-event/dist/utils/focus/isFocusable.js","../../node_modules/@testing-library/user-event/dist/utils/misc/eventWrapper.js","../../node_modules/@testing-library/user-event/dist/utils/misc/isVisible.js","../../node_modules/@testing-library/user-event/dist/utils/misc/isDocument.js","../../node_modules/@testing-library/user-event/dist/utils/misc/wait.js","../../node_modules/@testing-library/user-event/dist/utils/misc/hasPointerEvents.js","../../node_modules/@testing-library/user-event/dist/utils/misc/hasFormSubmit.js","../../node_modules/@testing-library/user-event/dist/utils/index.js","../../node_modules/@testing-library/user-event/dist/hover.js","../../node_modules/@testing-library/user-event/dist/blur.js","../../node_modules/@testing-library/user-event/dist/focus.js","../../node_modules/@testing-library/user-event/dist/click.js","../../node_modules/@testing-library/user-event/dist/keyboard/getNextKeyDef.js","../../node_modules/@testing-library/user-event/dist/keyboard/plugins/arrow.js","../../node_modules/@testing-library/user-event/dist/keyboard/shared/carryValue.js","../../node_modules/@testing-library/user-event/dist/keyboard/shared/fireChangeForInputTimeIfValid.js","../../node_modules/@testing-library/user-event/dist/keyboard/shared/fireInputEvent.js","../../node_modules/@testing-library/user-event/dist/keyboard/shared/index.js","../../node_modules/@testing-library/user-event/dist/keyboard/plugins/control.js","../../node_modules/@testing-library/user-event/dist/keyboard/plugins/character.js","../../node_modules/@testing-library/user-event/dist/keyboard/getEventProps.js","../../node_modules/@testing-library/user-event/dist/keyboard/plugins/functional.js","../../node_modules/@testing-library/user-event/dist/keyboard/plugins/index.js","../../node_modules/@testing-library/user-event/dist/keyboard/keyboardImplementation.js","../../node_modules/@testing-library/user-event/dist/keyboard/types.js","../../node_modules/@testing-library/user-event/dist/keyboard/keyMap.js","../../node_modules/@testing-library/user-event/dist/keyboard/specialCharMap.js","../../node_modules/@testing-library/user-event/dist/keyboard/index.js","../../node_modules/@testing-library/user-event/dist/type/typeImplementation.js","../../node_modules/@testing-library/user-event/dist/type/index.js","../../node_modules/@testing-library/user-event/dist/clear.js","../../node_modules/@testing-library/user-event/dist/tab.js","../../node_modules/@testing-library/user-event/dist/upload.js","../../node_modules/@testing-library/user-event/dist/select-options.js","../../node_modules/@testing-library/user-event/dist/paste.js","../../node_modules/@testing-library/user-event/dist/index.js","../../src/testing/SelectEvent/SelectEvent.ts","../../src/testing/renderWithDragDropFileProvider/renderWithDragDropFileProvider.tsx","../../src/testing/getInterpolatedStyles/getInterpolatedStyles.ts"],"sourcesContent":["/* eslint-disable */\nimport { queries, fireEvent, waitForElementToBeRemoved } from '@testing-library/dom'\nimport { act } from '@testing-library/react'\n\n// find the date picker container from its input field 🤷\nfunction getContainerFromInput(input: HTMLElement): HTMLElement {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return input.parentNode!.parentNode!.parentNode as HTMLElement\n}\n\n/**\n * Expand the `DatePicker` calendar, if it not already expanded.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function expand(input: HTMLElement): Promise<void> {\n const datePickerContainer = getContainerFromInput(input)\n\n // if menu is rendered, then the select is already expanded\n if (queries.queryByRole(datePickerContainer, 'menu')) {\n return\n }\n\n await act(async () => {\n fireEvent.click(input)\n\n expect(await queries.findByRole(datePickerContainer, 'menu')).toBeInTheDocument()\n })\n}\n\n/**\n * Collapse the `DatePicker` calendar, if it not already collapsed.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function collapse(input: HTMLElement): Promise<void> {\n const datePickerContainer = getContainerFromInput(input)\n\n // if menu is not rendered, then the select is already collapsed\n if (!queries.queryByRole(datePickerContainer, 'menu')) {\n return\n }\n\n await act(async () => {\n fireEvent.click(queries.getByText(datePickerContainer, 'Close'))\n\n await waitForElementToBeRemoved(() => queries.queryByRole(datePickerContainer, 'menu'))\n })\n}\n\n/**\n * Pick (select) the provided day in the current month/year.\n * Notice that we programatically expand the `DatePicker` calendar before picking the date.\n * @param {string} day - Label for the day to be picked, formatted as mm/dd/yyyy.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function pick(day: string, input: HTMLElement): Promise<void> {\n const datePickerContainer = getContainerFromInput(input)\n\n await expand(input)\n\n await act(async () => {\n input.focus()\n\n const dayElement = queries.getByLabelText(datePickerContainer, day)\n\n if (dayElement && dayElement.getAttribute('aria-checked') == 'false') {\n fireEvent.click(dayElement)\n }\n })\n\n await collapse(input)\n}\n\n/**\n * Clear the selection, if there are any options selected.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function clear(input: HTMLElement): Promise<void> {\n const datePickerContainer = getContainerFromInput(input)\n\n await act(async () => {\n const clearButton = queries.getByLabelText(datePickerContainer, 'Clear selection')\n\n fireEvent.click(clearButton)\n })\n\n await collapse(input)\n}\n\n/**\n * Get options elements currently selected in the `DatePicker` calendar.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<HTMLElement[]>}\n */\nasync function getSelectedDates(input: HTMLElement): Promise<HTMLElement[]> {\n const datePickerContainer = getContainerFromInput(input)\n\n await expand(input)\n\n const selectedDays: HTMLElement[] = queries.queryAllByRole(datePickerContainer, 'checkbox', {\n checked: true,\n })\n\n await collapse(input)\n\n return selectedDays\n}\n\nconst datePickerEvent = {\n getContainer: getContainerFromInput,\n expand,\n collapse,\n pick,\n clear,\n getSelectedDates,\n}\n\nexport default datePickerEvent\n","/* eslint-disable */\nimport { queries } from '@testing-library/dom'\n\nimport DatePickerEvent from './DatePickerEvent'\n\n/**\n * Expand the `DatePicker` calendar, if it not already expanded.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function expand(input: HTMLElement): Promise<void> {\n await DatePickerEvent.expand(input)\n}\n\n/**\n * Collapse the `DatePicker` calendar, if it not already collapsed.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function collapse(input: HTMLElement): Promise<void> {\n await DatePickerEvent.collapse(input)\n}\n\n/**\n * Pick (select) the provided day in the current month/year.\n * Notice that we programatically expand the `DatePicker` calendar before picking the date.\n * @param {string} day - Label for the day to be picked, formatted as mm/dd/yyyy.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function pick(range: [string | null, string | null], input: HTMLElement): Promise<void> {\n const dateRangePickerContainer = DatePickerEvent.getContainer(input)\n\n await expand(input)\n\n const [rangeStart, rangeEnd] = range\n\n if (rangeStart != null) {\n const dateRangeStartInput = queries.getByTestId(\n dateRangePickerContainer,\n 'input-date-range-start'\n )\n\n await DatePickerEvent.pick(rangeStart, dateRangeStartInput)\n }\n\n if (rangeEnd != null) {\n const dateRangeEndInput = queries.getByTestId(dateRangePickerContainer, 'input-date-range-end')\n\n await DatePickerEvent.pick(rangeEnd, dateRangeEndInput)\n }\n\n await collapse(input)\n}\n\n/**\n * Clear the selection, if there are any options selected.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function clear(input: HTMLElement): Promise<void> {\n await DatePickerEvent.clear(input)\n}\n\n/**\n * Get options elements currently selected in the `DatePicker` calendar.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<HTMLElement[]>}\n */\nasync function getSelectedDates(input: HTMLElement): Promise<HTMLElement[]> {\n return DatePickerEvent.getSelectedDates(input)\n}\n\nexport const dateRangePickerEvent = {\n getContainer: DatePickerEvent.getContainer,\n expand,\n collapse,\n pick,\n clear,\n getSelectedDates,\n}\n\nexport default dateRangePickerEvent\n","import { createEvent, fireEvent } from '@testing-library/react'\n\nimport toArray from 'utils/toolset/toArray'\n\n/**\n * Get the input dropzone, which is the input parent (label).\n * @param {HTMLInputElement} input - You can refer to this element by the aria-label you provide to the DragDropFile component\n */\nconst getDropZoneFromInput = (input: HTMLInputElement): HTMLLabelElement =>\n input.parentNode as HTMLLabelElement\n\n/**\n * Simulates the onDragOver event on the drop zone.\n * @param {HTMLInputElement} input - You can refer to this element by the aria-label you provide to the DragDropFile component\n */\nconst dragOver = (input: HTMLInputElement) => {\n const dropzone = getDropZoneFromInput(input)\n\n const dragOverEvent = createEvent.dragOver(dropzone)\n\n fireEvent(dropzone, dragOverEvent)\n}\n\n/**\n * Simulates the onDragLeave event on the drop zone.\n * @param {HTMLInputElement} input - You can refer to this element by the aria-label you provide to the DragDropFile component\n */\nconst dragLeave = (input: HTMLInputElement) => {\n const dropzone = getDropZoneFromInput(input)\n\n const dragLeaveEvent = createEvent.dragLeave(dropzone)\n\n fireEvent(dropzone, dragLeaveEvent)\n}\n\n/**\n * Simulates the onDrop event on the drop zone. You can provide a list of files or a single file.\n * @param {HTMLInputElement} input - You can refer to this element by the aria-label you provide to the DragDropFile component\n */\nconst dropFiles = (input: HTMLInputElement, files: File | File[]) => {\n const dropzone = getDropZoneFromInput(input)\n\n const fileDropEvent = createEvent.drop(dropzone)\n\n Object.defineProperty(fileDropEvent, 'dataTransfer', { value: { files: toArray(files) } })\n\n fireEvent(dropzone, fileDropEvent)\n}\n\nexport const DragDropFileEvent = {\n dragOver,\n dragLeave,\n dropFiles,\n}\n\nexport default DragDropFileEvent\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getMouseEventOptions = getMouseEventOptions;\n\nfunction isMousePressEvent(event) {\n return event === 'mousedown' || event === 'mouseup' || event === 'click' || event === 'dblclick';\n} // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n\n\nconst BUTTONS_NAMES = {\n none: 0,\n primary: 1,\n secondary: 2,\n auxiliary: 4\n}; // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n\nconst BUTTON_NAMES = {\n primary: 0,\n auxiliary: 1,\n secondary: 2\n};\n\nfunction translateButtonNumber(value, from) {\n var _Object$entries$find;\n\n const [mapIn, mapOut] = from === 'button' ? [BUTTON_NAMES, BUTTONS_NAMES] : [BUTTONS_NAMES, BUTTON_NAMES];\n const name = (_Object$entries$find = Object.entries(mapIn).find(([, i]) => i === value)) == null ? void 0 : _Object$entries$find[0]; // istanbul ignore next\n\n return name && Object.prototype.hasOwnProperty.call(mapOut, name) ? mapOut[name] : 0;\n}\n\nfunction convertMouseButtons(event, init, property) {\n if (!isMousePressEvent(event)) {\n return 0;\n }\n\n if (typeof init[property] === 'number') {\n return init[property];\n } else if (property === 'button' && typeof init.buttons === 'number') {\n return translateButtonNumber(init.buttons, 'buttons');\n } else if (property === 'buttons' && typeof init.button === 'number') {\n return translateButtonNumber(init.button, 'button');\n }\n\n return property != 'button' && isMousePressEvent(event) ? 1 : 0;\n}\n\nfunction getMouseEventOptions(event, init, clickCount = 0) {\n var _init;\n\n init = (_init = init) != null ? _init : {};\n return { ...init,\n // https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail\n detail: event === 'mousedown' || event === 'mouseup' || event === 'click' ? 1 + clickCount : clickCount,\n buttons: convertMouseButtons(event, init, 'buttons'),\n button: convertMouseButtons(event, init, 'button')\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isElementType = isElementType;\n\nfunction isElementType(element, tag, props) {\n if (element.namespaceURI && element.namespaceURI !== 'http://www.w3.org/1999/xhtml') {\n return false;\n }\n\n tag = Array.isArray(tag) ? tag : [tag]; // tagName is uppercase in HTMLDocument and lowercase in XMLDocument\n\n if (!tag.includes(element.tagName.toLowerCase())) {\n return false;\n }\n\n if (props) {\n return Object.entries(props).every(([k, v]) => element[k] === v);\n }\n\n return true;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isClickableInput = isClickableInput;\n\nvar _isElementType = require(\"../misc/isElementType\");\n\nconst CLICKABLE_INPUT_TYPES = ['button', 'color', 'file', 'image', 'reset', 'submit', 'checkbox', 'radio'];\n\nfunction isClickableInput(element) {\n return (0, _isElementType.isElementType)(element, 'button') || (0, _isElementType.isElementType)(element, 'input') && CLICKABLE_INPUT_TYPES.includes(element.type);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.buildTimeValue = buildTimeValue;\n\nfunction buildTimeValue(value) {\n const onlyDigitsValue = value.replace(/\\D/g, '');\n\n if (onlyDigitsValue.length < 2) {\n return value;\n }\n\n const firstDigit = parseInt(onlyDigitsValue[0], 10);\n const secondDigit = parseInt(onlyDigitsValue[1], 10);\n\n if (firstDigit >= 3 || firstDigit === 2 && secondDigit >= 4) {\n let index;\n\n if (firstDigit >= 3) {\n index = 1;\n } else {\n index = 2;\n }\n\n return build(onlyDigitsValue, index);\n }\n\n if (value.length === 2) {\n return value;\n }\n\n return build(onlyDigitsValue, 2);\n}\n\nfunction build(onlyDigitsValue, index) {\n const hours = onlyDigitsValue.slice(0, index);\n const validHours = Math.min(parseInt(hours, 10), 23);\n const minuteCharacters = onlyDigitsValue.slice(index);\n const parsedMinutes = parseInt(minuteCharacters, 10);\n const validMinutes = Math.min(parsedMinutes, 59);\n return `${validHours.toString().padStart(2, '0')}:${validMinutes.toString().padStart(2, '0')}`;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getSelectionRange = getSelectionRange;\nexports.hasSelectionSupport = hasSelectionSupport;\nexports.setSelectionRange = setSelectionRange;\n\nvar _isElementType = require(\"../misc/isElementType\");\n\n// https://github.com/jsdom/jsdom/blob/c2fb8ff94917a4d45e2398543f5dd2a8fed0bdab/lib/jsdom/living/nodes/HTMLInputElement-impl.js#L45\nvar selectionSupportType;\n\n(function (selectionSupportType) {\n selectionSupportType[\"text\"] = \"text\";\n selectionSupportType[\"search\"] = \"search\";\n selectionSupportType[\"url\"] = \"url\";\n selectionSupportType[\"tel\"] = \"tel\";\n selectionSupportType[\"password\"] = \"password\";\n})(selectionSupportType || (selectionSupportType = {}));\n\nconst InputSelection = Symbol('inputSelection');\n\nfunction hasSelectionSupport(element) {\n return (0, _isElementType.isElementType)(element, 'textarea') || (0, _isElementType.isElementType)(element, 'input') && Boolean(selectionSupportType[element.type]);\n}\n\nfunction getSelectionRange(element) {\n if (hasSelectionSupport(element)) {\n return {\n selectionStart: element.selectionStart,\n selectionEnd: element.selectionEnd\n };\n }\n\n if ((0, _isElementType.isElementType)(element, 'input')) {\n var _InputSelection;\n\n return (_InputSelection = element[InputSelection]) != null ? _InputSelection : {\n selectionStart: null,\n selectionEnd: null\n };\n }\n\n const selection = element.ownerDocument.getSelection(); // there should be no editing if the focusNode is outside of element\n // TODO: properly handle selection ranges\n\n if (selection != null && selection.rangeCount && element.contains(selection.focusNode)) {\n const range = selection.getRangeAt(0);\n return {\n selectionStart: range.startOffset,\n selectionEnd: range.endOffset\n };\n } else {\n return {\n selectionStart: null,\n selectionEnd: null\n };\n }\n}\n\nfunction setSelectionRange(element, newSelectionStart, newSelectionEnd) {\n const {\n selectionStart,\n selectionEnd\n } = getSelectionRange(element);\n\n if (selectionStart === newSelectionStart && selectionEnd === newSelectionEnd) {\n return;\n }\n\n if (hasSelectionSupport(element)) {\n element.setSelectionRange(newSelectionStart, newSelectionEnd);\n }\n\n if ((0, _isElementType.isElementType)(element, 'input')) {\n ;\n element[InputSelection] = {\n selectionStart: newSelectionStart,\n selectionEnd: newSelectionEnd\n };\n } // Moving the selection inside <input> or <textarea> does not alter the document Selection.\n\n\n if ((0, _isElementType.isElementType)(element, 'input') || (0, _isElementType.isElementType)(element, 'textarea')) {\n return;\n }\n\n const range = element.ownerDocument.createRange();\n range.selectNodeContents(element); // istanbul ignore else\n\n if (element.firstChild) {\n range.setStart(element.firstChild, newSelectionStart);\n range.setEnd(element.firstChild, newSelectionEnd);\n }\n\n const selection = element.ownerDocument.getSelection(); // istanbul ignore else\n\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isContentEditable = isContentEditable;\n\n//jsdom is not supporting isContentEditable\nfunction isContentEditable(element) {\n return element.hasAttribute('contenteditable') && (element.getAttribute('contenteditable') == 'true' || element.getAttribute('contenteditable') == '');\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getValue = getValue;\n\nvar _isContentEditable = require(\"./isContentEditable\");\n\nfunction getValue(element) {\n // istanbul ignore if\n if (!element) {\n return null;\n }\n\n if ((0, _isContentEditable.isContentEditable)(element)) {\n return element.textContent;\n }\n\n return element.value;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isValidDateValue = isValidDateValue;\n\nfunction isValidDateValue(element, value) {\n const clone = element.cloneNode();\n clone.value = value;\n return clone.value === value;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isValidInputTimeValue = isValidInputTimeValue;\n\nfunction isValidInputTimeValue(element, timeValue) {\n const clone = element.cloneNode();\n clone.value = timeValue;\n return clone.value === timeValue;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calculateNewValue = calculateNewValue;\n\nvar _selectionRange = require(\"./selectionRange\");\n\nvar _getValue2 = require(\"./getValue\");\n\nvar _isValidDateValue = require(\"./isValidDateValue\");\n\nvar _isValidInputTimeValue = require(\"./isValidInputTimeValue\");\n\nfunction calculateNewValue(newEntry, element, value = (() => {\n var _getValue;\n\n return (_getValue = (0, _getValue2.getValue)(element)) != null ? _getValue :\n /* istanbul ignore next */\n '';\n})(), selectionRange = (0, _selectionRange.getSelectionRange)(element), deleteContent) {\n const selectionStart = selectionRange.selectionStart === null ? value.length : selectionRange.selectionStart;\n const selectionEnd = selectionRange.selectionEnd === null ? value.length : selectionRange.selectionEnd;\n const prologEnd = Math.max(0, selectionStart === selectionEnd && deleteContent === 'backward' ? selectionStart - 1 : selectionStart);\n const prolog = value.substring(0, prologEnd);\n const epilogStart = Math.min(value.length, selectionStart === selectionEnd && deleteContent === 'forward' ? selectionEnd + 1 : selectionEnd);\n const epilog = value.substring(epilogStart, value.length);\n let newValue = `${prolog}${newEntry}${epilog}`;\n const newSelectionStart = prologEnd + newEntry.length;\n\n if (element.type === 'date' && !(0, _isValidDateValue.isValidDateValue)(element, newValue)) {\n newValue = value;\n }\n\n if (element.type === 'time' && !(0, _isValidInputTimeValue.isValidInputTimeValue)(element, newValue)) {\n if ((0, _isValidInputTimeValue.isValidInputTimeValue)(element, newEntry)) {\n newValue = newEntry;\n } else {\n newValue = value;\n }\n }\n\n return {\n newValue,\n newSelectionStart\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isCursorAtEnd = isCursorAtEnd;\nexports.isCursorAtStart = isCursorAtStart;\n\nvar _selectionRange = require(\"./selectionRange\");\n\nvar _getValue2 = require(\"./getValue\");\n\nfunction isCursorAtEnd(element) {\n var _getValue;\n\n const {\n selectionStart,\n selectionEnd\n } = (0, _selectionRange.getSelectionRange)(element);\n return selectionStart === selectionEnd && (selectionStart != null ? selectionStart :\n /* istanbul ignore next */\n 0) === ((_getValue = (0, _getValue2.getValue)(element)) != null ? _getValue :\n /* istanbul ignore next */\n '').length;\n}\n\nfunction isCursorAtStart(element) {\n const {\n selectionStart,\n selectionEnd\n } = (0, _selectionRange.getSelectionRange)(element);\n return selectionStart === selectionEnd && (selectionStart != null ? selectionStart :\n /* istanbul ignore next */\n 0) === 0;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hasUnreliableEmptyValue = hasUnreliableEmptyValue;\n\nvar _isElementType = require(\"../misc/isElementType\");\n\nvar unreliableValueInputTypes;\n/**\n * Check if an empty IDL value on the element could mean a derivation of displayed value and IDL value\n */\n\n(function (unreliableValueInputTypes) {\n unreliableValueInputTypes[\"number\"] = \"number\";\n})(unreliableValueInputTypes || (unreliableValueInputTypes = {}));\n\nfunction hasUnreliableEmptyValue(element) {\n return (0, _isElementType.isElementType)(element, 'input') && Boolean(unreliableValueInputTypes[element.type]);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.editableInputTypes = void 0;\nexports.isEditable = isEditable;\nexports.isEditableInput = isEditableInput;\n\nvar _isElementType = require(\"../misc/isElementType\");\n\nvar _isContentEditable = require(\"./isContentEditable\");\n\nfunction isEditable(element) {\n return isEditableInput(element) || (0, _isElementType.isElementType)(element, 'textarea', {\n readOnly: false\n }) || (0, _isContentEditable.isContentEditable)(element);\n}\n\nlet editableInputTypes;\nexports.editableInputTypes = editableInputTypes;\n\n(function (editableInputTypes) {\n editableInputTypes[\"text\"] = \"text\";\n editableInputTypes[\"date\"] = \"date\";\n editableInputTypes[\"datetime-local\"] = \"datetime-local\";\n editableInputTypes[\"email\"] = \"email\";\n editableInputTypes[\"month\"] = \"month\";\n editableInputTypes[\"number\"] = \"number\";\n editableInputTypes[\"password\"] = \"password\";\n editableInputTypes[\"search\"] = \"search\";\n editableInputTypes[\"tel\"] = \"tel\";\n editableInputTypes[\"time\"] = \"time\";\n editableInputTypes[\"url\"] = \"url\";\n editableInputTypes[\"week\"] = \"week\";\n})(editableInputTypes || (exports.editableInputTypes = editableInputTypes = {}));\n\nfunction isEditableInput(element) {\n return (0, _isElementType.isElementType)(element, 'input', {\n readOnly: false\n }) && Boolean(editableInputTypes[element.type]);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getSpaceUntilMaxLength = getSpaceUntilMaxLength;\n\nvar _isElementType = require(\"../misc/isElementType\");\n\nvar _getValue = require(\"./getValue\");\n\nvar maxLengthSupportedTypes;\n\n(function (maxLengthSupportedTypes) {\n maxLengthSupportedTypes[\"email\"] = \"email\";\n maxLengthSupportedTypes[\"password\"] = \"password\";\n maxLengthSupportedTypes[\"search\"] = \"search\";\n maxLengthSupportedTypes[\"telephone\"] = \"telephone\";\n maxLengthSupportedTypes[\"text\"] = \"text\";\n maxLengthSupportedTypes[\"url\"] = \"url\";\n})(maxLengthSupportedTypes || (maxLengthSupportedTypes = {}));\n\nfunction getSpaceUntilMaxLength(element) {\n const value = (0, _getValue.getValue)(element);\n /* istanbul ignore if */\n\n if (value === null) {\n return undefined;\n }\n\n const maxLength = getSanitizedMaxLength(element);\n return maxLength ? maxLength - value.length : undefined;\n} // can't use .maxLength property because of a jsdom bug:\n// https://github.com/jsdom/jsdom/issues/2927\n\n\nfunction getSanitizedMaxLength(element) {\n var _element$getAttribute;\n\n if (!supportsMaxLength(element)) {\n return undefined;\n }\n\n const attr = (_element$getAttribute = element.getAttribute('maxlength')) != null ? _element$getAttribute : '';\n return /^\\d+$/.test(attr) && Number(attr) >= 0 ? Number(attr) : undefined;\n}\n\nfunction supportsMaxLength(element) {\n return (0, _isElementType.isElementType)(element, 'textarea') || (0, _isElementType.isElementType)(element, 'input') && Boolean(maxLengthSupportedTypes[element.type]);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isDisabled = isDisabled;\n\n// This should probably be extended with checking the element type\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/disabled\nfunction isDisabled(element) {\n return Boolean(element && element.disabled);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getActiveElement = getActiveElement;\n\nvar _isDisabled = require(\"../misc/isDisabled\");\n\nfunction getActiveElement(document) {\n const activeElement = document.activeElement;\n\n if (activeElement != null && activeElement.shadowRoot) {\n return getActiveElement(activeElement.shadowRoot);\n } else {\n // Browser does not yield disabled elements as document.activeElement - jsdom does\n if ((0, _isDisabled.isDisabled)(activeElement)) {\n return document.ownerDocument ? // TODO: verify behavior in ShadowRoot\n\n /* istanbul ignore next */\n document.ownerDocument.body : document.body;\n }\n\n return activeElement;\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isLabelWithInternallyDisabledControl = isLabelWithInternallyDisabledControl;\n\nvar _isDisabled = require(\"./isDisabled\");\n\nvar _isElementType = require(\"./isElementType\");\n\n// Absolutely NO events fire on label elements that contain their control\n// if that control is disabled. NUTS!\n// no joke. There are NO events for: <label><input disabled /><label>\nfunction isLabelWithInternallyDisabledControl(element) {\n if (!(0, _isElementType.isElementType)(element, 'label')) {\n return false;\n }\n\n const control = element.control;\n return Boolean(control && element.contains(control) && (0, _isDisabled.isDisabled)(control));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FOCUSABLE_SELECTOR = void 0;\nconst FOCUSABLE_SELECTOR = ['input:not([type=hidden]):not([disabled])', 'button:not([disabled])', 'select:not([disabled])', 'textarea:not([disabled])', '[contenteditable=\"\"]', '[contenteditable=\"true\"]', 'a[href]', '[tabindex]:not([disabled])'].join(', ');\nexports.FOCUSABLE_SELECTOR = FOCUSABLE_SELECTOR;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isFocusable = isFocusable;\n\nvar _isLabelWithInternallyDisabledControl = require(\"../misc/isLabelWithInternallyDisabledControl\");\n\nvar _selector = require(\"./selector\");\n\nfunction isFocusable(element) {\n return !(0, _isLabelWithInternallyDisabledControl.isLabelWithInternallyDisabledControl)(element) && element.matches(_selector.FOCUSABLE_SELECTOR);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.eventWrapper = eventWrapper;\n\nvar _dom = require(\"@testing-library/dom\");\n\nfunction eventWrapper(cb) {\n let result;\n (0, _dom.getConfig)().eventWrapper(() => {\n result = cb();\n });\n return result;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isVisible = isVisible;\n\nvar _helpers = require(\"@testing-library/dom/dist/helpers\");\n\nfunction isVisible(element) {\n const window = (0, _helpers.getWindowFromNode)(element);\n\n for (let el = element; (_el = el) != null && _el.ownerDocument; el = el.parentElement) {\n var _el;\n\n const display = window.getComputedStyle(el).display;\n\n if (display === 'none') {\n return false;\n }\n }\n\n return true;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isDocument = isDocument;\n\nfunction isDocument(el) {\n return el.nodeType === el.DOCUMENT_NODE;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.wait = wait;\n\nfunction wait(time) {\n return new Promise(resolve => setTimeout(() => resolve(), time));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hasPointerEvents = hasPointerEvents;\n\nvar _helpers = require(\"@testing-library/dom/dist/helpers\");\n\nfunction hasPointerEvents(element) {\n const window = (0, _helpers.getWindowFromNode)(element);\n\n for (let el = element; (_el = el) != null && _el.ownerDocument; el = el.parentElement) {\n var _el;\n\n const pointerEvents = window.getComputedStyle(el).pointerEvents;\n\n if (pointerEvents && !['inherit', 'unset'].includes(pointerEvents)) {\n return pointerEvents !== 'none';\n }\n }\n\n return true;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hasFormSubmit = void 0;\n\nconst hasFormSubmit = form => !!(form && (form.querySelector('input[type=\"submit\"]') || form.querySelector('button[type=\"submit\"]')));\n\nexports.hasFormSubmit = hasFormSubmit;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getMouseEventOptions = require(\"./click/getMouseEventOptions\");\n\nObject.keys(_getMouseEventOptions).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _getMouseEventOptions[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _getMouseEventOptions[key];\n }\n });\n});\n\nvar _isClickableInput = require(\"./click/isClickableInput\");\n\nObject.keys(_isClickableInput).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isClickableInput[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isClickableInput[key];\n }\n });\n});\n\nvar _buildTimeValue = require(\"./edit/buildTimeValue\");\n\nObject.keys(_buildTimeValue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _buildTimeValue[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _buildTimeValue[key];\n }\n });\n});\n\nvar _calculateNewValue = require(\"./edit/calculateNewValue\");\n\nObject.keys(_calculateNewValue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _calculateNewValue[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _calculateNewValue[key];\n }\n });\n});\n\nvar _cursorPosition = require(\"./edit/cursorPosition\");\n\nObject.keys(_cursorPosition).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _cursorPosition[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _cursorPosition[key];\n }\n });\n});\n\nvar _getValue = require(\"./edit/getValue\");\n\nObject.keys(_getValue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _getValue[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _getValue[key];\n }\n });\n});\n\nvar _hasUnreliableEmptyValue = require(\"./edit/hasUnreliableEmptyValue\");\n\nObject.keys(_hasUnreliableEmptyValue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _hasUnreliableEmptyValue[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _hasUnreliableEmptyValue[key];\n }\n });\n});\n\nvar _isContentEditable = require(\"./edit/isContentEditable\");\n\nObject.keys(_isContentEditable).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isContentEditable[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isContentEditable[key];\n }\n });\n});\n\nvar _isEditable = require(\"./edit/isEditable\");\n\nObject.keys(_isEditable).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isEditable[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isEditable[key];\n }\n });\n});\n\nvar _isValidDateValue = require(\"./edit/isValidDateValue\");\n\nObject.keys(_isValidDateValue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isValidDateValue[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isValidDateValue[key];\n }\n });\n});\n\nvar _isValidInputTimeValue = require(\"./edit/isValidInputTimeValue\");\n\nObject.keys(_isValidInputTimeValue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isValidInputTimeValue[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isValidInputTimeValue[key];\n }\n });\n});\n\nvar _maxLength = require(\"./edit/maxLength\");\n\nObject.keys(_maxLength).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _maxLength[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _maxLength[key];\n }\n });\n});\n\nvar _selectionRange = require(\"./edit/selectionRange\");\n\nObject.keys(_selectionRange).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _selectionRange[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _selectionRange[key];\n }\n });\n});\n\nvar _getActiveElement = require(\"./focus/getActiveElement\");\n\nObject.keys(_getActiveElement).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _getActiveElement[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _getActiveElement[key];\n }\n });\n});\n\nvar _isFocusable = require(\"./focus/isFocusable\");\n\nObject.keys(_isFocusable).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isFocusable[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isFocusable[key];\n }\n });\n});\n\nvar _selector = require(\"./focus/selector\");\n\nObject.keys(_selector).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _selector[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _selector[key];\n }\n });\n});\n\nvar _eventWrapper = require(\"./misc/eventWrapper\");\n\nObject.keys(_eventWrapper).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _eventWrapper[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _eventWrapper[key];\n }\n });\n});\n\nvar _isElementType = require(\"./misc/isElementType\");\n\nObject.keys(_isElementType).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isElementType[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isElementType[key];\n }\n });\n});\n\nvar _isLabelWithInternallyDisabledControl = require(\"./misc/isLabelWithInternallyDisabledControl\");\n\nObject.keys(_isLabelWithInternallyDisabledControl).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isLabelWithInternallyDisabledControl[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isLabelWithInternallyDisabledControl[key];\n }\n });\n});\n\nvar _isVisible = require(\"./misc/isVisible\");\n\nObject.keys(_isVisible).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isVisible[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isVisible[key];\n }\n });\n});\n\nvar _isDisabled = require(\"./misc/isDisabled\");\n\nObject.keys(_isDisabled).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isDisabled[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isDisabled[key];\n }\n });\n});\n\nvar _isDocument = require(\"./misc/isDocument\");\n\nObject.keys(_isDocument).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isDocument[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isDocument[key];\n }\n });\n});\n\nvar _wait = require(\"./misc/wait\");\n\nObject.keys(_wait).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _wait[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _wait[key];\n }\n });\n});\n\nvar _hasPointerEvents = require(\"./misc/hasPointerEvents\");\n\nObject.keys(_hasPointerEvents).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _hasPointerEvents[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _hasPointerEvents[key];\n }\n });\n});\n\nvar _hasFormSubmit = require(\"./misc/hasFormSubmit\");\n\nObject.keys(_hasFormSubmit).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _hasFormSubmit[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _hasFormSubmit[key];\n }\n });\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hover = hover;\nexports.unhover = unhover;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"./utils\");\n\n// includes `element`\nfunction getParentElements(element) {\n const parentElements = [element];\n let currentElement = element;\n\n while ((currentElement = currentElement.parentElement) != null) {\n parentElements.push(currentElement);\n }\n\n return parentElements;\n}\n\nfunction hover(element, init, {\n skipPointerEventsCheck = false\n} = {}) {\n if (!skipPointerEventsCheck && !(0, _utils.hasPointerEvents)(element)) {\n throw new Error('unable to hover element as it has or inherits pointer-events set to \"none\".');\n }\n\n if ((0, _utils.isLabelWithInternallyDisabledControl)(element)) return;\n const parentElements = getParentElements(element).reverse();\n\n _dom.fireEvent.pointerOver(element, init);\n\n for (const el of parentElements) {\n _dom.fireEvent.pointerEnter(el, init);\n }\n\n if (!(0, _utils.isDisabled)(element)) {\n _dom.fireEvent.mouseOver(element, (0, _utils.getMouseEventOptions)('mouseover', init));\n\n for (const el of parentElements) {\n _dom.fireEvent.mouseEnter(el, (0, _utils.getMouseEventOptions)('mouseenter', init));\n }\n }\n\n _dom.fireEvent.pointerMove(element, init);\n\n if (!(0, _utils.isDisabled)(element)) {\n _dom.fireEvent.mouseMove(element, (0, _utils.getMouseEventOptions)('mousemove', init));\n }\n}\n\nfunction unhover(element, init, {\n skipPointerEventsCheck = false\n} = {}) {\n if (!skipPointerEventsCheck && !(0, _utils.hasPointerEvents)(element)) {\n throw new Error('unable to unhover element as it has or inherits pointer-events set to \"none\".');\n }\n\n if ((0, _utils.isLabelWithInternallyDisabledControl)(element)) return;\n const parentElements = getParentElements(element);\n\n _dom.fireEvent.pointerMove(element, init);\n\n if (!(0, _utils.isDisabled)(element)) {\n _dom.fireEvent.mouseMove(element, (0, _utils.getMouseEventOptions)('mousemove', init));\n }\n\n _dom.fireEvent.pointerOut(element, init);\n\n for (const el of parentElements) {\n _dom.fireEvent.pointerLeave(el, init);\n }\n\n if (!(0, _utils.isDisabled)(element)) {\n _dom.fireEvent.mouseOut(element, (0, _utils.getMouseEventOptions)('mouseout', init));\n\n for (const el of parentElements) {\n _dom.fireEvent.mouseLeave(el, (0, _utils.getMouseEventOptions)('mouseleave', init));\n }\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.blur = blur;\n\nvar _utils = require(\"./utils\");\n\nfunction blur(element) {\n if (!(0, _utils.isFocusable)(element)) return;\n const wasActive = (0, _utils.getActiveElement)(element.ownerDocument) === element;\n if (!wasActive) return;\n (0, _utils.eventWrapper)(() => element.blur());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.focus = focus;\n\nvar _utils = require(\"./utils\");\n\nfunction focus(element) {\n if (!(0, _utils.isFocusable)(element)) return;\n const isAlreadyActive = (0, _utils.getActiveElement)(element.ownerDocument) === element;\n if (isAlreadyActive) return;\n (0, _utils.eventWrapper)(() => element.focus());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.click = click;\nexports.dblClick = dblClick;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"./utils\");\n\nvar _hover = require(\"./hover\");\n\nvar _blur = require(\"./blur\");\n\nvar _focus = require(\"./focus\");\n\nfunction getPreviouslyFocusedElement(element) {\n const focusedElement = element.ownerDocument.activeElement;\n const wasAnotherElementFocused = focusedElement && focusedElement !== element.ownerDocument.body && focusedElement !== element;\n return wasAnotherElementFocused ? focusedElement : null;\n}\n\nfunction clickLabel(label, init, {\n clickCount\n}) {\n if ((0, _utils.isLabelWithInternallyDisabledControl)(label)) return;\n\n _dom.fireEvent.pointerDown(label, init);\n\n _dom.fireEvent.mouseDown(label, (0, _utils.getMouseEventOptions)('mousedown', init, clickCount));\n\n _dom.fireEvent.pointerUp(label, init);\n\n _dom.fireEvent.mouseUp(label, (0, _utils.getMouseEventOptions)('mouseup', init, clickCount));\n\n fireClick(label, (0, _utils.getMouseEventOptions)('click', init, clickCount)); // clicking the label will trigger a click of the label.control\n // however, it will not focus the label.control so we have to do it\n // ourselves.\n\n if (label.control) (0, _focus.focus)(label.control);\n}\n\nfunction clickBooleanElement(element, init, {\n clickCount\n}) {\n _dom.fireEvent.pointerDown(element, init);\n\n if (!element.disabled) {\n _dom.fireEvent.mouseDown(element, (0, _utils.getMouseEventOptions)('mousedown', init, clickCount));\n }\n\n (0, _focus.focus)(element);\n\n _dom.fireEvent.pointerUp(element, init);\n\n if (!element.disabled) {\n _dom.fireEvent.mouseUp(element, (0, _utils.getMouseEventOptions)('mouseup', init, clickCount));\n\n fireClick(element, (0, _utils.getMouseEventOptions)('click', init, clickCount));\n }\n}\n\nfunction clickElement(element, init, {\n clickCount\n}) {\n const previousElement = getPreviouslyFocusedElement(element);\n\n _dom.fireEvent.pointerDown(element, init);\n\n if (!(0, _utils.isDisabled)(element)) {\n const continueDefaultHandling = _dom.fireEvent.mouseDown(element, (0, _utils.getMouseEventOptions)('mousedown', init, clickCount));\n\n if (continueDefaultHandling) {\n const closestFocusable = findClosest(element, _utils.isFocusable);\n\n if (previousElement && !closestFocusable) {\n (0, _blur.blur)(previousElement);\n } else if (closestFocusable) {\n (0, _focus.focus)(closestFocusable);\n }\n }\n }\n\n _dom.fireEvent.pointerUp(element, init);\n\n if (!(0, _utils.isDisabled)(element)) {\n _dom.fireEvent.mouseUp(element, (0, _utils.getMouseEventOptions)('mouseup', init, clickCount));\n\n fireClick(element, (0, _utils.getMouseEventOptions)('click', init, clickCount));\n const parentLabel = element.closest('label');\n if (parentLabel != null && parentLabel.control) (0, _focus.focus)(parentLabel.control);\n }\n}\n\nfunction findClosest(element, callback) {\n let el = element;\n\n do {\n if (callback(el)) {\n return el;\n }\n\n el = el.parentElement;\n } while (el && el !== element.ownerDocument.body);\n\n return undefined;\n}\n\nfunction click(element, init, {\n skipHover = false,\n clickCount = 0,\n skipPointerEventsCheck = false\n} = {}) {\n if (!skipPointerEventsCheck && !(0, _utils.hasPointerEvents)(element)) {\n throw new Error('unable to click element as it has or inherits pointer-events set to \"none\".');\n } // We just checked for `pointerEvents`. We can always skip this one in `hover`.\n\n\n if (!skipHover) (0, _hover.hover)(element, init, {\n skipPointerEventsCheck: true\n });\n\n if ((0, _utils.isElementType)(element, 'label')) {\n clickLabel(element, init, {\n clickCount\n });\n } else if ((0, _utils.isElementType)(element, 'input')) {\n if (element.type === 'checkbox' || element.type === 'radio') {\n clickBooleanElement(element, init, {\n clickCount\n });\n } else {\n clickElement(element, init, {\n clickCount\n });\n }\n } else {\n clickElement(element, init, {\n clickCount\n });\n }\n}\n\nfunction fireClick(element, mouseEventOptions) {\n if (mouseEventOptions.button === 2) {\n _dom.fireEvent.contextMenu(element, mouseEventOptions);\n } else {\n _dom.fireEvent.click(element, mouseEventOptions);\n }\n}\n\nfunction dblClick(element, init, {\n skipPointerEventsCheck = false\n} = {}) {\n if (!skipPointerEventsCheck && !(0, _utils.hasPointerEvents)(element)) {\n throw new Error('unable to double-click element as it has or inherits pointer-events set to \"none\".');\n }\n\n (0, _hover.hover)(element, init, {\n skipPointerEventsCheck\n });\n click(element, init, {\n skipHover: true,\n clickCount: 0,\n skipPointerEventsCheck\n });\n click(element, init, {\n skipHover: true,\n clickCount: 1,\n skipPointerEventsCheck\n });\n\n _dom.fireEvent.dblClick(element, (0, _utils.getMouseEventOptions)('dblclick', init, 2));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getNextKeyDef = getNextKeyDef;\nvar bracketDict;\n\n(function (bracketDict) {\n bracketDict[\"{\"] = \"}\";\n bracketDict[\"[\"] = \"]\";\n})(bracketDict || (bracketDict = {}));\n\nvar legacyModifiers;\n\n(function (legacyModifiers) {\n legacyModifiers[\"alt\"] = \"alt\";\n legacyModifiers[\"ctrl\"] = \"ctrl\";\n legacyModifiers[\"meta\"] = \"meta\";\n legacyModifiers[\"shift\"] = \"shift\";\n})(legacyModifiers || (legacyModifiers = {}));\n\nvar legacyKeyMap;\n/**\n * Get the next key from keyMap\n *\n * Keys can be referenced by `{key}` or `{special}` as well as physical locations per `[code]`.\n * Everything else will be interpreted as a typed character - e.g. `a`.\n * Brackets `{` and `[` can be escaped by doubling - e.g. `foo[[bar` translates to `foo[bar`.\n * Keeping the key pressed can be written as `{key>}`.\n * When keeping the key pressed you can choose how long (how many keydown and keypress) the key is pressed `{key>3}`.\n * You can then release the key per `{key>3/}` or keep it pressed and continue with the next key.\n * Modifiers like `{shift}` imply being kept pressed. This can be turned of per `{shift/}`.\n */\n\n(function (legacyKeyMap) {\n legacyKeyMap[\"ctrl\"] = \"Control\";\n legacyKeyMap[\"del\"] = \"Delete\";\n legacyKeyMap[\"esc\"] = \"Escape\";\n legacyKeyMap[\"space\"] = \" \";\n})(legacyKeyMap || (legacyKeyMap = {}));\n\nfunction getNextKeyDef(text, options) {\n var _options$keyboardMap$;\n\n const {\n type,\n descriptor,\n consumedLength,\n releasePrevious,\n releaseSelf,\n repeat\n } = readNextDescriptor(text);\n const keyDef = (_options$keyboardMap$ = options.keyboardMap.find(def => {\n if (type === '[') {\n var _def$code;\n\n return ((_def$code = def.code) == null ? void 0 : _def$code.toLowerCase()) === descriptor.toLowerCase();\n } else if (type === '{') {\n var _def$key;\n\n const key = mapLegacyKey(descriptor);\n return ((_def$key = def.key) == null ? void 0 : _def$key.toLowerCase()) === key.toLowerCase();\n }\n\n return def.key === descriptor;\n })) != null ? _options$keyboardMap$ : {\n key: 'Unknown',\n code: 'Unknown',\n [type === '[' ? 'code' : 'key']: descriptor\n };\n return {\n keyDef,\n consumedLength,\n releasePrevious,\n releaseSelf,\n repeat\n };\n}\n\nfunction readNextDescriptor(text) {\n let pos = 0;\n const startBracket = text[pos] in bracketDict ? text[pos] : '';\n pos += startBracket.length; // `foo{{bar` is an escaped char at position 3,\n // but `foo{{{>5}bar` should be treated as `{` pressed down for 5 keydowns.\n\n const startBracketRepeated = startBracket ? text.match(new RegExp(`^\\\\${startBracket}+`))[0].length : 0;\n const isEscapedChar = startBracketRepeated === 2 || startBracket === '{' && startBracketRepeated > 3;\n const type = isEscapedChar ? '' : startBracket;\n return {\n type,\n ...(type === '' ? readPrintableChar(text, pos) : readTag(text, pos, type))\n };\n}\n\nfunction readPrintableChar(text, pos) {\n const descriptor = text[pos];\n assertDescriptor(descriptor, text, pos);\n pos += descriptor.length;\n return {\n consumedLength: pos,\n descriptor,\n releasePrevious: false,\n releaseSelf: true,\n repeat: 1\n };\n}\n\nfunction readTag(text, pos, startBracket) {\n var _text$slice$match, _text$slice$match$, _text$slice$match2;\n\n const releasePreviousModifier = text[pos] === '/' ? '/' : '';\n pos += releasePreviousModifier.length;\n const descriptor = (_text$slice$match = text.slice(pos).match(/^\\w+/)) == null ? void 0 : _text$slice$match[0];\n assertDescriptor(descriptor, text, pos);\n pos += descriptor.length;\n const repeatModifier = (_text$slice$match$ = (_text$slice$match2 = text.slice(pos).match(/^>\\d+/)) == null ? void 0 : _text$slice$match2[0]) != null ? _text$slice$match$ : '';\n pos += repeatModifier.length;\n const releaseSelfModifier = text[pos] === '/' || !repeatModifier && text[pos] === '>' ? text[pos] : '';\n pos += releaseSelfModifier.length;\n const expectedEndBracket = bracketDict[startBracket];\n const endBracket = text[pos] === expectedEndBracket ? expectedEndBracket : '';\n\n if (!endBracket) {\n throw new Error(getErrorMessage([!repeatModifier && 'repeat modifier', !releaseSelfModifier && 'release modifier', `\"${expectedEndBracket}\"`].filter(Boolean).join(' or '), text[pos], text));\n }\n\n pos += endBracket.length;\n return {\n consumedLength: pos,\n descriptor,\n releasePrevious: !!releasePreviousModifier,\n repeat: repeatModifier ? Math.max(Number(repeatModifier.substr(1)), 1) : 1,\n releaseSelf: hasReleaseSelf(startBracket, descriptor, releaseSelfModifier, repeatModifier)\n };\n}\n\nfunction assertDescriptor(descriptor, text, pos) {\n if (!descriptor) {\n throw new Error(getErrorMessage('key descriptor', text[pos], text));\n }\n}\n\nfunction getEnumValue(f, key) {\n return f[key];\n}\n\nfunction hasReleaseSelf(startBracket, descriptor, releaseSelfModifier, repeatModifier) {\n if (releaseSelfModifier) {\n return releaseSelfModifier === '/';\n }\n\n if (repeatModifier) {\n return false;\n }\n\n if (startBracket === '{' && getEnumValue(legacyModifiers, descriptor.toLowerCase())) {\n return false;\n }\n\n return true;\n}\n\nfunction mapLegacyKey(descriptor) {\n var _getEnumValue;\n\n return (_getEnumValue = getEnumValue(legacyKeyMap, descriptor)) != null ? _getEnumValue : descriptor;\n}\n\nfunction getErrorMessage(expected, found, text) {\n return `Expected ${expected} but found \"${found != null ? found : ''}\" in \"${text}\"\n See https://github.com/testing-library/user-event/blob/main/README.md#keyboardtext-options\n for more information about how userEvent parses your input.`;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.keydownBehavior = void 0;\n\nvar _utils = require(\"../../utils\");\n\n/**\n * This file should contain behavior for arrow keys as described here:\n * https://w3c.github.io/uievents-code/#key-arrowpad-section\n */\nconst keydownBehavior = [{\n // TODO: implement for contentEditable\n matches: (keyDef, element) => (keyDef.key === 'ArrowLeft' || keyDef.key === 'ArrowRight') && (0, _utils.isElementType)(element, ['input', 'textarea']),\n handle: (keyDef, element) => {\n var _ref;\n\n const {\n selectionStart,\n selectionEnd\n } = (0, _utils.getSelectionRange)(element);\n const direction = keyDef.key === 'ArrowLeft' ? -1 : 1;\n const newPos = (_ref = selectionStart === selectionEnd ? (selectionStart != null ? selectionStart :\n /* istanbul ignore next */\n 0) + direction : direction < 0 ? selectionStart : selectionEnd) != null ? _ref :\n /* istanbul ignore next */\n 0;\n (0, _utils.setSelectionRange)(element, newPos, newPos);\n }\n}];\nexports.keydownBehavior = keydownBehavior;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.carryValue = carryValue;\n\nvar _utils = require(\"../../utils\");\n\nfunction carryValue(element, state, newValue) {\n const value = (0, _utils.getValue)(element);\n state.carryValue = value !== newValue && value === '' && (0, _utils.hasUnreliableEmptyValue)(element) ? newValue : undefined;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fireChangeForInputTimeIfValid = fireChangeForInputTimeIfValid;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"../../utils\");\n\nfunction fireChangeForInputTimeIfValid(el, prevValue, timeNewEntry) {\n if ((0, _utils.isValidInputTimeValue)(el, timeNewEntry) && prevValue !== timeNewEntry) {\n _dom.fireEvent.change(el, {\n target: {\n value: timeNewEntry\n }\n });\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fireInputEvent = fireInputEvent;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"../../utils\");\n\nfunction fireInputEvent(element, {\n newValue,\n newSelectionStart,\n eventOverrides\n}) {\n // apply the changes before firing the input event, so that input handlers can access the altered dom and selection\n if ((0, _utils.isContentEditable)(element)) {\n applyNative(element, 'textContent', newValue);\n } else\n /* istanbul ignore else */\n if ((0, _utils.isElementType)(element, ['input', 'textarea'])) {\n applyNative(element, 'value', newValue);\n } else {\n // TODO: properly type guard\n throw new Error('Invalid Element');\n }\n\n setSelectionRangeAfterInput(element, newSelectionStart);\n\n _dom.fireEvent.input(element, { ...eventOverrides\n });\n\n setSelectionRangeAfterInputHandler(element, newValue, newSelectionStart);\n}\n\nfunction setSelectionRangeAfterInput(element, newSelectionStart) {\n (0, _utils.setSelectionRange)(element, newSelectionStart, newSelectionStart);\n}\n\nfunction setSelectionRangeAfterInputHandler(element, newValue, newSelectionStart) {\n const value = (0, _utils.getValue)(element); // don't apply this workaround on elements that don't necessarily report the visible value - e.g. number\n // TODO: this could probably be only applied when there is keyboardState.carryValue\n\n const isUnreliableValue = value === '' && (0, _utils.hasUnreliableEmptyValue)(element);\n\n if (!isUnreliableValue && value === newValue) {\n const {\n selectionStart\n } = (0, _utils.getSelectionRange)(element);\n\n if (selectionStart === value.length) {\n // The value was changed as expected, but the cursor was moved to the end\n // TODO: this could probably be only applied when we work around a framework setter on the element in applyNative\n (0, _utils.setSelectionRange)(element, newSelectionStart, newSelectionStart);\n }\n }\n}\n\nconst initial = Symbol('initial input value/textContent');\nconst onBlur = Symbol('onBlur');\n\n/**\n * React tracks the changes on element properties.\n * This workaround tries to alter the DOM element without React noticing,\n * so that it later picks up the change.\n *\n * @see https://github.com/facebook/react/blob/148f8e497c7d37a3c7ab99f01dec2692427272b1/packages/react-dom/src/client/inputValueTracking.js#L51-L104\n */\nfunction applyNative(element, propName, propValue) {\n const descriptor = Object.getOwnPropertyDescriptor(element, propName);\n const nativeDescriptor = Object.getOwnPropertyDescriptor(element.constructor.prototype, propName);\n\n if (descriptor && nativeDescriptor) {\n Object.defineProperty(element, propName, nativeDescriptor);\n } // Keep track of the initial value to determine if a change event should be dispatched.\n // CONSTRAINT: We can not determine what happened between focus event and our first API call.\n\n\n if (element[initial] === undefined) {\n element[initial] = String(element[propName]);\n }\n\n element[propName] = propValue; // Add an event listener for the blur event to the capture phase on the window.\n // CONSTRAINT: Currently there is no cross-platform solution to unshift the event handler stack.\n // Our change event might occur after other event handlers on the blur event have been processed.\n\n if (!element[onBlur]) {\n var _element$ownerDocumen;\n\n (_element$ownerDocumen = element.ownerDocument.defaultView) == null ? void 0 : _element$ownerDocumen.addEventListener('blur', element[onBlur] = () => {\n const initV = element[initial]; // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\n delete element[onBlur]; // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\n delete element[initial];\n\n if (String(element[propName]) !== initV) {\n _dom.fireEvent.change(element);\n }\n }, {\n capture: true,\n once: true\n });\n }\n\n if (descriptor) {\n Object.defineProperty(element, propName, descriptor);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _carryValue = require(\"./carryValue\");\n\nObject.keys(_carryValue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _carryValue[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _carryValue[key];\n }\n });\n});\n\nvar _fireChangeForInputTimeIfValid = require(\"./fireChangeForInputTimeIfValid\");\n\nObject.keys(_fireChangeForInputTimeIfValid).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _fireChangeForInputTimeIfValid[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _fireChangeForInputTimeIfValid[key];\n }\n });\n});\n\nvar _fireInputEvent = require(\"./fireInputEvent\");\n\nObject.keys(_fireInputEvent).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _fireInputEvent[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _fireInputEvent[key];\n }\n });\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.keydownBehavior = void 0;\n\nvar _utils = require(\"../../utils\");\n\nvar _shared = require(\"../shared\");\n\n/**\n * This file should contain behavior for arrow keys as described here:\n * https://w3c.github.io/uievents-code/#key-controlpad-section\n */\nconst keydownBehavior = [{\n matches: (keyDef, element) => (keyDef.key === 'Home' || keyDef.key === 'End') && ((0, _utils.isElementType)(element, ['input', 'textarea']) || (0, _utils.isContentEditable)(element)),\n handle: (keyDef, element) => {\n // This could probably been improved by collapsing a selection range\n if (keyDef.key === 'Home') {\n (0, _utils.setSelectionRange)(element, 0, 0);\n } else {\n var _getValue$length, _getValue;\n\n const newPos = (_getValue$length = (_getValue = (0, _utils.getValue)(element)) == null ? void 0 : _getValue.length) != null ? _getValue$length :\n /* istanbul ignore next */\n 0;\n (0, _utils.setSelectionRange)(element, newPos, newPos);\n }\n }\n}, {\n matches: (keyDef, element) => (keyDef.key === 'PageUp' || keyDef.key === 'PageDown') && (0, _utils.isElementType)(element, ['input']),\n handle: (keyDef, element) => {\n // This could probably been improved by collapsing a selection range\n if (keyDef.key === 'PageUp') {\n (0, _utils.setSelectionRange)(element, 0, 0);\n } else {\n var _getValue$length2, _getValue2;\n\n const newPos = (_getValue$length2 = (_getValue2 = (0, _utils.getValue)(element)) == null ? void 0 : _getValue2.length) != null ? _getValue$length2 :\n /* istanbul ignore next */\n 0;\n (0, _utils.setSelectionRange)(element, newPos, newPos);\n }\n }\n}, {\n matches: (keyDef, element) => keyDef.key === 'Delete' && (0, _utils.isEditable)(element) && !(0, _utils.isCursorAtEnd)(element),\n handle: (keDef, element, options, state) => {\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)('', element, state.carryValue, undefined, 'forward');\n (0, _shared.fireInputEvent)(element, {\n newValue,\n newSelectionStart,\n eventOverrides: {\n inputType: 'deleteContentForward'\n }\n });\n (0, _shared.carryValue)(element, state, newValue);\n }\n}];\nexports.keydownBehavior = keydownBehavior;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.keypressBehavior = void 0;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _shared = require(\"../shared\");\n\nvar _utils = require(\"../../utils\");\n\n/**\n * This file should cover the behavior for keys that produce character input\n */\nconst keypressBehavior = [{\n matches: (keyDef, element) => {\n var _keyDef$key;\n\n return ((_keyDef$key = keyDef.key) == null ? void 0 : _keyDef$key.length) === 1 && (0, _utils.isElementType)(element, 'input', {\n type: 'time',\n readOnly: false\n });\n },\n handle: (keyDef, element, options, state) => {\n var _state$carryValue;\n\n let newEntry = keyDef.key;\n const textToBeTyped = ((_state$carryValue = state.carryValue) != null ? _state$carryValue : '') + newEntry;\n const timeNewEntry = (0, _utils.buildTimeValue)(textToBeTyped);\n\n if ((0, _utils.isValidInputTimeValue)(element, timeNewEntry)) {\n newEntry = timeNewEntry;\n }\n\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)(newEntry, element);\n const prevValue = (0, _utils.getValue)(element); // this check was provided by fireInputEventIfNeeded\n // TODO: verify if it is even needed by this handler\n\n if (prevValue !== newValue) {\n (0, _shared.fireInputEvent)(element, {\n newValue,\n newSelectionStart,\n eventOverrides: {\n data: keyDef.key,\n inputType: 'insertText'\n }\n });\n }\n\n (0, _shared.fireChangeForInputTimeIfValid)(element, prevValue, timeNewEntry);\n state.carryValue = textToBeTyped;\n }\n}, {\n matches: (keyDef, element) => {\n var _keyDef$key2;\n\n return ((_keyDef$key2 = keyDef.key) == null ? void 0 : _keyDef$key2.length) === 1 && (0, _utils.isElementType)(element, 'input', {\n type: 'date',\n readOnly: false\n });\n },\n handle: (keyDef, element, options, state) => {\n var _state$carryValue2;\n\n let newEntry = keyDef.key;\n const textToBeTyped = ((_state$carryValue2 = state.carryValue) != null ? _state$carryValue2 : '') + newEntry;\n const isValidToBeTyped = (0, _utils.isValidDateValue)(element, textToBeTyped);\n\n if (isValidToBeTyped) {\n newEntry = textToBeTyped;\n }\n\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)(newEntry, element);\n const prevValue = (0, _utils.getValue)(element); // this check was provided by fireInputEventIfNeeded\n // TODO: verify if it is even needed by this handler\n\n if (prevValue !== newValue) {\n (0, _shared.fireInputEvent)(element, {\n newValue,\n newSelectionStart,\n eventOverrides: {\n data: keyDef.key,\n inputType: 'insertText'\n }\n });\n }\n\n if (isValidToBeTyped) {\n _dom.fireEvent.change(element, {\n target: {\n value: textToBeTyped\n }\n });\n }\n\n state.carryValue = textToBeTyped;\n }\n}, {\n matches: (keyDef, element) => {\n var _keyDef$key3;\n\n return ((_keyDef$key3 = keyDef.key) == null ? void 0 : _keyDef$key3.length) === 1 && (0, _utils.isElementType)(element, 'input', {\n type: 'number',\n readOnly: false\n });\n },\n handle: (keyDef, element, options, state) => {\n var _ref, _state$carryValue3, _newValue$match, _newValue$match2;\n\n if (!/[\\d.\\-e]/.test(keyDef.key)) {\n return;\n }\n\n const oldValue = (_ref = (_state$carryValue3 = state.carryValue) != null ? _state$carryValue3 : (0, _utils.getValue)(element)) != null ? _ref :\n /* istanbul ignore next */\n '';\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)(keyDef.key, element, oldValue); // the browser allows some invalid input but not others\n // it allows up to two '-' at any place before any 'e' or one directly following 'e'\n // it allows one '.' at any place before e\n\n const valueParts = newValue.split('e', 2);\n\n if (Number((_newValue$match = newValue.match(/-/g)) == null ? void 0 : _newValue$match.length) > 2 || Number((_newValue$match2 = newValue.match(/\\./g)) == null ? void 0 : _newValue$match2.length) > 1 || valueParts[1] && !/^-?\\d*$/.test(valueParts[1])) {\n return;\n }\n\n (0, _shared.fireInputEvent)(element, {\n newValue,\n newSelectionStart,\n eventOverrides: {\n data: keyDef.key,\n inputType: 'insertText'\n }\n });\n const appliedValue = (0, _utils.getValue)(element);\n\n if (appliedValue === newValue) {\n state.carryValue = undefined;\n } else {\n state.carryValue = newValue;\n }\n }\n}, {\n matches: (keyDef, element) => {\n var _keyDef$key4;\n\n return ((_keyDef$key4 = keyDef.key) == null ? void 0 : _keyDef$key4.length) === 1 && ((0, _utils.isElementType)(element, ['input', 'textarea'], {\n readOnly: false\n }) && !(0, _utils.isClickableInput)(element) || (0, _utils.isContentEditable)(element)) && (0, _utils.getSpaceUntilMaxLength)(element) !== 0;\n },\n handle: (keyDef, element) => {\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)(keyDef.key, element);\n (0, _shared.fireInputEvent)(element, {\n newValue,\n newSelectionStart,\n eventOverrides: {\n data: keyDef.key,\n inputType: 'insertText'\n }\n });\n }\n}, {\n matches: (keyDef, element) => keyDef.key === 'Enter' && ((0, _utils.isElementType)(element, 'textarea', {\n readOnly: false\n }) || (0, _utils.isContentEditable)(element)) && (0, _utils.getSpaceUntilMaxLength)(element) !== 0,\n handle: (keyDef, element, options, state) => {\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)('\\n', element);\n const inputType = (0, _utils.isContentEditable)(element) && !state.modifiers.shift ? 'insertParagraph' : 'insertLineBreak';\n (0, _shared.fireInputEvent)(element, {\n newValue,\n newSelectionStart,\n eventOverrides: {\n inputType\n }\n });\n }\n}];\nexports.keypressBehavior = keypressBehavior;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getKeyEventProps = getKeyEventProps;\nexports.getMouseEventProps = getMouseEventProps;\n\nfunction getKeyEventProps(keyDef, state) {\n var _keyDef$keyCode, _keyDef$key;\n\n return {\n key: keyDef.key,\n code: keyDef.code,\n altKey: state.modifiers.alt,\n ctrlKey: state.modifiers.ctrl,\n metaKey: state.modifiers.meta,\n shiftKey: state.modifiers.shift,\n\n /** @deprecated use code instead */\n keyCode: (_keyDef$keyCode = keyDef.keyCode) != null ? _keyDef$keyCode : // istanbul ignore next\n ((_keyDef$key = keyDef.key) == null ? void 0 : _keyDef$key.length) === 1 ? keyDef.key.charCodeAt(0) : undefined\n };\n}\n\nfunction getMouseEventProps(state) {\n return {\n altKey: state.modifiers.alt,\n ctrlKey: state.modifiers.ctrl,\n metaKey: state.modifiers.meta,\n shiftKey: state.modifiers.shift\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.preKeyupBehavior = exports.preKeydownBehavior = exports.postKeyupBehavior = exports.keyupBehavior = exports.keypressBehavior = exports.keydownBehavior = void 0;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"../../utils\");\n\nvar _getEventProps = require(\"../getEventProps\");\n\nvar _shared = require(\"../shared\");\n\n/**\n * This file should contain behavior for functional keys as described here:\n * https://w3c.github.io/uievents-code/#key-alphanumeric-functional\n */\nconst modifierKeys = {\n Alt: 'alt',\n Control: 'ctrl',\n Shift: 'shift',\n Meta: 'meta'\n};\nconst preKeydownBehavior = [// modifierKeys switch on the modifier BEFORE the keydown event\n...Object.entries(modifierKeys).map(([key, modKey]) => ({\n matches: keyDef => keyDef.key === key,\n handle: (keyDef, element, options, state) => {\n state.modifiers[modKey] = true;\n }\n})), // AltGraph produces an extra keydown for Control\n// The modifier does not change\n{\n matches: keyDef => keyDef.key === 'AltGraph',\n handle: (keyDef, element, options, state) => {\n var _options$keyboardMap$;\n\n const ctrlKeyDef = (_options$keyboardMap$ = options.keyboardMap.find(k => k.key === 'Control')) != null ? _options$keyboardMap$ :\n /* istanbul ignore next */\n {\n key: 'Control',\n code: 'Control'\n };\n\n _dom.fireEvent.keyDown(element, (0, _getEventProps.getKeyEventProps)(ctrlKeyDef, state));\n }\n}];\nexports.preKeydownBehavior = preKeydownBehavior;\nconst keydownBehavior = [{\n matches: keyDef => keyDef.key === 'CapsLock',\n handle: (keyDef, element, options, state) => {\n state.modifiers.caps = !state.modifiers.caps;\n }\n}, {\n matches: (keyDef, element) => keyDef.key === 'Backspace' && (0, _utils.isEditable)(element) && !(0, _utils.isCursorAtStart)(element),\n handle: (keyDef, element, options, state) => {\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)('', element, state.carryValue, undefined, 'backward');\n (0, _shared.fireInputEvent)(element, {\n newValue,\n newSelectionStart,\n eventOverrides: {\n inputType: 'deleteContentBackward'\n }\n });\n (0, _shared.carryValue)(element, state, newValue);\n }\n}];\nexports.keydownBehavior = keydownBehavior;\nconst keypressBehavior = [{\n matches: (keyDef, element) => keyDef.key === 'Enter' && (0, _utils.isElementType)(element, 'input') && ['checkbox', 'radio'].includes(element.type),\n handle: (keyDef, element) => {\n const form = element.form;\n\n if ((0, _utils.hasFormSubmit)(form)) {\n _dom.fireEvent.submit(form);\n }\n }\n}, {\n matches: (keyDef, element) => keyDef.key === 'Enter' && ((0, _utils.isClickableInput)(element) || // Links with href defined should handle Enter the same as a click\n (0, _utils.isElementType)(element, 'a') && Boolean(element.href)),\n handle: (keyDef, element, options, state) => {\n _dom.fireEvent.click(element, (0, _getEventProps.getMouseEventProps)(state));\n }\n}, {\n matches: (keyDef, element) => keyDef.key === 'Enter' && (0, _utils.isElementType)(element, 'input'),\n handle: (keyDef, element) => {\n const form = element.form;\n\n if (form && (form.querySelectorAll('input').length === 1 || (0, _utils.hasFormSubmit)(form))) {\n _dom.fireEvent.submit(form);\n }\n }\n}];\nexports.keypressBehavior = keypressBehavior;\nconst preKeyupBehavior = [// modifierKeys switch off the modifier BEFORE the keyup event\n...Object.entries(modifierKeys).map(([key, modKey]) => ({\n matches: keyDef => keyDef.key === key,\n handle: (keyDef, element, options, state) => {\n state.modifiers[modKey] = false;\n }\n}))];\nexports.preKeyupBehavior = preKeyupBehavior;\nconst keyupBehavior = [{\n matches: (keyDef, element) => keyDef.key === ' ' && (0, _utils.isClickableInput)(element),\n handle: (keyDef, element, options, state) => {\n _dom.fireEvent.click(element, (0, _getEventProps.getMouseEventProps)(state));\n }\n}];\nexports.keyupBehavior = keyupBehavior;\nconst postKeyupBehavior = [// AltGraph produces an extra keyup for Control\n// The modifier does not change\n{\n matches: keyDef => keyDef.key === 'AltGraph',\n handle: (keyDef, element, options, state) => {\n var _options$keyboardMap$2;\n\n const ctrlKeyDef = (_options$keyboardMap$2 = options.keyboardMap.find(k => k.key === 'Control')) != null ? _options$keyboardMap$2 :\n /* istanbul ignore next */\n {\n key: 'Control',\n code: 'Control'\n };\n\n _dom.fireEvent.keyUp(element, (0, _getEventProps.getKeyEventProps)(ctrlKeyDef, state));\n }\n}];\nexports.postKeyupBehavior = postKeyupBehavior;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.replaceBehavior = exports.preKeyupBehavior = exports.preKeydownBehavior = exports.postKeyupBehavior = exports.keyupBehavior = exports.keypressBehavior = exports.keydownBehavior = void 0;\n\nvar _utils = require(\"../../utils\");\n\nvar arrowKeys = _interopRequireWildcard(require(\"./arrow\"));\n\nvar controlKeys = _interopRequireWildcard(require(\"./control\"));\n\nvar characterKeys = _interopRequireWildcard(require(\"./character\"));\n\nvar functionalKeys = _interopRequireWildcard(require(\"./functional\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nconst replaceBehavior = [{\n matches: (keyDef, element) => keyDef.key === 'selectall' && (0, _utils.isElementType)(element, ['input', 'textarea']),\n handle: (keyDef, element, options, state) => {\n var _state$carryValue;\n\n (0, _utils.setSelectionRange)(element, 0, ((_state$carryValue = state.carryValue) != null ? _state$carryValue : element.value).length);\n }\n}];\nexports.replaceBehavior = replaceBehavior;\nconst preKeydownBehavior = [...functionalKeys.preKeydownBehavior];\nexports.preKeydownBehavior = preKeydownBehavior;\nconst keydownBehavior = [...arrowKeys.keydownBehavior, ...controlKeys.keydownBehavior, ...functionalKeys.keydownBehavior];\nexports.keydownBehavior = keydownBehavior;\nconst keypressBehavior = [...functionalKeys.keypressBehavior, ...characterKeys.keypressBehavior];\nexports.keypressBehavior = keypressBehavior;\nconst preKeyupBehavior = [...functionalKeys.preKeyupBehavior];\nexports.preKeyupBehavior = preKeyupBehavior;\nconst keyupBehavior = [...functionalKeys.keyupBehavior];\nexports.keyupBehavior = keyupBehavior;\nconst postKeyupBehavior = [...functionalKeys.postKeyupBehavior];\nexports.postKeyupBehavior = postKeyupBehavior;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.keyboardImplementation = keyboardImplementation;\nexports.releaseAllKeys = releaseAllKeys;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"../utils\");\n\nvar _getNextKeyDef = require(\"./getNextKeyDef\");\n\nvar plugins = _interopRequireWildcard(require(\"./plugins\"));\n\nvar _getEventProps = require(\"./getEventProps\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nasync function keyboardImplementation(text, options, state) {\n var _state$repeatKey;\n\n const {\n document\n } = options;\n\n const getCurrentElement = () => getActive(document);\n\n const {\n keyDef,\n consumedLength,\n releasePrevious,\n releaseSelf,\n repeat\n } = (_state$repeatKey = state.repeatKey) != null ? _state$repeatKey : (0, _getNextKeyDef.getNextKeyDef)(text, options);\n const replace = applyPlugins(plugins.replaceBehavior, keyDef, getCurrentElement(), options, state);\n\n if (!replace) {\n const pressed = state.pressed.find(p => p.keyDef === keyDef); // Release the key automatically if it was pressed before.\n // Do not release the key on iterations on `state.repeatKey`.\n\n if (pressed && !state.repeatKey) {\n keyup(keyDef, getCurrentElement, options, state, pressed.unpreventedDefault);\n }\n\n if (!releasePrevious) {\n const unpreventedDefault = keydown(keyDef, getCurrentElement, options, state);\n\n if (unpreventedDefault && hasKeyPress(keyDef, state)) {\n keypress(keyDef, getCurrentElement, options, state);\n } // Release the key only on the last iteration on `state.repeatKey`.\n\n\n if (releaseSelf && repeat <= 1) {\n keyup(keyDef, getCurrentElement, options, state, unpreventedDefault);\n }\n }\n }\n\n if (repeat > 1) {\n state.repeatKey = {\n // don't consume again on the next iteration\n consumedLength: 0,\n keyDef,\n releasePrevious,\n releaseSelf,\n repeat: repeat - 1\n };\n } else {\n delete state.repeatKey;\n }\n\n if (text.length > consumedLength || repeat > 1) {\n if (options.delay > 0) {\n await (0, _utils.wait)(options.delay);\n }\n\n return keyboardImplementation(text.slice(consumedLength), options, state);\n }\n\n return void undefined;\n}\n\nfunction getActive(document) {\n var _getActiveElement;\n\n return (_getActiveElement = (0, _utils.getActiveElement)(document)) != null ? _getActiveElement :\n /* istanbul ignore next */\n document.body;\n}\n\nfunction releaseAllKeys(options, state) {\n const getCurrentElement = () => getActive(options.document);\n\n for (const k of state.pressed) {\n keyup(k.keyDef, getCurrentElement, options, state, k.unpreventedDefault);\n }\n}\n\nfunction keydown(keyDef, getCurrentElement, options, state) {\n const element = getCurrentElement(); // clear carried characters when focus is moved\n\n if (element !== state.activeElement) {\n state.carryValue = undefined;\n state.carryChar = '';\n }\n\n state.activeElement = element;\n applyPlugins(plugins.preKeydownBehavior, keyDef, element, options, state);\n\n const unpreventedDefault = _dom.fireEvent.keyDown(element, (0, _getEventProps.getKeyEventProps)(keyDef, state));\n\n state.pressed.push({\n keyDef,\n unpreventedDefault\n });\n\n if (unpreventedDefault) {\n // all default behavior like keypress/submit etc is applied to the currentElement\n applyPlugins(plugins.keydownBehavior, keyDef, getCurrentElement(), options, state);\n }\n\n return unpreventedDefault;\n}\n\nfunction keypress(keyDef, getCurrentElement, options, state) {\n const element = getCurrentElement();\n\n const unpreventedDefault = _dom.fireEvent.keyPress(element, (0, _getEventProps.getKeyEventProps)(keyDef, state));\n\n if (unpreventedDefault) {\n applyPlugins(plugins.keypressBehavior, keyDef, getCurrentElement(), options, state);\n }\n}\n\nfunction keyup(keyDef, getCurrentElement, options, state, unprevented) {\n const element = getCurrentElement();\n applyPlugins(plugins.preKeyupBehavior, keyDef, element, options, state);\n\n const unpreventedDefault = _dom.fireEvent.keyUp(element, (0, _getEventProps.getKeyEventProps)(keyDef, state));\n\n if (unprevented && unpreventedDefault) {\n applyPlugins(plugins.keyupBehavior, keyDef, getCurrentElement(), options, state);\n }\n\n state.pressed = state.pressed.filter(k => k.keyDef !== keyDef);\n applyPlugins(plugins.postKeyupBehavior, keyDef, element, options, state);\n}\n\nfunction applyPlugins(pluginCollection, keyDef, element, options, state) {\n const plugin = pluginCollection.find(p => p.matches(keyDef, element, options, state));\n\n if (plugin) {\n plugin.handle(keyDef, element, options, state);\n }\n\n return !!plugin;\n}\n\nfunction hasKeyPress(keyDef, state) {\n var _keyDef$key;\n\n return (((_keyDef$key = keyDef.key) == null ? void 0 : _keyDef$key.length) === 1 || keyDef.key === 'Enter') && !state.modifiers.ctrl && !state.modifiers.alt;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DOM_KEY_LOCATION = void 0;\n\n/**\n * @internal Do not create/alter this by yourself as this type might be subject to changes.\n */\nlet DOM_KEY_LOCATION;\nexports.DOM_KEY_LOCATION = DOM_KEY_LOCATION;\n\n(function (DOM_KEY_LOCATION) {\n DOM_KEY_LOCATION[DOM_KEY_LOCATION[\"STANDARD\"] = 0] = \"STANDARD\";\n DOM_KEY_LOCATION[DOM_KEY_LOCATION[\"LEFT\"] = 1] = \"LEFT\";\n DOM_KEY_LOCATION[DOM_KEY_LOCATION[\"RIGHT\"] = 2] = \"RIGHT\";\n DOM_KEY_LOCATION[DOM_KEY_LOCATION[\"NUMPAD\"] = 3] = \"NUMPAD\";\n})(DOM_KEY_LOCATION || (exports.DOM_KEY_LOCATION = DOM_KEY_LOCATION = {}));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.defaultKeyMap = void 0;\n\nvar _types = require(\"./types\");\n\n/**\n * Mapping for a default US-104-QWERTY keyboard\n */\nconst defaultKeyMap = [// alphanumeric keys\n...'0123456789'.split('').map(c => ({\n code: `Digit${c}`,\n key: c\n})), ...')!@#$%^&*('.split('').map((c, i) => ({\n code: `Digit${i}`,\n key: c,\n shiftKey: true\n})), ...'abcdefghijklmnopqrstuvwxyz'.split('').map(c => ({\n code: `Key${c.toUpperCase()}`,\n key: c\n})), ...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('').map(c => ({\n code: `Key${c}`,\n key: c,\n shiftKey: true\n})), // alphanumeric block - functional\n{\n code: 'Space',\n key: ' '\n}, {\n code: 'AltLeft',\n key: 'Alt',\n location: _types.DOM_KEY_LOCATION.LEFT,\n keyCode: 18\n}, {\n code: 'AltRight',\n key: 'Alt',\n location: _types.DOM_KEY_LOCATION.RIGHT,\n keyCode: 18\n}, {\n code: 'ShiftLeft',\n key: 'Shift',\n location: _types.DOM_KEY_LOCATION.LEFT,\n keyCode: 16\n}, {\n code: 'ShiftRight',\n key: 'Shift',\n location: _types.DOM_KEY_LOCATION.RIGHT,\n keyCode: 16\n}, {\n code: 'ControlLeft',\n key: 'Control',\n location: _types.DOM_KEY_LOCATION.LEFT,\n keyCode: 17\n}, {\n code: 'ControlRight',\n key: 'Control',\n location: _types.DOM_KEY_LOCATION.RIGHT,\n keyCode: 17\n}, {\n code: 'MetaLeft',\n key: 'Meta',\n location: _types.DOM_KEY_LOCATION.LEFT,\n keyCode: 93\n}, {\n code: 'MetaRight',\n key: 'Meta',\n location: _types.DOM_KEY_LOCATION.RIGHT,\n keyCode: 93\n}, {\n code: 'OSLeft',\n key: 'OS',\n location: _types.DOM_KEY_LOCATION.LEFT,\n keyCode: 91\n}, {\n code: 'OSRight',\n key: 'OS',\n location: _types.DOM_KEY_LOCATION.RIGHT,\n keyCode: 91\n}, {\n code: 'CapsLock',\n key: 'CapsLock',\n keyCode: 20\n}, {\n code: 'Backspace',\n key: 'Backspace',\n keyCode: 8\n}, {\n code: 'Enter',\n key: 'Enter',\n keyCode: 13\n}, // function\n{\n code: 'Escape',\n key: 'Escape',\n keyCode: 27\n}, // arrows\n{\n code: 'ArrowUp',\n key: 'ArrowUp',\n keyCode: 38\n}, {\n code: 'ArrowDown',\n key: 'ArrowDown',\n keyCode: 40\n}, {\n code: 'ArrowLeft',\n key: 'ArrowLeft',\n keyCode: 37\n}, {\n code: 'ArrowRight',\n key: 'ArrowRight',\n keyCode: 39\n}, // control pad\n{\n code: 'Home',\n key: 'Home',\n keyCode: 36\n}, {\n code: 'End',\n key: 'End',\n keyCode: 35\n}, {\n code: 'Delete',\n key: 'Delete',\n keyCode: 46\n}, {\n code: 'PageUp',\n key: 'PageUp',\n keyCode: 33\n}, {\n code: 'PageDown',\n key: 'PageDown',\n keyCode: 34\n} // TODO: add mappings\n];\nexports.defaultKeyMap = defaultKeyMap;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.specialCharMap = void 0;\n\n/**\n * @deprecated This list of strings with special meaning is no longer necessary\n * as we've introduced a standardized way to describe any keystroke for `userEvent`.\n * @see https://testing-library.com/docs/ecosystem-user-event#keyboardtext-options\n */\nconst specialCharMap = {\n arrowLeft: '{arrowleft}',\n arrowRight: '{arrowright}',\n arrowDown: '{arrowdown}',\n arrowUp: '{arrowup}',\n enter: '{enter}',\n escape: '{esc}',\n delete: '{del}',\n backspace: '{backspace}',\n home: '{home}',\n end: '{end}',\n selectAll: '{selectall}',\n space: '{space}',\n whitespace: ' ',\n pageUp: '{pageUp}',\n pageDown: '{pageDown}'\n};\nexports.specialCharMap = specialCharMap;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.keyboard = keyboard;\nexports.keyboardImplementationWrapper = keyboardImplementationWrapper;\nObject.defineProperty(exports, \"specialCharMap\", {\n enumerable: true,\n get: function () {\n return _specialCharMap.specialCharMap;\n }\n});\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _keyboardImplementation = require(\"./keyboardImplementation\");\n\nvar _keyMap = require(\"./keyMap\");\n\nvar _specialCharMap = require(\"./specialCharMap\");\n\nfunction keyboard(text, options) {\n var _options$delay;\n\n const {\n promise,\n state\n } = keyboardImplementationWrapper(text, options);\n\n if (((_options$delay = options == null ? void 0 : options.delay) != null ? _options$delay : 0) > 0) {\n return (0, _dom.getConfig)().asyncWrapper(() => promise.then(() => state));\n } else {\n // prevent users from dealing with UnhandledPromiseRejectionWarning in sync call\n promise.catch(console.error);\n return state;\n }\n}\n\nfunction keyboardImplementationWrapper(text, config = {}) {\n const {\n keyboardState: state = createKeyboardState(),\n delay = 0,\n document: doc = document,\n autoModify = false,\n keyboardMap = _keyMap.defaultKeyMap\n } = config;\n const options = {\n delay,\n document: doc,\n autoModify,\n keyboardMap\n };\n return {\n promise: (0, _keyboardImplementation.keyboardImplementation)(text, options, state),\n state,\n releaseAllKeys: () => (0, _keyboardImplementation.releaseAllKeys)(options, state)\n };\n}\n\nfunction createKeyboardState() {\n return {\n activeElement: null,\n pressed: [],\n carryChar: '',\n modifiers: {\n alt: false,\n caps: false,\n ctrl: false,\n meta: false,\n shift: false\n }\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.typeImplementation = typeImplementation;\n\nvar _utils = require(\"../utils\");\n\nvar _click = require(\"../click\");\n\nvar _keyboard = require(\"../keyboard\");\n\nasync function typeImplementation(element, text, {\n delay,\n skipClick = false,\n skipAutoClose = false,\n initialSelectionStart = undefined,\n initialSelectionEnd = undefined\n}) {\n // TODO: properly type guard\n // we use this workaround for now to prevent changing behavior\n if (element.disabled) return;\n if (!skipClick) (0, _click.click)(element); // The focused element could change between each event, so get the currently active element each time\n\n const currentElement = () => (0, _utils.getActiveElement)(element.ownerDocument); // by default, a new element has its selection start and end at 0\n // but most of the time when people call \"type\", they expect it to type\n // at the end of the current input value. So, if the selection start\n // and end are both the default of 0, then we'll go ahead and change\n // them to the length of the current value.\n // the only time it would make sense to pass the initialSelectionStart or\n // initialSelectionEnd is if you have an input with a value and want to\n // explicitly start typing with the cursor at 0. Not super common.\n\n\n const value = (0, _utils.getValue)(currentElement());\n const {\n selectionStart,\n selectionEnd\n } = (0, _utils.getSelectionRange)(element);\n\n if (value != null && (selectionStart === null || selectionStart === 0) && (selectionEnd === null || selectionEnd === 0)) {\n (0, _utils.setSelectionRange)(currentElement(), initialSelectionStart != null ? initialSelectionStart : value.length, initialSelectionEnd != null ? initialSelectionEnd : value.length);\n }\n\n const {\n promise,\n releaseAllKeys\n } = (0, _keyboard.keyboardImplementationWrapper)(text, {\n delay,\n document: element.ownerDocument\n });\n\n if (delay > 0) {\n await promise;\n }\n\n if (!skipAutoClose) {\n releaseAllKeys();\n } // eslint-disable-next-line consistent-return -- we need to return the internal Promise so that it is catchable if we don't await\n\n\n return promise;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.type = type;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _typeImplementation = require(\"./typeImplementation\");\n\n// this needs to be wrapped in the event/asyncWrapper for React's act and angular's change detection\n// depending on whether it will be async.\nfunction type(element, text, {\n delay = 0,\n ...options\n} = {}) {\n // we do not want to wrap in the asyncWrapper if we're not\n // going to actually be doing anything async, so we only wrap\n // if the delay is greater than 0\n if (delay > 0) {\n return (0, _dom.getConfig)().asyncWrapper(() => (0, _typeImplementation.typeImplementation)(element, text, {\n delay,\n ...options\n }));\n } else {\n return void (0, _typeImplementation.typeImplementation)(element, text, {\n delay,\n ...options\n }) // prevents users from dealing with UnhandledPromiseRejectionWarning\n .catch(console.error);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.clear = clear;\n\nvar _utils = require(\"./utils\");\n\nvar _type = require(\"./type\");\n\nfunction clear(element) {\n var _element$selectionSta, _element$selectionEnd;\n\n if (!(0, _utils.isElementType)(element, ['input', 'textarea'])) {\n // TODO: support contenteditable\n throw new Error('clear currently only supports input and textarea elements.');\n }\n\n if ((0, _utils.isDisabled)(element)) {\n return;\n } // TODO: track the selection range ourselves so we don't have to do this input \"type\" trickery\n // just like cypress does: https://github.com/cypress-io/cypress/blob/8d7f1a0bedc3c45a2ebf1ff50324b34129fdc683/packages/driver/src/dom/selection.ts#L16-L37\n\n\n const elementType = element.type;\n\n if (elementType !== 'textarea') {\n // setSelectionRange is not supported on certain types of inputs, e.g. \"number\" or \"email\"\n ;\n element.type = 'text';\n }\n\n (0, _type.type)(element, '{selectall}{del}', {\n delay: 0,\n initialSelectionStart: (_element$selectionSta = element.selectionStart) != null ? _element$selectionSta :\n /* istanbul ignore next */\n undefined,\n initialSelectionEnd: (_element$selectionEnd = element.selectionEnd) != null ? _element$selectionEnd :\n /* istanbul ignore next */\n undefined\n });\n\n if (elementType !== 'textarea') {\n ;\n element.type = elementType;\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tab = tab;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"./utils\");\n\nvar _focus = require(\"./focus\");\n\nvar _blur = require(\"./blur\");\n\nfunction getNextElement(currentIndex, shift, elements, focusTrap) {\n if ((0, _utils.isDocument)(focusTrap) && (currentIndex === 0 && shift || currentIndex === elements.length - 1 && !shift)) {\n return focusTrap.body;\n }\n\n const nextIndex = shift ? currentIndex - 1 : currentIndex + 1;\n const defaultIndex = shift ? elements.length - 1 : 0;\n return elements[nextIndex] || elements[defaultIndex];\n}\n\nfunction tab({\n shift = false,\n focusTrap\n} = {}) {\n var _focusTrap$ownerDocum, _focusTrap;\n\n const doc = (_focusTrap$ownerDocum = (_focusTrap = focusTrap) == null ? void 0 : _focusTrap.ownerDocument) != null ? _focusTrap$ownerDocum : document;\n const previousElement = (0, _utils.getActiveElement)(doc);\n\n if (!focusTrap) {\n focusTrap = doc;\n }\n\n const focusableElements = focusTrap.querySelectorAll(_utils.FOCUSABLE_SELECTOR);\n const enabledElements = Array.from(focusableElements).filter(el => el === previousElement || el.getAttribute('tabindex') !== '-1' && !(0, _utils.isDisabled)(el) && // Hidden elements are not tabable\n (0, _utils.isVisible)(el));\n if (enabledElements.length === 0) return;\n const orderedElements = enabledElements.map((el, idx) => ({\n el,\n idx\n })).sort((a, b) => {\n // tabindex has no effect if the active element has tabindex=\"-1\"\n if (previousElement && previousElement.getAttribute('tabindex') === '-1') {\n return a.idx - b.idx;\n }\n\n const tabIndexA = Number(a.el.getAttribute('tabindex'));\n const tabIndexB = Number(b.el.getAttribute('tabindex'));\n const diff = tabIndexA - tabIndexB;\n return diff === 0 ? a.idx - b.idx : diff;\n }).map(({\n el\n }) => el); // TODO: verify/remove type casts\n\n const checkedRadio = {};\n let prunedElements = [];\n orderedElements.forEach(currentElement => {\n // For radio groups keep only the active radio\n // If there is no active radio, keep only the checked radio\n // If there is no checked radio, treat like everything else\n const el = currentElement;\n\n if (el.type === 'radio' && el.name) {\n // If the active element is part of the group, add only that\n const prev = previousElement;\n\n if (prev && prev.type === el.type && prev.name === el.name) {\n if (el === prev) {\n prunedElements.push(el);\n }\n\n return;\n } // If we stumble upon a checked radio, remove the others\n\n\n if (el.checked) {\n prunedElements = prunedElements.filter(e => e.type !== el.type || e.name !== el.name);\n prunedElements.push(el);\n checkedRadio[el.name] = el;\n return;\n } // If we already found the checked one, skip\n\n\n if (typeof checkedRadio[el.name] !== 'undefined') {\n return;\n }\n }\n\n prunedElements.push(el);\n });\n const index = prunedElements.findIndex(el => el === previousElement);\n const nextElement = getNextElement(index, shift, prunedElements, focusTrap);\n const shiftKeyInit = {\n key: 'Shift',\n keyCode: 16,\n shiftKey: true\n };\n const tabKeyInit = {\n key: 'Tab',\n keyCode: 9,\n shiftKey: shift\n };\n let continueToTab = true; // not sure how to make it so there's no previous element...\n // istanbul ignore else\n\n if (previousElement) {\n // preventDefault on the shift key makes no difference\n if (shift) _dom.fireEvent.keyDown(previousElement, { ...shiftKeyInit\n });\n continueToTab = _dom.fireEvent.keyDown(previousElement, { ...tabKeyInit\n });\n }\n\n const keyUpTarget = !continueToTab && previousElement ? previousElement : nextElement;\n\n if (continueToTab) {\n if (nextElement === doc.body) {\n /* istanbul ignore else */\n if (previousElement) {\n (0, _blur.blur)(previousElement);\n }\n } else {\n (0, _focus.focus)(nextElement);\n }\n }\n\n _dom.fireEvent.keyUp(keyUpTarget, { ...tabKeyInit\n });\n\n if (shift) {\n _dom.fireEvent.keyUp(keyUpTarget, { ...shiftKeyInit,\n shiftKey: false\n });\n }\n}\n/*\neslint\n complexity: \"off\",\n max-statements: \"off\",\n*/","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.upload = upload;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _click = require(\"./click\");\n\nvar _blur = require(\"./blur\");\n\nvar _focus = require(\"./focus\");\n\nvar _utils = require(\"./utils\");\n\nfunction upload(element, fileOrFiles, init, {\n applyAccept = false\n} = {}) {\n var _input$files;\n\n const input = (0, _utils.isElementType)(element, 'label') ? element.control : element;\n\n if (!input || !(0, _utils.isElementType)(input, 'input', {\n type: 'file'\n })) {\n throw new TypeError(`The ${input === element ? 'given' : 'associated'} ${input == null ? void 0 : input.tagName} element does not accept file uploads`);\n }\n\n if ((0, _utils.isDisabled)(element)) return;\n (0, _click.click)(element, init == null ? void 0 : init.clickInit);\n const files = (Array.isArray(fileOrFiles) ? fileOrFiles : [fileOrFiles]).filter(file => !applyAccept || isAcceptableFile(file, input.accept)).slice(0, input.multiple ? undefined : 1); // blur fires when the file selector pops up\n\n (0, _blur.blur)(element); // focus fires when they make their selection\n\n (0, _focus.focus)(element); // do not fire an input event if the file selection does not change\n\n if (files.length === ((_input$files = input.files) == null ? void 0 : _input$files.length) && files.every((f, i) => {\n var _input$files2;\n\n return f === ((_input$files2 = input.files) == null ? void 0 : _input$files2.item(i));\n })) {\n return;\n } // the event fired in the browser isn't actually an \"input\" or \"change\" event\n // but a new Event with a type set to \"input\" and \"change\"\n // Kinda odd...\n\n\n const inputFiles = { ...files,\n length: files.length,\n item: index => files[index],\n\n [Symbol.iterator]() {\n let i = 0;\n return {\n next: () => ({\n done: i >= files.length,\n value: files[i++]\n })\n };\n }\n\n };\n (0, _dom.fireEvent)(input, (0, _dom.createEvent)('input', input, {\n target: {\n files: inputFiles\n },\n bubbles: true,\n cancelable: false,\n composed: true\n }));\n\n _dom.fireEvent.change(input, {\n target: {\n files: inputFiles\n },\n ...(init == null ? void 0 : init.changeInit)\n });\n}\n\nfunction isAcceptableFile(file, accept) {\n if (!accept) {\n return true;\n }\n\n const wildcards = ['audio/*', 'image/*', 'video/*'];\n return accept.split(',').some(acceptToken => {\n if (acceptToken.startsWith('.')) {\n // tokens starting with a dot represent a file extension\n return file.name.endsWith(acceptToken);\n } else if (wildcards.includes(acceptToken)) {\n return file.type.startsWith(acceptToken.substr(0, acceptToken.length - 1));\n }\n\n return file.type === acceptToken;\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.selectOptions = exports.deselectOptions = void 0;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"./utils\");\n\nvar _click = require(\"./click\");\n\nvar _focus = require(\"./focus\");\n\nvar _hover = require(\"./hover\");\n\nfunction selectOptionsBase(newValue, select, values, init, {\n skipPointerEventsCheck = false\n} = {}) {\n if (!newValue && !select.multiple) {\n throw (0, _dom.getConfig)().getElementError(`Unable to deselect an option in a non-multiple select. Use selectOptions to change the selection instead.`, select);\n }\n\n const valArray = Array.isArray(values) ? values : [values];\n const allOptions = Array.from(select.querySelectorAll('option, [role=\"option\"]'));\n const selectedOptions = valArray.map(val => {\n if (typeof val !== 'string' && allOptions.includes(val)) {\n return val;\n } else {\n const matchingOption = allOptions.find(o => o.value === val || o.innerHTML === val);\n\n if (matchingOption) {\n return matchingOption;\n } else {\n throw (0, _dom.getConfig)().getElementError(`Value \"${String(val)}\" not found in options`, select);\n }\n }\n }).filter(option => !(0, _utils.isDisabled)(option));\n if ((0, _utils.isDisabled)(select) || !selectedOptions.length) return;\n\n if ((0, _utils.isElementType)(select, 'select')) {\n if (select.multiple) {\n for (const option of selectedOptions) {\n const withPointerEvents = skipPointerEventsCheck ? true : (0, _utils.hasPointerEvents)(option); // events fired for multiple select are weird. Can't use hover...\n\n if (withPointerEvents) {\n _dom.fireEvent.pointerOver(option, init);\n\n _dom.fireEvent.pointerEnter(select, init);\n\n _dom.fireEvent.mouseOver(option);\n\n _dom.fireEvent.mouseEnter(select);\n\n _dom.fireEvent.pointerMove(option, init);\n\n _dom.fireEvent.mouseMove(option, init);\n\n _dom.fireEvent.pointerDown(option, init);\n\n _dom.fireEvent.mouseDown(option, init);\n }\n\n (0, _focus.focus)(select);\n\n if (withPointerEvents) {\n _dom.fireEvent.pointerUp(option, init);\n\n _dom.fireEvent.mouseUp(option, init);\n }\n\n selectOption(option);\n\n if (withPointerEvents) {\n _dom.fireEvent.click(option, init);\n }\n }\n } else if (selectedOptions.length === 1) {\n const withPointerEvents = skipPointerEventsCheck ? true : (0, _utils.hasPointerEvents)(select); // the click to open the select options\n\n if (withPointerEvents) {\n (0, _click.click)(select, init, {\n skipPointerEventsCheck\n });\n } else {\n (0, _focus.focus)(select);\n }\n\n selectOption(selectedOptions[0]);\n\n if (withPointerEvents) {\n // the browser triggers another click event on the select for the click on the option\n // this second click has no 'down' phase\n _dom.fireEvent.pointerOver(select, init);\n\n _dom.fireEvent.pointerEnter(select, init);\n\n _dom.fireEvent.mouseOver(select);\n\n _dom.fireEvent.mouseEnter(select);\n\n _dom.fireEvent.pointerUp(select, init);\n\n _dom.fireEvent.mouseUp(select, init);\n\n _dom.fireEvent.click(select, init);\n }\n } else {\n throw (0, _dom.getConfig)().getElementError(`Cannot select multiple options on a non-multiple select`, select);\n }\n } else if (select.getAttribute('role') === 'listbox') {\n selectedOptions.forEach(option => {\n (0, _hover.hover)(option, init, {\n skipPointerEventsCheck\n });\n (0, _click.click)(option, init, {\n skipPointerEventsCheck\n });\n (0, _hover.unhover)(option, init, {\n skipPointerEventsCheck\n });\n });\n } else {\n throw (0, _dom.getConfig)().getElementError(`Cannot select options on elements that are neither select nor listbox elements`, select);\n }\n\n function selectOption(option) {\n option.selected = newValue;\n (0, _dom.fireEvent)(select, (0, _dom.createEvent)('input', select, {\n bubbles: true,\n cancelable: false,\n composed: true,\n ...init\n }));\n\n _dom.fireEvent.change(select, init);\n }\n}\n\nconst selectOptions = selectOptionsBase.bind(null, true);\nexports.selectOptions = selectOptions;\nconst deselectOptions = selectOptionsBase.bind(null, false);\nexports.deselectOptions = deselectOptions;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.paste = paste;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"./utils\");\n\nfunction isSupportedElement(element) {\n return (0, _utils.isElementType)(element, 'input') && Boolean(_utils.editableInputTypes[element.type]) || (0, _utils.isElementType)(element, 'textarea');\n}\n\nfunction paste(element, text, init, {\n initialSelectionStart,\n initialSelectionEnd\n} = {}) {\n // TODO: implement for contenteditable\n if (!isSupportedElement(element)) {\n throw new TypeError(`The given ${element.tagName} element is currently unsupported.\n A PR extending this implementation would be very much welcome at https://github.com/testing-library/user-event`);\n }\n\n if ((0, _utils.isDisabled)(element)) {\n return;\n }\n\n (0, _utils.eventWrapper)(() => element.focus()); // by default, a new element has it's selection start and end at 0\n // but most of the time when people call \"paste\", they expect it to paste\n // at the end of the current input value. So, if the selection start\n // and end are both the default of 0, then we'll go ahead and change\n // them to the length of the current value.\n // the only time it would make sense to pass the initialSelectionStart or\n // initialSelectionEnd is if you have an input with a value and want to\n // explicitely start typing with the cursor at 0. Not super common.\n\n if (element.selectionStart === 0 && element.selectionEnd === 0) {\n (0, _utils.setSelectionRange)(element, initialSelectionStart != null ? initialSelectionStart : element.value.length, initialSelectionEnd != null ? initialSelectionEnd : element.value.length);\n }\n\n _dom.fireEvent.paste(element, init);\n\n if (element.readOnly) {\n return;\n }\n\n text = text.substr(0, (0, _utils.getSpaceUntilMaxLength)(element));\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)(text, element);\n\n _dom.fireEvent.input(element, {\n inputType: 'insertFromPaste',\n target: {\n value: newValue\n }\n });\n\n (0, _utils.setSelectionRange)(element, // TODO: investigate why the selection caused by invalid parameters was expected\n {\n newSelectionStart,\n selectionEnd: newSelectionStart\n }, {});\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nObject.defineProperty(exports, \"specialChars\", {\n enumerable: true,\n get: function () {\n return _keyboard.specialCharMap;\n }\n});\n\nvar _click = require(\"./click\");\n\nvar _type = require(\"./type\");\n\nvar _clear = require(\"./clear\");\n\nvar _tab = require(\"./tab\");\n\nvar _hover = require(\"./hover\");\n\nvar _upload = require(\"./upload\");\n\nvar _selectOptions = require(\"./select-options\");\n\nvar _paste = require(\"./paste\");\n\nvar _keyboard = require(\"./keyboard\");\n\nconst userEvent = {\n click: _click.click,\n dblClick: _click.dblClick,\n type: _type.type,\n clear: _clear.clear,\n tab: _tab.tab,\n hover: _hover.hover,\n unhover: _hover.unhover,\n upload: _upload.upload,\n selectOptions: _selectOptions.selectOptions,\n deselectOptions: _selectOptions.deselectOptions,\n paste: _paste.paste,\n keyboard: _keyboard.keyboard\n};\nvar _default = userEvent;\nexports.default = _default;","import { fireEvent, waitFor, within, waitForElementToBeRemoved } from '@testing-library/react'\nimport { act } from '@testing-library/react'\nimport userEvent from '@testing-library/user-event'\n\n// based on https://github.com/romgain/react-select-event/blob/master/src/index.ts\n\n// find the select container from its input field 🤷\nfunction getSelectContainer(input: HTMLElement): HTMLElement {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return input.parentNode!.parentNode!.parentNode as HTMLElement\n}\n\n/**\n * Please, make sure to call expand before trying to get the menu container\n */\nfunction getSelectMenu(input: HTMLElement): HTMLElement {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return input.parentNode!.parentNode!.nextSibling as HTMLElement\n}\n\nfunction getSelectTriggerHandle(input: HTMLElement): HTMLElement {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return input.parentNode!.nextSibling!.nextSibling as HTMLElement\n}\n\nfunction getSelectSearchContainer(input: HTMLElement): HTMLElement {\n return input.parentNode as HTMLElement\n}\n\nfunction isSelectMenuExpanded(input: HTMLElement): boolean {\n const selectContainer = getSelectContainer(input)\n\n /**\n * Once the select is expanded, we have the following structure:\n * +-------------+\n * | Close button (visually hiddren)\n * +-------------+\n * | DropdownTrigger\n * +-------------+\n * | Popover\n * +-------------+\n *\n * This, if the container has 3 children, we assume the menu is expanded\n */\n return selectContainer.children.length == 3\n}\n\n/**\n * This is needed because some datasources might be asynchronous.\n * To ensure that the data they retrieve will be available, we wait for the\n * querying phase to finish.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n */\nasync function waitForPendingQuery(input: HTMLElement) {\n const searchContainer = getSelectSearchContainer(input)\n\n if (!within(searchContainer).queryByTestId('select-trigger-loading')) {\n return\n }\n\n await waitForElementToBeRemoved(\n () => within(searchContainer).queryByTestId('select-trigger-loading'),\n { timeout: 2500 }\n )\n}\n\n/**\n * Expand the `Select` menu, if it not already expanded.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<void>}\n */\nasync function expand(input: HTMLElement): Promise<void> {\n await waitForPendingQuery(input)\n\n if (isSelectMenuExpanded(input)) {\n return\n }\n\n const triggerHandle = getSelectTriggerHandle(input)\n\n await waitFor(() => {\n expect(triggerHandle).toBeEnabled()\n })\n\n userEvent.click(triggerHandle)\n\n await waitFor(async () => {\n expect(await within(getSelectContainer(input)).findByRole('listbox')).toBeInTheDocument()\n })\n}\n\n/**\n * Collapse the `Select` menu, if it not already collapsed.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<void>}\n */\nasync function collapse(input: HTMLElement): Promise<void> {\n if (!isSelectMenuExpanded(input)) {\n return\n }\n\n const triggerHandle = getSelectTriggerHandle(input)\n\n userEvent.click(triggerHandle)\n\n await waitFor(() => {\n expect(within(getSelectContainer(input)).queryByRole('listbox')).not.toBeInTheDocument()\n })\n}\n\n/**\n * Select the provided option(s), if they are present in the menu.\n * Notice that we programatically expand the `Select` menu before select the item\n * @param {string} option - Label for the option to be selected.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<void>}\n */\nasync function select(option: string, input: HTMLElement): Promise<void> {\n await expand(input)\n\n const menuContainer = getSelectMenu(input)\n\n const optionElement = await within(menuContainer).findByLabelText(option)\n\n // click the option if exists; Select currently closes when an item is clicked.\n if (optionElement && optionElement.getAttribute('aria-selected') == 'false') {\n userEvent.click(optionElement)\n }\n\n // we collapse in the case the option was not clicked\n await collapse(input)\n}\n\n/**\n * Unselect the provided option(s), if they are present in the menu AND are selected.\n * Notice that we programatically expand the `Select` menu before select the item\n * @param {string} option - Label for the option to be unselected.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<void>}\n */\nasync function unselect(option: string, input: HTMLElement): Promise<void> {\n await expand(input)\n\n const menuContainer = getSelectMenu(input)\n\n const optionElement = await within(menuContainer).findByLabelText(option)\n\n // ensures that the option exists and IS selected\n if (optionElement && optionElement.getAttribute('aria-selected') == 'true') {\n userEvent.click(optionElement)\n }\n\n // we collapse in the case the option was not clicked\n await collapse(input)\n}\n\n/**\n * Clear the selection, if there are any options selected.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<void>}\n */\nasync function clear(input: HTMLElement): Promise<void> {\n await waitForPendingQuery(input)\n\n const searchContainer = getSelectSearchContainer(input)\n\n const clearButton = within(searchContainer).getByTestId('select-trigger-clear')\n\n act(() => {\n if (clearButton) {\n userEvent.click(clearButton)\n }\n })\n}\n\n/**\n * Perform search based on the given `query`. It will fail if the option is not found.\n * @param {string} query - Search term.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<void>}\n */\nasync function search(query: string, input: HTMLElement): Promise<void> {\n const selectContainer = getSelectContainer(input)\n\n fireEvent.change(input, { target: { value: query } })\n\n await within(selectContainer).findAllByRole('option')\n}\n\n/**\n * Get options elements currently available in the `Select` menu.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<HTMLElement[]>}\n */\nasync function getOptions(input: HTMLElement): Promise<HTMLElement[]> {\n await expand(input)\n\n const menuContainer = getSelectMenu(input)\n\n const options = within(menuContainer).queryAllByRole('option')\n\n await collapse(input)\n\n return options\n}\n\n/**\n * Get options elements currently selected in the `Select` menu.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<HTMLElement[]>}\n */\nasync function getSelectedOptions(input: HTMLElement): Promise<HTMLElement[]> {\n await expand(input)\n\n const menuContainer = getSelectMenu(input)\n let selectedOptions: HTMLElement[] = []\n\n try {\n selectedOptions = await within(menuContainer).findAllByRole('option', {\n selected: true,\n })\n } catch (err) {\n selectedOptions = []\n }\n\n await collapse(input)\n\n return selectedOptions\n}\n\nexport const selectEvent = {\n select,\n unselect,\n clear,\n search,\n expand,\n collapse,\n getOptions,\n getSelectedOptions,\n isMenuExpanded: isSelectMenuExpanded,\n}\n\nexport default selectEvent\n","import React, { ReactNode } from 'react'\nimport { render } from '@testing-library/react'\nimport type { RenderResult } from '@testing-library/react'\n\nimport type { DragDropFileContextValue } from '../../components/DragDropFile/types'\nimport { DragDropFileContext } from '../../components/DragDropFile/DragDropFile.context'\n\nconst defaultContextValueMock: DragDropFileContextValue = {\n fileList: [],\n onFilesAdded: jest.fn(),\n onRetryUpload: jest.fn(),\n onRemoveFile: jest.fn(),\n}\n\nconst renderWithDragDropFileProvider = (\n ui: ReactNode,\n customContext?: Partial<DragDropFileContextValue>\n): RenderResult => {\n const contextValue = { ...defaultContextValueMock, ...customContext }\n\n const renderedUi = (children: ReactNode) => (\n <DragDropFileContext.Provider value={contextValue}>{children}</DragDropFileContext.Provider>\n )\n\n return render(renderedUi(ui))\n}\n\nexport default renderWithDragDropFileProvider\n","import type { Interpolation, ThemeProps } from 'styled-components'\nimport { isFunction } from '@loadsmart/utils-function'\n\nimport { Alice } from '../../theming/themes'\nimport type { CustomTheme } from '../../theming'\nimport toArray from 'utils/toolset/toArray'\n\ntype ThemedInterpolation = Interpolation<ThemeProps<CustomTheme>>\n\n/**\n * Use this function to simulate the CSS that would be generated by styled-components\n * @param {Interpolation<ThemeProps<CustomTheme>>} styles - A `css` reference with interpolated styles\n * @returns {string} The final CSS\n */\nexport default function getInterpolatedStyles(styles: ThemedInterpolation): string {\n return toArray(styles)\n .map((interpolation) => {\n while (isFunction(interpolation)) {\n interpolation = interpolation({ theme: Alice })\n }\n\n return interpolation\n })\n .join('')\n}\n"],"names":["getContainerFromInput","input","parentNode","expand","datePickerContainer","queries","queryByRole","act","__awaiter","this","fireEvent","click","expect","findByRole","toBeInTheDocument","collapse","getByText","waitForElementToBeRemoved","datePickerEvent","getContainer","day","focus","dayElement","getByLabelText","getAttribute","clearButton","selectedDays","queryAllByRole","checked","DatePickerEvent","dateRangePickerEvent","pick","range","dateRangePickerContainer","rangeStart","rangeEnd","dateRangeStartInput","getByTestId","dateRangeEndInput","clear","getSelectedDates","getDropZoneFromInput","DragDropFileEvent","dragOver","dropzone","dragOverEvent","createEvent","dragLeave","dragLeaveEvent","dropFiles","files","fileDropEvent","drop","Object","defineProperty","value","toArray","isMousePressEvent","event","getMouseEventOptions_1","getMouseEventOptions","init","clickCount","_init","detail","buttons","convertMouseButtons","button","BUTTONS_NAMES","none","primary","secondary","auxiliary","BUTTON_NAMES","translateButtonNumber","from","_Object$entries$find","mapIn","mapOut","name","entries","find","i","prototype","hasOwnProperty","call","property","isElementType_1","isElementType","element","tag","props","namespaceURI","Array","isArray","includes","tagName","toLowerCase","every","k","v","isClickableInput_1","isClickableInput","_isElementType","CLICKABLE_INPUT_TYPES","type","require$$0","build","onlyDigitsValue","index","hours","slice","validHours","Math","min","parseInt","minuteCharacters","parsedMinutes","validMinutes","toString","padStart","buildTimeValue_1","buildTimeValue","replace","length","firstDigit","secondDigit","selectionRange","getSelectionRange","hasSelectionSupport","setSelectionRange","newSelectionStart","newSelectionEnd","selectionStart","selectionEnd","InputSelection","ownerDocument","createRange","selectNodeContents","firstChild","setStart","setEnd","selection","getSelection","removeAllRanges","addRange","selectionSupportType","Symbol","Boolean","_InputSelection","rangeCount","contains","focusNode","getRangeAt","startOffset","endOffset","isContentEditable_1","isContentEditable","hasAttribute","getValue_1","getValue","_isContentEditable","textContent","isValidDateValue_1","isValidDateValue","clone","cloneNode","isValidInputTimeValue_1","isValidInputTimeValue","timeValue","calculateNewValue_1","calculateNewValue","newEntry","_getValue","_getValue2","_selectionRange","deleteContent","prologEnd","max","prolog","substring","epilogStart","epilog","newValue","_isValidDateValue","_isValidInputTimeValue","require$$1","require$$2","require$$3","cursorPosition","isCursorAtEnd","isCursorAtStart","hasUnreliableEmptyValue_1","hasUnreliableEmptyValue","unreliableValueInputTypes","isEditable_1","editableInputTypes","isEditable","isEditableInput","readOnly","maxLength","getSpaceUntilMaxLength","_element$getAttribute","maxLengthSupportedTypes","supportsMaxLength","attr","test","Number","undefined","getSanitizedMaxLength","isDisabled_1","isDisabled","disabled","getActiveElement_1","getActiveElement","document","activeElement","shadowRoot","_isDisabled","body","isLabelWithInternallyDisabledControl_1","isLabelWithInternallyDisabledControl","control","selector","FOCUSABLE_SELECTOR","join","isFocusable_1","isFocusable","_isLabelWithInternallyDisabledControl","matches","_selector","eventWrapper_1","eventWrapper","cb","result","_dom","getConfig","isVisible_1","isVisible","window","_helpers","getWindowFromNode","el","_el","parentElement","getComputedStyle","display","isDocument_1","isDocument","nodeType","DOCUMENT_NODE","wait_1","wait","time","Promise","resolve","setTimeout","hasPointerEvents_1","hasPointerEvents","pointerEvents","hasFormSubmit_1","hasFormSubmit","form","querySelector","exports","_getMouseEventOptions","keys","forEach","key","enumerable","get","_isClickableInput","_buildTimeValue","_calculateNewValue","_cursorPosition","require$$4","require$$5","_hasUnreliableEmptyValue","require$$6","require$$7","_isEditable","require$$8","require$$9","require$$10","_maxLength","require$$11","require$$12","_getActiveElement","require$$13","_isFocusable","require$$14","require$$15","_eventWrapper","require$$16","require$$17","require$$18","_isVisible","require$$19","require$$20","_isDocument","require$$21","_wait","require$$22","_hasPointerEvents","require$$23","_hasFormSubmit","require$$24","hover_1","hover","skipPointerEventsCheck","_utils","Error","parentElements","getParentElements","reverse","pointerOver","pointerEnter","mouseOver","mouseEnter","pointerMove","mouseMove","unhover","pointerOut","pointerLeave","mouseOut","mouseLeave","currentElement","push","blur_1","blur","focus_1","click_1","dblClick","_hover","skipHover","_blur","_focus","clickElement","previousElement","focusedElement","getPreviouslyFocusedElement","pointerDown","mouseDown","closestFocusable","callback","findClosest","pointerUp","mouseUp","fireClick","parentLabel","closest","label","clickLabel","clickBooleanElement","mouseEventOptions","contextMenu","bracketDict","legacyModifiers","legacyKeyMap","readPrintableChar","text","pos","descriptor","assertDescriptor","consumedLength","releasePrevious","releaseSelf","repeat","readTag","startBracket","_text$slice$match","_text$slice$match$","_text$slice$match2","releasePreviousModifier","match","repeatModifier","releaseSelfModifier","expectedEndBracket","endBracket","getErrorMessage","filter","substr","hasReleaseSelf","getEnumValue","f","expected","found","getNextKeyDef_1","getNextKeyDef","options","_options$keyboardMap$","startBracketRepeated","RegExp","readNextDescriptor","keyDef","keyboardMap","def","_def$code","code","_def$key","_getEnumValue","mapLegacyKey","arrow","keydownBehavior","handle","_ref","direction","newPos","carryValue_1","carryValue","state","fireChangeForInputTimeIfValid_1","fireChangeForInputTimeIfValid","prevValue","timeNewEntry","change","target","fireInputEvent_1","fireInputEvent","eventOverrides","applyNative","setSelectionRangeAfterInput","isUnreliableValue","setSelectionRangeAfterInputHandler","initial","onBlur","propName","propValue","getOwnPropertyDescriptor","nativeDescriptor","constructor","_element$ownerDocumen","String","defaultView","addEventListener","initV","capture","once","_carryValue","_fireChangeForInputTimeIfValid","_fireInputEvent","_shared","_getValue$length","_getValue$length2","keDef","inputType","character","keypressBehavior","_keyDef$key","_state$carryValue","textToBeTyped","data","_keyDef$key2","_state$carryValue2","isValidToBeTyped","_keyDef$key3","_state$carryValue3","_newValue$match","_newValue$match2","oldValue","valueParts","split","appliedValue","_keyDef$key4","modifiers","shift","getEventProps","getKeyEventProps","_keyDef$keyCode","altKey","alt","ctrlKey","ctrl","metaKey","meta","shiftKey","keyCode","charCodeAt","getMouseEventProps","functional","preKeyupBehavior","preKeydownBehavior","postKeyupBehavior","keyupBehavior","_getEventProps","modifierKeys","Alt","Control","Shift","Meta","map","modKey","ctrlKeyDef","keyDown","caps","submit","href","querySelectorAll","_options$keyboardMap$2","keyUp","plugins","replaceBehavior","arrowKeys","_interopRequireWildcard","controlKeys","characterKeys","functionalKeys","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","newObj","hasPropertyDescriptor","desc","set","keyboardImplementation_1","keyboardImplementation","async","_state$repeatKey","getCurrentElement","getActive","repeatKey","_getNextKeyDef","applyPlugins","pressed","p","keyup","unpreventedDefault","carryChar","keydown","hasKeyPress","keyPress","keypress","delay","releaseAllKeys","unprevented","pluginCollection","plugin","DOM_KEY_LOCATION","types","keyMap","defaultKeyMap","_types","c","toUpperCase","location","LEFT","RIGHT","specialCharMap_1","specialCharMap","arrowLeft","arrowRight","arrowDown","arrowUp","enter","escape","delete","backspace","home","end","selectAll","space","whitespace","pageUp","pageDown","keyboard","_options$delay","promise","keyboardImplementationWrapper","asyncWrapper","then","catch","console","error","_specialCharMap","_keyboardImplementation","_keyMap","config","keyboardState","createKeyboardState","doc","autoModify","typeImplementation_1","typeImplementation","skipClick","skipAutoClose","initialSelectionStart","initialSelectionEnd","_click","_keyboard","type_1","_typeImplementation","clear_1","_element$selectionSta","_element$selectionEnd","elementType","_type","tab_1","tab","focusTrap","_focusTrap$ownerDocum","_focusTrap","focusableElements","enabledElements","orderedElements","idx","sort","a","b","diff","checkedRadio","prunedElements","prev","e","nextElement","currentIndex","elements","nextIndex","defaultIndex","getNextElement","findIndex","shiftKeyInit","tabKeyInit","continueToTab","keyUpTarget","upload_1","upload","fileOrFiles","applyAccept","_input$files","TypeError","clickInit","file","accept","wildcards","some","acceptToken","startsWith","endsWith","isAcceptableFile","multiple","_input$files2","item","inputFiles","iterator","next","done","bubbles","cancelable","composed","changeInit","selectOptions_1","selectOptions","deselectOptions","selectOptionsBase","select","values","getElementError","valArray","allOptions","selectedOptions","val","matchingOption","o","innerHTML","option","withPointerEvents","selectOption","selected","bind","paste_1","paste","isSupportedElement","_clear","_tab","_upload","_selectOptions","_paste","_default","getSelectContainer","getSelectMenu","nextSibling","getSelectTriggerHandle","getSelectSearchContainer","isSelectMenuExpanded","children","waitForPendingQuery","searchContainer","within","queryByTestId","timeout","triggerHandle","waitFor","toBeEnabled","userEvent","not","selectEvent","menuContainer","optionElement","findByLabelText","unselect","search","query","selectContainer","findAllByRole","getOptions","getSelectedOptions","err","isMenuExpanded","defaultContextValueMock","fileList","onFilesAdded","jest","fn","onRetryUpload","onRemoveFile","styles","interpolation","isFunction","theme","Alice","ui","customContext","contextValue","assign","render","React","createElement","DragDropFileContext","Provider"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/testing/DatePickerEvent/DatePickerEvent.ts","../../src/testing/DatePickerEvent/DateRangePickerEvent.ts","../../src/testing/DragDropFileEvent/DragDropFileEvent.ts","../../node_modules/@testing-library/user-event/dist/utils/click/getMouseEventOptions.js","../../node_modules/@testing-library/user-event/dist/utils/misc/isElementType.js","../../node_modules/@testing-library/user-event/dist/utils/click/isClickableInput.js","../../node_modules/@testing-library/user-event/dist/utils/edit/buildTimeValue.js","../../node_modules/@testing-library/user-event/dist/utils/edit/selectionRange.js","../../node_modules/@testing-library/user-event/dist/utils/edit/isContentEditable.js","../../node_modules/@testing-library/user-event/dist/utils/edit/getValue.js","../../node_modules/@testing-library/user-event/dist/utils/edit/isValidDateValue.js","../../node_modules/@testing-library/user-event/dist/utils/edit/isValidInputTimeValue.js","../../node_modules/@testing-library/user-event/dist/utils/edit/calculateNewValue.js","../../node_modules/@testing-library/user-event/dist/utils/edit/cursorPosition.js","../../node_modules/@testing-library/user-event/dist/utils/edit/hasUnreliableEmptyValue.js","../../node_modules/@testing-library/user-event/dist/utils/edit/isEditable.js","../../node_modules/@testing-library/user-event/dist/utils/edit/maxLength.js","../../node_modules/@testing-library/user-event/dist/utils/misc/isDisabled.js","../../node_modules/@testing-library/user-event/dist/utils/focus/getActiveElement.js","../../node_modules/@testing-library/user-event/dist/utils/misc/isLabelWithInternallyDisabledControl.js","../../node_modules/@testing-library/user-event/dist/utils/focus/selector.js","../../node_modules/@testing-library/user-event/dist/utils/focus/isFocusable.js","../../node_modules/@testing-library/user-event/dist/utils/misc/eventWrapper.js","../../node_modules/@testing-library/user-event/dist/utils/misc/isVisible.js","../../node_modules/@testing-library/user-event/dist/utils/misc/isDocument.js","../../node_modules/@testing-library/user-event/dist/utils/misc/wait.js","../../node_modules/@testing-library/user-event/dist/utils/misc/hasPointerEvents.js","../../node_modules/@testing-library/user-event/dist/utils/misc/hasFormSubmit.js","../../node_modules/@testing-library/user-event/dist/utils/index.js","../../node_modules/@testing-library/user-event/dist/hover.js","../../node_modules/@testing-library/user-event/dist/blur.js","../../node_modules/@testing-library/user-event/dist/focus.js","../../node_modules/@testing-library/user-event/dist/click.js","../../node_modules/@testing-library/user-event/dist/keyboard/getNextKeyDef.js","../../node_modules/@testing-library/user-event/dist/keyboard/plugins/arrow.js","../../node_modules/@testing-library/user-event/dist/keyboard/shared/carryValue.js","../../node_modules/@testing-library/user-event/dist/keyboard/shared/fireChangeForInputTimeIfValid.js","../../node_modules/@testing-library/user-event/dist/keyboard/shared/fireInputEvent.js","../../node_modules/@testing-library/user-event/dist/keyboard/shared/index.js","../../node_modules/@testing-library/user-event/dist/keyboard/plugins/control.js","../../node_modules/@testing-library/user-event/dist/keyboard/plugins/character.js","../../node_modules/@testing-library/user-event/dist/keyboard/getEventProps.js","../../node_modules/@testing-library/user-event/dist/keyboard/plugins/functional.js","../../node_modules/@testing-library/user-event/dist/keyboard/plugins/index.js","../../node_modules/@testing-library/user-event/dist/keyboard/keyboardImplementation.js","../../node_modules/@testing-library/user-event/dist/keyboard/types.js","../../node_modules/@testing-library/user-event/dist/keyboard/keyMap.js","../../node_modules/@testing-library/user-event/dist/keyboard/specialCharMap.js","../../node_modules/@testing-library/user-event/dist/keyboard/index.js","../../node_modules/@testing-library/user-event/dist/type/typeImplementation.js","../../node_modules/@testing-library/user-event/dist/type/index.js","../../node_modules/@testing-library/user-event/dist/clear.js","../../node_modules/@testing-library/user-event/dist/tab.js","../../node_modules/@testing-library/user-event/dist/upload.js","../../node_modules/@testing-library/user-event/dist/select-options.js","../../node_modules/@testing-library/user-event/dist/paste.js","../../node_modules/@testing-library/user-event/dist/index.js","../../src/testing/SelectEvent/SelectEvent.ts","../../src/testing/renderWithDragDropFileProvider/renderWithDragDropFileProvider.tsx","../../src/testing/getInterpolatedStyles/getInterpolatedStyles.ts"],"sourcesContent":["/* eslint-disable */\nimport { queries, fireEvent, waitForElementToBeRemoved } from '@testing-library/dom'\nimport { act } from '@testing-library/react'\n\n// find the date picker container from its input field 🤷\nfunction getContainerFromInput(input: HTMLElement): HTMLElement {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return input.parentNode!.parentNode!.parentNode!.parentNode as HTMLElement\n}\n\n/**\n * Expand the `DatePicker` calendar, if it not already expanded.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function expand(input: HTMLElement): Promise<void> {\n const datePickerContainer = getContainerFromInput(input)\n\n // if menu is rendered, then the select is already expanded\n if (queries.queryByRole(datePickerContainer, 'menu')) {\n return\n }\n\n await act(async () => {\n fireEvent.click(input)\n\n expect(await queries.findByRole(datePickerContainer, 'menu')).toBeInTheDocument()\n })\n}\n\n/**\n * Collapse the `DatePicker` calendar, if it not already collapsed.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function collapse(input: HTMLElement): Promise<void> {\n const datePickerContainer = getContainerFromInput(input)\n\n // if menu is not rendered, then the select is already collapsed\n if (!queries.queryByRole(datePickerContainer, 'menu')) {\n return\n }\n\n await act(async () => {\n fireEvent.click(queries.getByText(datePickerContainer, 'Close'))\n\n await waitForElementToBeRemoved(() => queries.queryByRole(datePickerContainer, 'menu'))\n })\n}\n\n/**\n * Pick (select) the provided day in the current month/year.\n * Notice that we programatically expand the `DatePicker` calendar before picking the date.\n * @param {string} day - Label for the day to be picked, formatted as mm/dd/yyyy.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function pick(day: string, input: HTMLElement): Promise<void> {\n const datePickerContainer = getContainerFromInput(input)\n\n await expand(input)\n\n await act(async () => {\n input.focus()\n\n const dayElement = queries.getByLabelText(datePickerContainer, day)\n\n if (dayElement && dayElement.getAttribute('aria-checked') == 'false') {\n fireEvent.click(dayElement)\n }\n })\n\n await collapse(input)\n}\n\n/**\n * Clear the selection, if there are any options selected.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function clear(input: HTMLElement): Promise<void> {\n const datePickerContainer = getContainerFromInput(input)\n\n await act(async () => {\n const clearButton = queries.getByLabelText(datePickerContainer, 'Clear selection')\n\n fireEvent.click(clearButton)\n })\n\n await collapse(input)\n}\n\n/**\n * Get options elements currently selected in the `DatePicker` calendar.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<HTMLElement[]>}\n */\nasync function getSelectedDates(input: HTMLElement): Promise<HTMLElement[]> {\n const datePickerContainer = getContainerFromInput(input)\n\n await expand(input)\n\n const selectedDays: HTMLElement[] = queries.queryAllByRole(datePickerContainer, 'checkbox', {\n checked: true,\n })\n\n await collapse(input)\n\n return selectedDays\n}\n\nconst datePickerEvent = {\n getContainer: getContainerFromInput,\n expand,\n collapse,\n pick,\n clear,\n getSelectedDates,\n}\n\nexport default datePickerEvent\n","/* eslint-disable */\nimport { queries } from '@testing-library/dom'\n\nimport DatePickerEvent from './DatePickerEvent'\n\n/**\n * Expand the `DatePicker` calendar, if it not already expanded.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function expand(input: HTMLElement): Promise<void> {\n await DatePickerEvent.expand(input)\n}\n\n/**\n * Collapse the `DatePicker` calendar, if it not already collapsed.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function collapse(input: HTMLElement): Promise<void> {\n await DatePickerEvent.collapse(input)\n}\n\n/**\n * Pick (select) the provided day in the current month/year.\n * Notice that we programatically expand the `DatePicker` calendar before picking the date.\n * @param {string} day - Label for the day to be picked, formatted as mm/dd/yyyy.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function pick(range: [string | null, string | null], input: HTMLElement): Promise<void> {\n const dateRangePickerContainer = DatePickerEvent.getContainer(input)\n\n await expand(input)\n\n const [rangeStart, rangeEnd] = range\n\n if (rangeStart != null) {\n const dateRangeStartInput = queries.getByTestId(\n dateRangePickerContainer,\n 'input-date-range-start'\n )\n\n await DatePickerEvent.pick(rangeStart, dateRangeStartInput)\n }\n\n if (rangeEnd != null) {\n const dateRangeEndInput = queries.getByTestId(dateRangePickerContainer, 'input-date-range-end')\n\n await DatePickerEvent.pick(rangeEnd, dateRangeEndInput)\n }\n\n await collapse(input)\n}\n\n/**\n * Clear the selection, if there are any options selected.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<void>}\n */\nasync function clear(input: HTMLElement): Promise<void> {\n await DatePickerEvent.clear(input)\n}\n\n/**\n * Get options elements currently selected in the `DatePicker` calendar.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `DatePicker`\n * @returns {Promise<HTMLElement[]>}\n */\nasync function getSelectedDates(input: HTMLElement): Promise<HTMLElement[]> {\n return DatePickerEvent.getSelectedDates(input)\n}\n\nexport const dateRangePickerEvent = {\n getContainer: DatePickerEvent.getContainer,\n expand,\n collapse,\n pick,\n clear,\n getSelectedDates,\n}\n\nexport default dateRangePickerEvent\n","import { createEvent, fireEvent } from '@testing-library/react'\n\nimport toArray from 'utils/toolset/toArray'\n\n/**\n * Get the input dropzone, which is the input parent (label).\n * @param {HTMLInputElement} input - You can refer to this element by the aria-label you provide to the DragDropFile component\n */\nconst getDropZoneFromInput = (input: HTMLInputElement): HTMLLabelElement =>\n input.parentNode as HTMLLabelElement\n\n/**\n * Simulates the onDragOver event on the drop zone.\n * @param {HTMLInputElement} input - You can refer to this element by the aria-label you provide to the DragDropFile component\n */\nconst dragOver = (input: HTMLInputElement) => {\n const dropzone = getDropZoneFromInput(input)\n\n const dragOverEvent = createEvent.dragOver(dropzone)\n\n fireEvent(dropzone, dragOverEvent)\n}\n\n/**\n * Simulates the onDragLeave event on the drop zone.\n * @param {HTMLInputElement} input - You can refer to this element by the aria-label you provide to the DragDropFile component\n */\nconst dragLeave = (input: HTMLInputElement) => {\n const dropzone = getDropZoneFromInput(input)\n\n const dragLeaveEvent = createEvent.dragLeave(dropzone)\n\n fireEvent(dropzone, dragLeaveEvent)\n}\n\n/**\n * Simulates the onDrop event on the drop zone. You can provide a list of files or a single file.\n * @param {HTMLInputElement} input - You can refer to this element by the aria-label you provide to the DragDropFile component\n */\nconst dropFiles = (input: HTMLInputElement, files: File | File[]) => {\n const dropzone = getDropZoneFromInput(input)\n\n const fileDropEvent = createEvent.drop(dropzone)\n\n Object.defineProperty(fileDropEvent, 'dataTransfer', { value: { files: toArray(files) } })\n\n fireEvent(dropzone, fileDropEvent)\n}\n\nexport const DragDropFileEvent = {\n dragOver,\n dragLeave,\n dropFiles,\n}\n\nexport default DragDropFileEvent\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getMouseEventOptions = getMouseEventOptions;\n\nfunction isMousePressEvent(event) {\n return event === 'mousedown' || event === 'mouseup' || event === 'click' || event === 'dblclick';\n} // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n\n\nconst BUTTONS_NAMES = {\n none: 0,\n primary: 1,\n secondary: 2,\n auxiliary: 4\n}; // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n\nconst BUTTON_NAMES = {\n primary: 0,\n auxiliary: 1,\n secondary: 2\n};\n\nfunction translateButtonNumber(value, from) {\n var _Object$entries$find;\n\n const [mapIn, mapOut] = from === 'button' ? [BUTTON_NAMES, BUTTONS_NAMES] : [BUTTONS_NAMES, BUTTON_NAMES];\n const name = (_Object$entries$find = Object.entries(mapIn).find(([, i]) => i === value)) == null ? void 0 : _Object$entries$find[0]; // istanbul ignore next\n\n return name && Object.prototype.hasOwnProperty.call(mapOut, name) ? mapOut[name] : 0;\n}\n\nfunction convertMouseButtons(event, init, property) {\n if (!isMousePressEvent(event)) {\n return 0;\n }\n\n if (typeof init[property] === 'number') {\n return init[property];\n } else if (property === 'button' && typeof init.buttons === 'number') {\n return translateButtonNumber(init.buttons, 'buttons');\n } else if (property === 'buttons' && typeof init.button === 'number') {\n return translateButtonNumber(init.button, 'button');\n }\n\n return property != 'button' && isMousePressEvent(event) ? 1 : 0;\n}\n\nfunction getMouseEventOptions(event, init, clickCount = 0) {\n var _init;\n\n init = (_init = init) != null ? _init : {};\n return { ...init,\n // https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail\n detail: event === 'mousedown' || event === 'mouseup' || event === 'click' ? 1 + clickCount : clickCount,\n buttons: convertMouseButtons(event, init, 'buttons'),\n button: convertMouseButtons(event, init, 'button')\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isElementType = isElementType;\n\nfunction isElementType(element, tag, props) {\n if (element.namespaceURI && element.namespaceURI !== 'http://www.w3.org/1999/xhtml') {\n return false;\n }\n\n tag = Array.isArray(tag) ? tag : [tag]; // tagName is uppercase in HTMLDocument and lowercase in XMLDocument\n\n if (!tag.includes(element.tagName.toLowerCase())) {\n return false;\n }\n\n if (props) {\n return Object.entries(props).every(([k, v]) => element[k] === v);\n }\n\n return true;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isClickableInput = isClickableInput;\n\nvar _isElementType = require(\"../misc/isElementType\");\n\nconst CLICKABLE_INPUT_TYPES = ['button', 'color', 'file', 'image', 'reset', 'submit', 'checkbox', 'radio'];\n\nfunction isClickableInput(element) {\n return (0, _isElementType.isElementType)(element, 'button') || (0, _isElementType.isElementType)(element, 'input') && CLICKABLE_INPUT_TYPES.includes(element.type);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.buildTimeValue = buildTimeValue;\n\nfunction buildTimeValue(value) {\n const onlyDigitsValue = value.replace(/\\D/g, '');\n\n if (onlyDigitsValue.length < 2) {\n return value;\n }\n\n const firstDigit = parseInt(onlyDigitsValue[0], 10);\n const secondDigit = parseInt(onlyDigitsValue[1], 10);\n\n if (firstDigit >= 3 || firstDigit === 2 && secondDigit >= 4) {\n let index;\n\n if (firstDigit >= 3) {\n index = 1;\n } else {\n index = 2;\n }\n\n return build(onlyDigitsValue, index);\n }\n\n if (value.length === 2) {\n return value;\n }\n\n return build(onlyDigitsValue, 2);\n}\n\nfunction build(onlyDigitsValue, index) {\n const hours = onlyDigitsValue.slice(0, index);\n const validHours = Math.min(parseInt(hours, 10), 23);\n const minuteCharacters = onlyDigitsValue.slice(index);\n const parsedMinutes = parseInt(minuteCharacters, 10);\n const validMinutes = Math.min(parsedMinutes, 59);\n return `${validHours.toString().padStart(2, '0')}:${validMinutes.toString().padStart(2, '0')}`;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getSelectionRange = getSelectionRange;\nexports.hasSelectionSupport = hasSelectionSupport;\nexports.setSelectionRange = setSelectionRange;\n\nvar _isElementType = require(\"../misc/isElementType\");\n\n// https://github.com/jsdom/jsdom/blob/c2fb8ff94917a4d45e2398543f5dd2a8fed0bdab/lib/jsdom/living/nodes/HTMLInputElement-impl.js#L45\nvar selectionSupportType;\n\n(function (selectionSupportType) {\n selectionSupportType[\"text\"] = \"text\";\n selectionSupportType[\"search\"] = \"search\";\n selectionSupportType[\"url\"] = \"url\";\n selectionSupportType[\"tel\"] = \"tel\";\n selectionSupportType[\"password\"] = \"password\";\n})(selectionSupportType || (selectionSupportType = {}));\n\nconst InputSelection = Symbol('inputSelection');\n\nfunction hasSelectionSupport(element) {\n return (0, _isElementType.isElementType)(element, 'textarea') || (0, _isElementType.isElementType)(element, 'input') && Boolean(selectionSupportType[element.type]);\n}\n\nfunction getSelectionRange(element) {\n if (hasSelectionSupport(element)) {\n return {\n selectionStart: element.selectionStart,\n selectionEnd: element.selectionEnd\n };\n }\n\n if ((0, _isElementType.isElementType)(element, 'input')) {\n var _InputSelection;\n\n return (_InputSelection = element[InputSelection]) != null ? _InputSelection : {\n selectionStart: null,\n selectionEnd: null\n };\n }\n\n const selection = element.ownerDocument.getSelection(); // there should be no editing if the focusNode is outside of element\n // TODO: properly handle selection ranges\n\n if (selection != null && selection.rangeCount && element.contains(selection.focusNode)) {\n const range = selection.getRangeAt(0);\n return {\n selectionStart: range.startOffset,\n selectionEnd: range.endOffset\n };\n } else {\n return {\n selectionStart: null,\n selectionEnd: null\n };\n }\n}\n\nfunction setSelectionRange(element, newSelectionStart, newSelectionEnd) {\n const {\n selectionStart,\n selectionEnd\n } = getSelectionRange(element);\n\n if (selectionStart === newSelectionStart && selectionEnd === newSelectionEnd) {\n return;\n }\n\n if (hasSelectionSupport(element)) {\n element.setSelectionRange(newSelectionStart, newSelectionEnd);\n }\n\n if ((0, _isElementType.isElementType)(element, 'input')) {\n ;\n element[InputSelection] = {\n selectionStart: newSelectionStart,\n selectionEnd: newSelectionEnd\n };\n } // Moving the selection inside <input> or <textarea> does not alter the document Selection.\n\n\n if ((0, _isElementType.isElementType)(element, 'input') || (0, _isElementType.isElementType)(element, 'textarea')) {\n return;\n }\n\n const range = element.ownerDocument.createRange();\n range.selectNodeContents(element); // istanbul ignore else\n\n if (element.firstChild) {\n range.setStart(element.firstChild, newSelectionStart);\n range.setEnd(element.firstChild, newSelectionEnd);\n }\n\n const selection = element.ownerDocument.getSelection(); // istanbul ignore else\n\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isContentEditable = isContentEditable;\n\n//jsdom is not supporting isContentEditable\nfunction isContentEditable(element) {\n return element.hasAttribute('contenteditable') && (element.getAttribute('contenteditable') == 'true' || element.getAttribute('contenteditable') == '');\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getValue = getValue;\n\nvar _isContentEditable = require(\"./isContentEditable\");\n\nfunction getValue(element) {\n // istanbul ignore if\n if (!element) {\n return null;\n }\n\n if ((0, _isContentEditable.isContentEditable)(element)) {\n return element.textContent;\n }\n\n return element.value;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isValidDateValue = isValidDateValue;\n\nfunction isValidDateValue(element, value) {\n const clone = element.cloneNode();\n clone.value = value;\n return clone.value === value;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isValidInputTimeValue = isValidInputTimeValue;\n\nfunction isValidInputTimeValue(element, timeValue) {\n const clone = element.cloneNode();\n clone.value = timeValue;\n return clone.value === timeValue;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calculateNewValue = calculateNewValue;\n\nvar _selectionRange = require(\"./selectionRange\");\n\nvar _getValue2 = require(\"./getValue\");\n\nvar _isValidDateValue = require(\"./isValidDateValue\");\n\nvar _isValidInputTimeValue = require(\"./isValidInputTimeValue\");\n\nfunction calculateNewValue(newEntry, element, value = (() => {\n var _getValue;\n\n return (_getValue = (0, _getValue2.getValue)(element)) != null ? _getValue :\n /* istanbul ignore next */\n '';\n})(), selectionRange = (0, _selectionRange.getSelectionRange)(element), deleteContent) {\n const selectionStart = selectionRange.selectionStart === null ? value.length : selectionRange.selectionStart;\n const selectionEnd = selectionRange.selectionEnd === null ? value.length : selectionRange.selectionEnd;\n const prologEnd = Math.max(0, selectionStart === selectionEnd && deleteContent === 'backward' ? selectionStart - 1 : selectionStart);\n const prolog = value.substring(0, prologEnd);\n const epilogStart = Math.min(value.length, selectionStart === selectionEnd && deleteContent === 'forward' ? selectionEnd + 1 : selectionEnd);\n const epilog = value.substring(epilogStart, value.length);\n let newValue = `${prolog}${newEntry}${epilog}`;\n const newSelectionStart = prologEnd + newEntry.length;\n\n if (element.type === 'date' && !(0, _isValidDateValue.isValidDateValue)(element, newValue)) {\n newValue = value;\n }\n\n if (element.type === 'time' && !(0, _isValidInputTimeValue.isValidInputTimeValue)(element, newValue)) {\n if ((0, _isValidInputTimeValue.isValidInputTimeValue)(element, newEntry)) {\n newValue = newEntry;\n } else {\n newValue = value;\n }\n }\n\n return {\n newValue,\n newSelectionStart\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isCursorAtEnd = isCursorAtEnd;\nexports.isCursorAtStart = isCursorAtStart;\n\nvar _selectionRange = require(\"./selectionRange\");\n\nvar _getValue2 = require(\"./getValue\");\n\nfunction isCursorAtEnd(element) {\n var _getValue;\n\n const {\n selectionStart,\n selectionEnd\n } = (0, _selectionRange.getSelectionRange)(element);\n return selectionStart === selectionEnd && (selectionStart != null ? selectionStart :\n /* istanbul ignore next */\n 0) === ((_getValue = (0, _getValue2.getValue)(element)) != null ? _getValue :\n /* istanbul ignore next */\n '').length;\n}\n\nfunction isCursorAtStart(element) {\n const {\n selectionStart,\n selectionEnd\n } = (0, _selectionRange.getSelectionRange)(element);\n return selectionStart === selectionEnd && (selectionStart != null ? selectionStart :\n /* istanbul ignore next */\n 0) === 0;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hasUnreliableEmptyValue = hasUnreliableEmptyValue;\n\nvar _isElementType = require(\"../misc/isElementType\");\n\nvar unreliableValueInputTypes;\n/**\n * Check if an empty IDL value on the element could mean a derivation of displayed value and IDL value\n */\n\n(function (unreliableValueInputTypes) {\n unreliableValueInputTypes[\"number\"] = \"number\";\n})(unreliableValueInputTypes || (unreliableValueInputTypes = {}));\n\nfunction hasUnreliableEmptyValue(element) {\n return (0, _isElementType.isElementType)(element, 'input') && Boolean(unreliableValueInputTypes[element.type]);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.editableInputTypes = void 0;\nexports.isEditable = isEditable;\nexports.isEditableInput = isEditableInput;\n\nvar _isElementType = require(\"../misc/isElementType\");\n\nvar _isContentEditable = require(\"./isContentEditable\");\n\nfunction isEditable(element) {\n return isEditableInput(element) || (0, _isElementType.isElementType)(element, 'textarea', {\n readOnly: false\n }) || (0, _isContentEditable.isContentEditable)(element);\n}\n\nlet editableInputTypes;\nexports.editableInputTypes = editableInputTypes;\n\n(function (editableInputTypes) {\n editableInputTypes[\"text\"] = \"text\";\n editableInputTypes[\"date\"] = \"date\";\n editableInputTypes[\"datetime-local\"] = \"datetime-local\";\n editableInputTypes[\"email\"] = \"email\";\n editableInputTypes[\"month\"] = \"month\";\n editableInputTypes[\"number\"] = \"number\";\n editableInputTypes[\"password\"] = \"password\";\n editableInputTypes[\"search\"] = \"search\";\n editableInputTypes[\"tel\"] = \"tel\";\n editableInputTypes[\"time\"] = \"time\";\n editableInputTypes[\"url\"] = \"url\";\n editableInputTypes[\"week\"] = \"week\";\n})(editableInputTypes || (exports.editableInputTypes = editableInputTypes = {}));\n\nfunction isEditableInput(element) {\n return (0, _isElementType.isElementType)(element, 'input', {\n readOnly: false\n }) && Boolean(editableInputTypes[element.type]);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getSpaceUntilMaxLength = getSpaceUntilMaxLength;\n\nvar _isElementType = require(\"../misc/isElementType\");\n\nvar _getValue = require(\"./getValue\");\n\nvar maxLengthSupportedTypes;\n\n(function (maxLengthSupportedTypes) {\n maxLengthSupportedTypes[\"email\"] = \"email\";\n maxLengthSupportedTypes[\"password\"] = \"password\";\n maxLengthSupportedTypes[\"search\"] = \"search\";\n maxLengthSupportedTypes[\"telephone\"] = \"telephone\";\n maxLengthSupportedTypes[\"text\"] = \"text\";\n maxLengthSupportedTypes[\"url\"] = \"url\";\n})(maxLengthSupportedTypes || (maxLengthSupportedTypes = {}));\n\nfunction getSpaceUntilMaxLength(element) {\n const value = (0, _getValue.getValue)(element);\n /* istanbul ignore if */\n\n if (value === null) {\n return undefined;\n }\n\n const maxLength = getSanitizedMaxLength(element);\n return maxLength ? maxLength - value.length : undefined;\n} // can't use .maxLength property because of a jsdom bug:\n// https://github.com/jsdom/jsdom/issues/2927\n\n\nfunction getSanitizedMaxLength(element) {\n var _element$getAttribute;\n\n if (!supportsMaxLength(element)) {\n return undefined;\n }\n\n const attr = (_element$getAttribute = element.getAttribute('maxlength')) != null ? _element$getAttribute : '';\n return /^\\d+$/.test(attr) && Number(attr) >= 0 ? Number(attr) : undefined;\n}\n\nfunction supportsMaxLength(element) {\n return (0, _isElementType.isElementType)(element, 'textarea') || (0, _isElementType.isElementType)(element, 'input') && Boolean(maxLengthSupportedTypes[element.type]);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isDisabled = isDisabled;\n\n// This should probably be extended with checking the element type\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/disabled\nfunction isDisabled(element) {\n return Boolean(element && element.disabled);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getActiveElement = getActiveElement;\n\nvar _isDisabled = require(\"../misc/isDisabled\");\n\nfunction getActiveElement(document) {\n const activeElement = document.activeElement;\n\n if (activeElement != null && activeElement.shadowRoot) {\n return getActiveElement(activeElement.shadowRoot);\n } else {\n // Browser does not yield disabled elements as document.activeElement - jsdom does\n if ((0, _isDisabled.isDisabled)(activeElement)) {\n return document.ownerDocument ? // TODO: verify behavior in ShadowRoot\n\n /* istanbul ignore next */\n document.ownerDocument.body : document.body;\n }\n\n return activeElement;\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isLabelWithInternallyDisabledControl = isLabelWithInternallyDisabledControl;\n\nvar _isDisabled = require(\"./isDisabled\");\n\nvar _isElementType = require(\"./isElementType\");\n\n// Absolutely NO events fire on label elements that contain their control\n// if that control is disabled. NUTS!\n// no joke. There are NO events for: <label><input disabled /><label>\nfunction isLabelWithInternallyDisabledControl(element) {\n if (!(0, _isElementType.isElementType)(element, 'label')) {\n return false;\n }\n\n const control = element.control;\n return Boolean(control && element.contains(control) && (0, _isDisabled.isDisabled)(control));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FOCUSABLE_SELECTOR = void 0;\nconst FOCUSABLE_SELECTOR = ['input:not([type=hidden]):not([disabled])', 'button:not([disabled])', 'select:not([disabled])', 'textarea:not([disabled])', '[contenteditable=\"\"]', '[contenteditable=\"true\"]', 'a[href]', '[tabindex]:not([disabled])'].join(', ');\nexports.FOCUSABLE_SELECTOR = FOCUSABLE_SELECTOR;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isFocusable = isFocusable;\n\nvar _isLabelWithInternallyDisabledControl = require(\"../misc/isLabelWithInternallyDisabledControl\");\n\nvar _selector = require(\"./selector\");\n\nfunction isFocusable(element) {\n return !(0, _isLabelWithInternallyDisabledControl.isLabelWithInternallyDisabledControl)(element) && element.matches(_selector.FOCUSABLE_SELECTOR);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.eventWrapper = eventWrapper;\n\nvar _dom = require(\"@testing-library/dom\");\n\nfunction eventWrapper(cb) {\n let result;\n (0, _dom.getConfig)().eventWrapper(() => {\n result = cb();\n });\n return result;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isVisible = isVisible;\n\nvar _helpers = require(\"@testing-library/dom/dist/helpers\");\n\nfunction isVisible(element) {\n const window = (0, _helpers.getWindowFromNode)(element);\n\n for (let el = element; (_el = el) != null && _el.ownerDocument; el = el.parentElement) {\n var _el;\n\n const display = window.getComputedStyle(el).display;\n\n if (display === 'none') {\n return false;\n }\n }\n\n return true;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isDocument = isDocument;\n\nfunction isDocument(el) {\n return el.nodeType === el.DOCUMENT_NODE;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.wait = wait;\n\nfunction wait(time) {\n return new Promise(resolve => setTimeout(() => resolve(), time));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hasPointerEvents = hasPointerEvents;\n\nvar _helpers = require(\"@testing-library/dom/dist/helpers\");\n\nfunction hasPointerEvents(element) {\n const window = (0, _helpers.getWindowFromNode)(element);\n\n for (let el = element; (_el = el) != null && _el.ownerDocument; el = el.parentElement) {\n var _el;\n\n const pointerEvents = window.getComputedStyle(el).pointerEvents;\n\n if (pointerEvents && !['inherit', 'unset'].includes(pointerEvents)) {\n return pointerEvents !== 'none';\n }\n }\n\n return true;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hasFormSubmit = void 0;\n\nconst hasFormSubmit = form => !!(form && (form.querySelector('input[type=\"submit\"]') || form.querySelector('button[type=\"submit\"]')));\n\nexports.hasFormSubmit = hasFormSubmit;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getMouseEventOptions = require(\"./click/getMouseEventOptions\");\n\nObject.keys(_getMouseEventOptions).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _getMouseEventOptions[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _getMouseEventOptions[key];\n }\n });\n});\n\nvar _isClickableInput = require(\"./click/isClickableInput\");\n\nObject.keys(_isClickableInput).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isClickableInput[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isClickableInput[key];\n }\n });\n});\n\nvar _buildTimeValue = require(\"./edit/buildTimeValue\");\n\nObject.keys(_buildTimeValue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _buildTimeValue[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _buildTimeValue[key];\n }\n });\n});\n\nvar _calculateNewValue = require(\"./edit/calculateNewValue\");\n\nObject.keys(_calculateNewValue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _calculateNewValue[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _calculateNewValue[key];\n }\n });\n});\n\nvar _cursorPosition = require(\"./edit/cursorPosition\");\n\nObject.keys(_cursorPosition).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _cursorPosition[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _cursorPosition[key];\n }\n });\n});\n\nvar _getValue = require(\"./edit/getValue\");\n\nObject.keys(_getValue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _getValue[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _getValue[key];\n }\n });\n});\n\nvar _hasUnreliableEmptyValue = require(\"./edit/hasUnreliableEmptyValue\");\n\nObject.keys(_hasUnreliableEmptyValue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _hasUnreliableEmptyValue[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _hasUnreliableEmptyValue[key];\n }\n });\n});\n\nvar _isContentEditable = require(\"./edit/isContentEditable\");\n\nObject.keys(_isContentEditable).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isContentEditable[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isContentEditable[key];\n }\n });\n});\n\nvar _isEditable = require(\"./edit/isEditable\");\n\nObject.keys(_isEditable).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isEditable[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isEditable[key];\n }\n });\n});\n\nvar _isValidDateValue = require(\"./edit/isValidDateValue\");\n\nObject.keys(_isValidDateValue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isValidDateValue[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isValidDateValue[key];\n }\n });\n});\n\nvar _isValidInputTimeValue = require(\"./edit/isValidInputTimeValue\");\n\nObject.keys(_isValidInputTimeValue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isValidInputTimeValue[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isValidInputTimeValue[key];\n }\n });\n});\n\nvar _maxLength = require(\"./edit/maxLength\");\n\nObject.keys(_maxLength).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _maxLength[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _maxLength[key];\n }\n });\n});\n\nvar _selectionRange = require(\"./edit/selectionRange\");\n\nObject.keys(_selectionRange).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _selectionRange[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _selectionRange[key];\n }\n });\n});\n\nvar _getActiveElement = require(\"./focus/getActiveElement\");\n\nObject.keys(_getActiveElement).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _getActiveElement[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _getActiveElement[key];\n }\n });\n});\n\nvar _isFocusable = require(\"./focus/isFocusable\");\n\nObject.keys(_isFocusable).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isFocusable[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isFocusable[key];\n }\n });\n});\n\nvar _selector = require(\"./focus/selector\");\n\nObject.keys(_selector).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _selector[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _selector[key];\n }\n });\n});\n\nvar _eventWrapper = require(\"./misc/eventWrapper\");\n\nObject.keys(_eventWrapper).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _eventWrapper[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _eventWrapper[key];\n }\n });\n});\n\nvar _isElementType = require(\"./misc/isElementType\");\n\nObject.keys(_isElementType).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isElementType[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isElementType[key];\n }\n });\n});\n\nvar _isLabelWithInternallyDisabledControl = require(\"./misc/isLabelWithInternallyDisabledControl\");\n\nObject.keys(_isLabelWithInternallyDisabledControl).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isLabelWithInternallyDisabledControl[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isLabelWithInternallyDisabledControl[key];\n }\n });\n});\n\nvar _isVisible = require(\"./misc/isVisible\");\n\nObject.keys(_isVisible).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isVisible[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isVisible[key];\n }\n });\n});\n\nvar _isDisabled = require(\"./misc/isDisabled\");\n\nObject.keys(_isDisabled).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isDisabled[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isDisabled[key];\n }\n });\n});\n\nvar _isDocument = require(\"./misc/isDocument\");\n\nObject.keys(_isDocument).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _isDocument[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _isDocument[key];\n }\n });\n});\n\nvar _wait = require(\"./misc/wait\");\n\nObject.keys(_wait).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _wait[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _wait[key];\n }\n });\n});\n\nvar _hasPointerEvents = require(\"./misc/hasPointerEvents\");\n\nObject.keys(_hasPointerEvents).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _hasPointerEvents[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _hasPointerEvents[key];\n }\n });\n});\n\nvar _hasFormSubmit = require(\"./misc/hasFormSubmit\");\n\nObject.keys(_hasFormSubmit).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _hasFormSubmit[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _hasFormSubmit[key];\n }\n });\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hover = hover;\nexports.unhover = unhover;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"./utils\");\n\n// includes `element`\nfunction getParentElements(element) {\n const parentElements = [element];\n let currentElement = element;\n\n while ((currentElement = currentElement.parentElement) != null) {\n parentElements.push(currentElement);\n }\n\n return parentElements;\n}\n\nfunction hover(element, init, {\n skipPointerEventsCheck = false\n} = {}) {\n if (!skipPointerEventsCheck && !(0, _utils.hasPointerEvents)(element)) {\n throw new Error('unable to hover element as it has or inherits pointer-events set to \"none\".');\n }\n\n if ((0, _utils.isLabelWithInternallyDisabledControl)(element)) return;\n const parentElements = getParentElements(element).reverse();\n\n _dom.fireEvent.pointerOver(element, init);\n\n for (const el of parentElements) {\n _dom.fireEvent.pointerEnter(el, init);\n }\n\n if (!(0, _utils.isDisabled)(element)) {\n _dom.fireEvent.mouseOver(element, (0, _utils.getMouseEventOptions)('mouseover', init));\n\n for (const el of parentElements) {\n _dom.fireEvent.mouseEnter(el, (0, _utils.getMouseEventOptions)('mouseenter', init));\n }\n }\n\n _dom.fireEvent.pointerMove(element, init);\n\n if (!(0, _utils.isDisabled)(element)) {\n _dom.fireEvent.mouseMove(element, (0, _utils.getMouseEventOptions)('mousemove', init));\n }\n}\n\nfunction unhover(element, init, {\n skipPointerEventsCheck = false\n} = {}) {\n if (!skipPointerEventsCheck && !(0, _utils.hasPointerEvents)(element)) {\n throw new Error('unable to unhover element as it has or inherits pointer-events set to \"none\".');\n }\n\n if ((0, _utils.isLabelWithInternallyDisabledControl)(element)) return;\n const parentElements = getParentElements(element);\n\n _dom.fireEvent.pointerMove(element, init);\n\n if (!(0, _utils.isDisabled)(element)) {\n _dom.fireEvent.mouseMove(element, (0, _utils.getMouseEventOptions)('mousemove', init));\n }\n\n _dom.fireEvent.pointerOut(element, init);\n\n for (const el of parentElements) {\n _dom.fireEvent.pointerLeave(el, init);\n }\n\n if (!(0, _utils.isDisabled)(element)) {\n _dom.fireEvent.mouseOut(element, (0, _utils.getMouseEventOptions)('mouseout', init));\n\n for (const el of parentElements) {\n _dom.fireEvent.mouseLeave(el, (0, _utils.getMouseEventOptions)('mouseleave', init));\n }\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.blur = blur;\n\nvar _utils = require(\"./utils\");\n\nfunction blur(element) {\n if (!(0, _utils.isFocusable)(element)) return;\n const wasActive = (0, _utils.getActiveElement)(element.ownerDocument) === element;\n if (!wasActive) return;\n (0, _utils.eventWrapper)(() => element.blur());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.focus = focus;\n\nvar _utils = require(\"./utils\");\n\nfunction focus(element) {\n if (!(0, _utils.isFocusable)(element)) return;\n const isAlreadyActive = (0, _utils.getActiveElement)(element.ownerDocument) === element;\n if (isAlreadyActive) return;\n (0, _utils.eventWrapper)(() => element.focus());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.click = click;\nexports.dblClick = dblClick;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"./utils\");\n\nvar _hover = require(\"./hover\");\n\nvar _blur = require(\"./blur\");\n\nvar _focus = require(\"./focus\");\n\nfunction getPreviouslyFocusedElement(element) {\n const focusedElement = element.ownerDocument.activeElement;\n const wasAnotherElementFocused = focusedElement && focusedElement !== element.ownerDocument.body && focusedElement !== element;\n return wasAnotherElementFocused ? focusedElement : null;\n}\n\nfunction clickLabel(label, init, {\n clickCount\n}) {\n if ((0, _utils.isLabelWithInternallyDisabledControl)(label)) return;\n\n _dom.fireEvent.pointerDown(label, init);\n\n _dom.fireEvent.mouseDown(label, (0, _utils.getMouseEventOptions)('mousedown', init, clickCount));\n\n _dom.fireEvent.pointerUp(label, init);\n\n _dom.fireEvent.mouseUp(label, (0, _utils.getMouseEventOptions)('mouseup', init, clickCount));\n\n fireClick(label, (0, _utils.getMouseEventOptions)('click', init, clickCount)); // clicking the label will trigger a click of the label.control\n // however, it will not focus the label.control so we have to do it\n // ourselves.\n\n if (label.control) (0, _focus.focus)(label.control);\n}\n\nfunction clickBooleanElement(element, init, {\n clickCount\n}) {\n _dom.fireEvent.pointerDown(element, init);\n\n if (!element.disabled) {\n _dom.fireEvent.mouseDown(element, (0, _utils.getMouseEventOptions)('mousedown', init, clickCount));\n }\n\n (0, _focus.focus)(element);\n\n _dom.fireEvent.pointerUp(element, init);\n\n if (!element.disabled) {\n _dom.fireEvent.mouseUp(element, (0, _utils.getMouseEventOptions)('mouseup', init, clickCount));\n\n fireClick(element, (0, _utils.getMouseEventOptions)('click', init, clickCount));\n }\n}\n\nfunction clickElement(element, init, {\n clickCount\n}) {\n const previousElement = getPreviouslyFocusedElement(element);\n\n _dom.fireEvent.pointerDown(element, init);\n\n if (!(0, _utils.isDisabled)(element)) {\n const continueDefaultHandling = _dom.fireEvent.mouseDown(element, (0, _utils.getMouseEventOptions)('mousedown', init, clickCount));\n\n if (continueDefaultHandling) {\n const closestFocusable = findClosest(element, _utils.isFocusable);\n\n if (previousElement && !closestFocusable) {\n (0, _blur.blur)(previousElement);\n } else if (closestFocusable) {\n (0, _focus.focus)(closestFocusable);\n }\n }\n }\n\n _dom.fireEvent.pointerUp(element, init);\n\n if (!(0, _utils.isDisabled)(element)) {\n _dom.fireEvent.mouseUp(element, (0, _utils.getMouseEventOptions)('mouseup', init, clickCount));\n\n fireClick(element, (0, _utils.getMouseEventOptions)('click', init, clickCount));\n const parentLabel = element.closest('label');\n if (parentLabel != null && parentLabel.control) (0, _focus.focus)(parentLabel.control);\n }\n}\n\nfunction findClosest(element, callback) {\n let el = element;\n\n do {\n if (callback(el)) {\n return el;\n }\n\n el = el.parentElement;\n } while (el && el !== element.ownerDocument.body);\n\n return undefined;\n}\n\nfunction click(element, init, {\n skipHover = false,\n clickCount = 0,\n skipPointerEventsCheck = false\n} = {}) {\n if (!skipPointerEventsCheck && !(0, _utils.hasPointerEvents)(element)) {\n throw new Error('unable to click element as it has or inherits pointer-events set to \"none\".');\n } // We just checked for `pointerEvents`. We can always skip this one in `hover`.\n\n\n if (!skipHover) (0, _hover.hover)(element, init, {\n skipPointerEventsCheck: true\n });\n\n if ((0, _utils.isElementType)(element, 'label')) {\n clickLabel(element, init, {\n clickCount\n });\n } else if ((0, _utils.isElementType)(element, 'input')) {\n if (element.type === 'checkbox' || element.type === 'radio') {\n clickBooleanElement(element, init, {\n clickCount\n });\n } else {\n clickElement(element, init, {\n clickCount\n });\n }\n } else {\n clickElement(element, init, {\n clickCount\n });\n }\n}\n\nfunction fireClick(element, mouseEventOptions) {\n if (mouseEventOptions.button === 2) {\n _dom.fireEvent.contextMenu(element, mouseEventOptions);\n } else {\n _dom.fireEvent.click(element, mouseEventOptions);\n }\n}\n\nfunction dblClick(element, init, {\n skipPointerEventsCheck = false\n} = {}) {\n if (!skipPointerEventsCheck && !(0, _utils.hasPointerEvents)(element)) {\n throw new Error('unable to double-click element as it has or inherits pointer-events set to \"none\".');\n }\n\n (0, _hover.hover)(element, init, {\n skipPointerEventsCheck\n });\n click(element, init, {\n skipHover: true,\n clickCount: 0,\n skipPointerEventsCheck\n });\n click(element, init, {\n skipHover: true,\n clickCount: 1,\n skipPointerEventsCheck\n });\n\n _dom.fireEvent.dblClick(element, (0, _utils.getMouseEventOptions)('dblclick', init, 2));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getNextKeyDef = getNextKeyDef;\nvar bracketDict;\n\n(function (bracketDict) {\n bracketDict[\"{\"] = \"}\";\n bracketDict[\"[\"] = \"]\";\n})(bracketDict || (bracketDict = {}));\n\nvar legacyModifiers;\n\n(function (legacyModifiers) {\n legacyModifiers[\"alt\"] = \"alt\";\n legacyModifiers[\"ctrl\"] = \"ctrl\";\n legacyModifiers[\"meta\"] = \"meta\";\n legacyModifiers[\"shift\"] = \"shift\";\n})(legacyModifiers || (legacyModifiers = {}));\n\nvar legacyKeyMap;\n/**\n * Get the next key from keyMap\n *\n * Keys can be referenced by `{key}` or `{special}` as well as physical locations per `[code]`.\n * Everything else will be interpreted as a typed character - e.g. `a`.\n * Brackets `{` and `[` can be escaped by doubling - e.g. `foo[[bar` translates to `foo[bar`.\n * Keeping the key pressed can be written as `{key>}`.\n * When keeping the key pressed you can choose how long (how many keydown and keypress) the key is pressed `{key>3}`.\n * You can then release the key per `{key>3/}` or keep it pressed and continue with the next key.\n * Modifiers like `{shift}` imply being kept pressed. This can be turned of per `{shift/}`.\n */\n\n(function (legacyKeyMap) {\n legacyKeyMap[\"ctrl\"] = \"Control\";\n legacyKeyMap[\"del\"] = \"Delete\";\n legacyKeyMap[\"esc\"] = \"Escape\";\n legacyKeyMap[\"space\"] = \" \";\n})(legacyKeyMap || (legacyKeyMap = {}));\n\nfunction getNextKeyDef(text, options) {\n var _options$keyboardMap$;\n\n const {\n type,\n descriptor,\n consumedLength,\n releasePrevious,\n releaseSelf,\n repeat\n } = readNextDescriptor(text);\n const keyDef = (_options$keyboardMap$ = options.keyboardMap.find(def => {\n if (type === '[') {\n var _def$code;\n\n return ((_def$code = def.code) == null ? void 0 : _def$code.toLowerCase()) === descriptor.toLowerCase();\n } else if (type === '{') {\n var _def$key;\n\n const key = mapLegacyKey(descriptor);\n return ((_def$key = def.key) == null ? void 0 : _def$key.toLowerCase()) === key.toLowerCase();\n }\n\n return def.key === descriptor;\n })) != null ? _options$keyboardMap$ : {\n key: 'Unknown',\n code: 'Unknown',\n [type === '[' ? 'code' : 'key']: descriptor\n };\n return {\n keyDef,\n consumedLength,\n releasePrevious,\n releaseSelf,\n repeat\n };\n}\n\nfunction readNextDescriptor(text) {\n let pos = 0;\n const startBracket = text[pos] in bracketDict ? text[pos] : '';\n pos += startBracket.length; // `foo{{bar` is an escaped char at position 3,\n // but `foo{{{>5}bar` should be treated as `{` pressed down for 5 keydowns.\n\n const startBracketRepeated = startBracket ? text.match(new RegExp(`^\\\\${startBracket}+`))[0].length : 0;\n const isEscapedChar = startBracketRepeated === 2 || startBracket === '{' && startBracketRepeated > 3;\n const type = isEscapedChar ? '' : startBracket;\n return {\n type,\n ...(type === '' ? readPrintableChar(text, pos) : readTag(text, pos, type))\n };\n}\n\nfunction readPrintableChar(text, pos) {\n const descriptor = text[pos];\n assertDescriptor(descriptor, text, pos);\n pos += descriptor.length;\n return {\n consumedLength: pos,\n descriptor,\n releasePrevious: false,\n releaseSelf: true,\n repeat: 1\n };\n}\n\nfunction readTag(text, pos, startBracket) {\n var _text$slice$match, _text$slice$match$, _text$slice$match2;\n\n const releasePreviousModifier = text[pos] === '/' ? '/' : '';\n pos += releasePreviousModifier.length;\n const descriptor = (_text$slice$match = text.slice(pos).match(/^\\w+/)) == null ? void 0 : _text$slice$match[0];\n assertDescriptor(descriptor, text, pos);\n pos += descriptor.length;\n const repeatModifier = (_text$slice$match$ = (_text$slice$match2 = text.slice(pos).match(/^>\\d+/)) == null ? void 0 : _text$slice$match2[0]) != null ? _text$slice$match$ : '';\n pos += repeatModifier.length;\n const releaseSelfModifier = text[pos] === '/' || !repeatModifier && text[pos] === '>' ? text[pos] : '';\n pos += releaseSelfModifier.length;\n const expectedEndBracket = bracketDict[startBracket];\n const endBracket = text[pos] === expectedEndBracket ? expectedEndBracket : '';\n\n if (!endBracket) {\n throw new Error(getErrorMessage([!repeatModifier && 'repeat modifier', !releaseSelfModifier && 'release modifier', `\"${expectedEndBracket}\"`].filter(Boolean).join(' or '), text[pos], text));\n }\n\n pos += endBracket.length;\n return {\n consumedLength: pos,\n descriptor,\n releasePrevious: !!releasePreviousModifier,\n repeat: repeatModifier ? Math.max(Number(repeatModifier.substr(1)), 1) : 1,\n releaseSelf: hasReleaseSelf(startBracket, descriptor, releaseSelfModifier, repeatModifier)\n };\n}\n\nfunction assertDescriptor(descriptor, text, pos) {\n if (!descriptor) {\n throw new Error(getErrorMessage('key descriptor', text[pos], text));\n }\n}\n\nfunction getEnumValue(f, key) {\n return f[key];\n}\n\nfunction hasReleaseSelf(startBracket, descriptor, releaseSelfModifier, repeatModifier) {\n if (releaseSelfModifier) {\n return releaseSelfModifier === '/';\n }\n\n if (repeatModifier) {\n return false;\n }\n\n if (startBracket === '{' && getEnumValue(legacyModifiers, descriptor.toLowerCase())) {\n return false;\n }\n\n return true;\n}\n\nfunction mapLegacyKey(descriptor) {\n var _getEnumValue;\n\n return (_getEnumValue = getEnumValue(legacyKeyMap, descriptor)) != null ? _getEnumValue : descriptor;\n}\n\nfunction getErrorMessage(expected, found, text) {\n return `Expected ${expected} but found \"${found != null ? found : ''}\" in \"${text}\"\n See https://github.com/testing-library/user-event/blob/main/README.md#keyboardtext-options\n for more information about how userEvent parses your input.`;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.keydownBehavior = void 0;\n\nvar _utils = require(\"../../utils\");\n\n/**\n * This file should contain behavior for arrow keys as described here:\n * https://w3c.github.io/uievents-code/#key-arrowpad-section\n */\nconst keydownBehavior = [{\n // TODO: implement for contentEditable\n matches: (keyDef, element) => (keyDef.key === 'ArrowLeft' || keyDef.key === 'ArrowRight') && (0, _utils.isElementType)(element, ['input', 'textarea']),\n handle: (keyDef, element) => {\n var _ref;\n\n const {\n selectionStart,\n selectionEnd\n } = (0, _utils.getSelectionRange)(element);\n const direction = keyDef.key === 'ArrowLeft' ? -1 : 1;\n const newPos = (_ref = selectionStart === selectionEnd ? (selectionStart != null ? selectionStart :\n /* istanbul ignore next */\n 0) + direction : direction < 0 ? selectionStart : selectionEnd) != null ? _ref :\n /* istanbul ignore next */\n 0;\n (0, _utils.setSelectionRange)(element, newPos, newPos);\n }\n}];\nexports.keydownBehavior = keydownBehavior;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.carryValue = carryValue;\n\nvar _utils = require(\"../../utils\");\n\nfunction carryValue(element, state, newValue) {\n const value = (0, _utils.getValue)(element);\n state.carryValue = value !== newValue && value === '' && (0, _utils.hasUnreliableEmptyValue)(element) ? newValue : undefined;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fireChangeForInputTimeIfValid = fireChangeForInputTimeIfValid;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"../../utils\");\n\nfunction fireChangeForInputTimeIfValid(el, prevValue, timeNewEntry) {\n if ((0, _utils.isValidInputTimeValue)(el, timeNewEntry) && prevValue !== timeNewEntry) {\n _dom.fireEvent.change(el, {\n target: {\n value: timeNewEntry\n }\n });\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fireInputEvent = fireInputEvent;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"../../utils\");\n\nfunction fireInputEvent(element, {\n newValue,\n newSelectionStart,\n eventOverrides\n}) {\n // apply the changes before firing the input event, so that input handlers can access the altered dom and selection\n if ((0, _utils.isContentEditable)(element)) {\n applyNative(element, 'textContent', newValue);\n } else\n /* istanbul ignore else */\n if ((0, _utils.isElementType)(element, ['input', 'textarea'])) {\n applyNative(element, 'value', newValue);\n } else {\n // TODO: properly type guard\n throw new Error('Invalid Element');\n }\n\n setSelectionRangeAfterInput(element, newSelectionStart);\n\n _dom.fireEvent.input(element, { ...eventOverrides\n });\n\n setSelectionRangeAfterInputHandler(element, newValue, newSelectionStart);\n}\n\nfunction setSelectionRangeAfterInput(element, newSelectionStart) {\n (0, _utils.setSelectionRange)(element, newSelectionStart, newSelectionStart);\n}\n\nfunction setSelectionRangeAfterInputHandler(element, newValue, newSelectionStart) {\n const value = (0, _utils.getValue)(element); // don't apply this workaround on elements that don't necessarily report the visible value - e.g. number\n // TODO: this could probably be only applied when there is keyboardState.carryValue\n\n const isUnreliableValue = value === '' && (0, _utils.hasUnreliableEmptyValue)(element);\n\n if (!isUnreliableValue && value === newValue) {\n const {\n selectionStart\n } = (0, _utils.getSelectionRange)(element);\n\n if (selectionStart === value.length) {\n // The value was changed as expected, but the cursor was moved to the end\n // TODO: this could probably be only applied when we work around a framework setter on the element in applyNative\n (0, _utils.setSelectionRange)(element, newSelectionStart, newSelectionStart);\n }\n }\n}\n\nconst initial = Symbol('initial input value/textContent');\nconst onBlur = Symbol('onBlur');\n\n/**\n * React tracks the changes on element properties.\n * This workaround tries to alter the DOM element without React noticing,\n * so that it later picks up the change.\n *\n * @see https://github.com/facebook/react/blob/148f8e497c7d37a3c7ab99f01dec2692427272b1/packages/react-dom/src/client/inputValueTracking.js#L51-L104\n */\nfunction applyNative(element, propName, propValue) {\n const descriptor = Object.getOwnPropertyDescriptor(element, propName);\n const nativeDescriptor = Object.getOwnPropertyDescriptor(element.constructor.prototype, propName);\n\n if (descriptor && nativeDescriptor) {\n Object.defineProperty(element, propName, nativeDescriptor);\n } // Keep track of the initial value to determine if a change event should be dispatched.\n // CONSTRAINT: We can not determine what happened between focus event and our first API call.\n\n\n if (element[initial] === undefined) {\n element[initial] = String(element[propName]);\n }\n\n element[propName] = propValue; // Add an event listener for the blur event to the capture phase on the window.\n // CONSTRAINT: Currently there is no cross-platform solution to unshift the event handler stack.\n // Our change event might occur after other event handlers on the blur event have been processed.\n\n if (!element[onBlur]) {\n var _element$ownerDocumen;\n\n (_element$ownerDocumen = element.ownerDocument.defaultView) == null ? void 0 : _element$ownerDocumen.addEventListener('blur', element[onBlur] = () => {\n const initV = element[initial]; // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\n delete element[onBlur]; // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\n delete element[initial];\n\n if (String(element[propName]) !== initV) {\n _dom.fireEvent.change(element);\n }\n }, {\n capture: true,\n once: true\n });\n }\n\n if (descriptor) {\n Object.defineProperty(element, propName, descriptor);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _carryValue = require(\"./carryValue\");\n\nObject.keys(_carryValue).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _carryValue[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _carryValue[key];\n }\n });\n});\n\nvar _fireChangeForInputTimeIfValid = require(\"./fireChangeForInputTimeIfValid\");\n\nObject.keys(_fireChangeForInputTimeIfValid).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _fireChangeForInputTimeIfValid[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _fireChangeForInputTimeIfValid[key];\n }\n });\n});\n\nvar _fireInputEvent = require(\"./fireInputEvent\");\n\nObject.keys(_fireInputEvent).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _fireInputEvent[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _fireInputEvent[key];\n }\n });\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.keydownBehavior = void 0;\n\nvar _utils = require(\"../../utils\");\n\nvar _shared = require(\"../shared\");\n\n/**\n * This file should contain behavior for arrow keys as described here:\n * https://w3c.github.io/uievents-code/#key-controlpad-section\n */\nconst keydownBehavior = [{\n matches: (keyDef, element) => (keyDef.key === 'Home' || keyDef.key === 'End') && ((0, _utils.isElementType)(element, ['input', 'textarea']) || (0, _utils.isContentEditable)(element)),\n handle: (keyDef, element) => {\n // This could probably been improved by collapsing a selection range\n if (keyDef.key === 'Home') {\n (0, _utils.setSelectionRange)(element, 0, 0);\n } else {\n var _getValue$length, _getValue;\n\n const newPos = (_getValue$length = (_getValue = (0, _utils.getValue)(element)) == null ? void 0 : _getValue.length) != null ? _getValue$length :\n /* istanbul ignore next */\n 0;\n (0, _utils.setSelectionRange)(element, newPos, newPos);\n }\n }\n}, {\n matches: (keyDef, element) => (keyDef.key === 'PageUp' || keyDef.key === 'PageDown') && (0, _utils.isElementType)(element, ['input']),\n handle: (keyDef, element) => {\n // This could probably been improved by collapsing a selection range\n if (keyDef.key === 'PageUp') {\n (0, _utils.setSelectionRange)(element, 0, 0);\n } else {\n var _getValue$length2, _getValue2;\n\n const newPos = (_getValue$length2 = (_getValue2 = (0, _utils.getValue)(element)) == null ? void 0 : _getValue2.length) != null ? _getValue$length2 :\n /* istanbul ignore next */\n 0;\n (0, _utils.setSelectionRange)(element, newPos, newPos);\n }\n }\n}, {\n matches: (keyDef, element) => keyDef.key === 'Delete' && (0, _utils.isEditable)(element) && !(0, _utils.isCursorAtEnd)(element),\n handle: (keDef, element, options, state) => {\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)('', element, state.carryValue, undefined, 'forward');\n (0, _shared.fireInputEvent)(element, {\n newValue,\n newSelectionStart,\n eventOverrides: {\n inputType: 'deleteContentForward'\n }\n });\n (0, _shared.carryValue)(element, state, newValue);\n }\n}];\nexports.keydownBehavior = keydownBehavior;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.keypressBehavior = void 0;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _shared = require(\"../shared\");\n\nvar _utils = require(\"../../utils\");\n\n/**\n * This file should cover the behavior for keys that produce character input\n */\nconst keypressBehavior = [{\n matches: (keyDef, element) => {\n var _keyDef$key;\n\n return ((_keyDef$key = keyDef.key) == null ? void 0 : _keyDef$key.length) === 1 && (0, _utils.isElementType)(element, 'input', {\n type: 'time',\n readOnly: false\n });\n },\n handle: (keyDef, element, options, state) => {\n var _state$carryValue;\n\n let newEntry = keyDef.key;\n const textToBeTyped = ((_state$carryValue = state.carryValue) != null ? _state$carryValue : '') + newEntry;\n const timeNewEntry = (0, _utils.buildTimeValue)(textToBeTyped);\n\n if ((0, _utils.isValidInputTimeValue)(element, timeNewEntry)) {\n newEntry = timeNewEntry;\n }\n\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)(newEntry, element);\n const prevValue = (0, _utils.getValue)(element); // this check was provided by fireInputEventIfNeeded\n // TODO: verify if it is even needed by this handler\n\n if (prevValue !== newValue) {\n (0, _shared.fireInputEvent)(element, {\n newValue,\n newSelectionStart,\n eventOverrides: {\n data: keyDef.key,\n inputType: 'insertText'\n }\n });\n }\n\n (0, _shared.fireChangeForInputTimeIfValid)(element, prevValue, timeNewEntry);\n state.carryValue = textToBeTyped;\n }\n}, {\n matches: (keyDef, element) => {\n var _keyDef$key2;\n\n return ((_keyDef$key2 = keyDef.key) == null ? void 0 : _keyDef$key2.length) === 1 && (0, _utils.isElementType)(element, 'input', {\n type: 'date',\n readOnly: false\n });\n },\n handle: (keyDef, element, options, state) => {\n var _state$carryValue2;\n\n let newEntry = keyDef.key;\n const textToBeTyped = ((_state$carryValue2 = state.carryValue) != null ? _state$carryValue2 : '') + newEntry;\n const isValidToBeTyped = (0, _utils.isValidDateValue)(element, textToBeTyped);\n\n if (isValidToBeTyped) {\n newEntry = textToBeTyped;\n }\n\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)(newEntry, element);\n const prevValue = (0, _utils.getValue)(element); // this check was provided by fireInputEventIfNeeded\n // TODO: verify if it is even needed by this handler\n\n if (prevValue !== newValue) {\n (0, _shared.fireInputEvent)(element, {\n newValue,\n newSelectionStart,\n eventOverrides: {\n data: keyDef.key,\n inputType: 'insertText'\n }\n });\n }\n\n if (isValidToBeTyped) {\n _dom.fireEvent.change(element, {\n target: {\n value: textToBeTyped\n }\n });\n }\n\n state.carryValue = textToBeTyped;\n }\n}, {\n matches: (keyDef, element) => {\n var _keyDef$key3;\n\n return ((_keyDef$key3 = keyDef.key) == null ? void 0 : _keyDef$key3.length) === 1 && (0, _utils.isElementType)(element, 'input', {\n type: 'number',\n readOnly: false\n });\n },\n handle: (keyDef, element, options, state) => {\n var _ref, _state$carryValue3, _newValue$match, _newValue$match2;\n\n if (!/[\\d.\\-e]/.test(keyDef.key)) {\n return;\n }\n\n const oldValue = (_ref = (_state$carryValue3 = state.carryValue) != null ? _state$carryValue3 : (0, _utils.getValue)(element)) != null ? _ref :\n /* istanbul ignore next */\n '';\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)(keyDef.key, element, oldValue); // the browser allows some invalid input but not others\n // it allows up to two '-' at any place before any 'e' or one directly following 'e'\n // it allows one '.' at any place before e\n\n const valueParts = newValue.split('e', 2);\n\n if (Number((_newValue$match = newValue.match(/-/g)) == null ? void 0 : _newValue$match.length) > 2 || Number((_newValue$match2 = newValue.match(/\\./g)) == null ? void 0 : _newValue$match2.length) > 1 || valueParts[1] && !/^-?\\d*$/.test(valueParts[1])) {\n return;\n }\n\n (0, _shared.fireInputEvent)(element, {\n newValue,\n newSelectionStart,\n eventOverrides: {\n data: keyDef.key,\n inputType: 'insertText'\n }\n });\n const appliedValue = (0, _utils.getValue)(element);\n\n if (appliedValue === newValue) {\n state.carryValue = undefined;\n } else {\n state.carryValue = newValue;\n }\n }\n}, {\n matches: (keyDef, element) => {\n var _keyDef$key4;\n\n return ((_keyDef$key4 = keyDef.key) == null ? void 0 : _keyDef$key4.length) === 1 && ((0, _utils.isElementType)(element, ['input', 'textarea'], {\n readOnly: false\n }) && !(0, _utils.isClickableInput)(element) || (0, _utils.isContentEditable)(element)) && (0, _utils.getSpaceUntilMaxLength)(element) !== 0;\n },\n handle: (keyDef, element) => {\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)(keyDef.key, element);\n (0, _shared.fireInputEvent)(element, {\n newValue,\n newSelectionStart,\n eventOverrides: {\n data: keyDef.key,\n inputType: 'insertText'\n }\n });\n }\n}, {\n matches: (keyDef, element) => keyDef.key === 'Enter' && ((0, _utils.isElementType)(element, 'textarea', {\n readOnly: false\n }) || (0, _utils.isContentEditable)(element)) && (0, _utils.getSpaceUntilMaxLength)(element) !== 0,\n handle: (keyDef, element, options, state) => {\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)('\\n', element);\n const inputType = (0, _utils.isContentEditable)(element) && !state.modifiers.shift ? 'insertParagraph' : 'insertLineBreak';\n (0, _shared.fireInputEvent)(element, {\n newValue,\n newSelectionStart,\n eventOverrides: {\n inputType\n }\n });\n }\n}];\nexports.keypressBehavior = keypressBehavior;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getKeyEventProps = getKeyEventProps;\nexports.getMouseEventProps = getMouseEventProps;\n\nfunction getKeyEventProps(keyDef, state) {\n var _keyDef$keyCode, _keyDef$key;\n\n return {\n key: keyDef.key,\n code: keyDef.code,\n altKey: state.modifiers.alt,\n ctrlKey: state.modifiers.ctrl,\n metaKey: state.modifiers.meta,\n shiftKey: state.modifiers.shift,\n\n /** @deprecated use code instead */\n keyCode: (_keyDef$keyCode = keyDef.keyCode) != null ? _keyDef$keyCode : // istanbul ignore next\n ((_keyDef$key = keyDef.key) == null ? void 0 : _keyDef$key.length) === 1 ? keyDef.key.charCodeAt(0) : undefined\n };\n}\n\nfunction getMouseEventProps(state) {\n return {\n altKey: state.modifiers.alt,\n ctrlKey: state.modifiers.ctrl,\n metaKey: state.modifiers.meta,\n shiftKey: state.modifiers.shift\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.preKeyupBehavior = exports.preKeydownBehavior = exports.postKeyupBehavior = exports.keyupBehavior = exports.keypressBehavior = exports.keydownBehavior = void 0;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"../../utils\");\n\nvar _getEventProps = require(\"../getEventProps\");\n\nvar _shared = require(\"../shared\");\n\n/**\n * This file should contain behavior for functional keys as described here:\n * https://w3c.github.io/uievents-code/#key-alphanumeric-functional\n */\nconst modifierKeys = {\n Alt: 'alt',\n Control: 'ctrl',\n Shift: 'shift',\n Meta: 'meta'\n};\nconst preKeydownBehavior = [// modifierKeys switch on the modifier BEFORE the keydown event\n...Object.entries(modifierKeys).map(([key, modKey]) => ({\n matches: keyDef => keyDef.key === key,\n handle: (keyDef, element, options, state) => {\n state.modifiers[modKey] = true;\n }\n})), // AltGraph produces an extra keydown for Control\n// The modifier does not change\n{\n matches: keyDef => keyDef.key === 'AltGraph',\n handle: (keyDef, element, options, state) => {\n var _options$keyboardMap$;\n\n const ctrlKeyDef = (_options$keyboardMap$ = options.keyboardMap.find(k => k.key === 'Control')) != null ? _options$keyboardMap$ :\n /* istanbul ignore next */\n {\n key: 'Control',\n code: 'Control'\n };\n\n _dom.fireEvent.keyDown(element, (0, _getEventProps.getKeyEventProps)(ctrlKeyDef, state));\n }\n}];\nexports.preKeydownBehavior = preKeydownBehavior;\nconst keydownBehavior = [{\n matches: keyDef => keyDef.key === 'CapsLock',\n handle: (keyDef, element, options, state) => {\n state.modifiers.caps = !state.modifiers.caps;\n }\n}, {\n matches: (keyDef, element) => keyDef.key === 'Backspace' && (0, _utils.isEditable)(element) && !(0, _utils.isCursorAtStart)(element),\n handle: (keyDef, element, options, state) => {\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)('', element, state.carryValue, undefined, 'backward');\n (0, _shared.fireInputEvent)(element, {\n newValue,\n newSelectionStart,\n eventOverrides: {\n inputType: 'deleteContentBackward'\n }\n });\n (0, _shared.carryValue)(element, state, newValue);\n }\n}];\nexports.keydownBehavior = keydownBehavior;\nconst keypressBehavior = [{\n matches: (keyDef, element) => keyDef.key === 'Enter' && (0, _utils.isElementType)(element, 'input') && ['checkbox', 'radio'].includes(element.type),\n handle: (keyDef, element) => {\n const form = element.form;\n\n if ((0, _utils.hasFormSubmit)(form)) {\n _dom.fireEvent.submit(form);\n }\n }\n}, {\n matches: (keyDef, element) => keyDef.key === 'Enter' && ((0, _utils.isClickableInput)(element) || // Links with href defined should handle Enter the same as a click\n (0, _utils.isElementType)(element, 'a') && Boolean(element.href)),\n handle: (keyDef, element, options, state) => {\n _dom.fireEvent.click(element, (0, _getEventProps.getMouseEventProps)(state));\n }\n}, {\n matches: (keyDef, element) => keyDef.key === 'Enter' && (0, _utils.isElementType)(element, 'input'),\n handle: (keyDef, element) => {\n const form = element.form;\n\n if (form && (form.querySelectorAll('input').length === 1 || (0, _utils.hasFormSubmit)(form))) {\n _dom.fireEvent.submit(form);\n }\n }\n}];\nexports.keypressBehavior = keypressBehavior;\nconst preKeyupBehavior = [// modifierKeys switch off the modifier BEFORE the keyup event\n...Object.entries(modifierKeys).map(([key, modKey]) => ({\n matches: keyDef => keyDef.key === key,\n handle: (keyDef, element, options, state) => {\n state.modifiers[modKey] = false;\n }\n}))];\nexports.preKeyupBehavior = preKeyupBehavior;\nconst keyupBehavior = [{\n matches: (keyDef, element) => keyDef.key === ' ' && (0, _utils.isClickableInput)(element),\n handle: (keyDef, element, options, state) => {\n _dom.fireEvent.click(element, (0, _getEventProps.getMouseEventProps)(state));\n }\n}];\nexports.keyupBehavior = keyupBehavior;\nconst postKeyupBehavior = [// AltGraph produces an extra keyup for Control\n// The modifier does not change\n{\n matches: keyDef => keyDef.key === 'AltGraph',\n handle: (keyDef, element, options, state) => {\n var _options$keyboardMap$2;\n\n const ctrlKeyDef = (_options$keyboardMap$2 = options.keyboardMap.find(k => k.key === 'Control')) != null ? _options$keyboardMap$2 :\n /* istanbul ignore next */\n {\n key: 'Control',\n code: 'Control'\n };\n\n _dom.fireEvent.keyUp(element, (0, _getEventProps.getKeyEventProps)(ctrlKeyDef, state));\n }\n}];\nexports.postKeyupBehavior = postKeyupBehavior;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.replaceBehavior = exports.preKeyupBehavior = exports.preKeydownBehavior = exports.postKeyupBehavior = exports.keyupBehavior = exports.keypressBehavior = exports.keydownBehavior = void 0;\n\nvar _utils = require(\"../../utils\");\n\nvar arrowKeys = _interopRequireWildcard(require(\"./arrow\"));\n\nvar controlKeys = _interopRequireWildcard(require(\"./control\"));\n\nvar characterKeys = _interopRequireWildcard(require(\"./character\"));\n\nvar functionalKeys = _interopRequireWildcard(require(\"./functional\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nconst replaceBehavior = [{\n matches: (keyDef, element) => keyDef.key === 'selectall' && (0, _utils.isElementType)(element, ['input', 'textarea']),\n handle: (keyDef, element, options, state) => {\n var _state$carryValue;\n\n (0, _utils.setSelectionRange)(element, 0, ((_state$carryValue = state.carryValue) != null ? _state$carryValue : element.value).length);\n }\n}];\nexports.replaceBehavior = replaceBehavior;\nconst preKeydownBehavior = [...functionalKeys.preKeydownBehavior];\nexports.preKeydownBehavior = preKeydownBehavior;\nconst keydownBehavior = [...arrowKeys.keydownBehavior, ...controlKeys.keydownBehavior, ...functionalKeys.keydownBehavior];\nexports.keydownBehavior = keydownBehavior;\nconst keypressBehavior = [...functionalKeys.keypressBehavior, ...characterKeys.keypressBehavior];\nexports.keypressBehavior = keypressBehavior;\nconst preKeyupBehavior = [...functionalKeys.preKeyupBehavior];\nexports.preKeyupBehavior = preKeyupBehavior;\nconst keyupBehavior = [...functionalKeys.keyupBehavior];\nexports.keyupBehavior = keyupBehavior;\nconst postKeyupBehavior = [...functionalKeys.postKeyupBehavior];\nexports.postKeyupBehavior = postKeyupBehavior;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.keyboardImplementation = keyboardImplementation;\nexports.releaseAllKeys = releaseAllKeys;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"../utils\");\n\nvar _getNextKeyDef = require(\"./getNextKeyDef\");\n\nvar plugins = _interopRequireWildcard(require(\"./plugins\"));\n\nvar _getEventProps = require(\"./getEventProps\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nasync function keyboardImplementation(text, options, state) {\n var _state$repeatKey;\n\n const {\n document\n } = options;\n\n const getCurrentElement = () => getActive(document);\n\n const {\n keyDef,\n consumedLength,\n releasePrevious,\n releaseSelf,\n repeat\n } = (_state$repeatKey = state.repeatKey) != null ? _state$repeatKey : (0, _getNextKeyDef.getNextKeyDef)(text, options);\n const replace = applyPlugins(plugins.replaceBehavior, keyDef, getCurrentElement(), options, state);\n\n if (!replace) {\n const pressed = state.pressed.find(p => p.keyDef === keyDef); // Release the key automatically if it was pressed before.\n // Do not release the key on iterations on `state.repeatKey`.\n\n if (pressed && !state.repeatKey) {\n keyup(keyDef, getCurrentElement, options, state, pressed.unpreventedDefault);\n }\n\n if (!releasePrevious) {\n const unpreventedDefault = keydown(keyDef, getCurrentElement, options, state);\n\n if (unpreventedDefault && hasKeyPress(keyDef, state)) {\n keypress(keyDef, getCurrentElement, options, state);\n } // Release the key only on the last iteration on `state.repeatKey`.\n\n\n if (releaseSelf && repeat <= 1) {\n keyup(keyDef, getCurrentElement, options, state, unpreventedDefault);\n }\n }\n }\n\n if (repeat > 1) {\n state.repeatKey = {\n // don't consume again on the next iteration\n consumedLength: 0,\n keyDef,\n releasePrevious,\n releaseSelf,\n repeat: repeat - 1\n };\n } else {\n delete state.repeatKey;\n }\n\n if (text.length > consumedLength || repeat > 1) {\n if (options.delay > 0) {\n await (0, _utils.wait)(options.delay);\n }\n\n return keyboardImplementation(text.slice(consumedLength), options, state);\n }\n\n return void undefined;\n}\n\nfunction getActive(document) {\n var _getActiveElement;\n\n return (_getActiveElement = (0, _utils.getActiveElement)(document)) != null ? _getActiveElement :\n /* istanbul ignore next */\n document.body;\n}\n\nfunction releaseAllKeys(options, state) {\n const getCurrentElement = () => getActive(options.document);\n\n for (const k of state.pressed) {\n keyup(k.keyDef, getCurrentElement, options, state, k.unpreventedDefault);\n }\n}\n\nfunction keydown(keyDef, getCurrentElement, options, state) {\n const element = getCurrentElement(); // clear carried characters when focus is moved\n\n if (element !== state.activeElement) {\n state.carryValue = undefined;\n state.carryChar = '';\n }\n\n state.activeElement = element;\n applyPlugins(plugins.preKeydownBehavior, keyDef, element, options, state);\n\n const unpreventedDefault = _dom.fireEvent.keyDown(element, (0, _getEventProps.getKeyEventProps)(keyDef, state));\n\n state.pressed.push({\n keyDef,\n unpreventedDefault\n });\n\n if (unpreventedDefault) {\n // all default behavior like keypress/submit etc is applied to the currentElement\n applyPlugins(plugins.keydownBehavior, keyDef, getCurrentElement(), options, state);\n }\n\n return unpreventedDefault;\n}\n\nfunction keypress(keyDef, getCurrentElement, options, state) {\n const element = getCurrentElement();\n\n const unpreventedDefault = _dom.fireEvent.keyPress(element, (0, _getEventProps.getKeyEventProps)(keyDef, state));\n\n if (unpreventedDefault) {\n applyPlugins(plugins.keypressBehavior, keyDef, getCurrentElement(), options, state);\n }\n}\n\nfunction keyup(keyDef, getCurrentElement, options, state, unprevented) {\n const element = getCurrentElement();\n applyPlugins(plugins.preKeyupBehavior, keyDef, element, options, state);\n\n const unpreventedDefault = _dom.fireEvent.keyUp(element, (0, _getEventProps.getKeyEventProps)(keyDef, state));\n\n if (unprevented && unpreventedDefault) {\n applyPlugins(plugins.keyupBehavior, keyDef, getCurrentElement(), options, state);\n }\n\n state.pressed = state.pressed.filter(k => k.keyDef !== keyDef);\n applyPlugins(plugins.postKeyupBehavior, keyDef, element, options, state);\n}\n\nfunction applyPlugins(pluginCollection, keyDef, element, options, state) {\n const plugin = pluginCollection.find(p => p.matches(keyDef, element, options, state));\n\n if (plugin) {\n plugin.handle(keyDef, element, options, state);\n }\n\n return !!plugin;\n}\n\nfunction hasKeyPress(keyDef, state) {\n var _keyDef$key;\n\n return (((_keyDef$key = keyDef.key) == null ? void 0 : _keyDef$key.length) === 1 || keyDef.key === 'Enter') && !state.modifiers.ctrl && !state.modifiers.alt;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DOM_KEY_LOCATION = void 0;\n\n/**\n * @internal Do not create/alter this by yourself as this type might be subject to changes.\n */\nlet DOM_KEY_LOCATION;\nexports.DOM_KEY_LOCATION = DOM_KEY_LOCATION;\n\n(function (DOM_KEY_LOCATION) {\n DOM_KEY_LOCATION[DOM_KEY_LOCATION[\"STANDARD\"] = 0] = \"STANDARD\";\n DOM_KEY_LOCATION[DOM_KEY_LOCATION[\"LEFT\"] = 1] = \"LEFT\";\n DOM_KEY_LOCATION[DOM_KEY_LOCATION[\"RIGHT\"] = 2] = \"RIGHT\";\n DOM_KEY_LOCATION[DOM_KEY_LOCATION[\"NUMPAD\"] = 3] = \"NUMPAD\";\n})(DOM_KEY_LOCATION || (exports.DOM_KEY_LOCATION = DOM_KEY_LOCATION = {}));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.defaultKeyMap = void 0;\n\nvar _types = require(\"./types\");\n\n/**\n * Mapping for a default US-104-QWERTY keyboard\n */\nconst defaultKeyMap = [// alphanumeric keys\n...'0123456789'.split('').map(c => ({\n code: `Digit${c}`,\n key: c\n})), ...')!@#$%^&*('.split('').map((c, i) => ({\n code: `Digit${i}`,\n key: c,\n shiftKey: true\n})), ...'abcdefghijklmnopqrstuvwxyz'.split('').map(c => ({\n code: `Key${c.toUpperCase()}`,\n key: c\n})), ...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('').map(c => ({\n code: `Key${c}`,\n key: c,\n shiftKey: true\n})), // alphanumeric block - functional\n{\n code: 'Space',\n key: ' '\n}, {\n code: 'AltLeft',\n key: 'Alt',\n location: _types.DOM_KEY_LOCATION.LEFT,\n keyCode: 18\n}, {\n code: 'AltRight',\n key: 'Alt',\n location: _types.DOM_KEY_LOCATION.RIGHT,\n keyCode: 18\n}, {\n code: 'ShiftLeft',\n key: 'Shift',\n location: _types.DOM_KEY_LOCATION.LEFT,\n keyCode: 16\n}, {\n code: 'ShiftRight',\n key: 'Shift',\n location: _types.DOM_KEY_LOCATION.RIGHT,\n keyCode: 16\n}, {\n code: 'ControlLeft',\n key: 'Control',\n location: _types.DOM_KEY_LOCATION.LEFT,\n keyCode: 17\n}, {\n code: 'ControlRight',\n key: 'Control',\n location: _types.DOM_KEY_LOCATION.RIGHT,\n keyCode: 17\n}, {\n code: 'MetaLeft',\n key: 'Meta',\n location: _types.DOM_KEY_LOCATION.LEFT,\n keyCode: 93\n}, {\n code: 'MetaRight',\n key: 'Meta',\n location: _types.DOM_KEY_LOCATION.RIGHT,\n keyCode: 93\n}, {\n code: 'OSLeft',\n key: 'OS',\n location: _types.DOM_KEY_LOCATION.LEFT,\n keyCode: 91\n}, {\n code: 'OSRight',\n key: 'OS',\n location: _types.DOM_KEY_LOCATION.RIGHT,\n keyCode: 91\n}, {\n code: 'CapsLock',\n key: 'CapsLock',\n keyCode: 20\n}, {\n code: 'Backspace',\n key: 'Backspace',\n keyCode: 8\n}, {\n code: 'Enter',\n key: 'Enter',\n keyCode: 13\n}, // function\n{\n code: 'Escape',\n key: 'Escape',\n keyCode: 27\n}, // arrows\n{\n code: 'ArrowUp',\n key: 'ArrowUp',\n keyCode: 38\n}, {\n code: 'ArrowDown',\n key: 'ArrowDown',\n keyCode: 40\n}, {\n code: 'ArrowLeft',\n key: 'ArrowLeft',\n keyCode: 37\n}, {\n code: 'ArrowRight',\n key: 'ArrowRight',\n keyCode: 39\n}, // control pad\n{\n code: 'Home',\n key: 'Home',\n keyCode: 36\n}, {\n code: 'End',\n key: 'End',\n keyCode: 35\n}, {\n code: 'Delete',\n key: 'Delete',\n keyCode: 46\n}, {\n code: 'PageUp',\n key: 'PageUp',\n keyCode: 33\n}, {\n code: 'PageDown',\n key: 'PageDown',\n keyCode: 34\n} // TODO: add mappings\n];\nexports.defaultKeyMap = defaultKeyMap;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.specialCharMap = void 0;\n\n/**\n * @deprecated This list of strings with special meaning is no longer necessary\n * as we've introduced a standardized way to describe any keystroke for `userEvent`.\n * @see https://testing-library.com/docs/ecosystem-user-event#keyboardtext-options\n */\nconst specialCharMap = {\n arrowLeft: '{arrowleft}',\n arrowRight: '{arrowright}',\n arrowDown: '{arrowdown}',\n arrowUp: '{arrowup}',\n enter: '{enter}',\n escape: '{esc}',\n delete: '{del}',\n backspace: '{backspace}',\n home: '{home}',\n end: '{end}',\n selectAll: '{selectall}',\n space: '{space}',\n whitespace: ' ',\n pageUp: '{pageUp}',\n pageDown: '{pageDown}'\n};\nexports.specialCharMap = specialCharMap;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.keyboard = keyboard;\nexports.keyboardImplementationWrapper = keyboardImplementationWrapper;\nObject.defineProperty(exports, \"specialCharMap\", {\n enumerable: true,\n get: function () {\n return _specialCharMap.specialCharMap;\n }\n});\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _keyboardImplementation = require(\"./keyboardImplementation\");\n\nvar _keyMap = require(\"./keyMap\");\n\nvar _specialCharMap = require(\"./specialCharMap\");\n\nfunction keyboard(text, options) {\n var _options$delay;\n\n const {\n promise,\n state\n } = keyboardImplementationWrapper(text, options);\n\n if (((_options$delay = options == null ? void 0 : options.delay) != null ? _options$delay : 0) > 0) {\n return (0, _dom.getConfig)().asyncWrapper(() => promise.then(() => state));\n } else {\n // prevent users from dealing with UnhandledPromiseRejectionWarning in sync call\n promise.catch(console.error);\n return state;\n }\n}\n\nfunction keyboardImplementationWrapper(text, config = {}) {\n const {\n keyboardState: state = createKeyboardState(),\n delay = 0,\n document: doc = document,\n autoModify = false,\n keyboardMap = _keyMap.defaultKeyMap\n } = config;\n const options = {\n delay,\n document: doc,\n autoModify,\n keyboardMap\n };\n return {\n promise: (0, _keyboardImplementation.keyboardImplementation)(text, options, state),\n state,\n releaseAllKeys: () => (0, _keyboardImplementation.releaseAllKeys)(options, state)\n };\n}\n\nfunction createKeyboardState() {\n return {\n activeElement: null,\n pressed: [],\n carryChar: '',\n modifiers: {\n alt: false,\n caps: false,\n ctrl: false,\n meta: false,\n shift: false\n }\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.typeImplementation = typeImplementation;\n\nvar _utils = require(\"../utils\");\n\nvar _click = require(\"../click\");\n\nvar _keyboard = require(\"../keyboard\");\n\nasync function typeImplementation(element, text, {\n delay,\n skipClick = false,\n skipAutoClose = false,\n initialSelectionStart = undefined,\n initialSelectionEnd = undefined\n}) {\n // TODO: properly type guard\n // we use this workaround for now to prevent changing behavior\n if (element.disabled) return;\n if (!skipClick) (0, _click.click)(element); // The focused element could change between each event, so get the currently active element each time\n\n const currentElement = () => (0, _utils.getActiveElement)(element.ownerDocument); // by default, a new element has its selection start and end at 0\n // but most of the time when people call \"type\", they expect it to type\n // at the end of the current input value. So, if the selection start\n // and end are both the default of 0, then we'll go ahead and change\n // them to the length of the current value.\n // the only time it would make sense to pass the initialSelectionStart or\n // initialSelectionEnd is if you have an input with a value and want to\n // explicitly start typing with the cursor at 0. Not super common.\n\n\n const value = (0, _utils.getValue)(currentElement());\n const {\n selectionStart,\n selectionEnd\n } = (0, _utils.getSelectionRange)(element);\n\n if (value != null && (selectionStart === null || selectionStart === 0) && (selectionEnd === null || selectionEnd === 0)) {\n (0, _utils.setSelectionRange)(currentElement(), initialSelectionStart != null ? initialSelectionStart : value.length, initialSelectionEnd != null ? initialSelectionEnd : value.length);\n }\n\n const {\n promise,\n releaseAllKeys\n } = (0, _keyboard.keyboardImplementationWrapper)(text, {\n delay,\n document: element.ownerDocument\n });\n\n if (delay > 0) {\n await promise;\n }\n\n if (!skipAutoClose) {\n releaseAllKeys();\n } // eslint-disable-next-line consistent-return -- we need to return the internal Promise so that it is catchable if we don't await\n\n\n return promise;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.type = type;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _typeImplementation = require(\"./typeImplementation\");\n\n// this needs to be wrapped in the event/asyncWrapper for React's act and angular's change detection\n// depending on whether it will be async.\nfunction type(element, text, {\n delay = 0,\n ...options\n} = {}) {\n // we do not want to wrap in the asyncWrapper if we're not\n // going to actually be doing anything async, so we only wrap\n // if the delay is greater than 0\n if (delay > 0) {\n return (0, _dom.getConfig)().asyncWrapper(() => (0, _typeImplementation.typeImplementation)(element, text, {\n delay,\n ...options\n }));\n } else {\n return void (0, _typeImplementation.typeImplementation)(element, text, {\n delay,\n ...options\n }) // prevents users from dealing with UnhandledPromiseRejectionWarning\n .catch(console.error);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.clear = clear;\n\nvar _utils = require(\"./utils\");\n\nvar _type = require(\"./type\");\n\nfunction clear(element) {\n var _element$selectionSta, _element$selectionEnd;\n\n if (!(0, _utils.isElementType)(element, ['input', 'textarea'])) {\n // TODO: support contenteditable\n throw new Error('clear currently only supports input and textarea elements.');\n }\n\n if ((0, _utils.isDisabled)(element)) {\n return;\n } // TODO: track the selection range ourselves so we don't have to do this input \"type\" trickery\n // just like cypress does: https://github.com/cypress-io/cypress/blob/8d7f1a0bedc3c45a2ebf1ff50324b34129fdc683/packages/driver/src/dom/selection.ts#L16-L37\n\n\n const elementType = element.type;\n\n if (elementType !== 'textarea') {\n // setSelectionRange is not supported on certain types of inputs, e.g. \"number\" or \"email\"\n ;\n element.type = 'text';\n }\n\n (0, _type.type)(element, '{selectall}{del}', {\n delay: 0,\n initialSelectionStart: (_element$selectionSta = element.selectionStart) != null ? _element$selectionSta :\n /* istanbul ignore next */\n undefined,\n initialSelectionEnd: (_element$selectionEnd = element.selectionEnd) != null ? _element$selectionEnd :\n /* istanbul ignore next */\n undefined\n });\n\n if (elementType !== 'textarea') {\n ;\n element.type = elementType;\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tab = tab;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"./utils\");\n\nvar _focus = require(\"./focus\");\n\nvar _blur = require(\"./blur\");\n\nfunction getNextElement(currentIndex, shift, elements, focusTrap) {\n if ((0, _utils.isDocument)(focusTrap) && (currentIndex === 0 && shift || currentIndex === elements.length - 1 && !shift)) {\n return focusTrap.body;\n }\n\n const nextIndex = shift ? currentIndex - 1 : currentIndex + 1;\n const defaultIndex = shift ? elements.length - 1 : 0;\n return elements[nextIndex] || elements[defaultIndex];\n}\n\nfunction tab({\n shift = false,\n focusTrap\n} = {}) {\n var _focusTrap$ownerDocum, _focusTrap;\n\n const doc = (_focusTrap$ownerDocum = (_focusTrap = focusTrap) == null ? void 0 : _focusTrap.ownerDocument) != null ? _focusTrap$ownerDocum : document;\n const previousElement = (0, _utils.getActiveElement)(doc);\n\n if (!focusTrap) {\n focusTrap = doc;\n }\n\n const focusableElements = focusTrap.querySelectorAll(_utils.FOCUSABLE_SELECTOR);\n const enabledElements = Array.from(focusableElements).filter(el => el === previousElement || el.getAttribute('tabindex') !== '-1' && !(0, _utils.isDisabled)(el) && // Hidden elements are not tabable\n (0, _utils.isVisible)(el));\n if (enabledElements.length === 0) return;\n const orderedElements = enabledElements.map((el, idx) => ({\n el,\n idx\n })).sort((a, b) => {\n // tabindex has no effect if the active element has tabindex=\"-1\"\n if (previousElement && previousElement.getAttribute('tabindex') === '-1') {\n return a.idx - b.idx;\n }\n\n const tabIndexA = Number(a.el.getAttribute('tabindex'));\n const tabIndexB = Number(b.el.getAttribute('tabindex'));\n const diff = tabIndexA - tabIndexB;\n return diff === 0 ? a.idx - b.idx : diff;\n }).map(({\n el\n }) => el); // TODO: verify/remove type casts\n\n const checkedRadio = {};\n let prunedElements = [];\n orderedElements.forEach(currentElement => {\n // For radio groups keep only the active radio\n // If there is no active radio, keep only the checked radio\n // If there is no checked radio, treat like everything else\n const el = currentElement;\n\n if (el.type === 'radio' && el.name) {\n // If the active element is part of the group, add only that\n const prev = previousElement;\n\n if (prev && prev.type === el.type && prev.name === el.name) {\n if (el === prev) {\n prunedElements.push(el);\n }\n\n return;\n } // If we stumble upon a checked radio, remove the others\n\n\n if (el.checked) {\n prunedElements = prunedElements.filter(e => e.type !== el.type || e.name !== el.name);\n prunedElements.push(el);\n checkedRadio[el.name] = el;\n return;\n } // If we already found the checked one, skip\n\n\n if (typeof checkedRadio[el.name] !== 'undefined') {\n return;\n }\n }\n\n prunedElements.push(el);\n });\n const index = prunedElements.findIndex(el => el === previousElement);\n const nextElement = getNextElement(index, shift, prunedElements, focusTrap);\n const shiftKeyInit = {\n key: 'Shift',\n keyCode: 16,\n shiftKey: true\n };\n const tabKeyInit = {\n key: 'Tab',\n keyCode: 9,\n shiftKey: shift\n };\n let continueToTab = true; // not sure how to make it so there's no previous element...\n // istanbul ignore else\n\n if (previousElement) {\n // preventDefault on the shift key makes no difference\n if (shift) _dom.fireEvent.keyDown(previousElement, { ...shiftKeyInit\n });\n continueToTab = _dom.fireEvent.keyDown(previousElement, { ...tabKeyInit\n });\n }\n\n const keyUpTarget = !continueToTab && previousElement ? previousElement : nextElement;\n\n if (continueToTab) {\n if (nextElement === doc.body) {\n /* istanbul ignore else */\n if (previousElement) {\n (0, _blur.blur)(previousElement);\n }\n } else {\n (0, _focus.focus)(nextElement);\n }\n }\n\n _dom.fireEvent.keyUp(keyUpTarget, { ...tabKeyInit\n });\n\n if (shift) {\n _dom.fireEvent.keyUp(keyUpTarget, { ...shiftKeyInit,\n shiftKey: false\n });\n }\n}\n/*\neslint\n complexity: \"off\",\n max-statements: \"off\",\n*/","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.upload = upload;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _click = require(\"./click\");\n\nvar _blur = require(\"./blur\");\n\nvar _focus = require(\"./focus\");\n\nvar _utils = require(\"./utils\");\n\nfunction upload(element, fileOrFiles, init, {\n applyAccept = false\n} = {}) {\n var _input$files;\n\n const input = (0, _utils.isElementType)(element, 'label') ? element.control : element;\n\n if (!input || !(0, _utils.isElementType)(input, 'input', {\n type: 'file'\n })) {\n throw new TypeError(`The ${input === element ? 'given' : 'associated'} ${input == null ? void 0 : input.tagName} element does not accept file uploads`);\n }\n\n if ((0, _utils.isDisabled)(element)) return;\n (0, _click.click)(element, init == null ? void 0 : init.clickInit);\n const files = (Array.isArray(fileOrFiles) ? fileOrFiles : [fileOrFiles]).filter(file => !applyAccept || isAcceptableFile(file, input.accept)).slice(0, input.multiple ? undefined : 1); // blur fires when the file selector pops up\n\n (0, _blur.blur)(element); // focus fires when they make their selection\n\n (0, _focus.focus)(element); // do not fire an input event if the file selection does not change\n\n if (files.length === ((_input$files = input.files) == null ? void 0 : _input$files.length) && files.every((f, i) => {\n var _input$files2;\n\n return f === ((_input$files2 = input.files) == null ? void 0 : _input$files2.item(i));\n })) {\n return;\n } // the event fired in the browser isn't actually an \"input\" or \"change\" event\n // but a new Event with a type set to \"input\" and \"change\"\n // Kinda odd...\n\n\n const inputFiles = { ...files,\n length: files.length,\n item: index => files[index],\n\n [Symbol.iterator]() {\n let i = 0;\n return {\n next: () => ({\n done: i >= files.length,\n value: files[i++]\n })\n };\n }\n\n };\n (0, _dom.fireEvent)(input, (0, _dom.createEvent)('input', input, {\n target: {\n files: inputFiles\n },\n bubbles: true,\n cancelable: false,\n composed: true\n }));\n\n _dom.fireEvent.change(input, {\n target: {\n files: inputFiles\n },\n ...(init == null ? void 0 : init.changeInit)\n });\n}\n\nfunction isAcceptableFile(file, accept) {\n if (!accept) {\n return true;\n }\n\n const wildcards = ['audio/*', 'image/*', 'video/*'];\n return accept.split(',').some(acceptToken => {\n if (acceptToken.startsWith('.')) {\n // tokens starting with a dot represent a file extension\n return file.name.endsWith(acceptToken);\n } else if (wildcards.includes(acceptToken)) {\n return file.type.startsWith(acceptToken.substr(0, acceptToken.length - 1));\n }\n\n return file.type === acceptToken;\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.selectOptions = exports.deselectOptions = void 0;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"./utils\");\n\nvar _click = require(\"./click\");\n\nvar _focus = require(\"./focus\");\n\nvar _hover = require(\"./hover\");\n\nfunction selectOptionsBase(newValue, select, values, init, {\n skipPointerEventsCheck = false\n} = {}) {\n if (!newValue && !select.multiple) {\n throw (0, _dom.getConfig)().getElementError(`Unable to deselect an option in a non-multiple select. Use selectOptions to change the selection instead.`, select);\n }\n\n const valArray = Array.isArray(values) ? values : [values];\n const allOptions = Array.from(select.querySelectorAll('option, [role=\"option\"]'));\n const selectedOptions = valArray.map(val => {\n if (typeof val !== 'string' && allOptions.includes(val)) {\n return val;\n } else {\n const matchingOption = allOptions.find(o => o.value === val || o.innerHTML === val);\n\n if (matchingOption) {\n return matchingOption;\n } else {\n throw (0, _dom.getConfig)().getElementError(`Value \"${String(val)}\" not found in options`, select);\n }\n }\n }).filter(option => !(0, _utils.isDisabled)(option));\n if ((0, _utils.isDisabled)(select) || !selectedOptions.length) return;\n\n if ((0, _utils.isElementType)(select, 'select')) {\n if (select.multiple) {\n for (const option of selectedOptions) {\n const withPointerEvents = skipPointerEventsCheck ? true : (0, _utils.hasPointerEvents)(option); // events fired for multiple select are weird. Can't use hover...\n\n if (withPointerEvents) {\n _dom.fireEvent.pointerOver(option, init);\n\n _dom.fireEvent.pointerEnter(select, init);\n\n _dom.fireEvent.mouseOver(option);\n\n _dom.fireEvent.mouseEnter(select);\n\n _dom.fireEvent.pointerMove(option, init);\n\n _dom.fireEvent.mouseMove(option, init);\n\n _dom.fireEvent.pointerDown(option, init);\n\n _dom.fireEvent.mouseDown(option, init);\n }\n\n (0, _focus.focus)(select);\n\n if (withPointerEvents) {\n _dom.fireEvent.pointerUp(option, init);\n\n _dom.fireEvent.mouseUp(option, init);\n }\n\n selectOption(option);\n\n if (withPointerEvents) {\n _dom.fireEvent.click(option, init);\n }\n }\n } else if (selectedOptions.length === 1) {\n const withPointerEvents = skipPointerEventsCheck ? true : (0, _utils.hasPointerEvents)(select); // the click to open the select options\n\n if (withPointerEvents) {\n (0, _click.click)(select, init, {\n skipPointerEventsCheck\n });\n } else {\n (0, _focus.focus)(select);\n }\n\n selectOption(selectedOptions[0]);\n\n if (withPointerEvents) {\n // the browser triggers another click event on the select for the click on the option\n // this second click has no 'down' phase\n _dom.fireEvent.pointerOver(select, init);\n\n _dom.fireEvent.pointerEnter(select, init);\n\n _dom.fireEvent.mouseOver(select);\n\n _dom.fireEvent.mouseEnter(select);\n\n _dom.fireEvent.pointerUp(select, init);\n\n _dom.fireEvent.mouseUp(select, init);\n\n _dom.fireEvent.click(select, init);\n }\n } else {\n throw (0, _dom.getConfig)().getElementError(`Cannot select multiple options on a non-multiple select`, select);\n }\n } else if (select.getAttribute('role') === 'listbox') {\n selectedOptions.forEach(option => {\n (0, _hover.hover)(option, init, {\n skipPointerEventsCheck\n });\n (0, _click.click)(option, init, {\n skipPointerEventsCheck\n });\n (0, _hover.unhover)(option, init, {\n skipPointerEventsCheck\n });\n });\n } else {\n throw (0, _dom.getConfig)().getElementError(`Cannot select options on elements that are neither select nor listbox elements`, select);\n }\n\n function selectOption(option) {\n option.selected = newValue;\n (0, _dom.fireEvent)(select, (0, _dom.createEvent)('input', select, {\n bubbles: true,\n cancelable: false,\n composed: true,\n ...init\n }));\n\n _dom.fireEvent.change(select, init);\n }\n}\n\nconst selectOptions = selectOptionsBase.bind(null, true);\nexports.selectOptions = selectOptions;\nconst deselectOptions = selectOptionsBase.bind(null, false);\nexports.deselectOptions = deselectOptions;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.paste = paste;\n\nvar _dom = require(\"@testing-library/dom\");\n\nvar _utils = require(\"./utils\");\n\nfunction isSupportedElement(element) {\n return (0, _utils.isElementType)(element, 'input') && Boolean(_utils.editableInputTypes[element.type]) || (0, _utils.isElementType)(element, 'textarea');\n}\n\nfunction paste(element, text, init, {\n initialSelectionStart,\n initialSelectionEnd\n} = {}) {\n // TODO: implement for contenteditable\n if (!isSupportedElement(element)) {\n throw new TypeError(`The given ${element.tagName} element is currently unsupported.\n A PR extending this implementation would be very much welcome at https://github.com/testing-library/user-event`);\n }\n\n if ((0, _utils.isDisabled)(element)) {\n return;\n }\n\n (0, _utils.eventWrapper)(() => element.focus()); // by default, a new element has it's selection start and end at 0\n // but most of the time when people call \"paste\", they expect it to paste\n // at the end of the current input value. So, if the selection start\n // and end are both the default of 0, then we'll go ahead and change\n // them to the length of the current value.\n // the only time it would make sense to pass the initialSelectionStart or\n // initialSelectionEnd is if you have an input with a value and want to\n // explicitely start typing with the cursor at 0. Not super common.\n\n if (element.selectionStart === 0 && element.selectionEnd === 0) {\n (0, _utils.setSelectionRange)(element, initialSelectionStart != null ? initialSelectionStart : element.value.length, initialSelectionEnd != null ? initialSelectionEnd : element.value.length);\n }\n\n _dom.fireEvent.paste(element, init);\n\n if (element.readOnly) {\n return;\n }\n\n text = text.substr(0, (0, _utils.getSpaceUntilMaxLength)(element));\n const {\n newValue,\n newSelectionStart\n } = (0, _utils.calculateNewValue)(text, element);\n\n _dom.fireEvent.input(element, {\n inputType: 'insertFromPaste',\n target: {\n value: newValue\n }\n });\n\n (0, _utils.setSelectionRange)(element, // TODO: investigate why the selection caused by invalid parameters was expected\n {\n newSelectionStart,\n selectionEnd: newSelectionStart\n }, {});\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nObject.defineProperty(exports, \"specialChars\", {\n enumerable: true,\n get: function () {\n return _keyboard.specialCharMap;\n }\n});\n\nvar _click = require(\"./click\");\n\nvar _type = require(\"./type\");\n\nvar _clear = require(\"./clear\");\n\nvar _tab = require(\"./tab\");\n\nvar _hover = require(\"./hover\");\n\nvar _upload = require(\"./upload\");\n\nvar _selectOptions = require(\"./select-options\");\n\nvar _paste = require(\"./paste\");\n\nvar _keyboard = require(\"./keyboard\");\n\nconst userEvent = {\n click: _click.click,\n dblClick: _click.dblClick,\n type: _type.type,\n clear: _clear.clear,\n tab: _tab.tab,\n hover: _hover.hover,\n unhover: _hover.unhover,\n upload: _upload.upload,\n selectOptions: _selectOptions.selectOptions,\n deselectOptions: _selectOptions.deselectOptions,\n paste: _paste.paste,\n keyboard: _keyboard.keyboard\n};\nvar _default = userEvent;\nexports.default = _default;","import { fireEvent, waitFor, within, waitForElementToBeRemoved } from '@testing-library/react'\nimport { act } from '@testing-library/react'\nimport userEvent from '@testing-library/user-event'\n\n// based on https://github.com/romgain/react-select-event/blob/master/src/index.ts\n\n// find the select container from its input field 🤷\nfunction getSelectContainer(input: HTMLElement): HTMLElement {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return input.parentNode!.parentNode!.parentNode as HTMLElement\n}\n\n/**\n * Please, make sure to call expand before trying to get the menu container\n */\nfunction getSelectMenu(input: HTMLElement): HTMLElement {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return input.parentNode!.parentNode!.nextSibling as HTMLElement\n}\n\nfunction getSelectTriggerHandle(input: HTMLElement): HTMLElement {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return input.parentNode!.nextSibling!.nextSibling as HTMLElement\n}\n\nfunction getSelectSearchContainer(input: HTMLElement): HTMLElement {\n return input.parentNode as HTMLElement\n}\n\nfunction isSelectMenuExpanded(input: HTMLElement): boolean {\n const selectContainer = getSelectContainer(input)\n\n /**\n * Once the select is expanded, we have the following structure:\n * +-------------+\n * | Close button (visually hiddren)\n * +-------------+\n * | DropdownTrigger\n * +-------------+\n * | Popover\n * +-------------+\n *\n * This, if the container has 3 children, we assume the menu is expanded\n */\n return selectContainer.children.length == 3\n}\n\n/**\n * This is needed because some datasources might be asynchronous.\n * To ensure that the data they retrieve will be available, we wait for the\n * querying phase to finish.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n */\nasync function waitForPendingQuery(input: HTMLElement) {\n const searchContainer = getSelectSearchContainer(input)\n\n if (!within(searchContainer).queryByTestId('select-trigger-loading')) {\n return\n }\n\n await waitForElementToBeRemoved(\n () => within(searchContainer).queryByTestId('select-trigger-loading'),\n { timeout: 2500 }\n )\n}\n\n/**\n * Expand the `Select` menu, if it not already expanded.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<void>}\n */\nasync function expand(input: HTMLElement): Promise<void> {\n await waitForPendingQuery(input)\n\n if (isSelectMenuExpanded(input)) {\n return\n }\n\n const triggerHandle = getSelectTriggerHandle(input)\n\n await waitFor(() => {\n expect(triggerHandle).toBeEnabled()\n })\n\n userEvent.click(triggerHandle)\n\n await waitFor(async () => {\n expect(await within(getSelectContainer(input)).findByRole('listbox')).toBeInTheDocument()\n })\n}\n\n/**\n * Collapse the `Select` menu, if it not already collapsed.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<void>}\n */\nasync function collapse(input: HTMLElement): Promise<void> {\n if (!isSelectMenuExpanded(input)) {\n return\n }\n\n const triggerHandle = getSelectTriggerHandle(input)\n\n userEvent.click(triggerHandle)\n\n await waitFor(() => {\n expect(within(getSelectContainer(input)).queryByRole('listbox')).not.toBeInTheDocument()\n })\n}\n\n/**\n * Select the provided option(s), if they are present in the menu.\n * Notice that we programatically expand the `Select` menu before select the item\n * @param {string} option - Label for the option to be selected.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<void>}\n */\nasync function select(option: string, input: HTMLElement): Promise<void> {\n await expand(input)\n\n const menuContainer = getSelectMenu(input)\n\n const optionElement = await within(menuContainer).findByLabelText(option)\n\n // click the option if exists; Select currently closes when an item is clicked.\n if (optionElement && optionElement.getAttribute('aria-selected') == 'false') {\n userEvent.click(optionElement)\n }\n\n // we collapse in the case the option was not clicked\n await collapse(input)\n}\n\n/**\n * Unselect the provided option(s), if they are present in the menu AND are selected.\n * Notice that we programatically expand the `Select` menu before select the item\n * @param {string} option - Label for the option to be unselected.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<void>}\n */\nasync function unselect(option: string, input: HTMLElement): Promise<void> {\n await expand(input)\n\n const menuContainer = getSelectMenu(input)\n\n const optionElement = await within(menuContainer).findByLabelText(option)\n\n // ensures that the option exists and IS selected\n if (optionElement && optionElement.getAttribute('aria-selected') == 'true') {\n userEvent.click(optionElement)\n }\n\n // we collapse in the case the option was not clicked\n await collapse(input)\n}\n\n/**\n * Clear the selection, if there are any options selected.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<void>}\n */\nasync function clear(input: HTMLElement): Promise<void> {\n await waitForPendingQuery(input)\n\n const searchContainer = getSelectSearchContainer(input)\n\n const clearButton = within(searchContainer).getByTestId('select-trigger-clear')\n\n act(() => {\n if (clearButton) {\n userEvent.click(clearButton)\n }\n })\n}\n\n/**\n * Perform search based on the given `query`. It will fail if the option is not found.\n * @param {string} query - Search term.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<void>}\n */\nasync function search(query: string, input: HTMLElement): Promise<void> {\n const selectContainer = getSelectContainer(input)\n\n fireEvent.change(input, { target: { value: query } })\n\n await within(selectContainer).findAllByRole('option')\n}\n\n/**\n * Get options elements currently available in the `Select` menu.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<HTMLElement[]>}\n */\nasync function getOptions(input: HTMLElement): Promise<HTMLElement[]> {\n await expand(input)\n\n const menuContainer = getSelectMenu(input)\n\n const options = within(menuContainer).queryAllByRole('option')\n\n await collapse(input)\n\n return options\n}\n\n/**\n * Get options elements currently selected in the `Select` menu.\n * @param {HTMLElement} input - You can refer to this element by the label you applied to the `Select`.\n * @returns {Promise<HTMLElement[]>}\n */\nasync function getSelectedOptions(input: HTMLElement): Promise<HTMLElement[]> {\n await expand(input)\n\n const menuContainer = getSelectMenu(input)\n let selectedOptions: HTMLElement[] = []\n\n try {\n selectedOptions = await within(menuContainer).findAllByRole('option', {\n selected: true,\n })\n } catch (err) {\n selectedOptions = []\n }\n\n await collapse(input)\n\n return selectedOptions\n}\n\nexport const selectEvent = {\n select,\n unselect,\n clear,\n search,\n expand,\n collapse,\n getOptions,\n getSelectedOptions,\n isMenuExpanded: isSelectMenuExpanded,\n}\n\nexport default selectEvent\n","import React, { ReactNode } from 'react'\nimport { render } from '@testing-library/react'\nimport type { RenderResult } from '@testing-library/react'\n\nimport type { DragDropFileContextValue } from '../../components/DragDropFile/types'\nimport { DragDropFileContext } from '../../components/DragDropFile/DragDropFile.context'\n\nconst defaultContextValueMock: DragDropFileContextValue = {\n fileList: [],\n onFilesAdded: jest.fn(),\n onRetryUpload: jest.fn(),\n onRemoveFile: jest.fn(),\n}\n\nconst renderWithDragDropFileProvider = (\n ui: ReactNode,\n customContext?: Partial<DragDropFileContextValue>\n): RenderResult => {\n const contextValue = { ...defaultContextValueMock, ...customContext }\n\n const renderedUi = (children: ReactNode) => (\n <DragDropFileContext.Provider value={contextValue}>{children}</DragDropFileContext.Provider>\n )\n\n return render(renderedUi(ui))\n}\n\nexport default renderWithDragDropFileProvider\n","import type { Interpolation, ThemeProps } from 'styled-components'\nimport { isFunction } from '@loadsmart/utils-function'\n\nimport { Alice } from '../../theming/themes'\nimport type { CustomTheme } from '../../theming'\nimport toArray from 'utils/toolset/toArray'\n\ntype ThemedInterpolation = Interpolation<ThemeProps<CustomTheme>>\n\n/**\n * Use this function to simulate the CSS that would be generated by styled-components\n * @param {Interpolation<ThemeProps<CustomTheme>>} styles - A `css` reference with interpolated styles\n * @returns {string} The final CSS\n */\nexport default function getInterpolatedStyles(styles: ThemedInterpolation): string {\n return toArray(styles)\n .map((interpolation) => {\n while (isFunction(interpolation)) {\n interpolation = interpolation({ theme: Alice })\n }\n\n return interpolation\n })\n .join('')\n}\n"],"names":["getContainerFromInput","input","parentNode","expand","datePickerContainer","queries","queryByRole","act","__awaiter","this","fireEvent","click","expect","findByRole","toBeInTheDocument","collapse","getByText","waitForElementToBeRemoved","datePickerEvent","getContainer","day","focus","dayElement","getByLabelText","getAttribute","clearButton","selectedDays","queryAllByRole","checked","DatePickerEvent","dateRangePickerEvent","pick","range","dateRangePickerContainer","rangeStart","rangeEnd","dateRangeStartInput","getByTestId","dateRangeEndInput","clear","getSelectedDates","getDropZoneFromInput","DragDropFileEvent","dragOver","dropzone","dragOverEvent","createEvent","dragLeave","dragLeaveEvent","dropFiles","files","fileDropEvent","drop","Object","defineProperty","value","toArray","isMousePressEvent","event","getMouseEventOptions_1","getMouseEventOptions","init","clickCount","_init","detail","buttons","convertMouseButtons","button","BUTTONS_NAMES","none","primary","secondary","auxiliary","BUTTON_NAMES","translateButtonNumber","from","_Object$entries$find","mapIn","mapOut","name","entries","find","i","prototype","hasOwnProperty","call","property","isElementType_1","isElementType","element","tag","props","namespaceURI","Array","isArray","includes","tagName","toLowerCase","every","k","v","isClickableInput_1","isClickableInput","_isElementType","CLICKABLE_INPUT_TYPES","type","require$$0","build","onlyDigitsValue","index","hours","slice","validHours","Math","min","parseInt","minuteCharacters","parsedMinutes","validMinutes","toString","padStart","buildTimeValue_1","buildTimeValue","replace","length","firstDigit","secondDigit","selectionRange","getSelectionRange","hasSelectionSupport","setSelectionRange","newSelectionStart","newSelectionEnd","selectionStart","selectionEnd","InputSelection","ownerDocument","createRange","selectNodeContents","firstChild","setStart","setEnd","selection","getSelection","removeAllRanges","addRange","selectionSupportType","Symbol","Boolean","_InputSelection","rangeCount","contains","focusNode","getRangeAt","startOffset","endOffset","isContentEditable_1","isContentEditable","hasAttribute","getValue_1","getValue","_isContentEditable","textContent","isValidDateValue_1","isValidDateValue","clone","cloneNode","isValidInputTimeValue_1","isValidInputTimeValue","timeValue","calculateNewValue_1","calculateNewValue","newEntry","_getValue","_getValue2","_selectionRange","deleteContent","prologEnd","max","prolog","substring","epilogStart","epilog","newValue","_isValidDateValue","_isValidInputTimeValue","require$$1","require$$2","require$$3","cursorPosition","isCursorAtEnd","isCursorAtStart","hasUnreliableEmptyValue_1","hasUnreliableEmptyValue","unreliableValueInputTypes","isEditable_1","editableInputTypes","isEditable","isEditableInput","readOnly","maxLength","getSpaceUntilMaxLength","_element$getAttribute","maxLengthSupportedTypes","supportsMaxLength","attr","test","Number","undefined","getSanitizedMaxLength","isDisabled_1","isDisabled","disabled","getActiveElement_1","getActiveElement","document","activeElement","shadowRoot","_isDisabled","body","isLabelWithInternallyDisabledControl_1","isLabelWithInternallyDisabledControl","control","selector","FOCUSABLE_SELECTOR","join","isFocusable_1","isFocusable","_isLabelWithInternallyDisabledControl","matches","_selector","eventWrapper_1","eventWrapper","cb","result","_dom","getConfig","isVisible_1","isVisible","window","_helpers","getWindowFromNode","el","_el","parentElement","getComputedStyle","display","isDocument_1","isDocument","nodeType","DOCUMENT_NODE","wait_1","wait","time","Promise","resolve","setTimeout","hasPointerEvents_1","hasPointerEvents","pointerEvents","hasFormSubmit_1","hasFormSubmit","form","querySelector","exports","_getMouseEventOptions","keys","forEach","key","enumerable","get","_isClickableInput","_buildTimeValue","_calculateNewValue","_cursorPosition","require$$4","require$$5","_hasUnreliableEmptyValue","require$$6","require$$7","_isEditable","require$$8","require$$9","require$$10","_maxLength","require$$11","require$$12","_getActiveElement","require$$13","_isFocusable","require$$14","require$$15","_eventWrapper","require$$16","require$$17","require$$18","_isVisible","require$$19","require$$20","_isDocument","require$$21","_wait","require$$22","_hasPointerEvents","require$$23","_hasFormSubmit","require$$24","hover_1","hover","skipPointerEventsCheck","_utils","Error","parentElements","getParentElements","reverse","pointerOver","pointerEnter","mouseOver","mouseEnter","pointerMove","mouseMove","unhover","pointerOut","pointerLeave","mouseOut","mouseLeave","currentElement","push","blur_1","blur","focus_1","click_1","dblClick","_hover","skipHover","_blur","_focus","clickElement","previousElement","focusedElement","getPreviouslyFocusedElement","pointerDown","mouseDown","closestFocusable","callback","findClosest","pointerUp","mouseUp","fireClick","parentLabel","closest","label","clickLabel","clickBooleanElement","mouseEventOptions","contextMenu","bracketDict","legacyModifiers","legacyKeyMap","readPrintableChar","text","pos","descriptor","assertDescriptor","consumedLength","releasePrevious","releaseSelf","repeat","readTag","startBracket","_text$slice$match","_text$slice$match$","_text$slice$match2","releasePreviousModifier","match","repeatModifier","releaseSelfModifier","expectedEndBracket","endBracket","getErrorMessage","filter","substr","hasReleaseSelf","getEnumValue","f","expected","found","getNextKeyDef_1","getNextKeyDef","options","_options$keyboardMap$","startBracketRepeated","RegExp","readNextDescriptor","keyDef","keyboardMap","def","_def$code","code","_def$key","_getEnumValue","mapLegacyKey","arrow","keydownBehavior","handle","_ref","direction","newPos","carryValue_1","carryValue","state","fireChangeForInputTimeIfValid_1","fireChangeForInputTimeIfValid","prevValue","timeNewEntry","change","target","fireInputEvent_1","fireInputEvent","eventOverrides","applyNative","setSelectionRangeAfterInput","isUnreliableValue","setSelectionRangeAfterInputHandler","initial","onBlur","propName","propValue","getOwnPropertyDescriptor","nativeDescriptor","constructor","_element$ownerDocumen","String","defaultView","addEventListener","initV","capture","once","_carryValue","_fireChangeForInputTimeIfValid","_fireInputEvent","_shared","_getValue$length","_getValue$length2","keDef","inputType","character","keypressBehavior","_keyDef$key","_state$carryValue","textToBeTyped","data","_keyDef$key2","_state$carryValue2","isValidToBeTyped","_keyDef$key3","_state$carryValue3","_newValue$match","_newValue$match2","oldValue","valueParts","split","appliedValue","_keyDef$key4","modifiers","shift","getEventProps","getKeyEventProps","_keyDef$keyCode","altKey","alt","ctrlKey","ctrl","metaKey","meta","shiftKey","keyCode","charCodeAt","getMouseEventProps","functional","preKeyupBehavior","preKeydownBehavior","postKeyupBehavior","keyupBehavior","_getEventProps","modifierKeys","Alt","Control","Shift","Meta","map","modKey","ctrlKeyDef","keyDown","caps","submit","href","querySelectorAll","_options$keyboardMap$2","keyUp","plugins","replaceBehavior","arrowKeys","_interopRequireWildcard","controlKeys","characterKeys","functionalKeys","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","newObj","hasPropertyDescriptor","desc","set","keyboardImplementation_1","keyboardImplementation","async","_state$repeatKey","getCurrentElement","getActive","repeatKey","_getNextKeyDef","applyPlugins","pressed","p","keyup","unpreventedDefault","carryChar","keydown","hasKeyPress","keyPress","keypress","delay","releaseAllKeys","unprevented","pluginCollection","plugin","DOM_KEY_LOCATION","types","keyMap","defaultKeyMap","_types","c","toUpperCase","location","LEFT","RIGHT","specialCharMap_1","specialCharMap","arrowLeft","arrowRight","arrowDown","arrowUp","enter","escape","delete","backspace","home","end","selectAll","space","whitespace","pageUp","pageDown","keyboard","_options$delay","promise","keyboardImplementationWrapper","asyncWrapper","then","catch","console","error","_specialCharMap","_keyboardImplementation","_keyMap","config","keyboardState","createKeyboardState","doc","autoModify","typeImplementation_1","typeImplementation","skipClick","skipAutoClose","initialSelectionStart","initialSelectionEnd","_click","_keyboard","type_1","_typeImplementation","clear_1","_element$selectionSta","_element$selectionEnd","elementType","_type","tab_1","tab","focusTrap","_focusTrap$ownerDocum","_focusTrap","focusableElements","enabledElements","orderedElements","idx","sort","a","b","diff","checkedRadio","prunedElements","prev","e","nextElement","currentIndex","elements","nextIndex","defaultIndex","getNextElement","findIndex","shiftKeyInit","tabKeyInit","continueToTab","keyUpTarget","upload_1","upload","fileOrFiles","applyAccept","_input$files","TypeError","clickInit","file","accept","wildcards","some","acceptToken","startsWith","endsWith","isAcceptableFile","multiple","_input$files2","item","inputFiles","iterator","next","done","bubbles","cancelable","composed","changeInit","selectOptions_1","selectOptions","deselectOptions","selectOptionsBase","select","values","getElementError","valArray","allOptions","selectedOptions","val","matchingOption","o","innerHTML","option","withPointerEvents","selectOption","selected","bind","paste_1","paste","isSupportedElement","_clear","_tab","_upload","_selectOptions","_paste","_default","getSelectContainer","getSelectMenu","nextSibling","getSelectTriggerHandle","getSelectSearchContainer","isSelectMenuExpanded","children","waitForPendingQuery","searchContainer","within","queryByTestId","timeout","triggerHandle","waitFor","toBeEnabled","userEvent","not","selectEvent","menuContainer","optionElement","findByLabelText","unselect","search","query","selectContainer","findAllByRole","getOptions","getSelectedOptions","err","isMenuExpanded","defaultContextValueMock","fileList","onFilesAdded","jest","fn","onRetryUpload","onRemoveFile","styles","interpolation","isFunction","theme","Alice","ui","customContext","contextValue","assign","render","React","createElement","DragDropFileContext","Provider"],"mappings":"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"}