intelicoreact 1.6.20 → 1.6.21

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 (272) hide show
  1. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.js +1 -102
  2. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +1 -89
  3. package/dist/Atomic/FormElements/Calendar/Calendar.js +1 -232
  4. package/dist/Atomic/FormElements/Calendar/Calendar.props.js +1 -3
  5. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +1 -101
  6. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +1 -70
  7. package/dist/Atomic/FormElements/Datepicker/Datepicker.js +1 -350
  8. package/dist/Atomic/FormElements/Datepicker/Datepicker.props.js +1 -3
  9. package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.js +1 -177
  10. package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.props.js +1 -3
  11. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +1 -561
  12. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +1 -20
  13. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +1 -405
  14. package/dist/Atomic/FormElements/FileLoader/FileLoader.js +1 -94
  15. package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.js +1 -105
  16. package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.js +1 -67
  17. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js +1 -247
  18. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +1 -160
  19. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +1 -193
  20. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +1 -135
  21. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.js +1 -116
  22. package/dist/Atomic/FormElements/Input/Input.js +1 -467
  23. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +1 -161
  24. package/dist/Atomic/FormElements/InputColor/InputColor.js +1 -64
  25. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +1 -166
  26. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +1 -354
  27. package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +1 -71
  28. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +1 -693
  29. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +1 -254
  30. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +1 -32
  31. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +1 -200
  32. package/dist/Atomic/FormElements/InputLink/InputLink.js +1 -99
  33. package/dist/Atomic/FormElements/InputMask/InputCarretPosition.js +1 -37
  34. package/dist/Atomic/FormElements/InputMask/InputMask.js +1 -1214
  35. package/dist/Atomic/FormElements/InputMask/config.js +1 -15
  36. package/dist/Atomic/FormElements/InputMask/functions.js +1 -58
  37. package/dist/Atomic/FormElements/InputMask2/InputMask2.js +1 -674
  38. package/dist/Atomic/FormElements/InputMask2/config.js +1 -15
  39. package/dist/Atomic/FormElements/InputMask2/functions.js +1 -58
  40. package/dist/Atomic/FormElements/InputMask3/InputMask3.js +1 -766
  41. package/dist/Atomic/FormElements/InputMask3/config.js +1 -15
  42. package/dist/Atomic/FormElements/InputMask3/functions.js +1 -58
  43. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +1 -114
  44. package/dist/Atomic/FormElements/InputsRow/InputsRow.js +1 -140
  45. package/dist/Atomic/FormElements/Label/Label.js +1 -82
  46. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +1 -506
  47. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +1 -45
  48. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +1 -331
  49. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +1 -66
  50. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +1 -80
  51. package/dist/Atomic/FormElements/RadioInput/RadioInput.js +1 -64
  52. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +1 -54
  53. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +1 -183
  54. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +1 -209
  55. package/dist/Atomic/FormElements/RangeList/RangeList.js +1 -175
  56. package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +1 -43
  57. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +1 -443
  58. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +1 -858
  59. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +1 -39
  60. package/dist/Atomic/FormElements/Switcher/Switcher.js +1 -59
  61. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +1 -50
  62. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +1 -47
  63. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +1 -96
  64. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +1 -40
  65. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +1 -64
  66. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +1 -170
  67. package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +1 -202
  68. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +1 -67
  69. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +1 -115
  70. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +1 -826
  71. package/dist/Atomic/FormElements/Text/Text.js +1 -125
  72. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +1 -45
  73. package/dist/Atomic/FormElements/Textarea/Textarea.js +1 -80
  74. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +1 -176
  75. package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +1 -62
  76. package/dist/Atomic/FormElements/TimeRange/TimeRange.js +1 -127
  77. package/dist/Atomic/FormElements/UserContacts/UserContacts.js +1 -220
  78. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +1 -83
  79. package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +1 -82
  80. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +1 -101
  81. package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +1 -29
  82. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +1 -113
  83. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +1 -30
  84. package/dist/Atomic/Layout/Header/Header.js +1 -85
  85. package/dist/Atomic/Layout/Spinner/Spinner.js +1 -39
  86. package/dist/Atomic/UI/Accordion/Accordion.js +1 -118
  87. package/dist/Atomic/UI/Accordion/AccordionItem.js +1 -181
  88. package/dist/Atomic/UI/AccordionTable/AccordionTable.js +1 -238
  89. package/dist/Atomic/UI/AccordionText/AccordionText.js +1 -69
  90. package/dist/Atomic/UI/AdvancedTag/AdvTag.js +1 -207
  91. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +1 -56
  92. package/dist/Atomic/UI/Alert/Alert.js +1 -72
  93. package/dist/Atomic/UI/Arrow/Arrow.js +1 -132
  94. package/dist/Atomic/UI/Box/Box.js +1 -52
  95. package/dist/Atomic/UI/Button/Button.js +1 -89
  96. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +1 -72
  97. package/dist/Atomic/UI/Chart/Chart.js +1 -172
  98. package/dist/Atomic/UI/Chart/partial/Chart.constants.js +1 -95
  99. package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +1 -80
  100. package/dist/Atomic/UI/Chart/partial/datasetSetters.js +1 -188
  101. package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +1 -335
  102. package/dist/Atomic/UI/Chart/partial/optionsSetters.js +1 -43
  103. package/dist/Atomic/UI/Chart/partial/utils.js +1 -60
  104. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +1 -109
  105. package/dist/Atomic/UI/DateTime/DateTime.js +1 -57
  106. package/dist/Atomic/UI/DebugContainer/DebugContainer.js +1 -44
  107. package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +1 -15
  108. package/dist/Atomic/UI/DoubleString/DoubleString.js +1 -102
  109. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +1 -226
  110. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +1 -221
  111. package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +1 -106
  112. package/dist/Atomic/UI/Hint/Hint.js +1 -193
  113. package/dist/Atomic/UI/Hint/partials/_utils.js +1 -51
  114. package/dist/Atomic/UI/Modal/Modal.js +1 -188
  115. package/dist/Atomic/UI/Modal/ModalHOC.js +1 -72
  116. package/dist/Atomic/UI/Modal/partials/ModalFooter.js +1 -46
  117. package/dist/Atomic/UI/Modal/partials/ModalTitle.js +1 -83
  118. package/dist/Atomic/UI/Modal/partials/useMobileModal.js +1 -200
  119. package/dist/Atomic/UI/MonoAccordion/MonoAccordion._test.js +1 -75
  120. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +1 -80
  121. package/dist/Atomic/UI/NavLine/NavLine.js +1 -293
  122. package/dist/Atomic/UI/PageTitle/PageTitle.js +1 -75
  123. package/dist/Atomic/UI/PieChart/PieChart.js +1 -42
  124. package/dist/Atomic/UI/Price/Price.js +1 -22
  125. package/dist/Atomic/UI/PriceRange/PriceRange.js +1 -36
  126. package/dist/Atomic/UI/ProgressLine/ProgressLine.js +1 -71
  127. package/dist/Atomic/UI/Status/Status.js +1 -59
  128. package/dist/Atomic/UI/Table/Partials/TdCell.js +1 -87
  129. package/dist/Atomic/UI/Table/Partials/TdHeader.js +1 -38
  130. package/dist/Atomic/UI/Table/Partials/TdRow.js +1 -99
  131. package/dist/Atomic/UI/Table/Partials/TdTitle.js +1 -52
  132. package/dist/Atomic/UI/Table/Table.js +1 -63
  133. package/dist/Atomic/UI/Table/TdTypes/TdActions.js +1 -80
  134. package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +1 -28
  135. package/dist/Atomic/UI/Table/TdTypes/TdRange.js +1 -13
  136. package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +1 -53
  137. package/dist/Atomic/UI/Tag/Tag.js +1 -160
  138. package/dist/Atomic/UI/TagList/TagList.js +1 -251
  139. package/dist/Atomic/UI/UserBox/UserBox.js +1 -73
  140. package/dist/Atomic/UI/WizardStepper/constructor.js +1 -84
  141. package/dist/Atomic/UI/WizardStepper/index.js +1 -3
  142. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +1 -37
  143. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.js +1 -3
  144. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +1 -61
  145. package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.js +1 -3
  146. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +1 -39
  147. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +1 -3
  148. package/dist/Atomic/UI/WizardStepper/ui/icons.js +1 -49
  149. package/dist/Atomic/UI/WizardStepper/ui/index.js +1 -3
  150. package/dist/Classes/AbortableFetch.js +1 -454
  151. package/dist/Classes/AnimatedHandler.js +1 -47
  152. package/dist/Classes/RESTAPI/index.js +1 -228
  153. package/dist/Classes/RESTAPI/partials/AbortableFetch.js +1 -457
  154. package/dist/Classes/RESTAPI/partials/ApiBase.js +1 -48
  155. package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +1 -112
  156. package/dist/Classes/RESTAPI/partials/ApiUtils.js +1 -189
  157. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +1 -252
  158. package/dist/Classes/RESTAPI/partials/Utils.js +1 -92
  159. package/dist/Classes/RESTAPI/partials/_outerDependencies.js +1 -3
  160. package/dist/Classes/RESTAPI/partials/_utils.js +1 -197
  161. package/dist/Constants/index.constants.js +1 -78
  162. package/dist/Functions/Portal.js +1 -22
  163. package/dist/Functions/customEventListener.js +1 -96
  164. package/dist/Functions/dateTime.js +1 -149
  165. package/dist/Functions/fieldValueFormatters.js +1 -405
  166. package/dist/Functions/guards/assertions.js +1 -66
  167. package/dist/Functions/guards/safeValue.js +1 -30
  168. package/dist/Functions/guards/typeGuards.js +1 -116
  169. package/dist/Functions/hooks/useFormFieldsChangesManager.js +1 -95
  170. package/dist/Functions/locale/createTranslator.js +1 -32
  171. package/dist/Functions/operations.js +1 -130
  172. package/dist/Functions/presets/inputMaskPresets.js +1 -170
  173. package/dist/Functions/presets/inputPresets.js +1 -60
  174. package/dist/Functions/presets/mobileKeyboardTypesPresets.js +1 -45
  175. package/dist/Functions/schemas.js +1 -31
  176. package/dist/Functions/useBodyScrollLock.js +1 -17
  177. package/dist/Functions/useClickOutside.js +1 -15
  178. package/dist/Functions/useDebounce.js +1 -17
  179. package/dist/Functions/useFieldFocus.js +1 -84
  180. package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +1 -39
  181. package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +1 -159
  182. package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +1 -78
  183. package/dist/Functions/useFormTools/functions/General.js +1 -134
  184. package/dist/Functions/useFormTools/functions/RenderFields.js +1 -111
  185. package/dist/Functions/useFormTools/functions/usePrevious.js +1 -12
  186. package/dist/Functions/useFormTools/index.js +1 -778
  187. package/dist/Functions/useInputHighlightError.js +1 -67
  188. package/dist/Functions/useIsMobile/useIsMobile.js +1 -53
  189. package/dist/Functions/useKeyPress/useHandleKeyPress.js +1 -21
  190. package/dist/Functions/useKeyPress/useKeyPress.js +1 -75
  191. package/dist/Functions/useLocalStorage.js +1 -34
  192. package/dist/Functions/useLocationParams.js +1 -27
  193. package/dist/Functions/useMediaQuery.js +1 -17
  194. package/dist/Functions/useMetaInfo.js +1 -43
  195. package/dist/Functions/useMouseUpOutside.js +1 -16
  196. package/dist/Functions/useOnlineStatus.js +1 -29
  197. package/dist/Functions/usePasswordChecker.js +1 -110
  198. package/dist/Functions/usePrevious.js +1 -12
  199. package/dist/Functions/useResize.js +1 -31
  200. package/dist/Functions/useScrollTo.js +1 -17
  201. package/dist/Functions/useToggle.js +1 -17
  202. package/dist/Functions/utils.js +1 -522
  203. package/dist/Langs.js +1 -168
  204. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +1 -21
  205. package/dist/Molecular/CustomIcons/components/AlertCircle.js +1 -23
  206. package/dist/Molecular/CustomIcons/components/AppStore.js +1 -29
  207. package/dist/Molecular/CustomIcons/components/Arrow.js +1 -32
  208. package/dist/Molecular/CustomIcons/components/ArrowDown.js +1 -17
  209. package/dist/Molecular/CustomIcons/components/ArrowLeft.js +1 -22
  210. package/dist/Molecular/CustomIcons/components/ArrowRight.js +1 -22
  211. package/dist/Molecular/CustomIcons/components/ArrowUp.js +1 -17
  212. package/dist/Molecular/CustomIcons/components/Bell.js +1 -15
  213. package/dist/Molecular/CustomIcons/components/Button.js +1 -12
  214. package/dist/Molecular/CustomIcons/components/Campaigns.js +1 -16
  215. package/dist/Molecular/CustomIcons/components/Check.js +1 -14
  216. package/dist/Molecular/CustomIcons/components/Check2.js +1 -12
  217. package/dist/Molecular/CustomIcons/components/ChevronDown.js +1 -12
  218. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +1 -11
  219. package/dist/Molecular/CustomIcons/components/ChevronLeft.js +1 -11
  220. package/dist/Molecular/CustomIcons/components/ChevronRight.js +1 -11
  221. package/dist/Molecular/CustomIcons/components/ChevronUp.js +1 -11
  222. package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +1 -27
  223. package/dist/Molecular/CustomIcons/components/Close.js +1 -14
  224. package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +1 -17
  225. package/dist/Molecular/CustomIcons/components/Delete.js +1 -16
  226. package/dist/Molecular/CustomIcons/components/Edit.js +1 -15
  227. package/dist/Molecular/CustomIcons/components/Email.js +1 -31
  228. package/dist/Molecular/CustomIcons/components/FinturfLogo.js +1 -18
  229. package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +1 -35
  230. package/dist/Molecular/CustomIcons/components/Flows.js +1 -15
  231. package/dist/Molecular/CustomIcons/components/Gift.js +1 -25
  232. package/dist/Molecular/CustomIcons/components/GoogleAuth.js +1 -29
  233. package/dist/Molecular/CustomIcons/components/GooglePlay.js +1 -29
  234. package/dist/Molecular/CustomIcons/components/HelpCircle.js +1 -19
  235. package/dist/Molecular/CustomIcons/components/HelpCircle2.js +1 -20
  236. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +1 -19
  237. package/dist/Molecular/CustomIcons/components/Home.js +1 -16
  238. package/dist/Molecular/CustomIcons/components/Home2.js +1 -22
  239. package/dist/Molecular/CustomIcons/components/Key.js +1 -23
  240. package/dist/Molecular/CustomIcons/components/Landers.js +1 -20
  241. package/dist/Molecular/CustomIcons/components/Lock.js +1 -15
  242. package/dist/Molecular/CustomIcons/components/Mail.js +1 -26
  243. package/dist/Molecular/CustomIcons/components/Mastercard.js +1 -73
  244. package/dist/Molecular/CustomIcons/components/Minus.js +1 -25
  245. package/dist/Molecular/CustomIcons/components/Offers.js +1 -16
  246. package/dist/Molecular/CustomIcons/components/Pause.js +1 -28
  247. package/dist/Molecular/CustomIcons/components/PayPal.js +1 -41
  248. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +1 -28
  249. package/dist/Molecular/CustomIcons/components/Phone.js +1 -30
  250. package/dist/Molecular/CustomIcons/components/Play.js +1 -25
  251. package/dist/Molecular/CustomIcons/components/Plus.js +1 -25
  252. package/dist/Molecular/CustomIcons/components/Profile.js +1 -16
  253. package/dist/Molecular/CustomIcons/components/QRCode.js +1 -29
  254. package/dist/Molecular/CustomIcons/components/Rectangle.js +1 -12
  255. package/dist/Molecular/CustomIcons/components/Revert.js +1 -13
  256. package/dist/Molecular/CustomIcons/components/Star.js +1 -14
  257. package/dist/Molecular/CustomIcons/components/Star2.js +1 -16
  258. package/dist/Molecular/CustomIcons/components/TrafficSources.js +1 -14
  259. package/dist/Molecular/CustomIcons/components/Trash.js +1 -15
  260. package/dist/Molecular/CustomIcons/components/TrashRed.js +1 -15
  261. package/dist/Molecular/CustomIcons/components/Triggers.js +1 -15
  262. package/dist/Molecular/CustomIcons/components/User.js +1 -25
  263. package/dist/Molecular/CustomIcons/components/Visa.js +1 -31
  264. package/dist/Molecular/CustomIcons/components/X.js +1 -12
  265. package/dist/Molecular/CustomIcons/index.js +1 -61
  266. package/dist/Molecular/FormElement/FormElement.js +1 -54
  267. package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +1 -184
  268. package/dist/Molecular/FormWithDependOn/partials/_utils.js +1 -53
  269. package/dist/Molecular/InputAddress/InputAddress.js +1 -620
  270. package/dist/Molecular/InputPassword/InputPassword.js +1 -48
  271. package/dist/index.js +1 -1
  272. package/package.json +1 -1
