intelicoreact 1.5.40 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.js +93 -44
  2. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.scss +23 -13
  3. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +43 -38
  4. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.scss +20 -10
  5. package/dist/Atomic/FormElements/Calendar/Calendar.js +243 -164
  6. package/dist/Atomic/FormElements/Calendar/Calendar.scss +1 -0
  7. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +60 -51
  8. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +21 -11
  9. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +47 -39
  10. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.scss +5 -2
  11. package/dist/Atomic/FormElements/Datepicker/Datepicker.js +410 -308
  12. package/dist/Atomic/FormElements/Datepicker/components/Calendar.js +169 -109
  13. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +680 -527
  14. package/dist/Atomic/FormElements/Dropdown/Dropdown.scss +58 -56
  15. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +28 -15
  16. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +498 -378
  17. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.scss +33 -29
  18. package/dist/Atomic/FormElements/FileLoader/FileLoader.js +103 -70
  19. package/dist/Atomic/FormElements/FileLoader/FileLoader.scss +0 -2
  20. package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.js +138 -91
  21. package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.js +109 -55
  22. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js +254 -193
  23. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.scss +19 -16
  24. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +156 -140
  25. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.scss +8 -4
  26. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +222 -156
  27. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +158 -114
  28. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.js +151 -92
  29. package/dist/Atomic/FormElements/Input/Input.js +340 -330
  30. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +156 -110
  31. package/dist/Atomic/FormElements/InputColor/InputColor.js +57 -58
  32. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +189 -145
  33. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +294 -228
  34. package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +55 -56
  35. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +645 -536
  36. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +220 -190
  37. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +33 -31
  38. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +247 -169
  39. package/dist/Atomic/FormElements/InputLink/InputLink.js +118 -71
  40. package/dist/Atomic/FormElements/InputMask/InputCarretPosition.js +47 -38
  41. package/dist/Atomic/FormElements/InputMask/InputMask.js +938 -1053
  42. package/dist/Atomic/FormElements/InputMask/config.js +16 -15
  43. package/dist/Atomic/FormElements/InputMask/functions.js +77 -51
  44. package/dist/Atomic/FormElements/InputMask2/InputMask2.js +569 -592
  45. package/dist/Atomic/FormElements/InputMask2/config.js +16 -15
  46. package/dist/Atomic/FormElements/InputMask2/functions.js +77 -51
  47. package/dist/Atomic/FormElements/InputMask3/InputMask3.js +651 -679
  48. package/dist/Atomic/FormElements/InputMask3/config.js +16 -15
  49. package/dist/Atomic/FormElements/InputMask3/functions.js +77 -51
  50. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +127 -88
  51. package/dist/Atomic/FormElements/InputsRow/InputsRow.js +182 -111
  52. package/dist/Atomic/FormElements/Label/Label.js +82 -55
  53. package/dist/Atomic/FormElements/Label/Label.scss +18 -8
  54. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +437 -382
  55. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +88 -50
  56. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +314 -264
  57. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +93 -51
  58. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +69 -55
  59. package/dist/Atomic/FormElements/RadioInput/RadioInput.js +51 -45
  60. package/dist/Atomic/FormElements/RadioInput/RadioInput.scss +4 -4
  61. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +53 -40
  62. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +169 -120
  63. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +195 -141
  64. package/dist/Atomic/FormElements/RangeList/RangeList.js +199 -140
  65. package/dist/Atomic/FormElements/RangeList/RangeList.scss +2 -2
  66. package/dist/Atomic/FormElements/RangeList/partial/AnyOuterClass.scss +0 -3
  67. package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +57 -44
  68. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +463 -377
  69. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +760 -759
  70. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +36 -31
  71. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.scss +0 -2
  72. package/dist/Atomic/FormElements/Switcher/Switcher.js +52 -44
  73. package/dist/Atomic/FormElements/Switcher/Switcher.scss +3 -3
  74. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +43 -44
  75. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.scss +0 -2
  76. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +37 -36
  77. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.scss +0 -2
  78. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +93 -56
  79. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.scss +0 -2
  80. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +86 -53
  81. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.scss +0 -2
  82. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +46 -54
  83. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +172 -102
  84. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.scss +4 -6
  85. package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +209 -154
  86. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +59 -56
  87. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.scss +2 -2
  88. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +140 -112
  89. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +1035 -919
  90. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.scss +153 -116
  91. package/dist/Atomic/FormElements/Text/Text.js +88 -97
  92. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +44 -35
  93. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.scss +8 -8
  94. package/dist/Atomic/FormElements/Textarea/Textarea.js +102 -64
  95. package/dist/Atomic/FormElements/Textarea/Textarea.scss +4 -8
  96. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +172 -133
  97. package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +48 -49
  98. package/dist/Atomic/FormElements/TimeRange/TimeRange.js +114 -63
  99. package/dist/Atomic/FormElements/TimeRange/TimeRange.scss +9 -3
  100. package/dist/Atomic/FormElements/UserContacts/UserContacts.js +179 -122
  101. package/dist/Atomic/FormElements/UserContacts/UserContacts.scss +10 -5
  102. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +101 -65
  103. package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +80 -71
  104. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +79 -64
  105. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.scss +0 -2
  106. package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +42 -34
  107. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +102 -83
  108. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.scss +0 -2
  109. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +42 -35
  110. package/dist/Atomic/Layout/Header/Header.js +148 -80
  111. package/dist/Atomic/Layout/MainMenu/MainMenu.js +213 -133
  112. package/dist/Atomic/Layout/MainMenu/MainMenu.scss +7 -7
  113. package/dist/Atomic/Layout/Spinner/Spinner.js +39 -22
  114. package/dist/Atomic/Layout/Spinner/Spinner.scss +36 -16
  115. package/dist/Atomic/UI/Accordion/Accordion.js +102 -53
  116. package/dist/Atomic/UI/Accordion/Accordion.scss +25 -14
  117. package/dist/Atomic/UI/Accordion/AccordionItem.js +170 -102
  118. package/dist/Atomic/UI/AccordionTable/AccordionTable.js +251 -167
  119. package/dist/Atomic/UI/AccordionText/AccordionText.js +105 -54
  120. package/dist/Atomic/UI/AccordionText/AccordionText.scss +22 -9
  121. package/dist/Atomic/UI/AdvancedTag/AdvTag.js +207 -135
  122. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +100 -46
  123. package/dist/Atomic/UI/Alert/Alert.js +116 -63
  124. package/dist/Atomic/UI/Alert/Alert.scss +2 -2
  125. package/dist/Atomic/UI/Arrow/Arrow.js +163 -110
  126. package/dist/Atomic/UI/Box/Box.js +37 -37
  127. package/dist/Atomic/UI/Box/Box.scss +11 -11
  128. package/dist/Atomic/UI/Button/Button.js +43 -41
  129. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +61 -67
  130. package/dist/Atomic/UI/Chart/Chart.js +170 -96
  131. package/dist/Atomic/UI/Chart/partial/Chart.constants.js +142 -74
  132. package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +91 -77
  133. package/dist/Atomic/UI/Chart/partial/datasetSetters.js +120 -117
  134. package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +314 -292
  135. package/dist/Atomic/UI/Chart/partial/optionsSetters.js +54 -39
  136. package/dist/Atomic/UI/Chart/partial/utils.js +56 -33
  137. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +145 -88
  138. package/dist/Atomic/UI/DateTime/DateTime.js +89 -37
  139. package/dist/Atomic/UI/DateTime/DateTime.scss +2 -2
  140. package/dist/Atomic/UI/DebugContainer/DebugContainer.js +93 -31
  141. package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +66 -18
  142. package/dist/Atomic/UI/DoubleString/DoubleString.js +134 -77
  143. package/dist/Atomic/UI/DoubleString/DoubleString.scss +6 -4
  144. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +65 -22
  145. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +251 -170
  146. package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +109 -84
  147. package/dist/Atomic/UI/Hint/Hint.interface.js +4 -0
  148. package/dist/Atomic/UI/Hint/Hint.js +247 -204
  149. package/dist/Atomic/UI/Hint/Hint.scss +4 -2
  150. package/dist/Atomic/UI/Hint/Hint.stories.js +10 -5
  151. package/dist/Atomic/UI/Hint/Hint.test.js +96 -0
  152. package/dist/Atomic/UI/Hint/index.js +3 -2
  153. package/dist/Atomic/UI/Hint/partials/_utils.js +60 -46
  154. package/dist/Atomic/UI/Modal/Modal.js +171 -172
  155. package/dist/Atomic/UI/Modal/Modal.scss +91 -65
  156. package/dist/Atomic/UI/Modal/Modal.stories.js +1 -1
  157. package/dist/Atomic/UI/Modal/ModalHOC.js +92 -38
  158. package/dist/Atomic/UI/Modal/ModalMobile.scss +26 -14
  159. package/dist/Atomic/UI/Modal/partials/ModalFooter.js +68 -18
  160. package/dist/Atomic/UI/Modal/partials/ModalTitle.js +107 -38
  161. package/dist/Atomic/UI/Modal/partials/useMobileModal.js +130 -153
  162. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +118 -62
  163. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.scss +172 -25
  164. package/dist/Atomic/UI/NavLine/NavLine.js +306 -273
  165. package/dist/Atomic/UI/NavLine/NavLine.scss +202 -155
  166. package/dist/Atomic/UI/NavLine/NavLine.test.js +1 -1
  167. package/dist/Atomic/UI/PageTitle/PageTitle.js +73 -52
  168. package/dist/Atomic/UI/PageTitle/PageTitle.scss +52 -14
  169. package/dist/Atomic/UI/PieChart/PieChart.js +105 -42
  170. package/dist/Atomic/UI/PieChart/PieChart.scss +87 -11
  171. package/dist/Atomic/UI/Price/Price.js +27 -20
  172. package/dist/Atomic/UI/PriceRange/PriceRange.js +40 -18
  173. package/dist/Atomic/UI/ProgressLine/ProgressLine.js +92 -73
  174. package/dist/Atomic/UI/ProgressLine/ProgressLine.scss +66 -52
  175. package/dist/Atomic/UI/Status/Status.js +62 -51
  176. package/dist/Atomic/UI/Status/Status.scss +48 -29
  177. package/dist/Atomic/UI/Table/Partials/TdCell.js +126 -88
  178. package/dist/Atomic/UI/Table/Partials/TdHeader.js +58 -39
  179. package/dist/Atomic/UI/Table/Partials/TdRow.js +124 -73
  180. package/dist/Atomic/UI/Table/Partials/TdTitle.js +113 -45
  181. package/dist/Atomic/UI/Table/Table.js +61 -43
  182. package/dist/Atomic/UI/Table/Table.scss +0 -3
  183. package/dist/Atomic/UI/Table/TdTypes/TdActions.js +108 -64
  184. package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +44 -31
  185. package/dist/Atomic/UI/Table/TdTypes/TdRange.js +24 -10
  186. package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +59 -48
  187. package/dist/Atomic/UI/Tag/Tag.js +157 -113
  188. package/dist/Atomic/UI/Tag/Tag.scss +104 -47
  189. package/dist/Atomic/UI/TagList/TagList.js +223 -179
  190. package/dist/Atomic/UI/TagList/TagList.scss +13 -9
  191. package/dist/Atomic/UI/UserBox/UserBox.js +80 -56
  192. package/dist/Atomic/UI/UserBox/UserBox.scss +45 -21
  193. package/dist/Atomic/UI/UserBox/UserBox.test.js +2 -2
  194. package/dist/Atomic/UI/WizardStepper/constructor.js +127 -89
  195. package/dist/Atomic/UI/WizardStepper/index.js +14 -6
  196. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +53 -51
  197. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.scss +11 -7
  198. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.js +9 -5
  199. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +84 -67
  200. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.scss +13 -7
  201. package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.js +14 -6
  202. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +50 -45
  203. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.scss +24 -18
  204. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +14 -6
  205. package/dist/Atomic/UI/WizardStepper/ui/icons.js +138 -106
  206. package/dist/Atomic/UI/WizardStepper/ui/index.js +14 -6
  207. package/dist/Classes/AbortableFetch.js +394 -326
  208. package/dist/Classes/AnimatedHandler.js +31 -44
  209. package/dist/Classes/RESTAPI/index.js +131 -173
  210. package/dist/Classes/RESTAPI/partials/AbortableFetch.js +399 -334
  211. package/dist/Classes/RESTAPI/partials/ApiBase.js +30 -30
  212. package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +107 -88
  213. package/dist/Classes/RESTAPI/partials/ApiUtils.js +144 -166
  214. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +180 -204
  215. package/dist/Classes/RESTAPI/partials/Utils.js +80 -83
  216. package/dist/Classes/RESTAPI/partials/_outerDependencies.js +16 -8
  217. package/dist/Classes/RESTAPI/partials/_utils.js +139 -125
  218. package/dist/Constants/index.constants.js +102 -22
  219. package/dist/Functions/Portal.js +67 -23
  220. package/dist/Functions/customEventListener.js +48 -50
  221. package/dist/Functions/dateTime.js +130 -177
  222. package/dist/Functions/fieldValueFormatters.js +275 -346
  223. package/dist/Functions/guards/assertions.js +294 -0
  224. package/dist/Functions/guards/safeValue.js +75 -0
  225. package/dist/Functions/guards/typeGuards.js +374 -0
  226. package/dist/Functions/hooks/useFormFieldsChangesManager.js +125 -96
  227. package/dist/Functions/locale/createTranslator.js +29 -27
  228. package/dist/Functions/operations.js +129 -102
  229. package/dist/Functions/presets/inputMaskPresets.js +88 -99
  230. package/dist/Functions/presets/inputPresets.js +41 -35
  231. package/dist/Functions/presets/mobileKeyboardTypesPresets.js +30 -49
  232. package/dist/Functions/schemas.js +78 -20
  233. package/dist/Functions/useBodyScrollLock.js +21 -15
  234. package/dist/Functions/useClickOutside.js +21 -16
  235. package/dist/Functions/useDebounce.js +62 -21
  236. package/dist/Functions/useFieldFocus.js +83 -79
  237. package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +39 -46
  238. package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +132 -137
  239. package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +63 -73
  240. package/dist/Functions/useFormTools/functions/General.js +117 -129
  241. package/dist/Functions/useFormTools/functions/RenderFields.js +75 -85
  242. package/dist/Functions/useFormTools/functions/usePrevious.js +16 -10
  243. package/dist/Functions/useFormTools/index.js +647 -709
  244. package/dist/Functions/useInputHighlightError.js +104 -53
  245. package/dist/Functions/useKeyPress/useHandleKeyPress.js +40 -33
  246. package/dist/Functions/useKeyPress/useKeyPress.js +48 -39
  247. package/dist/Functions/useLocalStorage.js +38 -31
  248. package/dist/Functions/useLocationParams.js +31 -24
  249. package/dist/Functions/useMediaQuery.js +14 -10
  250. package/dist/Functions/useMetaInfo.js +45 -35
  251. package/dist/Functions/useMouseUpOutside.js +21 -15
  252. package/dist/Functions/useOnlineStatus.js +25 -21
  253. package/dist/Functions/usePasswordChecker.js +183 -111
  254. package/dist/Functions/usePrevious.js +16 -10
  255. package/dist/Functions/useResize.js +32 -28
  256. package/dist/Functions/useScrollTo.js +26 -16
  257. package/dist/Functions/useToggle.js +20 -16
  258. package/dist/Functions/utils.js +493 -469
  259. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +75 -28
  260. package/dist/Molecular/CustomIcons/components/AlertCircle.js +77 -28
  261. package/dist/Molecular/CustomIcons/components/AppStore.js +84 -32
  262. package/dist/Molecular/CustomIcons/components/Arrow.js +93 -38
  263. package/dist/Molecular/CustomIcons/components/ArrowDown.js +63 -20
  264. package/dist/Molecular/CustomIcons/components/ArrowLeft.js +71 -23
  265. package/dist/Molecular/CustomIcons/components/ArrowRight.js +71 -23
  266. package/dist/Molecular/CustomIcons/components/ArrowUp.js +63 -20
  267. package/dist/Molecular/CustomIcons/components/Bell.js +61 -18
  268. package/dist/Molecular/CustomIcons/components/Button.js +61 -18
  269. package/dist/Molecular/CustomIcons/components/Campaigns.js +62 -19
  270. package/dist/Molecular/CustomIcons/components/Check.js +62 -19
  271. package/dist/Molecular/CustomIcons/components/Check2.js +61 -18
  272. package/dist/Molecular/CustomIcons/components/ChevronDown.js +61 -18
  273. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +61 -18
  274. package/dist/Molecular/CustomIcons/components/ChevronLeft.js +61 -18
  275. package/dist/Molecular/CustomIcons/components/ChevronRight.js +61 -18
  276. package/dist/Molecular/CustomIcons/components/ChevronUp.js +61 -18
  277. package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +81 -33
  278. package/dist/Molecular/CustomIcons/components/Close.js +64 -20
  279. package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +95 -45
  280. package/dist/Molecular/CustomIcons/components/Delete.js +62 -19
  281. package/dist/Molecular/CustomIcons/components/Edit.js +61 -18
  282. package/dist/Molecular/CustomIcons/components/Email.js +87 -36
  283. package/dist/Molecular/CustomIcons/components/FinturfLogo.js +82 -26
  284. package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +83 -34
  285. package/dist/Molecular/CustomIcons/components/Flows.js +61 -18
  286. package/dist/Molecular/CustomIcons/components/Gift.js +71 -23
  287. package/dist/Molecular/CustomIcons/components/GoogleAuth.js +84 -32
  288. package/dist/Molecular/CustomIcons/components/GooglePlay.js +84 -32
  289. package/dist/Molecular/CustomIcons/components/HelpCircle.js +67 -21
  290. package/dist/Molecular/CustomIcons/components/HelpCircle2.js +68 -22
  291. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +67 -21
  292. package/dist/Molecular/CustomIcons/components/Home.js +67 -21
  293. package/dist/Molecular/CustomIcons/components/Home2.js +70 -24
  294. package/dist/Molecular/CustomIcons/components/Key.js +69 -26
  295. package/dist/Molecular/CustomIcons/components/Landers.js +68 -22
  296. package/dist/Molecular/CustomIcons/components/Lock.js +61 -18
  297. package/dist/Molecular/CustomIcons/components/Mail.js +75 -26
  298. package/dist/Molecular/CustomIcons/components/Mastercard.js +128 -68
  299. package/dist/Molecular/CustomIcons/components/Minus.js +79 -31
  300. package/dist/Molecular/CustomIcons/components/Offers.js +62 -19
  301. package/dist/Molecular/CustomIcons/components/Pause.js +79 -31
  302. package/dist/Molecular/CustomIcons/components/PayPal.js +96 -45
  303. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +81 -32
  304. package/dist/Molecular/CustomIcons/components/Phone.js +81 -33
  305. package/dist/Molecular/CustomIcons/components/Play.js +79 -31
  306. package/dist/Molecular/CustomIcons/components/Plus.js +79 -31
  307. package/dist/Molecular/CustomIcons/components/Profile.js +69 -23
  308. package/dist/Molecular/CustomIcons/components/QRCode.js +85 -33
  309. package/dist/Molecular/CustomIcons/components/Rectangle.js +61 -18
  310. package/dist/Molecular/CustomIcons/components/Revert.js +67 -21
  311. package/dist/Molecular/CustomIcons/components/Star.js +60 -17
  312. package/dist/Molecular/CustomIcons/components/Star2.js +62 -19
  313. package/dist/Molecular/CustomIcons/components/TrafficSources.js +68 -21
  314. package/dist/Molecular/CustomIcons/components/Trash.js +61 -18
  315. package/dist/Molecular/CustomIcons/components/TrashRed.js +61 -18
  316. package/dist/Molecular/CustomIcons/components/Triggers.js +61 -18
  317. package/dist/Molecular/CustomIcons/components/User.js +71 -23
  318. package/dist/Molecular/CustomIcons/components/Visa.js +88 -34
  319. package/dist/Molecular/CustomIcons/components/X.js +61 -18
  320. package/dist/Molecular/CustomIcons/index.js +76 -674
  321. package/dist/Molecular/FormElement/FormElement.js +44 -41
  322. package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +179 -161
  323. package/dist/Molecular/FormWithDependOn/partials/_utils.js +49 -56
  324. package/dist/Molecular/InputAddress/InputAddress.js +496 -421
  325. package/dist/Molecular/InputAddress/InputAddress.scss +12 -14
  326. package/dist/Molecular/InputPassword/InputPassword.js +99 -47
  327. package/dist/index.js +11 -8
  328. package/dist/scss/_mixins.scss +2 -2
  329. package/dist/scss/_vars.scss +1 -2
  330. package/dist/scss/main.scss +4 -3
  331. package/dist/types/declaration/ArrayElement.d.js +4 -0
  332. package/dist/types/declaration/AsyncReturnType.d.js +4 -0
  333. package/dist/types/declaration/DeepPartial.d.js +4 -0
  334. package/dist/types/declaration/DeepReadonly.d.js +4 -0
  335. package/dist/types/declaration/DeepRequired.d.js +4 -0
  336. package/dist/types/declaration/Flatten.d.js +4 -0
  337. package/dist/types/declaration/FunctionType.d.js +4 -0
  338. package/dist/types/declaration/If.d.js +4 -0
  339. package/dist/types/declaration/KeysType.d.js +4 -0
  340. package/dist/types/declaration/NonNullableType.d.js +4 -0
  341. package/dist/types/declaration/ObjectType.d.js +4 -0
  342. package/dist/types/declaration/OnlyObjectKeys.d.js +4 -0
  343. package/dist/types/declaration/PrettyPrint.d.js +31 -0
  344. package/dist/types/declaration/RequiredFields.d.js +4 -0
  345. package/dist/types/declaration/TupleType.d.js +4 -0
  346. package/dist/types/declaration/ValuesType.d.js +4 -0
  347. package/package.json +18 -21
  348. package/dist/Atomic/UI/NavLine/Tabs.js +0 -115
  349. package/dist/Functions/animatingFunctions/getAnimatedHandler.js +0 -1
  350. package/dist/Functions/useIsMobile.js +0 -26
