intelicoreact 1.6.22 → 1.6.24

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