@@ -1,1214 +1 @@
1
- /* eslint-disable no-return-await */
2
- /* eslint-disable no-extra-boolean-cast */
3
- /* eslint-disable no-unsafe-optional-chaining */
4
- /* eslint-disable comma-dangle */
5
- /* eslint-disable array-callback-return */
6
- /* eslint-disable no-continue */
7
- /* eslint-disable no-unused-expressions */
8
- /* eslint-disable no-empty */
9
- /* eslint-disable no-unreachable */
10
- /* eslint-disable default-case */
11
- /* eslint-disable no-use-before-define */
12
- /* eslint-disable no-unused-vars */
13
- /* eslint-disable default-param-last */
14
- import React, { createRef, useEffect, useRef, useState } from "react";
15
-
16
- import cn from "classnames";
17
- import { X } from "react-feather";
18
-
19
- import Hint from "../../UI/Hint/Hint";
20
-
21
- import { KEYBOARD_SERVICE_KEYS } from "./../../../Constants/index.constants.js";
22
- // import { KEYBOARD_SERVICE_KEYS } from './index.constants.js';
23
- import { setCaretPosition } from "./InputCarretPosition";
24
- import {
25
- ANDROID_CHROME_TEXT_CODE,
26
- DEFAULT_ERRORS,
27
- DIGIT_MASK_CHAR,
28
- EXCLUDED_KEYS,
29
- LOWERCASE_LETTER_MASK_CHAR,
30
- SPACE_CHAR,
31
- UPPERCASE_LETTER_MASK_CHAR,
32
- } from "./config";
33
- import {
34
- copyToClipboard,
35
- getSelectionText,
36
- isDigit,
37
- isDigitMaskChar,
38
- isLetter,
39
- isLetterMaskChar,
40
- isLowerCaseLetter,
41
- isUpperCaseLetter,
42
- resetSelectionText,
43
- selectElementContents,
44
- voidFn,
45
- } from "./functions";
46
-
47
- import "./InputMask.scss";
48
-
49
- export default function InputMask({
50
- maskPattern,
51
- maskPatternPlaceholder,
52
- maskPlaceholder,
53
- maskDigitPlaceholder,
54
- maskLetterPlaceholder,
55
- usePatternPlaceholder,
56
- disabled,
57
- maskAsPlaceholder = true,
58
-
59
- maxEditableLen = -1,
60
-
61
- isFocusedDefault = false,
62
- isClearable,
63
- isCaseSensitive,
64
- adaptTextCase,
65
- isUseAutoSelect = true,
66
-
67
- icon,
68
- showIcon,
69
- isIconLeft,
70
- isIconRight,
71
- value,
72
- blinkErrors = true,
73
- blinkDuration = 100,
74
- showErrors = false,
75
-
76
- className = "",
77
- errors: customErrors = DEFAULT_ERRORS,
78
- error: customError = "",
79
- ref,
80
-
81
- onChange: onChangeProp = () => {},
82
- onFocus: onFocusProp = () => {},
83
- onBlur: onBlurProp = () => {},
84
- onKeyDown: onKeyDownProp = () => {},
85
-
86
- imitateTypingOnPaste = false,
87
- imitateTypingOnPasteDelay = 100,
88
-
89
- showHint = false,
90
- hintText = "",
91
- hintClassName = "",
92
- isHintRight = true,
93
- isHintLeft = false,
94
- hintPosition = "right",
95
-
96
- hideMaskOnBlur = true,
97
- returnMaskedValue = false,
98
-
99
- name,
100
- testId = "input-mask",
101
- } = {}) {
102
- const errors = {
103
- ...DEFAULT_ERRORS,
104
- ...customErrors,
105
- };
106
-
107
- const [isMaskRendered, setMaskRendered] = useState(false);
108
-
109
- const inputRef = useRef(null);
110
-
111
- const [isMouseDown, setIsMouseDown] = useState(false);
112
- const [isFocused, setFocused] = useState(false);
113
-
114
- const [isInitValue, setIsInitValue] = useState(false);
115
-
116
- const inputThrottlingTimeout = 20;
117
- const [isInputThrottled, setIsInputThrottled] = useState(false);
118
-
119
- // ERRORS MANAGEMENT FUNCTIONS | START //
120
- const [isError, setError] = useState(false);
121
- const [blinkError, setBlinkError] = useState(false);
122
- const [errorMessage, setErrorMessage] = useState(errors.default);
123
- const clearErrorMessage = () => setErrorMessage(errors.default);
124
- // ERRORS MANAGEMENT FUNCTIONS | END //
125
-
126
- // SELECTION MANAGEMENT FUNCTIONS | START //
127
- const [isSelecting, setIsSelecting] = useState(false);
128
- const [selectedText, setSelectedText] = useState("");
129
-
130
- const [selectionStartX, setSelectionStartX] = useState(null);
131
- const [selectionEndX, setSelectionEndX] = useState(null);
132
- // SELECTION MANAGEMENT FUNCTIONS | END //
133
-
134
- // SERVICE WATCHERS MANAGEMENT FUNCTIONS | START //
135
- const [serviceWatchers, setServiceWatchers] = useState([]);
136
- const pushServiceWatcher = (fn) =>
137
- setServiceWatchers((state) => [...state, { fn, dt: Date.now() }]);
138
- const popServiceWatcher = () => {
139
- const [poped, ...rest] = serviceWatchers;
140
- setServiceWatchers(rest);
141
- return poped.fn || voidFn;
142
- };
143
- const serviceWatchersWorker = () => {
144
- popServiceWatcher()();
145
- };
146
- useEffect(() => {
147
- if (serviceWatchers.length) serviceWatchersWorker();
148
- }, [serviceWatchers]);
149
- // SERVICE WATCHERS MANAGEMENT FUNCTIONS | END //
150
-
151
- // INNER VALUE MANAGEMENT FUNCTIONS | START //
152
- const [innerValue, setInnerValue] = useState([]);
153
- const [undoValue, setUndoValue] = useState("");
154
- const [redoValue, setRedoValue] = useState(null);
155
- const [isUndoValueBlocked, setIsUndoValueBlocked] = useState(false);
156
-
157
- const addInnerValueChar = ({ char, i = null, data = {} }) => {
158
- setInnerValue((state) => {
159
- const stateCopy = [...state];
160
- const charObj = getCharObj(char, data);
161
-
162
- stateCopy.push(charObj);
163
-
164
- return stateCopy;
165
- });
166
- };
167
- const updateInnerValueChar = ({ char = null } = {}, i) => {
168
- setInnerValue((state) => {
169
- if (!state[i]) return state;
170
-
171
- const stateCopy = [...state];
172
-
173
- if (!stateCopy[i].isSpecialSymbol && char !== null)
174
- stateCopy[i].char = char;
175
-
176
- return stateCopy;
177
- });
178
- };
179
- const resetInnerValue = () => {
180
- innerValue.map((v, i) => updateInnerValueChar({ char: "" }, i));
181
- };
182
- // INNER VALUE MANAGEMENT FUNCTIONS | END //
183
-
184
- // CHECKERS | START //
185
- const isValidChar = ({ char: key, i, disableErrors = false }) => {
186
- const maskChar = getMaskCharByIndex(i);
187
-
188
- switch (maskChar) {
189
- case DIGIT_MASK_CHAR:
190
- if (!isDigit(key)) {
191
- if (!disableErrors) {
192
- setErrorMessage(errors.onlyDigit);
193
- }
194
- return false;
195
- }
196
- break;
197
-
198
- case UPPERCASE_LETTER_MASK_CHAR:
199
- if (adaptTextCase) key = key.toUpperCase();
200
-
201
- if (!isLetter(key) && !isCaseSensitive) {
202
- if (!disableErrors) setErrorMessage(errors.onlyLetter);
203
- return false;
204
- }
205
-
206
- if (isCaseSensitive && !isUpperCaseLetter(key)) {
207
- if (!disableErrors) setErrorMessage(errors.onlyUpperCase);
208
- return false;
209
- }
210
- break;
211
- case LOWERCASE_LETTER_MASK_CHAR:
212
- if (adaptTextCase) key = key.toLowerCase();
213
-
214
- if (!isLetter(key) && !isCaseSensitive) {
215
- if (!disableErrors) setErrorMessage(errors.onlyLetter);
216
- return false;
217
- }
218
-
219
- if (isCaseSensitive && !isLowerCaseLetter(key)) {
220
- if (!disableErrors) setErrorMessage(errors.onlyLowerCase);
221
- return false;
222
- }
223
- break;
224
-
225
- default:
226
- return false;
227
- }
228
-
229
- return true;
230
- };
231
- const isSpecialSymbolMaskChar = ({ char }) => {
232
- return !isDigitMaskChar(char) && !isLetterMaskChar(char);
233
- };
234
- const isSpecialSymbolChar = ({ char }) => {
235
- return !isDigit(char) && !isLetter(char);
236
- };
237
- // CHECKERS | END //
238
-
239
- // GETTERS | START //
240
- const getCharObj = (char, data = {}) => {
241
- const isSpecialSymbol = isSpecialSymbolChar({ char });
242
- const isSpecialSymbolMask = isSpecialSymbolMaskChar({ char });
243
-
244
- if (char === " ") char = SPACE_CHAR;
245
-
246
- return {
247
- char: isSpecialSymbolMask ? char : "",
248
- maskChar: char,
249
- isSpecialSymbol: isSpecialSymbolMask,
250
- isCharSymbol: !isSpecialSymbol && char !== "" && isSpecialSymbolMask,
251
- ref: createRef(),
252
- ...data,
253
- };
254
- };
255
- const getCharByIndex = (i) => {
256
- return innerValue[i] ? { ...innerValue[i] } : undefined;
257
- };
258
- const getMaskCharByIndex = (i) => {
259
- return innerValue[i]?.maskChar || undefined;
260
- };
261
- const getSelectStartIndex = () => {
262
- if (selectionStartX === selectionEndX) return 0;
263
-
264
- const minX =
265
- selectionStartX < selectionEndX ? selectionStartX : selectionEndX;
266
- const maxX =
267
- selectionStartX > selectionEndX ? selectionStartX : selectionEndX;
268
-
269
- const { index } = innerValue.reduce(
270
- (resObj, { char, ref }, index) => {
271
- if (ref?.current === null) return resObj;
272
-
273
- const { left: charX, width: charWidth } =
274
- ref?.current?.getBoundingClientRect();
275
- const charCenterX = charX + charWidth / 2;
276
-
277
- // If Char X-Coord Out Of Range
278
- if (!charX || minX > charCenterX || maxX < charCenterX) return resObj;
279
-
280
- if (
281
- resObj.index === null ||
282
- (minX <= charCenterX &&
283
- charCenterX >= maxX &&
284
- charCenterX < resObj.charX)
285
- )
286
- return { index, charX: charCenterX };
287
-
288
- return resObj;
289
- },
290
- { index: null, charX: null },
291
- );
292
-
293
- return index;
294
- };
295
- const getPlaceholderCharByIndex = (i) => {
296
- const { maskChar } = getCharByIndex(i);
297
-
298
- if (usePatternPlaceholder) {
299
- return maskPatternPlaceholder[i] || maskPlaceholder;
300
- } else {
301
- if (isDigitMaskChar(maskChar) && maskDigitPlaceholder)
302
- return maskDigitPlaceholder;
303
- if (isLetterMaskChar(maskChar) && maskLetterPlaceholder)
304
- return maskLetterPlaceholder;
305
- return maskPlaceholder;
306
- }
307
- };
308
- const getInnerValueAsString = ({ replaceSpace = false } = {}) => {
309
- const result = innerValue
310
- .slice(0, innerValue.length - 1)
311
- .map(({ char, maskChar }, i) => {
312
- return char === "" ? getPlaceholderCharByIndex(i) || maskChar : char;
313
- })
314
- .join("");
315
-
316
- return replaceSpace ? result?.replace(/\u00A0/g, " ") : result;
317
- };
318
- const getClearInnerValueAsString = (start = 0) => {
319
- return innerValue
320
- .filter((charObj, i) => i >= start)
321
- .reduce(
322
- (result, { char, maskChar, isSpecialSymbol, isCharSymbol }, i, arr) => {
323
- if (
324
- (char !== maskChar && char !== "") ||
325
- !isSpecialSymbol ||
326
- isCharSymbol
327
- )
328
- result += char; // || isCharSymbol
329
- return result;
330
- },
331
- "",
332
- );
333
- };
334
- const getLastTypedIndex = () => {
335
- return (
336
- innerValue.reduce((lastIndex, { char, isSpecialSymbol }, i) => {
337
- if (
338
- (!isSpecialSymbol && char !== SPACE_CHAR && char !== "") ||
339
- lastIndex === null
340
- )
341
- lastIndex = i;
342
- return lastIndex;
343
- }, -1) + 1
344
- );
345
- };
346
- // GETTERS | END //
347
-
348
- // SETTERS | START //
349
- const setFocusOnChar = (i, prevIndex) => {
350
- const charObj = getCharByIndex(i);
351
-
352
- if (!charObj) return false;
353
-
354
- const { ref, isSpecialSymbol } = charObj;
355
-
356
- if (!ref) return false;
357
-
358
- if (
359
- (maxEditableLen !== -1 ? i < maxEditableLen : true) &&
360
- isSpecialSymbol &&
361
- i < innerValue.length - 1
362
- ) {
363
- return prevIndex > i
364
- ? onArrowLeftDown(null, i)
365
- : onArrowRightDown(null, i);
366
- }
367
-
368
- if (maxEditableLen !== -1 && i > maxEditableLen) {
369
- setFocusOnChar(maxEditableLen, i);
370
- return false;
371
- }
372
-
373
- ref.current?.focus();
374
-
375
- setTimeout(() => setCaretPosition(ref.current, 0), 10);
376
-
377
- return true;
378
- };
379
- // SETTERS | END //
380
-
381
- ///--- Event Handlers ---///
382
-
383
- // SERVICE KEYS HANDLERS | START //
384
- const onArrowLeftDown = (e, i) => setFocusOnChar(i - 1, i);
385
- const onArrowRightDown = (e, i) => {
386
- const key = e?.key || null;
387
-
388
- if (maskAsPlaceholder && i > getLastTypedIndex()) {
389
- return setFocusOnChar(getLastTypedIndex() + 1, i);
390
- }
391
- // If Current Index Equals LastTyped Index in MaskAsPlaceholder Mode
392
- if (maskAsPlaceholder && i === getLastTypedIndex() && key === "ArrowRight")
393
- return false;
394
-
395
- return setFocusOnChar(i + 1, i);
396
- };
397
- const onBackspaceDown = (e, i) => {
398
- if (!isUndoValueBlocked) {
399
- setUndoValue(getClearInnerValueAsString());
400
- setIsUndoValueBlocked(true);
401
- }
402
-
403
- if (getSelectionText().length) return deleteSelectedText();
404
-
405
- const prevIndex = i - 1;
406
- const charObj = getCharByIndex(prevIndex);
407
-
408
- if (!charObj) return false;
409
-
410
- const { isSpecialSymbol } = charObj;
411
-
412
- if (isSpecialSymbol) return onBackspaceDown(e, prevIndex);
413
-
414
- if (maskAsPlaceholder) {
415
- const newText = innerValue
416
- .slice(0, prevIndex)
417
- .concat(
418
- innerValue.slice(
419
- i,
420
- maxEditableLen !== -1 ? maxEditableLen : innerValue.length,
421
- ),
422
- )
423
- .reduce((text, { char }) => {
424
- return text.concat(char);
425
- }, "");
426
-
427
- resetInnerValue();
428
- onPaste({ text: newText }, 0);
429
- } else {
430
- updateInnerValueChar({ char: "" }, prevIndex);
431
- }
432
-
433
- setFocusOnChar(prevIndex, i);
434
-
435
- return true;
436
- };
437
- const onDeleteDown = (e, i) => {
438
- if (!isUndoValueBlocked) {
439
- setUndoValue(getClearInnerValueAsString());
440
- setIsUndoValueBlocked(true);
441
- }
442
-
443
- if (getSelectionText().length) return deleteSelectedText();
444
-
445
- const nextIndex = i + 1;
446
- const charObj = getCharByIndex(i);
447
-
448
- if (!charObj) return false;
449
-
450
- const { char, isSpecialSymbol } = charObj;
451
-
452
- if (isSpecialSymbol) return onDeleteDown(e, i + 1);
453
-
454
- if (char === "") return false;
455
-
456
- if (maskAsPlaceholder) {
457
- const newText = innerValue
458
- .slice(0, i)
459
- .concat(
460
- innerValue.slice(
461
- nextIndex,
462
- maxEditableLen !== -1 ? maxEditableLen : innerValue.length,
463
- ),
464
- )
465
- .reduce((text, { char }) => {
466
- return text.concat(char);
467
- }, "");
468
-
469
- resetInnerValue();
470
- onPaste({ text: newText }, 0);
471
- setFocusOnChar(i, i);
472
- } else {
473
- updateInnerValueChar({ char: "" }, i);
474
- setFocusOnChar(nextIndex, i);
475
- }
476
-
477
- return true;
478
- };
479
- const onHomeDown = (e, i) => setFocusOnChar(0, -1);
480
- const onEndDown = (e, i) =>
481
- setTimeout(
482
- () => setFocusOnChar(maskAsPlaceholder ? getLastTypedIndex() : 0, 0),
483
- 10,
484
- );
485
- // SERVICE KEYS HANDLERS | END //
486
-
487
- // GENERAL EVENT HANDLERS | START //
488
- const handleServiceKeyDown = (e, i) => {
489
- const { key } = e;
490
-
491
- switch (key) {
492
- case "ArrowLeft":
493
- return onArrowLeftDown(e, i);
494
- break;
495
-
496
- case "ArrowRight":
497
- return onArrowRightDown(e, i);
498
- break;
499
-
500
- case "Backspace":
501
- return onBackspaceDown(e, i);
502
- break;
503
-
504
- case "Delete":
505
- return onDeleteDown(e, i);
506
- break;
507
-
508
- case "Home":
509
- return onHomeDown(e, i);
510
- break;
511
-
512
- case "End":
513
- return onEndDown(e, i);
514
- break;
515
-
516
- default:
517
- return true;
518
- break;
519
- }
520
- };
521
- const handleKeyDown = async (
522
- e,
523
- i,
524
- { disableErrors = false, disableIsSelectingCheck = false } = {},
525
- ) => {
526
- if (isSelecting && !disableIsSelectingCheck) {
527
- deleteSelectedText();
528
- resetSelectionText();
529
- setIsSelecting(false);
530
- setTimeout(
531
- () =>
532
- handleKeyDown(e, getSelectStartIndex(), {
533
- disableErrors,
534
- disableIsSelectingCheck: true,
535
- }),
536
- 10,
537
- );
538
- return null;
539
- }
540
-
541
- try {
542
- e.stopPropagation();
543
- e.preventDefault();
544
- } catch (e) {}
545
-
546
- if (isInputThrottled) return false;
547
-
548
- setIsInputThrottled(true);
549
-
550
- let { key, keyCode } = e;
551
-
552
- const charObj = getCharByIndex(i);
553
-
554
- // Android Text Typing FIX
555
- // eslint-disable-next-line eqeqeq
556
- if (keyCode == ANDROID_CHROME_TEXT_CODE) {
557
- const { ref: charRef } = charObj;
558
- key = await new Promise((resolve) => {
559
- setTimeout(() => {
560
- //Typed Text
561
- if (charRef?.current?.innerText?.length >= 2) {
562
- const [key, prevChar] = charRef?.current?.innerText;
563
- charRef.current.innerText = prevChar;
564
- resolve(key);
565
- } else {
566
- resolve(null);
567
- }
568
- }, 1);
569
- });
570
- }
571
-
572
- if (!charObj || i === innerValue.length - 1) return false;
573
-
574
- if (maskAsPlaceholder && i > getLastTypedIndex() + 1)
575
- return await handleKeyDown(
576
- e,
577
- getLastTypedIndex() === 0 ? 0 : getLastTypedIndex() + 1,
578
- { disableErrors },
579
- );
580
-
581
- const { isSpecialSymbol, maskChar, isReadOnly } = charObj;
582
-
583
- if (isReadOnly) return false;
584
-
585
- //IF DEFAULT CHAR IS SPACE, SWITCH TO NEXT INPUT
586
- if (maskChar === SPACE_CHAR) return await handleKeyDown(e, i + 1);
587
-
588
- if (isSpecialSymbol && maskChar !== key) return false;
589
-
590
- if (!isValidChar({ char: key, i, disableErrors })) return false;
591
-
592
- if (maskAsPlaceholder && getClearInnerValueAsString(i)?.length !== 0) {
593
- const fromIndex = i + 1;
594
- const text = innerValue
595
- .slice()
596
- .filter(({ isCharSymbol }, index) => index >= i && !isCharSymbol)
597
- .map(({ char }, index) => char)
598
- .join("");
599
- onPaste({ text }, fromIndex, false);
600
- }
601
-
602
- setIsUndoValueBlocked(false);
603
- updateInnerValueChar({ char: key }, i);
604
- setTimeout(() => onArrowRightDown(e, i), 1);
605
-
606
- return true;
607
- };
608
- const handleKeyCombinations = (e, i) => {
609
- const { key, keyCode } = e;
610
-
611
- switch (keyCode) {
612
- //Ctrl + A
613
- case 65:
614
- selectAllText(e);
615
- break;
616
- //Ctrl + Y
617
- case 89:
618
- if (redoValue) {
619
- resetInnerValue();
620
- onPaste({ text: redoValue }, 0, true);
621
- }
622
- break;
623
- //Ctrl + Z
624
- case 90:
625
- setRedoValue(getClearInnerValueAsString());
626
- resetInnerValue();
627
- onPaste({ text: undoValue }, 0, true);
628
- break;
629
- }
630
- };
631
- const onKeyDown = async (e, i = null) => {
632
- if (!isFocused && !isSelecting) return false;
633
-
634
- const { key, ctrlKey, altKey } = e;
635
-
636
- const target = innerValue[0].ref?.current || e.target;
637
-
638
- onKeyDownProp({ ...e, target }, i);
639
-
640
- if (KEYBOARD_SERVICE_KEYS.includes(key) && EXCLUDED_KEYS.includes(key))
641
- return true;
642
-
643
- setError(false);
644
- clearErrorMessage();
645
-
646
- if (ctrlKey || altKey) {
647
- if (!KEYBOARD_SERVICE_KEYS.includes(key)) handleKeyCombinations(e, i);
648
- return true;
649
- }
650
-
651
- e.preventDefault();
652
- e.stopPropagation();
653
-
654
- const handleResult = KEYBOARD_SERVICE_KEYS.includes(key)
655
- ? handleServiceKeyDown(e, i)
656
- : await handleKeyDown(e, i);
657
-
658
- if (blinkErrors && !handleResult && i !== null) {
659
- setBlinkError(true);
660
- }
661
- };
662
- const onClick = (e, cb, { ignoreIsSelecting = false } = {}) => {
663
- try {
664
- e.stopPropagation();
665
- e.preventDefault();
666
- } catch (error) {}
667
-
668
- if (
669
- isSelecting &&
670
- (selectedText.length || getSelectionText().length) &&
671
- !ignoreIsSelecting
672
- )
673
- return false;
674
-
675
- setFocused(true);
676
-
677
- if (e.detail === 2) selectAllText(e);
678
-
679
- if (typeof cb === "function") cb(e);
680
- };
681
- const onCharClick = (e, i) => {
682
- if (e.detail == 2) {
683
- selectAllText(e);
684
- return true;
685
- }
686
-
687
- const { char, maskChar } = getCharByIndex(i);
688
-
689
- if (maskAsPlaceholder && !isValidChar({ char, i, disableErrors: true }))
690
- i = getLastTypedIndex();
691
-
692
- setIsSelecting(false);
693
- resetSelectionText();
694
- setTimeout(
695
- () => onClick(e, () => setFocusOnChar(i, 0), { ignoreIsSelecting: true }),
696
- 50,
697
- );
698
- };
699
- const onWrapperClick = (e) => {
700
- e.stopPropagation();
701
- e.preventDefault();
702
-
703
- if (!isMouseDown && !isSelecting) {
704
- onClick(e);
705
- setFocusOnChar(getLastTypedIndex(), 0);
706
- }
707
- };
708
- const onClearClick = (e) => {
709
- e.stopPropagation();
710
- e.preventDefault();
711
-
712
- resetInnerValue();
713
- onHomeDown(null, 0);
714
- };
715
- const onMouseDownMove = (e) => {
716
- if (!isMouseDown) return false;
717
-
718
- setIsSelecting(true);
719
-
720
- const { clientX } = e;
721
-
722
- if (selectionStartX === null) setSelectionStartX(clientX);
723
-
724
- setSelectionEndX(clientX);
725
- };
726
- const onBlur = (e) => {
727
- if (isFocused) onBlurProp();
728
- setFocused(false);
729
- };
730
- const onFocus = (e, i) => {
731
- const charObj = getCharByIndex(i);
732
-
733
- if (!charObj) return false;
734
-
735
- const { isSpecialSymbol, ref } = charObj;
736
-
737
- setCaretPosition(ref.current, 0);
738
-
739
- if (
740
- (maxEditableLen !== -1 ? i < maxEditableLen : true) &&
741
- isSpecialSymbol &&
742
- i < innerValue.length - 1
743
- ) {
744
- onFocus(e, i + 1);
745
- return false;
746
- }
747
-
748
- if (!isFocused) onFocusProp(e);
749
-
750
- setFocused(true);
751
- };
752
- const onPaste = (e, i, setFocusToEnd = true) => {
753
- try {
754
- e.stopPropagation();
755
- e.preventDefault();
756
- } catch (error) {}
757
-
758
- setIsSelecting(false);
759
- resetSelectionText();
760
-
761
- const pastedText =
762
- (e?.clipboardData || window?.clipboardData)?.getData("text/plain") ||
763
- e?.clipboardData?.getData("Text") ||
764
- e.text;
765
-
766
- if (!pastedText) return false;
767
-
768
- const replacedIndexes = [];
769
-
770
- if (maskAsPlaceholder && e?.type === "paste") {
771
- const fromIndex = i + parseInt(pastedText?.length, 10);
772
- const text = innerValue
773
- .slice()
774
- .filter(({ isCharSymbol }, index) => index >= i && !isCharSymbol)
775
- .map(({ char }, index) => char)
776
- .join("");
777
- onPaste({ text }, fromIndex, false);
778
- }
779
-
780
- pastedText
781
- .split("")
782
- .filter((char) => isDigit(char) || isLetter(char))
783
- .map((pastedChar, offset) => {
784
- const charIndex = i + offset;
785
-
786
- let isReplaced = false;
787
- let isValid = false;
788
-
789
- for (
790
- let index = charIndex;
791
- index < innerValue.length && !isReplaced;
792
- ++index
793
- ) {
794
- const charObj = getCharByIndex(index);
795
-
796
- if (!charObj) continue;
797
-
798
- const { char, maskChar, isSpecialSymbol } = charObj;
799
-
800
- // If Char Is Valid
801
- if (!isValidChar({ char: pastedChar, i: index, disableErrors: true }))
802
- continue;
803
-
804
- // If Char Already Replaced
805
- if (replacedIndexes.includes(index)) continue;
806
-
807
- isReplaced = true;
808
- isValid = true;
809
- replacedIndexes.push(index);
810
-
811
- if (imitateTypingOnPaste) {
812
- setTimeout(() => {
813
- updateInnerValueChar({ char: pastedChar }, index);
814
- }, offset * imitateTypingOnPasteDelay);
815
- } else {
816
- updateInnerValueChar({ char: pastedChar }, index);
817
- }
818
- }
819
-
820
- return { char: pastedChar, isValid };
821
- });
822
-
823
- const [lastCharIndex] = replacedIndexes.reverse();
824
-
825
- if (setFocusToEnd) setFocusOnChar(lastCharIndex + 1, i);
826
-
827
- return lastCharIndex;
828
- };
829
- const onCopy = (e, i) => {
830
- try {
831
- e.stopPropagation();
832
- e.preventDefault();
833
- } catch (error) {}
834
-
835
- copyToClipboard(getSelectionText());
836
- };
837
- const onCut = (e, i) => {
838
- if (!isUndoValueBlocked) {
839
- setUndoValue(getClearInnerValueAsString());
840
- setIsUndoValueBlocked(true);
841
- }
842
-
843
- try {
844
- e.stopPropagation();
845
- e.preventDefault();
846
- } catch (error) {}
847
-
848
- copyToClipboard(getSelectionText());
849
- deleteSelectedText();
850
-
851
- setIsSelecting(false);
852
- setFocusOnChar(i, 0);
853
- };
854
- // GENERAL EVENT HANDLERS | END //
855
-
856
- // FUNCTIONS | START //
857
- const cancelDefaultAction = (e, cb) => {
858
- const { key } = e;
859
-
860
- if (!EXCLUDED_KEYS.includes(key) && KEYBOARD_SERVICE_KEYS.includes(key)) {
861
- e.preventDefault();
862
- e.stopPropagation();
863
- }
864
-
865
- if (typeof cb === "function") cb(e);
866
-
867
- return false;
868
- };
869
- const selectAllText = (e) => {
870
- e.preventDefault();
871
- e.stopPropagation();
872
-
873
- setIsSelecting(true);
874
-
875
- setSelectionStartX(-1);
876
- setSelectionEndX(-1);
877
-
878
- selectElementContents(inputRef.current);
879
- setSelectedText(getSelectionText());
880
- };
881
- const deleteSelectedText = () => {
882
- const selStartInd = getSelectStartIndex();
883
-
884
- if (selStartInd === null || selStartInd === undefined) return false;
885
-
886
- const selEndInd = getSelectionText().length + selStartInd;
887
-
888
- resetSelectionText();
889
-
890
- if (
891
- maskAsPlaceholder &&
892
- getClearInnerValueAsString(selEndInd + 1)?.length !== 0
893
- ) {
894
- const text = innerValue
895
- .slice()
896
- .filter(({ isSpecialSymbol, isCharSymbol }, index) => {
897
- if (maxEditableLen !== -1 && index > maxEditableLen - 1) return false;
898
- return (
899
- (index < selStartInd || index >= selEndInd) &&
900
- !isSpecialSymbol &&
901
- !isCharSymbol
902
- );
903
- })
904
- .map(({ char }, index) => char)
905
- .join("");
906
-
907
- resetInnerValue();
908
- onPaste({ text }, 0, false);
909
- setFocusOnChar(selStartInd);
910
- } else {
911
- for (let index = selStartInd; index < selEndInd; ++index)
912
- updateInnerValueChar({ char: "" }, index);
913
- }
914
-
915
- setFocusOnChar(selStartInd, -1);
916
-
917
- return true;
918
- };
919
- // FUNCTIONS | END //
920
-
921
- ///--- OBSERVERS ---///
922
- // Input Throttling
923
- useEffect(() => {
924
- if (isInputThrottled)
925
- setTimeout(() => setIsInputThrottled(false), inputThrottlingTimeout);
926
- }, [isInputThrottled]);
927
- //Render Mask
928
- useEffect(() => {
929
- setInnerValue([]);
930
- setMaskRendered(false);
931
-
932
- if (!maskPattern) maskPattern = "";
933
-
934
- maskPattern
935
- .concat(" ")
936
- .split("")
937
- .map((char, id, i) => {
938
- addInnerValueChar({
939
- char,
940
- i,
941
- data: { id, isReadOnly: id === maskPattern.length },
942
- });
943
- if (value?.[id]) updateInnerValueChar({ char: value[id] }, id);
944
- });
945
- setMaskRendered(true);
946
- }, [maskPattern]);
947
-
948
- useEffect(() => {
949
- if (value !== getClearInnerValueAsString()) setIsInitValue(false);
950
- }, [value]);
951
-
952
- useEffect(() => {
953
- if (
954
- isMaskRendered &&
955
- !isInitValue &&
956
- value !== getClearInnerValueAsString()
957
- ) {
958
- if (value && value !== "") {
959
- let valueCharIndex = 0;
960
- innerValue.map(({ isSpecialSymbol }, i) => {
961
- if (isSpecialSymbol) return false;
962
- let char = value[valueCharIndex];
963
- let whileLimit = maskPattern?.length || 0;
964
- while (
965
- whileLimit &&
966
- isSpecialSymbolChar({ char: value[valueCharIndex] })
967
- ) {
968
- whileLimit--;
969
- char = value[++valueCharIndex];
970
- }
971
-
972
- //If Valid
973
- if (isValidChar({ char, i, disableErrors: true })) {
974
- updateInnerValueChar({ char }, i);
975
- }
976
-
977
- ++valueCharIndex;
978
- });
979
- }
980
-
981
- setIsInitValue(true);
982
- }
983
- }, [isMaskRendered, value, isInitValue]);
984
-
985
- useEffect(() => {
986
- if (isInitValue) setUndoValue(getClearInnerValueAsString());
987
- }, [isInitValue]);
988
-
989
- // Focus Observer
990
- useEffect(() => {
991
- if (!isFocused) setSelectedText("");
992
- }, [isFocused]);
993
-
994
- // Default Focused
995
- useEffect(() => {
996
- if (isFocusedDefault && isMaskRendered) setFocusOnChar(0, -1);
997
- }, [isFocusedDefault, isMaskRendered]);
998
-
999
- // OnChange Observer
1000
- useEffect(() => {
1001
- if (isMaskRendered && isFocused) {
1002
- setError(false);
1003
- clearErrorMessage();
1004
- const values = [
1005
- getClearInnerValueAsString(),
1006
- getInnerValueAsString({ replaceSpace: true }),
1007
- ];
1008
- if (returnMaskedValue) values.reverse();
1009
-
1010
- onChangeProp(...values);
1011
- }
1012
- }, [innerValue, isMaskRendered]);
1013
-
1014
- // Blink Error
1015
- useEffect(() => {
1016
- if (blinkError) setTimeout(() => setBlinkError(false), blinkDuration);
1017
- }, [blinkError]);
1018
-
1019
- useEffect(() => {
1020
- if (!isSelecting) {
1021
- setSelectedText("");
1022
- resetSelectionText();
1023
- setSelectionStartX(null);
1024
- setSelectionEndX(null);
1025
- }
1026
-
1027
- if (!isMouseDown && isSelecting) {
1028
- document.addEventListener(
1029
- "keydown",
1030
- (e) => pushServiceWatcher(() => onKeyDown(e)),
1031
- { once: true },
1032
- );
1033
- }
1034
-
1035
- if (!isMouseDown && isSelecting && !getSelectionText().length)
1036
- setIsSelecting(false);
1037
- }, [isSelecting, isMouseDown]);
1038
-
1039
- useEffect(() => {
1040
- document.addEventListener("mouseup", () => {
1041
- setIsMouseDown((isMouseDown) => {
1042
- if (isMouseDown) setSelectedText(getSelectionText());
1043
- return false;
1044
- });
1045
- });
1046
- }, []);
1047
-
1048
- useEffect(() => {
1049
- setError(customError !== "");
1050
- setErrorMessage(customError === "" ? errors.default : customError);
1051
- }, [customError, isError]);
1052
-
1053
- ///--- RENDER ---///
1054
-
1055
- const renderChar = (obj, i, className = "") => {
1056
- const { char, ref, maskChar, isSpecialSymbol } = obj;
1057
- const prevChar = getCharByIndex(i - 1);
1058
-
1059
- if (i === innerValue.length - 1 && isSelecting)
1060
- return <span style={{ width: "1px" }} />;
1061
-
1062
- return (
1063
- <span
1064
- tabIndex={i === 0 ? 0 : -1}
1065
- key={i}
1066
- attr-char-id={i}
1067
- className={`
1068
- input-mask_value_item
1069
- ${className}
1070
- ${isDigitMaskChar(obj.maskChar) ? "input-mask_value_item--digit" : ""}
1071
- ${isLetterMaskChar(obj.maskChar) ? "input-mask_value_item--letter" : ""}
1072
- ${obj.isSpecialSymbol ? "input-mask_value_item--spec" : ""}
1073
- `}
1074
- onClick={(e) => onCharClick(e, i)}
1075
- onFocus={(...params) => {
1076
- // if (isUseAutoSelect) inputRef?.current?.select();
1077
- if (onFocus) onFocus(...params);
1078
- }}
1079
- onBlur={onBlur}
1080
- onKeyPress={cancelDefaultAction}
1081
- onKeyDown={(e) => onKeyDown(e, i)}
1082
- onChange={cancelDefaultAction}
1083
- contentEditable={!isSelecting}
1084
- inputMode={
1085
- isDigitMaskChar(
1086
- i !== innerValue.length - 1 ? maskChar : prevChar?.maskChar,
1087
- )
1088
- ? "numeric"
1089
- : "text"
1090
- }
1091
- suppressContentEditableWarning={true}
1092
- onPaste={(e) => onPaste(e, i)}
1093
- onCopy={(e) => onCopy(e, i)}
1094
- onCut={(e) => onCut(e, i)}
1095
- ref={ref}
1096
- onDoubleClick={(e) => {
1097
- e.stopPropagation();
1098
- e.preventDefault();
1099
- setIsSelecting(true);
1100
- setTimeout(() => selectAllText(e, i), 50);
1101
- }}
1102
- onMouseDown={(e) => cancelDefaultAction(e, () => setIsMouseDown(true))}
1103
- onMouseMove={(e) => cancelDefaultAction(e, onMouseDownMove)}
1104
- >
1105
- {!isFocused &&
1106
- hideMaskOnBlur &&
1107
- getClearInnerValueAsString().length === 0
1108
- ? SPACE_CHAR
1109
- : isSpecialSymbol
1110
- ? maskChar
1111
- : char === ""
1112
- ? getPlaceholderCharByIndex(i)
1113
- : char}
1114
- </span>
1115
- );
1116
- };
1117
- const renderMaskChar = (obj, i) =>
1118
- renderChar(obj, i, "input-mask_value_item_mask-char");
1119
- const renderValueChar = (obj, i) =>
1120
- renderChar(obj, i, "input-mask_value_item_value-char");
1121
- const renderSpecialChar = (obj, i) =>
1122
- renderChar(obj, i, "input-mask_value_item_spec-char");
1123
- const renderInputValue = () => {
1124
- return innerValue.map((obj, i) => {
1125
- const { char, isSpecialSymbol } = obj;
1126
-
1127
- if (isSpecialSymbol) {
1128
- return renderSpecialChar(obj, i);
1129
- }
1130
-
1131
- const isMaskItem = (() => char === "")();
1132
- return isMaskItem ? renderMaskChar(obj, i) : renderValueChar(obj, i);
1133
- });
1134
- };
1135
- const render = () => {
1136
- return (
1137
- <div
1138
- data-testid={testId}
1139
- className={cn(
1140
- "input-mask_wrapper",
1141
- className,
1142
- { disabled },
1143
- { "input-mask_error": isError },
1144
- { "input-mask_focus": isFocused },
1145
- { "input-mask_blink-error": blinkError },
1146
- )}
1147
- onClick={onWrapperClick}
1148
- onBlur={onBlur}
1149
- >
1150
- <div
1151
- className={`
1152
- input-mask
1153
- ${isError ? "input-mask_error" : ""}
1154
- ${isFocused ? "input-mask_focus" : ""}
1155
- ${blinkError ? "input-mask_blink-error" : ""}
1156
- `}
1157
- onMouseDown={(e) =>
1158
- cancelDefaultAction(e, () => setIsMouseDown(true))
1159
- }
1160
- onMouseMove={(e) => cancelDefaultAction(e, onMouseDownMove)}
1161
- // onMouseUp={cancelDefaultAction}
1162
- onClick={onWrapperClick}
1163
- onBlur={onBlur}
1164
- >
1165
- {showHint && isHintLeft && (
1166
- <div className="input-mask_hint input-mask_hint--left">
1167
- <Hint
1168
- hint={hintText}
1169
- className={hintClassName}
1170
- side={hintPosition}
1171
- />
1172
- </div>
1173
- )}
1174
- {isIconLeft && showIcon && (
1175
- <div className="input-mask_icon input-mask_icon--left">{icon}</div>
1176
- )}
1177
- <div
1178
- className="input-mask_value"
1179
- ref={inputRef}
1180
- onKeyUp={cancelDefaultAction}
1181
- onKeyDown={(e) => cancelDefaultAction(e, onKeyDown)}
1182
- onKeyPress={cancelDefaultAction}
1183
- onBlur={onBlur}
1184
- onClick={onWrapperClick}
1185
- >
1186
- {renderInputValue()}
1187
- </div>
1188
- {isClearable && (
1189
- <div className="input-mask_clear">
1190
- <X onClick={onClearClick} />
1191
- </div>
1192
- )}
1193
- {isIconRight && showIcon && (
1194
- <div className="input-mask_icon input-mask_icon--right">{icon}</div>
1195
- )}
1196
- {showHint && isHintRight && (
1197
- <div className="input-mask_hint input-mask_hint--right">
1198
- <Hint
1199
- hint={hintText}
1200
- className={hintClassName}
1201
- side={hintPosition}
1202
- />
1203
- </div>
1204
- )}
1205
- </div>
1206
- {showErrors && errorMessage && (
1207
- <div className="input-mask_error-text">{errorMessage}</div>
1208
- )}
1209
- </div>
1210
- );
1211
- };
1212
-
1213
- return render();
1214
- }
1
+ function n(n,r){(null==r||r>n.length)&&(r=n.length);for(var t=0,e=Array(r);t<r;t++)e[t]=n[t];return e}function r(n){if(Array.isArray(n))return n}function t(n,r,t,e,i,o,a){try{var u=n[o](a),c=u.value}catch(n){t(n);return}u.done?r(c):Promise.resolve(c).then(e,i)}function e(n){return function(){var r=this,e=arguments;return new Promise(function(i,o){var a=n.apply(r,e);function u(n){t(a,i,o,u,c,"next",n)}function c(n){t(a,i,o,u,c,"throw",n)}u(void 0)})}}function i(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}function o(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function a(n){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{},e=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(t).filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.forEach(function(r){var e;e=t[r],r in n?Object.defineProperty(n,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[r]=e})}return n}function u(n,t){return r(n)||function(n,r){var t,e,i=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=i){var o=[],a=!0,u=!1;try{for(i=i.call(n);!(a=(t=i.next()).done)&&(o.push(t.value),!r||o.length!==r);a=!0);}catch(n){u=!0,e=n}finally{try{a||null==i.return||i.return()}finally{if(u)throw e}}return o}}(n,t)||l(n,t)||o()}function c(r){return function(r){if(Array.isArray(r))return n(r)}(r)||i(r)||l(r)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(r,t){if(r){if("string"==typeof r)return n(r,t);var e=Object.prototype.toString.call(r).slice(8,-1);if("Object"===e&&r.constructor&&(e=r.constructor.name),"Map"===e||"Set"===e)return Array.from(e);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return n(r,t)}}function s(n,r){var t,e,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=u(0),a.throw=u(1),a.return=u(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function u(u){return function(c){var l=[u,c];if(t)throw TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(o=0)),o;)try{if(t=1,e&&(i=2&l[0]?e.return:l[0]?e.throw||((i=e.return)&&i.call(e),0):e.next)&&!(i=i.call(e,l[1])).done)return i;switch(e=0,i&&(l=[2&l[0],i.value]),l[0]){case 0:case 1:i=l;break;case 4:return o.label++,{value:l[1],done:!1};case 5:o.label++,e=l[1],l=[0];continue;case 7:l=o.ops.pop(),o.trys.pop();continue;default:if(!(i=(i=o.trys).length>0&&i[i.length-1])&&(6===l[0]||2===l[0])){o=0;continue}if(3===l[0]&&(!i||l[1]>i[0]&&l[1]<i[3])){o.label=l[1];break}if(6===l[0]&&o.label<i[1]){o.label=i[1],i=l;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(l);break}i[2]&&o.ops.pop(),o.trys.pop();continue}l=r.call(n,o)}catch(n){l=[6,n],e=0}finally{t=i=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}import{jsx as f,jsxs as p}from"react/jsx-runtime";import{createRef as d,useEffect as v,useRef as h,useState as m}from"react";import y from"classnames";import{X as b}from"react-feather";import g from"../../UI/Hint/Hint";import{KEYBOARD_SERVICE_KEYS as k}from"./../../../Constants/index.constants.js";import{setCaretPosition as S}from"./InputCarretPosition";import{ANDROID_CHROME_TEXT_CODE as w,DEFAULT_ERRORS as C,DIGIT_MASK_CHAR as P,EXCLUDED_KEYS as _,LOWERCASE_LETTER_MASK_CHAR as x,SPACE_CHAR as D,UPPERCASE_LETTER_MASK_CHAR as O}from"./config";import{copyToClipboard as j,getSelectionText as E,isDigit as T,isDigitMaskChar as I,isLetter as A,isLetterMaskChar as N,isLowerCaseLetter as L,isUpperCaseLetter as M,resetSelectionText as B,selectElementContents as K,voidFn as R}from"./functions";import"./InputMask.scss";export default function H(){var n,t,H=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},U=H.maskPattern,X=H.maskPatternPlaceholder,F=H.maskPlaceholder,V=H.maskDigitPlaceholder,G=H.maskLetterPlaceholder,W=H.usePatternPlaceholder,$=H.disabled,q=H.maskAsPlaceholder,z=void 0===q||q,J=H.maxEditableLen,Q=void 0===J?-1:J,Y=H.isFocusedDefault,Z=void 0!==Y&&Y,nn=H.isClearable,nr=H.isCaseSensitive,nt=H.adaptTextCase,ne=(H.isUseAutoSelect,H.icon),ni=H.showIcon,no=H.isIconLeft,na=H.isIconRight,nu=H.value,nc=H.blinkErrors,nl=void 0===nc||nc,ns=H.blinkDuration,nf=void 0===ns?100:ns,np=H.showErrors,nd=H.className,nv=H.errors,nh=H.error,nm=void 0===nh?"":nh,ny=(H.ref,H.onChange),nb=void 0===ny?function(){}:ny,ng=H.onFocus,nk=void 0===ng?function(){}:ng,nS=H.onBlur,nw=void 0===nS?function(){}:nS,nC=H.onKeyDown,nP=void 0===nC?function(){}:nC,n_=H.imitateTypingOnPaste,nx=void 0!==n_&&n_,nD=H.imitateTypingOnPasteDelay,nO=void 0===nD?100:nD,nj=H.showHint,nE=void 0!==nj&&nj,nT=H.hintText,nI=void 0===nT?"":nT,nA=H.hintClassName,nN=void 0===nA?"":nA,nL=H.isHintRight,nM=H.isHintLeft,nB=H.hintPosition,nK=void 0===nB?"right":nB,nR=H.hideMaskOnBlur,nH=void 0===nR||nR,nU=H.returnMaskedValue,nX=void 0!==nU&&nU,nF=(H.name,H.testId),nV=a({},C,void 0===nv?C:nv),nG=u(m(!1),2),nW=nG[0],n$=nG[1],nq=h(null),nz=u(m(!1),2),nJ=nz[0],nQ=nz[1],nY=u(m(!1),2),nZ=nY[0],n0=nY[1],n1=u(m(!1),2),n2=n1[0],n3=n1[1],n4=u(m(!1),2),n6=n4[0],n5=n4[1],n8=u(m(!1),2),n9=n8[0],n7=n8[1],rn=u(m(!1),2),rr=rn[0],rt=rn[1],re=u(m(nV.default),2),ri=re[0],ro=re[1],ra=function(){return ro(nV.default)},ru=u(m(!1),2),rc=ru[0],rl=ru[1],rs=u(m(""),2),rf=rs[0],rp=rs[1],rd=u(m(null),2),rv=rd[0],rh=rd[1],rm=u(m(null),2),ry=rm[0],rb=rm[1],rg=u(m([]),2),rk=rg[0],rS=rg[1],rw=function(){var n=r(rk)||i(rk)||l(rk)||o(),t=n[0];return rS(n.slice(1)),t.fn||R},rC=function(){rw()()};v(function(){rk.length&&rC()},[rk]);var rP=u(m([]),2),r_=rP[0],rx=rP[1],rD=u(m(""),2),rO=rD[0],rj=rD[1],rE=u(m(null),2),rT=rE[0],rI=rE[1],rA=u(m(!1),2),rN=rA[0],rL=rA[1],rM=function(n){var r=n.char,t=(n.i,n.data),e=void 0===t?{}:t;rx(function(n){var t=c(n),i=rX(r,e);return t.push(i),t})},rB=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.char,t=void 0===r?null:r,e=arguments.length>1?arguments[1]:void 0;rx(function(n){if(!n[e])return n;var r=c(n);return r[e].isSpecialSymbol||null===t||(r[e].char=t),r})},rK=function(){r_.map(function(n,r){return rB({char:""},r)})},rR=function(n){var r=n.char,t=n.i,e=n.disableErrors,i=void 0!==e&&e;switch(rV(t)){case P:if(!T(r))return i||ro(nV.onlyDigit),!1;break;case O:if(nt&&(r=r.toUpperCase()),!A(r)&&!nr)return i||ro(nV.onlyLetter),!1;if(nr&&!M(r))return i||ro(nV.onlyUpperCase),!1;break;case x:if(nt&&(r=r.toLowerCase()),!A(r)&&!nr)return i||ro(nV.onlyLetter),!1;if(nr&&!L(r))return i||ro(nV.onlyLowerCase),!1;break;default:return!1}return!0},rH=function(n){var r=n.char;return!I(r)&&!N(r)},rU=function(n){var r=n.char;return!T(r)&&!A(r)},rX=function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=rU({char:n}),e=rH({char:n});return" "===n&&(n=D),a({char:e?n:"",maskChar:n,isSpecialSymbol:e,isCharSymbol:!t&&""!==n&&e,ref:d()},r)},rF=function(n){return r_[n]?a({},r_[n]):void 0},rV=function(n){var r;return(null==(r=r_[n])?void 0:r.maskChar)||void 0},rG=function(){if(rv===ry)return 0;var n=rv<ry?rv:ry,r=rv>ry?rv:ry;return r_.reduce(function(t,e,i){e.char;var o,a=e.ref;if((null==a?void 0:a.current)===null)return t;var u=null==a||null==(o=a.current)?void 0:o.getBoundingClientRect(),c=u.left,l=c+u.width/2;return!c||n>l||r<l?t:null===t.index||n<=l&&l>=r&&l<t.charX?{index:i,charX:l}:t},{index:null,charX:null}).index},rW=function(n){var r=rF(n).maskChar;return W?X[n]||F:I(r)&&V?V:N(r)&&G?G:F},r$=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.replaceSpace,t=r_.slice(0,r_.length-1).map(function(n,r){var t=n.char,e=n.maskChar;return""===t?rW(r)||e:t}).join("");return void 0!==r&&r?null==t?void 0:t.replace(/\u00A0/g," "):t},rq=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return r_.filter(function(r,t){return t>=n}).reduce(function(n,r,t,e){var i=r.char,o=r.maskChar,a=r.isSpecialSymbol,u=r.isCharSymbol;return(i!==o&&""!==i||!a||u)&&(n+=i),n},"")},rz=function(){return r_.reduce(function(n,r,t){var e=r.char;return(r.isSpecialSymbol||e===D||""===e)&&null!==n||(n=t),n},-1)+1},rJ=function(n,r){var t,e=rF(n);if(!e)return!1;var i=e.ref,o=e.isSpecialSymbol;return!!i&&((-1===Q||n<Q)&&o&&n<r_.length-1?r>n?rQ(null,n):rY(null,n):-1!==Q&&n>Q?(rJ(Q,n),!1):(null==(t=i.current)||t.focus(),setTimeout(function(){return S(i.current,0)},10),!0))},rQ=function(n,r){return rJ(r-1,r)},rY=function(n,r){var t=(null==n?void 0:n.key)||null;return z&&r>rz()?rJ(rz()+1,r):(!z||r!==rz()||"ArrowRight"!==t)&&rJ(r+1,r)},rZ=function(n,r){if(rN||(rj(rq()),rL(!0)),E().length)return tu();var t=r-1,e=rF(t);if(!e)return!1;if(e.isSpecialSymbol)return rZ(n,t);if(z){var i=r_.slice(0,t).concat(r_.slice(r,-1!==Q?Q:r_.length)).reduce(function(n,r){var t=r.char;return n.concat(t)},"");rK(),tt({text:i},0)}else rB({char:""},t);return rJ(t,r),!0},r0=function(n,r){if(rN||(rj(rq()),rL(!0)),E().length)return tu();var t=r+1,e=rF(r);if(!e)return!1;var i=e.char;if(e.isSpecialSymbol)return r0(n,r+1);if(""===i)return!1;if(z){var o=r_.slice(0,r).concat(r_.slice(t,-1!==Q?Q:r_.length)).reduce(function(n,r){var t=r.char;return n.concat(t)},"");rK(),tt({text:o},0),rJ(r,r)}else rB({char:""},r),rJ(t,r);return!0},r1=function(n,r){return rJ(0,-1)},r2=function(n,r){switch(n.key){case"ArrowLeft":return rQ(n,r);case"ArrowRight":return rY(n,r);case"Backspace":return rZ(n,r);case"Delete":return r0(n,r);case"Home":return r1(n,r);case"End":return setTimeout(function(){return rJ(z?rz():0,0)},10);default:return!0}},r3=(n=e(function(n,r){var t,e,i,o,a,c,l,f,p,d,v,h,m,y=arguments;return s(this,function(s){switch(s.label){case 0:if(i=void 0!==(e=(t=y.length>2&&void 0!==y[2]?y[2]:{}).disableErrors)&&e,a=void 0!==(o=t.disableIsSelectingCheck)&&o,rc&&!a)return tu(),B(),rl(!1),setTimeout(function(){return r3(n,rG(),{disableErrors:i,disableIsSelectingCheck:!0})},10),[2,null];try{n.stopPropagation(),n.preventDefault()}catch(n){}if(n6)return[2,!1];if(n5(!0),l=n.key,f=n.keyCode,p=rF(r),f!=w)return[3,2];return d=p.ref,[4,new Promise(function(n){setTimeout(function(){var r,t;if((null==d||null==(t=d.current)||null==(r=t.innerText)?void 0:r.length)>=2){var e,i=u(null==d||null==(e=d.current)?void 0:e.innerText,2),o=i[0],a=i[1];d.current.innerText=a,n(o)}else n(null)},1)})];case 1:l=s.sent(),s.label=2;case 2:if(!p||r===r_.length-1)return[2,!1];if(!(z&&r>rz()+1))return[3,4];return[4,r3(n,0===rz()?0:rz()+1,{disableErrors:i})];case 3:case 5:return[2,s.sent()];case 4:if(v=p.isSpecialSymbol,h=p.maskChar,p.isReadOnly)return[2,!1];if(h!==D)return[3,6];return[4,r3(n,r+1)];case 6:if(v&&h!==l||!rR({char:l,i:r,disableErrors:i}))return[2,!1];return z&&(null==(c=rq(r))?void 0:c.length)!==0&&(m=r+1,tt({text:r_.slice().filter(function(n,t){var e=n.isCharSymbol;return t>=r&&!e}).map(function(n,r){return n.char}).join("")},m,!1)),rL(!1),rB({char:l},r),setTimeout(function(){return rY(n,r)},1),[2,!0]}})}),function(r,t){return n.apply(this,arguments)}),r4=function(n,r){switch(n.key,n.keyCode){case 65:ta(n);break;case 89:rT&&(rK(),tt({text:rT},0,!0));break;case 90:rI(rq()),rK(),tt({text:rO},0,!0)}},r6=(t=e(function(n){var r,t,e,i,o,u,c,l,f=arguments;return s(this,function(s){switch(s.label){case 0:var p,d;if(r=f.length>1&&void 0!==f[1]?f[1]:null,!nZ&&!rc)return[2,!1];if(e=n.key,i=n.ctrlKey,o=n.altKey,u=(null==(t=r_[0].ref)?void 0:t.current)||n.target,nP((p=a({},n),d=d={target:u},Object.getOwnPropertyDescriptors?Object.defineProperties(p,Object.getOwnPropertyDescriptors(d)):(function(n,r){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(n);t.push.apply(t,e)}return t})(Object(d)).forEach(function(n){Object.defineProperty(p,n,Object.getOwnPropertyDescriptor(d,n))}),p),r),k.includes(e)&&_.includes(e))return[2,!0];if(n7(!1),ra(),i||o)return k.includes(e)||r4(n,r),[2,!0];if(n.preventDefault(),n.stopPropagation(),!k.includes(e))return[3,1];return l=r2(n,r),[3,3];case 1:return[4,r3(n,r)];case 2:l=s.sent(),s.label=3;case 3:return c=l,nl&&!c&&null!==r&&rt(!0),[2]}})}),function(n){return t.apply(this,arguments)}),r5=function(n,r){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},e=t.ignoreIsSelecting;try{n.stopPropagation(),n.preventDefault()}catch(n){}if(rc&&(rf.length||E().length)&&!(void 0!==e&&e))return!1;n0(!0),2===n.detail&&ta(n),"function"==typeof r&&r(n)},r8=function(n,r){if(2==n.detail)return ta(n),!0;var t=rF(r),e=t.char;t.maskChar,z&&!rR({char:e,i:r,disableErrors:!0})&&(r=rz()),rl(!1),B(),setTimeout(function(){return r5(n,function(){return rJ(r,0)},{ignoreIsSelecting:!0})},50)},r9=function(n){n.stopPropagation(),n.preventDefault(),nJ||rc||(r5(n),rJ(rz(),0))},r7=function(n){if(!nJ)return!1;rl(!0);var r=n.clientX;null===rv&&rh(r),rb(r)},tn=function(n){nZ&&nw(),n0(!1)},tr=function(n,r){var t=rF(r);if(!t)return!1;var e=t.isSpecialSymbol;if(S(t.ref.current,0),(-1===Q||r<Q)&&e&&r<r_.length-1)return tr(n,r+1),!1;nZ||nk(n),n0(!0)},tt=function(n,r){var t,e,i,o=!(arguments.length>2)||void 0===arguments[2]||arguments[2];try{n.stopPropagation(),n.preventDefault()}catch(n){}rl(!1),B();var a=(null==(t=(null==n?void 0:n.clipboardData)||(null==(e=window)?void 0:e.clipboardData))?void 0:t.getData("text/plain"))||(null==n||null==(i=n.clipboardData)?void 0:i.getData("Text"))||n.text;if(!a)return!1;var c=[];if(z&&(null==n?void 0:n.type)==="paste"){var l=r+parseInt(null==a?void 0:a.length,10);tt({text:r_.slice().filter(function(n,t){var e=n.isCharSymbol;return t>=r&&!e}).map(function(n,r){return n.char}).join("")},l,!1)}a.split("").filter(function(n){return T(n)||A(n)}).map(function(n,t){for(var e=function(r){var e=rF(r);return e?(e.char,e.maskChar,e.isSpecialSymbol,!rR({char:n,i:r,disableErrors:!0})||c.includes(r))?"continue":void(o=!0,a=!0,c.push(r),nx?setTimeout(function(){rB({char:n},r)},t*nO):rB({char:n},r)):"continue"},i=r+t,o=!1,a=!1,u=i;u<r_.length&&!o;++u)e(u);return{char:n,isValid:a}});var s=u(c.reverse(),1)[0];return o&&rJ(s+1,r),s},te=function(n,r){try{n.stopPropagation(),n.preventDefault()}catch(n){}j(E())},ti=function(n,r){rN||(rj(rq()),rL(!0));try{n.stopPropagation(),n.preventDefault()}catch(n){}j(E()),tu(),rl(!1),rJ(r,0)},to=function(n,r){var t=n.key;return!_.includes(t)&&k.includes(t)&&(n.preventDefault(),n.stopPropagation()),"function"==typeof r&&r(n),!1},ta=function(n){n.preventDefault(),n.stopPropagation(),rl(!0),rh(-1),rb(-1),K(nq.current),rp(E())},tu=function(){var n,r=rG();if(null==r)return!1;var t=E().length+r;if(B(),z&&(null==(n=rq(t+1))?void 0:n.length)!==0){var e=r_.slice().filter(function(n,e){var i=n.isSpecialSymbol,o=n.isCharSymbol;return(-1===Q||!(e>Q-1))&&(e<r||e>=t)&&!i&&!o}).map(function(n,r){return n.char}).join("");rK(),tt({text:e},0,!1),rJ(r)}else for(var i=r;i<t;++i)rB({char:""},i);return rJ(r,-1),!0};v(function(){n6&&setTimeout(function(){return n5(!1)},20)},[n6]),v(function(){rx([]),n$(!1),U||(U=""),U.concat(" ").split("").map(function(n,r,t){rM({char:n,i:t,data:{id:r,isReadOnly:r===U.length}}),(null==nu?void 0:nu[r])&&rB({char:nu[r]},r)}),n$(!0)},[U]),v(function(){nu!==rq()&&n3(!1)},[nu]),v(function(){if(nW&&!n2&&nu!==rq()){if(nu&&""!==nu){var n=0;r_.map(function(r,t){if(r.isSpecialSymbol)return!1;for(var e=nu[n],i=(null==U?void 0:U.length)||0;i&&rU({char:nu[n]});)i--,e=nu[++n];rR({char:e,i:t,disableErrors:!0})&&rB({char:e},t),++n})}n3(!0)}},[nW,nu,n2]),v(function(){n2&&rj(rq())},[n2]),v(function(){nZ||rp("")},[nZ]),v(function(){Z&&nW&&rJ(0,-1)},[Z,nW]),v(function(){if(nW&&nZ){n7(!1),ra();var n=[rq(),r$({replaceSpace:!0})];nX&&n.reverse(),nb.apply(void 0,c(n))}},[r_,nW]),v(function(){rr&&setTimeout(function(){return rt(!1)},nf)},[rr]),v(function(){rc||(rp(""),B(),rh(null),rb(null)),!nJ&&rc&&document.addEventListener("keydown",function(n){var r;return r=function(){return r6(n)},rS(function(n){return c(n).concat([{fn:r,dt:Date.now()}])})},{once:!0}),nJ||!rc||E().length||rl(!1)},[rc,nJ]),v(function(){document.addEventListener("mouseup",function(){nQ(function(n){return n&&rp(E()),!1})})},[]),v(function(){n7(""!==nm),ro(""===nm?nV.default:nm)},[nm,n9]);var tc=function(n,r){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",e=n.char,i=n.ref,o=n.maskChar,a=n.isSpecialSymbol,u=rF(r-1);return r===r_.length-1&&rc?f("span",{style:{width:"1px"}}):f("span",{tabIndex:0===r?0:-1,"attr-char-id":r,className:"\n input-mask_value_item\n ".concat(t,"\n ").concat(I(n.maskChar)?"input-mask_value_item--digit":"","\n ").concat(N(n.maskChar)?"input-mask_value_item--letter":"","\n ").concat(n.isSpecialSymbol?"input-mask_value_item--spec":"","\n "),onClick:function(n){return r8(n,r)},onFocus:function(){for(var n=arguments.length,r=Array(n),t=0;t<n;t++)r[t]=arguments[t];tr&&tr.apply(void 0,c(r))},onBlur:tn,onKeyPress:to,onKeyDown:function(n){return r6(n,r)},onChange:to,contentEditable:!rc,inputMode:I(r!==r_.length-1?o:null==u?void 0:u.maskChar)?"numeric":"text",suppressContentEditableWarning:!0,onPaste:function(n){return tt(n,r)},onCopy:function(n){return te(n,r)},onCut:function(n){return ti(n,r)},ref:i,onDoubleClick:function(n){n.stopPropagation(),n.preventDefault(),rl(!0),setTimeout(function(){return ta(n,r)},50)},onMouseDown:function(n){return to(n,function(){return nQ(!0)})},onMouseMove:function(n){return to(n,r7)},children:!nZ&&nH&&0===rq().length?D:a?o:""===e?rW(r):e},r)};return p("div",{"data-testid":void 0===nF?"input-mask":nF,className:y("input-mask_wrapper",void 0===nd?"":nd,{disabled:$},{"input-mask_error":n9},{"input-mask_focus":nZ},{"input-mask_blink-error":rr}),onClick:r9,onBlur:tn,children:[p("div",{className:"\n input-mask\n ".concat(n9?"input-mask_error":"","\n ").concat(nZ?"input-mask_focus":"","\n ").concat(rr?"input-mask_blink-error":"","\n "),onMouseDown:function(n){return to(n,function(){return nQ(!0)})},onMouseMove:function(n){return to(n,r7)},onClick:r9,onBlur:tn,children:[nE&&void 0!==nM&&nM&&f("div",{className:"input-mask_hint input-mask_hint--left",children:f(g,{hint:nI,className:nN,side:nK})}),no&&ni&&f("div",{className:"input-mask_icon input-mask_icon--left",children:ne}),f("div",{className:"input-mask_value",ref:nq,onKeyUp:to,onKeyDown:function(n){return to(n,r6)},onKeyPress:to,onBlur:tn,onClick:r9,children:r_.map(function(n,r){var t=n.char;return n.isSpecialSymbol?tc(n,r,"input-mask_value_item_spec-char"):""===t?tc(n,r,"input-mask_value_item_mask-char"):tc(n,r,"input-mask_value_item_value-char")})}),nn&&f("div",{className:"input-mask_clear",children:f(b,{onClick:function(n){n.stopPropagation(),n.preventDefault(),rK(),r1(null,0)}})}),na&&ni&&f("div",{className:"input-mask_icon input-mask_icon--right",children:ne}),nE&&(void 0===nL||nL)&&f("div",{className:"input-mask_hint input-mask_hint--right",children:f(g,{hint:nI,className:nN,side:nK})})]}),void 0!==np&&np&&ri&&f("div",{className:"input-mask_error-text",children:ri})]})}