intelicoreact 1.6.25 → 1.6.27

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 (275) hide show
  1. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.js +1 -98
  2. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +1 -48
  3. package/dist/Atomic/FormElements/Calendar/Calendar.js +1 -249
  4. package/dist/Atomic/FormElements/Calendar/Calendar.props.js +1 -4
  5. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +1 -65
  6. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +1 -52
  7. package/dist/Atomic/FormElements/Datepicker/Datepicker.js +1 -424
  8. package/dist/Atomic/FormElements/Datepicker/Datepicker.props.js +1 -4
  9. package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.js +1 -173
  10. package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.props.js +1 -4
  11. package/dist/Atomic/FormElements/Dropdown/Dropdown.d.ts +5 -0
  12. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +1 -735
  13. package/dist/Atomic/FormElements/Dropdown/Dropdown.js.map +1 -0
  14. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +1 -20
  15. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +1 -529
  16. package/dist/Atomic/FormElements/FileLoader/FileLoader.js +1 -94
  17. package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.js +1 -105
  18. package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.js +1 -67
  19. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js +1 -247
  20. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +1 -160
  21. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +1 -193
  22. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +1 -135
  23. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.js +1 -116
  24. package/dist/Atomic/FormElements/Input/Input.js +1 -467
  25. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +1 -161
  26. package/dist/Atomic/FormElements/InputColor/InputColor.js +1 -64
  27. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +1 -200
  28. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +1 -354
  29. package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +1 -71
  30. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +1 -693
  31. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +1 -254
  32. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +1 -32
  33. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +1 -200
  34. package/dist/Atomic/FormElements/InputLink/InputLink.js +1 -99
  35. package/dist/Atomic/FormElements/InputMask/InputCarretPosition.js +1 -37
  36. package/dist/Atomic/FormElements/InputMask/InputMask.js +1 -1214
  37. package/dist/Atomic/FormElements/InputMask/config.js +1 -15
  38. package/dist/Atomic/FormElements/InputMask/functions.js +1 -58
  39. package/dist/Atomic/FormElements/InputMask2/InputMask2.js +1 -674
  40. package/dist/Atomic/FormElements/InputMask2/config.js +1 -15
  41. package/dist/Atomic/FormElements/InputMask2/functions.js +1 -58
  42. package/dist/Atomic/FormElements/InputMask3/InputMask3.js +1 -766
  43. package/dist/Atomic/FormElements/InputMask3/config.js +1 -15
  44. package/dist/Atomic/FormElements/InputMask3/functions.js +1 -58
  45. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +1 -114
  46. package/dist/Atomic/FormElements/InputsRow/InputsRow.js +1 -140
  47. package/dist/Atomic/FormElements/Label/Label.js +1 -87
  48. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +1 -506
  49. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +1 -45
  50. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +1 -331
  51. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +1 -66
  52. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +1 -80
  53. package/dist/Atomic/FormElements/RadioInput/RadioInput.js +1 -57
  54. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +1 -54
  55. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +1 -183
  56. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +1 -222
  57. package/dist/Atomic/FormElements/RangeList/RangeList.js +1 -175
  58. package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +1 -43
  59. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +1 -443
  60. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +1 -858
  61. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +1 -39
  62. package/dist/Atomic/FormElements/Switcher/Switcher.js +1 -59
  63. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +1 -50
  64. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +1 -44
  65. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +1 -100
  66. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +1 -52
  67. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +1 -64
  68. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +1 -170
  69. package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +1 -202
  70. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +1 -67
  71. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +1 -115
  72. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +1 -1110
  73. package/dist/Atomic/FormElements/Text/Text.js +1 -125
  74. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +1 -49
  75. package/dist/Atomic/FormElements/Textarea/Textarea.js +1 -80
  76. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +1 -176
  77. package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +1 -62
  78. package/dist/Atomic/FormElements/TimeRange/TimeRange.js +1 -119
  79. package/dist/Atomic/FormElements/UserContacts/UserContacts.js +1 -188
  80. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +1 -83
  81. package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +1 -82
  82. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +1 -101
  83. package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +1 -29
  84. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +1 -113
  85. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +1 -30
  86. package/dist/Atomic/Layout/Header/Header.js +1 -85
  87. package/dist/Atomic/Layout/Spinner/Spinner.js +1 -44
  88. package/dist/Atomic/UI/Accordion/Accordion.js +1 -108
  89. package/dist/Atomic/UI/Accordion/AccordionItem.js +1 -176
  90. package/dist/Atomic/UI/AccordionTable/AccordionTable.js +1 -238
  91. package/dist/Atomic/UI/AccordionText/AccordionText.js +1 -69
  92. package/dist/Atomic/UI/AdvancedTag/AdvTag.js +1 -207
  93. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +1 -56
  94. package/dist/Atomic/UI/Alert/Alert.js +1 -72
  95. package/dist/Atomic/UI/Arrow/Arrow.js +1 -132
  96. package/dist/Atomic/UI/Box/Box.js +1 -52
  97. package/dist/Atomic/UI/Button/Button.js +1 -47
  98. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +1 -72
  99. package/dist/Atomic/UI/Chart/Chart.js +1 -172
  100. package/dist/Atomic/UI/Chart/partial/Chart.constants.js +1 -95
  101. package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +1 -80
  102. package/dist/Atomic/UI/Chart/partial/datasetSetters.js +1 -188
  103. package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +1 -335
  104. package/dist/Atomic/UI/Chart/partial/optionsSetters.js +1 -43
  105. package/dist/Atomic/UI/Chart/partial/utils.js +1 -60
  106. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +1 -109
  107. package/dist/Atomic/UI/DateTime/DateTime.js +1 -57
  108. package/dist/Atomic/UI/DebugContainer/DebugContainer.js +1 -44
  109. package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +1 -15
  110. package/dist/Atomic/UI/DoubleString/DoubleString.js +1 -102
  111. package/dist/Atomic/UI/DoubleString/DoubleString.scss +8 -1
  112. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +1 -70
  113. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +1 -221
  114. package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +1 -106
  115. package/dist/Atomic/UI/Hint/Hint.js +1 -256
  116. package/dist/Atomic/UI/Hint/partials/_utils.js +1 -64
  117. package/dist/Atomic/UI/Modal/Modal.js +1 -179
  118. package/dist/Atomic/UI/Modal/ModalHOC.js +1 -97
  119. package/dist/Atomic/UI/Modal/partials/ModalFooter.js +1 -71
  120. package/dist/Atomic/UI/Modal/partials/ModalTitle.js +1 -110
  121. package/dist/Atomic/UI/Modal/partials/useMobileModal.js +1 -192
  122. package/dist/Atomic/UI/MonoAccordion/MonoAccordion._test.js +1 -75
  123. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +1 -80
  124. package/dist/Atomic/UI/NavLine/NavLine.js +1 -317
  125. package/dist/Atomic/UI/PageTitle/PageTitle.js +1 -77
  126. package/dist/Atomic/UI/PieChart/PieChart.js +1 -42
  127. package/dist/Atomic/UI/Price/Price.js +1 -31
  128. package/dist/Atomic/UI/PriceRange/PriceRange.js +1 -44
  129. package/dist/Atomic/UI/ProgressLine/ProgressLine.js +1 -98
  130. package/dist/Atomic/UI/Status/Status.js +1 -67
  131. package/dist/Atomic/UI/Table/Partials/TdCell.js +1 -87
  132. package/dist/Atomic/UI/Table/Partials/TdHeader.js +1 -38
  133. package/dist/Atomic/UI/Table/Partials/TdRow.js +1 -99
  134. package/dist/Atomic/UI/Table/Partials/TdTitle.js +1 -52
  135. package/dist/Atomic/UI/Table/Table.js +1 -63
  136. package/dist/Atomic/UI/Table/TdTypes/TdActions.js +1 -80
  137. package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +1 -28
  138. package/dist/Atomic/UI/Table/TdTypes/TdRange.js +1 -13
  139. package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +1 -53
  140. package/dist/Atomic/UI/Tag/Tag.js +1 -167
  141. package/dist/Atomic/UI/TagList/TagList.js +1 -251
  142. package/dist/Atomic/UI/UserBox/UserBox.js +1 -86
  143. package/dist/Atomic/UI/WizardStepper/constructor.js +1 -84
  144. package/dist/Atomic/UI/WizardStepper/index.js +1 -3
  145. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +1 -37
  146. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.js +1 -3
  147. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +1 -61
  148. package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.js +1 -3
  149. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +1 -39
  150. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +1 -3
  151. package/dist/Atomic/UI/WizardStepper/ui/icons.js +1 -49
  152. package/dist/Atomic/UI/WizardStepper/ui/index.js +1 -3
  153. package/dist/Classes/AbortableFetch.js +1 -454
  154. package/dist/Classes/AnimatedHandler.js +1 -47
  155. package/dist/Classes/RESTAPI/index.js +1 -228
  156. package/dist/Classes/RESTAPI/partials/AbortableFetch.js +1 -457
  157. package/dist/Classes/RESTAPI/partials/ApiBase.js +1 -48
  158. package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +1 -112
  159. package/dist/Classes/RESTAPI/partials/ApiUtils.js +1 -189
  160. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +1 -252
  161. package/dist/Classes/RESTAPI/partials/Utils.js +1 -92
  162. package/dist/Classes/RESTAPI/partials/_outerDependencies.js +1 -3
  163. package/dist/Classes/RESTAPI/partials/_utils.js +1 -197
  164. package/dist/Constants/index.constants.js +1 -78
  165. package/dist/Functions/Portal.js +1 -22
  166. package/dist/Functions/customEventListener.js +1 -96
  167. package/dist/Functions/dateTime.js +1 -149
  168. package/dist/Functions/fieldValueFormatters.js +1 -405
  169. package/dist/Functions/guards/assertions.js +1 -294
  170. package/dist/Functions/guards/safeValue.js +1 -75
  171. package/dist/Functions/guards/typeGuards.js +1 -373
  172. package/dist/Functions/hooks/useFormFieldsChangesManager.js +1 -95
  173. package/dist/Functions/locale/createTranslator.js +1 -32
  174. package/dist/Functions/operations.js +1 -130
  175. package/dist/Functions/presets/inputMaskPresets.js +1 -170
  176. package/dist/Functions/presets/inputPresets.js +1 -60
  177. package/dist/Functions/presets/mobileKeyboardTypesPresets.js +1 -45
  178. package/dist/Functions/schemas.js +1 -31
  179. package/dist/Functions/useBodyScrollLock.js +1 -17
  180. package/dist/Functions/useClickOutside.js +1 -15
  181. package/dist/Functions/useDebounce.js +1 -17
  182. package/dist/Functions/useFieldFocus.js +1 -84
  183. package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +1 -39
  184. package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +1 -159
  185. package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +1 -78
  186. package/dist/Functions/useFormTools/functions/General.js +1 -134
  187. package/dist/Functions/useFormTools/functions/RenderFields.js +1 -111
  188. package/dist/Functions/useFormTools/functions/usePrevious.js +1 -12
  189. package/dist/Functions/useFormTools/index.js +1 -778
  190. package/dist/Functions/useInputHighlightError.js +1 -67
  191. package/dist/Functions/useIsMobile/useIsMobile.js +1 -33
  192. package/dist/Functions/useKeyPress/useHandleKeyPress.js +1 -52
  193. package/dist/Functions/useKeyPress/useKeyPress.js +1 -52
  194. package/dist/Functions/useLocalStorage.js +1 -34
  195. package/dist/Functions/useLocationParams.js +1 -27
  196. package/dist/Functions/useMediaQuery.js +1 -17
  197. package/dist/Functions/useMetaInfo.js +1 -43
  198. package/dist/Functions/useMouseUpOutside.js +1 -16
  199. package/dist/Functions/useOnlineStatus.js +1 -29
  200. package/dist/Functions/usePasswordChecker.js +1 -110
  201. package/dist/Functions/usePrevious.js +1 -12
  202. package/dist/Functions/useResize.js +1 -31
  203. package/dist/Functions/useScrollTo.js +1 -17
  204. package/dist/Functions/useToggle.js +1 -17
  205. package/dist/Functions/utils.js +1 -522
  206. package/dist/Langs.js +1 -168
  207. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +1 -21
  208. package/dist/Molecular/CustomIcons/components/AlertCircle.js +1 -23
  209. package/dist/Molecular/CustomIcons/components/AppStore.js +1 -29
  210. package/dist/Molecular/CustomIcons/components/Arrow.js +1 -32
  211. package/dist/Molecular/CustomIcons/components/ArrowDown.js +1 -17
  212. package/dist/Molecular/CustomIcons/components/ArrowLeft.js +1 -22
  213. package/dist/Molecular/CustomIcons/components/ArrowRight.js +1 -22
  214. package/dist/Molecular/CustomIcons/components/ArrowUp.js +1 -17
  215. package/dist/Molecular/CustomIcons/components/Bell.js +1 -15
  216. package/dist/Molecular/CustomIcons/components/Button.js +1 -12
  217. package/dist/Molecular/CustomIcons/components/Campaigns.js +1 -16
  218. package/dist/Molecular/CustomIcons/components/Check.js +1 -14
  219. package/dist/Molecular/CustomIcons/components/Check2.js +1 -12
  220. package/dist/Molecular/CustomIcons/components/ChevronDown.js +1 -12
  221. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +1 -11
  222. package/dist/Molecular/CustomIcons/components/ChevronLeft.js +1 -11
  223. package/dist/Molecular/CustomIcons/components/ChevronRight.js +1 -11
  224. package/dist/Molecular/CustomIcons/components/ChevronUp.js +1 -11
  225. package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +1 -27
  226. package/dist/Molecular/CustomIcons/components/Close.js +1 -14
  227. package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +1 -17
  228. package/dist/Molecular/CustomIcons/components/Delete.js +1 -16
  229. package/dist/Molecular/CustomIcons/components/Edit.js +1 -15
  230. package/dist/Molecular/CustomIcons/components/Email.js +1 -31
  231. package/dist/Molecular/CustomIcons/components/FinturfLogo.js +1 -18
  232. package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +1 -35
  233. package/dist/Molecular/CustomIcons/components/Flows.js +1 -15
  234. package/dist/Molecular/CustomIcons/components/Gift.js +1 -25
  235. package/dist/Molecular/CustomIcons/components/GoogleAuth.js +1 -29
  236. package/dist/Molecular/CustomIcons/components/GooglePlay.js +1 -29
  237. package/dist/Molecular/CustomIcons/components/HelpCircle.js +1 -19
  238. package/dist/Molecular/CustomIcons/components/HelpCircle2.js +1 -20
  239. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +1 -19
  240. package/dist/Molecular/CustomIcons/components/Home.js +1 -16
  241. package/dist/Molecular/CustomIcons/components/Home2.js +1 -22
  242. package/dist/Molecular/CustomIcons/components/Key.js +1 -23
  243. package/dist/Molecular/CustomIcons/components/Landers.js +1 -20
  244. package/dist/Molecular/CustomIcons/components/Lock.js +1 -15
  245. package/dist/Molecular/CustomIcons/components/Mail.js +1 -26
  246. package/dist/Molecular/CustomIcons/components/Mastercard.js +1 -73
  247. package/dist/Molecular/CustomIcons/components/Minus.js +1 -25
  248. package/dist/Molecular/CustomIcons/components/Offers.js +1 -16
  249. package/dist/Molecular/CustomIcons/components/Pause.js +1 -28
  250. package/dist/Molecular/CustomIcons/components/PayPal.js +1 -41
  251. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +1 -28
  252. package/dist/Molecular/CustomIcons/components/Phone.js +1 -30
  253. package/dist/Molecular/CustomIcons/components/Play.js +1 -25
  254. package/dist/Molecular/CustomIcons/components/Plus.js +1 -25
  255. package/dist/Molecular/CustomIcons/components/Profile.js +1 -16
  256. package/dist/Molecular/CustomIcons/components/QRCode.js +1 -29
  257. package/dist/Molecular/CustomIcons/components/Rectangle.js +1 -12
  258. package/dist/Molecular/CustomIcons/components/Revert.js +1 -13
  259. package/dist/Molecular/CustomIcons/components/Star.js +1 -14
  260. package/dist/Molecular/CustomIcons/components/Star2.js +1 -16
  261. package/dist/Molecular/CustomIcons/components/TrafficSources.js +1 -14
  262. package/dist/Molecular/CustomIcons/components/Trash.js +1 -15
  263. package/dist/Molecular/CustomIcons/components/TrashRed.js +1 -15
  264. package/dist/Molecular/CustomIcons/components/Triggers.js +1 -15
  265. package/dist/Molecular/CustomIcons/components/User.js +1 -25
  266. package/dist/Molecular/CustomIcons/components/Visa.js +1 -31
  267. package/dist/Molecular/CustomIcons/components/X.js +1 -12
  268. package/dist/Molecular/CustomIcons/index.js +1 -61
  269. package/dist/Molecular/FormElement/FormElement.js +1 -54
  270. package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +1 -184
  271. package/dist/Molecular/FormWithDependOn/partials/_utils.js +1 -53
  272. package/dist/Molecular/InputAddress/InputAddress.js +1 -626
  273. package/dist/Molecular/InputPassword/InputPassword.js +1 -48
  274. package/dist/index.js +1 -104
  275. 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})]})}