@@ -1,503 +1,527 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
2
  Object.defineProperty(exports, "__esModule", {
5
- value: true
3
+ value: true
6
4
  });
7
- exports.disableDefaultBehavior = exports.debounce = exports.compareAlphabetical = exports.compare = exports.clone = exports.checkedRef = exports.changeMeta = exports.capitalized = exports.addBitDepthPoints = void 0;
8
- exports.downloadEmulation = downloadEmulation;
9
- exports.throttle = exports.setCarretToEnd = exports.renderFileSize = exports.omitKeys = exports.logout = exports.handleObjectChange = exports.getUniqueFileExtensions = exports.getStyles = exports.getResponseClone = exports.getOS = exports.getLimitedMask = exports.getIsOnlyAnObject = exports.getCorrectTestId = exports.getColorById = exports.getBase64 = exports.firstLetterCapital = exports.downloadFile = void 0;
10
- exports.transformDateOrTimeOrTogetherToFormat = transformDateOrTimeOrTogetherToFormat;
11
- exports.transformDateOrTimeOrTogetherToFormattedLocal = transformDateOrTimeOrTogetherToFormattedLocal;
12
- exports.transformLocalTimeToUTC = transformLocalTimeToUTC;
13
- exports.transformUTCHoursToLocal = transformUTCHoursToLocal;
14
- exports.transformUTCTimeToLocal = transformUTCTimeToLocal;
15
- exports.uuid = exports.useOutsideToggle = void 0;
16
- var _react = require("react");
17
- var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
18
- var _index = require("../Constants/index.constants");
19
- const uuid = () => Date.now().toString(36) + Math.random().toString(36).substring(2);
20
- exports.uuid = uuid;
21
- const getIsOnlyAnObject = input => typeof input === "object" && input instanceof Object && !Array.isArray(input);
22
-
23
- /* eslint-disable guard-for-in, no-unused-vars */
24
- exports.getIsOnlyAnObject = getIsOnlyAnObject;
25
- const handleObjectChange = (updateObject, updateFunction) => function (data) {
26
- let prop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
27
- let isNumber = arguments.length > 2 ? arguments[2] : undefined;
28
- let value;
29
- if (data?.target) {
30
- value = data.target.type === "checkbox" ? data.target.checked : data.target.value;
31
- } else value = data;
32
- value = isNumber ? Number(value) : value;
33
- const props = prop.split(".");
34
- const currentObject = props.reduce((res, chapter, index) => {
35
- if (props.length !== index + 1) res = res[chapter];
36
- return res;
37
- }, updateObject);
38
- currentObject[props.pop()] = value;
39
- updateFunction();
40
- };
41
- exports.handleObjectChange = handleObjectChange;
42
- const useOutsideToggle = (ref, setOut, open) => {
43
- function handleClickOutside(event) {
44
- if (ref.current && !ref.current.contains(event.target)) {
45
- setOut(open);
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ addBitDepthPoints: function() {
13
+ return addBitDepthPoints;
14
+ },
15
+ capitalized: function() {
16
+ return capitalized;
17
+ },
18
+ changeMeta: function() {
19
+ return changeMeta;
20
+ },
21
+ checkedRef: function() {
22
+ return checkedRef;
23
+ },
24
+ clone: function() {
25
+ return clone;
26
+ },
27
+ compare: function() {
28
+ return compare;
29
+ },
30
+ compareAlphabetical: function() {
31
+ return compareAlphabetical;
32
+ },
33
+ debounce: function() {
34
+ return debounce;
35
+ },
36
+ disableDefaultBehavior: function() {
37
+ return disableDefaultBehavior;
38
+ },
39
+ downloadEmulation: function() {
40
+ return downloadEmulation;
41
+ },
42
+ downloadFile: function() {
43
+ return downloadFile;
44
+ },
45
+ firstLetterCapital: function() {
46
+ return firstLetterCapital;
47
+ },
48
+ getBase64: function() {
49
+ return getBase64;
50
+ },
51
+ getColorById: function() {
52
+ return getColorById;
53
+ },
54
+ getCorrectTestId: function() {
55
+ return getCorrectTestId;
56
+ },
57
+ getIsOnlyAnObject: function() {
58
+ return getIsOnlyAnObject;
59
+ },
60
+ getLimitedMask: function() {
61
+ return getLimitedMask;
62
+ },
63
+ getOS: function() {
64
+ return getOS;
65
+ },
66
+ getResponseClone: function() {
67
+ return getResponseClone;
68
+ },
69
+ getStyles: function() {
70
+ return getStyles;
71
+ },
72
+ getUniqueFileExtensions: function() {
73
+ return getUniqueFileExtensions;
74
+ },
75
+ handleObjectChange: function() {
76
+ return handleObjectChange;
77
+ },
78
+ logout: function() {
79
+ return logout;
80
+ },
81
+ omitKeys: function() {
82
+ return omitKeys;
83
+ },
84
+ renderFileSize: function() {
85
+ return renderFileSize;
86
+ },
87
+ setCarretToEnd: function() {
88
+ return setCarretToEnd;
89
+ },
90
+ throttle: function() {
91
+ return throttle;
92
+ },
93
+ transformDateOrTimeOrTogetherToFormat: function() {
94
+ return transformDateOrTimeOrTogetherToFormat;
95
+ },
96
+ transformDateOrTimeOrTogetherToFormattedLocal: function() {
97
+ return transformDateOrTimeOrTogetherToFormattedLocal;
98
+ },
99
+ transformLocalTimeToUTC: function() {
100
+ return transformLocalTimeToUTC;
101
+ },
102
+ transformUTCHoursToLocal: function() {
103
+ return transformUTCHoursToLocal;
104
+ },
105
+ transformUTCTimeToLocal: function() {
106
+ return transformUTCTimeToLocal;
107
+ },
108
+ useOutsideToggle: function() {
109
+ return useOutsideToggle;
110
+ },
111
+ uuid: function() {
112
+ return uuid;
46
113
  }
47
- }
48
- (0, _react.useEffect)(() => {
49
- document.addEventListener("mouseup", handleClickOutside);
50
- return () => {
51
- // Unbind the event listener on clean up
52
- document.removeEventListener("mouseup", handleClickOutside);
114
+ });
115
+ const _react = require("react");
116
+ const _momenttimezone = /*#__PURE__*/ _interop_require_default(require("moment-timezone"));
117
+ const _indexconstants = require("../Constants/index.constants");
118
+ function _interop_require_default(obj) {
119
+ return obj && obj.__esModule ? obj : {
120
+ default: obj
53
121
  };
54
- }, [ref]);
122
+ }
123
+ const uuid = ()=>Date.now().toString(36) + Math.random().toString(36).substring(2);
124
+ const getIsOnlyAnObject = (input)=>typeof input === "object" && input instanceof Object && !Array.isArray(input);
125
+ const handleObjectChange = (updateObject, updateFunction)=>(data, prop = "", isNumber)=>{
126
+ let value;
127
+ if (data === null || data === void 0 ? void 0 : data.target) {
128
+ value = data.target.type === "checkbox" ? data.target.checked : data.target.value;
129
+ } else value = data;
130
+ value = isNumber ? Number(value) : value;
131
+ const props = prop.split(".");
132
+ const currentObject = props.reduce((res, chapter, index)=>{
133
+ if (props.length !== index + 1) res = res[chapter];
134
+ return res;
135
+ }, updateObject);
136
+ currentObject[props.pop()] = value;
137
+ updateFunction();
138
+ };
139
+ const useOutsideToggle = (ref, setOut, open)=>{
140
+ function handleClickOutside(event) {
141
+ if (ref.current && !ref.current.contains(event.target)) {
142
+ setOut(open);
143
+ }
144
+ }
145
+ (0, _react.useEffect)(()=>{
146
+ document.addEventListener("mouseup", handleClickOutside);
147
+ return ()=>{
148
+ // Unbind the event listener on clean up
149
+ document.removeEventListener("mouseup", handleClickOutside);
150
+ };
151
+ }, [
152
+ ref
153
+ ]);
55
154
  };
56
-
57
- // export const clone = obj => {
58
- // const data = obj instanceof Array ? [] : {};
59
- // for (const i in obj) data[i] = typeof obj[i] === 'object' && obj[i] != null ? clone(obj[i]) : obj[i];
60
- // return data;
61
- // };
62
- // ! Этот правильнее
63
- exports.useOutsideToggle = useOutsideToggle;
64
- const clone = input => {
65
- if (input === null || typeof input !== "object") return input;
66
- const data = input instanceof Array ? [] : {};
67
- for (const i in input) data[i] = clone(input[i]);
68
- return data;
155
+ const clone = (input)=>{
156
+ if (input === null || typeof input !== "object") return input;
157
+ const data = input instanceof Array ? [] : {};
158
+ for(const i in input)data[i] = clone(input[i]);
159
+ return data;
69
160
  };
70
- exports.clone = clone;
71
- const getResponseClone = async res => await (typeof res?.clone === "function" ? res.clone() : clone(res));
72
-
73
- //TimeUtils
74
- exports.getResponseClone = getResponseClone;
75
- function transformUTCTimeToLocal(date) {
76
- let format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "YYYY-MM-DD HH:mm:ss";
77
- if (!date) return;
78
- const utcDate = _momentTimezone.default.utc(date).toDate();
79
- return (0, _momentTimezone.default)(utcDate, format).local().format(format);
161
+ const getResponseClone = async (res)=>await (typeof (res === null || res === void 0 ? void 0 : res.clone) === "function" ? res.clone() : clone(res));
162
+ function transformUTCTimeToLocal(date, format = "YYYY-MM-DD HH:mm:ss") {
163
+ if (!date) return;
164
+ const utcDate = _momenttimezone.default.utc(date).toDate();
165
+ return (0, _momenttimezone.default)(utcDate, format).local().format(format);
80
166
  }
81
- function transformLocalTimeToUTC(date) {
82
- let format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "YYYY-MM-DD HH:mm:ss";
83
- if (!date) return;
84
- return (0, _momentTimezone.default)(date, format).utc().format(format);
167
+ function transformLocalTimeToUTC(date, format = "YYYY-MM-DD HH:mm:ss") {
168
+ if (!date) return;
169
+ return (0, _momenttimezone.default)(date, format).utc().format(format);
85
170
  }
86
- function transformUTCHoursToLocal(time) {
87
- let format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "HH:mm:ss";
88
- if (!time) return;
89
- const splitedTime = time.split(":");
90
- const offset = (0, _momentTimezone.default)().utcOffset();
91
- let HH = Number(splitedTime[0]);
92
- let mm = Number(splitedTime[1]);
93
- const ss = splitedTime[2];
94
- mm = mm + offset;
95
- while (mm > 59) {
96
- mm -= 60;
97
- HH += 1;
98
- }
99
- if (HH > 23) HH -= 24;
100
- while (mm < 0) {
101
- mm += 60;
102
- HH -= 1;
103
- }
104
- if (HH < 0) HH += 24;
105
- return `${HH}:${mm}:${ss}`;
171
+ function transformUTCHoursToLocal(time, format = "HH:mm:ss") {
172
+ if (!time) return;
173
+ const splitedTime = time.split(":");
174
+ const offset = (0, _momenttimezone.default)().utcOffset();
175
+ let HH = Number(splitedTime[0]);
176
+ let mm = Number(splitedTime[1]);
177
+ const ss = splitedTime[2];
178
+ mm = mm + offset;
179
+ while(mm > 59){
180
+ mm -= 60;
181
+ HH += 1;
182
+ }
183
+ if (HH > 23) HH -= 24;
184
+ while(mm < 0){
185
+ mm += 60;
186
+ HH -= 1;
187
+ }
188
+ if (HH < 0) HH += 24;
189
+ return `${HH}:${mm}:${ss}`;
106
190
  }
107
-
108
- //? Намерянно значением по умолчанию назначаю самый информационно-маленький паттерн
109
- function transformDateOrTimeOrTogetherToFormat(data) {
110
- let outputFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "HH:mm";
111
- let additional = arguments.length > 2 ? arguments[2] : undefined;
112
- const ERROR_VALUE = "Invalid date";
113
- const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;
114
- const {
115
- parseFormat,
116
- isReturnAsMomentInstance
117
- } = getIsOnlyAnObject(additional) ? additional : {};
118
- if (typeof data !== "string" && typeof data !== "number") {
119
- return isReturnAsMomentInstance ? (0, _momentTimezone.default)("error") : ERROR_MESSGE;
120
- }
121
-
122
- //? Игнорируем parseFormat, если data пришла как timestamp или если parseFormat не строка
123
- const momentArgs = [data, ...(!Number.isNaN(Number(data)) || typeof parseFormat === "string" ? [] : [parseFormat])];
124
-
125
- //? Задача получить moment-экземпляр, валидный либо невалидный
126
- const momentInstance = (() => {
127
- let instance = (0, _momentTimezone.default)(...momentArgs);
128
-
129
- //? Проверяем валидность moment-экземпляр-а путем попытки привести его к выходному формату
130
- //? Попадем в этот кейс если
131
- //? - data это timestamp
132
- //? - data это строка в формате date-time
133
- //? - data это строка в формате date (в этом случае время выставится 00:00:00)
134
- if (instance.format(outputFormat) !== ERROR_VALUE) return instance;
135
- //? Если же приведение не удалось, то предполагаем, что data пришла в формате time
136
- //? В этом случае создадим объект от текущей даты, распарсим data и установим время
137
- //? Корректно обработаются паттерны: 'HH*mm', 'HH*mm*ss', 'HH*mm*ss*любое_количество_ms', где * - любой разделитель
138
- else if (/^\d\d.\d\d/.test(data)) {
139
- instance = (0, _momentTimezone.default)();
140
- const symbols = data.split("");
141
- const timeArr = symbols.reduce((acc, symbol, idx) => {
142
- if (Number.isNaN(Number(symbol))) {
143
- if (acc.group) acc.result.push(acc.group);
144
- acc.group = "";
145
- } else acc.group = `${acc.group}${symbol}`;
146
- if (idx === symbols.length - 1 && acc.group) acc.result.push(acc.group);
147
- return acc;
148
- }, {
149
- result: [],
150
- group: ""
151
- })
152
- //? reverse используется исключительно для того, чтобы после можно было использовать метод pop, а не shift,
153
- //? т.к. методы добавления/извлечения относительно конца массива работают быстрее,
154
- //? чем аналогичные относительно начала массива
155
- .result.reverse();
156
- instance.hours(Number(timeArr.pop()));
157
- instance.minutes(Number(timeArr.pop()));
158
- instance.seconds(timeArr.length ? Number(timeArr.pop()) : 0);
159
- instance.milliseconds(timeArr.length ? Number(timeArr.pop()) : 0);
160
- } else instance = (0, _momentTimezone.default)("error"); //? Иначе создаем заведомо невалидный moment-экземпляр
161
-
162
- return instance;
163
- })();
164
- if (isReturnAsMomentInstance) return momentInstance;
165
- const output = momentInstance.format(outputFormat);
166
- return output === ERROR_VALUE ? ERROR_MESSGE : output;
191
+ function transformDateOrTimeOrTogetherToFormat(data, outputFormat = "HH:mm", additional) {
192
+ const ERROR_VALUE = "Invalid date";
193
+ const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;
194
+ const { parseFormat, isReturnAsMomentInstance } = getIsOnlyAnObject(additional) ? additional : {};
195
+ if (typeof data !== "string" && typeof data !== "number") {
196
+ return isReturnAsMomentInstance ? (0, _momenttimezone.default)("error") : ERROR_MESSGE;
197
+ }
198
+ //? Игнорируем parseFormat, если data пришла как timestamp или если parseFormat не строка
199
+ const momentArgs = [
200
+ data,
201
+ ...!Number.isNaN(Number(data)) || typeof parseFormat === "string" ? [] : [
202
+ parseFormat
203
+ ]
204
+ ];
205
+ //? Задача получить moment-экземпляр, валидный либо невалидный
206
+ const momentInstance = (()=>{
207
+ let instance = (0, _momenttimezone.default)(...momentArgs);
208
+ //? Проверяем валидность moment-экземпляр-а путем попытки привести его к выходному формату
209
+ //? Попадем в этот кейс если
210
+ //? - data это timestamp
211
+ //? - data это строка в формате date-time
212
+ //? - data это строка в формате date (в этом случае время выставится 00:00:00)
213
+ if (instance.format(outputFormat) !== ERROR_VALUE) return instance;
214
+ else if (/^\d\d.\d\d/.test(data)) {
215
+ instance = (0, _momenttimezone.default)();
216
+ const symbols = data.split("");
217
+ const timeArr = symbols.reduce((acc, symbol, idx)=>{
218
+ if (Number.isNaN(Number(symbol))) {
219
+ if (acc.group) acc.result.push(acc.group);
220
+ acc.group = "";
221
+ } else acc.group = `${acc.group}${symbol}`;
222
+ if (idx === symbols.length - 1 && acc.group) acc.result.push(acc.group);
223
+ return acc;
224
+ }, {
225
+ result: [],
226
+ group: ""
227
+ })//? reverse используется исключительно для того, чтобы после можно было использовать метод pop, а не shift,
228
+ //? т.к. методы добавления/извлечения относительно конца массива работают быстрее,
229
+ //? чем аналогичные относительно начала массива
230
+ .result.reverse();
231
+ instance.hours(Number(timeArr.pop()));
232
+ instance.minutes(Number(timeArr.pop()));
233
+ instance.seconds(timeArr.length ? Number(timeArr.pop()) : 0);
234
+ instance.milliseconds(timeArr.length ? Number(timeArr.pop()) : 0);
235
+ } else instance = (0, _momenttimezone.default)("error"); //? Иначе создаем заведомо невалидный moment-экземпляр
236
+ return instance;
237
+ })();
238
+ if (isReturnAsMomentInstance) return momentInstance;
239
+ const output = momentInstance.format(outputFormat);
240
+ return output === ERROR_VALUE ? ERROR_MESSGE : output;
167
241
  }
168
-
169
- //? Намерянно значением по умолчанию назначаю самый информационно-маленький паттерн
170
- function transformDateOrTimeOrTogetherToFormattedLocal(data) {
171
- let outputFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "HH:mm";
172
- let additional = arguments.length > 2 ? arguments[2] : undefined;
173
- const ERROR_VALUE = "Invalid date";
174
- const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;
175
- if (additional && !getIsOnlyAnObject(additional)) {
176
- throw new Error("Bad additional [transformDateOrTimeOrTogetherToFormattedLocal]");
177
- }
178
- const compositeAdditional = {
179
- ...(additional || {}),
180
- isReturnAsMomentInstance: true
181
- };
182
- const date = transformDateOrTimeOrTogetherToFormat(data, outputFormat, compositeAdditional);
183
- const dateWithLocale = date.add((0, _momentTimezone.default)().utcOffset(), "minutes");
184
- const output = dateWithLocale.format(outputFormat);
185
- return output === ERROR_VALUE ? ERROR_MESSGE : output;
242
+ function transformDateOrTimeOrTogetherToFormattedLocal(data, outputFormat = "HH:mm", additional) {
243
+ const ERROR_VALUE = "Invalid date";
244
+ const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;
245
+ if (additional && !getIsOnlyAnObject(additional)) {
246
+ throw new Error("Bad additional [transformDateOrTimeOrTogetherToFormattedLocal]");
247
+ }
248
+ const compositeAdditional = {
249
+ ...additional || {},
250
+ isReturnAsMomentInstance: true
251
+ };
252
+ const date = transformDateOrTimeOrTogetherToFormat(data, outputFormat, compositeAdditional);
253
+ const dateWithLocale = date.add((0, _momenttimezone.default)().utcOffset(), "minutes");
254
+ const output = dateWithLocale.format(outputFormat);
255
+ return output === ERROR_VALUE ? ERROR_MESSGE : output;
186
256
  }
187
-
188
- //принимает обьект и массив ключей обьекта
189
- //возвращает обьект с теми полями, которых нет в массиве ключей
190
- const omitKeys = function () {
191
- let obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
192
- let keys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
193
- return keys.reduce((acc, key) => {
194
- const {
195
- [key]: omit,
196
- ...rest
197
- } = acc;
198
- return rest;
199
- }, obj);
257
+ const omitKeys = (obj = {}, keys = [])=>keys.reduce((acc, key)=>{
258
+ const { [key]: omit, ...rest } = acc;
259
+ return rest;
260
+ }, obj);
261
+ const logout = ()=>{
262
+ window.localStorage.removeItem("accessToken");
263
+ window.localStorage.removeItem("tokenExpires");
264
+ window.location.reload();
200
265
  };
201
- exports.omitKeys = omitKeys;
202
- const logout = () => {
203
- window.localStorage.removeItem("accessToken");
204
- window.localStorage.removeItem("tokenExpires");
205
- window.location.reload();
266
+ const getStyles = (el, prop)=>{
267
+ if (!el) return null;
268
+ if (!prop) return window.getComputedStyle(el);
269
+ return window.getComputedStyle(el).getPropertyValue(prop);
206
270
  };
207
- exports.logout = logout;
208
- const getStyles = (el, prop) => {
209
- if (!el) return null;
210
- if (!prop) return window.getComputedStyle(el);
211
- return window.getComputedStyle(el).getPropertyValue(prop);
212
- };
213
- exports.getStyles = getStyles;
214
- const getColorById = (id, colors) => {
215
- if (!id) return "#FF7D00";
216
- const idToArr = Array.from(id);
217
- const colorsArr = colors && colors.length > 0 ? colors : _index.DEFAULT_COLORS;
218
- let number = idToArr.reduce((acc, item) => {
219
- if (Number(item)) {
220
- return acc + Number(item);
221
- }
222
- return acc;
223
- }, 0);
224
- while (number >= colorsArr.length) {
225
- number -= colorsArr.length;
226
- }
227
- return colorsArr[number];
228
- };
229
- exports.getColorById = getColorById;
230
- const debounce = (fn, ms) => {
231
- let id = null;
232
- return function () {
233
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
234
- args[_key] = arguments[_key];
271
+ const getColorById = (id, colors)=>{
272
+ if (!id) return "#FF7D00";
273
+ const idToArr = Array.from(id);
274
+ const colorsArr = colors && colors.length > 0 ? colors : _indexconstants.DEFAULT_COLORS;
275
+ let number = idToArr.reduce((acc, item)=>{
276
+ if (Number(item)) {
277
+ return acc + Number(item);
278
+ }
279
+ return acc;
280
+ }, 0);
281
+ while(number >= colorsArr.length){
282
+ number -= colorsArr.length;
235
283
  }
236
- clearTimeout(id);
237
- id = setTimeout(() => {
238
- clearTimeout(id);
239
- fn(...args);
240
- }, ms);
241
- };
284
+ return colorsArr[number];
242
285
  };
243
- exports.debounce = debounce;
244
- const throttle = (fn, ms) => {
245
- let id = null;
246
- return function () {
247
- if (id) return;
248
- fn(...arguments);
249
- id = setTimeout(() => {
250
- clearTimeout(id);
251
- id = null;
252
- }, ms);
253
- };
286
+ const debounce = (fn, ms)=>{
287
+ let id = null;
288
+ return (...args)=>{
289
+ clearTimeout(id);
290
+ id = setTimeout(()=>{
291
+ clearTimeout(id);
292
+ fn(...args);
293
+ }, ms);
294
+ };
254
295
  };
255
- exports.throttle = throttle;
256
- const addBitDepthPoints = function (value) {
257
- let step = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;
258
- //содержит ли value точку
259
- const isFraction = value?.includes(".");
260
-
261
- //взять строку до точки
262
- const valueBeforeDot = isFraction ? value?.slice(0, value?.indexOf(".")) : value;
263
-
264
- //расстановка запятых после каждой 3й цифры с конца
265
- const intPart = valueBeforeDot.split("").reverse().reduce((acc, item, idx) => idx % step === 0 && idx !== 0 ? [...acc, ",", item] : [...acc, item], []).reverse().join("");
266
- return isFraction ? intPart + value?.slice(value?.indexOf(".")) : intPart;
296
+ const throttle = (fn, ms)=>{
297
+ let id = null;
298
+ return (...args)=>{
299
+ if (id) return;
300
+ fn(...args);
301
+ id = setTimeout(()=>{
302
+ clearTimeout(id);
303
+ id = null;
304
+ }, ms);
305
+ };
267
306
  };
268
- exports.addBitDepthPoints = addBitDepthPoints;
269
- const changeMeta = function (key) {
270
- let items = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
271
- const defaultMeta = items.find(i => i.key === "default");
272
- if (key) {
273
- const item = items.find(i => i.key === key);
274
- document.title = item?.title ?? defaultMeta?.title;
275
- document.querySelector('meta[name="description"]').setAttribute("content", item?.description ?? defaultMeta?.description);
276
- }
307
+ const addBitDepthPoints = (value, step = 3)=>{
308
+ //содержит ли value точку
309
+ const isFraction = value === null || value === void 0 ? void 0 : value.includes(".");
310
+ //взять строку до точки
311
+ const valueBeforeDot = isFraction ? value === null || value === void 0 ? void 0 : value.slice(0, value === null || value === void 0 ? void 0 : value.indexOf(".")) : value;
312
+ //расстановка запятых после каждой цифры с конца
313
+ const intPart = valueBeforeDot.split("").reverse().reduce((acc, item, idx)=>idx % step === 0 && idx !== 0 ? [
314
+ ...acc,
315
+ ",",
316
+ item
317
+ ] : [
318
+ ...acc,
319
+ item
320
+ ], []).reverse().join("");
321
+ return isFraction ? intPart + (value === null || value === void 0 ? void 0 : value.slice(value === null || value === void 0 ? void 0 : value.indexOf("."))) : intPart;
277
322
  };
278
- exports.changeMeta = changeMeta;
279
- const firstLetterCapital = str => typeof str === "string" ? `${str.charAt(0).toUpperCase()}${str.slice(1)}` : str;
280
- exports.firstLetterCapital = firstLetterCapital;
281
- const capitalized = exports.capitalized = firstLetterCapital;
282
- const checkedRef = ref => ref ? typeof ref === "function" ? node => ref(node) : ref : null;
283
- exports.checkedRef = checkedRef;
284
- function downloadEmulation(data, filename) {
285
- let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "image/*";
286
- const file = new Blob([data], {
287
- type
288
- });
289
- if (window.navigator.msSaveOrOpenBlob)
290
- // IE10+
291
- window.navigator.msSaveOrOpenBlob(file, filename);else {
292
- // Others
293
- const a = document.createElement("a"),
294
- url = URL.createObjectURL(file);
295
- a.href = url;
296
- a.download = filename;
297
- document.body.appendChild(a);
298
- a.click();
299
- setTimeout(() => {
300
- document.body.removeChild(a);
301
- window.URL.revokeObjectURL(url);
302
- }, 0);
303
- }
304
- }
305
- const downloadFile = async _ref => {
306
- let {
307
- url,
308
- name,
309
- type
310
- } = _ref;
311
- const response = await fetch(url).then(async res => ({
312
- data: await res.blob(),
313
- type: type ?? res.headers.get("content-type")
314
- }));
315
- downloadEmulation(response.data, name, response.type);
323
+ const changeMeta = (key, items = [])=>{
324
+ const defaultMeta = items.find((i)=>i.key === "default");
325
+ if (key) {
326
+ const item = items.find((i)=>i.key === key);
327
+ var _item_title;
328
+ document.title = (_item_title = item === null || item === void 0 ? void 0 : item.title) !== null && _item_title !== void 0 ? _item_title : defaultMeta === null || defaultMeta === void 0 ? void 0 : defaultMeta.title;
329
+ var _item_description;
330
+ document.querySelector('meta[name="description"]').setAttribute("content", (_item_description = item === null || item === void 0 ? void 0 : item.description) !== null && _item_description !== void 0 ? _item_description : defaultMeta === null || defaultMeta === void 0 ? void 0 : defaultMeta.description);
331
+ }
316
332
  };
317
- exports.downloadFile = downloadFile;
318
- const compare = function (first, second) {
319
- let keys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
320
- //? Если типы НЕ равны - не равны априори
321
- if (typeof first !== typeof second) return false;
322
- //? Если ответы на вопрос "массив ли?" не равны, то не равны и типы, значит тоже не равны априори
323
- if (Array.isArray(first) !== Array.isArray(second)) return false;
324
- //? Если прошли if-ку - типы условно равны, можем оценивать тип лишь одного параметра, это будет справедливо и для второго
325
-
326
- //? Если примитивы - просто сравниваем. Кейс с null обработан тут.
327
- if (!(first instanceof Object)) return first === second;
328
-
329
- //? Если НЕ приметивы - не важно массив или нет, методы объекта для массива тоже доступны
330
-
331
- const getComparationStructure = data => {
332
- if (typeof data === 'function') return data.toString();
333
- if (!(data instanceof Object)) return data;
334
- return Object.entries(data).sort((a, b) => a[0].localeCompare(b[0])).map(_ref2 => {
335
- let [key, value] = _ref2;
336
- return [key, getComparationStructure(data[key])];
333
+ const firstLetterCapital = (str)=>typeof str === "string" ? `${str.charAt(0).toUpperCase()}${str.slice(1)}` : str;
334
+ const capitalized = firstLetterCapital;
335
+ const checkedRef = (ref)=>ref ? typeof ref === "function" ? (node)=>ref(node) : ref : null;
336
+ function downloadEmulation(data, filename, type = "image/*") {
337
+ const file = new Blob([
338
+ data
339
+ ], {
340
+ type
337
341
  });
338
- };
339
-
340
- //? Получаем структуры для сравнения (с учетом глубины) - массивы массивов, сортируем по ключам,
341
- const structureForComparingOfFirst = getComparationStructure(first);
342
- const structureForComparingOfSecond = getComparationStructure(second);
343
- return JSON.stringify(structureForComparingOfFirst) === JSON.stringify(structureForComparingOfSecond);
342
+ if (window.navigator.msSaveOrOpenBlob) // IE10+
343
+ window.navigator.msSaveOrOpenBlob(file, filename);
344
+ else {
345
+ // Others
346
+ const a = document.createElement("a"), url = URL.createObjectURL(file);
347
+ a.href = url;
348
+ a.download = filename;
349
+ document.body.appendChild(a);
350
+ a.click();
351
+ setTimeout(()=>{
352
+ document.body.removeChild(a);
353
+ window.URL.revokeObjectURL(url);
354
+ }, 0);
355
+ }
356
+ }
357
+ const downloadFile = async ({ url, name, type })=>{
358
+ const response = await fetch(url).then(async (res)=>({
359
+ data: await res.blob(),
360
+ type: type !== null && type !== void 0 ? type : res.headers.get("content-type")
361
+ }));
362
+ downloadEmulation(response.data, name, response.type);
344
363
  };
345
-
346
- // Set Carret to the End of Input
347
- exports.compare = compare;
348
- const setCarretToEnd = input => {
349
- setTimeout(() => {
350
- const tmp = input.value;
351
- input.value = "";
352
- input.value = tmp;
353
- }, 10);
364
+ const compare = (first, second, keys = [])=>{
365
+ //? Если типы НЕ равны - не равны априори
366
+ if (typeof first !== typeof second) return false;
367
+ //? Если ответы на вопрос "массив ли?" не равны, то не равны и типы, значит тоже не равны априори
368
+ if (Array.isArray(first) !== Array.isArray(second)) return false;
369
+ //? Если прошли if-ку - типы условно равны, можем оценивать тип лишь одного параметра, это будет справедливо и для второго
370
+ //? Если примитивы - просто сравниваем. Кейс с null обработан тут.
371
+ if (!(first instanceof Object)) return first === second;
372
+ //? Если НЕ приметивы - не важно массив или нет, методы объекта для массива тоже доступны
373
+ const getComparationStructure = (data)=>{
374
+ if (typeof data === 'function') return data.toString();
375
+ if (!(data instanceof Object)) return data;
376
+ return Object.entries(data).sort((a, b)=>a[0].localeCompare(b[0])).map(([key, value])=>[
377
+ key,
378
+ getComparationStructure(data[key])
379
+ ]);
380
+ };
381
+ //? Получаем структуры для сравнения (с учетом глубины) - массивы массивов, сортируем по ключам,
382
+ const structureForComparingOfFirst = getComparationStructure(first);
383
+ const structureForComparingOfSecond = getComparationStructure(second);
384
+ return JSON.stringify(structureForComparingOfFirst) === JSON.stringify(structureForComparingOfSecond);
354
385
  };
355
- exports.setCarretToEnd = setCarretToEnd;
356
- const compareAlphabetical = function (a, b) {
357
- let key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "label";
358
- let item1 = a?.[key];
359
- let item2 = b?.[key];
360
- if (typeof item1 !== "string" || typeof item2 !== "string") return 0;
361
- item1 = item1?.toLowerCase();
362
- item2 = item2?.toLowerCase();
363
- if (item1 < item2) {
364
- return -1;
365
- }
366
- if (item1 > item2) {
367
- return 1;
368
- }
369
- return 0;
386
+ const setCarretToEnd = (input)=>{
387
+ setTimeout(()=>{
388
+ const tmp = input.value;
389
+ input.value = "";
390
+ input.value = tmp;
391
+ }, 10);
370
392
  };
371
- exports.compareAlphabetical = compareAlphabetical;
372
- const getBase64 = file => {
373
- if (file) {
374
- return new Promise(function (resolve, reject) {
375
- const reader = new FileReader();
376
- reader.readAsDataURL(file);
377
- reader.onload = () => resolve(reader.result);
378
- reader.onerror = error => reject("Error: ", error);
379
- });
380
- }
393
+ const compareAlphabetical = (a, b, key = "label")=>{
394
+ let item1 = a === null || a === void 0 ? void 0 : a[key];
395
+ let item2 = b === null || b === void 0 ? void 0 : b[key];
396
+ if (typeof item1 !== "string" || typeof item2 !== "string") return 0;
397
+ item1 = item1 === null || item1 === void 0 ? void 0 : item1.toLowerCase();
398
+ item2 = item2 === null || item2 === void 0 ? void 0 : item2.toLowerCase();
399
+ if (item1 < item2) {
400
+ return -1;
401
+ }
402
+ if (item1 > item2) {
403
+ return 1;
404
+ }
405
+ return 0;
381
406
  };
382
- exports.getBase64 = getBase64;
383
- const renderFileSize = function (bytes) {
384
- let decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
385
- if (!Number(bytes)) return "0 Bytes";
386
- const k = 1024;
387
- const dm = decimals < 0 ? 0 : decimals;
388
- const sizes = ["Bytes", "KB", "MB", "GB"];
389
- const i = Math.floor(Math.log(bytes) / Math.log(k));
390
- return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;
407
+ const getBase64 = (file)=>{
408
+ if (file) {
409
+ return new Promise(function(resolve, reject) {
410
+ const reader = new FileReader();
411
+ reader.readAsDataURL(file);
412
+ reader.onload = ()=>resolve(reader.result);
413
+ reader.onerror = (error)=>reject("Error: ", error);
414
+ });
415
+ }
391
416
  };
392
- exports.renderFileSize = renderFileSize;
393
- const getUniqueFileExtensions = extListString => {
394
- // Split the extensions list into an array
395
- const extArray = extListString?.split(",").map(ext => ext.trim().toUpperCase());
396
-
397
- // Remove duplicates using a Set
398
- const uniqueExts = [...new Set(extArray)];
399
-
400
- // Join the unique extensions into a string
401
- return uniqueExts.join(", ");
417
+ const renderFileSize = (bytes, decimals = 2)=>{
418
+ if (!Number(bytes)) return "0 Bytes";
419
+ const k = 1024;
420
+ const dm = decimals < 0 ? 0 : decimals;
421
+ const sizes = [
422
+ "Bytes",
423
+ "KB",
424
+ "MB",
425
+ "GB"
426
+ ];
427
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
428
+ return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;
402
429
  };
403
- exports.getUniqueFileExtensions = getUniqueFileExtensions;
404
- const getOS = () => {
405
- let userAgent = window.navigator.userAgent,
406
- platform = window.navigator?.userAgentData?.platform || window.navigator.platform,
407
- macosPlatforms = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"],
408
- windowsPlatforms = ["Win32", "Win64", "Windows", "WinCE"],
409
- iosPlatforms = ["iPhone", "iPad", "iPod"],
410
- os = _index.OS.Unknown;
411
- if (macosPlatforms.indexOf(platform) !== -1) {
412
- os = _index.OS.MacOS;
413
- } else if (iosPlatforms.indexOf(platform) !== -1) {
414
- os = _index.OS.iOS;
415
- } else if (windowsPlatforms.indexOf(platform) !== -1) {
416
- os = _index.OS.Windows;
417
- } else if (/Android/.test(userAgent)) {
418
- os = _index.OS.Android;
419
- } else if (/Linux/.test(platform)) {
420
- os = _index.OS.Linux;
421
- }
422
- return os;
430
+ const getUniqueFileExtensions = (extListString)=>{
431
+ // Split the extensions list into an array
432
+ const extArray = extListString === null || extListString === void 0 ? void 0 : extListString.split(",").map((ext)=>ext.trim().toUpperCase());
433
+ // Remove duplicates using a Set
434
+ const uniqueExts = [
435
+ ...new Set(extArray)
436
+ ];
437
+ // Join the unique extensions into a string
438
+ return uniqueExts.join(", ");
423
439
  };
424
- exports.getOS = getOS;
425
- const disableDefaultBehavior = e => {
426
- e?.preventDefault();
427
- e?.stopPropagation();
440
+ const getOS = ()=>{
441
+ var _window_navigator_userAgentData, _window_navigator;
442
+ let userAgent = window.navigator.userAgent, platform = ((_window_navigator = window.navigator) === null || _window_navigator === void 0 ? void 0 : (_window_navigator_userAgentData = _window_navigator.userAgentData) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.platform) || window.navigator.platform, macosPlatforms = [
443
+ "Macintosh",
444
+ "MacIntel",
445
+ "MacPPC",
446
+ "Mac68K"
447
+ ], windowsPlatforms = [
448
+ "Win32",
449
+ "Win64",
450
+ "Windows",
451
+ "WinCE"
452
+ ], iosPlatforms = [
453
+ "iPhone",
454
+ "iPad",
455
+ "iPod"
456
+ ], os = _indexconstants.OS.Unknown;
457
+ if (macosPlatforms.indexOf(platform) !== -1) {
458
+ os = _indexconstants.OS.MacOS;
459
+ } else if (iosPlatforms.indexOf(platform) !== -1) {
460
+ os = _indexconstants.OS.iOS;
461
+ } else if (windowsPlatforms.indexOf(platform) !== -1) {
462
+ os = _indexconstants.OS.Windows;
463
+ } else if (/Android/.test(userAgent)) {
464
+ os = _indexconstants.OS.Android;
465
+ } else if (/Linux/.test(platform)) {
466
+ os = _indexconstants.OS.Linux;
467
+ }
468
+ return os;
428
469
  };
429
- exports.disableDefaultBehavior = disableDefaultBehavior;
430
- String.prototype.longerThan = function (compareWith) {
431
- return this?.length > compareWith?.length;
470
+ const disableDefaultBehavior = (e)=>{
471
+ e === null || e === void 0 ? void 0 : e.preventDefault();
472
+ e === null || e === void 0 ? void 0 : e.stopPropagation();
432
473
  };
433
- String.prototype.lastIndexEqualsTo = function (index) {
434
- return this?.length - 1 === index;
474
+ String.prototype.longerThan = function(compareWith) {
475
+ var _this;
476
+ return ((_this = this) === null || _this === void 0 ? void 0 : _this.length) > (compareWith === null || compareWith === void 0 ? void 0 : compareWith.length);
435
477
  };
436
- const getCorrectTestId = _ref3 => {
437
- let {
438
- testId = "",
439
- withTier = true
440
- } = _ref3;
441
- return testId && testId !== undefined ? `${withTier ? "-" : ""}${testId}` : "";
478
+ String.prototype.lastIndexEqualsTo = function(index) {
479
+ var _this;
480
+ return ((_this = this) === null || _this === void 0 ? void 0 : _this.length) - 1 === index;
442
481
  };
443
-
444
- //? Метод возращает корректно обрезанную маску с учетом лимита значащих символов
445
- exports.getCorrectTestId = getCorrectTestId;
446
- const getLimitedMask = props => {
447
- const {
448
- mask = '',
449
- significantChars = [],
450
- limit,
451
- isOnlyMask = true
452
- } = props;
453
-
454
- // ? Проверяем основные входные пропы
455
- if (typeof mask !== 'string' || !Array.isArray(significantChars) || !significantChars.every(item => typeof item === 'string' && item.length === 1)) {
456
- // ? Если нужна только маска возвращаем никакую маску,
457
- // ? иначе - объект с никакой маской и нулевой статистикой
458
- return isOnlyMask ? '' : {
459
- mask: '',
460
- countOfSignificantChars: 0,
461
- countOfNotSignificantChars: 0
462
- };
463
- }
464
-
465
- // Ф-я расчёта количества "значащих" символов в маске
466
- const getCountOfSignificantChars = mask => mask.split('').filter(sym => significantChars.includes(sym)).length;
467
-
468
- // ? Расчитываем безопасный лимит
469
- const safelyLimit = (() => {
470
- const COUNT_OF_SIGNIFICANT_CHARS = getCountOfSignificantChars(mask);
471
-
472
- //? Если нельзя привести к числу, то лимитом считаем ВСЕ "значащие" символы в маске
473
- const outputLimit = isNaN(+limit) ? COUNT_OF_SIGNIFICANT_CHARS : +limit;
474
-
475
- //? Если выходной лимит ноль или больше количества "значащих" символов в маске,
476
- //? то лимитом считаем ВСЕ "значащие" символы в маске
477
- if (!outputLimit || outputLimit > COUNT_OF_SIGNIFICANT_CHARS) return COUNT_OF_SIGNIFICANT_CHARS;
478
- return outputLimit;
479
- })();
480
-
481
- // ? Корректно "обрезаем" маску с учетом того, сколько "значащих" символов должно в нее войти
482
- const limitedMask = mask.split('').reduce((acc, sym) => {
483
- // ? "Нарасчиваем" маску до тех пор, пока счетчик не достигнет лимита
484
- if (acc.count < safelyLimit) {
485
- acc.result += sym;
486
- // ? Если добавленный символ "значащий" - увеличиваем счетчик
487
- if (significantChars.includes(sym)) acc.count += 1;
482
+ const getCorrectTestId = ({ testId = "", withTier = true })=>testId && testId !== undefined ? `${withTier ? "-" : ""}${testId}` : "";
483
+ const getLimitedMask = (props)=>{
484
+ const { mask = '', significantChars = [], limit, isOnlyMask = true } = props;
485
+ // ? Проверяем основные входные пропы
486
+ if (typeof mask !== 'string' || !Array.isArray(significantChars) || !significantChars.every((item)=>typeof item === 'string' && item.length === 1)) {
487
+ // ? Если нужна только маска возвращаем никакую маску,
488
+ // ? иначе - объект с никакой маской и нулевой статистикой
489
+ return isOnlyMask ? '' : {
490
+ mask: '',
491
+ countOfSignificantChars: 0,
492
+ countOfNotSignificantChars: 0
493
+ };
488
494
  }
489
- return acc;
490
- }, {
491
- result: '',
492
- count: 0
493
- }).result;
494
-
495
- // ? Если нужна только маска - возвращаем только маску,
496
- // ? иначе - объект с новой маской и статистикой по ней
497
- return isOnlyMask ? limitedMask : {
498
- mask: limitedMask,
499
- countOfSignificantChars: safelyLimit,
500
- countOfNotSignificantChars: limitedMask.length - safelyLimit
501
- };
495
+ // Ф-я расчёта количества "значащих" символов в маске
496
+ const getCountOfSignificantChars = (mask)=>mask.split('').filter((sym)=>significantChars.includes(sym)).length;
497
+ // ? Расчитываем безопасный лимит
498
+ const safelyLimit = (()=>{
499
+ const COUNT_OF_SIGNIFICANT_CHARS = getCountOfSignificantChars(mask);
500
+ //? Если нельзя привести к числу, то лимитом считаем ВСЕ "значащие" символы в маске
501
+ const outputLimit = isNaN(+limit) ? COUNT_OF_SIGNIFICANT_CHARS : +limit;
502
+ //? Если выходной лимит ноль или больше количества "значащих" символов в маске,
503
+ //? то лимитом считаем ВСЕ "значащие" символы в маске
504
+ if (!outputLimit || outputLimit > COUNT_OF_SIGNIFICANT_CHARS) return COUNT_OF_SIGNIFICANT_CHARS;
505
+ return outputLimit;
506
+ })();
507
+ // ? Корректно "обрезаем" маску с учетом того, сколько "значащих" символов должно в нее войти
508
+ const limitedMask = mask.split('').reduce((acc, sym)=>{
509
+ // ? "Нарасчиваем" маску до тех пор, пока счетчик не достигнет лимита
510
+ if (acc.count < safelyLimit) {
511
+ acc.result += sym;
512
+ // ? Если добавленный символ "значащий" - увеличиваем счетчик
513
+ if (significantChars.includes(sym)) acc.count += 1;
514
+ }
515
+ return acc;
516
+ }, {
517
+ result: '',
518
+ count: 0
519
+ }).result;
520
+ // ? Если нужна только маска - возвращаем только маску,
521
+ // ? иначе - объект с новой маской и статистикой по ней
522
+ return isOnlyMask ? limitedMask : {
523
+ mask: limitedMask,
524
+ countOfSignificantChars: safelyLimit,
525
+ countOfNotSignificantChars: limitedMask.length - safelyLimit
526
+ };
502
527
  };
503
- exports.getLimitedMask = getLimitedMask;