intelicoreact 1.6.22 → 1.6.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Atomic/FormElements/ActionAlert/ActionAlert.js +98 -1
- package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +48 -1
- package/dist/Atomic/FormElements/Calendar/Calendar.js +249 -1
- package/dist/Atomic/FormElements/Calendar/Calendar.props.js +4 -1
- package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +65 -1
- package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +52 -1
- package/dist/Atomic/FormElements/Datepicker/Datepicker.js +424 -1
- package/dist/Atomic/FormElements/Datepicker/Datepicker.props.js +4 -1
- package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.js +173 -1
- package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.props.js +4 -1
- package/dist/Atomic/FormElements/Dropdown/Dropdown.js +735 -1
- package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +20 -1
- package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +529 -1
- package/dist/Atomic/FormElements/FileLoader/FileLoader.js +94 -1
- package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.js +105 -1
- package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.js +67 -1
- package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js +247 -1
- package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +160 -1
- package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +193 -1
- package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +135 -1
- package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.js +116 -1
- package/dist/Atomic/FormElements/Input/Input.js +467 -1
- package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +161 -1
- package/dist/Atomic/FormElements/InputColor/InputColor.js +64 -1
- package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +200 -1
- package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +354 -1
- package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +71 -1
- package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +693 -1
- package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +254 -1
- package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +32 -1
- package/dist/Atomic/FormElements/InputDateRange/dependencies.js +200 -1
- package/dist/Atomic/FormElements/InputLink/InputLink.js +99 -1
- package/dist/Atomic/FormElements/InputMask/InputCarretPosition.js +37 -1
- package/dist/Atomic/FormElements/InputMask/InputMask.js +1214 -1
- package/dist/Atomic/FormElements/InputMask/config.js +15 -1
- package/dist/Atomic/FormElements/InputMask/functions.js +58 -1
- package/dist/Atomic/FormElements/InputMask2/InputMask2.js +674 -1
- package/dist/Atomic/FormElements/InputMask2/config.js +15 -1
- package/dist/Atomic/FormElements/InputMask2/functions.js +58 -1
- package/dist/Atomic/FormElements/InputMask3/InputMask3.js +766 -1
- package/dist/Atomic/FormElements/InputMask3/config.js +15 -1
- package/dist/Atomic/FormElements/InputMask3/functions.js +58 -1
- package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +114 -1
- package/dist/Atomic/FormElements/InputsRow/InputsRow.js +140 -1
- package/dist/Atomic/FormElements/Label/Label.js +87 -1
- package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +506 -1
- package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +45 -1
- package/dist/Atomic/FormElements/NumericInput/NumericInput.js +331 -1
- package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +66 -1
- package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +80 -1
- package/dist/Atomic/FormElements/RadioInput/RadioInput.js +57 -1
- package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +54 -1
- package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +183 -1
- package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +222 -1
- package/dist/Atomic/FormElements/RangeList/RangeList.js +175 -1
- package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +43 -1
- package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +443 -1
- package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +858 -1
- package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +39 -1
- package/dist/Atomic/FormElements/Switcher/Switcher.js +59 -1
- package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +50 -1
- package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +44 -1
- package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +100 -1
- package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +52 -1
- package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +64 -1
- package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +170 -1
- package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +202 -1
- package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +67 -1
- package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +115 -1
- package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.interface.ts +2 -2
- package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +1110 -1
- package/dist/Atomic/FormElements/Text/Text.js +125 -1
- package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +49 -1
- package/dist/Atomic/FormElements/Textarea/Textarea.js +80 -1
- package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +176 -1
- package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +62 -1
- package/dist/Atomic/FormElements/TimeRange/TimeRange.js +119 -1
- package/dist/Atomic/FormElements/UserContacts/UserContacts.js +188 -1
- package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +83 -1
- package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +82 -1
- package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +101 -1
- package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +29 -1
- package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +113 -1
- package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +30 -1
- package/dist/Atomic/Layout/Header/Header.js +85 -1
- package/dist/Atomic/Layout/Spinner/Spinner.js +44 -1
- package/dist/Atomic/UI/Accordion/Accordion.js +108 -1
- package/dist/Atomic/UI/Accordion/AccordionItem.js +176 -1
- package/dist/Atomic/UI/AccordionTable/AccordionTable.js +238 -1
- package/dist/Atomic/UI/AccordionText/AccordionText.js +69 -1
- package/dist/Atomic/UI/AdvancedTag/AdvTag.js +207 -1
- package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +56 -1
- package/dist/Atomic/UI/Alert/Alert.js +72 -1
- package/dist/Atomic/UI/Arrow/Arrow.js +132 -1
- package/dist/Atomic/UI/Box/Box.js +52 -1
- package/dist/Atomic/UI/Button/Button.js +47 -1
- package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +72 -1
- package/dist/Atomic/UI/Chart/Chart.js +172 -1
- package/dist/Atomic/UI/Chart/partial/Chart.constants.js +95 -1
- package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +80 -1
- package/dist/Atomic/UI/Chart/partial/datasetSetters.js +188 -1
- package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +335 -1
- package/dist/Atomic/UI/Chart/partial/optionsSetters.js +43 -1
- package/dist/Atomic/UI/Chart/partial/utils.js +60 -1
- package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +109 -1
- package/dist/Atomic/UI/DateTime/DateTime.js +57 -1
- package/dist/Atomic/UI/DebugContainer/DebugContainer.js +44 -1
- package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +15 -1
- package/dist/Atomic/UI/DoubleString/DoubleString.js +102 -1
- package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +70 -1
- package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +221 -1
- package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +106 -1
- package/dist/Atomic/UI/Hint/Hint.js +256 -1
- package/dist/Atomic/UI/Hint/partials/_utils.js +64 -1
- package/dist/Atomic/UI/Modal/Modal.js +179 -1
- package/dist/Atomic/UI/Modal/ModalHOC.js +97 -1
- package/dist/Atomic/UI/Modal/partials/ModalFooter.js +71 -1
- package/dist/Atomic/UI/Modal/partials/ModalTitle.js +110 -1
- package/dist/Atomic/UI/Modal/partials/useMobileModal.js +192 -1
- package/dist/Atomic/UI/MonoAccordion/MonoAccordion._test.js +75 -1
- package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +80 -1
- package/dist/Atomic/UI/NavLine/NavLine.js +317 -1
- package/dist/Atomic/UI/PageTitle/PageTitle.js +77 -1
- package/dist/Atomic/UI/PieChart/PieChart.js +42 -1
- package/dist/Atomic/UI/Price/Price.js +31 -1
- package/dist/Atomic/UI/PriceRange/PriceRange.js +44 -1
- package/dist/Atomic/UI/ProgressLine/ProgressLine.js +98 -1
- package/dist/Atomic/UI/Status/Status.js +67 -1
- package/dist/Atomic/UI/Table/Partials/TdCell.js +87 -1
- package/dist/Atomic/UI/Table/Partials/TdHeader.js +38 -1
- package/dist/Atomic/UI/Table/Partials/TdRow.js +99 -1
- package/dist/Atomic/UI/Table/Partials/TdTitle.js +52 -1
- package/dist/Atomic/UI/Table/Table.js +63 -1
- package/dist/Atomic/UI/Table/TdTypes/TdActions.js +80 -1
- package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +28 -1
- package/dist/Atomic/UI/Table/TdTypes/TdRange.js +13 -1
- package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +53 -1
- package/dist/Atomic/UI/Tag/Tag.js +167 -1
- package/dist/Atomic/UI/TagList/TagList.js +251 -1
- package/dist/Atomic/UI/UserBox/UserBox.js +86 -1
- package/dist/Atomic/UI/WizardStepper/constructor.js +84 -1
- package/dist/Atomic/UI/WizardStepper/index.js +3 -1
- package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +37 -1
- package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.js +3 -1
- package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +61 -1
- package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.js +3 -1
- package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +39 -1
- package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +3 -1
- package/dist/Atomic/UI/WizardStepper/ui/icons.js +49 -1
- package/dist/Atomic/UI/WizardStepper/ui/index.js +3 -1
- package/dist/Classes/AbortableFetch.js +454 -1
- package/dist/Classes/AnimatedHandler.js +47 -1
- package/dist/Classes/RESTAPI/index.js +228 -1
- package/dist/Classes/RESTAPI/partials/AbortableFetch.js +457 -1
- package/dist/Classes/RESTAPI/partials/ApiBase.js +48 -1
- package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +112 -1
- package/dist/Classes/RESTAPI/partials/ApiUtils.js +189 -1
- package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +252 -1
- package/dist/Classes/RESTAPI/partials/Utils.js +92 -1
- package/dist/Classes/RESTAPI/partials/_outerDependencies.js +3 -1
- package/dist/Classes/RESTAPI/partials/_utils.js +197 -1
- package/dist/Constants/index.constants.js +78 -1
- package/dist/Functions/Portal.js +22 -1
- package/dist/Functions/customEventListener.js +96 -1
- package/dist/Functions/dateTime.js +149 -1
- package/dist/Functions/fieldValueFormatters.js +405 -1
- package/dist/Functions/guards/assertions.js +294 -1
- package/dist/Functions/guards/safeValue.js +75 -1
- package/dist/Functions/guards/typeGuards.js +373 -1
- package/dist/Functions/hooks/useFormFieldsChangesManager.js +95 -1
- package/dist/Functions/locale/createTranslator.js +32 -1
- package/dist/Functions/operations.js +130 -1
- package/dist/Functions/presets/inputMaskPresets.js +170 -1
- package/dist/Functions/presets/inputPresets.js +60 -1
- package/dist/Functions/presets/mobileKeyboardTypesPresets.js +45 -1
- package/dist/Functions/schemas.js +31 -1
- package/dist/Functions/useBodyScrollLock.js +17 -1
- package/dist/Functions/useClickOutside.js +15 -1
- package/dist/Functions/useDebounce.js +17 -1
- package/dist/Functions/useFieldFocus.js +84 -1
- package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +39 -1
- package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +159 -1
- package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +78 -1
- package/dist/Functions/useFormTools/functions/General.js +134 -1
- package/dist/Functions/useFormTools/functions/RenderFields.js +111 -1
- package/dist/Functions/useFormTools/functions/usePrevious.js +12 -1
- package/dist/Functions/useFormTools/index.js +778 -1
- package/dist/Functions/useInputHighlightError.js +67 -1
- package/dist/Functions/useIsMobile/useIsMobile.js +33 -1
- package/dist/Functions/useKeyPress/useHandleKeyPress.js +52 -1
- package/dist/Functions/useKeyPress/useKeyPress.js +52 -1
- package/dist/Functions/useLocalStorage.js +34 -1
- package/dist/Functions/useLocationParams.js +27 -1
- package/dist/Functions/useMediaQuery.js +17 -1
- package/dist/Functions/useMetaInfo.js +43 -1
- package/dist/Functions/useMouseUpOutside.js +16 -1
- package/dist/Functions/useOnlineStatus.js +29 -1
- package/dist/Functions/usePasswordChecker.js +110 -1
- package/dist/Functions/usePrevious.js +12 -1
- package/dist/Functions/useResize.js +31 -1
- package/dist/Functions/useScrollTo.js +17 -1
- package/dist/Functions/useToggle.js +17 -1
- package/dist/Functions/utils.js +522 -1
- package/dist/Langs.js +168 -1
- package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +21 -1
- package/dist/Molecular/CustomIcons/components/AlertCircle.js +23 -1
- package/dist/Molecular/CustomIcons/components/AppStore.js +29 -1
- package/dist/Molecular/CustomIcons/components/Arrow.js +32 -1
- package/dist/Molecular/CustomIcons/components/ArrowDown.js +17 -1
- package/dist/Molecular/CustomIcons/components/ArrowLeft.js +22 -1
- package/dist/Molecular/CustomIcons/components/ArrowRight.js +22 -1
- package/dist/Molecular/CustomIcons/components/ArrowUp.js +17 -1
- package/dist/Molecular/CustomIcons/components/Bell.js +15 -1
- package/dist/Molecular/CustomIcons/components/Button.js +12 -1
- package/dist/Molecular/CustomIcons/components/Campaigns.js +16 -1
- package/dist/Molecular/CustomIcons/components/Check.js +14 -1
- package/dist/Molecular/CustomIcons/components/Check2.js +12 -1
- package/dist/Molecular/CustomIcons/components/ChevronDown.js +12 -1
- package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +11 -1
- package/dist/Molecular/CustomIcons/components/ChevronLeft.js +11 -1
- package/dist/Molecular/CustomIcons/components/ChevronRight.js +11 -1
- package/dist/Molecular/CustomIcons/components/ChevronUp.js +11 -1
- package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +27 -1
- package/dist/Molecular/CustomIcons/components/Close.js +14 -1
- package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +17 -1
- package/dist/Molecular/CustomIcons/components/Delete.js +16 -1
- package/dist/Molecular/CustomIcons/components/Edit.js +15 -1
- package/dist/Molecular/CustomIcons/components/Email.js +31 -1
- package/dist/Molecular/CustomIcons/components/FinturfLogo.js +18 -1
- package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +35 -1
- package/dist/Molecular/CustomIcons/components/Flows.js +15 -1
- package/dist/Molecular/CustomIcons/components/Gift.js +25 -1
- package/dist/Molecular/CustomIcons/components/GoogleAuth.js +29 -1
- package/dist/Molecular/CustomIcons/components/GooglePlay.js +29 -1
- package/dist/Molecular/CustomIcons/components/HelpCircle.js +19 -1
- package/dist/Molecular/CustomIcons/components/HelpCircle2.js +20 -1
- package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +19 -1
- package/dist/Molecular/CustomIcons/components/Home.js +16 -1
- package/dist/Molecular/CustomIcons/components/Home2.js +22 -1
- package/dist/Molecular/CustomIcons/components/Key.js +23 -1
- package/dist/Molecular/CustomIcons/components/Landers.js +20 -1
- package/dist/Molecular/CustomIcons/components/Lock.js +15 -1
- package/dist/Molecular/CustomIcons/components/Mail.js +26 -1
- package/dist/Molecular/CustomIcons/components/Mastercard.js +73 -1
- package/dist/Molecular/CustomIcons/components/Minus.js +25 -1
- package/dist/Molecular/CustomIcons/components/Offers.js +16 -1
- package/dist/Molecular/CustomIcons/components/Pause.js +28 -1
- package/dist/Molecular/CustomIcons/components/PayPal.js +41 -1
- package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +28 -1
- package/dist/Molecular/CustomIcons/components/Phone.js +30 -1
- package/dist/Molecular/CustomIcons/components/Play.js +25 -1
- package/dist/Molecular/CustomIcons/components/Plus.js +25 -1
- package/dist/Molecular/CustomIcons/components/Profile.js +16 -1
- package/dist/Molecular/CustomIcons/components/QRCode.js +29 -1
- package/dist/Molecular/CustomIcons/components/Rectangle.js +12 -1
- package/dist/Molecular/CustomIcons/components/Revert.js +13 -1
- package/dist/Molecular/CustomIcons/components/Star.js +14 -1
- package/dist/Molecular/CustomIcons/components/Star2.js +16 -1
- package/dist/Molecular/CustomIcons/components/TrafficSources.js +14 -1
- package/dist/Molecular/CustomIcons/components/Trash.js +15 -1
- package/dist/Molecular/CustomIcons/components/TrashRed.js +15 -1
- package/dist/Molecular/CustomIcons/components/Triggers.js +15 -1
- package/dist/Molecular/CustomIcons/components/User.js +25 -1
- package/dist/Molecular/CustomIcons/components/Visa.js +31 -1
- package/dist/Molecular/CustomIcons/components/X.js +12 -1
- package/dist/Molecular/CustomIcons/index.js +61 -1
- package/dist/Molecular/FormElement/FormElement.js +54 -1
- package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +184 -1
- package/dist/Molecular/FormWithDependOn/partials/_utils.js +53 -1
- package/dist/Molecular/InputAddress/InputAddress.js +626 -1
- package/dist/Molecular/InputPassword/InputPassword.js +48 -1
- package/dist/index.js +104 -1
- package/package.json +1 -1
- package/dist/Molecular/InputAddress/InputAddress.d.ts +0 -26
- package/dist/Molecular/InputAddress/InputAddress.js.map +0 -1
|
@@ -1 +1,373 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @name isArray
|
|
3
|
+
* @description Функция isArray принимает значение и возвращает true, если переданное значение является массивом.
|
|
4
|
+
* @example
|
|
5
|
+
* const result = isArray([]);
|
|
6
|
+
* console.log(result); // true
|
|
7
|
+
* @example
|
|
8
|
+
* const result = isArray({});
|
|
9
|
+
* console.log(result); // false
|
|
10
|
+
*/ "use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", {
|
|
12
|
+
value: true
|
|
13
|
+
});
|
|
14
|
+
Object.defineProperty(exports, "default", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function() {
|
|
17
|
+
return _default;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
const isArray = (value)=>Array.isArray(value);
|
|
21
|
+
/**
|
|
22
|
+
* @name isObject
|
|
23
|
+
* @description Функция isObject принимает значение и возвращает true, если переданное значение является объектом.
|
|
24
|
+
* @param value - значение для проверки
|
|
25
|
+
* @example
|
|
26
|
+
* const result = isObject({});
|
|
27
|
+
* console.log(result); // true
|
|
28
|
+
* @example
|
|
29
|
+
* const result = isObject([]);
|
|
30
|
+
* console.log(result); // false
|
|
31
|
+
*/ function isObject(value) {
|
|
32
|
+
return typeof value === 'object' && value !== null && !isArray(value);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @name isNumber
|
|
36
|
+
* @description Функция isNumber принимает значение и возвращает true, если переданное значение является числом.
|
|
37
|
+
* @param value - значение для проверки
|
|
38
|
+
* @example
|
|
39
|
+
* const result = isNumber(1);
|
|
40
|
+
* console.log(result); // true
|
|
41
|
+
*/ const isNumber = (value)=>typeof value === 'number';
|
|
42
|
+
/**
|
|
43
|
+
* @name isString
|
|
44
|
+
* @description Функция isString принимает значение и возвращает true, если переданное значение является строкой.
|
|
45
|
+
* @param value - значение для проверки
|
|
46
|
+
* @example
|
|
47
|
+
* const result = isString('string');
|
|
48
|
+
* console.log(result); // true
|
|
49
|
+
*/ const isString = (value)=>typeof value === 'string';
|
|
50
|
+
/**
|
|
51
|
+
* @name isBoolean
|
|
52
|
+
* @description Функция isBoolean принимает значение и возвращает true, если переданное значение является булевым.
|
|
53
|
+
* @param value - значение для проверки
|
|
54
|
+
* @example
|
|
55
|
+
* const result = isBoolean(true);
|
|
56
|
+
* console.log(result); // true
|
|
57
|
+
*/ const isBoolean = (value)=>typeof value === 'boolean';
|
|
58
|
+
/**
|
|
59
|
+
* @name isFunction
|
|
60
|
+
* @description Функция isFunction принимает значение и возвращает true, если переданное значение является функцией.
|
|
61
|
+
* @param value - значение для проверки
|
|
62
|
+
* @example
|
|
63
|
+
* const result = isFunction(() => {});
|
|
64
|
+
* console.log(result); // true
|
|
65
|
+
* @example
|
|
66
|
+
* const result = isFunction('string');
|
|
67
|
+
* console.log(result); // false
|
|
68
|
+
* @example
|
|
69
|
+
* const result = isFunction(1);
|
|
70
|
+
* console.log(result); // false
|
|
71
|
+
*/ const isFunction = (value)=>typeof value === 'function';
|
|
72
|
+
/**
|
|
73
|
+
* @name isInstanceOf
|
|
74
|
+
* @description Функция isInstanceOf принимает значение и возвращает true, если переданное значение является экземпляром класса.
|
|
75
|
+
* @param value - значение для проверки
|
|
76
|
+
* @param classType - класс для проверки
|
|
77
|
+
* @example
|
|
78
|
+
* class TestClass {}
|
|
79
|
+
* const result = isInstanceOf(new TestClass(), TestClass);
|
|
80
|
+
* console.log(result); // true
|
|
81
|
+
*/ const isInstanceOf = (value, classType)=>value instanceof classType;
|
|
82
|
+
/**
|
|
83
|
+
* @name isEnumValue
|
|
84
|
+
* @description Функция isEnumValue принимает значение и возвращает true, если переданное значение является значением enum.
|
|
85
|
+
* @param enumObject - enum для проверки
|
|
86
|
+
* @param value - значение для проверки
|
|
87
|
+
* @example
|
|
88
|
+
* enum Colors {
|
|
89
|
+
* Red = 'red',
|
|
90
|
+
* Green = 'green',
|
|
91
|
+
* Blue = 'blue',
|
|
92
|
+
* }
|
|
93
|
+
* const result = isEnumValue(Colors, 'red');
|
|
94
|
+
* console.log(result); // true
|
|
95
|
+
* @returns true - если значение является значением enum, false - если значение не является значением enum
|
|
96
|
+
*/ function isEnumValue(enumObject, value) {
|
|
97
|
+
return Object.values(enumObject).includes(value);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* @name isNullOrUndefined
|
|
101
|
+
* @description Функция isNullOrUndefined принимает значение и возвращает true, если переданное значение является null или undefined.
|
|
102
|
+
* @param value - значение для проверки
|
|
103
|
+
* @example
|
|
104
|
+
* isNullOrUndefined(null) // true
|
|
105
|
+
* isNullOrUndefined(undefined) // true
|
|
106
|
+
* isNullOrUndefined(1) // false
|
|
107
|
+
*/ function isNullOrUndefined(value) {
|
|
108
|
+
return value === null || value === undefined;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* @name isTruthy
|
|
112
|
+
* @description Функция isTruthy принимает значение и возвращает true, если переданное значение является true.
|
|
113
|
+
* @param value - значение для проверки
|
|
114
|
+
* @example
|
|
115
|
+
* isTruthy(true) // true
|
|
116
|
+
* isTruthy(1) // true
|
|
117
|
+
* isTruthy(Infinity) // true
|
|
118
|
+
* isTruthy(-Infinity) // true
|
|
119
|
+
* isTruthy(Symbol()) // true
|
|
120
|
+
* isTruthy('some string') // true
|
|
121
|
+
* isTruthy({}) // true
|
|
122
|
+
* isTruthy([]) // true
|
|
123
|
+
* isTruthy(Symbol('some description')) // true
|
|
124
|
+
* isTruthy(() => {}) // true
|
|
125
|
+
* isTruthy(function() {}) // true
|
|
126
|
+
* isTruthy(class {}) // true
|
|
127
|
+
* isTruthy(0) // false
|
|
128
|
+
* isTruthy('') // false
|
|
129
|
+
* isTruthy(null) // false
|
|
130
|
+
* isTruthy(undefined) // false
|
|
131
|
+
* isTruthy(NaN) // false
|
|
132
|
+
* isTruthy(false) // false
|
|
133
|
+
*/ const isTruthy = (value)=>!!value;
|
|
134
|
+
/**
|
|
135
|
+
* @name isEmptyObject
|
|
136
|
+
* @description Функция isEmptyObject принимает значение и возвращает true, если переданное значение является пустым объектом.
|
|
137
|
+
* @param value - значение для проверки
|
|
138
|
+
* @example
|
|
139
|
+
* isEmptyObject({}) // true
|
|
140
|
+
* isEmptyObject({ a: 1 }) // false
|
|
141
|
+
*/ const isEmptyObject = (value)=>isObject(value) && Object.keys(value).length === 0;
|
|
142
|
+
/**
|
|
143
|
+
* @name isTypedArray
|
|
144
|
+
* @description Функция isTypedArray принимает значение и возвращает true, если переданное значение является массивом определенного типа.
|
|
145
|
+
* @param value - значение для проверки
|
|
146
|
+
* @param type - тип для проверки
|
|
147
|
+
* @example
|
|
148
|
+
* isTypedArray([1, 2, 3], Number) // true
|
|
149
|
+
* isTypedArray([1, 2, 3], String) // false
|
|
150
|
+
*/ function isTypedArray(value, type) {
|
|
151
|
+
return isArray(value) && value.every((item)=>item instanceof type);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* @name isArrayWithLength
|
|
155
|
+
* @description Функция isArrayWithLength принимает значение и возвращает true, если переданное значение является массивом определенной длины.
|
|
156
|
+
* @param value - значение для проверки
|
|
157
|
+
* @param length - длина массива
|
|
158
|
+
* @example
|
|
159
|
+
* isArrayWithLength([1, 2, 3], 3) // true
|
|
160
|
+
* isArrayWithLength([1, 2, 3], 2) // false
|
|
161
|
+
*/ function isArrayWithLength(value, length) {
|
|
162
|
+
return isArray(value) && value.length === length;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* @name isEmptyArray
|
|
166
|
+
* @description Функция isEmptyArray принимает значение и возвращает true, если переданное значение является пустым массивом.
|
|
167
|
+
* @param value - значение для проверки
|
|
168
|
+
* @example
|
|
169
|
+
* isEmptyArray([]) // true
|
|
170
|
+
* isEmptyArray([1]) // false
|
|
171
|
+
*/ const isEmptyArray = (value)=>Array.isArray(value) && value.length === 0;
|
|
172
|
+
/**
|
|
173
|
+
* @name isTypeOrNull
|
|
174
|
+
* @description Функция isTypeOrNull принимает значение и возвращает true, если переданное значение является экземпляром класса или null.
|
|
175
|
+
* @param value - значение для проверки
|
|
176
|
+
* @param type - класс для проверки
|
|
177
|
+
* @example
|
|
178
|
+
* isTypeOrNull(null, SomeClass) // true
|
|
179
|
+
* isTypeOrNull(new SomeClass(), SomeClass) // true
|
|
180
|
+
*/ function isTypeOrNull(value, type) {
|
|
181
|
+
return value === null || value instanceof type;
|
|
182
|
+
}
|
|
183
|
+
const nonNullable = (value)=>value !== null && value !== undefined;
|
|
184
|
+
/**
|
|
185
|
+
* @name isDate
|
|
186
|
+
* @description Функция isDate принимает значение и возвращает true, если переданное значение является объектом Date.
|
|
187
|
+
* @param value - значение для проверки
|
|
188
|
+
* @example
|
|
189
|
+
* isDate(new Date()) // true
|
|
190
|
+
* isDate('2023-01-01') // false
|
|
191
|
+
*/ const isDate = (value)=>value instanceof Date;
|
|
192
|
+
/**
|
|
193
|
+
* @name isPromise
|
|
194
|
+
* @description Функция isPromise принимает значение и возвращает true, если переданное значение является Promise.
|
|
195
|
+
* @param value - значение для проверки
|
|
196
|
+
* @example
|
|
197
|
+
* isPromise(Promise.resolve()) // true
|
|
198
|
+
* isPromise({ then: () => {} }) // false
|
|
199
|
+
*/ const isPromise = (value)=>value instanceof Promise;
|
|
200
|
+
/**
|
|
201
|
+
* @name isRegExp
|
|
202
|
+
* @description Функция isRegExp принимает значение и возвращает true, если переданное значение является регулярным выражением.
|
|
203
|
+
* @param value - значение для проверки
|
|
204
|
+
* @example
|
|
205
|
+
* isRegExp(/test/) // true
|
|
206
|
+
* isRegExp('test') // false
|
|
207
|
+
*/ const isRegExp = (value)=>value instanceof RegExp;
|
|
208
|
+
/**
|
|
209
|
+
* @name isPrimitive
|
|
210
|
+
* @description Функция isPrimitive принимает значение и возвращает true, если переданное значение является примитивом.
|
|
211
|
+
* @param value - значение для проверки
|
|
212
|
+
* @example
|
|
213
|
+
* isPrimitive(42) // true
|
|
214
|
+
* isPrimitive('test') // true
|
|
215
|
+
* isPrimitive(true) // true
|
|
216
|
+
* isPrimitive(null) // true
|
|
217
|
+
* isPrimitive(undefined) // true
|
|
218
|
+
* isPrimitive({}) // false
|
|
219
|
+
*/ function isPrimitive(value) {
|
|
220
|
+
return value === null || value === undefined || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* @name isError
|
|
224
|
+
* @description Функция isError принимает значение и возвращает true, если переданное значение является объектом ошибки.
|
|
225
|
+
* @param value - значение для проверки
|
|
226
|
+
* @example
|
|
227
|
+
* isError(new Error()) // true
|
|
228
|
+
* isError({ message: 'error' }) // false
|
|
229
|
+
*/ const isError = (value)=>value instanceof Error;
|
|
230
|
+
/**
|
|
231
|
+
* @name isSymbol
|
|
232
|
+
* @description Функция isSymbol принимает значение и возвращает true, если переданное значение является символом.
|
|
233
|
+
* @param value - значение для проверки
|
|
234
|
+
* @example
|
|
235
|
+
* isSymbol(Symbol()) // true
|
|
236
|
+
* isSymbol('symbol') // false
|
|
237
|
+
*/ const isSymbol = (value)=>typeof value === 'symbol';
|
|
238
|
+
/**
|
|
239
|
+
* @name isMap
|
|
240
|
+
* @description Функция isMap принимает значение и возвращает true, если переданное значение является объектом Map.
|
|
241
|
+
* @param value - значение для проверки
|
|
242
|
+
* @example
|
|
243
|
+
* isMap(new Map()) // true
|
|
244
|
+
* isMap({}) // false
|
|
245
|
+
*/ const isMap = (value)=>value instanceof Map;
|
|
246
|
+
/**
|
|
247
|
+
* @name isSet
|
|
248
|
+
* @description Функция isSet принимает значение и возвращает true, если переданное значение является объектом Set.
|
|
249
|
+
* @param value - значение для проверки
|
|
250
|
+
* @example
|
|
251
|
+
* isSet(new Set()) // true
|
|
252
|
+
* isSet([]) // false
|
|
253
|
+
*/ const isSet = (value)=>value instanceof Set;
|
|
254
|
+
/**
|
|
255
|
+
* @name isReactElement
|
|
256
|
+
* @description Функция isReactElement принимает значение и возвращает true, если переданное значение является React элементом.
|
|
257
|
+
* @param value - значение для проверки
|
|
258
|
+
* @example
|
|
259
|
+
* isReactElement(<div>Test</div>) // true
|
|
260
|
+
* isReactElement('div') // false
|
|
261
|
+
*/ function isReactElement(value) {
|
|
262
|
+
return isObject(value) && 'type' in value && 'props' in value && '$$typeof' in value;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* @name isReactComponent
|
|
266
|
+
* @description Функция isReactComponent принимает значение и возвращает true, если переданное значение является React компонентом.
|
|
267
|
+
* @param value - значение для проверки
|
|
268
|
+
* @example
|
|
269
|
+
* const MyComponent = () => <div>Test</div>;
|
|
270
|
+
* isReactComponent(MyComponent) // true
|
|
271
|
+
* isReactComponent('div') // false
|
|
272
|
+
*/ function isReactComponent(value) {
|
|
273
|
+
return isFunction(value) || isObject(value) && 'render' in value;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* @name isComponentType
|
|
277
|
+
* @description Функция isComponentType принимает значение и тип компонента, возвращает true, если переданное значение является компонентом указанного типа.
|
|
278
|
+
* @param value - значение для проверки
|
|
279
|
+
* @param componentType - тип компонента для проверки
|
|
280
|
+
* @example
|
|
281
|
+
* const MyComponent = () => <div>Test</div>;
|
|
282
|
+
* isComponentType(<MyComponent />, MyComponent) // true
|
|
283
|
+
*/ function isComponentType(value, componentType) {
|
|
284
|
+
return isReactElement(value) && value.type === componentType;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* @name isReactEvent
|
|
288
|
+
* @description Функция isReactEvent принимает значение и возвращает true, если переданное значение является React событием.
|
|
289
|
+
* @param value - значение для проверки
|
|
290
|
+
* @example
|
|
291
|
+
* const handleClick = (e) => {
|
|
292
|
+
* if (isReactEvent(e)) {
|
|
293
|
+
* e.preventDefault();
|
|
294
|
+
* }
|
|
295
|
+
* };
|
|
296
|
+
*/ function isReactEvent(value) {
|
|
297
|
+
return isObject(value) && 'nativeEvent' in value && 'currentTarget' in value && 'target' in value;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* @name isRef
|
|
301
|
+
* @description Функция isRef принимает значение и возвращает true, если переданное значение является React рефом.
|
|
302
|
+
* @param value - значение для проверки
|
|
303
|
+
* @example
|
|
304
|
+
* const ref = useRef(null);
|
|
305
|
+
* isRef(ref) // true
|
|
306
|
+
*/ function isRef(value) {
|
|
307
|
+
return isObject(value) && 'current' in value;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* @name isContext
|
|
311
|
+
* @description Функция isContext принимает значение и возвращает true, если переданное значение является React контекстом.
|
|
312
|
+
* @param value - значение для проверки
|
|
313
|
+
* @example
|
|
314
|
+
* const MyContext = React.createContext(null);
|
|
315
|
+
* isContext(MyContext) // true
|
|
316
|
+
*/ function isContext(value) {
|
|
317
|
+
return isObject(value) && 'Provider' in value && 'Consumer' in value;
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* @name isType
|
|
321
|
+
* @description Функция isType принимает значение и тип, возвращает true, если переданное значение соответствует указанному типу.
|
|
322
|
+
* @param value - значение для проверки
|
|
323
|
+
* @param type - тип для проверки
|
|
324
|
+
* @example
|
|
325
|
+
* interface User {
|
|
326
|
+
* name: string;
|
|
327
|
+
* age: number;
|
|
328
|
+
* }
|
|
329
|
+
*
|
|
330
|
+
* const user = { name: "John", age: 30 };
|
|
331
|
+
* const isUser = isType<User>(user,);
|
|
332
|
+
* console.log(isUser); // true
|
|
333
|
+
*
|
|
334
|
+
* const notUser = "John";
|
|
335
|
+
* console.log(isType<User>(notUser)); // false
|
|
336
|
+
*/ function isType(value) {
|
|
337
|
+
const type = typeof value;
|
|
338
|
+
return type === 'string' || type === 'number' || type === 'boolean' || type === 'object' || type === 'function' || type === 'undefined' || type === 'symbol' || type === 'bigint';
|
|
339
|
+
}
|
|
340
|
+
const typesGuards = {
|
|
341
|
+
isArray,
|
|
342
|
+
isObject,
|
|
343
|
+
isNumber,
|
|
344
|
+
isString,
|
|
345
|
+
isBoolean,
|
|
346
|
+
isFunction,
|
|
347
|
+
isInstanceOf,
|
|
348
|
+
isEnumValue,
|
|
349
|
+
isNullOrUndefined,
|
|
350
|
+
isTruthy,
|
|
351
|
+
isEmptyObject,
|
|
352
|
+
isEmptyArray,
|
|
353
|
+
isTypedArray,
|
|
354
|
+
isArrayWithLength,
|
|
355
|
+
isTypeOrNull,
|
|
356
|
+
nonNullable,
|
|
357
|
+
isDate,
|
|
358
|
+
isPromise,
|
|
359
|
+
isRegExp,
|
|
360
|
+
isPrimitive,
|
|
361
|
+
isError,
|
|
362
|
+
isSymbol,
|
|
363
|
+
isMap,
|
|
364
|
+
isSet,
|
|
365
|
+
isReactElement,
|
|
366
|
+
isReactComponent,
|
|
367
|
+
isComponentType,
|
|
368
|
+
isReactEvent,
|
|
369
|
+
isRef,
|
|
370
|
+
isContext,
|
|
371
|
+
isType
|
|
372
|
+
};
|
|
373
|
+
const _default = typesGuards;
|
|
@@ -1 +1,95 @@
|
|
|
1
|
-
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
|
+
|
|
3
|
+
const timeouts = { timeoutId: null };
|
|
4
|
+
const formChanges = [];
|
|
5
|
+
|
|
6
|
+
// ? validateField - должен возвращать структуру { field, isValid }
|
|
7
|
+
const useFormFieldsChangesManager = ({
|
|
8
|
+
form,
|
|
9
|
+
setForm,
|
|
10
|
+
callback,
|
|
11
|
+
validateField,
|
|
12
|
+
settings,
|
|
13
|
+
}) => {
|
|
14
|
+
const { isNotSetForm, isUseValidation = false } = settings || {};
|
|
15
|
+
|
|
16
|
+
//? Пробовал ставить просто useEffect по formChangesRef.current,
|
|
17
|
+
//? но по какой-то причине после изменении рефки не заходило в useEffect.
|
|
18
|
+
//? Однако если срабатывал useEffect по какой-нибудь другой переменной,
|
|
19
|
+
//? то и в useEffect по formChangesRef.current тоже заходило.
|
|
20
|
+
//? Поэтому тут нужен этот стейт,
|
|
21
|
+
//? хотя по итогу в конечной реализации с ним даже неплохо получилось (но вообще очень странная ерунда...)
|
|
22
|
+
const [isFormMustBeChanget, setIsFormMustBeChanget] = useState(false);
|
|
23
|
+
|
|
24
|
+
//? Ф-я является ф-ей - постановщиком изменений формы в очередь.
|
|
25
|
+
//? Ф-я получается самовызывающимся геттером.
|
|
26
|
+
//? Cуть ф-ии:
|
|
27
|
+
//? Для того чтоб не спамить изменениями, если их назначается много в рамках одной итерации,
|
|
28
|
+
//? ипользую прием с переназначением setTimeout
|
|
29
|
+
|
|
30
|
+
//? Чтобы преждевременно не спровацировать сработку useEffect
|
|
31
|
+
//? по стейту фиксирующему "отмашку" к началу изменений (isFormMustBeChanget)
|
|
32
|
+
//? откладываю переназначение этого стейта до приостановки непрерывных вызовов assignChangesToField,
|
|
33
|
+
//? но при этом при каждом ее вызове продолжаю добавлять изменения в массив
|
|
34
|
+
const assignChangesToField = (() => {
|
|
35
|
+
return (data, key) => {
|
|
36
|
+
clearTimeout(timeouts.timeoutId);
|
|
37
|
+
formChanges.push({ key, data });
|
|
38
|
+
setIsFormMustBeChanget(false);
|
|
39
|
+
timeouts.timeoutId = setTimeout(() => setIsFormMustBeChanget(true), 1);
|
|
40
|
+
return formChanges;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
|
|
44
|
+
//? Ф-я применяет "накопленные" изменения
|
|
45
|
+
const changeForm = async () => {
|
|
46
|
+
let modifiedFormFromOutside;
|
|
47
|
+
const errorsFromChanges = {};
|
|
48
|
+
|
|
49
|
+
const newForm = formChanges.reduce((acc, change) => {
|
|
50
|
+
const { data, key } = change;
|
|
51
|
+
const { error } = data || {};
|
|
52
|
+
const field = acc.find((field) => field.key === key);
|
|
53
|
+
|
|
54
|
+
if (field) {
|
|
55
|
+
acc = acc.map((field) =>
|
|
56
|
+
field.key === key ? { ...field, ...data } : field,
|
|
57
|
+
);
|
|
58
|
+
if (error || error !== undefined) errorsFromChanges[key] = error;
|
|
59
|
+
}
|
|
60
|
+
return acc;
|
|
61
|
+
}, form);
|
|
62
|
+
|
|
63
|
+
// ToDo - порефакторить, не прогонять валидацию всех полей, а только измененных
|
|
64
|
+
const validatedForm =
|
|
65
|
+
isUseValidation && typeof validateField === "function"
|
|
66
|
+
? newForm.map((field) => ({
|
|
67
|
+
...field,
|
|
68
|
+
error:
|
|
69
|
+
validateField({ ...field }, newForm)?.field?.error ||
|
|
70
|
+
errorsFromChanges[field.key] ||
|
|
71
|
+
"",
|
|
72
|
+
}))
|
|
73
|
+
: newForm;
|
|
74
|
+
|
|
75
|
+
if (callback && typeof callback === "function")
|
|
76
|
+
modifiedFormFromOutside = await callback(validatedForm);
|
|
77
|
+
if (!isNotSetForm) await setForm(modifiedFormFromOutside ?? validatedForm);
|
|
78
|
+
|
|
79
|
+
formChanges.length = 0;
|
|
80
|
+
setIsFormMustBeChanget(false);
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
if (isFormMustBeChanget) changeForm();
|
|
85
|
+
}, [isFormMustBeChanget]);
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
assignChangesToField,
|
|
89
|
+
isFormMustBeChanget,
|
|
90
|
+
setIsFormMustBeChanget,
|
|
91
|
+
changesArray: [...formChanges],
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export default useFormFieldsChangesManager;
|
|
@@ -1 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
import { getSafelyValue } from "./../fieldValueFormatters";
|
|
2
|
+
|
|
3
|
+
const DEFAULT_CODE = "en";
|
|
4
|
+
|
|
5
|
+
export default function createTranslator({ ...langCatalogs }) {
|
|
6
|
+
const loc = {
|
|
7
|
+
...langCatalogs,
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
let code = window.localStorage.getItem("lng");
|
|
11
|
+
if (!code)
|
|
12
|
+
code = window.navigator
|
|
13
|
+
? window.navigator.language.split("-")[0]
|
|
14
|
+
: DEFAULT_CODE;
|
|
15
|
+
if (!loc[code]) code = DEFAULT_CODE;
|
|
16
|
+
|
|
17
|
+
return function (text, values) {
|
|
18
|
+
const safelyValues = values ?? {};
|
|
19
|
+
const safelyText = getSafelyValue(text);
|
|
20
|
+
let translatedText =
|
|
21
|
+
loc[code] && loc[code][safelyText] ? loc[code][safelyText] : safelyText;
|
|
22
|
+
|
|
23
|
+
if (Object?.keys(safelyValues)?.length) {
|
|
24
|
+
for (const key in values) {
|
|
25
|
+
const regex = new RegExp(`%${key}%`, "g");
|
|
26
|
+
translatedText = translatedText?.replace(regex, values[key]);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return translatedText;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
@@ -1 +1,130 @@
|
|
|
1
|
-
|
|
1
|
+
// Взято из https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Math/round
|
|
2
|
+
// При импорте любой ф-и из этого файла отработает самовызывающаяся ф-я и расширит
|
|
3
|
+
// объект Math 3-мя ф-ми: round10, floor10, ceil10
|
|
4
|
+
(function () {
|
|
5
|
+
/**
|
|
6
|
+
* Корректировка округления десятичных дробей.
|
|
7
|
+
*
|
|
8
|
+
* @param {String} type Тип корректировки.
|
|
9
|
+
* @param {Number} value Число.
|
|
10
|
+
* @param {Integer} exp Показатель степени (десятичный логарифм основания корректировки).
|
|
11
|
+
* @returns {Number} Скорректированное значение.
|
|
12
|
+
*/
|
|
13
|
+
function decimalAdjust(type, value, exp) {
|
|
14
|
+
// Если степень не определена, либо равна нулю...
|
|
15
|
+
if (typeof exp === "undefined" || Number(exp) === 0) {
|
|
16
|
+
return Math[type](value);
|
|
17
|
+
}
|
|
18
|
+
value = Number(value);
|
|
19
|
+
exp = Number(exp);
|
|
20
|
+
// Если значение не является числом, либо степень не является целым числом...
|
|
21
|
+
if (isNaN(value) || !(typeof exp === "number" && exp % 1 === 0)) {
|
|
22
|
+
return NaN;
|
|
23
|
+
}
|
|
24
|
+
// Сдвиг разрядов
|
|
25
|
+
value = value.toString().split("e");
|
|
26
|
+
value = Math[type](
|
|
27
|
+
Number(value[0] + "e" + (value[1] ? Number(value[1]) - exp : -exp)),
|
|
28
|
+
);
|
|
29
|
+
// Обратный сдвиг
|
|
30
|
+
value = value.toString().split("e");
|
|
31
|
+
return Number(value[0] + "e" + (value[1] ? Number(value[1]) + exp : exp));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Десятичное округление к ближайшему
|
|
35
|
+
if (!Math.round10) {
|
|
36
|
+
Math.round10 = function (value, exp) {
|
|
37
|
+
return decimalAdjust("round", value, exp);
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// Десятичное округление вниз
|
|
41
|
+
if (!Math.floor10) {
|
|
42
|
+
Math.floor10 = function (value, exp) {
|
|
43
|
+
return decimalAdjust("floor", value, exp);
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// Десятичное округление вверх
|
|
47
|
+
if (!Math.ceil10) {
|
|
48
|
+
Math.ceil10 = function (value, exp) {
|
|
49
|
+
return decimalAdjust("ceil", value, exp);
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
})();
|
|
53
|
+
|
|
54
|
+
export const addRangeDefault = (from, to, currentValues, decimalPlaces) => {
|
|
55
|
+
if (!currentValues?.length) return [{ from, to }];
|
|
56
|
+
const step = decimalPlaces ? Math.pow(10, -1 * decimalPlaces) : 1;
|
|
57
|
+
|
|
58
|
+
const resultOfProcessAddingRange = currentValues.reduce(
|
|
59
|
+
(acc, range) => {
|
|
60
|
+
const isIncludesFrom =
|
|
61
|
+
Boolean(acc.from) && range.from < acc.from && range.to >= acc.from;
|
|
62
|
+
const isIncludesTo =
|
|
63
|
+
Boolean(acc.to) && range.from <= acc.to && range.to > acc.to;
|
|
64
|
+
const isRangeMustBeIncludet =
|
|
65
|
+
Boolean(acc.from) &&
|
|
66
|
+
Boolean(acc.to) &&
|
|
67
|
+
acc.from <= range.from &&
|
|
68
|
+
acc.to >= range.to;
|
|
69
|
+
|
|
70
|
+
const processTo = () => {
|
|
71
|
+
const lastAccRange = acc.result[acc.result.length - 1];
|
|
72
|
+
|
|
73
|
+
if (acc.to < range.from) {
|
|
74
|
+
lastAccRange.to = acc.to;
|
|
75
|
+
acc.to = null;
|
|
76
|
+
acc.result = [...acc.result, range];
|
|
77
|
+
} else if (isIncludesTo) {
|
|
78
|
+
lastAccRange.to = acc.to;
|
|
79
|
+
acc.result = [
|
|
80
|
+
...acc.result,
|
|
81
|
+
{
|
|
82
|
+
from: Math.round10(acc.to + step, -1 * decimalPlaces),
|
|
83
|
+
to: range.to,
|
|
84
|
+
},
|
|
85
|
+
];
|
|
86
|
+
acc.to = null;
|
|
87
|
+
} else if (acc.to === range.to) {
|
|
88
|
+
lastAccRange.to = acc.to;
|
|
89
|
+
acc.to = null;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
if (!acc.from && !acc.to) acc.result = [...acc.result, range];
|
|
94
|
+
else if (!acc.from && acc.to) processTo();
|
|
95
|
+
else if (acc.from && acc.to) {
|
|
96
|
+
if (acc.from <= range.from) {
|
|
97
|
+
acc.result = [...acc.result, { from: acc.from }];
|
|
98
|
+
acc.from = null;
|
|
99
|
+
processTo();
|
|
100
|
+
} else if (isIncludesFrom) {
|
|
101
|
+
acc.result = [
|
|
102
|
+
...acc.result,
|
|
103
|
+
{
|
|
104
|
+
from: range.from,
|
|
105
|
+
to: Math.round10(acc.from - step, -1 * decimalPlaces),
|
|
106
|
+
},
|
|
107
|
+
{ from: acc.from },
|
|
108
|
+
];
|
|
109
|
+
acc.from = null;
|
|
110
|
+
processTo();
|
|
111
|
+
} else {
|
|
112
|
+
acc.result = [
|
|
113
|
+
...acc.result,
|
|
114
|
+
...(!isRangeMustBeIncludet ? [range] : []),
|
|
115
|
+
{
|
|
116
|
+
from: Math.round10(acc.from, -1 * decimalPlaces),
|
|
117
|
+
to: Math.round10(acc.to, -1 * decimalPlaces),
|
|
118
|
+
},
|
|
119
|
+
];
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return acc;
|
|
123
|
+
},
|
|
124
|
+
{ from, to, result: [] },
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
const result = resultOfProcessAddingRange.result;
|
|
128
|
+
if (!result[result.length - 1].to) result[result.length - 1].to = to;
|
|
129
|
+
return result;
|
|
130
|
+
};
|