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