intelicoreact 1.8.69 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Atomic/FormElements/ActionAlert/ActionAlert.d.ts +5 -0
- package/dist/Atomic/FormElements/ActionAlert/ActionAlert.interface.d.ts +21 -0
- package/dist/Atomic/FormElements/ActionAlert/index.d.ts +4 -0
- package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.d.ts +5 -0
- package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.interface.d.ts +11 -0
- package/dist/Atomic/FormElements/AdvancedStatus/index.d.ts +3 -0
- package/dist/Atomic/FormElements/Calendar/Calendar.d.ts +5 -0
- package/dist/Atomic/FormElements/Calendar/Calendar.props.d.ts +28 -0
- package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.d.ts +5 -0
- package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.interface.d.ts +11 -0
- package/dist/Atomic/FormElements/CheckboxInput/index.d.ts +3 -0
- package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.d.ts +5 -0
- package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.interface.d.ts +24 -0
- package/dist/Atomic/FormElements/CheckboxesLine/index.d.ts +3 -0
- package/dist/Atomic/FormElements/Datepicker/Datepicker.d.ts +5 -0
- package/dist/Atomic/FormElements/Datepicker/Datepicker.props.d.ts +25 -0
- package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.d.ts +4 -0
- package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.props.d.ts +23 -0
- package/dist/Atomic/FormElements/Dropdown/Dropdown.d.ts +6 -0
- package/dist/Atomic/FormElements/Dropdown/Dropdown.interface.d.ts +102 -0
- package/dist/Atomic/FormElements/Dropdown/_utils.d.ts +8 -0
- package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.d.ts +4 -0
- package/dist/Atomic/FormElements/Dropdown/index.d.ts +4 -0
- package/dist/Atomic/FormElements/Dropdown/useDropdown.d.ts +3 -0
- package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.d.ts +5 -0
- package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.interface.d.ts +34 -0
- package/dist/Atomic/FormElements/FileLoader/FileLoader.d.ts +5 -0
- package/dist/Atomic/FormElements/FileLoader/FileLoader.interface.d.ts +29 -0
- package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.d.ts +5 -0
- package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.interface.d.ts +16 -0
- package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.d.ts +5 -0
- package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.interface.d.ts +12 -0
- package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.d.ts +5 -0
- package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.interface.d.ts +31 -0
- package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.d.ts +5 -0
- package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.interface.d.ts +31 -0
- package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.d.ts +5 -0
- package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.interface.d.ts +28 -0
- package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.d.ts +5 -0
- package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.interface.d.ts +14 -0
- package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.d.ts +11 -0
- package/dist/Atomic/FormElements/FormattedRawSSN/index.d.ts +4 -0
- package/dist/Atomic/FormElements/Input/Input.d.ts +8 -0
- package/dist/Atomic/FormElements/Input/hooks/useErrorBlink.d.ts +11 -0
- package/dist/Atomic/FormElements/Input/hooks/useInputFocus.d.ts +15 -0
- package/dist/Atomic/FormElements/Input/hooks/useInputHover.d.ts +5 -0
- package/dist/Atomic/FormElements/Input/hooks/useInputValueProcessing.d.ts +12 -0
- package/dist/Atomic/FormElements/Input/hooks/useKeyboardHandling.d.ts +17 -0
- package/dist/Atomic/FormElements/Input/index.d.ts +5 -0
- package/dist/Atomic/FormElements/Input/lib/autocomplete.d.ts +61 -0
- package/dist/Atomic/FormElements/Input/types.d.ts +122 -0
- package/dist/Atomic/FormElements/InputCalendar/InputCalendar.d.ts +5 -0
- package/dist/Atomic/FormElements/InputCalendar/InputCalendar.interface.d.ts +17 -0
- package/dist/Atomic/FormElements/InputColor/InputColor.d.ts +5 -0
- package/dist/Atomic/FormElements/InputColor/InputColor.interface.d.ts +15 -0
- package/dist/Atomic/FormElements/InputColor/index.d.ts +4 -0
- package/dist/Atomic/FormElements/InputCurrency/InputCurrency.d.ts +5 -0
- package/dist/Atomic/FormElements/InputCurrency/InputCurrency.interface.d.ts +29 -0
- package/dist/Atomic/FormElements/InputDateRange/InputDateRange.d.ts +5 -0
- package/dist/Atomic/FormElements/InputDateRange/InputDateRange.interface.d.ts +144 -0
- package/dist/Atomic/FormElements/InputDateRange/components/DateInput.d.ts +7 -0
- package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.d.ts +4 -0
- package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.d.ts +4 -0
- package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.d.ts +4 -0
- package/dist/Atomic/FormElements/InputDateRange/dependencies.d.ts +18 -0
- package/dist/Atomic/FormElements/InputLink/InputLink.d.ts +5 -0
- package/dist/Atomic/FormElements/InputLink/InputLink.interface.d.ts +15 -0
- package/dist/Atomic/FormElements/InputLink/index.d.ts +4 -0
- package/dist/Atomic/FormElements/InputMask/InputMask.d.ts +2 -0
- package/dist/Atomic/FormElements/InputMask/index.d.ts +4 -0
- package/dist/Atomic/FormElements/InputMask3/InputMask3.d.ts +5 -0
- package/dist/Atomic/FormElements/InputMask3/InputMask3.interface.d.ts +78 -0
- package/dist/Atomic/FormElements/InputMask3/config.d.ts +8 -0
- package/dist/Atomic/FormElements/InputMask3/functions.d.ts +11 -0
- package/dist/Atomic/FormElements/InputWithAction/InputWithAction.d.ts +5 -0
- package/dist/Atomic/FormElements/InputWithAction/InputWithAction.interface.d.ts +26 -0
- package/dist/Atomic/FormElements/InputWithAction/index.d.ts +4 -0
- package/dist/Atomic/FormElements/InputsRow/InputsRow.d.ts +5 -0
- package/dist/Atomic/FormElements/InputsRow/InputsRow.interface.d.ts +15 -0
- package/dist/Atomic/FormElements/InputsRow/index.d.ts +4 -0
- package/dist/Atomic/FormElements/Label/Label.d.ts +5 -0
- package/dist/Atomic/FormElements/Label/Label.interface.d.ts +19 -0
- package/dist/Atomic/FormElements/Label/index.d.ts +3 -0
- package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.d.ts +5 -0
- package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.interface.d.ts +34 -0
- package/dist/Atomic/FormElements/MultiSelect/MultiSelect.d.ts +14 -0
- package/dist/Atomic/FormElements/NumericInput/NumericInput.d.ts +36 -0
- package/dist/Atomic/FormElements/RadioGroup/RadioGroup.d.ts +5 -0
- package/dist/Atomic/FormElements/RadioGroup/RadioGroup.interface.d.ts +16 -0
- package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.d.ts +5 -0
- package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.interface.d.ts +24 -0
- package/dist/Atomic/FormElements/RadioInput/RadioInput.d.ts +5 -0
- package/dist/Atomic/FormElements/RadioInput/RadioInput.interface.d.ts +13 -0
- package/dist/Atomic/FormElements/RadioInput/index.d.ts +4 -0
- package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.d.ts +14 -0
- package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.d.ts +2 -0
- package/dist/Atomic/FormElements/RangeInputs/RangeInputs.d.ts +5 -0
- package/dist/Atomic/FormElements/RangeInputs/RangeInputs.interface.d.ts +32 -0
- package/dist/Atomic/FormElements/RangeInputs/index.d.ts +4 -0
- package/dist/Atomic/FormElements/RangeList/RangeList.d.ts +5 -0
- package/dist/Atomic/FormElements/RangeList/RangeList.interface.d.ts +36 -0
- package/dist/Atomic/FormElements/RangeList/index.d.ts +4 -0
- package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.d.ts +5 -0
- package/dist/Atomic/FormElements/RangeSlider/RangeSlider.d.ts +19 -0
- package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.d.ts +5 -0
- package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.interface.d.ts +47 -0
- package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.d.ts +5 -0
- package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.interface.d.ts +12 -0
- package/dist/Atomic/FormElements/Switcher/Switcher.d.ts +5 -0
- package/dist/Atomic/FormElements/Switcher/Switcher.interface.d.ts +14 -0
- package/dist/Atomic/FormElements/Switcher/index.d.ts +4 -0
- package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.d.ts +5 -0
- package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.interface.d.ts +23 -0
- package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.d.ts +5 -0
- package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.interface.d.ts +15 -0
- package/dist/Atomic/FormElements/SwitcherHide/index.d.ts +4 -0
- package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.d.ts +5 -0
- package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.interface.d.ts +26 -0
- package/dist/Atomic/FormElements/SwitcherRadio/index.d.ts +4 -0
- package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.d.ts +4 -0
- package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.interface.d.ts +21 -0
- package/dist/Atomic/FormElements/SwitcherRange/index.d.ts +4 -0
- package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.d.ts +5 -0
- package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.interface.d.ts +28 -0
- package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.d.ts +5 -0
- package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.d.ts +5 -0
- package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.interface.d.ts +17 -0
- package/dist/Atomic/FormElements/Text/Text.d.ts +17 -0
- package/dist/Atomic/FormElements/Text/Text.interface.d.ts +23 -0
- package/dist/Atomic/FormElements/Text/index.d.ts +4 -0
- package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.d.ts +12 -0
- package/dist/Atomic/FormElements/Textarea/Textarea.d.ts +7 -0
- package/dist/Atomic/FormElements/Textarea/Textarea.interface.d.ts +19 -0
- package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.d.ts +5 -0
- package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.interface.d.ts +42 -0
- package/dist/Atomic/FormElements/TieredCheckboxes/index.d.ts +4 -0
- package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.d.ts +5 -0
- package/dist/Atomic/FormElements/TimeRange/TimeRange.d.ts +5 -0
- package/dist/Atomic/FormElements/TimeRange/TimeRange.interface.d.ts +7 -0
- package/dist/Atomic/FormElements/TimeRange/index.d.ts +3 -0
- package/dist/Atomic/FormElements/UserContacts/UserContacts.d.ts +5 -0
- package/dist/Atomic/FormElements/UserContacts/UserContacts.interface.d.ts +32 -0
- package/dist/Atomic/FormElements/UserContacts/index.d.ts +3 -0
- package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.d.ts +17 -0
- package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.d.ts +12 -0
- package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.d.ts +2 -0
- package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.d.ts +23 -0
- package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.d.ts +2 -0
- package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.d.ts +38 -0
- package/dist/Atomic/Layout/Header/Header.d.ts +5 -0
- package/dist/Atomic/Layout/Header/Header.interface.d.ts +10 -0
- package/dist/Atomic/Layout/MainMenu/MainMenu.d.ts +5 -0
- package/dist/Atomic/Layout/MainMenu/MainMenu.interface.d.ts +18 -0
- package/dist/Atomic/Layout/Spinner/Spinner.d.ts +5 -0
- package/dist/Atomic/Layout/Spinner/Spinner.interface.d.ts +4 -0
- package/dist/Atomic/Layout/Spinner/index.d.ts +3 -0
- package/dist/Atomic/UI/Accordion/Accordion.d.ts +5 -0
- package/dist/Atomic/UI/Accordion/Accordion.interface.d.ts +56 -0
- package/dist/Atomic/UI/Accordion/AccordionItem.d.ts +5 -0
- package/dist/Atomic/UI/Accordion/index.d.ts +3 -0
- package/dist/Atomic/UI/AccordionTable/AccordionTable.d.ts +10 -0
- package/dist/Atomic/UI/AccordionText/AccordionText.d.ts +8 -0
- package/dist/Atomic/UI/AdvancedTag/AdvTag.d.ts +5 -0
- package/dist/Atomic/UI/AdvancedTag/AdvancedTags.interface.d.ts +36 -0
- package/dist/Atomic/UI/Alert/Alert.d.ts +5 -0
- package/dist/Atomic/UI/Alert/Alert.interface.d.ts +30 -0
- package/dist/Atomic/UI/Alert/index.d.ts +4 -0
- package/dist/Atomic/UI/Arrow/Arrow.d.ts +5 -0
- package/dist/Atomic/UI/Arrow/Arrow.interface.d.ts +10 -0
- package/dist/Atomic/UI/Box/Box.d.ts +5 -0
- package/dist/Atomic/UI/Box/Box.interface.d.ts +9 -0
- package/dist/Atomic/UI/Button/Button.d.ts +19 -0
- package/dist/Atomic/UI/ButtonsBar/ButtonsBar.d.ts +5 -0
- package/dist/Atomic/UI/ButtonsBar/ButtonsBar.interface.d.ts +22 -0
- package/dist/Atomic/UI/ButtonsBar/index.d.ts +4 -0
- package/dist/Atomic/UI/Chart/Chart.d.ts +5 -0
- package/dist/Atomic/UI/Chart/Chart.interface.d.ts +34 -0
- package/dist/Atomic/UI/Chart/index.d.ts +4 -0
- package/dist/Atomic/UI/Chart/partial/Chart.constants.d.ts +78 -0
- package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.d.ts +5 -0
- package/dist/Atomic/UI/Chart/partial/datasetSetters.d.ts +13 -0
- package/dist/Atomic/UI/Chart/partial/optionsConstructor.d.ts +145 -0
- package/dist/Atomic/UI/Chart/partial/optionsSetters.d.ts +4 -0
- package/dist/Atomic/UI/Chart/partial/utils.d.ts +5 -0
- package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.d.ts +14 -0
- package/dist/Atomic/UI/DateTime/DateTime.d.ts +5 -0
- package/dist/Atomic/UI/DateTime/DateTime.interface.d.ts +11 -0
- package/dist/Atomic/UI/DebugContainer/DebugContainer.d.ts +10 -0
- package/dist/Atomic/UI/DebugContainer/useDebugContainer.d.ts +7 -0
- package/dist/Atomic/UI/DoubleString/DoubleString.d.ts +5 -0
- package/dist/Atomic/UI/DoubleString/DoubleString.interface.d.ts +22 -0
- package/dist/Atomic/UI/DoubleString/index.d.ts +4 -0
- package/dist/Atomic/UI/DynamicIcon/DynamicIcon.d.ts +4 -0
- package/dist/Atomic/UI/DynamicIcon/DynamicIcon.interface.d.ts +6 -0
- package/dist/Atomic/UI/DynamicIcon/index.d.ts +3 -0
- package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.d.ts +2 -0
- package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.d.ts +4 -0
- package/dist/Atomic/UI/Hint/Hint.d.ts +5 -0
- package/dist/Atomic/UI/Hint/Hint.interface.d.ts +26 -0
- package/dist/Atomic/UI/Hint/index.d.ts +4 -0
- package/dist/Atomic/UI/Hint/partials/_constants.d.ts +6 -0
- package/dist/Atomic/UI/Hint/partials/_utils.d.ts +6 -0
- package/dist/Atomic/UI/Modal/Modal.d.ts +20 -0
- package/dist/Atomic/UI/Modal/Modal.interface.d.ts +70 -0
- package/dist/Atomic/UI/Modal/ModalHOC.d.ts +5 -0
- package/dist/Atomic/UI/Modal/index.d.ts +9 -0
- package/dist/Atomic/UI/Modal/partials/ModalFooter.d.ts +4 -0
- package/dist/Atomic/UI/Modal/partials/ModalTitle.d.ts +4 -0
- package/dist/Atomic/UI/Modal/partials/_constants.d.ts +23 -0
- package/dist/Atomic/UI/Modal/partials/_utils.d.ts +11 -0
- package/dist/Atomic/UI/Modal/partials/useMobileModal.d.ts +31 -0
- package/dist/Atomic/UI/MonoAccordion/MonoAccordion._test.d.ts +1 -0
- package/dist/Atomic/UI/MonoAccordion/MonoAccordion.d.ts +12 -0
- package/dist/Atomic/UI/MonoAccordion/MonoAccordion.interface.d.ts +17 -0
- package/dist/Atomic/UI/MonoAccordion/index.d.ts +3 -0
- package/dist/Atomic/UI/NavLine/NavLine.d.ts +5 -0
- package/dist/Atomic/UI/NavLine/NavLine.interface.d.ts +31 -0
- package/dist/Atomic/UI/NavLine/index.d.ts +3 -0
- package/dist/Atomic/UI/PageTitle/PageTitle.d.ts +5 -0
- package/dist/Atomic/UI/PageTitle/PageTitle.interface.d.ts +15 -0
- package/dist/Atomic/UI/PageTitle/index.d.ts +3 -0
- package/dist/Atomic/UI/PieChart/PieChart.d.ts +8 -0
- package/dist/Atomic/UI/Price/Price.d.ts +4 -0
- package/dist/Atomic/UI/Price/Price.interface.d.ts +6 -0
- package/dist/Atomic/UI/Price/index.d.ts +3 -0
- package/dist/Atomic/UI/PriceRange/PriceRange.d.ts +4 -0
- package/dist/Atomic/UI/PriceRange/PriceRange.interface.d.ts +8 -0
- package/dist/Atomic/UI/PriceRange/index.d.ts +3 -0
- package/dist/Atomic/UI/ProgressLine/ProgressLine.d.ts +5 -0
- package/dist/Atomic/UI/ProgressLine/ProgressLine.interface.d.ts +25 -0
- package/dist/Atomic/UI/ProgressLine/index.d.ts +3 -0
- package/dist/Atomic/UI/Status/Status.d.ts +5 -0
- package/dist/Atomic/UI/Status/Status.interface.d.ts +15 -0
- package/dist/Atomic/UI/Status/index.d.ts +3 -0
- package/dist/Atomic/UI/Table/Partials/TdHeader.d.ts +5 -0
- package/dist/Atomic/UI/Table/TdTypes/TdActions.d.ts +6 -0
- package/dist/Atomic/UI/Table/TdTypes/TdPriority.d.ts +6 -0
- package/dist/Atomic/UI/Table/TdTypes/TdRange.d.ts +4 -0
- package/dist/Atomic/UI/Table/TdTypes/TdWeight.d.ts +7 -0
- package/dist/Atomic/UI/UserBox/UserBox.d.ts +5 -0
- package/dist/Atomic/UI/UserBox/UserBox.interface.d.ts +9 -0
- package/dist/Atomic/UI/UserBox/index.d.ts +3 -0
- package/dist/Atomic/UI/WizardStepper/WizardStepper.interface.d.ts +40 -0
- package/dist/Atomic/UI/WizardStepper/constructor.d.ts +51 -0
- package/dist/Atomic/UI/WizardStepper/index.d.ts +3 -0
- package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.d.ts +4 -0
- package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.d.ts +2 -0
- package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.d.ts +5 -0
- package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.d.ts +2 -0
- package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.d.ts +5 -0
- package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.d.ts +2 -0
- package/dist/Atomic/UI/WizardStepper/ui/icons.d.ts +6 -0
- package/dist/Atomic/UI/WizardStepper/ui/index.d.ts +2 -0
- package/dist/Classes/AbortableFetch.d.ts +43 -0
- package/dist/Classes/AnimatedHandler.d.ts +4 -0
- package/dist/Classes/RESTAPI/index.d.ts +9 -0
- package/dist/Classes/RESTAPI/partials/AbortableFetch.d.ts +43 -0
- package/dist/Classes/RESTAPI/partials/ApiBase.d.ts +10 -0
- package/dist/Classes/RESTAPI/partials/ApiRequestCreators.d.ts +9 -0
- package/dist/Classes/RESTAPI/partials/ApiUtils.d.ts +12 -0
- package/dist/Classes/RESTAPI/partials/CredentialsProcessing.d.ts +24 -0
- package/dist/Classes/RESTAPI/partials/Utils.d.ts +4 -0
- package/dist/Classes/RESTAPI/partials/_utils.d.ts +9 -0
- package/dist/Constants/index.constants.d.ts +20 -0
- package/dist/Functions/Portal.d.ts +6 -0
- package/dist/Functions/customEventListener.d.ts +27 -0
- package/dist/Functions/dateTime.d.ts +95 -0
- package/dist/Functions/fieldValueFormatters.d.ts +19 -0
- package/dist/Functions/guards/assertions.d.ts +224 -0
- package/dist/Functions/guards/safeValue.d.ts +40 -0
- package/dist/Functions/guards/typeGuards.d.ts +193 -0
- package/dist/Functions/hooks/useFormFieldsChangesManager.d.ts +15 -0
- package/dist/Functions/locale/createTranslator.d.ts +3 -0
- package/dist/Functions/operations.d.ts +1 -0
- package/dist/Functions/presets/inputMaskPresets.d.ts +136 -0
- package/dist/Functions/presets/inputPresets.d.ts +16 -0
- package/dist/Functions/presets/mobileKeyboardTypesPresets.d.ts +17 -0
- package/dist/Functions/schemas.d.ts +3 -0
- package/dist/Functions/useBodyScrollLock.d.ts +2 -0
- package/dist/Functions/useClickOutside.d.ts +1 -0
- package/dist/Functions/useDebounce.d.ts +4 -0
- package/dist/Functions/useFieldFocus.d.ts +7 -0
- package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.d.ts +15 -0
- package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.d.ts +12 -0
- package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.d.ts +15 -0
- package/dist/Functions/useFormTools/functions/General.d.ts +15 -0
- package/dist/Functions/useFormTools/functions/RenderFields.d.ts +7 -0
- package/dist/Functions/useFormTools/functions/usePrevious.d.ts +2 -0
- package/dist/Functions/useFormTools/index.d.ts +86 -0
- package/dist/Functions/useInputHighlightError.d.ts +12 -0
- package/dist/Functions/useIsMobile/index.d.ts +2 -0
- package/dist/Functions/useIsMobile/useIsMobile.d.ts +18 -0
- package/dist/Functions/useKeyPress/useHandleKeyPress.d.ts +35 -0
- package/dist/Functions/useKeyPress/useKeyPress.d.ts +12 -0
- package/dist/Functions/useLocalStorage.d.ts +2 -0
- package/dist/Functions/useLocationParams.d.ts +1 -0
- package/dist/Functions/useMediaQuery.d.ts +2 -0
- package/dist/Functions/useMetaInfo.d.ts +8 -0
- package/dist/Functions/useMouseUpOutside.d.ts +1 -0
- package/dist/Functions/useOnlineStatus.d.ts +2 -0
- package/dist/Functions/usePasswordChecker.d.ts +7 -0
- package/dist/Functions/usePrevious.d.ts +2 -0
- package/dist/Functions/useResize.d.ts +3 -0
- package/dist/Functions/useScrollTo.d.ts +2 -0
- package/dist/Functions/useToggle.d.ts +7 -0
- package/dist/Functions/utils/disableDefaultBehavior/disableDefaultBehavior.d.ts +4 -0
- package/dist/Functions/utils/disableDefaultBehavior/index.d.ts +1 -0
- package/dist/Functions/utils/getLimitedMask/getLimitedMask.d.ts +18 -0
- package/dist/Functions/utils/getLimitedMask/index.d.ts +1 -0
- package/dist/Functions/utils.d.ts +35 -80
- package/dist/Langs.d.ts +179 -0
- package/dist/Molecular/CustomIcons/components/AffiliateNetworks.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/AlertCircle.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/AppStore.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Arrow.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/ArrowDown.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/ArrowLeft.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/ArrowRight.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/ArrowUp.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Bell.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Button.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Campaigns.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Check.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Check2.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/ChevronDown.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/ChevronLeft.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/ChevronRight.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/ChevronUp.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/ChevronUpDown.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Close.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/ColumnsOrder.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Delete.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Edit.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Email.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/FinturfLogo.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/FinturfLogo2.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Flows.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Gift.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/GoogleAuth.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/GooglePlay.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/HelpCircle.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/HelpCircle2.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/HelpCircleFilled.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Home.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Home2.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Key.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Landers.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Lock.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Mail.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Mastercard.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Minus.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Offers.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Pause.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/PayPal.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/PayPalLightLarge.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Phone.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Play.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Plus.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Profile.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/QRCode.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Rectangle.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Revert.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Star.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Star2.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/TrafficSources.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Trash.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/TrashRed.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Triggers.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/User.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/Visa.d.ts +2 -0
- package/dist/Molecular/CustomIcons/components/X.d.ts +2 -0
- package/dist/Molecular/FormElement/FormElement.d.ts +5 -0
- package/dist/Molecular/FormElement/FormElement.interface.d.ts +27 -0
- package/dist/Molecular/FormWithDependOn/FormWithDependOn.d.ts +3 -0
- package/dist/Molecular/FormWithDependOn/partials/_utils.d.ts +8 -0
- package/dist/Molecular/InputAddress/InputAddress.d.ts +5 -0
- package/dist/Molecular/InputAddress/InputAddress.interface.d.ts +37 -0
- package/dist/Molecular/InputCustomFetch/InputCustomFetch.d.ts +4 -0
- package/dist/Molecular/InputCustomFetch/index.d.ts +2 -0
- package/dist/Molecular/InputCustomFetch/lib/hooks/useDebouncedCallback.d.ts +8 -0
- package/dist/Molecular/InputCustomFetch/lib/hooks/useFetchWithAbort.d.ts +10 -0
- package/dist/Molecular/InputCustomFetch/lib/utils.d.ts +13 -0
- package/dist/Molecular/InputCustomFetch/model/types.d.ts +46 -0
- package/dist/Molecular/InputPassword/InputPassword.d.ts +5 -0
- package/dist/Molecular/InputPassword/InputPassword.interface.d.ts +8 -0
- package/dist/classes.cjs +1464 -0
- package/dist/classes.cjs.map +7 -0
- package/dist/classes.d.ts +7 -0
- package/dist/classes.js +1442 -0
- package/dist/classes.js.map +7 -0
- package/dist/form.cjs +14837 -0
- package/dist/form.cjs.map +7 -0
- package/dist/form.d.ts +75 -0
- package/dist/form.js +14852 -0
- package/dist/form.js.map +7 -0
- package/dist/hooks.cjs +2644 -0
- package/dist/hooks.cjs.map +7 -0
- package/dist/hooks.d.ts +34 -0
- package/dist/hooks.js +2612 -0
- package/dist/hooks.js.map +7 -0
- package/dist/icons.cjs +1807 -0
- package/dist/icons.cjs.map +7 -0
- package/dist/icons.d.ts +5 -0
- package/dist/icons.js +1785 -0
- package/dist/icons.js.map +7 -0
- package/dist/index.cjs +29060 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +29097 -1
- package/dist/index.js.map +7 -0
- package/dist/layout.cjs +7119 -0
- package/dist/layout.cjs.map +7 -0
- package/dist/layout.d.ts +8 -0
- package/dist/layout.js +7087 -0
- package/dist/layout.js.map +7 -0
- package/dist/presets.cjs +905 -0
- package/dist/presets.cjs.map +7 -0
- package/dist/presets.d.ts +9 -0
- package/dist/presets.js +873 -0
- package/dist/presets.js.map +7 -0
- package/dist/types/base.interface.d.ts +6 -0
- package/dist/types/base.types.d.ts +2 -0
- package/dist/types/declaration/TWithEventManagementAsObj/index.d.ts +10 -0
- package/dist/types/declaration/TWithEventManagementAsObj/innerTypes/Modal.d.ts +4 -0
- package/dist/types/declaration/index.d.ts +17 -0
- package/dist/types/index.cjs +18 -0
- package/dist/types/index.cjs.map +7 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +7 -0
- package/dist/ui.cjs +11582 -0
- package/dist/ui.cjs.map +7 -0
- package/dist/ui.d.ts +51 -0
- package/dist/ui.js +11572 -0
- package/dist/ui.js.map +7 -0
- package/dist/utils.cjs +700 -0
- package/dist/utils.cjs.map +7 -0
- package/dist/utils.d.ts +8 -0
- package/dist/utils.js +668 -0
- package/dist/utils.js.map +7 -0
- package/package.json +86 -59
- package/dist/Atomic/FormElements/ActionAlert/ActionAlert.interface.ts +0 -24
- package/dist/Atomic/FormElements/ActionAlert/ActionAlert.js +0 -1
- package/dist/Atomic/FormElements/ActionAlert/ActionAlert.scss +0 -50
- package/dist/Atomic/FormElements/ActionAlert/index.ts +0 -5
- package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.interface.ts +0 -15
- package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +0 -1
- package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.scss +0 -85
- package/dist/Atomic/FormElements/AdvancedStatus/index.ts +0 -4
- package/dist/Atomic/FormElements/Calendar/Calendar.js +0 -1
- package/dist/Atomic/FormElements/Calendar/Calendar.props.js +0 -1
- package/dist/Atomic/FormElements/Calendar/Calendar.scss +0 -627
- package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.interface.ts +0 -15
- package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +0 -1
- package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +0 -151
- package/dist/Atomic/FormElements/CheckboxInput/index.ts +0 -4
- package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.interface.ts +0 -25
- package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +0 -1
- package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.scss +0 -32
- package/dist/Atomic/FormElements/CheckboxesLine/index.ts +0 -4
- package/dist/Atomic/FormElements/CheckboxesLine/partial/AnyOuterClass.scss +0 -5
- package/dist/Atomic/FormElements/Datepicker/Datepicker.js +0 -1
- package/dist/Atomic/FormElements/Datepicker/Datepicker.props.js +0 -1
- package/dist/Atomic/FormElements/Datepicker/Datepicker.scss +0 -0
- package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.js +0 -1
- package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.props.js +0 -1
- package/dist/Atomic/FormElements/Dropdown/Dropdown.interface.ts +0 -116
- package/dist/Atomic/FormElements/Dropdown/Dropdown.js +0 -1
- package/dist/Atomic/FormElements/Dropdown/Dropdown.scss +0 -710
- package/dist/Atomic/FormElements/Dropdown/_utils.js +0 -1
- package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +0 -1
- package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.scss +0 -75
- package/dist/Atomic/FormElements/Dropdown/index.ts +0 -5
- package/dist/Atomic/FormElements/Dropdown/useDropdown.js +0 -1
- package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.interface.ts +0 -36
- package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +0 -1
- package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.scss +0 -539
- package/dist/Atomic/FormElements/FileLoader/FileLoader.interface.ts +0 -39
- package/dist/Atomic/FormElements/FileLoader/FileLoader.js +0 -1
- package/dist/Atomic/FormElements/FileLoader/FileLoader.scss +0 -169
- package/dist/Atomic/FormElements/FileLoader/partial/AnyOuterClass.scss +0 -9
- package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.interface.ts +0 -22
- package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.js +0 -1
- package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.interface.ts +0 -13
- package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.js +0 -1
- package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.interface.ts +0 -38
- package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js +0 -1
- package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.scss +0 -106
- package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.interface.ts +0 -30
- package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +0 -1
- package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.scss +0 -134
- package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.interface.ts +0 -30
- package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +0 -1
- package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.scss +0 -19
- package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.interface.ts +0 -15
- package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +0 -1
- package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.scss +0 -67
- package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.js +0 -1
- package/dist/Atomic/FormElements/FormattedRawSSN/index.ts +0 -5
- package/dist/Atomic/FormElements/Input/Input.js +0 -1
- package/dist/Atomic/FormElements/Input/Input.scss +0 -170
- package/dist/Atomic/FormElements/Input/hooks/useErrorBlink.js +0 -1
- package/dist/Atomic/FormElements/Input/hooks/useInputFocus.js +0 -1
- package/dist/Atomic/FormElements/Input/hooks/useInputHover.js +0 -1
- package/dist/Atomic/FormElements/Input/hooks/useInputValueProcessing.js +0 -1
- package/dist/Atomic/FormElements/Input/hooks/useKeyboardHandling.js +0 -1
- package/dist/Atomic/FormElements/Input/index.ts +0 -7
- package/dist/Atomic/FormElements/Input/lib/autocomplete.js +0 -1
- package/dist/Atomic/FormElements/Input/types.js +0 -1
- package/dist/Atomic/FormElements/InputCalendar/InputCalendar.interface.ts +0 -19
- package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +0 -1
- package/dist/Atomic/FormElements/InputCalendar/InputCalendar.scss +0 -28
- package/dist/Atomic/FormElements/InputColor/InputColor.interface.ts +0 -17
- package/dist/Atomic/FormElements/InputColor/InputColor.js +0 -1
- package/dist/Atomic/FormElements/InputColor/InputColor.scss +0 -21
- package/dist/Atomic/FormElements/InputColor/index.ts +0 -5
- package/dist/Atomic/FormElements/InputCurrency/InputCurrency.interface.ts +0 -31
- package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +0 -1
- package/dist/Atomic/FormElements/InputCurrency/InputCurrency.scss +0 -18
- package/dist/Atomic/FormElements/InputDateRange/InputDateRange.interface.ts +0 -161
- package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +0 -1
- package/dist/Atomic/FormElements/InputDateRange/InputDateRange.scss +0 -812
- package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +0 -1
- package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +0 -1
- package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +0 -1
- package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +0 -1
- package/dist/Atomic/FormElements/InputDateRange/dependencies.js +0 -1
- package/dist/Atomic/FormElements/InputLink/InputLink.interface.ts +0 -17
- package/dist/Atomic/FormElements/InputLink/InputLink.js +0 -1
- package/dist/Atomic/FormElements/InputLink/InputLink.scss +0 -58
- package/dist/Atomic/FormElements/InputLink/index.ts +0 -5
- package/dist/Atomic/FormElements/InputMask/InputMask.js +0 -1
- package/dist/Atomic/FormElements/InputMask/index.ts +0 -4
- package/dist/Atomic/FormElements/InputMask3/InputMask3.interface.ts +0 -91
- package/dist/Atomic/FormElements/InputMask3/InputMask3.js +0 -1
- package/dist/Atomic/FormElements/InputMask3/InputMask3.scss +0 -183
- package/dist/Atomic/FormElements/InputMask3/config.js +0 -1
- package/dist/Atomic/FormElements/InputMask3/functions.js +0 -1
- package/dist/Atomic/FormElements/InputWithAction/InputWithAction.interface.ts +0 -27
- package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +0 -1
- package/dist/Atomic/FormElements/InputWithAction/InputWithAction.scss +0 -115
- package/dist/Atomic/FormElements/InputWithAction/index.ts +0 -5
- package/dist/Atomic/FormElements/InputsRow/InputsRow.interface.ts +0 -17
- package/dist/Atomic/FormElements/InputsRow/InputsRow.js +0 -1
- package/dist/Atomic/FormElements/InputsRow/InputsRow.scss +0 -50
- package/dist/Atomic/FormElements/InputsRow/index.ts +0 -5
- package/dist/Atomic/FormElements/Label/Label.interface.ts +0 -20
- package/dist/Atomic/FormElements/Label/Label.js +0 -1
- package/dist/Atomic/FormElements/Label/Label.scss +0 -41
- package/dist/Atomic/FormElements/Label/index.ts +0 -4
- package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.interface.ts +0 -39
- package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +0 -1
- package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.scss +0 -126
- package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +0 -1
- package/dist/Atomic/FormElements/MultiSelect/MultiSelect.scss +0 -18
- package/dist/Atomic/FormElements/MultiSelect/MultiSelect.scss.d.ts +0 -4
- package/dist/Atomic/FormElements/NumericInput/NumericInput.js +0 -1
- package/dist/Atomic/FormElements/NumericInput/NumericInput.scss +0 -174
- package/dist/Atomic/FormElements/RadioGroup/RadioGroup.interface.ts +0 -17
- package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +0 -1
- package/dist/Atomic/FormElements/RadioGroup/RadioGroup.scss +0 -27
- package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.interface.ts +0 -26
- package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +0 -1
- package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.scss +0 -31
- package/dist/Atomic/FormElements/RadioInput/RadioInput.interface.ts +0 -14
- package/dist/Atomic/FormElements/RadioInput/RadioInput.js +0 -1
- package/dist/Atomic/FormElements/RadioInput/RadioInput.scss +0 -72
- package/dist/Atomic/FormElements/RadioInput/index.ts +0 -5
- package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +0 -1
- package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.scss +0 -173
- package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.scss.d.ts +0 -4
- package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +0 -1
- package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.scss +0 -113
- package/dist/Atomic/FormElements/RangeInputs/RangeInputs.interface.ts +0 -25
- package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +0 -1
- package/dist/Atomic/FormElements/RangeInputs/RangeInputs.scss +0 -64
- package/dist/Atomic/FormElements/RangeInputs/index.ts +0 -5
- package/dist/Atomic/FormElements/RangeList/RangeList.interface.ts +0 -40
- package/dist/Atomic/FormElements/RangeList/RangeList.js +0 -1
- package/dist/Atomic/FormElements/RangeList/RangeList.scss +0 -163
- package/dist/Atomic/FormElements/RangeList/index.ts +0 -5
- package/dist/Atomic/FormElements/RangeList/partial/AnyOuterClass.scss +0 -26
- package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +0 -1
- package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +0 -1
- package/dist/Atomic/FormElements/RangeSlider/RangeSlider.scss +0 -177
- package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.interface.ts +0 -57
- package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +0 -1
- package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.scss +0 -520
- package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.interface.ts +0 -13
- package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +0 -1
- package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.scss +0 -16
- package/dist/Atomic/FormElements/SwitchableRow/partial/AnyOuterClass.scss +0 -18
- package/dist/Atomic/FormElements/Switcher/Switcher.interface.ts +0 -15
- package/dist/Atomic/FormElements/Switcher/Switcher.js +0 -1
- package/dist/Atomic/FormElements/Switcher/Switcher.scss +0 -86
- package/dist/Atomic/FormElements/Switcher/index.ts +0 -5
- package/dist/Atomic/FormElements/Switcher/partial/AnyOuterClass.scss +0 -7
- package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.interface.ts +0 -24
- package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +0 -1
- package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.scss +0 -32
- package/dist/Atomic/FormElements/SwitcherCheckbox/partial/AnyOuterClass.scss +0 -7
- package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.interface.ts +0 -16
- package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +0 -1
- package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.scss +0 -32
- package/dist/Atomic/FormElements/SwitcherHide/index.ts +0 -5
- package/dist/Atomic/FormElements/SwitcherHide/partial/AnyOuterClass.scss +0 -7
- package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.interface.ts +0 -28
- package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +0 -1
- package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.scss +0 -30
- package/dist/Atomic/FormElements/SwitcherRadio/index.ts +0 -5
- package/dist/Atomic/FormElements/SwitcherRadio/partial/AnyOuterClass.scss +0 -7
- package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.interface.ts +0 -19
- package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +0 -1
- package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.scss +0 -25
- package/dist/Atomic/FormElements/SwitcherRange/index.ts +0 -5
- package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.interface.ts +0 -29
- package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +0 -1
- package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.scss +0 -12
- package/dist/Atomic/FormElements/SwitcherRangeList/partial/AnyOuterClass.scss +0 -37
- package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.interface.ts +0 -19
- package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +0 -1
- package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.scss +0 -47
- package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/AnyOuterClass.scss +0 -13
- package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +0 -1
- package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.interface.ts +0 -18
- package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +0 -1
- package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.scss +0 -25
- package/dist/Atomic/FormElements/SwitcherTextarea/partial/AnyOuterClass.scss +0 -21
- package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.interface.ts +0 -12
- package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +0 -1
- package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.interface.js +0 -1
- package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.interface.js.map +0 -1
- package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.interface.ts +0 -100
- package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +0 -1
- package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js.map +0 -1
- package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.scss +0 -945
- package/dist/Atomic/FormElements/Text/Text.interface.ts +0 -22
- package/dist/Atomic/FormElements/Text/Text.js +0 -1
- package/dist/Atomic/FormElements/Text/Text.scss +0 -14
- package/dist/Atomic/FormElements/Text/index.ts +0 -5
- package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +0 -1
- package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.scss +0 -86
- package/dist/Atomic/FormElements/TextSwitcher/partial/AnyOuterClass.scss +0 -5
- package/dist/Atomic/FormElements/Textarea/Textarea.interface.ts +0 -24
- package/dist/Atomic/FormElements/Textarea/Textarea.js +0 -1
- package/dist/Atomic/FormElements/Textarea/Textarea.scss +0 -55
- package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.interface.ts +0 -44
- package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +0 -1
- package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.scss +0 -61
- package/dist/Atomic/FormElements/TieredCheckboxes/index.ts +0 -5
- package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +0 -1
- package/dist/Atomic/FormElements/TimeRange/TimeRange.interface.ts +0 -8
- package/dist/Atomic/FormElements/TimeRange/TimeRange.js +0 -1
- package/dist/Atomic/FormElements/TimeRange/TimeRange.scss +0 -23
- package/dist/Atomic/FormElements/TimeRange/index.ts +0 -4
- package/dist/Atomic/FormElements/UserContacts/UserContacts.interface.ts +0 -36
- package/dist/Atomic/FormElements/UserContacts/UserContacts.js +0 -1
- package/dist/Atomic/FormElements/UserContacts/UserContacts.scss +0 -19
- package/dist/Atomic/FormElements/UserContacts/index.ts +0 -4
- package/dist/Atomic/FormElements/UserContacts/partial/AnyOuterClass.scss +0 -21
- package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +0 -1
- package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.scss +0 -314
- package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +0 -1
- package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +0 -1
- package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.scss +0 -93
- package/dist/Atomic/FormElements/WidgetPseudoTable/partial/AnyOuterClass.scss +0 -83
- package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +0 -1
- package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +0 -1
- package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.scss +0 -93
- package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/AnyOuterClass.scss +0 -83
- package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +0 -1
- package/dist/Atomic/Layout/Header/Header.interface.ts +0 -11
- package/dist/Atomic/Layout/Header/Header.js +0 -1
- package/dist/Atomic/Layout/Header/Header.scss +0 -111
- package/dist/Atomic/Layout/Header/partials/default_ava.png +0 -0
- package/dist/Atomic/Layout/MainMenu/MainMenu.interface.tsx +0 -19
- package/dist/Atomic/Layout/MainMenu/MainMenu.js +0 -1
- package/dist/Atomic/Layout/MainMenu/MainMenu.jsx +0 -164
- package/dist/Atomic/Layout/MainMenu/MainMenu.scss +0 -207
- package/dist/Atomic/Layout/MainMenu/partials/fiLogo.svg +0 -14
- package/dist/Atomic/Layout/MainMenu/partials/finturfLogo.svg +0 -7
- package/dist/Atomic/Layout/Spinner/Spinner.interface.ts +0 -5
- package/dist/Atomic/Layout/Spinner/Spinner.js +0 -1
- package/dist/Atomic/Layout/Spinner/Spinner.scss +0 -103
- package/dist/Atomic/Layout/Spinner/index.ts +0 -4
- package/dist/Atomic/UI/Accordion/Accordion.interface.ts +0 -59
- package/dist/Atomic/UI/Accordion/Accordion.js +0 -1
- package/dist/Atomic/UI/Accordion/Accordion.scss +0 -98
- package/dist/Atomic/UI/Accordion/AccordionItem.js +0 -1
- package/dist/Atomic/UI/Accordion/index.ts +0 -4
- package/dist/Atomic/UI/AccordionTable/AccordionTable.js +0 -1
- package/dist/Atomic/UI/AccordionTable/AccordionTable.scss +0 -324
- package/dist/Atomic/UI/AccordionText/AccordionText.js +0 -1
- package/dist/Atomic/UI/AccordionText/AccordionText.scss +0 -66
- package/dist/Atomic/UI/AdvancedTag/AdvTag.js +0 -1
- package/dist/Atomic/UI/AdvancedTag/AdvancedTags.interface.ts +0 -40
- package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +0 -1
- package/dist/Atomic/UI/AdvancedTag/AdvancedTags.scss +0 -144
- package/dist/Atomic/UI/AdvancedTag/index.ts +0 -8
- package/dist/Atomic/UI/Alert/Alert.interface.ts +0 -31
- package/dist/Atomic/UI/Alert/Alert.js +0 -1
- package/dist/Atomic/UI/Alert/Alert.scss +0 -86
- package/dist/Atomic/UI/Alert/index.ts +0 -5
- package/dist/Atomic/UI/Arrow/Arrow.interface.ts +0 -11
- package/dist/Atomic/UI/Arrow/Arrow.js +0 -1
- package/dist/Atomic/UI/Arrow/Arrow.scss +0 -17
- package/dist/Atomic/UI/Box/Box.interface.ts +0 -10
- package/dist/Atomic/UI/Box/Box.js +0 -1
- package/dist/Atomic/UI/Box/Box.scss +0 -56
- package/dist/Atomic/UI/Button/Button.js +0 -1
- package/dist/Atomic/UI/Button/Button.scss +0 -163
- package/dist/Atomic/UI/ButtonsBar/ButtonsBar.interface.ts +0 -23
- package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +0 -1
- package/dist/Atomic/UI/ButtonsBar/ButtonsBar.scss +0 -8
- package/dist/Atomic/UI/ButtonsBar/index.ts +0 -5
- package/dist/Atomic/UI/Chart/Chart.interface.ts +0 -38
- package/dist/Atomic/UI/Chart/Chart.js +0 -1
- package/dist/Atomic/UI/Chart/Chart.scss +0 -58
- package/dist/Atomic/UI/Chart/index.ts +0 -5
- package/dist/Atomic/UI/Chart/partial/AnyOuterClass.scss +0 -39
- package/dist/Atomic/UI/Chart/partial/Chart.constants.js +0 -1
- package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +0 -1
- package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.scss +0 -23
- package/dist/Atomic/UI/Chart/partial/datasetSetters.js +0 -1
- package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +0 -1
- package/dist/Atomic/UI/Chart/partial/optionsSetters.js +0 -1
- package/dist/Atomic/UI/Chart/partial/utils.js +0 -1
- package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +0 -1
- package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.scss +0 -66
- package/dist/Atomic/UI/DateTime/DateTime.interface.ts +0 -12
- package/dist/Atomic/UI/DateTime/DateTime.js +0 -1
- package/dist/Atomic/UI/DateTime/DateTime.scss +0 -17
- package/dist/Atomic/UI/DateTime/partial/AnyOuterClass.scss +0 -10
- package/dist/Atomic/UI/DebugContainer/DebugContainer.js +0 -1
- package/dist/Atomic/UI/DebugContainer/DebugContainer.scss +0 -42
- package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +0 -1
- package/dist/Atomic/UI/DoubleString/DoubleString.interface.ts +0 -23
- package/dist/Atomic/UI/DoubleString/DoubleString.js +0 -1
- package/dist/Atomic/UI/DoubleString/DoubleString.scss +0 -59
- package/dist/Atomic/UI/DoubleString/index.ts +0 -5
- package/dist/Atomic/UI/DoubleString/partial/AnyOuterClass.scss +0 -18
- package/dist/Atomic/UI/DynamicIcon/DynamicIcon.interface.ts +0 -8
- package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +0 -1
- package/dist/Atomic/UI/DynamicIcon/index.ts +0 -4
- package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +0 -1
- package/dist/Atomic/UI/ExampleChartIntegration/partial/AnyOuterClass.scss +0 -68
- package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +0 -1
- package/dist/Atomic/UI/Hint/Hint.interface.ts +0 -23
- package/dist/Atomic/UI/Hint/Hint.js +0 -1
- package/dist/Atomic/UI/Hint/Hint.scss +0 -150
- package/dist/Atomic/UI/Hint/index.ts +0 -5
- package/dist/Atomic/UI/Hint/partials/_constants.js +0 -1
- package/dist/Atomic/UI/Hint/partials/_utils.js +0 -1
- package/dist/Atomic/UI/Modal/Modal.interface.ts +0 -104
- package/dist/Atomic/UI/Modal/Modal.js +0 -1
- package/dist/Atomic/UI/Modal/Modal.scss +0 -362
- package/dist/Atomic/UI/Modal/ModalHOC.js +0 -1
- package/dist/Atomic/UI/Modal/ModalMobile.scss +0 -83
- package/dist/Atomic/UI/Modal/index.ts +0 -15
- package/dist/Atomic/UI/Modal/partials/ModalFooter.js +0 -1
- package/dist/Atomic/UI/Modal/partials/ModalTitle.js +0 -1
- package/dist/Atomic/UI/Modal/partials/_constants.js +0 -1
- package/dist/Atomic/UI/Modal/partials/_utils.js +0 -1
- package/dist/Atomic/UI/Modal/partials/useMobileModal.js +0 -1
- package/dist/Atomic/UI/MonoAccordion/MonoAccordion._test.js +0 -1
- package/dist/Atomic/UI/MonoAccordion/MonoAccordion.interface.ts +0 -19
- package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +0 -1
- package/dist/Atomic/UI/MonoAccordion/MonoAccordion.scss +0 -69
- package/dist/Atomic/UI/MonoAccordion/index.ts +0 -4
- package/dist/Atomic/UI/MonoAccordion/partial/AnyOuterClass.scss +0 -41
- package/dist/Atomic/UI/NavLine/NavLine.interface.ts +0 -34
- package/dist/Atomic/UI/NavLine/NavLine.js +0 -1
- package/dist/Atomic/UI/NavLine/NavLine.scss +0 -269
- package/dist/Atomic/UI/NavLine/index.ts +0 -4
- package/dist/Atomic/UI/PageTitle/PageTitle.interface.ts +0 -17
- package/dist/Atomic/UI/PageTitle/PageTitle.js +0 -1
- package/dist/Atomic/UI/PageTitle/PageTitle.scss +0 -94
- package/dist/Atomic/UI/PageTitle/index.ts +0 -4
- package/dist/Atomic/UI/PieChart/PieChart.js +0 -1
- package/dist/Atomic/UI/PieChart/PieChart.scss +0 -52
- package/dist/Atomic/UI/Price/Price.interface.ts +0 -7
- package/dist/Atomic/UI/Price/Price.js +0 -1
- package/dist/Atomic/UI/Price/index.ts +0 -4
- package/dist/Atomic/UI/PriceRange/PriceRange.interface.ts +0 -9
- package/dist/Atomic/UI/PriceRange/PriceRange.js +0 -1
- package/dist/Atomic/UI/PriceRange/index.ts +0 -4
- package/dist/Atomic/UI/ProgressLine/ProgressLine.interface.ts +0 -38
- package/dist/Atomic/UI/ProgressLine/ProgressLine.js +0 -1
- package/dist/Atomic/UI/ProgressLine/ProgressLine.scss +0 -348
- package/dist/Atomic/UI/ProgressLine/index.ts +0 -4
- package/dist/Atomic/UI/Status/Status.interface.ts +0 -17
- package/dist/Atomic/UI/Status/Status.js +0 -1
- package/dist/Atomic/UI/Status/Status.scss +0 -111
- package/dist/Atomic/UI/Status/index.ts +0 -4
- package/dist/Atomic/UI/Table/Partials/TdCell.js +0 -1
- package/dist/Atomic/UI/Table/Partials/TdHeader.js +0 -1
- package/dist/Atomic/UI/Table/Partials/TdRow.js +0 -1
- package/dist/Atomic/UI/Table/Partials/TdTitle.js +0 -1
- package/dist/Atomic/UI/Table/Table.js +0 -1
- package/dist/Atomic/UI/Table/Table.scss +0 -85
- package/dist/Atomic/UI/Table/TdTypes/TdActions.js +0 -1
- package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +0 -1
- package/dist/Atomic/UI/Table/TdTypes/TdRange.js +0 -1
- package/dist/Atomic/UI/Table/TdTypes/TdTypes.scss +0 -40
- package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +0 -1
- package/dist/Atomic/UI/Tag/Tag.interface.js +0 -1
- package/dist/Atomic/UI/Tag/Tag.interface.js.map +0 -1
- package/dist/Atomic/UI/Tag/Tag.interface.ts +0 -25
- package/dist/Atomic/UI/Tag/Tag.js +0 -1
- package/dist/Atomic/UI/Tag/Tag.js.map +0 -1
- package/dist/Atomic/UI/Tag/Tag.scss +0 -169
- package/dist/Atomic/UI/Tag/index.ts +0 -4
- package/dist/Atomic/UI/TagList/TagList.interface.js +0 -1
- package/dist/Atomic/UI/TagList/TagList.interface.js.map +0 -1
- package/dist/Atomic/UI/TagList/TagList.interface.ts +0 -17
- package/dist/Atomic/UI/TagList/TagList.js +0 -1
- package/dist/Atomic/UI/TagList/TagList.js.map +0 -1
- package/dist/Atomic/UI/TagList/TagList.scss +0 -78
- package/dist/Atomic/UI/TagList/TagListStories.scss +0 -6
- package/dist/Atomic/UI/UserBox/UserBox.interface.ts +0 -10
- package/dist/Atomic/UI/UserBox/UserBox.js +0 -1
- package/dist/Atomic/UI/UserBox/UserBox.scss +0 -79
- package/dist/Atomic/UI/UserBox/index.ts +0 -4
- package/dist/Atomic/UI/WizardStepper/WizardStepper.interface.ts +0 -43
- package/dist/Atomic/UI/WizardStepper/constructor.js +0 -1
- package/dist/Atomic/UI/WizardStepper/index.ts +0 -4
- package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +0 -1
- package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.scss +0 -37
- package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.ts +0 -3
- package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +0 -1
- package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.scss +0 -81
- package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.ts +0 -3
- package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +0 -1
- package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.scss +0 -76
- package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.ts +0 -3
- package/dist/Atomic/UI/WizardStepper/ui/icons.js +0 -1
- package/dist/Atomic/UI/WizardStepper/ui/index.ts +0 -3
- package/dist/Classes/AbortableFetch.js +0 -1
- package/dist/Classes/AnimatedHandler.js +0 -1
- package/dist/Classes/RESTAPI/index.js +0 -1
- package/dist/Classes/RESTAPI/partials/AbortableFetch.js +0 -1
- package/dist/Classes/RESTAPI/partials/ApiBase.js +0 -1
- package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +0 -1
- package/dist/Classes/RESTAPI/partials/ApiUtils.js +0 -1
- package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +0 -1
- package/dist/Classes/RESTAPI/partials/Utils.js +0 -1
- package/dist/Classes/RESTAPI/partials/_utils.js +0 -1
- package/dist/Classes/RESTAPI/readme.txt +0 -196
- package/dist/Constants/index.constants.js +0 -1
- package/dist/Functions/Portal.js +0 -1
- package/dist/Functions/README.txt +0 -9
- package/dist/Functions/customEventListener.js +0 -1
- package/dist/Functions/dateTime.js +0 -1
- package/dist/Functions/fieldValueFormatters.js +0 -1
- package/dist/Functions/guards/assertions.js +0 -1
- package/dist/Functions/guards/safeValue.js +0 -1
- package/dist/Functions/guards/typeGuards.js +0 -1
- package/dist/Functions/hooks/useFormFieldsChangesManager.js +0 -1
- package/dist/Functions/locale/createTranslator.js +0 -1
- package/dist/Functions/operations.js +0 -1
- package/dist/Functions/presets/inputMaskPresets.js +0 -1
- package/dist/Functions/presets/inputPresets.js +0 -1
- package/dist/Functions/presets/mobileKeyboardTypesPresets.js +0 -1
- package/dist/Functions/schemas.js +0 -1
- package/dist/Functions/useBodyScrollLock.js +0 -1
- package/dist/Functions/useClickOutside.js +0 -1
- package/dist/Functions/useDebounce.js +0 -1
- package/dist/Functions/useFieldFocus.js +0 -1
- package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +0 -1
- package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +0 -1
- package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +0 -1
- package/dist/Functions/useFormTools/functions/General.js +0 -1
- package/dist/Functions/useFormTools/functions/RenderFields.js +0 -1
- package/dist/Functions/useFormTools/functions/usePrevious.js +0 -1
- package/dist/Functions/useFormTools/index.js +0 -1
- package/dist/Functions/useInputHighlightError.js +0 -1
- package/dist/Functions/useIsMobile/index.ts +0 -3
- package/dist/Functions/useIsMobile/useIsMobile.js +0 -1
- package/dist/Functions/useKeyPress/useHandleKeyPress.js +0 -1
- package/dist/Functions/useKeyPress/useKeyPress.js +0 -1
- package/dist/Functions/useLocalStorage.js +0 -1
- package/dist/Functions/useLocationParams.js +0 -1
- package/dist/Functions/useMediaQuery.js +0 -1
- package/dist/Functions/useMetaInfo.js +0 -1
- package/dist/Functions/useMouseUpOutside.js +0 -1
- package/dist/Functions/useOnlineStatus.js +0 -1
- package/dist/Functions/usePasswordChecker.js +0 -1
- package/dist/Functions/usePrevious.js +0 -1
- package/dist/Functions/useResize.js +0 -1
- package/dist/Functions/useScrollTo.js +0 -1
- package/dist/Functions/useToggle.js +0 -1
- package/dist/Functions/utils/disableDefaultBehavior/disableDefaultBehavior.js +0 -1
- package/dist/Functions/utils/disableDefaultBehavior/index.ts +0 -1
- package/dist/Functions/utils/getLimitedMask/getLimitedMask.js +0 -1
- package/dist/Functions/utils/getLimitedMask/index.ts +0 -1
- package/dist/Functions/utils.js +0 -1
- package/dist/Langs.js +0 -1
- package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +0 -1
- package/dist/Molecular/CustomIcons/components/AlertCircle.js +0 -1
- package/dist/Molecular/CustomIcons/components/AppStore.js +0 -1
- package/dist/Molecular/CustomIcons/components/Arrow.js +0 -1
- package/dist/Molecular/CustomIcons/components/ArrowDown.js +0 -1
- package/dist/Molecular/CustomIcons/components/ArrowLeft.js +0 -1
- package/dist/Molecular/CustomIcons/components/ArrowRight.js +0 -1
- package/dist/Molecular/CustomIcons/components/ArrowUp.js +0 -1
- package/dist/Molecular/CustomIcons/components/Bell.js +0 -1
- package/dist/Molecular/CustomIcons/components/Button.js +0 -1
- package/dist/Molecular/CustomIcons/components/Campaigns.js +0 -1
- package/dist/Molecular/CustomIcons/components/Check.js +0 -1
- package/dist/Molecular/CustomIcons/components/Check2.js +0 -1
- package/dist/Molecular/CustomIcons/components/ChevronDown.js +0 -1
- package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +0 -1
- package/dist/Molecular/CustomIcons/components/ChevronLeft.js +0 -1
- package/dist/Molecular/CustomIcons/components/ChevronRight.js +0 -1
- package/dist/Molecular/CustomIcons/components/ChevronUp.js +0 -1
- package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +0 -1
- package/dist/Molecular/CustomIcons/components/Close.js +0 -1
- package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +0 -1
- package/dist/Molecular/CustomIcons/components/Delete.js +0 -1
- package/dist/Molecular/CustomIcons/components/Edit.js +0 -1
- package/dist/Molecular/CustomIcons/components/Email.js +0 -1
- package/dist/Molecular/CustomIcons/components/FinturfLogo.js +0 -1
- package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +0 -1
- package/dist/Molecular/CustomIcons/components/Flows.js +0 -1
- package/dist/Molecular/CustomIcons/components/Gift.js +0 -1
- package/dist/Molecular/CustomIcons/components/GoogleAuth.js +0 -1
- package/dist/Molecular/CustomIcons/components/GooglePlay.js +0 -1
- package/dist/Molecular/CustomIcons/components/HelpCircle.js +0 -1
- package/dist/Molecular/CustomIcons/components/HelpCircle2.js +0 -1
- package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +0 -1
- package/dist/Molecular/CustomIcons/components/Home.js +0 -1
- package/dist/Molecular/CustomIcons/components/Home2.js +0 -1
- package/dist/Molecular/CustomIcons/components/Key.js +0 -1
- package/dist/Molecular/CustomIcons/components/Landers.js +0 -1
- package/dist/Molecular/CustomIcons/components/Lock.js +0 -1
- package/dist/Molecular/CustomIcons/components/Mail.js +0 -1
- package/dist/Molecular/CustomIcons/components/Mastercard.js +0 -1
- package/dist/Molecular/CustomIcons/components/Minus.js +0 -1
- package/dist/Molecular/CustomIcons/components/Offers.js +0 -1
- package/dist/Molecular/CustomIcons/components/Pause.js +0 -1
- package/dist/Molecular/CustomIcons/components/PayPal.js +0 -1
- package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +0 -1
- package/dist/Molecular/CustomIcons/components/Phone.js +0 -1
- package/dist/Molecular/CustomIcons/components/Play.js +0 -1
- package/dist/Molecular/CustomIcons/components/Plus.js +0 -1
- package/dist/Molecular/CustomIcons/components/Profile.js +0 -1
- package/dist/Molecular/CustomIcons/components/QRCode.js +0 -1
- package/dist/Molecular/CustomIcons/components/Rectangle.js +0 -1
- package/dist/Molecular/CustomIcons/components/Revert.js +0 -1
- package/dist/Molecular/CustomIcons/components/Star.js +0 -1
- package/dist/Molecular/CustomIcons/components/Star2.js +0 -1
- package/dist/Molecular/CustomIcons/components/TrafficSources.js +0 -1
- package/dist/Molecular/CustomIcons/components/Trash.js +0 -1
- package/dist/Molecular/CustomIcons/components/TrashRed.js +0 -1
- package/dist/Molecular/CustomIcons/components/Triggers.js +0 -1
- package/dist/Molecular/CustomIcons/components/User.js +0 -1
- package/dist/Molecular/CustomIcons/components/Visa.js +0 -1
- package/dist/Molecular/CustomIcons/components/X.js +0 -1
- package/dist/Molecular/FormElement/FormElement.interface.ts +0 -28
- package/dist/Molecular/FormElement/FormElement.js +0 -1
- package/dist/Molecular/FormElement/FormElement.scss +0 -28
- package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +0 -1
- package/dist/Molecular/FormWithDependOn/partials/_utils.js +0 -1
- package/dist/Molecular/InputAddress/InputAddress.interface.ts +0 -39
- package/dist/Molecular/InputAddress/InputAddress.js +0 -1
- package/dist/Molecular/InputAddress/InputAddress.scss +0 -457
- package/dist/Molecular/InputCustomFetch/InputCustomFetch.js +0 -1
- package/dist/Molecular/InputCustomFetch/InputCustomFetch.scss +0 -464
- package/dist/Molecular/InputCustomFetch/README.md +0 -343
- package/dist/Molecular/InputCustomFetch/index.ts +0 -8
- package/dist/Molecular/InputCustomFetch/lib/hooks/useDebouncedCallback.js +0 -1
- package/dist/Molecular/InputCustomFetch/lib/hooks/useFetchWithAbort.js +0 -1
- package/dist/Molecular/InputCustomFetch/lib/utils.js +0 -1
- package/dist/Molecular/InputCustomFetch/model/types.js +0 -1
- package/dist/Molecular/InputPassword/InputPassword.interface.ts +0 -9
- package/dist/Molecular/InputPassword/InputPassword.js +0 -1
- package/dist/Molecular/InputPassword/InputPassword.scss +0 -31
- package/dist/index.ts +0 -5
- package/dist/types/base.interface.ts +0 -7
- package/dist/types/base.types.ts +0 -7
- package/dist/types/declaration/ArrayElement.d.ts +0 -13
- package/dist/types/declaration/AsyncReturnType.d.ts +0 -17
- package/dist/types/declaration/DeepPartial.d.ts +0 -40
- package/dist/types/declaration/DeepReadonly.d.ts +0 -38
- package/dist/types/declaration/DeepRequired.d.ts +0 -50
- package/dist/types/declaration/Flatten.d.ts +0 -34
- package/dist/types/declaration/FunctionType.d.ts +0 -37
- package/dist/types/declaration/If.d.ts +0 -34
- package/dist/types/declaration/KeysType.d.ts +0 -10
- package/dist/types/declaration/NonNullableType.d.ts +0 -13
- package/dist/types/declaration/ObjectType.d.ts +0 -9
- package/dist/types/declaration/OnlyObjectKeys.d.ts +0 -65
- package/dist/types/declaration/PrettyPrint.d.ts +0 -29
- package/dist/types/declaration/RequiredFields.d.ts +0 -21
- package/dist/types/declaration/TWithEventLogicAsObj/readme +0 -5
- package/dist/types/declaration/TWithEventManagementAsObj/index.ts +0 -35
- package/dist/types/declaration/TWithEventManagementAsObj/innerTypes/Modal.js +0 -1
- package/dist/types/declaration/TWithEventManagementAsObj/readme +0 -7
- package/dist/types/declaration/TupleType.d.ts +0 -10
- package/dist/types/declaration/ValuesType.d.ts +0 -10
- package/dist/types/declaration/index.ts +0 -35
- package/dist/types/index.ts +0 -1
- /package/dist/Atomic/FormElements/Input/hooks/{index.ts → index.d.ts} +0 -0
- /package/dist/Atomic/FormElements/InputCurrency/{index.ts → index.d.ts} +0 -0
- /package/dist/Atomic/FormElements/MultiSelect/{index.ts → index.d.ts} +0 -0
- /package/dist/Atomic/FormElements/RadioRowSwitcher/{index.ts → index.d.ts} +0 -0
- /package/dist/Atomic/UI/DebugContainer/{index.ts → index.d.ts} +0 -0
- /package/dist/Molecular/CustomIcons/{index.ts → index.d.ts} +0 -0
package/dist/form.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/Atomic/FormElements/ActionAlert/ActionAlert.tsx", "../src/Atomic/UI/Button/Button.tsx", "../src/Atomic/FormElements/ActionAlert/index.ts", "../src/Atomic/FormElements/AdvancedStatus/AdvancedStatus.tsx", "../src/Atomic/UI/Status/Status.tsx", "../src/Atomic/FormElements/TextSwitcher/TextSwitcher.tsx", "../src/Atomic/FormElements/AdvancedStatus/index.ts", "../src/Atomic/FormElements/Calendar/Calendar.tsx", "../src/Atomic/FormElements/CheckboxesLine/CheckboxesLine.tsx", "../src/Atomic/FormElements/CheckboxInput/CheckboxInput.tsx", "../src/Atomic/FormElements/CheckboxesLine/index.ts", "../src/Atomic/FormElements/CheckboxInput/index.ts", "../src/Atomic/FormElements/Datepicker/Datepicker.tsx", "../src/Langs.js", "../src/Atomic/FormElements/Dropdown/Dropdown.tsx", "../src/Constants/index.constants.js", "../src/Functions/utils.js", "../src/Functions/fieldValueFormatters.js", "../src/Atomic/FormElements/Input/Input.tsx", "../src/Atomic/Layout/Spinner/Spinner.tsx", "../src/Atomic/UI/DynamicIcon/DynamicIcon.tsx", "../src/Atomic/FormElements/Input/hooks/useErrorBlink.ts", "../src/Atomic/FormElements/Input/hooks/useInputFocus.ts", "../src/Atomic/FormElements/Input/hooks/useInputHover.ts", "../src/Atomic/FormElements/Input/hooks/useInputValueProcessing.ts", "../src/Atomic/FormElements/Input/hooks/useKeyboardHandling.ts", "../src/Atomic/FormElements/RadioInput/RadioInput.tsx", "../src/Atomic/FormElements/Dropdown/components/DropdownLoader.js", "../src/Functions/useIsMobile/useIsMobile.ts", "../src/Functions/useIsMobile/index.ts", "../src/Atomic/FormElements/Dropdown/_utils.ts", "../src/Atomic/FormElements/Dropdown/useDropdown.tsx", "../src/Atomic/FormElements/Switcher/Switcher.tsx", "../src/Atomic/UI/Hint/Hint.tsx", "../src/Molecular/CustomIcons/components/Check2.tsx", "../src/Molecular/CustomIcons/components/Email.tsx", "../src/Molecular/CustomIcons/components/HelpCircleFilled.tsx", "../src/Molecular/CustomIcons/components/Phone.tsx", "../src/Atomic/UI/Hint/partials/_constants.ts", "../src/Atomic/UI/Hint/partials/_utils.ts", "../src/Atomic/FormElements/Datepicker/components/DatepickerCalendar.tsx", "../src/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.tsx", "../src/Functions/useDebounce.js", "../src/Atomic/FormElements/FileLoader/FileLoader.tsx", "../src/Atomic/FormElements/FileLoader/partial/LoadedContent.tsx", "../src/Atomic/FormElements/FileLoader/partial/LoadZone.tsx", "../src/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.tsx", "../src/Atomic/UI/AccordionText/AccordionText.js", "../src/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.tsx", "../src/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.tsx", "../src/Atomic/UI/Alert/Alert.tsx", "../src/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.tsx", "../src/Functions/utils/getLimitedMask/getLimitedMask.ts", "../src/Atomic/FormElements/InputMask3/InputMask3.tsx", "../src/Functions/utils/disableDefaultBehavior/disableDefaultBehavior.ts", "../src/Atomic/FormElements/InputMask3/config.ts", "../src/Atomic/FormElements/InputMask3/functions.ts", "../src/Atomic/FormElements/InputCalendar/InputCalendar.tsx", "../src/Functions/useClickOutside.js", "../src/Atomic/FormElements/InputColor/InputColor.tsx", "../src/Atomic/FormElements/InputDateRange/InputDateRange.tsx", "../src/Atomic/UI/Arrow/Arrow.tsx", "../src/Atomic/FormElements/InputDateRange/components/OpenedPart.tsx", "../src/Functions/useResize.js", "../src/Atomic/UI/Modal/Modal.tsx", "../src/Functions/useKeyPress/useKeyPress.ts", "../src/Functions/useKeyPress/useHandleKeyPress.ts", "../src/Atomic/UI/Modal/partials/_constants.ts", "../src/Atomic/UI/Modal/partials/_utils.ts", "../src/Atomic/UI/Modal/partials/ModalFooter.tsx", "../src/Atomic/UI/Modal/partials/ModalTitle.tsx", "../src/Atomic/UI/Modal/partials/useMobileModal.tsx", "../src/Atomic/FormElements/InputDateRange/dependencies.ts", "../src/Atomic/FormElements/InputDateRange/components/Datepicker.tsx", "../src/Atomic/FormElements/RangeCalendar/RangeCalendar.js", "../src/Atomic/FormElements/InputDateRange/components/DateInput.tsx", "../src/Functions/presets/mobileKeyboardTypesPresets.js", "../src/Atomic/FormElements/InputDateRange/components/SelectItem.tsx", "../src/Atomic/FormElements/InputLink/InputLink.tsx", "../src/Atomic/FormElements/InputMask/InputMask.tsx", "../src/Atomic/FormElements/InputsRow/InputsRow.tsx", "../../../node_modules/uuid/dist/esm-browser/regex.js", "../../../node_modules/uuid/dist/esm-browser/validate.js", "../../../node_modules/uuid/dist/esm-browser/stringify.js", "../../../node_modules/uuid/dist/esm-browser/rng.js", "../../../node_modules/uuid/dist/esm-browser/native.js", "../../../node_modules/uuid/dist/esm-browser/v4.js", "../src/Atomic/FormElements/InputWithAction/InputWithAction.tsx", "../src/Atomic/FormElements/Label/Label.tsx", "../src/Atomic/FormElements/Label/index.ts", "../src/Atomic/FormElements/MobileCalendar/MobileCalendar.tsx", "../src/Atomic/FormElements/MultiSelect/MultiSelect.tsx", "../src/Atomic/FormElements/NumericInput/NumericInput.js", "../src/Atomic/FormElements/RadioGroup/RadioGroup.tsx", "../src/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.tsx", "../src/Molecular/FormElement/FormElement.tsx", "../src/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.tsx", "../src/Atomic/FormElements/RangeInputs/RangeInputs.tsx", "../src/Atomic/FormElements/RangeList/RangeList.tsx", "../src/Functions/operations.js", "../src/Atomic/FormElements/RangeList/partial/RangeListRow.tsx", "../src/Atomic/FormElements/RangeSlider2/RangeSlider2.tsx", "../src/Atomic/FormElements/RangeSlider/RangeSlider.js", "../src/Atomic/FormElements/SwitchableRow/SwitchableRow.tsx", "../src/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.tsx", "../src/Atomic/FormElements/SwitcherHide/SwitcherHide.tsx", "../src/Atomic/FormElements/SwitcherRadio/SwitcherRadio.tsx", "../src/Atomic/FormElements/SwitcherRange/SwitcherRange.tsx", "../src/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.tsx", "../src/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.tsx", "../src/Atomic/FormElements/TagsDropdown/TagsDropdown.tsx", "../src/Atomic/UI/Tag/Tag.tsx", "../src/Atomic/Layout/Spinner/index.ts", "../src/Atomic/UI/TagList/TagList.tsx", "../src/Atomic/FormElements/Textarea/Textarea.tsx", "../src/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.tsx", "../src/Atomic/FormElements/TagListToDropdown/TagListToDropdown.tsx", "../src/Atomic/FormElements/Text/Text.tsx", "../src/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.tsx", "../src/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.tsx", "../src/Atomic/UI/MonoAccordion/MonoAccordion.js", "../src/Atomic/FormElements/TimeRange/TimeRange.tsx", "../src/Functions/useToggle.js", "../src/Atomic/FormElements/TimeRange/index.ts", "../src/Atomic/FormElements/UserContacts/UserContacts.tsx", "../src/Atomic/FormElements/UserContacts/index.ts", "../src/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js", "../src/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js", "../src/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js", "../src/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js", "../src/Molecular/FormWithDependOn/FormWithDependOn.js", "../src/Functions/hooks/useFormFieldsChangesManager.js", "../src/Molecular/FormWithDependOn/partials/_utils.js", "../src/Molecular/InputAddress/InputAddress.tsx", "../src/Molecular/InputPassword/InputPassword.tsx"],
|
|
4
|
+
"sourcesContent": ["import type { IActionAlertProps } from './ActionAlert.interface';\n\nimport cn from 'classnames';\nimport React from 'react';\n\nimport Button from '../../UI/Button/Button';\n\nimport './ActionAlert.scss';\n\nconst ActionAlert: React.FC<IActionAlertProps> = ({\n message,\n className,\n buttonsClassName,\n date,\n noButtons,\n children,\n variant = 'default',\n testId = 'alert',\n buttons,\n}) => {\n return (\n <div role=\"alert\" data-testid={testId} className={cn(`action-alert action-alert--${variant}`, className)}>\n <div className=\"action-alert__message-box\">\n {date && <div className=\"action-alert__time\">{date}</div>}\n <div className=\"action-alert__message\">{message || children}</div>\n </div>\n\n <div className={buttonsClassName}>\n {typeof buttons !== 'undefined'\n && buttons?.length > 0\n && !noButtons\n && buttons.map((item) => {\n const { buttonColor, buttonLabel, ...buttonProps } = item;\n return (\n <Button\n style={{\n backgroundColor: buttonColor,\n borderColor: buttonColor,\n }}\n className=\"ml5\"\n label={buttonLabel}\n {...buttonProps}\n onClick={item.onClick}\n key={item.key}\n />\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default ActionAlert;\n", "import type { CSSProperties, ReactNode } from 'react';\nimport type { IUniProps } from '../../../types/base.interface';\nimport cn from 'classnames';\n\nimport './Button.scss';\n\nconst RC = 'button';\n\nexport type TButtonVariant = 'primary' | 'ellipse-apply' | 'ellipse-cancel' | string;\n\ninterface IProps extends IUniProps, Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'disabled'> {\n label?: string;\n onClick?: () => void;\n disabled?: boolean;\n icon?: ReactNode;\n children?: ReactNode;\n style?: CSSProperties;\n noIcon?: boolean;\n isIconRight?: boolean;\n tabIndex?: number;\n variant?: TButtonVariant;\n isTextEllipsis?: boolean;\n}\n\nconst Button: React.FC<IProps> = ({\n label,\n onClick,\n disabled,\n icon,\n className,\n children,\n style,\n noIcon,\n isIconRight,\n testId = 'button',\n tabIndex = 0,\n variant = 'primary',\n isTextEllipsis = false,\n ...props\n}) => {\n const noRenderIcon = noIcon || variant === 'ellipse-apply' || variant === 'ellipse-cancel';\n\n return (\n <button\n data-testid={testId}\n tabIndex={tabIndex}\n style={style}\n className={cn(\n RC,\n {\n [`${RC}_${variant}`]: variant,\n 'button_icon-left': icon && !isIconRight,\n 'button_icon-right': icon && isIconRight,\n },\n className,\n )}\n onClick={onClick}\n disabled={disabled}\n type=\"button\"\n {...props}\n\n >\n {!noRenderIcon && icon}\n {label && <div className={cn('button__text', { 'text-ellipsis': isTextEllipsis })}>{label}</div>}\n {!label && children ? children : null}\n </button>\n );\n};\n\nexport default Button;\n", "import type { IActionAlertProps, TAlertVariant } from './ActionAlert.interface';\nimport ActionAlert from './ActionAlert';\n\nexport type { IActionAlertProps, TAlertVariant };\nexport default ActionAlert;\n", "import type { IAdvancedStatusProps } from './AdvancedStatus.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\nimport Status from '../../UI/Status/Status';\n\nimport TextSwitcher from '../TextSwitcher/TextSwitcher';\n\nimport './AdvancedStatus.scss';\n\nconst RC = 'advanced-status';\n\nconst AdvancedStatus: React.FC<IAdvancedStatusProps> = ({\n onChange,\n inactiveText,\n activeText,\n value,\n disabled = false,\n isPrimary = false,\n primaryStatusText,\n className,\n testId = RC,\n ...props\n}) => {\n const isUndefined = value === undefined || value === null;\n\n return (\n <div\n {...props}\n data-testid={testId}\n className={cn(\n RC,\n {\n 'advanced-status_undefined': isUndefined,\n 'advanced-status_disabled': disabled,\n },\n className,\n )}\n >\n <TextSwitcher\n onChange={onChange}\n isActive={value || false}\n inactiveText={inactiveText}\n activeText={activeText}\n className=\"advanced-status__switcher\"\n />\n {isPrimary && (\n <Status className=\"advanced-status__status\" status=\"warning\">\n {primaryStatusText}\n </Status>\n )}\n </div>\n );\n};\n\nexport default AdvancedStatus;\n", "import type { IStatusProps } from './Status.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport './Status.scss';\n\nfunction defaultOnClick(): void {}\n\nconst Status: React.FC<IStatusProps> = ({\n icon,\n value,\n label,\n status,\n disabled,\n type,\n active = 0,\n pause = 0,\n className,\n noBackground,\n children,\n testId = 'status',\n onClick = defaultOnClick,\n}) => {\n if (!status) return null;\n\n const text = children && typeof children === 'string' ? children : value || label || status;\n const formattedLabel = text?.[0].toUpperCase() + text?.slice(1);\n\n return (\n <div onClick={onClick} data-testid={testId} className={cn({ disabled }, className)}>\n {type === 'number'\n ? (\n <div>\n {active === 0 && pause === 0\n ? (\n <div className=\"status status--error\">\n <span>{active}</span>\n </div>\n )\n : (\n <div className=\"status status--warning\">\n <span className=\"status--number-active\">{active}</span>\n <span className=\"color--gray-gull\"> / </span>\n <span className={pause > 0 ? 'color--froly' : 'color--gray-gull'}>{pause}</span>\n </div>\n )}\n </div>\n )\n : (\n <div\n className={cn(\n 'status',\n `status--${status}`,\n {\n 'status--no-bg': noBackground && status === 'pause',\n 'color--gray-gull': noBackground && status === 'pause' && !className,\n 'j4': !!icon,\n },\n className,\n )}\n >\n {icon}\n {formattedLabel}\n </div>\n )}\n </div>\n );\n};\n\nexport default Status;\n", "import type { IUniProps } from '../../../types/base.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport './TextSwitcher.scss';\n\ninterface IProps extends IUniProps {\n isActive?: boolean;\n onChange: (isActive: boolean) => void;\n disabled?: boolean;\n activeText?: string;\n inactiveText?: string;\n}\n\nconst RC = 'text-switcher';\n\nconst TextSwitcher: React.FC<IProps> = ({\n isActive,\n onChange,\n className,\n disabled,\n activeText = 'is',\n inactiveText = 'is not',\n testId = RC,\n}) => {\n const isUndefined = isActive === undefined || isActive === null;\n\n return (\n <button\n type=\"button\"\n data-testid={testId}\n className={cn(RC, { [`${RC}_active`]: isActive, [`${RC}_disabled`]: disabled }, className)}\n onClick={() => onChange(!isActive)}\n disabled={disabled}\n >\n <span className={`${RC}__btn`}>{activeText}</span>\n {inactiveText && <span className={cn(`${RC}__btn`, `${RC}__btn_off`)}>{inactiveText}</span>}\n {!isUndefined && (\n <div\n className={cn(`${RC}__slider`, {\n [`${RC}__slider_inactive`]: !isActive,\n })}\n />\n )}\n </button>\n );\n};\n\nexport default TextSwitcher;\n", "import AdvancedStatus from './AdvancedStatus';\n\nexport default AdvancedStatus;\nexport type { IAdvancedStatusProps } from './AdvancedStatus.interface';\n", "import type { ReactNode } from 'react';\nimport type { CalendarProps, Days } from './Calendar.props';\nimport cn from 'classnames';\nimport moment from 'moment';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { ChevronLeft, ChevronRight } from 'react-feather';\n\nimport InputMask from 'react-input-mask';\n\nimport './Calendar.scss';\n\nconst CN = 'calendar';\n\nconst paramsDefault = {} as CalendarProps['params'];\nconst dateDefault = moment().format('L');\n\nconst Calendar: React.FC<CalendarProps> = ({\n date = dateDefault,\n setDate,\n setIsOpened,\n className,\n isListTop,\n allowPrev = true,\n allowNext = true,\n params = paramsDefault,\n testId = CN,\n}) => {\n if (!setDate || !setIsOpened) {\n throw new Error('Required props setDate and setIsOpened must be provided to Calendar component');\n }\n\n const { minDate, maxDate, momentMinDate, momentMaxDate, isDontLimitFuture } = params ?? {};\n\n const [days, setDays] = useState<Days>({});\n const [showDate, setShowDate] = useState<string>(date);\n const [isChangeYear, setIsChangeYear] = useState<boolean>(false);\n const [inputYearValue, setInputYearValue] = useState<string>(moment(showDate, 'L', true).format('YYYY'));\n\n const yearInputRef = useRef<HTMLDivElement>(null);\n const selectedDay = moment(showDate, 'L', true);\n const isError = 'Invalid date';\n\n const showMonth = useMemo(() => moment(showDate, 'L', true).format('MMM'), [showDate]);\n\n const showYear = useMemo(() => moment(showDate, 'L', true).format('YYYY'), [showDate]);\n\n const isShovPrevArrow\n = allowPrev && !(minDate && moment(showDate, 'L', true).startOf('month').isSameOrBefore(momentMinDate, 'months'));\n\n const isShovNextArrow\n = allowNext\n && (isDontLimitFuture\n || !moment(showDate, 'L', true)\n .startOf('month')\n .isSameOrAfter(maxDate ? momentMaxDate : moment().add(1, 'day').startOf('day'), 'months'));\n\n useEffect(() => {\n const result: Days = {};\n const day = selectedDay.startOf('month');\n const daysInMonth = day.daysInMonth();\n\n for (let d = 0; d < daysInMonth; d += 1) {\n let week = day.week();\n if (day.month() === 11 && week === 1) week = 53;\n if (day.month() === 0 && week === 53) week = 0;\n\n if (!Object.prototype.hasOwnProperty.call(result, week)) {\n result[week] = {};\n }\n\n result[week][day.weekday()] = { date: day.toDate() };\n day.add(1, 'd');\n }\n\n setDays(result);\n }, [showDate]);\n\n const renderDay = (week: number, dayOfWeek: number): ReactNode => {\n const day = days[week]?.[dayOfWeek];\n if (!day) return <div className=\"calendar__day\" />;\n\n const isFutureDay\n = day && !isDontLimitFuture && maxDate\n ? moment(day.date).isAfter(momentMaxDate || moment().add(1, 'days'), 'day')\n : moment(day.date).isAfter(moment(), 'day');\n\n const isBeforeDay = day && moment(day.date).isBefore(momentMinDate || '', 'day');\n\n const classNames = cn(\n 'calendar__day',\n { 'calendar__day--clickable': day },\n { 'calendar__day--disabled': !isDontLimitFuture && isFutureDay },\n { 'calendar__day--disabled': isBeforeDay },\n {\n 'calendar__day--selected': moment(date).format() === moment(day.date).format(),\n },\n );\n\n return (\n <div\n key={`${week}_${dayOfWeek}`}\n className={classNames}\n onClick={\n day && (isDontLimitFuture || !isFutureDay)\n ? () => {\n setDate(moment(day.date).format('L'));\n setIsOpened(false);\n }\n : undefined\n }\n >\n {day && day.date.getDate()}\n </div>\n );\n };\n\n const handlePrev = (): void => {\n setShowDate(moment(showDate, 'L', true).subtract(1, 'month').format('L'));\n };\n\n const handleNext = (): void => {\n setShowDate(moment(showDate, 'L', true).add(1, 'month').format('L'));\n };\n\n const closeYearInput = (): void => {\n const newDate = (() => {\n const dateArr = showDate.split('/');\n dateArr[2] = inputYearValue;\n return moment(dateArr.join('/'), 'L', true).format('MM/DD/YYYY') === isError\n ? showDate\n : moment(dateArr.join('/'), 'L', true).format('MM/DD/YYYY');\n })();\n\n let resultDate = newDate;\n if (minDate && moment(minDate) > moment(newDate, 'MM/DD/YYYY', true)) resultDate = moment(showDate, 'L', true).format('MM/DD/YYYY');\n else if (maxDate && moment(maxDate) < moment(newDate, 'MM/DD/YYYY', true)) resultDate = moment(showDate, 'L', true).format('MM/DD/YYYY');\n\n setIsChangeYear(false);\n setShowDate(resultDate);\n setInputYearValue(resultDate);\n };\n\n useEffect(() => {\n let timeoutId: NodeJS.Timeout;\n if (isChangeYear && yearInputRef.current) {\n const input = yearInputRef.current.querySelector('input');\n if (input) {\n setInputYearValue(showYear);\n timeoutId = setTimeout(() => {\n input.focus();\n input.select();\n }, 0);\n }\n }\n\n return () => {\n clearTimeout(timeoutId);\n };\n }, [isChangeYear, showYear]);\n\n return (\n <div\n data-testid={testId}\n className={cn(CN, className, {\n 'calendar_list-top': isListTop,\n })}\n >\n <div className=\"calendar-header\">\n <div className=\"calendar-header__prev\" data-testid={`${testId}-prev-arrow`}>\n {isShovPrevArrow && (\n <div onClick={handlePrev}>\n <ChevronLeft />\n </div>\n )}\n </div>\n <div className={cn('calendar-header__title')} ref={yearInputRef}>\n <span className=\"calendar-header__title-month\">{`${showMonth} `}</span>\n <span\n className={cn('calendar-header__title-year', {\n 'calendar-header__title-year_change-mode': isChangeYear,\n })}\n onClick={() => setIsChangeYear(true)}\n >\n {isChangeYear\n ? (\n <InputMask\n className=\"calendar-header__title-year-change-input\"\n value={inputYearValue}\n mask=\"9999\"\n onBlur={closeYearInput}\n onKeyUp={(e: React.KeyboardEvent) => {\n if (e.key === 'Escape') setIsChangeYear(false);\n if (e.key === 'Enter') closeYearInput();\n }}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => setInputYearValue(e.target.value)}\n />\n )\n : (\n showYear\n )}\n </span>\n </div>\n <div data-testid={`${testId}-next-arrow`} className=\"calendar-header__next\">\n {isShovNextArrow && (\n <div onClick={handleNext}>\n <ChevronRight />\n </div>\n )}\n </div>\n </div>\n <div className=\"calendar__week\">\n {[...Array.from({ length: 7 }).keys()].map(dayOfWeek => (\n <div key={`day-of-week_${dayOfWeek}`} className=\"calendar__day calendar__day--title\">\n {moment().weekday(dayOfWeek).format('dd')}\n </div>\n ))}\n </div>\n {Object.keys(days).map((week, index) => (\n <div key={`week_${index}`} className=\"calendar__week\">\n {[...Array.from({ length: 7 }).keys()].map(dayOfWeek => (\n <React.Fragment key={`calendar-day--${dayOfWeek}`}>\n {renderDay(Number(week), dayOfWeek)}\n </React.Fragment>\n ))}\n </div>\n ))}\n </div>\n );\n};\n\nexport default Calendar;\n", "import type { ICheckboxLineProps } from './CheckboxesLine.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport Checkbox from '../CheckboxInput/CheckboxInput';\n\nimport './CheckboxesLine.scss';\n\nconst RC = 'checkboxes-line';\n\nconst CheckboxesLine: React.FC<ICheckboxLineProps> = (props) => {\n const { field, onChange } = props;\n const { items, value, disabled, isPositionColumn, className, testId = RC } = field ?? (props || {});\n\n const handleChange = (val: boolean, id: string | number): void => {\n onChange(val ? [...(value || []), id] : [...(value?.filter(el => el !== id) || [])]);\n };\n\n return (\n <div data-testid={RC} className={cn(RC, { [`${RC}_column`]: isPositionColumn }, className)}>\n {items?.map(item => (\n <Checkbox\n testId={item?.testId || testId}\n id={item.id}\n className={`${RC}__checkbox-input`}\n key={item.label}\n label={item.label || ''}\n value={value?.includes?.(item.id) || false}\n onChange={val => handleChange(val, item.id)}\n disabled={disabled || item.disabled}\n />\n )) || null}\n </div>\n );\n};\n\nexport default CheckboxesLine;\n", "import type { ICheckboxInputProps } from './CheckboxInput.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport './CheckboxInput.scss';\n\nconst RC = 'checkbox-input';\n\nconst attrsOfNativeInputDefault = {}\nconst CheckboxInput: React.FC<ICheckboxInputProps> = ({\n label,\n id,\n value,\n onChange,\n disabled,\n className,\n isStark,\n testId = RC,\n attributesOfNativeInput = attrsOfNativeInputDefault,\n ...props\n}) => {\n return (\n <label\n data-testid={testId}\n className={cn(RC, className, {\n [`checkbox-input_disabled`]: disabled,\n })}\n htmlFor={id?.toString()}\n >\n <div\n className={cn(`checkbox-input__input`, {\n [`checkbox-input__input_checked`]: value,\n [`checkbox-input__input_indeterminate`]: isStark,\n })}\n >\n <input\n {...(id ? { 'id': id.toString(), 'data-id': id } : {})}\n type=\"checkbox\"\n className=\"checkbox-input__checkbox\"\n onChange={e => onChange?.(!value, e)}\n checked={value ?? false}\n disabled={disabled}\n ref={(elem) => {\n if (elem) elem.indeterminate = !!isStark;\n }}\n data-testid={`${testId}-input`}\n {...attributesOfNativeInput}\n {...props}\n />\n <span className=\"checkbox-input__mark\" />\n </div>\n {label && <div className=\"checkbox-input__label\">{label}</div>}\n </label>\n );\n};\n\nexport default CheckboxInput;\n", "import CheckboxesLine from './CheckboxesLine';\n\nexport default CheckboxesLine;\nexport type { ICheckboxLineProps } from './CheckboxesLine.interface';\n", "import CheckboxInput from './CheckboxInput';\n\nexport default CheckboxInput;\nexport type { ICheckboxInputProps } from './CheckboxInput.interface';\n", "import type { KeyboardEvent } from 'react';\nimport type { DatepickerProps, DateRange } from './Datepicker.props';\n\nimport cn from 'classnames';\nimport moment from 'moment';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\n\nimport Langs from '../../../Langs';\nimport Button from '../../UI/Button/Button';\nimport Dropdown from '../Dropdown/Dropdown';\nimport Input from '../Input/Input';\nimport Switcher from '../Switcher/Switcher';\nimport DatepickerCalendar from './components/DatepickerCalendar';\n\nimport './Datepicker.scss';\n\nfunction padTime(time: number): string {\n return `${time.toString().padStart(2, '0')}:00`;\n}\n\nconst Datepicker: React.FC<DatepickerProps> = ({\n isCompareHidden,\n limitRange,\n onChange,\n values,\n onChangeCompare,\n onCancel,\n getSelectedMode,\n onChangeInterval,\n}) => {\n const { start = null, end = null, compare = false } = values as DateRange;\n // @ts-ignore\n const txt = Langs[globalThis.lng as keyof typeof Langs];\n\n const startDateInputRef = useRef<HTMLInputElement>(null);\n const endDateInputRef = useRef<HTMLInputElement>(null);\n\n const [startDate, setStartDate] = useState<Date | null>(start);\n const [endDate, setEndDate] = useState<Date | null>(end);\n const [startDateInput, setStartDateInput] = useState<string | Date | null>(start);\n const [endDateInput, setEndDateInput] = useState<string | Date | null>(end);\n const [startHour, setStartHour] = useState<number>(start ? moment(start).hour() : 0);\n const [endHour, setEndHour] = useState<number>(end ? moment(end).hour() : 0);\n const [isCompare, setIsCompare] = useState<boolean>(compare);\n const [date1, setDate1] = useState<Date>(\n start ? moment(start).toDate() : moment().subtract(1, 'month').toDate(),\n );\n const [date2, setDate2] = useState<Date>(\n end ? moment(end).toDate() : moment().toDate(),\n );\n const [isStartFocused, setIsStartFocused] = useState(false);\n const [isEndFocused, setIsEndFocused] = useState(false);\n const [hoverStatus, setHoverStatus] = useState<'start' | 'end' | null>(null);\n\n const dateInterval = getSelectedMode?.({ start: startDate, end: endDate });\n\n const isNearby = useMemo(\n () => moment(date2).subtract(1, 'month').isSame(moment(date1), 'month'),\n [date1, date2],\n );\n\n const isPreviousPeriodShowed = useMemo(\n () => isCompare && !isCompareHidden && startDate && endDate,\n [startDate, endDate, isCompare],\n );\n\n const prevEndHour = useRef<number>(endHour);\n\n const getStartHourItems = (): { label: string; value: number; disabled: boolean }[] =>\n Array.from({ length: 24 }, (_, hour) => ({\n label: padTime(hour),\n value: hour,\n disabled: !!(\n startDate\n && endDate\n && moment(startDate).isSame(endDate, 'day')\n && endHour <= hour\n ),\n }));\n\n const getEndHourItems = (): { label: string; value: number; disabled: boolean }[] =>\n Array.from({ length: 24 }, (_, hour) => ({\n label: padTime(hour + 1),\n value: hour === 23 ? 0 : hour + 1,\n disabled: !!(\n startDate\n && endDate\n && (moment(startDate).isSame(endDate, 'day')\n || (moment(startDate).isSame(moment(endDate).subtract(1, 'days'), 'day')\n && endHour === 0))\n && hour < startHour\n ),\n }));\n\n const startPrevDate = useMemo(() => {\n if (isPreviousPeriodShowed && startDate && endDate) {\n const intervalHours = moment(endDate).diff(startDate, 'hours');\n return moment(startDate).subtract(intervalHours, 'hours').toDate();\n }\n return null;\n }, [startDate, endDate, isCompare]);\n\n const endPrevDate = useMemo(() => {\n return isPreviousPeriodShowed && startDate ? startDate : null;\n }, [startDate, isCompare]);\n\n const title = useMemo(() => {\n if (isCompare && !isCompareHidden && startPrevDate && endPrevDate) {\n return `${moment(startPrevDate).format('ll')} (${moment(startPrevDate).format('HH:mm')}) - ${moment(\n endPrevDate,\n ).format('ll')} (${moment(endPrevDate).format('HH:mm')})`;\n }\n return '';\n }, [startPrevDate, endPrevDate, isCompare]);\n\n const subtractDay = (date: Date): moment.Moment => (endHour === 0 ? moment(date).subtract(1, 'days') : moment(date));\n const addDay = (date: Date): moment.Moment => (endHour === 0 ? moment(date).add(1, 'days') : moment(date));\n\n useEffect(() => {\n if (startDate && endDate && moment(startDate).isSameOrAfter(endDate)) {\n const newStart = moment(endDate).subtract(1, 'd').toDate();\n setStartDate(newStart);\n setDate1(newStart);\n }\n }, [startDate]);\n\n useEffect(() => {\n if (startDate && endDate && moment(endDate).isSameOrBefore(startDate)) {\n const newEnd = moment(startDate).add(1, 'd').toDate();\n setEndDate(newEnd);\n setDate2(newEnd);\n }\n }, [endDate]);\n\n useEffect(() => {\n setStartDateInput(startDate);\n setEndDateInput(endDate);\n if (startDate && endDate && moment(startDate).isBefore(moment(endDate), 'month')) {\n setDate1(startDate);\n setDate2(endDate);\n }\n }, [startDate, endDate]);\n\n useEffect(() => {\n if (moment(date1).isSameOrAfter(moment(date2), 'month')) {\n setDate1(moment(date2).subtract(1, 'month').toDate());\n }\n }, [date1, date2]);\n\n useEffect(() => {\n if (dateInterval) onChangeInterval?.(dateInterval);\n }, [dateInterval]);\n\n const handleClick = (date: Date): void => {\n prevEndHour.current = 0;\n if (\n !startDate\n || (startDate\n && endDate\n && !(\n moment(startDate).add(1, 'd').isSame(endDate, 'day')\n && endHour === 0\n ))\n ) {\n setStartDate(moment(date).startOf('day').toDate());\n setEndDate(moment(date).add(1, 'd').startOf('day').toDate());\n setStartHour(0);\n setEndHour(0);\n }\n else if (moment(date).isBefore(moment(startDate), 'day')) {\n setEndDate(moment(startDate).add(1, 'd').startOf('day').toDate());\n setStartDate(moment(date).set('hour', startHour).toDate());\n }\n else if (moment(date).isAfter(moment(startDate), 'day')) {\n setEndDate(moment(date).add(1, 'd').startOf('day').toDate());\n }\n setHoverStatus(null);\n };\n\n let timerId: ReturnType<typeof setTimeout>;\n\n const handleHover = (date: Date | null): void => {\n if (!date) {\n timerId = setTimeout(() => setHoverStatus(null), 400);\n return;\n }\n if (timerId) clearTimeout(timerId);\n if (startDate && endDate && moment(startDate).add(1, 'd').isSame(endDate, 'day') && endHour === 0) {\n if (moment(date).isAfter(moment(startDate), 'day')) setHoverStatus('end');\n else if (moment(date).isBefore(moment(startDate), 'day')) setHoverStatus('start');\n else setHoverStatus(null);\n }\n else {\n setHoverStatus('start');\n }\n };\n\n const handleChangeStartHour = (value: string | number): void => {\n const val = Number(value);\n setStartHour(val);\n if (startDate) setStartDate(moment(startDate).set('hour', val).toDate());\n };\n\n const handleChangeEndHour = (value: string | number): void => {\n const newHour = Number(value);\n setEndHour(newHour);\n if (!endDate) return;\n\n let newEndDate: Date | moment.Moment;\n if (prevEndHour.current === 0 && newHour !== 0) {\n newEndDate = moment(endDate).subtract(1, 'days');\n }\n else if (prevEndHour.current !== 0 && newHour === 0) {\n newEndDate = moment(endDate).add(1, 'days');\n }\n else {\n newEndDate = moment(endDate);\n }\n prevEndHour.current = newHour;\n setEndDate(moment(newEndDate).set('hour', newHour).toDate());\n };\n\n const handleStartDateFocus = (): void => {\n setIsStartFocused(true);\n if (startDate) setStartDateInput(moment(startDate).format('L'));\n };\n\n const handleEndDateFocus = (): void => {\n setIsEndFocused(true);\n if (endDate) setEndDateInput(moment(subtractDay(endDate)).format('L'));\n };\n\n const handleStartDateBlur = (): void => {\n if (typeof startDateInput === 'string' && moment(startDateInput).isValid()) {\n const newDate = moment(startDateInput).set('hour', startHour).toDate();\n setStartDate(newDate);\n setDate1(\n moment(newDate).isSameOrAfter(moment(date2), 'month')\n ? moment(date2).subtract(1, 'month').toDate()\n : newDate,\n );\n }\n else {\n setStartDateInput(startDate);\n }\n setIsStartFocused(false);\n startDateInputRef.current?.blur();\n };\n\n const handleEndDateBlur = (): void => {\n if (typeof endDateInput === 'string' && moment(endDateInput).isValid()) {\n const newDate = moment(endDateInput).set('hour', endHour).toDate();\n const finalDate = addDay(newDate).toDate();\n setEndDate(finalDate);\n setDate2(finalDate);\n }\n else {\n setEndDateInput(endDate);\n }\n setIsEndFocused(false);\n endDateInputRef.current?.blur();\n };\n\n const handleKeyPressed = (e: KeyboardEvent<HTMLInputElement>, callback: () => void): void => {\n if (e.key === 'Enter') callback();\n };\n\n const renderButtons = (): React.ReactNode => (\n <>\n <Button className=\"plr15 mr5\" onClick={onCancel}>\n {txt.buttons.cancel}\n </Button>\n <Button\n className=\"plr20\"\n // variant=\"filled\"\n disabled={!startDate || !endDate}\n onClick={() => {\n if (!startDate || !endDate) return;\n onChange?.({\n start: startDate,\n end: endDate,\n startPrevDate,\n endPrevDate,\n compare: isCompare,\n });\n }}\n >\n {txt.buttons.apply}\n </Button>\n </>\n );\n\n const renderPreviousPeriod = (): React.ReactNode => (\n <>\n {/* @ts-ignore */}\n {txt.labels.previousPeriod}\n :\n {' '}\n <span className=\"date-picker__previous-period-interval\">{title}</span>\n </>\n );\n\n return (\n <div className=\"date-picker\">\n <div className=\"date-picker__header\">\n <Input\n testId=\"datepicker_start-date-input\"\n className={cn('mr5', {\n 'date-picker-text-input--active': hoverStatus === 'start',\n })}\n value={\n isStartFocused ? String(startDateInput) : moment(startDate).format('ll')\n }\n disabled={!startDate}\n onChange={value => setStartDateInput(value)}\n onFocus={handleStartDateFocus}\n onBlur={handleStartDateBlur}\n onKeyDown={(_keyCode: string | number, e: KeyboardEvent<HTMLInputElement>) => handleKeyPressed(e, handleStartDateBlur)}\n ref={startDateInputRef}\n />\n <Dropdown\n testId=\"datepicker_start-hour-select-input\"\n onChange={handleChangeStartHour}\n value={startHour}\n options={getStartHourItems()}\n disabled={!startDate}\n />\n <div className=\"pl5 pr5 date-picker__header--gray\">\u2014</div>\n <Input\n testId=\"datepicker_end-date-input\"\n className={cn('mr5', {\n 'date-picker-text-input--active': hoverStatus === 'end',\n })}\n value={\n isEndFocused\n ? String(endDateInput)\n : endDate\n ? moment(subtractDay(endDate)).format('ll')\n : ''\n }\n disabled={!endDate}\n onChange={(value: string) => setEndDateInput(value)}\n onFocus={handleEndDateFocus}\n onBlur={handleEndDateBlur}\n onKeyDown={(_keyCode, e: KeyboardEvent<HTMLInputElement>) => handleKeyPressed(e, handleEndDateBlur)}\n ref={endDateInputRef}\n />\n <Dropdown\n testId=\"datepicker_end-hour-select-input\"\n onChange={handleChangeEndHour}\n value={endHour}\n options={getEndHourItems()}\n disabled={!endDate}\n />\n </div>\n <div className=\"date-picker__previous-period\">\n {isCompare\n && !isCompareHidden\n && startDate\n && endDate\n && renderPreviousPeriod()}\n </div>\n <div className=\"date-picker__calendars\">\n <DatepickerCalendar\n date={date1}\n setDate={setDate1}\n allowNext={!isNearby}\n startDate={startDate}\n endDate={endDate}\n startPrevDate={startPrevDate}\n endPrevDate={endPrevDate}\n onClick={handleClick}\n onHover={handleHover}\n limitRange={limitRange}\n />\n <DatepickerCalendar\n date={date2}\n setDate={setDate2}\n allowPrev={!isNearby}\n startDate={startDate}\n endDate={endDate}\n startPrevDate={startPrevDate}\n endPrevDate={endPrevDate}\n onClick={handleClick}\n onHover={handleHover}\n />\n </div>\n <div className=\"date-picker__footer j46\">\n {!isCompareHidden && (\n <div className=\"j4\">\n <div className=\"mr5\">\n <Switcher\n testId=\"datepicker_compare\"\n // @ts-ignore\n label={txt.labels.compare}\n isActive={isCompare}\n onChange={() => {\n onChangeCompare?.(!isCompare);\n setIsCompare(state => !state);\n }}\n />\n </div>\n </div>\n )}\n <div>{renderButtons()}</div>\n </div>\n </div>\n );\n};\n\nexport default Datepicker;\n", "const Langs = {\n en: {\n auth: {},\n settings: {},\n labels: {\n industries: \"Industries\",\n includedLenders: \"Included Lenders\",\n admin: \"Administrator\",\n user: \"User\",\n help: \"Help\",\n description: \"Description\",\n value: \"Value\",\n paramName: \"Parameter name(key)\",\n active: \"Active\",\n pause: \"Pause\",\n error: \"Error\",\n sold: \"Sold\",\n processing: \"Processing\",\n home: \"Home\",\n goods: \"Goods\",\n improvement: \"Improvement\",\n jewelry: \"Jewelry\",\n firstName: \"First Name\",\n lastName: \"Last Name\",\n dateOfBirth: \"Date of Birth\",\n militaryStatus: \"Military status\",\n ssn: \"SSN\",\n lengthAtAddress: \"Length At Address\",\n rentOrOwn: \"Rent or Own\",\n zip: \"ZIP\",\n city: \"City\",\n state: \"State\",\n address: \"Address\",\n email: \"E-mail\",\n homePhone: \"Home Phone\",\n cellPhone: \"Cell Phone\",\n contactTime: \"Contact Time\",\n dlState: \"DL state\",\n dlNumber: \"DL number\",\n ownCar: \"Do you own a car?\",\n tcpaOptin: \"TCPA OPTIN\",\n incomeSource: \"Income Source\",\n timeEmployed: \"Time Employed\",\n jobTitle: \"Job Title\",\n currentEmployer: \"Current Employer\",\n employersPhone: \"Employer's Phone\",\n netMonthlyIncome: \"Net monthly income\",\n howOftenIsPaid: \"How often is paid\",\n nextPayDate: \"Next Pay Date\",\n secondPayDate: \"Second Pay Date\",\n loanAmount: \"Loan amount\",\n ip: \"IP\",\n storyName: \"Story name\",\n channelName: \"Channel name\",\n employmentInfo: \"Employment Information\",\n personalDetails: \"Personal Details\",\n offer: \"Offer\",\n offers: \"Offers\",\n status: \"Status\",\n name: \"Name\",\n from: \"From\",\n to: \"to\",\n periodMonths: \"Period (months)\",\n loansSent: \"Loans Sent\",\n approved: \"Approved\",\n rejected: \"Rejected\",\n loanAmountApproved: \"Loan Amount Approved ($)\",\n loanAmountRejected: \"Loan Amount Rejected ($)\",\n approveRate: \"Approve Rate (%)\",\n actions: \"Actions\",\n locations: \"Locations\",\n score: \"Score\",\n priority: \"Priority\",\n lender: \"Lender\",\n weight: \"Weight\",\n selectLender: \"Select lender\",\n },\n singulars: {},\n titles: {\n pingTree: \"Ping tree\",\n edit: \"Edit\",\n create: \"Create\",\n add: \"Add\",\n consumerInfo: \"Consumer info\",\n personalDetails: \"Personal Details\",\n employmentInfo: \"Employment Information\",\n tools: \"Tools\",\n lenders: \"Lenders\",\n settings: \"Settings\",\n dashboard: \"Dashboard\",\n consumers: \"Consumers\",\n ticketDesk: \"Ticket desk\",\n accounting: \"Accounting\",\n users: \"Users\",\n merchants: \"Merchants\",\n lenderPingTree: \"Lender Ping Tree\",\n reports: \"Reports\",\n leads: \"Leads\",\n location: \"Location\",\n mainMenu: \"Main menu\",\n partners: \"Partners\",\n other: \"Other\",\n homeGoodsAndInteriorDesign: \"Home Goods and Interior Design\",\n },\n placeholders: {\n typeName: \"Type name\",\n params: \"Params placeholder\",\n value: \"Value placeholder\",\n description: \"Description placeholder\",\n },\n hints: {\n landerNotIncluded:\n \"Lender is not included in Ping Tree by the \u201CHome Goods\u201D industry\",\n noMerchants: \"No Merchants for the \u201CHome Goods\u201D industry\",\n },\n buttons: {\n create: \"Create\",\n edit: \"Edit\",\n add: \"Add\",\n close: \"Close\",\n apply: \"Apply\",\n pingTree: \"Ping tree\",\n addRow: \"Add row\",\n consumerInfo: \"Consumer Info\",\n deletePingTree: \"Delete Ping Tree\",\n cancel: \"Cancel\",\n },\n radioButtons: {},\n weekDays: {\n su: \"Su\",\n mo: \"Mo\",\n tu: \"Tu\",\n we: \"We\",\n th: \"Th\",\n fr: \"Fr\",\n sa: \"Sa\",\n },\n alerts: {\n lendersWillBeRemoved: \"lenders will be removed\",\n },\n checkboxes: {\n homeGoods: \"Home Goods\",\n travel: \"Travel\",\n energyImprovement: \"Energy Improvement\",\n jewelryIncluded: \"Jewelry (included in PingTree name 2)\",\n jewelry: \"Jewelry\",\n autoRepair: \"Auto Repair\",\n cosmetics: \"Cosmetics\",\n health: \"Health\",\n },\n errors: {},\n texts: {},\n tabs: {\n general: \"General\",\n payments: \"Payments\",\n filters: \"Filters\",\n offers: \"Offers\",\n merchants: \"Merchants\",\n integration: \"Integration\",\n customDetails: \"Custom details\",\n customerDetails: \"Customer details\",\n postsLog: \"Posts log\",\n },\n toasts: {},\n },\n};\n\nexport default Langs;\n", "import type {\n KeyboardEventHandler,\n LegacyRef,\n MouseEventHandler,\n ReactNode,\n ReactPortal,\n} from 'react';\n\nimport type { IDependOptions, IDropdownOption, IDropdownProps } from './Dropdown.interface';\nimport cn from 'classnames';\nimport React, {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Check, ChevronDown, ChevronUp, Code, X } from 'react-feather';\nimport { formatToOnlyASCIICodeText } from '../../../Functions/fieldValueFormatters';\nimport Input from '../Input/Input';\n\nimport RadioInput from '../RadioInput/RadioInput';\nimport DropdownLoader from './components/DropdownLoader';\nimport useDropdown from './useDropdown';\nimport './Dropdown.scss';\n\nconst RC = 'dropdown';\n\nexport const MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH = 10;\n\nfunction Dropdown<T extends string | number = string | number>({\n label,\n options,\n value,\n error,\n disabled,\n onChange,\n placeholder,\n className,\n isSearchable: isSearchableProp,\n entity,\n scrollReactionObj,\n isListTop,\n isNotValidateASCII = false,\n testId = 'dropdown',\n\n sortAlphabetical = true,\n\n fieldKey,\n id,\n noOptionsText = 'No options available',\n isDoNotPullOutListOfMainContainer,\n\n withMobileLogic,\n withActions,\n minItemsForShowMobileSearch = MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH,\n customTrigger,\n tabIndex,\n\n onActionConfirmClick,\n onActionCancelClick,\n\n isDefaultOpened,\n isDefaultOpenedMobile,\n\n footerContent,\n\n closeOnSelect = true,\n closeOnSelectMobile = true,\n withApplyLogic = false,\n cancelButtonRef,\n applyButtonRef,\n}: IDropdownProps): React.ReactElement | null {\n const {\n dropdownId,\n isMobile,\n isOpen,\n setIsOpen,\n searchValue,\n setSearchValue,\n initListHeight,\n setInitListHeight,\n isSearchChanged,\n setIsSearchChanged,\n isSearchInputFocused,\n setIsSearchInputFocused,\n isScrollableList,\n setIsScrollableList,\n isFixedMaxHeight,\n setIsFixedMaxHeight,\n scrollTop,\n setScrollTop,\n scrollHeight,\n setScrollHeight,\n maxListContainerHeight,\n setMaxListContainerHeight,\n\n getListContainer,\n getListContainerWrapper,\n getParentNode,\n getPreparedOptionLabel,\n getSortedOptions,\n\n filteredGroups,\n filteredItems,\n filteredOptions,\n selectedLabel,\n postfixText,\n\n dropdownRef,\n dropdownListRef,\n dropdownListWrapperRef,\n dropdownFooterRef,\n searchInputRef,\n wrapperRef,\n\n isSearchable,\n\n valueToApply,\n valueToApplyRef,\n setValueToApply,\n } = useDropdown({ id, fieldKey, value, sortAlphabetical, withMobileLogic, options, isSearchable: isSearchableProp, minItemsForShowMobileSearch, isDoNotPullOutListOfMainContainer });\n\n /// HANDLERS <<<\n const onCancelClick = (): void => {\n setIsOpen(false);\n setValueToApply?.(null);\n onActionCancelClick?.();\n }\n\n const onApplyClick = (): void => {\n if (valueToApplyRef?.current !== null && valueToApplyRef?.current !== undefined) {\n onChange?.(valueToApplyRef.current);\n setTimeout(() => onActionConfirmClick?.(), 1);\n }\n onCancelClick?.();\n }\n\n const onChangeHandler = (item: IDropdownOption): void => {\n if (isMobile ? closeOnSelectMobile : closeOnSelect) {\n setIsOpen(false);\n }\n\n if (withApplyLogic && applyButtonRef?.current) {\n setValueToApply?.(item.value);\n }\n else {\n onChange?.(item.value);\n }\n };\n const onKeyDown: KeyboardEventHandler<Element> = (e): boolean => {\n if (![9, 13].includes(e.keyCode)) return false;\n onCancelClick();\n\n return true;\n };\n const onKeyUp: KeyboardEventHandler<Element> = (e): boolean => {\n if (![9, 13].includes(e.keyCode)) return false;\n setIsOpen(true);\n\n return true;\n };\n const onSearchHandler = (name: string): void => {\n let inputValue = name;\n if (!isNotValidateASCII) inputValue = formatToOnlyASCIICodeText(inputValue);\n setIsSearchChanged(true);\n setSearchValue(inputValue);\n };\n const onWrapperClick: MouseEventHandler<Element> = (e): void => {\n if (e.target === wrapperRef?.current) {\n e.stopPropagation();\n e.preventDefault();\n\n onCancelClick();\n }\n };\n const handleInputChange = (value: string): void => {\n onSearchHandler(value);\n };\n /// HANDLERS >>>\n\n /// FUNCTIONS <<<\n\n const handleClickOutside = (event: Event | MouseEvent): void => {\n if (\n !getListContainer()?.contains(event?.target as Node)\n && dropdownRef?.current !== null\n && !dropdownRef?.current.contains(event?.target as Node)\n ) {\n onCancelClick();\n }\n };\n const doScrollCallback: EventListener = useCallback(\n (e) => {\n const {\n callback,\n isWithAnyScrolling,\n scrollingInaccuracy = 0,\n } = scrollReactionObj || {};\n\n const target = e?.target as HTMLDivElement;\n\n if (callback && typeof callback === 'function') {\n if (isWithAnyScrolling) {\n callback(e);\n }\n else if (\n Math.round(\n target.clientHeight + target.scrollTop + scrollingInaccuracy,\n ) >= target.scrollHeight\n ) {\n callback(e);\n }\n }\n },\n [filteredOptions],\n );\n const initListContainer = (): void => {\n const dropdownList = document.createElement('div');\n\n dropdownList.setAttribute('id', dropdownId);\n dropdownList.classList.add('dropdown__container');\n\n if (isMobile) {\n dropdownList.addEventListener('click', (e) => {\n const { id } = e?.target as HTMLDivElement;\n if (id === dropdownId) {\n onCancelClick();\n }\n });\n }\n\n try {\n getListContainer()?.remove();\n }\n finally {\n if (isMobile) {\n try {\n document.getElementById(`mlw-${dropdownId}`)?.remove();\n }\n catch { }\n\n const dropdownMobileListWrapper = document.createElement('div');\n dropdownMobileListWrapper.classList.add('dropdown-mobile');\n dropdownMobileListWrapper.setAttribute('id', `mlw-${dropdownId}`);\n dropdownMobileListWrapper?.append(dropdownList);\n getParentNode()?.append(dropdownMobileListWrapper);\n }\n else {\n getParentNode()?.append(dropdownList);\n }\n }\n };\n const setListContainerStyles = (): boolean => {\n const lc = getListContainer();\n\n if (!lc || !isOpen) return false;\n\n const windowHeight\n = window.innerHeight\n || document.documentElement.clientHeight\n || document.body.clientHeight;\n\n const { width, height = 0, left, top = 0 }\n = dropdownRef?.current?.getBoundingClientRect() ?? {};\n\n const sw = lc.getElementsByClassName('dropdown__list')[0] as HTMLElement;\n const lh = (dropdownListWrapperRef?.current as HTMLElement)?.getElementsByClassName(\n 'dropdown__list-header',\n )[0];\n const margin = Number.parseInt(\n getComputedStyle(dropdownListWrapperRef?.current as HTMLElement)?.marginTop?.replace(\n 'px',\n '',\n ) ?? '0',\n 10,\n );\n const maxHeight\n = initListHeight\n ?? Number.parseInt(getComputedStyle(sw)?.maxHeight?.replace('px', '') ?? '0', 10);\n\n if (initListHeight === null) setInitListHeight(maxHeight);\n\n const toTop = top - margin;\n const toBottom = windowHeight - top - height - margin * 2;\n\n const swHeight = sw?.getBoundingClientRect()?.height;\n const maxSwHeight = (isMobile\n ? (dropdownListWrapperRef?.current as HTMLElement)?.getBoundingClientRect()?.height\n - lh?.getBoundingClientRect()?.height\n : toTop >= maxHeight || toBottom >= maxHeight\n ? maxHeight - 3 * margin\n : toTop > toBottom\n ? toTop - 3 * margin\n : toBottom - 4 * margin) - (dropdownFooterRef?.current?.getBoundingClientRect()?.height ?? 0);\n\n const listPos = toTop < toBottom || toBottom >= swHeight ? 'bottom' : 'top';\n\n lc.style.minWidth = `${width}px`;\n lc.style.left = `${left}px`;\n lc.style.top = `${listPos === 'bottom' ? top + height : top - margin * 3 - Number.parseInt(getComputedStyle(dropdownListWrapperRef?.current as HTMLElement)?.height?.replace('px', '') ?? '0', 10)}px`;\n\n if (maxListContainerHeight !== maxSwHeight && !isMobile) {\n setMaxListContainerHeight(maxSwHeight);\n }\n\n sw.style.maxHeight = `${maxSwHeight}px`;\n\n return true;\n };\n const toggleList: MouseEventHandler<Element> = (e): void => {\n e?.stopPropagation();\n setIsOpen((isOpen) => {\n return !isOpen;\n });\n };\n const closeList = isOpen ? handleClickOutside : () => { };\n\n const getDepends = (getDependsTrigger: boolean | '' | undefined): IDependOptions => {\n const newOnChange = (e: IDropdownOption): void => {\n if (e.value === 'open_modal') {\n onChange?.('open_modal' as T);\n }\n else {\n onChangeHandler(e);\n }\n };\n\n // add pseudo option\n const newOptions: IDropdownOption[] = [\n {\n label: `New ${entity}`,\n value: 'open_modal' as T,\n className: 'dropdown__list-item--modal',\n },\n ...(filteredOptions as IDropdownOption[] ?? []),\n ];\n\n return {\n onChange: (changeItem: IDropdownOption) => {\n return getDependsTrigger\n ? newOnChange(changeItem)\n : onChangeHandler(changeItem);\n },\n options: getDependsTrigger ? newOptions : options,\n };\n };\n /// FUNCTIONS >>>\n\n const modalBtnTrigger = useMemo(() => entity && entity !== '' && typeof entity === 'string', [entity]);\n const depend = useMemo(() => getDepends(modalBtnTrigger), [modalBtnTrigger, filteredOptions]);\n\n /// RENDER <<<\n const getMarkupForElement = (item: IDropdownOption, _index?: number, optTestId?: string): ReactNode => {\n return (\n <button\n type=\"button\"\n data-testid={`${testId}-${optTestId}-option`}\n key={item.value?.toString()?.replace(/ /g, '_')}\n onMouseDown={() => depend.onChange(item as IDropdownOption)}\n className={cn(\n `${RC}__list-item`,\n {\n [`${RC}__list-item_active`]: item.value === (valueToApply ?? value),\n [`${RC}__list-item_disabled`]: item.disabled,\n },\n item.className,\n )}\n value={item?.value}\n >\n {!isMobile && (\n <span\n className={cn(`${RC}__active-icon`, {\n [`${RC}__active-icon_active`]: item.value === value,\n })}\n >\n <Check />\n </span>\n )}\n <div\n className={cn(`${RC}__list-item-label`, item.labelClassName || '')}\n // eslint-disable-next-line react-dom/no-dangerously-set-innerhtml\n dangerouslySetInnerHTML={{\n __html: getPreparedOptionLabel(\n item.label,\n item.postfix,\n item.description,\n ),\n }}\n />\n {item?.icon || ''}\n {isMobile\n ? item?.customMobileIcon ?? (\n <RadioInput value={item.value} checked={valueToApply ?? value} />\n )\n : ''}\n </button>\n );\n };\n\n const filteredOptionList = (filteredOption: IDropdownOption): ReactNode => {\n return (filteredOption.items?.length ?? 0) > 0\n ? (\n <div\n key={filteredOption.label\n ?.toString()\n ?.replace(/ /g, '_')\n .concat(Date.now()?.toString())}\n className={cn(`${RC}-group`, filteredOption.className)}\n >\n <div className={`${RC}-group__name`}>{filteredOption.label}</div>\n {filteredOption.items?.map((el: IDropdownOption, index: number) =>\n getMarkupForElement(el as IDropdownOption, index, (el?.testId || index)?.toString()),\n )}\n </div>\n )\n : null;\n };\n\n const getListMarkUp = (): ReactNode => {\n return (\n <div\n data-testid={`${testId}-container-wrapper`}\n className={cn(`${RC}__container-wrapper`)}\n ref={wrapperRef as LegacyRef<HTMLDivElement>}\n onClick={isMobile ? onWrapperClick : () => { }}\n >\n <div\n className={cn(`${RC}__list-wrapper`, {\n [`${RC}__list-wrapper--fixed-height`]: isFixedMaxHeight,\n [`${RC}__list-wrapper--with-bottom-shadow`]:\n isScrollableList && isMobile && !footerContent,\n [`${RC}__list-wrapper--with-bottom-shadow-hidden`]:\n scrollTop === scrollHeight && !footerContent,\n })}\n ref={dropdownListWrapperRef as LegacyRef<HTMLDivElement>}\n >\n {isMobile && (\n <div\n className={cn(`${RC}__list-header`, {\n [`${RC}__list-header-with-shadow`]:\n isScrollableList && isMobile,\n [`${RC}__list-header-with-shadow-hidden`]: scrollTop === 0,\n })}\n >\n <div className={cn(`${RC}__list-header-row`)}>\n <div className={cn(`${RC}__list-label`)}>{label}</div>\n <div\n className={cn(`${RC}__list-close-icon`)}\n onClick={onCancelClick}\n >\n <X onClick={onCancelClick} />\n </div>\n </div>\n {isSearchable && (\n <div className={cn(`${RC}__list-header-row`)}>\n <Input\n ref={searchInputRef}\n className={`${RC}__input`}\n value={searchValue || ''}\n onChange={handleInputChange}\n placeholder={placeholder || 'Search'}\n withDelete\n onFocus={() => setIsSearchInputFocused(true)}\n onBlur={() => setIsSearchInputFocused(false)}\n />\n </div>\n )}\n </div>\n )}\n <div\n className={cn(`${RC}__list`, {\n [`${RC}__list-top`]: isListTop,\n [`${RC}__list--with-footer`]: footerContent,\n })}\n ref={dropdownListRef as LegacyRef<HTMLDivElement>}\n >\n {depend.options && getSortedOptions(depend.options)?.map((option, index) => {\n if (option?.items?.length) {\n if (!isSearchable || !isSearchChanged) {\n return filteredOptionList(option as IDropdownOption);\n }\n else {\n const items = option.items\n ?.slice()\n .filter(\n el =>\n el?.label\n ?.toLowerCase()\n .includes(searchValue?.toLowerCase() || '')\n || !el?.value\n || el?.value === '',\n );\n if (items?.length)\n return filteredOptionList({ ...option, items } as IDropdownOption);\n return null;\n }\n }\n else if (\n !isSearchable\n || !isSearchChanged\n || option?.label\n ?.toLowerCase()\n .includes(searchValue?.toLowerCase() || '')\n || !option?.value\n || option?.value === ''\n ) {\n return getMarkupForElement(option as IDropdownOption, index, (option?.testId || index)?.toString());\n }\n return null;\n })}\n {!filteredItems?.length && !filteredGroups?.length && (\n <div className={`${RC}__list-item ${RC}__list-item--no-options`}>\n {noOptionsText}\n </div>\n )}\n {disabled && isOpen && <DropdownLoader />}\n </div>\n {footerContent && (\n <div\n ref={dropdownFooterRef as LegacyRef<HTMLDivElement>}\n className={cn(`${RC}__footer`, {\n [`${RC}__footer-with-shadow`]: isMobile && isScrollableList,\n [`${RC}__footer-with-shadow-hidden`]:\n scrollTop === scrollHeight,\n })}\n >\n {footerContent}\n </div>\n )}\n </div>\n </div>\n );\n };\n const renderListContainer = (): ReactPortal | null => {\n const lc = getListContainer();\n\n if (!lc) return null;\n\n return createPortal(getListMarkUp(), lc);\n };\n /// RENDER >>>\n\n useEffect(() => {\n document.addEventListener('click', handleClickOutside, true);\n\n return () => {\n getListContainer()?.remove();\n getListContainerWrapper()?.remove();\n document.removeEventListener('click', handleClickOutside, true);\n };\n }, []);\n\n useEffect(() => {\n if (!isDoNotPullOutListOfMainContainer || dropdownRef.current) {\n initListContainer();\n if ((isDefaultOpened && !isMobile) || isDefaultOpenedMobile) setIsOpen(true);\n }\n }, [isDoNotPullOutListOfMainContainer, dropdownRef.current]);\n\n useLayoutEffect(() => {\n if (!isMobile) {\n window.addEventListener('resize', setListContainerStyles);\n window.addEventListener('mousewheel', closeList);\n window.addEventListener('scroll', closeList);\n window.addEventListener('touchmove', closeList);\n }\n else {\n window.removeEventListener('resize', setListContainerStyles);\n window.removeEventListener('mousewheel', closeList);\n window.removeEventListener('scroll', closeList);\n window.removeEventListener('touchmove', closeList);\n }\n\n // eslint-disable-next-line react-web-api/no-leaked-event-listener\n getListContainer()?.addEventListener('click', closeList);\n\n return () => {\n window.removeEventListener('resize', setListContainerStyles);\n window.removeEventListener('mousewheel', closeList);\n window.removeEventListener('scroll', closeList);\n window.removeEventListener('touchmove', closeList);\n getListContainer()?.removeEventListener('click', closeList);\n };\n }, [getListContainer]);\n\n useLayoutEffect(() => {\n setListContainerStyles();\n }, [\n maxListContainerHeight,\n isOpen,\n searchValue,\n isMobile,\n isFixedMaxHeight,\n options,\n ]);\n\n useEffect(() => {\n const fn = isOpen ? 'addEventListener' : 'removeEventListener';\n cancelButtonRef?.current?.[fn]('click', onCancelClick, true);\n applyButtonRef?.current?.[fn]('click', onApplyClick, true);\n\n if (!isOpen) {\n setIsSearchChanged(false);\n if (!isMobile) setMaxListContainerHeight(0);\n }\n\n if (\n scrollReactionObj\n && typeof scrollReactionObj === 'object'\n && isOpen\n && dropdownListRef\n && dropdownListRef.current\n ) {\n // eslint-disable-next-line react-web-api/no-leaked-event-listener\n dropdownListRef.current.addEventListener('scroll', doScrollCallback);\n }\n return () => {\n if (scrollReactionObj && typeof scrollReactionObj === 'object')\n removeEventListener('scroll', doScrollCallback);\n };\n }, [isOpen, dropdownListRef]);\n\n useEffect(() => {\n let timeout: NodeJS.Timeout;\n\n if (!searchValue && isSearchInputFocused && !isMobile) {\n setSearchValue(selectedLabel as string);\n\n timeout = setTimeout(() => (searchInputRef.current as HTMLInputElement).select(), 1);\n }\n\n if (!isSearchInputFocused && !isOpen) {\n setSearchValue(null);\n }\n\n return () => {\n clearTimeout(timeout);\n }\n }, [isSearchInputFocused]);\n\n useEffect(() => {\n if (isOpen && !isSearchInputFocused && searchInputRef?.current && !isMobile)\n (searchInputRef.current as HTMLInputElement)?.focus();\n\n if (isOpen) {\n getListContainer()?.classList.add('dropdown__container--opened');\n }\n else {\n (searchInputRef.current as HTMLInputElement)?.blur();\n getListContainer()?.classList.remove('dropdown__container--opened');\n }\n\n if (isOpen && isMobile) {\n // Scroll to selected Element\n const selectedEl = dropdownListRef?.current?.querySelector(`button[value='${valueToApply ?? value}']`);\n if (selectedEl) dropdownListRef?.current?.scrollTo(0, selectedEl?.getBoundingClientRect()?.y - dropdownListRef?.current?.getBoundingClientRect().y - 16);\n }\n\n if (!isOpen && isMobile) {\n setSearchValue(null);\n }\n }, [isOpen]);\n\n useEffect(() => {\n const dropdownListEl = getListContainer()?.getElementsByClassName('dropdown__list')[0] as HTMLElement;\n if (!isMobile && dropdownListEl) {\n const handleWheel = (e: WheelEvent): void => {\n const { scrollTop, scrollHeight, clientHeight } = dropdownListEl;\n\n const isScrollingUp = e.deltaY < 0;\n const isScrollingDown = e.deltaY > 0;\n\n const isAtTop = scrollTop <= 0;\n const isAtBottom = scrollTop + clientHeight >= scrollHeight - 1;\n\n if ((isScrollingUp && isAtTop) || (isScrollingDown && isAtBottom)) {\n e.preventDefault();\n }\n };\n\n if (isOpen) {\n dropdownListEl?.addEventListener('wheel', handleWheel, { passive: false });\n }\n else {\n dropdownListEl?.removeEventListener('wheel', handleWheel);\n }\n\n return () => {\n dropdownListEl?.removeEventListener('wheel', handleWheel);\n };\n }\n\n return () => { };\n }, [isOpen, isMobile, getListContainer()]);\n\n useEffect(() => {\n if (isOpen && isMobile && dropdownListRef?.current && !searchValue) {\n setIsScrollableList(\n dropdownListRef?.current?.scrollHeight\n > dropdownListRef?.current?.clientHeight,\n );\n setIsFixedMaxHeight(\n isScrollableList\n || dropdownListRef?.current?.scrollHeight\n > dropdownListRef?.current?.clientHeight,\n );\n }\n }, [\n isOpen,\n isMobile,\n isScrollableList,\n dropdownListRef?.current,\n dropdownListRef?.current?.scrollHeight,\n dropdownListRef?.current?.clientHeight,\n ]);\n\n useEffect(() => {\n const setScrollTopValue: EventListener = (e): void => {\n setScrollTop(Number.parseInt((e?.target as Element)?.scrollTop?.toString(), 10));\n };\n\n if (isOpen && isMobile && dropdownListRef?.current) {\n // eslint-disable-next-line react-web-api/no-leaked-event-listener\n dropdownListRef?.current?.addEventListener('scroll', setScrollTopValue);\n }\n\n return () => {\n if (dropdownListRef?.current !== null) {\n (dropdownListRef?.current)?.removeEventListener(\n 'scroll',\n setScrollTopValue,\n );\n }\n };\n }, [isOpen, isMobile, dropdownListRef?.current]);\n\n useEffect(() => {\n if (dropdownListRef?.current) {\n setScrollHeight(\n Number.parseInt(\n (dropdownListRef?.current?.scrollHeight\n - dropdownListRef?.current?.clientHeight).toString(),\n 10,\n ),\n );\n }\n }, [scrollTop, dropdownListRef?.current]);\n\n if (!options) return null;\n\n return (\n <div\n className={cn(RC, className, {\n disabled,\n [`${RC}-mobile`]: isMobile,\n [`${RC}--focused`]: isOpen && !isMobile,\n [`${RC}--with-custom-trigger`]: Boolean(customTrigger),\n })}\n ref={dropdownRef as LegacyRef<HTMLDivElement>}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n >\n <button\n type=\"button\"\n data-testid={testId}\n className={cn(`${RC}__trigger`, 'input__wrap', {\n [`${RC}__trigger--with-actions`]: withActions,\n placeholder: value === null || value === undefined || value === '',\n error,\n })}\n onClick={() => setIsOpen(true)}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n tabIndex={tabIndex}\n >\n {customTrigger || (\n <>\n {isSearchable && !isMobile\n ? (\n <input\n ref={searchInputRef as LegacyRef<HTMLInputElement>}\n className={`${RC}__input`}\n value={String(isOpen ? searchValue ?? '' : selectedLabel ?? '')}\n onChange={e => handleInputChange(e.target.value)}\n placeholder={placeholder}\n onFocus={() => setIsSearchInputFocused(true)}\n onBlur={() => setIsSearchInputFocused(false)}\n />\n )\n : (\n <>\n <span className=\"text\">{selectedLabel || placeholder || ''}</span>\n {postfixText && (\n <span className=\"dropdown__list-item-postfix\">\n {postfixText}\n </span>\n )}\n </>\n )}\n <span\n className={cn(`${RC}__arrow`, {\n [`${RC}__arrow_active`]: isOpen,\n })}\n onClick={toggleList}\n >\n {isMobile\n ? (\n <Code className=\"mobile-icon\" />\n )\n : isOpen\n ? (\n <ChevronUp />\n )\n : (\n <ChevronDown />\n )}\n </span>\n </>\n )}\n </button>\n {withActions && (\n <div className={cn(`${RC}__actions`)}>\n <div\n className={cn(`${RC}__actions-item`)}\n onClick={onActionConfirmClick}\n >\n <Check />\n </div>\n <div\n className={cn(`${RC}__actions-item`)}\n onClick={onActionCancelClick}\n >\n <X />\n </div>\n </div>\n )}\n {isOpen && renderListContainer()}\n </div>\n );\n}\n\nexport default Dropdown;\n", "export const KEYBOARD_SERVICE_KEYS = [\n \"Escape\",\n \"F1\",\n \"F2\",\n \"F3\",\n \"F4\",\n \"F5\",\n \"F6\",\n \"F7\",\n \"F8\",\n \"F9\",\n \"F10\",\n \"F11\",\n \"F12\",\n \"Tab\",\n \"CapsLock\",\n \"Shift\",\n \"Control\",\n \"Meta\",\n \"Option\",\n \"Alt\",\n \"ContextMenu\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"NumLock\",\n \"Backspace\",\n \"Delete\",\n \"Enter\",\n \"Return\",\n \"Insert\",\n \"Home\",\n \"End\",\n \"PageUp\",\n \"PageDown\",\n \"PrintScreen\",\n \"ScrollLock\",\n \"Pause\",\n];\n\nexport const MAX_PHONE_LENGTH = 10;\nexport const MAX_NAME_LENGTH = 128;\n\nexport const DEFAULT_DATE_MASK_NO_VALUE_SYMBOL = \"_\";\n\nexport const DEFAULT_COLORS = [\n \"#D9C1FF\",\n \"#FFBAF0\",\n \"#FFB8CE\",\n \"#FFC3A2\",\n \"#FFDB7C\",\n \"#F9F871\",\n \"#C3FCF1\",\n \"#F6F2CB\",\n \"#E0F8D1\",\n \"#B1DFFB\",\n \"#8DECFE\",\n \"#76F7ED\",\n \"#8AFEC8\",\n];\n\nexport const KEYBOARD_KEY_CODES = {\n Backspace: 8,\n Delete: 46,\n ARROW_LEFT: 37,\n ARROW_RIGHT: 39,\n};\n\nexport const OS = {\n iOS: \"iOS\",\n Android: \"Android\",\n WP: \"Windows Phone\",\n Linux: \"Linux\",\n Windows: \"Windows\",\n MacOS: \"MacOS\",\n Unknown: \"unknown\",\n};\n", "import { useEffect } from \"react\";\n\nimport moment from \"moment-timezone\";\n\nimport { DEFAULT_COLORS, OS } from \"../Constants/index.constants\";\n\nexport const uuid = () => Date.now().toString(36) + Math.random().toString(36).substring(2);\n\nexport const getIsOnlyAnObject = (input) => {\n return (\n typeof input === \"object\" && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B \u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u0438\n input instanceof Object && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" null\n !Array.isArray(input) && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043C\u0430\u0441\u0441\u0438\u0432\u044B\n !(input instanceof Set) && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u0441\u0435\u0442\u044B\n !(input instanceof Map) // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043C\u0430\u043F\u044B\n );\n};\n\n/* eslint-disable guard-for-in, no-unused-vars */\nexport const handleObjectChange =\n (updateObject, updateFunction) =>\n (data, prop = \"\", isNumber) => {\n let value;\n if (data?.target) {\n value =\n data.target.type === \"checkbox\"\n ? data.target.checked\n : data.target.value;\n } else value = data;\n\n value = isNumber ? Number(value) : value;\n\n const props = prop.split(\".\");\n const currentObject = props.reduce((res, chapter, index) => {\n if (props.length !== index + 1) res = res[chapter];\n return res;\n }, updateObject);\n\n currentObject[props.pop()] = value;\n updateFunction();\n };\n\nexport const useOutsideToggle = (ref, setOut, open) => {\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n setOut(open);\n }\n }\n useEffect(() => {\n document.addEventListener(\"mouseup\", handleClickOutside);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mouseup\", handleClickOutside);\n };\n }, [ref]);\n};\n\n// export const clone = obj => {\n// const data = obj instanceof Array ? [] : {};\n// for (const i in obj) data[i] = typeof obj[i] === 'object' && obj[i] != null ? clone(obj[i]) : obj[i];\n// return data;\n// };\n// ! \u042D\u0442\u043E\u0442 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435\u0435\nexport const clone = (input) => {\n if (input === null || typeof input !== \"object\") return input;\n const data = input instanceof Array ? [] : {};\n for (const i in input) data[i] = clone(input[i]);\n return data;\n};\n\nexport const getResponseClone = async (res) =>\n await (typeof res?.clone === \"function\" ? res.clone() : clone(res));\n\n//TimeUtils\nexport function transformUTCTimeToLocal(date, format = \"YYYY-MM-DD HH:mm:ss\") {\n if (!date) return;\n const utcDate = moment.utc(date).toDate();\n return moment(utcDate, format).local().format(format);\n}\nexport function transformLocalTimeToUTC(date, format = \"YYYY-MM-DD HH:mm:ss\") {\n if (!date) return;\n return moment(date, format).utc().format(format);\n}\nexport function transformUTCHoursToLocal(time, format = \"HH:mm:ss\") {\n if (!time) return;\n const splitedTime = time.split(\":\");\n const offset = moment().utcOffset();\n let HH = Number(splitedTime[0]);\n let mm = Number(splitedTime[1]);\n const ss = splitedTime[2];\n mm = mm + offset;\n while (mm > 59) {\n mm -= 60;\n HH += 1;\n }\n if (HH > 23) HH -= 24;\n while (mm < 0) {\n mm += 60;\n HH -= 1;\n }\n if (HH < 0) HH += 24;\n return `${HH}:${mm}:${ss}`;\n}\n\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E \u0441\u0430\u043C\u044B\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 \u043F\u0430\u0442\u0442\u0435\u0440\u043D\nexport function transformDateOrTimeOrTogetherToFormat(\n data,\n outputFormat = \"HH:mm\",\n additional,\n) {\n const ERROR_VALUE = \"Invalid date\";\n const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;\n const { parseFormat, isReturnAsMomentInstance } = getIsOnlyAnObject(\n additional,\n )\n ? additional\n : {};\n\n if (typeof data !== \"string\" && typeof data !== \"number\") {\n return isReturnAsMomentInstance ? moment(\"error\") : ERROR_MESSGE;\n }\n\n //? \u0418\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u043C parseFormat, \u0435\u0441\u043B\u0438 data \u043F\u0440\u0438\u0448\u043B\u0430 \u043A\u0430\u043A timestamp \u0438\u043B\u0438 \u0435\u0441\u043B\u0438 parseFormat \u043D\u0435 \u0441\u0442\u0440\u043E\u043A\u0430\n const momentArgs = [\n data,\n ...(!Number.isNaN(Number(data)) || typeof parseFormat === \"string\"\n ? []\n : [parseFormat]),\n ];\n\n //? \u0417\u0430\u0434\u0430\u0447\u0430 \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440, \u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 \u043B\u0438\u0431\u043E \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439\n const momentInstance = (() => {\n let instance = moment(...momentArgs);\n\n //? \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C \u0432\u0430\u043B\u0438\u0434\u043D\u043E\u0441\u0442\u044C moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440-\u0430 \u043F\u0443\u0442\u0435\u043C \u043F\u043E\u043F\u044B\u0442\u043A\u0438 \u043F\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043E \u043A \u0432\u044B\u0445\u043E\u0434\u043D\u043E\u043C\u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0443\n //? \u041F\u043E\u043F\u0430\u0434\u0435\u043C \u0432 \u044D\u0442\u043E\u0442 \u043A\u0435\u0439\u0441 \u0435\u0441\u043B\u0438\n //? - data \u044D\u0442\u043E timestamp\n //? - data \u044D\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 date-time\n //? - data \u044D\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 date (\u0432 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0432\u0440\u0435\u043C\u044F \u0432\u044B\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F 00:00:00)\n if (instance.format(outputFormat) !== ERROR_VALUE) return instance;\n //? \u0415\u0441\u043B\u0438 \u0436\u0435 \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C, \u0442\u043E \u043F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u043C, \u0447\u0442\u043E data \u043F\u0440\u0438\u0448\u043B\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 time\n //? \u0412 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0441\u043E\u0437\u0434\u0430\u0434\u0438\u043C \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u0442 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u044B, \u0440\u0430\u0441\u043F\u0430\u0440\u0441\u0438\u043C data \u0438 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u043C \u0432\u0440\u0435\u043C\u044F\n //? \u041A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442\u0441\u044F \u043F\u0430\u0442\u0442\u0435\u0440\u043D\u044B: 'HH*mm', 'HH*mm*ss', 'HH*mm*ss*\u043B\u044E\u0431\u043E\u0435_\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E_ms', \u0433\u0434\u0435 * - \u043B\u044E\u0431\u043E\u0439 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C\n else if (/^\\d\\d.\\d\\d/.test(data)) {\n instance = moment();\n const symbols = data.split(\"\");\n\n const timeArr = symbols\n .reduce(\n (acc, symbol, idx) => {\n if (Number.isNaN(Number(symbol))) {\n if (acc.group) acc.result.push(acc.group);\n acc.group = \"\";\n } else acc.group = `${acc.group}${symbol}`;\n if (idx === symbols.length - 1 && acc.group)\n acc.result.push(acc.group);\n return acc;\n },\n { result: [], group: \"\" },\n )\n //? reverse \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0438\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0434\u043B\u044F \u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0441\u043B\u0435 \u043C\u043E\u0436\u043D\u043E \u0431\u044B\u043B\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043C\u0435\u0442\u043E\u0434 pop, \u0430 \u043D\u0435 shift,\n //? \u0442.\u043A. \u043C\u0435\u0442\u043E\u0434\u044B \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F/\u0438\u0437\u0432\u043B\u0435\u0447\u0435\u043D\u0438\u044F \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043A\u043E\u043D\u0446\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u0431\u044B\u0441\u0442\u0440\u0435\u0435,\n //? \u0447\u0435\u043C \u0430\u043D\u0430\u043B\u043E\u0433\u0438\u0447\u043D\u044B\u0435 \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043D\u0430\u0447\u0430\u043B\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n .result.reverse();\n\n instance.hours(Number(timeArr.pop()));\n instance.minutes(Number(timeArr.pop()));\n instance.seconds(timeArr.length ? Number(timeArr.pop()) : 0);\n instance.milliseconds(timeArr.length ? Number(timeArr.pop()) : 0);\n } else instance = moment(\"error\"); //? \u0418\u043D\u0430\u0447\u0435 \u0441\u043E\u0437\u0434\u0430\u0435\u043C \u0437\u0430\u0432\u0435\u0434\u043E\u043C\u043E \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\n\n return instance;\n })();\n\n if (isReturnAsMomentInstance) return momentInstance;\n\n const output = momentInstance.format(outputFormat);\n return output === ERROR_VALUE ? ERROR_MESSGE : output;\n}\n\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E \u0441\u0430\u043C\u044B\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 \u043F\u0430\u0442\u0442\u0435\u0440\u043D\nexport function transformDateOrTimeOrTogetherToFormattedLocal(\n data,\n outputFormat = \"HH:mm\",\n additional,\n) {\n const ERROR_VALUE = \"Invalid date\";\n const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;\n\n if (additional && !getIsOnlyAnObject(additional)) {\n throw new Error(\n \"Bad additional [transformDateOrTimeOrTogetherToFormattedLocal]\",\n );\n }\n\n const compositeAdditional = {\n ...(additional || {}),\n isReturnAsMomentInstance: true,\n };\n const date = transformDateOrTimeOrTogetherToFormat(\n data,\n outputFormat,\n compositeAdditional,\n );\n\n const dateWithLocale = date.add(moment().utcOffset(), \"minutes\");\n const output = dateWithLocale.format(outputFormat);\n\n return output === ERROR_VALUE ? ERROR_MESSGE : output;\n}\n\n//\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u043E\u0431\u044C\u0435\u043A\u0442 \u0438 \u043C\u0430\u0441\u0441\u0438\u0432 \u043A\u043B\u044E\u0447\u0435\u0439 \u043E\u0431\u044C\u0435\u043A\u0442\u0430\n//\u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043E\u0431\u044C\u0435\u043A\u0442 \u0441 \u0442\u0435\u043C\u0438 \u043F\u043E\u043B\u044F\u043C\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u043D\u0435\u0442 \u0432 \u043C\u0430\u0441\u0441\u0438\u0432\u0435 \u043A\u043B\u044E\u0447\u0435\u0439\nexport const omitKeys = (obj = {}, keys = []) =>\n keys.reduce((acc, key) => {\n const { [key]: omit, ...rest } = acc;\n return rest;\n }, obj);\n\nexport const logout = () => {\n window.localStorage.removeItem(\"accessToken\");\n window.localStorage.removeItem(\"tokenExpires\");\n window.location.reload();\n};\n\nexport const getStyles = (el, prop) => {\n if (!el) return null;\n if (!prop) return window.getComputedStyle(el);\n return window.getComputedStyle(el).getPropertyValue(prop);\n};\n\nexport const getColorById = (id, colors) => {\n if (!id) return \"#FF7D00\";\n\n const idToArr = Array.from(id);\n const colorsArr = colors && colors.length > 0 ? colors : DEFAULT_COLORS;\n\n let number = idToArr.reduce((acc, item) => {\n if (Number(item)) {\n return acc + Number(item);\n }\n return acc;\n }, 0);\n\n while (number >= colorsArr.length) {\n number -= colorsArr.length;\n }\n\n return colorsArr[number];\n};\n\nexport const debounce = (fn, ms) => {\n let id = null;\n return (...args) => {\n clearTimeout(id);\n id = setTimeout(() => {\n clearTimeout(id);\n fn(...args);\n }, ms);\n };\n};\n\nexport const throttle = (fn, ms) => {\n let id = null;\n return (...args) => {\n if (id) return;\n fn(...args);\n id = setTimeout(() => {\n clearTimeout(id);\n id = null;\n }, ms);\n };\n};\n\nexport const addBitDepthPoints = (value, step = 3) => {\n //\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043B\u0438 value \u0442\u043E\u0447\u043A\u0443\n const isFraction = value?.includes(\".\");\n\n //\u0432\u0437\u044F\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043E \u0442\u043E\u0447\u043A\u0438\n const valueBeforeDot = isFraction\n ? value?.slice(0, value?.indexOf(\".\"))\n : value;\n\n //\u0440\u0430\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0437\u0430\u043F\u044F\u0442\u044B\u0445 \u043F\u043E\u0441\u043B\u0435 \u043A\u0430\u0436\u0434\u043E\u0439 3\u0439 \u0446\u0438\u0444\u0440\u044B \u0441 \u043A\u043E\u043D\u0446\u0430\n const intPart = valueBeforeDot\n .split(\"\")\n .reverse()\n .reduce(\n (acc, item, idx) =>\n idx % step === 0 && idx !== 0 ? [...acc, \",\", item] : [...acc, item],\n [],\n )\n .reverse()\n .join(\"\");\n\n return isFraction ? intPart + value?.slice(value?.indexOf(\".\")) : intPart;\n};\n\nexport const changeMeta = (key, items = []) => {\n const defaultMeta = items.find((i) => i.key === \"default\");\n\n if (key) {\n const item = items.find((i) => i.key === key);\n document.title = item?.title ?? defaultMeta?.title;\n document\n .querySelector('meta[name=\"description\"]')\n .setAttribute(\"content\", item?.description ?? defaultMeta?.description);\n }\n};\n\nexport const firstLetterCapital = (str) =>\n typeof str === \"string\"\n ? `${str.charAt(0).toUpperCase()}${str.slice(1)}`\n : str;\nexport const capitalized = firstLetterCapital;\n\nexport const checkedRef = (ref) =>\n ref ? (typeof ref === \"function\" ? (node) => ref(node) : ref) : null;\n\nexport function downloadEmulation(data, filename, type = \"image/*\") {\n const file = new Blob([data], { type });\n if (window.navigator.msSaveOrOpenBlob)\n // IE10+\n window.navigator.msSaveOrOpenBlob(file, filename);\n else {\n // Others\n const a = document.createElement(\"a\"),\n url = URL.createObjectURL(file);\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n setTimeout(() => {\n document.body.removeChild(a);\n window.URL.revokeObjectURL(url);\n }, 0);\n }\n}\n\nexport const downloadFile = async ({ url, name, type = null }) => {\n const response = await fetch(url).then(async (res) => ({\n data: await res.blob(),\n type: type ?? res.headers.get(\"content-type\"),\n }));\n downloadEmulation(response.data, name, response.type);\n};\n\nexport const compare = (first, second, keys = []) => {\n //? \u0415\u0441\u043B\u0438 \u0442\u0438\u043F\u044B \u041D\u0415 \u0440\u0430\u0432\u043D\u044B - \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0430\u043F\u0440\u0438\u043E\u0440\u0438\n if (typeof first !== typeof second) return false;\n //? \u0415\u0441\u043B\u0438 \u043E\u0442\u0432\u0435\u0442\u044B \u043D\u0430 \u0432\u043E\u043F\u0440\u043E\u0441 \"\u043C\u0430\u0441\u0441\u0438\u0432 \u043B\u0438?\" \u043D\u0435 \u0440\u0430\u0432\u043D\u044B, \u0442\u043E \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0438 \u0442\u0438\u043F\u044B, \u0437\u043D\u0430\u0447\u0438\u0442 \u0442\u043E\u0436\u0435 \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0430\u043F\u0440\u0438\u043E\u0440\u0438\n if (Array.isArray(first) !== Array.isArray(second)) return false;\n //? \u0415\u0441\u043B\u0438 \u043F\u0440\u043E\u0448\u043B\u0438 if-\u043A\u0443 - \u0442\u0438\u043F\u044B \u0443\u0441\u043B\u043E\u0432\u043D\u043E \u0440\u0430\u0432\u043D\u044B, \u043C\u043E\u0436\u0435\u043C \u043E\u0446\u0435\u043D\u0438\u0432\u0430\u0442\u044C \u0442\u0438\u043F \u043B\u0438\u0448\u044C \u043E\u0434\u043D\u043E\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430, \u044D\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u0441\u043F\u0440\u0430\u0432\u0435\u0434\u043B\u0438\u0432\u043E \u0438 \u0434\u043B\u044F \u0432\u0442\u043E\u0440\u043E\u0433\u043E\n\n //? \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B - \u043F\u0440\u043E\u0441\u0442\u043E \u0441\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u043C. \u041A\u0435\u0439\u0441 \u0441 null \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D \u0442\u0443\u0442.\n if (!(first instanceof Object)) return first === second;\n\n //? \u0415\u0441\u043B\u0438 \u041D\u0415 \u043F\u0440\u0438\u043C\u0435\u0442\u0438\u0432\u044B - \u043D\u0435 \u0432\u0430\u0436\u043D\u043E \u043C\u0430\u0441\u0441\u0438\u0432 \u0438\u043B\u0438 \u043D\u0435\u0442, \u043C\u0435\u0442\u043E\u0434\u044B \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0434\u043B\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0442\u043E\u0436\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\n\n const getComparationStructure = (data) => {\n if (typeof data === 'function') return data.toString();\n if (!(data instanceof Object)) return data;\n\n return Object.entries(data)\n .sort((a, b) => (a[0]).localeCompare(b[0]))\n .map(([key, value]) => ([key, getComparationStructure(data[key])]));\n };\n\n //? \u041F\u043E\u043B\u0443\u0447\u0430\u0435\u043C \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0434\u043B\u044F \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044F (\u0441 \u0443\u0447\u0435\u0442\u043E\u043C \u0433\u043B\u0443\u0431\u0438\u043D\u044B) - \u043C\u0430\u0441\u0441\u0438\u0432\u044B \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u0432, \u0441\u043E\u0440\u0442\u0438\u0440\u0443\u0435\u043C \u043F\u043E \u043A\u043B\u044E\u0447\u0430\u043C,\n const structureForComparingOfFirst = getComparationStructure(first);\n const structureForComparingOfSecond = getComparationStructure(second);\n\n return (JSON.stringify(structureForComparingOfFirst) === JSON.stringify(structureForComparingOfSecond));\n};\n\n// Set Carret to the End of Input\nexport const setCarretToEnd = (input) => {\n setTimeout(() => {\n const tmp = input.value;\n input.value = \"\";\n input.value = tmp;\n }, 10);\n};\n\nexport const compareAlphabetical = (a, b, key = \"label\") => {\n let item1 = a?.[key];\n let item2 = b?.[key];\n\n if (typeof item1 !== \"string\" || typeof item2 !== \"string\") return 0;\n\n item1 = item1?.toLowerCase();\n item2 = item2?.toLowerCase();\n\n if (item1 < item2) {\n return -1;\n }\n if (item1 > item2) {\n return 1;\n }\n return 0;\n};\n\nexport const getBase64 = (file) => {\n if (file) {\n return new Promise(function (resolve, reject) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(\"Error: \", error);\n });\n }\n};\n\nexport const renderFileSize = (bytes, decimals = 2) => {\n if (!Number(bytes)) return \"0 Bytes\";\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n};\n\nexport const getUniqueFileExtensions = (extListString) => {\n // Split the extensions list into an array\n const extArray = extListString\n ?.split(\",\")\n .map((ext) => ext.trim().toUpperCase());\n\n // Remove duplicates using a Set\n const uniqueExts = [...new Set(extArray)];\n\n // Join the unique extensions into a string\n return uniqueExts.join(\", \");\n};\n\nexport const getOS = () => {\n let userAgent = window.navigator.userAgent,\n platform =\n window.navigator?.userAgentData?.platform || window.navigator.platform,\n macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"],\n windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"],\n iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"],\n os = OS.Unknown;\n\n if (macosPlatforms.indexOf(platform) !== -1) {\n os = OS.MacOS;\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n os = OS.iOS;\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n os = OS.Windows;\n } else if (/Android/.test(userAgent)) {\n os = OS.Android;\n } else if (/Linux/.test(platform)) {\n os = OS.Linux;\n }\n\n return os;\n};\n\n\nString.prototype.longerThan = function (compareWith) {\n return this?.length > compareWith?.length;\n};\nString.prototype.lastIndexEqualsTo = function (index) {\n return this?.length - 1 === index;\n};\n\nexport const getCorrectTestId = ({ testId = \"\", withTier = true }) =>\n testId && testId !== undefined ? `${withTier ? \"-\" : \"\"}${testId}` : \"\";\n\n\n", "import { getIsOnlyAnObject } from \"./utils\";\n\n//? The first word \"format\" in the function name means a logic\n//? in which the function transforms the incoming value in any case.\n\n//? The first word \"transform\" in the function name means a logic\n//? in which the function converts the whole value, but this is not suitable for sequential input\n\n//? The first word \"filter\" in the function name means a logic\n//? in which the function works as a changer for sequential input\n\n// ****************************\n// Base utils\n// ****************************\n\nexport const getSafelyValue = (value) =>\n value !== undefined && value !== null ? value?.toString?.() || \"\" : \"\";\n\n// \u0431\u0430\u0437\u043E\u0432\u0430\u044F \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\nexport const intlNumbersFormatter = (inputValue, settings = {}) => {\n const safelyInputValue = getSafelyValue(inputValue);\n const previousValue = safelyInputValue.slice(0, -1);\n const lastSym = safelyInputValue.slice(-1);\n const value = lastSym === \".\" ? previousValue : safelyInputValue;\n\n if (Number.isNaN(Number(value)) || !getSafelyValue(value)) return \"\";\n\n const {\n // \u043B\u043E\u043A\u0430\u043B\u044C, \u0434\u0430\u0436\u0435 \u0440\u0435\u0433\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u0430\u044F, \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0437\u043D\u0430\u043A\u043E\u0432 \u0438 \u0444\u043E\u0440\u043C\u0430\u0442\u0430.\n locale = \"en-US\",\n // percent || currency(default case) || decimal(\u043F\u0440\u043E\u0441\u0442\u043E \u0447\u0438\u0441\u043B\u043E) \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0422\u0418\u041F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438.\n withSymbol,\n //\u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0430 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438 \u043F\u043E\u0440\u0430\u0437\u0440\u044F\u0434\u043D\u043E.\n useGrouping = true,\n //!!\u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 withSymbol: 'currency' !! \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0442\u043E, \u043A\u0430\u043A \u0438\u043C\u0435\u043D\u043D\u043E \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0433\u043B\u044F\u0434\u0435\u0442 \u0444\u043E\u0440\u043C\u0430\u0442 \u0432\u0430\u043B\u044E\u0442\u044B.\n currency = {},\n //\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0437\u043D\u0430\u043A\u043E\u0432 \u043F\u043E\u0441\u043B\u0435 \u0442\u043E\u0447\u043A\u0438, \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043B\u0438 \u043E\u043D\u0438 \u0431\u0443\u0434\u0443\u0442.\n // !!\u0435\u0441\u043B\u0438 \u043F\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C isAlwaysRender: true, \u043D\u043E \u043D\u0435 \u0434\u0430\u0442\u044C \u0446\u0435\u043D\u0442\u043E\u0432, \u0442\u043E \u0431\u0443\u0434\u0435\u0442 100.00\n fractionDigits = {},\n } = settings;\n\n const { currencyType = \"USD\", currencyDisplay: inputCurrencyDisplay } =\n currency;\n\n let currencyDisplay;\n switch (inputCurrencyDisplay) {\n case \"name\":\n currencyDisplay = \"name\";\n break;\n case \"code\":\n currencyDisplay = \"code\";\n break;\n case \"narrowSymbol\":\n currencyDisplay = \"narrowSymbol\";\n break;\n default:\n currencyDisplay = \"symbol\";\n }\n\n let numberStyle;\n switch (withSymbol) {\n case \"percent\":\n numberStyle = \"percent\";\n break;\n case \"currency\":\n numberStyle = \"currency\";\n break;\n default:\n numberStyle = \"decimal\";\n break;\n }\n\n const {\n quantity,\n isRenderAlways = false,\n minimumFractionDigits: inputMinimumFractionDigits,\n maximumFractionDigits: inputMaximumFractionDigits,\n conditionallyMinimumFractionDigits,\n } = fractionDigits;\n\n const dotIndex = safelyInputValue?.indexOf(\".\");\n const afterDot = dotIndex !== -1 ? safelyInputValue.slice(dotIndex + 1) : \"\";\n const minimumFractionDigits = (() => {\n //? \u0411\u0435\u0437\u0443\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E. \u0412\u0441\u0435\u0433\u0434\u0430 \u043E\u0442\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 \u0434\u0440\u043E\u0431\u043D\u0443\u044E \u0447\u0430\u0441\u0442\u044C, \u0432 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0443\u043A\u0430\u0437\u0430\u043D\u043E\n if (typeof inputMinimumFractionDigits === \"number\")\n return inputMinimumFractionDigits;\n //? \u0423\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E. \u0415\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u0434\u0440\u043E\u0431\u043D\u0430\u044F \u0447\u0430\u0441\u0442\u044C, \u0442\u043E \u043E\u0442\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0443\u043A\u0430\u0437\u0430\u043D\u043E\n if (typeof conditionallyMinimumFractionDigits === \"number\") {\n return afterDot && lastSym !== \".\"\n ? conditionallyMinimumFractionDigits\n : 0;\n }\n //? \u0414\u0435\u0444\u043E\u043B\u0442\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E. \u0415\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u0434\u0440\u043E\u0431\u043D\u0430\u044F \u0447\u0430\u0441\u0442\u044C, \u0442\u043E \u043E\u0442\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u0442\u043E\u043B\u044C\u043A\u043E, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0435\u0441\u0442\u044C\n //? \u0424\u043B\u0430\u0433 isRenderAlways \u043F\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u0435\u0444\u043E\u043B\u0442\u043D\u044B\u0439 \u043A\u0435\u0439\u0441 \u0432 \u0431\u0435\u0437\u0443\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\n return afterDot && lastSym !== \".\"\n ? safelyInputValue.slice(dotIndex).length - 1\n : isRenderAlways\n ? quantity\n : 0;\n })();\n\n const priceSettings = {\n useGrouping, //\u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0430 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432\n style: numberStyle, //\u0442\u0438\u043F \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F (\u0432\u0430\u043B\u044E\u0442\u0430 \u0438\u043B\u0438 \u0447\u0438\u0441\u043B\u043E). decimal - \u0431\u0435\u0437 \u0437\u043D\u0430\u043A\u0430 \u0432\u0430\u043B\u044E\u0442\u044B\n currency: currencyType, //\u0432\u0430\u043B\u044E\u0442\u0430\n currencyDisplay, //\u0432\u0430\u043B\u044E\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u0430\n //\u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E \u043D\u0435 \u043D\u0430\u0434\u043E \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0446\u0435\u043D\u0442\u044B, \u0435\u0441\u043B\u0438 \u0438\u0445 \u043D\u0435\u0442, \u0438\u043D\u0430\u0447\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 .00\n minimumFractionDigits,\n //! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n //! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 (inputMaximumFractionDigits ?? quantity) - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\n //\u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C 2 \u0446\u0438\u0444\u0440\u044B \u043F\u043E\u0441\u043B\u0435 \u0437\u0430\u043F\u044F\u0442\u043E\u0439, \u0435\u0441\u043B\u0438 \u0446\u0435\u043D\u0442\u044B \u0432\u0441\u0451 \u0436\u0435 \u0435\u0441\u0442\u044C\n maximumFractionDigits: inputMaximumFractionDigits ?? quantity,\n };\n\n let output;\n\n try {\n output = new Intl.NumberFormat(locale, priceSettings).format(value);\n } catch (e) {\n output = value;\n // eslint-disable-next-line no-console\n console.warn(\"Intl.NumberFormat error\", e);\n }\n return lastSym === \".\" ? output + lastSym : output;\n};\n\n// ****************************\n// format\n// ****************************\n\nexport const formatOnlyNumbers = (value) =>\n getSafelyValue(value).replace(/\\D/g, \"\");\nexport const formatToRemoveComa = (value) =>\n getSafelyValue(value).replace(/,/g, \"\");\nexport const formatToAddBitDepthPoints = (value, settings) =>\n intlNumbersFormatter(getSafelyValue(value), {\n fractionDigits: {\n quantity: settings?.type === \"int\" ? 0 : settings?.decimalPlaces,\n },\n });\n\n//! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n//! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 quantity - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\nexport const formatToPriceWithUSD = (value) => {\n if (isNaN(Number(value))) return value;\n return intlNumbersFormatter(getSafelyValue(value), {\n withSymbol: \"currency\",\n currency: { currencyType: \"USD\" },\n fractionDigits: { quantity: 2, conditionallyMinimumFractionDigits: 2 },\n });\n};\n\n//! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n//! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 quantity - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\n\n// ToDo - symbolPosition \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435 \u0440\u0435\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043E\nexport const formatToPriceWithCurrency = (\n value,\n currencyCode,\n symbolPosition = \"before\",\n) => {\n if (isNaN(Number(value))) return value;\n return intlNumbersFormatter(getSafelyValue(value), {\n withSymbol: \"currency\",\n currency: { currencyType: currencyCode },\n fractionDigits: { quantity: 2, conditionallyMinimumFractionDigits: 2 },\n });\n};\n\n//? \u0414\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 \u0432 \u043A\u043E\u043D\u0435\u0446 \u0437\u043D\u0430\u043A %. \u0420\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043A\u0430\u043A \u0441 \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u043C\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F\u043C\u0438, \u0442\u0430\u043A \u0438 \u0441 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0430\u043C\u0438.\n\n//? value \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043B\u044E\u0431\u043E\u0435, \u043D\u043E \u043E\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044F \u0447\u0442\u043E \u0431\u0443\u0434\u0435\u0442\n//? - \u0447\u0438\u0441\u043B\u043E\u043C\n//? - \u0441\u0442\u0440\u043E\u043A\u043E\u0439 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\"\n//? - \u0441\u0442\u0440\u043E\u043A\u043E\u0439 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" (\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435_\u043F\u0440\u043E\u0431\u0435\u043B_\u0442\u0438\u0440\u0435_\u043F\u0440\u043E\u0431\u0435\u043B_\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435)\n//? - \u043E\u0431\u044A\u0435\u043A\u0442 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 { from: \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435, to: \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 }\n\n//? \u041F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u043E \u043A \u0447\u0438\u0441\u043B\u0443 \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440\u043C + (\u043F\u0440\u0438\u043C\u0435\u0440: +\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442\u0441\u044F \u043A \u0447\u0438\u0441\u043B\u0443).\n//? \u0415\u0441\u043B\u0438 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u043E, \u0442\u043E \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" \u0432\u0435\u0440\u043D\u0435\u0442\u0441\u044F \u043A\u0430\u043A \u0435\u0441\u0442\u044C, \u043A \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0443 \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u0441\u044F %\n\n//? \u0415\u0441\u043B\u0438 \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" \u043F\u0443\u0441\u0442\u043E\u0435 (getSafelyValue(\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435) \u0432\u0435\u0440\u043D\u0435\u0442 \u043F\u0443\u0441\u0442\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443),\n//? \u0442\u043E \u044D\u0442\u043E \u0432\u043E\u0441\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u043A\u0430\u043A 0, \u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442\u0441\u044F \u043A 0.00%\n\n//? \u041E\u0434\u0438\u043D\u043E\u043A\u043E\u0432\u043E \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043A\u0430\u043A \u0434\u043B\u044F \".\", \u0442\u0430\u043A \u0438 \",\" \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044F \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432\n\n//! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n//! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 decimalPlaces - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\n\nexport const formatAsPercentage = (value, settings) => {\n const {\n isCommonPercentageSymbol = true,\n decimalPlaces = 2,\n beforeValueSymbol = \"\",\n afterValueSymbol = \"\",\n isGlueSameRangesTogether = false,\n\n // ? \u0422\u0443\u0442 \u0443\u0434\u043E\u0431\u043D\u044B\u0439 \u0444-\u043B, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0438\u043D\u043E\u0439 \u0440\u0430\u0437 \u0443\u0434\u043E\u0431\u043D\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u043E\u0431\u044B\u0447\u043D\u044B\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u0430\u043D (\u041D\u0415 \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u044B).\n // ? \u0414\u043E\u0431\u0430\u0432\u0438\u043B \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u0432\u044B\u043F\u0438\u043B\u0438\u0432\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u0435\u043A \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u043E\u0432.\n // todo(VL) - \u0432\u043E\u043E\u0431\u0449\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u043E \u0437\u0430\u0440\u0435\u043D\u0435\u0439\u043C\u0438\u0442\u044C (formatAsDiapason), \u0430 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u043E\u0432 \u0441\u0434\u0435\u043B\u0430\u0442\u044C \u043A\u0430\u043A \u043E\u043F\u0446\u0438\u044E,\n // todo(VL) - \u043D\u043E \u043A\u0430\u043A \u043E\u0431\u044B\u0447\u043D\u043E \u043D\u0435\u0442 \u0432\u0440\u0435\u043C\u0435\u043D\u0438, \u043D\u0443\u0436\u043D\u043E \u0431\u0443\u0434\u0435\u0442 \u043F\u0435\u0440\u0435\u0447\u0435\u043A\u0430\u0442\u044C \u043F\u043E \u0432\u0441\u0435\u043C \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u043C \u0433\u0434\u0435 \u0442\u044F\u043D\u0435\u0442\u0441\u044F \u0441\u043E \u0441\u0442\u0430\u0440\u044B\u043C \u043D\u0435\u0439\u043C\u0438\u043D\u0433\u043E\u043C\n isUseAsSimpleDiapason = false,\n } = getIsOnlyAnObject(settings) ? settings : {};\n let safelyInputValue;\n\n const checkValue = (value) => getSafelyValue(value) || \"0\";\n\n const transform = (valueAsSting) => {\n const processedValue = valueAsSting.replace(/,/g, \".\");\n if (Number.isNaN(Number(processedValue))) return processedValue;\n return `${intlNumbersFormatter(getSafelyValue(Number(processedValue)), {\n fractionDigits: {\n quantity: decimalPlaces,\n minimumFractionDigits: decimalPlaces,\n },\n })}`;\n };\n\n if (getIsOnlyAnObject(value)) {\n safelyInputValue = {\n from: checkValue(value.from),\n to: checkValue(value.to),\n };\n } else {\n safelyInputValue = checkValue(value);\n\n if (safelyInputValue.includes(\" - \")) {\n const valuesArr = safelyInputValue\n .split(\" - \")\n .map((partOfValue) => partOfValue.trim());\n safelyInputValue = {\n from: checkValue(valuesArr[0]),\n to: checkValue(valuesArr[1]),\n };\n } else {\n // \u0412\u0430\u0440\u0438\u0430\u043D\u0442 \u043A\u043E\u0433\u0434\u0430 \u0432\u0435\u043B\u044C\u044E \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043E \u0441\u0442\u0440\u043E\u043A\u043E\u0439 (\u041D\u0415 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C) \u0438 \u043E\u043D\u043E \u043D\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0435\u043F\u0430\u0440\u0430\u0442\u043E\u0440\u0430 \" - \"\n // - \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u0435 \u0432\u0435\u043B\u044C\u044E\n // - \u043D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\n return `${beforeValueSymbol}${transform(safelyInputValue)}${afterValueSymbol}${isUseAsSimpleDiapason ? '' : '%'}`;\n }\n }\n\n if (safelyInputValue.from === safelyInputValue.to && !!isGlueSameRangesTogether) {\n return `${beforeValueSymbol}${transform(safelyInputValue.from)}${afterValueSymbol}${isUseAsSimpleDiapason ? '' : '%'}`;\n }\n\n if (isCommonPercentageSymbol)\n return `${beforeValueSymbol}${transform(safelyInputValue.from)} - ${transform(\n safelyInputValue.to,\n )}${afterValueSymbol}${isUseAsSimpleDiapason ? '' : '%'}`;\n else\n return `${beforeValueSymbol}${transform(safelyInputValue.from)}${isUseAsSimpleDiapason ? '' : '%'} - ${transform(\n safelyInputValue.to,\n )}${isUseAsSimpleDiapason ? '' : '%'}${afterValueSymbol}`;\n};\n\n// eslint-disable-next-line no-control-regex\nexport const formatToOnlyASCIICodeText = (text) =>\n getSafelyValue(text).replace(/[^\\x00-\\x7F]+/g, \"\");\n\n// eslint-disable-next-line default-param-last\nexport const formatNumberValueToMask = (inputValue, settings) => {\n const safelyInputValue = getSafelyValue(inputValue);\n\n // default valueSymbol === 'n', default mask === 'nnn-nnn-nnnn'\n const {\n mask = \"XXX-XXX-XXXX\",\n valueSymbol = \"X\",\n isReturnAdvanced = false,\n } = settings || {};\n const processing = mask.split(\"\").reduce(\n (acc, item) => {\n if (acc.value.length) ++acc.cursorPosition;\n acc.newValue.push(\n item === valueSymbol && acc.value.length ? acc.value.shift() : item,\n );\n return acc;\n },\n {\n value: safelyInputValue.split(\"\").filter((sym) => /[0-9]/g.test(sym)),\n newValue: [],\n cursorPosition: 0,\n },\n );\n\n return isReturnAdvanced\n ? {\n value: processing.newValue.join(\"\"),\n cursorPosition: processing.cursorPosition,\n }\n : processing.newValue.join(\"\");\n};\n\nexport const formatToLimitLength = (inputValue, limit) => {\n const value = getSafelyValue(inputValue);\n return limit &&\n typeof limit === \"number\" &&\n !Number.isNaN(limit) &&\n value?.length > limit\n ? value.substr(0, limit)\n : value;\n};\n\nexport const formatToHex = ({ inputValue, withSharp }) => {\n const value = getSafelyValue(inputValue);\n if (withSharp) return `#${value.replace(/[^a-f0-9]/gi, \"\")}`;\n\n return `${value.replace(/[^#a-f0-9]/gi, \"\")}`;\n};\n\nexport function formatToReplaceAllWhiteSpace(str) {\n const value = getSafelyValue(str);\n return value.replace(/\\s+/g, \"\");\n}\n\n// ****************************\n// transform\n// ****************************\n\n// ...\n\n// ****************************\n// filter\n// ****************************\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0432\u044B\u043F\u0438\u043B\u0438\u043B \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0434\u0435\u0444\u043E\u043B\u0442\u043D\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0430 \u0443\u0440\u043E\u0432\u043D\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432, \u0447\u0442\u043E\u0431\u044B \u0441\u0434\u0435\u043B\u0430\u0442\u044C null \u0440\u0430\u0431\u043E\u0447\u0438\u043C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C\n//? decimalPlaces === null \u0442\u0435\u043F\u0435\u0440\u044C \u0442\u043E\u0447\u043D\u043E \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0440\u0435\u0436\u0438\u043C \u0432\u0432\u043E\u0434\u0430 \u0411\u0415\u0417 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u0439 \u0434\u0435\u0441\u044F\u0442\u0438\u0447\u043D\u044B\u0445 \u0437\u043D\u0430\u043A\u043E\u0432\nexport const filterFloat = (inputValue, decimalPlaces) => {\n const replaser = input => ('' + input).replace(/[^\\.\\d]/g, '');\n const value = getSafelyValue(inputValue);\n \n //? safelyDecimalPlaces \u0422\u041E\u0427\u041D\u041E \u043B\u0438\u0431\u043E null, \u043B\u0438\u0431\u043E \u0446\u0435\u043B\u043E\u0435 \u0447\u0438\u0441\u043B\u043E\n const safelyDecimalPlaces = (() => {\n if (decimalPlaces === null) return decimalPlaces;\n\n const DEFAULT_VALUE = 2;\n const isNumber = typeof decimalPlaces === 'number' || (typeof decimalPlaces === 'string' && !Number.isNaN(+decimalPlaces));\n\n //? \u0437\u0430\u0449\u0438\u0442\u0430 \u043E\u0442 \u0434\u0440\u043E\u0431\u043D\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F decimalPlaces\n return isNumber ? Number((+decimalPlaces).toFixed()) : DEFAULT_VALUE;\n })();\n\n // \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043A\u0435\u0439\u0441\u0430 \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0432\u044B\u043C \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u043C \u043D\u0430\u0436\u0430\u0442\u0430 \u0442\u043E\u0447\u043A\u0430\n if (value.length === 1 && (value[0] === '.' || value[0] === ',')) return '0.';\n\n // \u041F\u0440\u0438\u0432\u043E\u0434\u0438\u043C \u0437\u0430\u043F\u044F\u0442\u044B\u0435 \u043A \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u043C\u0443 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044E, \u043D\u043E \u043D\u0435 \u0432\u044B\u043F\u0438\u043B\u0438\u0432\u0430\u0435\u043C\n let output = ('' + value)?.replace(/,/g, '.');\n\n // \u0412\u044B\u043F\u0438\u043B\u0438\u0442\u044C \u043F\u0435\u0440\u0432\u044B\u0439 \u043D\u043E\u043B\u044C, \u0435\u0441\u043B\u0438 \u044D\u0442\u043E \u043D\u0435 \u0434\u0440\u043E\u0431\u044C\n if (value.length > 1 && value[0] === '0' && value[1] !== '.' && value[0] !== ',') output = value.slice(1);\n\n const previousValue = '' + output.slice(0, -1);\n const lastSym = '' + output.slice(-1);\n\n // \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043A\u0435\u0439\u0441\u0430 \u0432\u0442\u043E\u0440\u043E\u0439 \u0442\u043E\u0447\u043A\u0438 \u0432 \u0434\u0440\u043E\u0431\u0438\n if (lastSym === '.' && previousValue.includes('.')) output = previousValue;\n\n // if (localStorage.getItem('useDeb')) debugger;\n\n // \u041B\u043E\u0433\u0438\u043A\u0430 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u044F \u043F\u043E decimalPlaces\n if (typeof safelyDecimalPlaces === 'number') {\n if (!safelyDecimalPlaces && lastSym === '.') return replaser(previousValue);\n if (previousValue.includes('.') && (previousValue.indexOf('.') + 1 + safelyDecimalPlaces === previousValue?.length)) {\n return replaser(previousValue);\n }\n }\n\n return replaser(output);\n};\n\nexport const filterNumeric = (value, settings) => {\n value = getSafelyValue(value)?.replace(/,/g, \"\");\n const { type = \"float\", decimalPlaces } = settings || {};\n\n const executor = type === \"float\" ? filterFloat : formatOnlyNumbers;\n return executor(getSafelyValue(value), decimalPlaces);\n};\n\nexport const formatToHideValuePartially = (value, settings) => {\n const {\n showSymbolsCount = 4,\n isVisibleFromFront = false,\n isCutOutWhiteSpaces = true,\n } = settings || {};\n const safelyValue = getSafelyValue(value);\n\n const newValue = isCutOutWhiteSpaces\n ? safelyValue.replace(/\\s/g, \"\")\n : safelyValue;\n if (newValue.length <= showSymbolsCount) return newValue;\n\n const hide = (val) =>\n val\n .split(\"\")\n .map(() => \"*\")\n .join(\"\");\n const visiblePart = isVisibleFromFront\n ? newValue.slice(0, showSymbolsCount)\n : newValue.slice(-1 * showSymbolsCount);\n const hiddenPart = isVisibleFromFront\n ? newValue.slice(showSymbolsCount)\n : newValue.slice(0, -1 * showSymbolsCount);\n\n return isVisibleFromFront\n ? `${visiblePart}${hide(hiddenPart)}`\n : `${hide(hiddenPart)}${visiblePart}`;\n};\n", "import type { HTMLInputTypeAttribute, ReactElement } from 'react';\nimport type { InputProps } from './types';\nimport cn from 'classnames';\nimport React, { useEffect, useMemo, useRef } from 'react';\nimport { getSafelyValue } from '../../../Functions/fieldValueFormatters';\nimport Spinner from '../../Layout/Spinner/Spinner';\n\nimport DynamicIcon from '../../UI/DynamicIcon/DynamicIcon';\nimport { useErrorBlink, useInputFocus, useInputHover, useInputValueProcessing, useKeyboardHandling } from './hooks';\nimport './Input.scss';\n\nfunction defaultCallback(): void {}\n\nfunction Input({ ref, blurTrim, autocomplete = 'off', isSelect, onChange = defaultCallback, onBlur = defaultCallback, onFocus = defaultCallback, onKeyUp = defaultCallback, onKeyDown = defaultCallback, isNotBlinkErrors, isPriceInput, onlyNumbers, disabled, withDelete, value, placeholder, className, type = 'text', mask, maskChar, formatChars, error, icon, iconDynamicKey, iconDynamicProps = {}, symbolsLimit, blinkTime, isFocusDefault = false, isNotValidateASCII = false, isNumericMobileKeyboard = false, isCropFirstNool = false, testId = 'input', action, isUseAutoSelect = true, isReadOnly = false, isLoading = false, name, fieldKey, id, attributesOfNativeInput = {} }: InputProps & { ref?: React.RefObject<Omit<HTMLInputElement, 'value'> | null> }): ReactElement {\n const DynamicIconComponent\n = iconDynamicKey && !icon\n ? (\n <DynamicIcon iconKey={iconDynamicKey} {...iconDynamicProps} />\n )\n : null;\n\n const inputInnerRef = useRef(null);\n const inputRef = useMemo((): React.RefObject<HTMLInputElement> => (ref || inputInnerRef) as React.RefObject<HTMLInputElement>, [ref]);\n\n const isUseErrorsBlink = !isNotBlinkErrors && !mask;\n const inputName = name || fieldKey || id;\n\n const {\n isFocused,\n isEditing,\n setIsFocused,\n setEditing,\n handleFocus,\n handleToggleEdit,\n } = useInputFocus({\n isSelect,\n isFocusDefault,\n onFocus,\n });\n\n const {\n isToHighlightError,\n setPreviousValue,\n checkValueChange,\n } = useErrorBlink({\n isUseErrorsBlink,\n blinkTime,\n });\n\n const {\n keyDownData,\n handleKeyDown,\n handleKeyUp,\n } = useKeyboardHandling({\n onKeyDown,\n onKeyUp,\n checkValueChange,\n setPreviousValue,\n value,\n });\n\n const {\n formatedValue,\n handleChange,\n handleBlur,\n correctMinMax: _correctMinMax,\n } = useInputValueProcessing({\n onlyNumbers,\n isPriceInput,\n value,\n isNotValidateASCII,\n symbolsLimit,\n isCropFirstNool,\n type,\n keyDownData,\n onChange,\n blurTrim,\n });\n\n const {\n onInputHover,\n handleMouseEnter,\n handleMouseLeave,\n } = useInputHover();\n\n // Handlers with side effects\n const handleToggleWithClear = (): void => {\n handleToggleEdit();\n onChange('');\n };\n\n const handleBlurWithEffects = (e: React.FocusEvent<HTMLInputElement, Element>): void => {\n handleBlur(e, onBlur);\n setIsFocused(false);\n setEditing(false);\n };\n\n // Component effects\n useEffect(() => {\n if (isEditing) inputRef?.current?.focus?.();\n }, [isEditing, isFocused]);\n\n const getInputType = (): HTMLInputTypeAttribute => {\n if (isPriceInput || type === 'pseudoPassword') return 'text';\n return type;\n };\n\n const uniProps = {\n name: inputName,\n className: cn('input', className, {\n 'input--with-icon': icon,\n 'input--with-delete': withDelete,\n }),\n placeholder,\n value: formatedValue,\n inputMode: isNumericMobileKeyboard ? 'decimal' as const : 'text' as const,\n disabled,\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlurWithEffects,\n onKeyUp: handleKeyUp,\n onKeyDown: handleKeyDown,\n ...(maskChar ? { maskChar } : {}),\n ...(formatChars ? { formatChars } : {}),\n };\n\n return (\n <div\n data-testid={testId}\n className={cn(\n `input__wrap`,\n { [`input__wrap_focus`]: isFocused },\n { [`input__wrap_error`]: error || isToHighlightError },\n { [`input__wrap--disabled`]: disabled || isLoading },\n )}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <input\n readOnly={isReadOnly}\n {...uniProps}\n ref={inputRef}\n type={getInputType()}\n autoComplete={type === 'pseudoPassword' ? 'off' : autocomplete}\n {...attributesOfNativeInput}\n onFocus={(...params) => {\n attributesOfNativeInput?.onFocus?.(...params);\n if (isUseAutoSelect) inputRef.current?.select();\n if (uniProps.onFocus) uniProps.onFocus(...params);\n }}\n onBlur={(...params) => {\n attributesOfNativeInput?.onBlur?.(...params);\n if (uniProps.onBlur) uniProps.onBlur(...params);\n }}\n />\n {DynamicIconComponent ?? icon}\n {action}\n {withDelete && onInputHover && (\n <span\n className={cn(`input__close`, { hidden: !getSafelyValue(value) })}\n onClick={handleToggleWithClear}\n />\n )}\n {isLoading && <Spinner size=\"small\" />}\n </div>\n );\n}\n\nexport default Input;\n", "import type { ISpinnerProps } from './Spinner.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport './Spinner.scss';\n\nconst CN = 'loader-box';\n\nconst Spinner: React.FC<ISpinnerProps> = ({ size = null, className, testId = CN }) => {\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n data-testid={testId}\n className={cn(\n CN,\n {\n j5: size !== 'small',\n j8: size === 'small',\n },\n className,\n )}\n >\n <div className={cn('lds-ring', { [`lds-ring_${size}`]: size })}>\n <div />\n <div />\n <div />\n <div />\n </div>\n </div>\n );\n};\n\nexport default Spinner;\n", "import type * as FeatherIcons from 'react-feather';\n\nimport type { IDynamicIconProps } from './DynamicIcon.interface';\n\nimport React, { useEffect, useState } from 'react';\n\ntype FeatherIconKey = keyof typeof FeatherIcons;\n\nconst DynamicIcon: React.FC<IDynamicIconProps> = ({ iconKey, ...props }) => {\n const [Icon, setIcon] = useState<React.ComponentType<React.SVGProps<SVGSVGElement>> | null>(null);\n\n useEffect(() => {\n const fetchData = async (): Promise<void> => {\n const FeatherIcons = await import('react-feather');\n const iconComponent = FeatherIcons[iconKey as FeatherIconKey];\n setIcon(() => iconComponent);\n };\n\n fetchData();\n }, [iconKey]);\n\n return Icon ? <Icon {...props} /> : null;\n};\n\nexport default DynamicIcon;\n", "import type { KeyboardEvent } from 'react';\nimport type { InputProps } from '../types';\nimport { useEffect, useState } from 'react';\nimport { KEYBOARD_SERVICE_KEYS } from '../../../../Constants/index.constants';\n\nconst DEFAULT_BLINK_TIME = 100;\n\ninterface UseErrorBlinkParams extends Pick<InputProps, 'blinkTime'> {\n isUseErrorsBlink: boolean;\n}\n\nexport function useErrorBlink({\n isUseErrorsBlink,\n blinkTime = DEFAULT_BLINK_TIME,\n}: UseErrorBlinkParams):\n {\n isToHighlightError: boolean;\n setPreviousValue: (value: string | number | undefined) => void;\n checkValueChange: (e: KeyboardEvent<HTMLInputElement>, value: string | number | undefined) => void;\n } {\n const [isAttemptToChange, setIsAttemptToChange] = useState<boolean>(false);\n const [isToHighlightError, setIsToHighlightError] = useState<boolean>(false);\n const [prevValue, setPreviousValue] = useState<string | number | undefined>('');\n\n useEffect(() => {\n if (!isAttemptToChange) return;\n\n let timerId: NodeJS.Timeout | null = null;\n\n setIsToHighlightError(true);\n\n timerId = setTimeout(() => {\n setIsToHighlightError(false);\n setIsAttemptToChange(false);\n }, blinkTime);\n\n return () => {\n if (timerId) {\n clearTimeout(timerId);\n }\n };\n }, [isAttemptToChange, blinkTime]);\n\n const checkValueChange = (e: KeyboardEvent<HTMLInputElement>, value: string | number | undefined): void => {\n if (isUseErrorsBlink) {\n const changedValue = `${value ?? ''}`;\n const previousValue = `${prevValue}`;\n\n const short = previousValue.length <= changedValue.length\n ? previousValue\n : changedValue;\n const long = previousValue.length > changedValue.length\n ? previousValue\n : changedValue;\n\n const infoAboutDifferencesSameness = short.split('').reduce(\n (acc, symbol, idx) => {\n if (acc.countOn && symbol === long[idx]) {\n acc.same.push(symbol);\n }\n else {\n acc.countOn = false;\n acc.differences.push([idx, symbol]);\n }\n return acc;\n },\n { same: ([] as string[]), countOn: true, differences: ([] as [number, string][]) },\n );\n\n const samePart = infoAboutDifferencesSameness.same.join('');\n const differencesLength = infoAboutDifferencesSameness.differences.length;\n const currentSet = changedValue?.replace(samePart, '');\n\n if (\n !KEYBOARD_SERVICE_KEYS.includes(e.key)\n && changedValue === previousValue\n ) {\n const newAttemptToChange = !(!differencesLength && e.key === currentSet);\n setIsAttemptToChange(newAttemptToChange);\n }\n }\n };\n\n return {\n isToHighlightError,\n setPreviousValue,\n checkValueChange,\n };\n}\n", "import type { FocusEvent } from 'react';\nimport type { InputProps } from '../types';\nimport { useEffect, useState } from 'react';\n\ninterface UseInputFocusParams extends InputProps {\n isFocusDefault?: boolean;\n onFocus?: (e: FocusEvent<HTMLInputElement, Element>) => void;\n}\n\nexport function useInputFocus({\n isSelect,\n isFocusDefault = false,\n onFocus = () => {},\n}: UseInputFocusParams): {\n isFocused: boolean;\n isEditing: boolean;\n setIsFocused: (isFocused: boolean) => void;\n setEditing: (isEditing: boolean) => void;\n handleFocus: (e: FocusEvent<HTMLInputElement, Element>) => void;\n handleToggleEdit: () => void;\n } {\n const [isFocused, setIsFocused] = useState<boolean>(false);\n const [isEditing, setEditing] = useState<boolean>(false);\n\n useEffect(() => {\n setEditing(isSelect ?? false);\n }, [isSelect]);\n\n useEffect(() => {\n if (typeof isFocusDefault === 'boolean') {\n setIsFocused(isFocusDefault);\n setEditing(isFocusDefault);\n }\n }, [isFocusDefault]);\n\n const handleFocus = (e: FocusEvent<HTMLInputElement, Element>): void => {\n setIsFocused(true);\n onFocus(e);\n };\n\n const handleToggleEdit = (): void => {\n setEditing(!isEditing);\n };\n\n return {\n isFocused,\n isEditing,\n setIsFocused,\n setEditing,\n handleFocus,\n handleToggleEdit,\n };\n}\n", "import { useState } from 'react';\n\nexport function useInputHover(): {\n onInputHover: boolean;\n handleMouseEnter: () => void;\n handleMouseLeave: () => void;\n} {\n const [onInputHover, setOnInputHover] = useState<boolean>(false);\n\n const handleMouseEnter = (): void => setOnInputHover(true);\n const handleMouseLeave = (): void => setOnInputHover(false);\n\n return {\n onInputHover,\n handleMouseEnter,\n handleMouseLeave,\n };\n}\n", "/* eslint-disable react-hooks-extra/no-unnecessary-use-prefix */\nimport type { ChangeEvent, FocusEvent } from 'react';\nimport type {\n InputProps,\n KeyDownData,\n NativeAttributesProps,\n OnlyNumbersOptions,\n ValueFormattingProps,\n ValueHandlers,\n} from '../types';\nimport {\n formatToAddBitDepthPoints as addCommas,\n filterNumeric,\n formatToOnlyASCIICodeText,\n getSafelyValue,\n formatToRemoveComa as removeCommas,\n} from '../../../../Functions/fieldValueFormatters';\nimport { getIsOnlyAnObject } from '../../../../Functions/utils';\n\nconst HIDE_SYMBOL = '\\u2022';\n\ninterface InputValueProcessingParams extends ValueFormattingProps, Pick<InputProps, 'value'>, Pick<NativeAttributesProps, 'type'>, ValueHandlers {\n keyDownData: KeyDownData;\n}\n\nexport function useInputValueProcessing({\n onlyNumbers,\n isPriceInput,\n value,\n isNotValidateASCII = false,\n symbolsLimit,\n isCropFirstNool = false,\n type = 'text',\n keyDownData,\n onChange,\n blurTrim,\n}: InputValueProcessingParams): {\n formatedValue: string;\n handleChange: (e: ChangeEvent<HTMLInputElement> | string) => void;\n handleBlur: (e: FocusEvent<HTMLInputElement, Element>, onBlur?: (e: FocusEvent<HTMLInputElement, Element>) => void) => void;\n correctMinMax: (value: string, correctionType: 'min' | 'max') => string;\n } {\n const { trimStart, trimEnd, characters } = blurTrim || {};\n const isUseBitDepthPoints = Boolean(onlyNumbers) && isPriceInput;\n const isPseudoPasswordMode = type === 'pseudoPassword';\n\n const correctMinMax = (value: string, correctionType: 'min' | 'max'): string => {\n if (!onlyNumbers) return value;\n\n const { min, max, isOnlyPositive, isNoEmptyValues } = getIsOnlyAnObject(\n onlyNumbers,\n )\n ? onlyNumbers as OnlyNumbersOptions\n : {};\n const minimum\n = !Number.isNaN(Number(min))\n && min !== null && min !== undefined\n && (min >= 0 || !isOnlyPositive)\n ? min\n : undefined;\n const maximum\n = !Number.isNaN(Number(max))\n && max !== null && max !== undefined\n && (max >= 0 || !isOnlyPositive)\n ? max\n : undefined;\n\n let minusSymbol: string | null = null;\n let inputValue = getSafelyValue(value);\n\n const checkMin = (): void => {\n if (!inputValue && isNoEmptyValues) {\n inputValue = minimum !== undefined ? minimum : '0';\n }\n else if (\n inputValue\n && !Number.isNaN(Number(minimum))\n && Number(minimum) > Number((minusSymbol ?? '') + inputValue)\n ) {\n inputValue = minimum;\n }\n };\n\n const checkMax = (): void => {\n if (\n !Number.isNaN(Number(maximum))\n && Number(maximum) < Number((minusSymbol ?? '') + inputValue)\n ) {\n inputValue = maximum;\n minusSymbol = null;\n }\n };\n\n if (isUseBitDepthPoints) inputValue = removeCommas(inputValue);\n if (!isOnlyPositive && inputValue[0] === '-') {\n minusSymbol = '-';\n inputValue = inputValue.slice(1);\n }\n\n inputValue = filterNumeric(inputValue, onlyNumbers);\n\n switch (correctionType) {\n case 'min':\n checkMin();\n break;\n case 'max':\n checkMax();\n break;\n default:\n checkMin();\n checkMax();\n break;\n }\n return inputValue;\n };\n\n const processPseudoValue = (newValue: string, oldValue: string): boolean | string => {\n const insertedPart = newValue.replace(new RegExp(HIDE_SYMBOL, 'g'), '');\n\n // ? \u0415\u0441\u043B\u0438 insertedPart.length > 1, \u0442\u043E \u044D\u0442\u043E \u0442\u043E\u0447\u043D\u043E \u043A\u043E\u043F\u0438-\u043F\u0430\u0441\u0442\n // ? \u041F\u043E \u0434\u043E\u0433\u043E\u0432\u043E\u0440\u0435\u043D\u043D\u043E\u0441\u0442\u0438 \u043B\u044E\u0431\u043E\u0439 \u043A\u043E\u043F\u0438\u043F\u0430\u0441\u0442 \u0437\u0430\u043C\u0435\u043D\u044F\u0435\u0442 \u0442\u0435\u043A\u0443\u0449\u0435\u0435 \u0432\u0435\u043B\u044C\u044E\n if (insertedPart.length > 1) return insertedPart;\n\n const isOldValueHasBeenReduced\n = newValue.replace(/^HIDE_SYMBOL/g, '').length\n < oldValue.length;\n const oldValueArr = oldValue.split('');\n\n const getIsInclude = (idx: number): string | boolean => {\n const BACKSPACE_CODE = 8;\n\n if (keyDownData.start === null || keyDownData.end === null) return false;\n // ? \u0415\u0441\u043B\u0438 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u043D\u0435 \u0440\u0430\u0432\u043D\u044B, \u0437\u043D\u0430\u0447\u0438\u0442 \u0431\u044B\u043B\u0430 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0430 \u043E\u0431\u043B\u0430\u0441\u0442\u044C, \u0437\u043D\u0430\u0447\u0438\u0442 \u0431\u0443\u0434\u0435\u043C \u0432\u043E\u0441\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0442\u044C \u043A\u0430\u043A \u043A\u043E\u043F\u0438-\u043F\u0430\u0441\u0442\n if (keyDownData.start !== keyDownData.end) return false;\n\n // ? \u0415\u0441\u043B\u0438 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u0440\u0430\u0432\u043D\u044B \u0438 \u0435\u0441\u0442\u044C \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 - \u043E\u0431\u0440\u0435\u0437\u0430\u0435\u043C \"\u0445\u0432\u043E\u0441\u0442\"\n if (insertedPart) return idx < keyDownData.start;\n\n // ? \u0415\u0441\u043B\u0438 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u0440\u0430\u0432\u043D\u044B \u0438 \u043D\u0435\u0442 \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u043C\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F - \u0437\u043D\u0430\u0447\u0438\u0442 \u0441\u0438\u043C\u0432\u043E\u0432\u043E\u043B \u0443\u0434\u0430\u043B\u0438\u043B\u0438\n return keyDownData.keyCode === BACKSPACE_CODE\n ? idx < keyDownData.start - 1 || idx > keyDownData.end - 1\n : idx < keyDownData.start || idx > keyDownData.end;\n };\n\n if (!insertedPart) {\n return oldValueArr.reduce(\n (acc: string, sym: string, idx: number) => (getIsInclude(idx) ? `${acc}${sym}` : acc),\n '',\n );\n }\n\n const outputStructure = oldValueArr.reduce(\n (acc: { result: string; position: number | null }, sym: string, idx: number) => {\n if (getIsInclude(idx)) acc.result = `${acc.result}${sym}`;\n else if (!acc.position) acc.position = insertedPart ? idx : idx - 1;\n return acc;\n },\n {\n result: '',\n position: !isOldValueHasBeenReduced ? keyDownData.start : null,\n },\n );\n\n return `${outputStructure.result.slice(\n 0,\n outputStructure.position as number,\n )}${insertedPart}${outputStructure.result.slice(outputStructure.position as number)}`;\n };\n\n const handleChange = (e: ChangeEvent<HTMLInputElement> | string): void => {\n const { isOnlyPositive } = getIsOnlyAnObject(onlyNumbers)\n ? onlyNumbers as OnlyNumbersOptions\n : {};\n\n let minusSymbol: string | null = null;\n let inputValue = (typeof e !== 'string' && e.target ? e.target.value : e) as string;\n if (isPseudoPasswordMode && typeof inputValue === 'string') {\n inputValue = (inputValue.includes(HIDE_SYMBOL)\n ? processPseudoValue(inputValue, value as string)\n : inputValue) as string;\n }\n\n // If user typed comma(',') replace it to dot('.') for float value typing\n if (isPriceInput && typeof inputValue === 'string' && inputValue.charAt(inputValue.length - 1) === ',')\n inputValue = inputValue.substring(0, inputValue.length - 1).concat('.');\n\n if (isUseBitDepthPoints) inputValue = removeCommas(inputValue);\n if (onlyNumbers && typeof inputValue === 'string') inputValue = inputValue.replace(/,/g, '.');\n\n if (onlyNumbers && !isOnlyPositive && String(inputValue)[0] === '-' && typeof inputValue === 'string') {\n minusSymbol = '-';\n inputValue = inputValue.slice(1);\n }\n if (!isNotValidateASCII)\n inputValue = formatToOnlyASCIICodeText(inputValue);\n if (symbolsLimit && typeof inputValue === 'string' && inputValue.length > Number(symbolsLimit))\n inputValue = inputValue.substring(0, Number(symbolsLimit));\n if (isCropFirstNool && typeof inputValue === 'string' && inputValue[0] === '0') {\n onChange?.('');\n return;\n }\n else if (onlyNumbers) {\n inputValue = correctMinMax(inputValue, 'max');\n }\n onChange?.(((minusSymbol ?? '') + inputValue).toString());\n };\n\n const handleBlur = (e: FocusEvent<HTMLInputElement, Element>, onBlur?: (e: FocusEvent<HTMLInputElement, Element>) => void): void => {\n const { isOnlyPositive } = getIsOnlyAnObject(onlyNumbers)\n ? onlyNumbers as OnlyNumbersOptions\n : {};\n\n let minusSymbol;\n\n if (value && onlyNumbers && !isOnlyPositive && value[0] === '-') {\n minusSymbol = '-';\n value = value.slice(1);\n }\n\n let inputValue = correctMinMax(getSafelyValue(value), 'min');\n if (trimStart)\n inputValue = inputValue.replace(new RegExp(`^[${characters}]+`), '');\n if (trimEnd)\n inputValue = inputValue.replace(new RegExp(`[${characters}]+$`), '');\n\n if (value !== inputValue) onChange?.(minusSymbol ? (minusSymbol + inputValue).toString() : inputValue);\n\n // \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E setTimeout \u0434\u043B\u044F \u0442\u043E\u0433\u043E \u0447\u0442\u043E\u0431 \u043F\u0440\u043E\u0448\u043B\u0438 \u043F\u0435\u0440\u0435\u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0432\u0435\u043B\u044C\u044E, \u0435\u0441\u043B\u0438 \u043E\u043D\u0438 \u0435\u0441\u0442\u044C,\n // \u0434\u043B\u044F \u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431 \u0432\u0435\u0440\u0445\u043D\u0438\u0439 onBlur \u043F\u0440\u0438 \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0438 \u043A e.target.value \u043F\u043E\u043B\u0443\u0447\u0430\u043B \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u043E\u0435 \u0432\u0435\u043B\u044C\u044E\n if (onBlur) setTimeout(() => onBlur(e), 0);\n };\n\n const formatedValue = (() => {\n let safelyValue = getSafelyValue(value);\n\n const hideSymbols = (): string =>\n safelyValue\n .split('')\n .map(() => HIDE_SYMBOL)\n .join('');\n\n if (isPseudoPasswordMode) return hideSymbols();\n if (typeof onlyNumbers === 'object' && onlyNumbers?.isNoEmptyValues)\n safelyValue = correctMinMax(safelyValue, 'min');\n if (isUseBitDepthPoints)\n safelyValue = addCommas(safelyValue, onlyNumbers);\n return safelyValue;\n })();\n\n return {\n formatedValue,\n handleChange,\n handleBlur,\n correctMinMax,\n };\n}\n", "import type { KeyboardEvent } from 'react';\nimport type { NativeEventHandlers } from '../types';\nimport { useState } from 'react';\n\ninterface KeyboardHandlingParams extends NativeEventHandlers {\n checkValueChange: (e: KeyboardEvent<HTMLInputElement>, value: string | number | undefined) => void;\n setPreviousValue: (value: string | number | undefined) => void;\n value: string | undefined;\n}\n\nexport function useKeyboardHandling({\n onKeyDown,\n onKeyUp,\n checkValueChange,\n setPreviousValue,\n value,\n}: KeyboardHandlingParams): {\n keyDownData: {\n start: number | null;\n end: number | null;\n keyCode: number | string | null;\n };\n handleKeyDown: (e: KeyboardEvent<HTMLInputElement>) => void;\n handleKeyUp: (e: KeyboardEvent<HTMLInputElement>) => void;\n } {\n const [keyDownData, setKeyDownData] = useState<{\n start: number | null;\n end: number | null;\n keyCode: number | string | null;\n }>({\n start: null,\n end: null,\n keyCode: null,\n });\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>): void => {\n const target = e.target as HTMLInputElement;\n setPreviousValue(target.value);\n setKeyDownData({\n start: target.selectionStart,\n end: target.selectionEnd,\n keyCode: e.keyCode,\n });\n onKeyDown?.(e.keyCode, e);\n };\n\n const handleKeyUp = (e: KeyboardEvent<HTMLInputElement>): void => {\n checkValueChange(e, value);\n onKeyUp?.(e.keyCode, e);\n };\n\n return {\n keyDownData,\n handleKeyDown,\n handleKeyUp,\n };\n}\n", "import type { IRadioInputProps } from './RadioInput.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport './RadioInput.scss';\n\nconst RC = 'radio-input';\n\nconst RadioInput: React.FC<IRadioInputProps> = ({\n label,\n id,\n checked,\n name,\n disabled,\n className,\n value,\n testId = 'radio-input',\n onChange,\n attributesOfNativeInput,\n}) => {\n return (\n <label\n data-testid={testId}\n className={cn(RC, className, { [`${RC}_disabled`]: disabled })}\n htmlFor={id}\n >\n <div\n className={cn(`${RC}__input`, {\n [`${RC}__input--checked`]: checked === value,\n })}\n >\n <input\n id={id}\n data-testid={`${testId}-input`}\n type=\"radio\"\n checked={checked === value}\n className={`${RC}__radio`}\n onChange={() => onChange?.(value)}\n name={name}\n disabled={disabled}\n {...attributesOfNativeInput}\n />\n <div className={`${RC}__mark`} />\n </div>\n {label && <div className={`${RC}__label`}>{label}</div>}\n </label>\n );\n};\n\nexport default RadioInput;\n", "import React from \"react\";\n\nimport \"./DropdownLoader.scss\";\n\nconst DropdownLoader = function ({ variant = '' }) {\n return (\n <div className=\"dropdown-loader-box j5\">\n <div\n className={`lds-ring${variant === \"little\" ? \" lds-ring_little\" : \"\"}`}\n >\n <div />\n <div />\n <div />\n <div />\n </div>\n </div>\n );\n};\n\nexport default DropdownLoader;\n", "import { useEffect, useState } from 'react';\n\ninterface UseIsMobileProps {\n isWithoutWidthCheck?: boolean;\n}\n\ninterface UseIsMobileProps {\n isWithoutWidthCheck?: boolean;\n}\n/**\n * Hook to detect if the current device is a mobile device\n * @param props - Configuration options\n * @param props.isWithoutWidthCheck - If true, only checks user agent without width verification\n * @returns Object containing isMobile flag\n */\nfunction useIsMobile({ isWithoutWidthCheck = false }: UseIsMobileProps = {}): { isMobile: boolean, isMobilePortrait: boolean; isMobileLandscape: boolean } {\n const isIPad = (): boolean => {\n const ua = navigator.userAgent || navigator.vendor || (window as any).opera;\n\n // iPadOS 13+ \u0432\u044B\u0434\u0430\u0435\u0442 \u0441\u0435\u0431\u044F \u043A\u0430\u043A Mac, \u043D\u043E \u0441 touch-\u044D\u043A\u0440\u0430\u043D\u043E\u043C\n const isMac = /Macintosh/.test(ua);\n const hasTouch = navigator.maxTouchPoints && navigator.maxTouchPoints > 2;\n\n return isMac && !!hasTouch;\n };\n\n const getIsMobile = (): boolean => {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || isIPad();\n };\n\n const [isMobile, setIsMobile] = useState<boolean>(getIsMobile());\n\n useEffect(() => {\n if (getIsMobile()) {\n setIsMobile(true);\n }\n }, [navigator.userAgent]);\n\n return {\n isMobile: isMobile && (isWithoutWidthCheck || window.screen.width <= 768 || (window.screen.width <= 1024 && window.matchMedia('(orientation: landscape)').matches)),\n isMobilePortrait: isMobile && window.screen.width <= 768 && window.matchMedia('(orientation: portait)').matches,\n isMobileLandscape: isMobile && window.screen.width <= 1024 && window.matchMedia('(orientation: landscape)').matches,\n };\n}\n\nexport default useIsMobile;\n", "import useIsMobile from './useIsMobile';\n\nexport default useIsMobile;\n", "import type { IDropdownOption } from './Dropdown.interface';\nimport { compareAlphabetical } from '../../../Functions/utils';\n\nexport function getTotalOptions(options: IDropdownOption[]): number {\n return options?.reduce((result, item) => {\n if (item?.list || item?.items) {\n result += item?.list?.length || item?.items?.length || 0;\n }\n else {\n ++result;\n }\n\n return result;\n }, 0) ?? 0;\n}\n\nexport function moveOtherToEnd(options: IDropdownOption[]): IDropdownOption[] {\n const otherIndex = options?.findIndex(\n option => option?.value === 'other',\n );\n if (otherIndex > -1) {\n const other = options?.splice(otherIndex, 1);\n options.push(...other);\n }\n\n return options.map((option: IDropdownOption) => {\n if (option.items) {\n option.items = moveOtherToEnd(option.items);\n return option;\n }\n else {\n return option;\n }\n });\n}\n\nexport function getListContainer(dropdownId: string): HTMLElement | null {\n return document.getElementById(dropdownId);\n}\n\nexport function getListContainerWrapper(dropdownId: string): Element | null {\n return document.getElementById(`mlw-${dropdownId}`);\n}\n\nexport function getParentNode(dropdownRef: React.MutableRefObject<Element | null>, isDoNotPullOutListOfMainContainer?: boolean): Element | null {\n if (isDoNotPullOutListOfMainContainer) return dropdownRef.current;\n return (\n document.querySelector('div#root')\n ?? document.querySelector('div#app')\n ?? document.querySelector('div#storybook-root')\n );\n}\n\nexport function getPreparedOptionLabel(searchValue: string | null | undefined, text: string, isSearchable?: boolean, postfix?: string, description?: string): string {\n const prepare = (text: string): string => text?.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n text = text?.replace(/[\"&<>]/g, (a) => {\n return { '\"': '"', '&': '&', '<': '<', '>': '>' }[a] ?? '';\n });\n const main\n = isSearchable && searchValue\n ? text?.replace(\n\n new RegExp(prepare(searchValue?.toString()), 'i'),\n match => `<span class=\"bg--yellow\">${match}</span>`,\n )\n : text;\n const postfixPart = postfix\n ? `<span class=\"dropdown__list-item-postfix\">${postfix}</span>`\n : '';\n const descriptionPart = description\n ? `<span class=\"dropdown__list-item-description\">${description}</span>`\n : '';\n return main + postfixPart + descriptionPart;\n}\n\nexport function getSortedOptions(data: IDropdownOption[], sortAlphabetical: boolean = false): IDropdownOption[] {\n let newData = [...data];\n\n if (sortAlphabetical) {\n const openModalOption = newData.filter(\n ({ value }) => value === 'open_modal',\n );\n const emptyOption = newData.filter(({ value }) => value === '');\n const restOfOptions = newData\n .filter(({ value }) => value !== 'open_modal' && value !== '')\n .sort(compareAlphabetical);\n\n newData = [...openModalOption, ...emptyOption, ...restOfOptions].map(\n (item) => {\n if (item?.items) {\n item.items = [...item.items].sort(compareAlphabetical);\n }\n\n return item;\n },\n );\n }\n\n return newData;\n}\n", "import type { IDropdownOption, IDropdownProps, IUseDropdown } from './Dropdown.interface';\nimport { useMemo, useRef, useState } from 'react'\nimport useIsMobile from '../../../Functions/useIsMobile';\nimport { getListContainer, getListContainerWrapper, getParentNode, getPreparedOptionLabel, getSortedOptions, getTotalOptions, moveOtherToEnd } from './_utils';\nimport { MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH } from './Dropdown';\n\nfunction useDropdown({ id, fieldKey, value, sortAlphabetical, withMobileLogic, options, minItemsForShowMobileSearch, isSearchable: isSearchableProp, isDoNotPullOutListOfMainContainer }: Partial<IDropdownProps> = {}): IUseDropdown {\n const { isMobile: isMobileProp } = useIsMobile();\n const isMobile = isMobileProp && withMobileLogic;\n\n const [dropdownId] = useState(\n (id || fieldKey || Math.random().toString(16).slice(2)).toString(),\n );\n\n const [isOpen, setIsOpen] = useState(false);\n const [valueToApply, setValueToApplyState] = useState<string | number | null>(null);\n const valueToApplyRef = useRef<string | number | null>(null);\n const setValueToApply = (value: string | number | null): void => {\n valueToApplyRef.current = value;\n setValueToApplyState(value);\n }\n\n const [searchValue, setSearchValue] = useState<string | null>();\n const dropdownRef = useRef<Element | null>(null);\n const dropdownListRef = useRef<Element | null>(null);\n const dropdownFooterRef = useRef<Element | null>(null);\n const dropdownListWrapperRef = useRef<Element | null>(null);\n const searchInputRef = useRef<HTMLInputElement | Omit<HTMLInputElement, 'value'> | null>(null);\n const wrapperRef = useRef<Element | null>(null);\n\n const [initListHeight, setInitListHeight] = useState<number | null>(null);\n const [isSearchChanged, setIsSearchChanged] = useState(false);\n const [isSearchInputFocused, setIsSearchInputFocused] = useState(false);\n\n const [isScrollableList, setIsScrollableList] = useState(false);\n const [isFixedMaxHeight, setIsFixedMaxHeight] = useState(false);\n const [scrollTop, setScrollTop] = useState(0);\n const [scrollHeight, setScrollHeight] = useState(1);\n\n const [maxListContainerHeight, setMaxListContainerHeight] = useState(0);\n\n const totalOptionsLength = useMemo(() => options ? getTotalOptions(options) : 0, [options]);\n const isSearchable = useMemo(() => {\n return isMobile\n ? totalOptionsLength\n > (minItemsForShowMobileSearch || MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH)\n : isSearchableProp;\n }, [isMobile, isSearchableProp, totalOptionsLength, minItemsForShowMobileSearch, MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH]);\n\n const optionsWithOtherAtTheEnd: IDropdownOption[] = useMemo(() => moveOtherToEnd(options ?? []), [options]);\n\n const filteredGroups = useMemo(() => optionsWithOtherAtTheEnd\n .map((item: IDropdownOption) => ({\n ...item,\n items:\n !isSearchable || !isSearchChanged\n ? item?.items\n : item.items\n ?.slice()\n .filter(\n el =>\n el?.label\n ?.toLowerCase()\n .includes(searchValue?.toString()?.toLowerCase() || '')\n || !el?.value\n || el?.value === '',\n ),\n }))\n .filter(item => (item.items?.length ?? 0) > 0), [optionsWithOtherAtTheEnd, searchValue, isSearchable, isSearchChanged]);\n\n const filteredItems = useMemo(() => optionsWithOtherAtTheEnd\n .filter((item: IDropdownOption) => !item.items?.length)\n .filter((item: IDropdownOption) => {\n if (!isSearchable || !isSearchChanged) return true;\n\n return (\n item?.label?.toLowerCase().includes(searchValue?.toString()?.toLowerCase() || '')\n || !item?.value\n || item?.value === ''\n );\n }), [optionsWithOtherAtTheEnd, searchValue, isSearchable, isSearchChanged]);\n\n const filteredOptions = useMemo(() => [...filteredItems, ...filteredGroups], [filteredItems, filteredGroups]);\n\n const selectedLabel = useMemo(() => options?.find(el => el.value === value)?.label\n ?? options?.reduce(\n (acc, item) => {\n if (!acc?.length) return item.items?.find(el => el.value === value)?.label ?? '';\n\n return acc;\n },\n '',\n ), [options, value]);\n\n const postfixText = useMemo(() => (selectedLabel\n && (filteredOptions.find((option: IDropdownOption) => option.value === value) as IDropdownOption)?.postfix)\n || null, [selectedLabel, filteredOptions, value]);\n\n return ({\n isMobile,\n dropdownId,\n isOpen,\n setIsOpen,\n searchValue,\n setSearchValue,\n initListHeight,\n setInitListHeight,\n isSearchChanged,\n setIsSearchChanged,\n isSearchInputFocused,\n setIsSearchInputFocused,\n isScrollableList,\n setIsScrollableList,\n isFixedMaxHeight,\n setIsFixedMaxHeight,\n scrollTop,\n setScrollTop,\n scrollHeight,\n setScrollHeight,\n maxListContainerHeight,\n setMaxListContainerHeight,\n\n getListContainer: () => getListContainer(dropdownId),\n getListContainerWrapper: () => getListContainerWrapper(dropdownId),\n getParentNode: () => getParentNode(dropdownRef, isDoNotPullOutListOfMainContainer),\n getPreparedOptionLabel: (text: string, postfix?: string, description?: string) => getPreparedOptionLabel(searchValue, text, isSearchable, postfix, description),\n getSortedOptions: (data: IDropdownOption[]) => getSortedOptions(data, sortAlphabetical),\n\n filteredGroups,\n filteredItems,\n filteredOptions,\n selectedLabel,\n postfixText,\n\n dropdownRef,\n dropdownListRef,\n dropdownListWrapperRef,\n dropdownFooterRef,\n searchInputRef,\n wrapperRef,\n\n totalOptionsLength,\n isSearchable,\n\n valueToApply,\n valueToApplyRef,\n setValueToApply,\n });\n}\n\nexport default useDropdown;\n", "import type { ISwitcherProps } from './Switcher.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport Hint from '../../UI/Hint/Hint';\n\nimport './Switcher.scss';\n\nconst RC = 'switcher';\n\nconst Switcher: React.FC<ISwitcherProps> = ({\n label,\n className,\n isActive,\n disabled,\n onChange,\n isLabelBold,\n hint,\n hintSide,\n testId = 'switcher',\n}) => {\n return (\n <div\n data-testid={testId}\n className={cn(RC, className, { [`${RC}_disabled`]: disabled })}\n >\n <button\n type=\"button\"\n data-testid={`${testId}-button`}\n className={cn(`${RC}__button`)}\n disabled={disabled}\n onClick={e => onChange(!isActive, e)}\n >\n <div\n className={cn(`${RC}__button-content`, {\n [`${RC}__button-content_active`]: isActive,\n })}\n >\n <div className={`${RC}__ball`} />\n </div>\n {label && (\n <span\n className={cn(`${RC}__label`, {\n [`${RC}__label_bold`]: isLabelBold,\n })}\n >\n {label}\n </span>\n )}\n </button>\n {hint && <Hint className={`${RC}__hint`} hint={hint} side={hintSide} />}\n </div>\n );\n};\n\nexport default Switcher;\n", "/* eslint-disable react-web-api/no-leaked-event-listener */\n/* eslint-disable react-dom/no-missing-button-type */\nimport type { ReactNode } from 'react';\nimport type { IHintProps } from './Hint.interface';\n\nimport cn from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { AlertTriangle, HelpCircle } from 'react-feather';\n\nimport { capitalized } from '../../../Functions/utils';\nimport { HelpCircleFilled } from '../../../Molecular/CustomIcons';\n\nimport Spinner from '../../Layout/Spinner/Spinner';\n\nimport { I_AM_OPENED_EVENT_NAME, I_AM_OPENED_EVENT_OPTIONS } from './partials/_constants';\nimport { getHintContainer, HandleClickOutsideObj, HandleScrollObj, initHintContainer } from './partials/_utils';\n\nimport './Hint.scss';\n\n// \u0413\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0439 \u043C\u0430\u043F \u0434\u043B\u044F \u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F \u0442\u0430\u0439\u043C\u0435\u0440\u043E\u0432 \u043F\u043E hintId\nconst hintTimeoutMap = new Map<string, NodeJS.Timeout>();\n\nlet isContentHoveredOuter = false;\n\nconst DEFAULT_EMPTY_OBJ = {} as IHintProps['hintContainer'];\n\nfunction DEFAULT_VOID_FN(): void {}\n\ninterface IIAmOpenedDetails {\n hintId: string;\n}\n\nconst Hint: React.FC<IHintProps> = ({\n hint,\n side = 'right',\n className,\n hintContainer = DEFAULT_EMPTY_OBJ,\n label = '',\n variant = 'filled',\n handleOpenType = 'click',\n onClickCallback,\n onOpenChange = DEFAULT_VOID_FN,\n key,\n id,\n children,\n icon,\n isAccessability = false,\n testId = 'hint',\n isHoverableContent = false,\n isLoading,\n isCloseOnChildrenClick = false,\n}) => {\n const hintRef = useRef(null);\n const [hintId] = useState<string>(id ?? key ?? Math.random().toString(16).slice(2));\n const [iAmOpenedOptions] = useState<Record<string, any>>({ ...I_AM_OPENED_EVENT_OPTIONS, detail: { hintId } });\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [isStyleComputed, setIsStyleComputed] = useState<boolean>(false);\n\n // ? \u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C handleScroll-\u0441\u0442\u0435\u0439\u0442, \u0447\u0442\u043E\u0431\u044B \u043D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u043C\u0435\u043D\u044F\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0443 \u0442\u0435\u043C \u0441\u0430\u043C\u044B\u043C \u0433\u0430\u0440\u0430\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u0443\u044E \u0440\u0430\u0431\u043E\u0442\u0443 removeEventListener.\n // ? \u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u0443\u0435\u043C \u0441\u0442\u0435\u0439\u0442 \u0432\u044B\u0437\u043E\u0432\u043E\u043C \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u0430 HandleScrollObj, \u043F\u0435\u0440\u0435\u0434\u0430\u0435\u043C setIsOpen \u0434\u043B\u044F \u0437\u0430\u043F\u0438\u0441\u0438 \u0432 \u043E\u0431\u044A\u0435\u043A\u0442.\n const [handleScroll] = useState(new (HandleScrollObj as any)(setIsOpen));\n // ? \u041F\u043E \u0430\u043D\u0430\u043B\u043E\u0433\u0438\u0438 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C handleClickOutside\n const [handleClickOutside] = useState(new (HandleClickOutsideObj as any)(hintId, setIsOpen));\n\n const isCallbackExist: boolean = typeof onClickCallback === 'function';\n\n const handle = {\n onMouseEnter: (): void => {\n const existing = hintTimeoutMap.get(hintId);\n if (existing) clearTimeout(existing);\n\n if (handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n setIsOpen(true);\n !isOpen && onClickCallback?.();\n\n // ? (FIN-10491) \u0418\u0434\u0435\u044F \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F:\n // ? \u041B\u044E\u0431\u043E\u0439 hint \u043A\u0430\u043A \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u043D \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F \"\u0448\u0438\u0440\u043E\u043A\u043E\u0432\u0435\u0449\u0430\u0442\u0435\u043B\u044C\u043D\u043E \u043E\u0440\u0451\u0442\" - \"\u044F \u043E\u0442\u043A\u0440\u044B\u0442!\"\n // ? \u0418, \u0432 \u0441\u0432\u043E\u044E \u043E\u0447\u0435\u0440\u0435\u0434\u044C, \u043B\u044E\u0431\u043E\u0439 hint \u0441\u043B\u0443\u0448\u0430\u0435\u0442 \"\u0448\u0438\u0440\u043E\u043A\u043E\u0432\u0435\u0449\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043E\u0440\" \u0438 \u043A\u0430\u043A \u0443\u0441\u043B\u044B\u0448\u0438\u0442 \"\u0434\u0443\u043C\u0430\u0435\u0442\" - \"\u0430 \u044D\u0442\u043E \u043D\u0435 \u044F \u043B\u0438 \u0441\u043B\u0443\u0447\u0430\u0439\u043D\u043E \u043E\u0442\u043A\u0440\u044B\u0442?\".\n // ? \u0415\u0441\u043B\u0438 \u041D\u0415 \u043E\u043D, \u0442\u043E \u0442\u043E\u0433\u0434\u0430 \u043E\u043D \u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F\n\n // ? \u0412 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \"\u0448\u0438\u0440\u043E\u043A\u043E\u0432\u0435\u0449\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0433\u043E \u043E\u0440\u0430\" \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0441\u0438\u0441\u0442\u0435\u043C\u0443:\n // ? - \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0438\u043C \u043D\u0430 \"\u0441\u0435\u0431\u0435\" \u0412\u0421\u041F\u041B\u042B\u0412\u0410\u042E\u0429\u0418\u0419 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0439 \u0438\u0432\u0435\u043D\u0442\n // ? - \u043D\u043E \u0447\u0442\u043E\u0431\u044B \"\u0441\u043B\u044B\u0448\u0430\u0442\u044C \u0433\u043E\u043B\u043E\u0441\u0430\" \u0432\u0441\u0435\u0445 \u0445\u0438\u043D\u0442\u043E\u0432 \"\u0441\u043B\u0443\u0448\u0430\u0435\u043C\" \u043D\u0430 \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0439 \u0442\u043E\u0447\u043A\u0435 \u0432\u0441\u043F\u043B\u044B\u0442\u0438\u044F (\u0442.\u0435. \u043D\u0430 document)\n // @ts-ignore\n hintRef.current?.dispatchEvent?.(new CustomEvent(I_AM_OPENED_EVENT_NAME, iAmOpenedOptions));\n }, 350);\n hintTimeoutMap.set(hintId, timer);\n }\n },\n onMouseLeave: (): void => {\n const existing = hintTimeoutMap.get(hintId);\n if (existing) clearTimeout(existing);\n\n if (!isHoverableContent && handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n setIsOpen(false);\n hintTimeoutMap.delete(hintId);\n }, 1000);\n hintTimeoutMap.set(hintId, timer);\n }\n else if (isHoverableContent && handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n if (!isContentHoveredOuter) {\n setIsOpen(false);\n }\n hintTimeoutMap.delete(hintId);\n }, 100);\n hintTimeoutMap.set(hintId, timer);\n }\n },\n onMouseLeaveHoverableContent: (): void => {\n const existing = hintTimeoutMap.get(hintId);\n if (existing) clearTimeout(existing);\n\n if (isHoverableContent && handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n setIsOpen(false);\n isContentHoveredOuter = false;\n hintTimeoutMap.delete(hintId);\n }, 100);\n hintTimeoutMap.set(hintId, timer);\n }\n },\n onClick: isCloseOnChildrenClick ? (): void => setIsOpen(false) : (): void => {},\n };\n\n const getHintMarkUp = (className: string | undefined): ReactNode => {\n return (\n <div\n data-testid=\"test-hint-text\"\n className={cn('hint__text', `hint__text_${side}`, `hint--${className}__text`)}\n onMouseEnter={(): void => {\n if (isHoverableContent) isContentHoveredOuter = true;\n }}\n onMouseLeave={isHoverableContent ? handle.onMouseLeaveHoverableContent : undefined}\n onClick={handle.onClick}\n style={{ visibility: isStyleComputed ? 'visible' : 'hidden' }}\n >\n {isLoading && <Spinner size=\"small\" />}\n {hint}\n {children}\n </div>\n );\n };\n\n const setHintContainerStyles = (): void | boolean => {\n const hc = getHintContainer(hintId);\n\n if (!hc || !isOpen) return false;\n\n const { width = 0, top = 0, left = 0 } = hintRef?.current !== null ? (hintRef?.current as HTMLElement)?.getBoundingClientRect() : {};\n const { addWidth, addLeft, addTop } = hintContainer ?? {};\n const windowInnerWidth = document.documentElement.clientWidth;\n const windowInnerHeight = document.documentElement.clientHeight;\n\n const sw = hc.getElementsByClassName('hint__text')[0];\n const { width: swWidth, height: swHeight } = sw?.getBoundingClientRect() || {};\n\n hc.style.width = isOpen ? ((addWidth && !Number.isNaN(+addWidth) ? +addWidth : 0) + width)?.toString().concat('px') : '0';\n hc.style.left = isOpen ? ((addLeft && !Number.isNaN(+addLeft) ? +addLeft : 0) + left)?.toString().concat('px') : '0';\n hc.style.top = isOpen ? ((addTop && !Number.isNaN(+addTop) ? +addTop : 0) + top)?.toString().concat('px') : '0';\n hc.style.maxHeight = isOpen ? swHeight?.toString().concat('px') : '0';\n\n // ? \u0411\u0430\u0437\u043E\u0432\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E\u0433\u0440\u0435\u0448\u043D\u043E\u0441\u0442\u0438\n // ? \u0412 \u0440\u0430\u0437\u043D\u044B\u0445 \u0441\u0432\u0438\u0442\u0447-\u043A\u0435\u0439\u0441\u0430\u0445 \u043C\u043E\u0436\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043F\u043E \u0440\u0430\u0437\u043D\u043E\u043C\u0443 (\u0432\u0441\u044F \u0438\u043B\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043D\u043E). \u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u043B \"\u043D\u0430 \u0433\u043B\u0430\u0437\u043E\u043A\"\n const INACCURACY = 20;\n switch (side) {\n case 'top':\n case 'centeredTop':\n if (top - swHeight - (INACCURACY / 2) < 0) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add(`hint__text_${side === 'top' ? 'bottom' : 'centeredBottom'}`);\n }\n break;\n\n case 'bottom':\n case 'centeredBottom':\n if (top + swHeight + INACCURACY > windowInnerHeight) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add(`hint__text_${side === 'bottom' ? 'top' : 'centeredTop'}`);\n }\n break;\n\n case 'left':\n if (left - swWidth - (INACCURACY / 2) < 0) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add('hint__text_right');\n }\n break;\n\n case 'right':\n default:\n if (left + width + swWidth + (INACCURACY / 2) > windowInnerWidth) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add('hint__text_left');\n }\n break;\n }\n\n setIsStyleComputed(true);\n };\n\n const renderHintContainer = (className: string | undefined): React.ReactPortal | null => {\n const hc = getHintContainer(hintId);\n if (!hc) return null;\n return createPortal(getHintMarkUp(className), hc);\n }\n\n useEffect(() => {\n initHintContainer(hintId, hintContainer);\n\n // ? useEffect \u043F\u043E \u043D\u0443\u043B\u0435\u0432\u043E\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442\u0441\u044F 1 \u0440\u0430\u0437, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0441\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u043A\u043E\u043B\u0431\u0435\u043A \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0441\u044F\n const iAmOpenedCallback = (ev: Event): CustomEvent<IIAmOpenedDetails> => {\n const event = ev as CustomEvent<IIAmOpenedDetails>;\n if (event?.detail?.hintId !== hintId) {\n setIsOpen(false);\n const timer = hintTimeoutMap.get(hintId);\n if (timer) {\n clearTimeout(timer);\n hintTimeoutMap.delete(hintId);\n }\n }\n return event;\n };\n\n if (hintRef.current) {\n // ? \u0423\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u043C \u043F\u0440\u043E\u0441\u043B\u0443\u0448\u043A\u0443 \u043D\u0430 \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0439 \u0442\u043E\u0447\u043A\u0435 \u0432\u0441\u043F\u043B\u044B\u0442\u0438\u044F\n document.addEventListener(I_AM_OPENED_EVENT_NAME, iAmOpenedCallback);\n }\n\n return () => {\n document.removeEventListener(I_AM_OPENED_EVENT_NAME, iAmOpenedCallback);\n const timer = hintTimeoutMap.get(hintId);\n if (timer) {\n clearTimeout(timer);\n hintTimeoutMap.delete(hintId);\n }\n };\n }, []);\n\n useEffect(() => {\n setIsStyleComputed(false);\n setHintContainerStyles();\n onOpenChange?.(isOpen);\n\n if (isOpen) {\n document.addEventListener('scroll', handleScroll, true);\n document.addEventListener('click', handleClickOutside, true);\n }\n else {\n document.removeEventListener('scroll', handleScroll, true);\n document.removeEventListener('click', handleClickOutside, true);\n }\n\n return () => {\n const timer = hintTimeoutMap.get(hintId);\n if (timer) {\n clearTimeout(timer);\n hintTimeoutMap.delete(hintId);\n }\n };\n }, [isOpen]);\n\n return (\n <div data-testid={testId} className={cn('hint', className)} ref={hintRef}>\n <button\n tabIndex={isAccessability ? 0 : -1}\n data-testid={typeof label === 'string' && label.length ? label.replace?.(/\\s/g, '-') : `${testId}--button`}\n aria-label={isAccessability && typeof label === 'string' ? label : ''}\n onClick={() =>\n handleOpenType === 'click'\n && (isCallbackExist ? onClickCallback?.() : setIsOpen(!isOpen))}\n onMouseEnter={handle.onMouseEnter}\n onMouseLeave={handle.onMouseLeave}\n className={cn('hint__button', { hint__button_active: isOpen })}\n >\n {icon || icon === null || (\n <>\n {variant === 'outlined' && <HelpCircle width={16} height={16} className=\"hint__icon outlined\" />}\n {variant === 'filled' && <HelpCircleFilled className=\"hint__icon filled\" />}\n {variant === 'warning' && (\n <AlertTriangle className=\"hint__icon\" color=\"#F06D8D\" width={16} height={16} />\n )}\n </>\n )}\n\n {label && (\n <span className={cn('hint__label', { 'color--primary': isOpen })}>\n {typeof label === 'string' ? capitalized(label) : label}\n </span>\n )}\n </button>\n\n {isOpen && renderHintContainer(className)}\n </div>\n );\n}\n\nexport default Hint;\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Check2(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={16}\n height={16}\n fill=\"none\"\n {...props}\n >\n <path stroke=\"#000\" d=\"M13.333 4 6 11.333 2.667 8\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Email(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={16}\n height={16}\n fill=\"none\"\n {...props}\n >\n <mask\n id=\"a\"\n width={16}\n height={16}\n x={0}\n y={0}\n maskUnits=\"userSpaceOnUse\"\n >\n <path\n stroke=\"#000\"\n d=\"M2.667 2.667h10.666c.734 0 1.334.6 1.334 1.333v8c0 .733-.6 1.333-1.334 1.333H2.667c-.734 0-1.334-.6-1.334-1.333V4c0-.733.6-1.333 1.334-1.333Z\"\n />\n <path stroke=\"#000\" d=\"M14.667 4 8 8.667 1.333 4\" />\n </mask>\n <g mask=\"url(#a)\">\n <path fill=\"#1F7499\" d=\"M0 0h16v16H0z\" />\n </g>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function HelpCircleFilled(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={16}\n height={16}\n fill=\"none\"\n {...props}\n >\n <path\n fill=\"#9AA0B9\"\n d=\"M8 14.667A6.667 6.667 0 1 0 8 1.333a6.667 6.667 0 0 0 0 13.334Z\"\n />\n <path\n stroke=\"#fff\"\n d=\"M6.06 6a2 2 0 0 1 3.887.667c0 1.333-2 2-2 2M8 11.333h.006\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Phone(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={16}\n height={16}\n fill=\"none\"\n {...props}\n >\n <mask\n id=\"a\"\n width={16}\n height={16}\n x={0}\n y={0}\n maskUnits=\"userSpaceOnUse\"\n >\n <path\n stroke=\"#000\"\n d=\"M11.333 1.333H4.667c-.737 0-1.334.597-1.334 1.334v10.666c0 .737.597 1.334 1.334 1.334h6.666c.737 0 1.334-.597 1.334-1.334V2.667c0-.737-.597-1.334-1.334-1.334ZM8 12h.008\"\n />\n </mask>\n <g mask=\"url(#a)\">\n <path fill=\"#1F7499\" d=\"M0 0h16v16H0z\" />\n </g>\n </svg>\n )\n}\n", "export const I_AM_OPENED_EVENT_NAME = 'hint:i-am-open';\nexport const I_AM_OPENED_EVENT_OPTIONS = {\n bubbles: true,\n cancelable: true,\n composed: false,\n};\n", "export const getHintContainerId = (hintId: string | number): string => `hint-container-for-hint--id-${hintId}`;\n\nexport function getHintContainer(hintId: string | number): HTMLElement | null {\n return document.getElementById(getHintContainerId(hintId));\n}\n\nexport function getParentNode(): HTMLElement | null {\n return (\n document.querySelector('div#root')\n ?? document.querySelector('div#app')\n ?? document.body\n );\n}\n\nexport function initHintContainer(hintId: string | number, hintContainerSettings: any): void {\n const { className } = hintContainerSettings;\n const hintContainer = document.createElement('div');\n\n hintContainer.setAttribute('id', getHintContainerId(hintId));\n hintContainer.classList.add('hint__container');\n if (className) hintContainer.classList.add(className);\n\n getParentNode()?.append(hintContainer);\n}\n\n// ? addEventListener \u043C\u043E\u0436\u043D\u043E \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0434\u0432\u0443\u043C\u044F \u0441\u043F\u043E\u0441\u043E\u0431\u0430\u043C\u0438\n// ? - \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u043F\u0440\u044F\u043C\u043E\u0439 \u043A\u043E\u043B\u0431\u044D\u043A (\u0444-\u044E)\n// ? - \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 \u0432 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u0435\u0441\u0442\u044C \u043C\u0435\u0442\u043E\u0434 handleEvent (\u043F\u043E\u043C\u0438\u043C\u043E handleEvent \u043C\u043E\u0436\u043D\u043E \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432 this \u043F\u0440\u043E\u0447\u0438\u0435 \u043F\u043E\u043B\u0435\u0437\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F)\n// ? \u041F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u0441\u044F \u0432\u0442\u043E\u0440\u044B\u043C \u0441\u043F\u043E\u0441\u043E\u0431\u043E\u043C, \u0447\u0442\u043E\u0431\u044B \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 (\u0432\u043E\u043E\u0431\u0449\u0435 \u043C\u043E\u0436\u043D\u043E \u043D\u0435 \u043F\u0438\u0441\u0430\u0442\u044C, \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0438 \u043F\u0440\u043E\u0441\u0442\u043E \u043E\u0442 \u0437\u0430\u043C\u044B\u043A\u0430\u043D\u0438\u044F, \u043D\u043E \u0434\u0435\u043B\u0430\u0435\u043C \u043F\u043E \"\u0434\u0437\u0435\u043D\u0443\")\n// ! \u041C\u0435\u0442\u043E\u0434 \u043D\u0430\u043F\u0438\u0441\u0430\u043D \u0441 \u0440\u0430\u0441\u0447\u0435\u0442\u043E\u043C \u043D\u0430 \u0442\u043E, \u0447\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u0422\u041E\u041B\u042C\u041A\u041E \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u043C \u0442\u0443\u043B\u0442\u0438\u043F\u043E\u043C\nexport function HandleScrollObj(this: any, setIsOpen: (isOpen: boolean) => void): void {\n this.setIsOpen = setIsOpen;\n this.handleEvent = function () {\n this.setIsOpen(false);\n };\n}\n\nexport function HandleClickOutsideObj(this: any, id: string | number, setIsOpen: (isOpen: boolean) => void): void {\n this.id = id;\n this.setIsOpen = setIsOpen;\n this.handleEvent = function (event: Event) {\n if (getHintContainer(this.id)) {\n if (!(getHintContainer(this.id) as HTMLElement).contains(event?.target as Node)) {\n this.setIsOpen(false);\n }\n }\n };\n}\n", "import type { DatepickerCalendarProps, DaysByWeek } from './DatepickerCalendar.props';\n\nimport cn from 'classnames';\nimport moment from 'moment';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport * as Icon from 'react-feather';\n\nconst DatepickerCalendar: React.FC<DatepickerCalendarProps> = ({\n date,\n setDate,\n startDate,\n endDate,\n allowPrev = true,\n allowNext = true,\n onClick,\n onHover,\n startPrevDate,\n endPrevDate,\n limitRange,\n}) => {\n const [days, setDays] = useState<DaysByWeek>({});\n\n const title = useMemo(() => `${moment(date).format('MMM')} ${moment(date).format('YYYY')}`, [date]);\n\n useEffect(() => {\n const result: DaysByWeek = {};\n const day = moment(date).startOf('month');\n const daysInMonth = day.daysInMonth();\n for (let d = 0; d < daysInMonth; d++) {\n let week = day.week();\n if (day.month() === 11 && week === 1) week = 53;\n if (day.month() === 0 && week === 53) week = 0;\n if (!result[week]) result[week] = {};\n result[week][day.weekday()] = { date: day.toDate() };\n day.add(1, 'd');\n }\n setDays(result);\n }, [date]);\n\n const renderDay = (week: string | number, dayOfWeek: number): React.ReactNode => {\n const day = days[+week]?.[dayOfWeek];\n const isFutureDay = day && moment(day.date).isAfter(moment(), 'day');\n const isPastDay = limitRange\n ? day\n && moment(day.date).isBefore(moment().subtract(limitRange, 'days'), 'day')\n : null;\n const isRangeEnd\n = day\n && (moment(day.date).isSame(startDate, 'day')\n || moment(day.date).isSame(moment(endDate).subtract(1, 'hour'), 'day'));\n const isRangeInside\n = day\n && startDate\n && endDate\n && moment(day.date).isAfter(startDate, 'day')\n && moment(day.date).isBefore(moment(endDate).subtract(1, 'hour'), 'day');\n const isPrevRangeEnd\n = day\n && (moment(day.date).isSame(startPrevDate, 'day')\n || moment(day.date).isSame(moment(endPrevDate).subtract(1, 'day'), 'day'));\n const isPrevRangeInside\n = day\n && startPrevDate\n && endPrevDate\n && moment(day.date).isAfter(startPrevDate, 'day')\n && moment(day.date).isBefore(moment(endPrevDate).subtract(1, 'day'), 'day');\n\n const classNames = cn(\n 'calendar__day',\n { 'calendar__day--clickable': day },\n { 'calendar__day--disabled': isFutureDay || isPastDay },\n { 'calendar__day--range-end': isRangeEnd },\n { 'calendar__day--range-inside': isRangeInside },\n { 'calendar__day--prev-range-end': isPrevRangeEnd },\n { 'calendar__day--prev-range-inside': isPrevRangeInside },\n );\n\n return (\n <div\n key={`${week}_${dayOfWeek}`}\n className={classNames}\n onClick={day && !isFutureDay ? () => onClick(day.date) : undefined}\n onMouseOver={day && !isFutureDay ? () => onHover(day.date) : undefined}\n onMouseLeave={() => onHover(null)}\n >\n {day && day.date.getDate()}\n </div>\n );\n };\n\n const handlePrev = (): void => {\n setDate(moment(date).subtract(1, 'month').toDate());\n };\n\n const handleNext = (): void => {\n setDate(moment(date).add(1, 'month').toDate());\n };\n\n return (\n <div className=\"calendar\">\n <div className=\"calendar-header\">\n <div className=\"calendar-header__prev\">\n {allowPrev && (\n <button type=\"button\" data-testid=\"datepicker-calendar-prev\" onClick={handlePrev} aria-label=\"Previous month\">\n <Icon.ChevronLeft size={16} />\n </button>\n )}\n </div>\n <div className=\"calendar-header__title\">{title}</div>\n <div className=\"calendar-header__next\">\n {allowNext && (\n <button type=\"button\" data-testid=\"datepicker-calendar-next\" onClick={handleNext} aria-label=\"Next month\">\n <Icon.ChevronRight size={16} />\n </button>\n )}\n </div>\n </div>\n <div className=\"calendar__week\">\n {Array.from({ length: 7 }, (_, dayOfWeek) => (\n <div\n key={`day-of-week_${dayOfWeek}`}\n className=\"calendar__day calendar__day--title\"\n >\n {moment().weekday(dayOfWeek).format('dd').charAt(0)}\n </div>\n ))}\n </div>\n {Object.keys(days).map((week, index) => (\n <div key={`week_${index}`} className=\"calendar__week\">\n {Array.from({ length: 7 }, (_, dayOfWeek) => renderDay(week, dayOfWeek))}\n </div>\n ))}\n </div>\n );\n};\n\nexport default DatepickerCalendar;\n", "/* eslint-disable react-web-api/no-leaked-event-listener */\n/* eslint-disable react-web-api/no-leaked-timeout */\n/* eslint-disable react-dom/no-dangerously-set-innerhtml */\nimport type {\n ChangeEvent,\n FocusEventHandler,\n LegacyRef,\n MouseEventHandler,\n ReactNode,\n} from 'react';\n\nimport type { IDropdownLiveSearchOption, IDropdownLiveSearchProps } from './DropdownLiveSearch.interface';\nimport cn from 'classnames';\nimport React, {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Check, ChevronDown, ChevronUp, Code, X } from 'react-feather';\nimport { formatToOnlyASCIICodeText } from '../../../Functions/fieldValueFormatters';\nimport { useDebounce } from '../../../Functions/useDebounce';\nimport useIsMobile from '../../../Functions/useIsMobile/useIsMobile';\nimport Spinner from '../../Layout/Spinner/Spinner';\n\nimport RadioInput from '../RadioInput/RadioInput';\nimport './DropdownLiveSearch.scss';\n\nconst RC = 'dropdown-live-search';\n\nconst DropdownLiveSearch: React.FC<IDropdownLiveSearchProps> = ({\n label,\n value,\n error,\n disabled,\n onChange,\n placeholder,\n className,\n isSearchable,\n doRequest,\n isLoading,\n options,\n fieldKey,\n id,\n isListTop,\n attributesOfNativeInput,\n withMobileLogic,\n tabIndex,\n isNotValidateASCII = false,\n noOptionsText = 'No options available',\n testId = 'dropdown-live-search',\n}) => {\n const [dropdownId] = useState(\n id || fieldKey || Math.random().toString(16).slice(2),\n );\n const [isOpen, setIsOpenState] = useState(false);\n const [isValueDeleted, setIsValueDeleted] = useState(false);\n const { isMobile: isMobileProp } = useIsMobile();\n const isMobile\n = isMobileProp && withMobileLogic && window.screen.width <= 768;\n\n const labelByValue = useMemo(() => {\n return options?.find(item => item.value === value)?.label ?? '';\n }, [value, options]);\n\n const [searchValue, setSV] = useState<string>('');\n const [isSearchValueChangedAfterOpen, setIsSearchValueChangedAfterOpen]\n = useState(false);\n\n const dropdownLiveSearchRef = useRef<HTMLElement | null>(null);\n const dropdownListBoxRef = useRef<HTMLElement | null>(null);\n const dropdownListRef = useRef<HTMLElement | null>(null);\n const dropdownListHeaderRef = useRef<HTMLElement | null>(null);\n const searchInputRef = useRef<HTMLElement | null>(null);\n const searchInputModalRef = useRef<HTMLElement | null>(null);\n const searchValueRef = useRef<string | null>(null);\n const wrapperRef = useRef<HTMLElement | null>(null);\n\n const [isFocusedByClick, setIsFocusedByClick] = useState(false);\n\n const [isScrollableList, setIsScrollableList] = useState<boolean | null>(null);\n const [isFixedMaxHeight, setIsFixedMaxHeight] = useState(false);\n const [scrollTop, setScrollTop] = useState(0);\n const [scrollHeight, setScrollHeight] = useState(1);\n\n const debouncedSearchTerm = useDebounce({ searchValue, delay: 600 });\n\n const doScrollCallback: EventListener = useCallback(\n (e) => {\n if (doRequest && typeof doRequest === 'function') {\n const target = e?.target as Element;\n\n if (\n Math.round(target.clientHeight + target.scrollTop)\n === target.scrollHeight\n ) {\n doRequest(searchValueRef.current ?? '', true);\n }\n }\n },\n [options],\n );\n\n const setSearchValue = (val: string, isChanged = true): void => {\n if (isChanged) setIsSearchValueChangedAfterOpen(true);\n setSV(val);\n searchValueRef.current = val;\n };\n\n const setIsOpen = (v: boolean): void => {\n setIsOpenState(v);\n setSearchValue('', false);\n if (!v) setIsSearchValueChangedAfterOpen(false);\n };\n\n const getParentNode = (): Element | null => {\n return (\n document.querySelector('div#root')\n ?? document.querySelector('div#app')\n ?? document.querySelector('div#storybook-root')\n );\n };\n\n const getListContainer = (): Element | null => {\n return document.getElementById(dropdownId?.toString());\n };\n\n const onWrapperClick: MouseEventHandler<Element> = (e): void => {\n if (e.target === wrapperRef?.current) {\n e.stopPropagation();\n e.preventDefault();\n\n setIsOpen(false);\n }\n };\n\n const onSearchableInputFocus: FocusEventHandler<HTMLInputElement> = (e): void => {\n if (!isOpen) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const handleClickOutside = (event: Event | MouseEvent): void => {\n if (\n dropdownLiveSearchRef.current\n && !dropdownLiveSearchRef.current.contains(event.target as Node)\n && (!getListContainer() || !getListContainer()?.contains(event.target as Node))\n ) {\n setIsOpen(false);\n }\n };\n\n const closeListViaEsc = (e: KeyboardEvent): void => {\n if ([27].includes(e.keyCode)) setIsOpen(false);\n };\n\n const closeList = isOpen ? handleClickOutside : () => {};\n\n const onInputClick: MouseEventHandler<HTMLInputElement> = (e): void => {\n if (!isOpen) setIsOpen(true);\n\n if (isMobile && withMobileLogic) {\n e.preventDefault();\n e.stopPropagation();\n if (e.target) (e.target as HTMLInputElement)?.blur();\n }\n else {\n if (e.target) (e.target as HTMLInputElement)?.select();\n }\n };\n\n const onInputChange = (e: ChangeEvent): void => {\n let inputValue = (e.target as HTMLInputElement)?.value;\n if (!isNotValidateASCII)\n inputValue = formatToOnlyASCIICodeText(inputValue);\n setSearchValue(inputValue);\n\n if ((searchValue || !isSearchValueChangedAfterOpen) && !(e.target as HTMLInputElement).value) {\n onChange?.('');\n setSearchValue('');\n setIsValueDeleted(true);\n }\n else {\n setIsValueDeleted(false);\n }\n };\n\n const highlightedText = (text: string, postfix?: string): string => {\n if (!isSearchable) {\n return text;\n }\n else {\n const preparedSearchValue\n = isSearchValueChangedAfterOpen || (isMobile && withMobileLogic)\n ? searchValue\n : labelByValue;\n\n const prepare = (text: string): string => text?.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n text = text.replace(/[\"&<>]/g, (a) => {\n return { '\"': '"', '&': '&', '<': '<', '>': '>' }[a] ?? '';\n });\n\n const main = preparedSearchValue\n ? text?.replace(\n\n new RegExp(prepare(preparedSearchValue), 'i'),\n match => `<span class=\"bg--yellow\">${match}</span>`,\n )\n : text;\n const postfixPart = postfix\n ? `<span class=\"dropdown__list-item-postfix\">${postfix}</span>`\n : '';\n\n return main + postfixPart;\n }\n };\n\n const getMarkupForElement = (item: IDropdownLiveSearchOption, index?: number, optTestId?: string): ReactNode => {\n const lowerLabel = item.label.toLowerCase();\n const lowerSearchValue = searchValue?.toLowerCase();\n\n return (\n <button\n type=\"button\"\n data-testid={`${testId}-${optTestId || index}-option`}\n key={item.value?.toString()?.replace(/ /g, '_')}\n onClick={() => {\n onChange?.(item.value);\n setIsOpen(false);\n }}\n className={cn(\n `${RC}__list-item`,\n {\n [`${RC}__list-item_active`]: item.value === value,\n [`${RC}__list-item_disabled`]: item.disabled,\n },\n item.className,\n )}\n >\n {!isMobile\n || (isMobile && !withMobileLogic && (\n <span\n className={cn(`${RC}__active-icon`, {\n [`${RC}__active-icon_active`]: lowerLabel === lowerSearchValue,\n })}\n >\n <Check />\n </span>\n ))}\n\n <p\n title={item.label}\n className={item.labelClassName || ''}\n dangerouslySetInnerHTML={{\n __html: highlightedText(item.label, item.postfix),\n }}\n />\n {isMobile\n ? item?.customMobileIcon ?? (\n <RadioInput value={item.value} checked={value?.toString()} />\n )\n : ''}\n </button>\n );\n };\n\n const getListMarkUp = (): ReactNode => {\n return (\n <div\n className={cn(`${RC}__container-wrapper`)}\n ref={wrapperRef as LegacyRef<HTMLDivElement>}\n onClick={isMobile ? onWrapperClick : () => {}}\n >\n <div\n className={cn(`${RC}__list-wrapper`, {\n [`${RC}__list-wrapper--fixed-height`]: isFixedMaxHeight,\n [`${RC}__list-wrapper--with-bottom-shadow`]:\n isScrollableList && isMobile,\n [`${RC}__list-wrapper--with-bottom-shadow-hidden`]:\n scrollTop === scrollHeight,\n })}\n >\n <div\n id=\"dropdown-live-search-list\"\n className={cn(`${RC}__container`, {\n [`${RC}__list-top`]: isListTop,\n })}\n ref={dropdownListBoxRef as LegacyRef<HTMLDivElement>}\n >\n {isMobile && (\n <div\n ref={dropdownListHeaderRef as LegacyRef<HTMLDivElement>}\n className={cn(`${RC}__list-header`, {\n [`${RC}__list-header-with-shadow`]:\n isScrollableList && isMobile,\n [`${RC}__list-header-with-shadow-hidden`]: scrollTop === 0,\n })}\n >\n <div className={cn(`${RC}__list-header-row`)}>\n <div className={cn(`${RC}__list-label`)}>{label}</div>\n <div\n className={cn(`${RC}__list-close-icon`)}\n onClick={() => setIsOpen(false)}\n >\n <X onClick={() => setIsOpen(false)} />\n </div>\n </div>\n {isSearchable && (\n <input\n ref={searchInputModalRef as LegacyRef<HTMLInputElement>}\n className={`${RC}__input`}\n value={isOpen ? searchValue : labelByValue}\n onChange={onInputChange}\n placeholder={placeholder}\n onFocus={onSearchableInputFocus}\n tabIndex={-1}\n {...attributesOfNativeInput}\n />\n )}\n </div>\n )}\n <div\n className={cn(`${RC}__list`, { disabled: isLoading })}\n ref={dropdownListRef as LegacyRef<HTMLDivElement>}\n >\n {options?.map(option => getMarkupForElement(option))}\n\n {!options?.length && (\n <div\n className={`${RC}__list-item ${RC}__list-item--no-options`}\n >\n {noOptionsText}\n </div>\n )}\n </div>\n\n {isLoading && isOpen && (\n <Spinner size={(options?.length ?? 0) <= 3 ? 'small' : null} />\n )}\n </div>\n </div>\n </div>\n );\n };\n\n const initListContainer = (): void => {\n const dropdownList = document.createElement('div');\n\n dropdownList.setAttribute('id', dropdownId?.toString());\n dropdownList.classList.add('dropdown__container');\n\n if (isMobile) {\n dropdownList.addEventListener('click', (e) => {\n if ((e.target as HTMLElement).id === dropdownId) setIsOpen(false);\n });\n }\n\n try {\n getListContainer()?.remove();\n }\n finally {\n if (isMobile) {\n try {\n document.getElementById(`mlw-${dropdownId}`)?.remove();\n }\n catch {}\n\n const dropdownMobileListWrapper = document.createElement('div');\n dropdownMobileListWrapper.classList.add('dropdown-live-search-mobile');\n dropdownMobileListWrapper.setAttribute('id', `mlw-${dropdownId}`);\n dropdownMobileListWrapper?.append(dropdownList);\n getParentNode()?.append(dropdownMobileListWrapper);\n }\n else {\n getParentNode()?.append(dropdownList);\n }\n }\n };\n\n const renderListContainer = (): React.ReactPortal | null => {\n const lc = getListContainer();\n\n if (!lc) return null;\n\n return createPortal(getListMarkUp(), lc);\n };\n\n useEffect(() => {\n document.addEventListener('click', handleClickOutside, true);\n return () =>\n document.removeEventListener('click', handleClickOutside, true);\n }, []);\n\n useEffect(() => {\n if (options?.length === 1 && searchValue === options[0].label) {\n setSearchValue(options[0].label);\n onChange?.(options[0].value);\n }\n }, [options]);\n\n useEffect(() => {\n if (isSearchable && (debouncedSearchTerm || isValueDeleted)) {\n doRequest?.(debouncedSearchTerm);\n\n if (isValueDeleted) setIsValueDeleted(false);\n }\n }, [debouncedSearchTerm, isValueDeleted]);\n\n useEffect(() => {\n if (isMobile && withMobileLogic) {\n initListContainer();\n }\n }, [isMobile, withMobileLogic]);\n\n useEffect(() => {\n if (isOpen && isMobile && dropdownListRef?.current && !searchValue) {\n setIsScrollableList(\n dropdownListRef?.current?.scrollHeight\n > dropdownListRef?.current?.clientHeight,\n );\n setIsFixedMaxHeight(\n isScrollableList\n || dropdownListRef?.current?.scrollHeight\n > dropdownListRef?.current?.clientHeight,\n );\n }\n }, [\n isOpen,\n isMobile,\n isScrollableList,\n dropdownListRef?.current,\n dropdownListRef?.current?.scrollHeight,\n dropdownListRef?.current?.clientHeight,\n ]);\n\n useLayoutEffect(() => {\n const list = document.getElementById('dropdown-live-search-list');\n\n if ((list || isOpen) && (!withMobileLogic || !isMobile)) {\n const dropdownWidth = dropdownLiveSearchRef?.current?.clientWidth;\n if (list) list.style.minWidth = `${dropdownWidth}px`;\n }\n }, [dropdownLiveSearchRef, isOpen, withMobileLogic]);\n\n useEffect(() => {\n if (!isOpen) {\n setIsFocusedByClick(false);\n if (withMobileLogic && isMobile) setSearchValue('');\n }\n\n if (isOpen && dropdownListRef && dropdownListRef.current) {\n if (isMobile && withMobileLogic) {\n doRequest?.('').then(() => {\n setTimeout(() => {\n if (dropdownListRef.current && dropdownListBoxRef?.current && dropdownListHeaderRef?.current) {\n dropdownListRef.current.style.maxHeight = `${dropdownListBoxRef?.current?.getBoundingClientRect()?.height\n - dropdownListHeaderRef?.current?.getBoundingClientRect()?.height\n }px`;\n }\n }, 1);\n });\n searchInputModalRef?.current?.focus();\n }\n else if (!isMobile) {\n doRequest?.('');\n }\n dropdownListRef.current.addEventListener('scroll', doScrollCallback);\n }\n return () => {\n removeEventListener('scroll', doScrollCallback);\n };\n }, [isOpen, dropdownListRef]);\n\n useLayoutEffect(() => {\n if (!isMobile) {\n window.addEventListener('mousewheel', closeList);\n window.addEventListener('scroll', closeList);\n window.addEventListener('touchmove', closeList);\n }\n else {\n window.removeEventListener('mousewheel', closeList);\n window.removeEventListener('scroll', closeList);\n window.removeEventListener('touchmove', closeList);\n }\n\n getListContainer()?.addEventListener('click', closeList);\n window.addEventListener('keyup', closeListViaEsc);\n\n return () => {\n window.removeEventListener('mousewheel', closeList);\n window.removeEventListener('scroll', closeList);\n window.removeEventListener('touchmove', closeList);\n window.removeEventListener('keyup', closeListViaEsc);\n getListContainer()?.removeEventListener('click', closeList);\n };\n }, [getListContainer]);\n\n useEffect(() => {\n const setScrollTopValue = (e: Event | MouseEvent): void => {\n setScrollTop(Number.parseInt((e.target as HTMLElement)?.scrollTop?.toString(), 10));\n };\n\n if (isOpen && isMobile && dropdownListRef?.current) {\n dropdownListRef?.current?.addEventListener('scroll', setScrollTopValue);\n }\n\n return () => {\n dropdownListRef?.current?.removeEventListener(\n 'scroll',\n setScrollTopValue,\n );\n };\n }, [isOpen, isMobile, dropdownListRef?.current]);\n useEffect(() => {\n if (dropdownListRef?.current) {\n setScrollHeight(\n Number.parseInt(\n (dropdownListRef?.current?.scrollHeight\n - dropdownListRef?.current?.clientHeight)?.toString(),\n 10,\n ),\n );\n }\n }, [scrollTop, dropdownListRef?.current]);\n\n if (!options) return null;\n\n return (\n <div\n className={cn(RC, className, {\n disabled,\n [`${RC}-mobile`]: isMobile,\n [`${RC}--focused`]: isOpen,\n })}\n ref={dropdownLiveSearchRef as LegacyRef<HTMLDivElement>}\n >\n <button\n type=\"button\"\n data-testid={testId}\n className={`${RC}__trigger input__wrap ${isOpen ? 'input__wrap--focus' : ''} ${!value ? 'placeholder' : ''} ${\n error ? 'error' : ''\n }`}\n onClick={() => (!isSearchable ? setIsOpen(!isOpen) : null)}\n onMouseDown={() => setIsFocusedByClick(true)}\n onFocus={() => (!isFocusedByClick ? setIsOpen(true) : null)}\n tabIndex={tabIndex}\n >\n {isSearchable\n ? (\n <input\n ref={searchInputRef as LegacyRef<HTMLInputElement>}\n className={`${RC}__input`}\n value={\n isOpen\n ? (isMobile && withMobileLogic)\n || !isSearchValueChangedAfterOpen\n ? labelByValue\n : searchValue\n : labelByValue\n }\n onChange={onInputChange}\n placeholder={placeholder}\n onFocus={onSearchableInputFocus}\n onClick={onInputClick}\n tabIndex={-1}\n {...attributesOfNativeInput}\n />\n )\n : (\n <span className=\"text\">{labelByValue || placeholder}</span>\n )}\n <span\n className={cn(`${RC}__arrow`, { [`${RC}__arrow_active`]: isOpen })}\n onClick={() => setIsOpen(!isOpen)}\n >\n {isMobile\n ? (\n <Code className=\"mobile-icon\" />\n )\n : isOpen\n ? (\n <ChevronUp />\n )\n : (\n <ChevronDown />\n )}\n </span>\n </button>\n {isOpen\n && (isMobile && withMobileLogic ? renderListContainer() : getListMarkUp())}\n </div>\n );\n};\n\nexport default DropdownLiveSearch;\n", "import React, { useEffect, useState } from \"react\";\n\nexport const useDebounce = ({ searchValue, delay }) => {\n const [debouncedValue, setDebouncedValue] = useState(searchValue);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(searchValue);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [searchValue, delay]);\n\n return debouncedValue;\n};\n", "import type {\n FileLoaderProps,\n} from './FileLoader.interface';\nimport cn from 'classnames';\n\nimport React, { useState } from 'react';\nimport LoadedContent from './partial/LoadedContent';\n\nimport LoadZone from './partial/LoadZone';\nimport './FileLoader.scss';\n\nconst RC = 'file-loader';\n\nconst FileLoader: React.FC<FileLoaderProps> = (props) => {\n const {\n fieldKey,\n value,\n disabled,\n error,\n className,\n placeholder,\n onChange,\n doLoad,\n filterFiles,\n processErrors,\n isBlockNullValues,\n isDisableErrorsClass = true,\n uploadIcon,\n downloadIcon,\n deleteIcon,\n spiner,\n isIconAfter,\n isLinkTypeDownload = false,\n isUseLinkTitle = false,\n attributesOfNativeInput = {},\n } = props;\n\n const [isLoadContent, setIsLoadContent] = useState(false);\n const [dragenter, setDragenter] = useState(false);\n\n return (\n <div\n className={cn(RC, className, {\n [`${RC}_load-content`]: isLoadContent,\n [`${RC}_load-zone`]: !value,\n [`${RC}_hover`]: dragenter,\n [`${RC}_disabled`]: disabled,\n [`${RC}_error`]: !isDisableErrorsClass && Boolean(error),\n })}\n >\n {isLoadContent && spiner}\n\n {!doLoad && 'develop error: no doLoad'}\n\n {!!doLoad && value && (\n <LoadedContent\n RC={RC}\n value={value}\n onDelete={() => onChange(null)}\n icon={downloadIcon}\n isIconAfter={isIconAfter}\n deleteIcon={deleteIcon}\n isUseLinkTitle={isUseLinkTitle}\n isLinkTypeDownload={isLinkTypeDownload}\n />\n )}\n\n {doLoad && !value && (\n <LoadZone\n RC={RC}\n fieldKey={fieldKey}\n onChange={onChange}\n icon={uploadIcon}\n doLoad={doLoad}\n setDragenter={setDragenter}\n setIsLoadContent={setIsLoadContent}\n placeholder={placeholder}\n filterFiles={filterFiles}\n processErrors={processErrors}\n isBlockNullValues={isBlockNullValues}\n attributesOfNativeInput={attributesOfNativeInput}\n />\n )}\n </div>\n );\n};\n\nexport default FileLoader;\n", "import type { LoadedContentProps } from './LoadedContent.interface';\nimport cn from 'classnames';\n\nimport React, { useMemo } from 'react';\n\nimport { downloadFile } from '../../../../Functions/utils';\nimport '../FileLoader.scss';\n\nconst LoadedContent: React.FC<LoadedContentProps> = ({\n RC,\n value,\n onDelete,\n icon,\n isIconAfter,\n deleteIcon,\n isUseLinkTitle,\n isLinkTypeDownload,\n}) => {\n const handle = {\n download: async (e: React.MouseEvent<HTMLElement>) => {\n e.stopPropagation();\n e.preventDefault();\n const target = e.target as HTMLElement;\n const anchor = target.tagName === 'SPAN' || target.tagName === 'svg'\n ? (target.parentNode as HTMLAnchorElement)\n : (target as HTMLAnchorElement);\n downloadFile({ url: anchor.href, name: value.name });\n },\n };\n\n const additionalProps = useMemo(() => {\n const props: React.AnchorHTMLAttributes<HTMLAnchorElement> = {};\n\n if (isUseLinkTitle) {\n props.title = isLinkTypeDownload\n ? `Download ${value.name}`\n : value.path;\n }\n\n if (isLinkTypeDownload) {\n props.onClick = handle.download;\n }\n else {\n props.target = '_blank';\n }\n\n return props;\n }, [isUseLinkTitle, isLinkTypeDownload, value.name, value.path]);\n\n return (\n <>\n <a\n key={`LoadedContent-isNotUseLinkTitle-${isUseLinkTitle}-isLinkTypeDownload-${isLinkTypeDownload}`}\n {...additionalProps}\n href={value.path}\n rel=\"noreferrer\"\n className={cn(`${RC}__value-link`, {\n [`${RC}__value-link_icon-after`]: isIconAfter,\n })}\n >\n {!isIconAfter && icon}\n <span className={cn(`${RC}__value-name`)}>{value.name}</span>\n {isIconAfter && icon}\n </a>\n <span data-testid=\"loaded-content__delete-value-button\" className={cn(`${RC}__delete-value-button`)} onClick={onDelete}>\n {deleteIcon || 'X'}\n </span>\n </>\n );\n};\n\nexport default LoadedContent;\n", "import type { LoadZoneProps } from './LoadZone.interface';\nimport cn from 'classnames';\n\nimport React, { useEffect } from 'react';\nimport '../FileLoader.scss';\n\nconst DEFAULT_MAX_FILE_SIZE = 1024 * 1024; // 1MB\n\nfunction FILTER_FILES_DEFAULT(file: File): File | null {\n return file.size <= DEFAULT_MAX_FILE_SIZE ? file : null\n}\n\nconst LoadZone: React.FC<LoadZoneProps> = ({\n RC,\n fieldKey,\n onChange,\n doLoad,\n setDragenter,\n setIsLoadContent,\n icon,\n placeholder = '',\n filterFiles = FILTER_FILES_DEFAULT,\n processErrors,\n isBlockNullValues,\n attributesOfNativeInput = {},\n}) => {\n const dropZoneId = `dropZone-${fieldKey}`;\n\n const handle = {\n change: async (\n e: React.ChangeEvent<HTMLInputElement> | DragEvent,\n ): Promise<void> => {\n setIsLoadContent?.(true);\n\n const file\n = 'dataTransfer' in e\n ? e.dataTransfer?.files?.[0]\n : (e.target as HTMLInputElement).files?.[0];\n\n if (!file) {\n setIsLoadContent?.(false);\n return;\n }\n\n const validatedFile = filterFiles ? await filterFiles(file) : file;\n\n if (processErrors && !validatedFile) {\n await processErrors(file);\n }\n\n if (!isBlockNullValues || validatedFile) {\n const result = await doLoad(validatedFile).catch(() => null);\n onChange(result);\n }\n\n setIsLoadContent?.(false);\n },\n\n dragover: (e: DragEvent): boolean => {\n e.stopPropagation();\n e.preventDefault();\n return false;\n },\n\n dragenter: (e: DragEvent): boolean => {\n e.stopPropagation();\n e.preventDefault();\n setDragenter?.(true);\n return false;\n },\n\n dragleave: (e: DragEvent): boolean => {\n e.stopPropagation();\n e.preventDefault();\n setDragenter?.(false);\n return false;\n },\n\n drop: (e: DragEvent): boolean => {\n e.stopPropagation();\n e.preventDefault();\n setDragenter?.(false);\n void handle.change(e);\n return false;\n },\n };\n\n useEffect(() => {\n const dropbox = document.getElementById(dropZoneId);\n if (!dropbox) return;\n\n dropbox.addEventListener('dragenter', handle.dragenter, false);\n dropbox.addEventListener('dragover', handle.dragover, false);\n dropbox.addEventListener('dragleave', handle.dragleave, false);\n dropbox.addEventListener('drop', handle.drop, false);\n dropbox.addEventListener('dragend', handle.dragleave, false);\n\n return () => {\n dropbox.removeEventListener('dragenter', handle.dragenter, false);\n dropbox.removeEventListener('dragover', handle.dragover, false);\n dropbox.removeEventListener('dragleave', handle.dragleave, false);\n dropbox.removeEventListener('drop', handle.drop, false);\n dropbox.removeEventListener('dragend', handle.dragleave, false);\n };\n }, [fieldKey, doLoad]);\n\n return (\n <>\n {icon && <div className={cn(`${RC}__icon-block`)}>{icon}</div>}\n <label\n id={dropZoneId}\n className={cn(`${RC}__input-label`, {\n [`${RC}__input-label_no-icon`]: !icon,\n })}\n htmlFor={fieldKey}\n >\n {placeholder}\n <input\n id={fieldKey}\n className={cn(`${RC}__input`)}\n type=\"file\"\n onChange={handle.change as React.ChangeEventHandler<HTMLInputElement>}\n {...attributesOfNativeInput}\n />\n </label>\n </>\n );\n};\n\nexport default LoadZone;\n", "import type {\n IAccordionItem,\n IFile,\n IFileLoaderDescriptionProps,\n} from './FileLoaderDescription.interface';\nimport cn from 'classnames';\n\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { clone, compare, getBase64, uuid } from '../../../Functions/utils';\nimport AccordionText from '../../UI/AccordionText/AccordionText';\n\nimport FileLoaderLocal from '../FileLoaderLocal/FileLoaderLocal';\n\nimport './FileLoaderDescription.scss';\n\nconst RC = 'file-loader-description';\n\nconst UPLOAD_TRIGGER_KEY = 'uploadTrigger';\nconst MAX_FILE_SIZE = 10 * 1024 * 1024;\nconst ACCEPT_EXTENSIONS_DEFAULT\n = '.jpg, .jpeg, .png, .pdf, .JPG, .JPEG, .PNG, .PDF';\n\nconst uploadTriggerStucture: IFile = {\n id: UPLOAD_TRIGGER_KEY,\n isRequired: true,\n value: '',\n base64: '',\n maxItemSizeBytes: MAX_FILE_SIZE,\n error: null,\n accept: ACCEPT_EXTENSIONS_DEFAULT,\n};\n\nfunction getStructure(data: Partial<IFile>): IFile {\n return {\n value: '',\n base64: '',\n maxItemSizeBytes: MAX_FILE_SIZE,\n error: null,\n isRequired: false,\n accept: ACCEPT_EXTENSIONS_DEFAULT,\n ...data,\n }\n}\n\nfunction accordionData(accordionTitle: string, accordionListContent: IAccordionItem[]): JSX.Element {\n return (\n <div data-testid=\"accordion\">\n <div className={`${RC}__accordion-title`}>{accordionTitle}</div>\n <div className={`${RC}__list`}>\n {accordionListContent?.map(item => (\n <div key={item?.title} className={`${RC}__list-row`}>\n <div className={`${RC}__list-bullet`}></div>\n <div>\n <div className={`${RC}__list-title`}>{item.title}</div>\n <div className={`${RC}__list-descr`}>{item.description}</div>\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nfunction getSafelyInitFiles(initFiles?: IFile[], maxFilesCount?: number): IFile[] {\n if (!Array.isArray(initFiles)) return [];\n\n let output = clone(initFiles);\n if (typeof maxFilesCount === 'number' && output.length > maxFilesCount) {\n output = output.slice(0, maxFilesCount);\n }\n\n return output.map(getStructure);\n}\n\nfunction checkOverflow(files: IFile[], maxFilesCount?: number, additional?: { error?: string | null; outerError?: string | boolean | null }): IFile[] {\n const { error = null, outerError = null } = additional || {};\n\n return typeof maxFilesCount === 'number' && files.length < maxFilesCount\n ? [...files, { ...clone(uploadTriggerStucture), error, outerError }]\n : files;\n}\n\nconst FileLoaderDescription: React.FC<IFileLoaderDescriptionProps> = ({\n id,\n testId = 'file-loader-description',\n fieldKey,\n\n files: initFiles,\n onChange,\n\n className,\n filesDescription = 'Documents must be less than 10MB and must be in PDF, JPG, JPEG or PNG format.',\n documentName = 'Document name',\n accordionTitle = 'There is a list of documents that we accept:',\n accordionListContent = [],\n listDescription,\n\n maxFilesCount = 10,\n isWithoutAccordion,\n\n error: outerError,\n\n ...props\n}) => {\n const uniqueFileLoaderDescriptionId\n = id || testId || fieldKey || `component-${uuid?.()}`;\n\n const safelyInitFiles = useMemo(\n () => getSafelyInitFiles(initFiles, maxFilesCount),\n [initFiles, maxFilesCount],\n );\n\n const [files, setFiles] = useState<IFile[]>(() => {\n if (!safelyInitFiles.length) return [clone(uploadTriggerStucture)];\n return checkOverflow(safelyInitFiles, maxFilesCount);\n });\n\n const generateUniqueFileName = (files: IFile[], name: string): string => {\n let fileName = name;\n const [nameWithoutExtension, extension] = name.split(/(?=\\.[^.]+$)/);\n let count = 1;\n\n while (files.some(file => file.value === fileName)) {\n fileName = `${nameWithoutExtension}(${count})${extension}`;\n count += 1;\n }\n\n return fileName;\n };\n\n const handle = {\n applyFields: (newFields: IFile[]) => {\n setFiles(checkOverflow(newFields, maxFilesCount));\n onChange(newFields);\n },\n\n change: (args: {\n name?: string;\n id: string | number;\n error?: string;\n file?: File;\n }) => {\n const { name, id, error = '', file } = args;\n\n let output: IFile[] = clone(files)\n .filter((item: IFile) => item.value && item.base64)\n .map((item: IFile) => ({ ...item, error: null }));\n\n const changedField = output.find((item: IFile) => id === item.id);\n\n if (!file) {\n // \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435 \u0444\u0430\u0439\u043B\u0430\n handle.applyFields(output.filter((item: IFile) => item.id !== changedField?.id));\n }\n else if (error) {\n // \u043E\u0448\u0438\u0431\u043A\u0430 - \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u0435\u043C \u043E\u0448\u0438\u0431\u043A\u0443 \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u043E\n if (changedField) {\n output = output.map((item: IFile) =>\n item.id && id?.toString().includes(item.id?.toString()) ? { ...item, error } : item,\n );\n }\n\n setFiles(\n checkOverflow(output, maxFilesCount, {\n error: !changedField ? error : null,\n }),\n );\n }\n else {\n // \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435/\u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0444\u0430\u0439\u043B\u0430\n const uniqueFileName = generateUniqueFileName(output, name ?? id?.toString());\n const uniqueId = uuid?.();\n\n getBase64(file)?.then((result) => {\n const newItem = getStructure({\n id: uniqueId!,\n value: uniqueFileName,\n base64: result,\n error: null,\n });\n output = changedField\n ? output.map((item: IFile) => (item.id === changedField.id ? newItem : item))\n : [...output, newItem];\n handle.applyFields(output);\n });\n }\n },\n };\n\n useEffect(() => {\n setFiles(\n checkOverflow(\n files.filter(item => item.id !== UPLOAD_TRIGGER_KEY),\n maxFilesCount,\n { outerError },\n ),\n );\n }, [outerError]);\n\n useEffect(() => {\n if (\n !compare(\n safelyInitFiles,\n clone(files).filter((item: IFile) => item.id !== UPLOAD_TRIGGER_KEY),\n )\n ) {\n setFiles(checkOverflow(safelyInitFiles, maxFilesCount, { outerError }));\n }\n }, [initFiles, maxFilesCount]);\n\n return (\n <div\n id={uniqueFileLoaderDescriptionId}\n data-testid={RC}\n className={cn(RC, className)}\n role=\"combobox\"\n {...props}\n >\n {!!documentName && (\n <span title={documentName} className={`${RC}__title`}>\n {documentName}\n </span>\n )}\n\n {!isWithoutAccordion && (\n <AccordionText\n isForcedAlwaysAccordion\n className={cn(`${RC}__accordion`)}\n // @ts-ignore\n text={accordionData(accordionTitle, accordionListContent)}\n />\n )}\n\n {!!filesDescription && (\n <span className={`${RC}__file-descr`} title={filesDescription}>\n {filesDescription}\n </span>\n )}\n <div className={cn(`${RC}__list`, { [`${RC}__list--with-description`]: listDescription })}>\n {files.map((field, i) => (\n <FileLoaderLocal\n className={`${RC}__list-item`}\n key={`${field.id}-${i}`}\n fieldId={field.id?.toString()}\n id={`loader-${uniqueFileLoaderDescriptionId}-field-${field.id}`}\n error={field.error ?? undefined}\n outerError={field.outerError}\n label=\"Upload document\"\n accept={field.accept}\n value={field.value}\n maxItemSizeBytes={field.maxItemSizeBytes}\n onChange={value => handle.change(value)}\n isRequired={files.length <= 1}\n isNoTrashIcon={false}\n />\n ))}\n {listDescription && <div className={cn(`${RC}__list-description`)}>{listDescription}</div>}\n </div>\n </div>\n );\n};\n\nexport default FileLoaderDescription;\n", "import { useEffect, useRef, useState } from \"react\";\nimport React from \"react\";\nimport cn from \"classnames\";\nimport { ChevronDown, ChevronUp } from \"react-feather\";\nimport \"./AccordionText.scss\";\n\nconst defaultText = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.`;\n\nconst AccordionText = ({\n isDefaultOpen = false,\n isOuterOpen = false,\n className,\n text = defaultText,\n shortText = null\n}) => {\n const bodyRef = useRef(null);\n const [isOpen, setIsOpen] = useState(isDefaultOpen);\n const [isNeedTrimText, setIsNeedTrimText] = useState(false);\n\n useEffect(() => {\n setIsOpen(isOuterOpen);\n }, [isOuterOpen]);\n\n useEffect(() => {\n const checkEllipsis = () => {\n if (bodyRef.current) {\n setIsNeedTrimText(bodyRef.current.scrollWidth > bodyRef.current.clientWidth);\n }\n };\n\n const resizeObserver = new ResizeObserver(() => {\n checkEllipsis();\n });\n\n if (bodyRef.current) {\n resizeObserver.observe(bodyRef.current);\n checkEllipsis();\n }\n\n return () => {\n if (bodyRef.current) {\n resizeObserver.unobserve(bodyRef.current);\n }\n };\n }, [text]);\n\n return (\n <div\n className={cn(\"accordion-text\", className, {\n \"accordion-text--open\": isOpen,\n })}\n onClick={() => setIsOpen((prevIsOpen) => !prevIsOpen)}\n >\n <div\n className={cn(\"accordion-text__body\", {\n \"accordion-text__body--trim-text\": isNeedTrimText && !isOpen,\n })}\n ref={bodyRef}\n >\n {shortText ? (isOpen ? text : shortText) : text}\n </div>\n <div className=\"accordion-text__toggle\">\n {isOpen ? <ChevronUp /> : <ChevronDown />}\n </div>\n </div>\n );\n};\n\nexport default AccordionText;\n", "import type { FileLoaderLocalProps } from './FileLoaderLocal.interface';\nimport cn from 'classnames';\nimport React from 'react';\n\nimport { Download, Paperclip, Trash2 } from 'react-feather';\n\nimport { getUniqueFileExtensions, renderFileSize } from '../../../Functions/utils';\nimport './FileLoaderLocal.scss';\n\nconst MAX_FILE_SIZE = 10 * 1024 * 1024;\n\nconst FileLoaderLocal: React.FC<FileLoaderLocalProps> = ({\n groupId,\n id,\n fieldId,\n fieldKey,\n label,\n error,\n outerError,\n isRequired,\n accept,\n onChange,\n className,\n value,\n isNoTrashIcon = false,\n maxItemSizeBytes,\n testId = 'file-loader-local',\n attributesOfNativeInput = {},\n}) => {\n const getFileName = (value: string): string | undefined => {\n return value.match(/[^\\\\]+$/)?.[0];\n };\n\n const renderRequiredLabel = (): JSX.Element | null => {\n if (!value) {\n if (isRequired) return <div className=\"file-loader-local--required\">Required</div>;\n else return <div className=\"file-loader-local--optional\">Optional</div>;\n }\n\n return null;\n };\n\n const isFileSizeOutOfLimit = (file: File): boolean => {\n return file.size > (maxItemSizeBytes ?? MAX_FILE_SIZE);\n };\n\n const checkExtension = (valueExtension: string | undefined): boolean => {\n return valueExtension && accept ? accept.includes(valueExtension) : false;\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n const name = getFileName(e.target.value);\n const valueExtension = name?.match(/[^.]+$/)?.[0];\n const fileName = name?.split('.')?.[0] ?? '';\n const latinRegex = /^[\\w\\u00C0-\\u00FF!@#$%^&*)(+=.\\-\\s]+$/;\n const file = e.target?.files?.[0];\n\n if (!file || !name || !valueExtension) return;\n\n if (isFileSizeOutOfLimit(file)) {\n onChange({\n id,\n name,\n valueExtension,\n e,\n file,\n groupId,\n error: maxItemSizeBytes ? `Max file size is ${renderFileSize(maxItemSizeBytes)}` : '',\n });\n }\n else if (!checkExtension(valueExtension)) {\n const allowedExtensions = accept?.replace(/\\./g, '')?.toUpperCase() || 'JPG, PNG, PDF';\n const uniqExts = getUniqueFileExtensions(allowedExtensions);\n onChange({\n id,\n groupId,\n name,\n valueExtension,\n e,\n file,\n error: `Only ${uniqExts} are allowed`,\n });\n }\n else if (!latinRegex.test(fileName)) {\n onChange({\n id,\n groupId,\n name,\n valueExtension,\n e,\n file,\n error: `File name must be Latin characters only.`,\n });\n }\n else {\n onChange({ id, groupId, name, valueExtension, e, file });\n }\n };\n\n const inputId = fieldKey || `file-input-${id}${groupId ? `-${groupId}` : ''}`;\n\n return (\n <div\n data-testid={testId}\n className={cn('file-loader-local', className, {\n 'file-loader-local_outer-error': Boolean(outerError),\n 'file-loader-local--with-file': value,\n })}\n >\n {(fieldId === 'uploadTrigger' || !value) && (\n <input\n key={id}\n onChange={handleChange}\n className=\"file-loader-local__file-input\"\n id={inputId}\n type=\"file\"\n name={fieldKey || id?.toString()}\n required={isRequired}\n accept={accept}\n {...attributesOfNativeInput}\n />\n )}\n\n <label\n className={cn('file-loader-local__label-box', {\n 'file-loader-local__label-box--upload-trigger': fieldId === 'uploadTrigger' || !value,\n })}\n htmlFor={inputId}\n >\n {!value && <Download className=\"file-loader-local__upload-icon\" />}\n {value && <Paperclip className=\"file-loader-local__upload-icon\" />}\n\n <div title={value || label} className=\"file-loader-local__label-wrapper\">\n <div\n className={cn('file-loader-local__label', {\n 'file-loader-local__label-filled': value,\n })}\n >\n <span className=\"file-loader-local__label-text\">{value || label}</span>\n {error && <span className=\"file-loader-local__error\">{error}</span>}\n {typeof outerError === 'string' && (\n <span className=\"file-loader-local__error\">{outerError}</span>\n )}\n </div>\n </div>\n\n {value && !isNoTrashIcon && (\n <Trash2\n data-testid=\"file-loader-local__trash-icon\"\n className=\"file-loader-local__trash-icon\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onChange({ id: fieldId ?? id, groupId });\n }}\n />\n )}\n {renderRequiredLabel()}\n </label>\n </div>\n );\n};\n\nexport default FileLoaderLocal;\n", "import type { FileGroup, FileItem, FileLoaderLocalGroupProps } from './FileLoaderLocalGroup.interface';\nimport cn from 'classnames';\nimport React, { useEffect, useState } from 'react';\n\nimport { Info } from 'react-feather';\nimport {\n clone,\n getBase64,\n getUniqueFileExtensions,\n} from '../../../Functions/utils';\nimport Alert from '../../UI/Alert/Alert';\n\nimport FileLoaderLocal from '../FileLoaderLocal/FileLoaderLocal';\n\nimport './FileLoaderLocalGroup.scss';\n\nconst DEFAULT_LABEL_PREFIX = 'Please attach';\nconst MAX_FILE_SIZE = 10 * 1024 * 1024;\n\nconst FileLoaderLocalGroup: React.FC<FileLoaderLocalGroupProps> = ({\n className,\n groupsArray = [],\n isSingleGroup,\n onChange,\n labelPrefix = DEFAULT_LABEL_PREFIX,\n testId = 'file-loader-local-group',\n}) => {\n const [groups, setGroups] = useState<FileGroup[]>(clone(groupsArray));\n\n const getNewFile = (group: FileGroup): FileItem => {\n const newId = group.files.at(-1)?.id ?? 0 + 1;\n return {\n id: newId,\n value: '',\n base64: '',\n error: '',\n accept: group.accept || '.jpg, .jpeg, .png, .pdf',\n maxItemSizeBytes: group.maxItemSizeBytes ?? MAX_FILE_SIZE,\n isRequired: group?.isRequired || false,\n fieldKey: newId?.toString(),\n };\n };\n\n const generateUniqueFileName = (files: FileItem[], name: string): string => {\n let fileName = name;\n const [nameWithoutExtension, extension] = name.split(/(?=\\.[^.]+$)/);\n let count = 1;\n\n while (files.some(file => file.value === fileName)) {\n fileName = `${nameWithoutExtension}(${count})${extension}`;\n count += 1;\n }\n\n return fileName;\n };\n\n useEffect(() => {\n const mergedGroups = groupsArray?.map(group => ({\n ...group,\n files: [getNewFile(group)],\n }));\n setGroups(mergedGroups);\n }, []);\n\n const handle = {\n change: ({ groupId, name, id, error, file }: any, fileId: number | string) => {\n const currentGroup = groups.find(group => group.groupId === groupId.toString());\n if (!currentGroup) return;\n\n const files = currentGroup.files;\n const changedField = files.find(item => Number(item.id) === Number(fileId));\n if (!changedField) return;\n\n if (error) {\n changedField.value = name;\n changedField.error = error;\n setGroups([...groups]);\n onChange(groups);\n }\n else if (name && !error) {\n const uniqueFileName = generateUniqueFileName(files, name);\n getBase64(file)\n ?.then((result) => {\n changedField.value = uniqueFileName;\n changedField.base64 = result;\n changedField.error = '';\n\n const updatedGroups = groups.map((group) => {\n if (group.groupId === groupId.toString()) {\n const newFiles = isSingleGroup\n ? [...group.files]\n : group.files.length < 10\n ? [\n ...group.files,\n {\n ...getNewFile(group),\n isRequired: group.files.length > 1,\n },\n ]\n : [...group.files];\n\n return {\n ...group,\n files: newFiles,\n };\n }\n return group;\n });\n\n setGroups(updatedGroups);\n onChange(updatedGroups);\n })\n .catch(e => console.error(e));\n }\n else {\n const updatedGroups = groups.map((group) => {\n if (group.groupId === groupId.toString()) {\n const newFiles = isSingleGroup\n ? [{ ...getNewFile(group), value: '', base64: '' }]\n : group.files.filter(item => item.id !== id);\n return {\n ...group,\n files: newFiles,\n };\n }\n return group;\n });\n setGroups(updatedGroups);\n onChange(updatedGroups);\n }\n },\n };\n\n const getUniqueExts = (acceptExts: string): string =>\n getUniqueFileExtensions(acceptExts?.replace(/\\./g, ''));\n\n return (\n <>\n {groups?.map(group => (\n <div\n data-testid={testId}\n key={group.groupId}\n className={cn('file-loader-local-groups', className)}\n >\n <span className=\"file-loader-local-groups__label\">\n <div className=\"file-loader-local-groups__label-text\">\n {labelPrefix}\n {' '}\n {group?.groupTitleDescription}\n {' '}\n <span className=\"file-loader-local-groups__label-extension\">\n (\n {getUniqueExts(group?.accept)}\n ):\n </span>\n </div>\n </span>\n\n {group?.alertText && (\n // @ts-ignore\n <Alert\n className=\"file-loader-local-groups__alert\"\n noDismiss\n icon={<Info />}\n message={group?.alertText}\n />\n )}\n\n <div className=\"file-loader-local-groups__item\">\n {group?.files?.map((file, index) => (\n <FileLoaderLocal\n groupId={group?.groupId}\n fieldKey={`${file.fieldKey}:${group?.groupId}:${index}`}\n key={file?.id || index}\n id={file?.id || index}\n error={file?.error}\n label=\"Upload document\"\n accept={file?.accept}\n value={file?.value}\n maxItemSizeBytes={file?.maxItemSizeBytes}\n onChange={value => handle.change(value, file?.id)}\n isRequired={group.files?.length <= 1 || false}\n isNoTrashIcon={group.files?.length <= 1 && !isSingleGroup}\n />\n ))}\n </div>\n </div>\n ))}\n </>\n );\n};\n\nexport default FileLoaderLocalGroup;\n", "import type { IAlertProps } from './Alert.interface';\n\nimport cn from 'classnames';\nimport React, { useState } from 'react';\n\nimport { X } from 'react-feather';\nimport Spinner from '../../Layout/Spinner/Spinner';\nimport Button from '../Button/Button';\n\nimport DynamicIcon from '../DynamicIcon/DynamicIcon';\n\nimport './Alert.scss';\n\nconst Alert: React.FC<IAlertProps> = ({\n message,\n icon,\n iconDynamicKey,\n iconDynamicProps,\n className,\n children,\n noDismiss,\n testId = 'alert',\n isHidden = false,\n variant = 'warning',\n isLoading,\n buttonParams,\n}) => {\n const [onClose, setOnClose] = useState(false);\n\n const DynamicIconComponent\n = iconDynamicKey && !icon\n ? (\n <DynamicIcon iconKey={iconDynamicKey} {...iconDynamicProps} />\n )\n : null;\n\n const renderActionsBlock = (): JSX.Element | null => {\n if (buttonParams) {\n return (\n <div className=\"j6 alert__btns-box\">\n <Button {...buttonParams} />\n {!noDismiss && (\n <div className=\"alert__close-btn\">\n <X data-testid={`${testId}-close`} onClick={() => setOnClose(!onClose)} />\n </div>\n )}\n </div>\n );\n }\n\n if (!noDismiss) {\n return (\n <div className=\"alert__close-btn\">\n <X data-testid={`${testId}-close`} onClick={() => setOnClose(!onClose)} />\n </div>\n );\n }\n\n else {\n return null;\n }\n };\n\n return (\n <div\n data-testid={testId}\n className={cn(className, { hidden: onClose }, `alert alert--${variant}`, {\n 'hidden': isHidden,\n 'alert--loading': isLoading,\n })}\n >\n <div className=\"alert__icon-text-box j4\">\n {DynamicIconComponent ?? icon}\n <div>{children || message}</div>\n </div>\n {renderActionsBlock()}\n {isLoading && <Spinner size=\"small\" testId=\"loader-box\" />}\n </div>\n );\n};\n\nexport default Alert;\n", "import type { IFormattedRawSSNProps } from './FormattedRawSSN.interface';\n\nimport React, { useRef, useState } from 'react';\n\nimport { Eye, EyeOff } from 'react-feather';\n\nimport { getLimitedMask } from '../../../Functions/utils/getLimitedMask';\nimport InputMask3 from '../InputMask3/InputMask3';\nimport './FormattedRawSSN.scss';\n\nconst DEFAULT_SSN_MASK = 'DDD-DD-DDDD';\nconst SIGNIFICANT_CHARACTERS = ['D'];\n\nconst FormattedRawSSN: React.FC<IFormattedRawSSNProps> = ({\n value = '',\n onChange: onChangeProp = () => {},\n testId = 'formatted-raw-ssn',\n\n // ! \u0412\u0421\u0415 \"\u043F\u043B\u044F\u0448\u0435\u0442\" \u043E\u0442 fullSnnMask \u0438 significantChars\n // \u041C\u0430\u0441\u043A\u0430 \u0434\u043B\u044F \u043F\u043E\u043B\u043D\u043E\u0433\u043E snn (\u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0438 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u0439 \u043D\u0435\u0442, \u041D\u041E \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044C \u0442\u043E, \u0447\u0442\u043E \u043F\u043E\u043D\u0438\u043C\u0430\u0435\u0442 InputMask3)\n fullSnnMask = DEFAULT_SSN_MASK,\n // \u0417\u043D\u0430\u0447\u0430\u0449\u0438\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0432 fullSnnMask\n // \u0422\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0438 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u0439 \u043D\u0435\u0442, \u041D\u041E \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044C\n // - \u043C\u0430\u0441\u0441\u0438\u0432 \u041E\u0414\u0418\u041D\u041E\u0427\u041D\u042B\u0425 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\n // - \u043C\u0430\u0441\u0441\u0438\u0432 \u0442\u0435\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u043E \u0442\u0440\u0430\u043A\u0442\u0443\u044E\u0442\u0441\u044F \u0432 InputMask3 (\u0441\u043C\u043E\u0442\u0440\u0438 InputMask3/config)\n significantChars = SIGNIFICANT_CHARACTERS,\n // \u0421\u0438\u043C\u0432\u043E\u043B \u0434\u043B\u044F \u043C\u0430\u0441\u043A\u0438\u0440\u043E\u0432\u043A\u0438\n maskChar = '*',\n // \u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0441\u0440\u0430\u0437\u0443 \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0438\u043B\u0438 \u043D\u0435\u0442)\n isHiddenDefault = true,\n // \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0412\u0412\u041E\u0414\u0418\u041C\u042B\u0425 \u0446\u0438\u0444\u0440\n maxLen = 9, // ? \u0420\u0435\u0447\u044C \u043E \u0437\u043D\u0430\u0447\u0430\u0449\u0438\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u0430\u0445\n // \u0421\u043A\u043E\u043B\u044C\u043A\u043E \u0438\u0437 \u041F\u0415\u0420\u0412\u042B\u0425 \u0432\u0432\u043E\u0434\u0438\u043C\u044B\u0445 \u043D\u0443\u0436\u043D\u043E \u043F\u0440\u044F\u0442\u0430\u0442\u044C \u043F\u0440\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0438 \u043C\u043E\u0434\u0430 \u043C\u0430\u0441\u043A\u0438\u0440\u043E\u0432\u043A\u0438\n countOfFirstDigitsToHide = 5, // ? \u0420\u0435\u0447\u044C \u043E \u0437\u043D\u0430\u0447\u0430\u0449\u0438\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u0430\u0445\n // \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0430\u044F \u0447\u0430\u0441\u0442\u044C\n postfix = '',\n\n ...args\n}) => {\n // ? \u0411\u0443\u0434\u0435\u043C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0441\u0432\u043E\u0438\u043C (\u0432\u0435\u0440\u0445\u043D\u0438\u043C \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E InputMask3) \u0441\u0442\u0435\u0439\u0442\u043E\u043C\n // ? \u042D\u0442\u043E \u043F\u043E\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043E\u0442\u0440\u0438\u0441\u043E\u0432\u043A\u0438 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \"\u043F\u043E\u0432\u0435\u0440\u0445\" InputMask3.\n const [isHidden, setIsHidden] = useState<boolean>(isHiddenDefault);\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n const onChange = (value: string | number | undefined | null): void => {\n const newValue = value == null ? '' : value.toString();\n onChangeProp(newValue);\n };\n\n // ? \u041F\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0435\u043C \u043C\u0430\u0441\u043A\u0443 \u0441 \u0443\u0447\u0435\u0442\u043E\u043C \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0433\u043E maxLen.\n // ? \u0415\u0441\u043B\u0438 maxLen \u043C\u0435\u043D\u044C\u0448\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u043D\u0430\u0447\u0430\u0449\u0438\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0432 fullSnnMask, \u0442\u043E \u043C\u0430\u0441\u043A\u0430 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E \u043E\u0431\u0440\u0435\u0436\u0435\u0442\u0441\u044F.\n // ? \u041F\u0435\u0440\u0435\u0434\u0430\u0435\u043C \u043E\u043F\u0446\u0438\u044E isOnlyMask: false, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u041D\u0415 \u0442\u043E\u043B\u044C\u043A\u043E \u043D\u043E\u0432\u0443\u044E \u043C\u0430\u0441\u043A\u0443, \u0430 \u0435\u0449\u0435 \u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0443.\n // ? \u0412 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u043F\u0440\u0438\u0445\u043E\u0434\u0438\u0442 \u043E\u0431\u044A\u0435\u043A\u0442 \u0444\u043E\u0440\u043C\u0430\u0442\u0430: { mask, countOfSignificantChars, countOfNotSignificantChars }\n const infoAboutMask = getLimitedMask({\n mask: fullSnnMask,\n significantChars,\n limit: maxLen,\n isOnlyMask: false,\n });\n\n // ? \u0420\u0430\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0435\u043C \u0418\u041D\u0414\u0415\u041A\u0421 \u043A\u0440\u0430\u0439\u043D\u0435\u0433\u043E \u0441\u0438\u043C\u0432\u043E\u043B\u0430 \u0447\u0430\u0441\u0442\u0438 \u043C\u0430\u0441\u043A\u0438, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u043F\u043E\u0434\u043B\u0435\u0436\u0438\u0442 \u0441\u043A\u0440\u044B\u0442\u0438\u044E,\n // ? \u0438\u0441\u0445\u043E\u0434\u044F \u0438\u0437 countOfFirstDigitsToHide\n const maxHiddenIndex = (() => {\n // \u0435\u0441\u043B\u0438 \u043D\u0435 \u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442\u0441\u044F \u043A \u0447\u0438\u0441\u043B\u0443 \u0438\u043B\u0438 \u043D\u043E\u043B\u044C (\u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044C \u043D\u043E\u043B\u044C \u043B\u0438\u0448\u0435\u043D\u043E \u0441\u043C\u044B\u0441\u043B\u0430)\n if (\n Number.isNaN(Number(countOfFirstDigitsToHide))\n || !Number(countOfFirstDigitsToHide)\n ) {\n return -1;\n }\n // \u0435\u0441\u043B\u0438 \u0431\u043E\u043B\u044C\u0448\u0435 \u0447\u0435\u043C \u0437\u043D\u0430\u0447\u0438\u043C\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\n if (countOfFirstDigitsToHide > infoAboutMask.countOfSignificantChars)\n return infoAboutMask.mask.length;\n\n // ? \u0414\u043B\u044F \u0440\u0430\u0441\u0447\u0435\u0442\u043E\u0432 \u043F\u043E\u043B\u0443\u0447\u0430\u0435\u043C \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E \"\u043E\u0431\u0440\u0435\u0437\u0430\u043D\u043D\u0443\u044E\" \u043C\u0430\u0441\u043A\u0443 (\u0434\u043E \u0443\u0440\u043E\u0432\u043D\u044F \u0441\u043A\u0440\u044B\u0432\u0430\u0435\u043C\u043E\u0439 \u0447\u0430\u0441\u0442\u0438)\n // ? \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0440\u0430\u043D\u0435\u0435 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043D\u043E\u0439 \"\u043E\u0431\u0440\u0435\u0437\u0430\u043D\u043D\u043E\u0439\" \u043F\u043E maxLen. \u041D\u0430\u043C \u043D\u0443\u0436\u043D\u0430 \u041D\u0415 \u0441\u0430\u043C\u0430 \u043C\u0430\u0441\u043A\u0430, \u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430 \u043F\u043E \u043D\u0435\u0439.\n // ? \u0412 \u0447\u0430\u0441\u0442\u043D\u043E\u0441\u0442\u0438 - \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \"\u043D\u0435\u0437\u043D\u0430\u0447\u0430\u0449\u0438\u0445\" \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445\u0441\u044F \u0432 \u0441\u043A\u0440\u044B\u0432\u0430\u0435\u043C\u043E\u0439 \u0447\u0430\u0441\u0442\u0438 \u043C\u0430\u0441\u043A\u0438.\n const infoAboutMaskOfHidden = getLimitedMask({\n mask: infoAboutMask.mask,\n significantChars,\n limit: countOfFirstDigitsToHide,\n isOnlyMask: false,\n });\n\n // ? \u0414\u043B\u044F InputMask3 maxHiddenIndex \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043F\u0435\u0440\u0435\u0434\u0430\u043D \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0434\u043B\u0438\u043D\u044B \u0412\u0421\u0415\u0419 \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0435\u043C\u043E\u0439 \u043C\u0430\u0441\u043A\u0438 (\u043D\u0430\u0448\u0430 \"\u043E\u0431\u0440\u0435\u0437\u0430\u043D\u043D\u0430\u044F\" \u043F\u043E maxLen).\n // ? \u041F\u043E\u044D\u0442\u043E\u043C\u0443 \u043A \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \"\u0441\u043A\u0440\u044B\u0432\u0430\u0435\u043C\u044B\u0445\" \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u043C \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \"\u043D\u0435\u0437\u043D\u0430\u0447\u0430\u0449\u0438\u0445\", \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0445 \u0432 \u0441\u043A\u0440\u044B\u0432\u0430\u0435\u043C\u0443\u044E \u0447\u0430\u0441\u0442\u044C \u043C\u0430\u0441\u043A\u0438.\n // ? \u0422.\u043A. \u0440\u0430\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0435\u043C \u041D\u0415 \u0434\u043B\u0438\u043D\u043D\u0443, \u0430 \u0438\u043D\u0434\u0435\u043A\u0441 - \u043E\u0442\u043D\u0438\u043C\u0430\u0435\u043C 1\n return (\n countOfFirstDigitsToHide\n + infoAboutMaskOfHidden.countOfNotSignificantChars\n - 1\n );\n })();\n\n return (\n <div data-testid={testId} className=\"formatted-raw-ssn\" ref={wrapperRef}>\n <InputMask3\n {...args}\n value={value}\n // @ts-ignore\n onChange={onChange}\n testId={`formattedRawSNN--input--key-${testId}`}\n maskPattern={infoAboutMask.mask}\n maskPlaceholder=\"X\"\n blinkErrors={true}\n showErrors={false}\n withHiddenMode={true}\n isValueHiddenDefault={isHiddenDefault}\n hiddenChar={maskChar}\n maxHiddenIndex={maxHiddenIndex}\n isHide={isHidden}\n />\n {postfix && (\n <span\n className=\"formatted-raw-ssn-postfix\"\n onClick={() => wrapperRef?.current?.querySelector('input')?.focus()}\n >\n {postfix}\n </span>\n )}\n <span\n className=\"formatted-raw-ssn-eye-holder\"\n onClick={() => setIsHidden(!isHidden)}\n >\n {isHidden\n ? (\n <Eye strokeWidth={1} className=\"password-icon\" />\n )\n : (\n <EyeOff strokeWidth={1} className=\"password-icon\" />\n )}\n </span>\n </div>\n );\n};\n\nexport default FormattedRawSSN;\n", "interface GetLimitedMaskParams {\n mask: string;\n significantChars: string[];\n limit: number;\n isOnlyMask?: boolean;\n}\n\ninterface GetLimitedMaskStats {\n mask: string;\n countOfSignificantChars: number;\n countOfNotSignificantChars: number;\n}\n\n// ? \u041C\u0435\u0442\u043E\u0434 \u0432\u043E\u0437\u0440\u0430\u0449\u0430\u0435\u0442 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E \u043E\u0431\u0440\u0435\u0437\u0430\u043D\u043D\u0443\u044E \u043C\u0430\u0441\u043A\u0443 \u0441 \u0443\u0447\u0435\u0442\u043E\u043C \u043B\u0438\u043C\u0438\u0442\u0430 \u0437\u043D\u0430\u0447\u0430\u0449\u0438\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\n\n// !!! \u043F\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043A\u0430 \u0434\u043B\u044F \u0434\u0438\u043D\u0430\u043C\u0438\u043A \u0440\u0435\u0442\u0443\u0440\u043D-\u0442\u0430\u0439\u043F\u0430, \u043D\u0435 \u0443\u0434\u0430\u043B\u044F\u0442\u044C !!!\nexport function getLimitedMask(props: GetLimitedMaskParams & { isOnlyMask?: true }): string;\nexport function getLimitedMask(props: GetLimitedMaskParams & { isOnlyMask?: false }): GetLimitedMaskStats;\nexport function getLimitedMask(props: GetLimitedMaskParams): string | GetLimitedMaskStats {\n const { mask = '', significantChars = [], limit, isOnlyMask = true } = props;\n\n if (\n typeof mask !== 'string'\n || !Array.isArray(significantChars)\n || !significantChars.every(item => typeof item === 'string' && item.length === 1)\n ) {\n return isOnlyMask ? '' : { mask: '', countOfSignificantChars: 0, countOfNotSignificantChars: 0 };\n }\n\n if (limit === 0) {\n return isOnlyMask ? '' : { mask: '', countOfSignificantChars: 0, countOfNotSignificantChars: 0 };\n }\n\n const getCountOfSignificantChars = (mask: string): number =>\n mask.split('').filter(sym => significantChars.includes(sym)).length;\n\n const safelyLimit = (() => {\n const count = getCountOfSignificantChars(mask);\n const outputLimit = Number.isNaN(+limit) ? count : +limit;\n return !outputLimit || outputLimit > count ? count : outputLimit;\n })();\n\n const limitedMask = mask.split('').reduce((acc, sym) => {\n if (acc.count < safelyLimit) {\n acc.result += sym;\n if (significantChars.includes(sym)) acc.count += 1;\n }\n return acc;\n }, { result: '', count: 0 }).result;\n\n return isOnlyMask\n ? limitedMask\n : {\n mask: limitedMask,\n countOfSignificantChars: safelyLimit,\n countOfNotSignificantChars: limitedMask.length - safelyLimit,\n };\n}\n", "/* eslint-disable react-web-api/no-leaked-timeout */\n/* eslint-disable ts/no-use-before-define */\nimport type { KeyboardEventHandler, LegacyRef, MouseEventHandler, ReactElement, ReactNode } from 'react';\n\nimport type { IInputMask3CharObj, IInputMask3Props } from './InputMask3.interface';\nimport cn from 'classnames';\nimport React, { createRef, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Eye, EyeOff, X } from 'react-feather';\nimport { KEYBOARD_KEY_CODES as KEY_CODES } from '../../../Constants/index.constants';\nimport { disableDefaultBehavior } from '../../../Functions/utils/disableDefaultBehavior/disableDefaultBehavior';\n\nimport Spinner from '../../Layout/Spinner/Spinner';\nimport DynamicIcon from '../../UI/DynamicIcon/DynamicIcon';\n\nimport Hint from '../../UI/Hint/Hint';\nimport {\n DEFAULT_ERRORS,\n DIGIT_MASK_CHAR,\n LOWERCASE_LETTER_MASK_CHAR,\n SPACE_CHAR,\n UPPERCASE_LETTER_MASK_CHAR,\n} from './config';\nimport {\n isDigit,\n isDigitMaskChar,\n isLetter,\n isLetterMaskChar,\n isLowerCaseLetter,\n isUpperCaseLetter,\n} from './functions';\nimport './InputMask3.scss';\n\nconst InputMask3: React.FC<IInputMask3Props> = ({\n autocomplete = 'off',\n maskPattern,\n maskPatternPlaceholder,\n maskPlaceholder,\n maskDigitPlaceholder,\n maskLetterPlaceholder,\n usePatternPlaceholder,\n\n maxEditableIndex = -1,\n\n isClearable,\n isCaseSensitive,\n adaptTextCase,\n isUseAutoSelect = true,\n isLoading = false,\n\n // \u0412\u043A\u043B\u044E\u0447\u0430\u0435\u0442/\u043E\u0442\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043C \u0441\u043A\u0440\u044B\u0442\u0438\u044F \u0432 \u043F\u0440\u0438\u043D\u0446\u0438\u0435\u043F\u0435.\n withHiddenMode = false,\n // \u0421\u0438\u043C\u0432\u043E\u043B \u043A\u043E\u0442\u043E\u0440\u044B\u043C \u0441\u043A\u0440\u044B\u0432\u0430\u0430\u0435\u044E\u0442\u0441\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u044B\n hiddenChar = '*',\n // \u0418\u043D\u0434\u0435\u043A\u0441 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0441\u043A\u0440\u044B\u0432\u0430\u0435\u043C\u043E\u0433\u043E\u0441\u0438\u043C\u0432\u043E\u043B\u0430\n // \u0418\u043D\u0434\u0435\u043A\u0441 \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044C \u0441 \u0423\u0427\u0415\u0422\u041E\u041C \u043D\u0435 \u0437\u043D\u0430\u0447\u0430\u0449\u0438\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u043C\u0430\u0441\u043A\u0438,\n // \u043F\u0440\u0438 \u044D\u0442\u043E\u043C \u043D\u0435 \u0437\u043D\u0430\u0447\u0430\u0449\u0438\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u041D\u0415 \u0431\u0443\u0434\u0443\u0442\n maxHiddenIndex = -1,\n // \u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u044F \"\u0441\u043A\u0440\u044B\u0442\u044C\" (\u0435\u0441\u043B\u0438 \u041D\u0415 \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0441\u0432\u0435\u0440\u0445\u0443)\n isValueHiddenDefault = false,\n\n // ? \u0415\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u0430 \u043A\u0430\u043A \u0431\u0443\u043B\u0435\u0432\u0430, \u0442\u043E \u0440\u0435\u0436\u0438\u043C \u0441\u043A\u0440\u044B\u0442\u0438\u044F \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0435\u0439, \u0437\u0434\u0435\u0448\u043D\u0438\u0439 \u0442\u0440\u0438\u0433\u0433\u0435\u0440 (\u0433\u043B\u0430\u0437\u0438\u043A) \u041D\u0415 \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442\u0441\u044F\n // ? \u0415\u0441\u043B\u0438 \u041D\u0415 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u0430 \u043A\u0430 \u0431\u0443\u043B\u0435\u0432\u0430, \u0442\u043E \u0440\u0435\u0436\u0438\u043C \u0441\u043A\u0440\u044B\u0442\u0438\u044F \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u0442\u0441\u044F \u0441\u0432\u043E\u0438\u043C \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u043C \u0441\u0442\u043E\u0440\u043E\u043C, \u0437\u0434\u0435\u0448\u043D\u0438\u0439 \u0442\u0440\u0438\u0433\u0433\u0435\u0440 (\u0433\u043B\u0430\u0437\u0438\u043A) \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442\u0441\u044F\n isHide, // \u0431\u0443\u043B\u0435\u0432\u0430 \u043F\u0440\u043E\u043F\u0430 \u0434\u043B\u044F \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0441\u0432\u0435\u0440\u0445\u0443\n\n icon,\n showIcon,\n isIconLeft,\n isIconRight,\n iconDynamicKey,\n iconDynamicProps = {},\n value,\n blinkErrors = true,\n blinkDuration = 100,\n showErrors = false,\n\n className = '',\n errors: customErrors = DEFAULT_ERRORS,\n error: customError = '',\n\n onChange: onChangeProp,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n onKeyDown: onKeyDownProp,\n onFilled: onFilledProp,\n\n showHint = false,\n hintText = '',\n hintClassName = '',\n isHintRight = true,\n isHintLeft = false,\n hintPosition = 'right',\n\n hideMaskOnBlur = true,\n returnMaskedValue = false,\n\n name,\n fieldKey,\n id,\n disabled,\n testId = 'input-mask',\n\n attributesOfNativeInput = {},\n}) => {\n const errors = {\n ...DEFAULT_ERRORS,\n ...customErrors,\n };\n\n if (maxEditableIndex === -1) maxEditableIndex = maskPattern?.length ?? 0;\n\n const [isMaskRendered, setMaskRendered] = useState(false);\n const [isFocused, setFocused] = useState(false);\n const [isInitValue, setIsInitValue] = useState(false);\n const [selectedLength, setSelectedLength] = useState(0);\n // ? \u0415\u0441\u043B\u0438 \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0441\u0432\u0435\u0440\u0445\u0443, \u0442\u043E \u0438\u043D\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u043C\u0441\u044F \u0442\u0435\u043A\u0443\u0449\u0438\u043C \u0432\u043D\u0435\u0448\u043D\u0438\u043C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C\n const [isValueHidden, setIsValueHidden] = useState(\n typeof isHide === 'boolean' ? isHide : isValueHiddenDefault,\n );\n const [isHiddenLogicInit, setIsHiddenLogicInit] = useState(false);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const keyDownRef = useRef<null | number>(null);\n const setKeyDown = (keyCode: number | null): number | null => (keyDownRef.current = keyCode);\n const getKeyDown = (): number => (keyDownRef.current ?? 0) as number;\n\n const DynamicIconComponent\n = iconDynamicKey && !icon\n ? (\n <DynamicIcon iconKey={iconDynamicKey} {...iconDynamicProps} />\n )\n : null;\n\n const setCaret = (caret: number): void => {\n if (caret < 0) caret = 0;\n const input = inputRef.current;\n if (input) setTimeout(() => input.setSelectionRange(caret, caret), 0);\n };\n\n // ERRORS MANAGEMENT FUNCTIONS | START //\n const [isError, setError] = useState(false);\n const [blinkError, setBlinkError] = useState(false);\n\n const [errorMessage, setErrorMessage] = useState(errors.default);\n const clearErrorMessage = (): void => setErrorMessage(errors.default);\n // ERRORS MANAGEMENT FUNCTIONS | END //\n\n // INNER VALUE MANAGEMENT FUNCTIONS | START //\n const [innerValue, setInnerValue] = useState<IInputMask3CharObj[]>([]);\n\n const prevValueRef = useRef<string[]>([]);\n\n const addInnerValueChar = ({ char, data = {} }: { char: string, data: object }): void => {\n setInnerValue((state) => {\n const stateCopy = [...state];\n const charObj = getCharObj(char, data);\n\n stateCopy.push(charObj);\n\n return stateCopy;\n });\n };\n const updateInnerValueChar = ({ char = null }: { char: string | null }, i: number): void => {\n setInnerValue((state) => {\n if (!state[i]) return state;\n\n const stateCopy = [...state];\n\n if (!stateCopy[i].isSpecialSymbol && char !== null)\n stateCopy[i].char = char;\n\n return stateCopy;\n });\n };\n const resetInnerValue = (): void => {\n setInnerValue(innerValue =>\n innerValue.map((item) => {\n if (!item.isSpecialSymbol && item.char !== null) item.char = '';\n return item;\n }),\n );\n };\n const setValue = (value?: null | string | number, disableErrors = true): void => {\n value = value === null || value === undefined ? '' : value.toString();\n\n resetInnerValue();\n const staticLength = maskPattern.length - maxEditableIndex;\n\n if (value.length > maxEditableIndex)\n value = value.slice(0, value.length - staticLength);\n else if (maxEditableIndex !== maskPattern?.length - 1)\n value = value.slice(0, maxEditableIndex);\n let valueCharIndex = 0;\n setInnerValue((innerValue) => {\n const newValue = innerValue.map((item, i) => {\n const { isSpecialSymbol } = item;\n if (isSpecialSymbol) return item;\n let char = value[valueCharIndex];\n let whileLimit = maskPattern?.length || 0;\n\n while (\n whileLimit\n && (isSpecialSymbolChar({ char: value[valueCharIndex] })\n || !isValidChar({ char, i, disableErrors: true }))\n ) {\n whileLimit--;\n char = value[++valueCharIndex];\n }\n\n // If Valid\n if (isValidChar({ char, i, disableErrors })) {\n item.char = char;\n }\n\n ++valueCharIndex;\n\n return item;\n });\n\n return newValue;\n });\n };\n // INNER VALUE MANAGEMENT FUNCTIONS | END //\n\n // GETTERS | START //\n const getCharObj = (char: string, data = {}): IInputMask3CharObj => {\n const isSpecialSymbol = isSpecialSymbolChar({ char });\n const isSpecialSymbolMask = isSpecialSymbolMaskChar({ char });\n\n if (char === ' ') char = SPACE_CHAR;\n\n return {\n char: isSpecialSymbolMask ? char : '',\n maskChar: char,\n isSpecialSymbol: isSpecialSymbolMask,\n isCharSymbol: !isSpecialSymbol && char !== '' && isSpecialSymbolMask,\n ref: createRef(),\n ...data,\n };\n };\n const getCharByIndex = (i: number): IInputMask3CharObj | undefined => {\n return innerValue[i] ? { ...innerValue[i] } : undefined;\n };\n const getMaskCharByIndex = (i: number): string | undefined => {\n return innerValue[i]?.maskChar || undefined;\n };\n const getPlaceholderCharByIndex = (i: number): string | undefined => {\n const { maskChar } = getCharByIndex(i) as IInputMask3CharObj;\n\n if (usePatternPlaceholder) {\n return maskPatternPlaceholder?.[i] || maskPlaceholder;\n }\n if (isDigitMaskChar(maskChar) && maskDigitPlaceholder)\n return maskDigitPlaceholder;\n if (isLetterMaskChar(maskChar) && maskLetterPlaceholder)\n return maskLetterPlaceholder;\n return maskPlaceholder;\n };\n const getInputValue = ({\n noLastTyppedCharIndexCheck = false,\n noHide = false,\n } = {}): string => {\n let isValid = true;\n\n const lastTyppedCharIndex = innerValue.reduce(\n (result, { char, isSpecialSymbol }, i) =>\n char !== '' && !isSpecialSymbol ? i : result,\n 0,\n );\n\n const value = innerValue.reduce((result, { char, isSpecialSymbol }, i) => {\n if (\n char !== ''\n && isValid\n && (!noLastTyppedCharIndexCheck ? i <= lastTyppedCharIndex : true)\n ) {\n if (\n isValueHidden\n && !isSpecialSymbol\n && !noHide\n && (maxHiddenIndex === -1 || i <= maxHiddenIndex)\n ) {\n result += hiddenChar;\n }\n else {\n result += char;\n }\n }\n else {\n isValid = false;\n }\n\n return result;\n }, '');\n\n if (getClearInnerValueAsString(value)?.length === 0) return '';\n\n return value;\n };\n const getClearInnerValueAsString = (valueProp?: string): string => {\n const symbolsInfo = innerValue?.map(\n ({ isSpecialSymbol, isCharSymbol }) => ({\n isSpecialSymbol,\n isCharSymbol,\n }),\n );\n const clearValue = (\n valueProp\n ?? getInputValue({ noLastTyppedCharIndexCheck: true, noHide: true })\n )\n ?.split('')\n ?.reduce((resultStr, symbol, i) => {\n if (!symbolsInfo[i].isSpecialSymbol || symbolsInfo[i].isCharSymbol)\n resultStr += symbol;\n return resultStr;\n }, '');\n\n return clearValue;\n };\n const inputValue = useMemo(getInputValue, [innerValue, isValueHidden]);\n // GETTERS | END //\n\n // CHECKERS | START //\n const isValidChar = ({ char: key, i, disableErrors = false }: { char: string, i: number, disableErrors?: boolean }): boolean => {\n const maskChar = getMaskCharByIndex(i);\n\n switch (maskChar) {\n case DIGIT_MASK_CHAR:\n if (!isDigit(key)) {\n if (!disableErrors) {\n setErrorMessage(errors.onlyDigit);\n }\n return false;\n }\n break;\n\n case UPPERCASE_LETTER_MASK_CHAR:\n if (adaptTextCase) key = key.toUpperCase();\n\n if (!isLetter(key) && !isCaseSensitive) {\n if (!disableErrors) setErrorMessage(errors.onlyLetter);\n return false;\n }\n\n if (isCaseSensitive && !isUpperCaseLetter(key)) {\n if (!disableErrors) setErrorMessage(errors.onlyUpperCase);\n return false;\n }\n break;\n case LOWERCASE_LETTER_MASK_CHAR:\n if (adaptTextCase) key = key.toLowerCase();\n\n if (!isLetter(key) && !isCaseSensitive) {\n if (!disableErrors) setErrorMessage(errors.onlyLetter);\n return false;\n }\n\n if (isCaseSensitive && !isLowerCaseLetter(key)) {\n if (!disableErrors) setErrorMessage(errors.onlyLowerCase);\n return false;\n }\n break;\n\n default:\n return false;\n }\n\n return true;\n };\n const isSpecialSymbolMaskChar = ({ char }: { char: string }): boolean => {\n return !isDigitMaskChar(char) && !isLetterMaskChar(char);\n };\n const isSpecialSymbolChar = ({ char }: { char: string }): boolean => {\n return !isDigit(char) && !isLetter(char);\n };\n const isSpecialSymbol = (i: number): boolean | undefined => getCharByIndex(i)?.isSpecialSymbol;\n // CHECKERS | END //\n\n /// --- Event Handlers ---///\n\n // GENERAL EVENT HANDLERS | START //\n const onVisibleChange: React.ChangeEventHandler<HTMLInputElement> | undefined = (e): void => {\n clearErrorMessage();\n\n const {\n target: { value, selectionStart: caretPos },\n nativeEvent,\n } = e;\n\n // @ts-ignore\n const { data: char } = nativeEvent;\n\n if (caretPos && caretPos > maxEditableIndex) {\n disableDefaultBehavior(e);\n setCaret(maxEditableIndex);\n setBlinkError(true);\n return;\n }\n\n setValue(value);\n\n const caretOffset = value.length - (caretPos ?? 0);\n\n // Correct Caret Position\n if (!value.lastIndexEqualsTo((caretPos ?? 0) - 1)) {\n if (value.longerThan(inputValue)) {\n if (!isValidChar({ char, i: (caretPos ?? 0) - 1 })) {\n disableDefaultBehavior(e);\n setCaret((caretPos ?? 0) - 1);\n }\n else {\n const newCaretPos = value.length - caretOffset;\n setCaret(\n isSpecialSymbol(newCaretPos) ? newCaretPos + 1 : newCaretPos,\n );\n }\n }\n else if (inputValue.longerThan(value)) {\n switch (getKeyDown()) {\n case KEY_CODES.Backspace:\n if (isSpecialSymbol((caretPos ?? 0))) {\n disableDefaultBehavior(e);\n }\n setCaret((caretPos ?? 0));\n break;\n case KEY_CODES.Delete:\n if (isSpecialSymbol((caretPos ?? 0))) {\n disableDefaultBehavior(e);\n setCaret((caretPos ?? 0) + 1);\n }\n else {\n setCaret((caretPos ?? 0));\n }\n break;\n default:\n if (selectedLength > 0) {\n setCaret((caretPos ?? 0));\n }\n }\n }\n }\n\n /* Checking if the character is a special symbol and if it is not, it is checking if the character\n is valid or not. If it is not valid, it will blink the error. */\n if (blinkErrors) {\n setTimeout(() => {\n if (\n ((value.longerThan(inputValue) && !isSpecialSymbol((caretPos ?? 0) - 1))\n || (inputValue.longerThan(value) && !isSpecialSymbol((caretPos ?? 0))))\n && ((char && !isValidChar({ char, i: (caretPos ?? 0) - 1 }))\n || (inputValue === getInputValue()\n && getInputValue()[(caretPos ?? 0) - 1] !== char))\n ) {\n disableDefaultBehavior(e);\n setBlinkError(true);\n }\n }, 0);\n }\n };\n const onHiddenChange: React.ChangeEventHandler<HTMLInputElement> | undefined = (e): void => {\n const SSN = getInputValue({ noHide: true });\n\n const {\n target: { value },\n } = e;\n\n if (value.replace(/-/g, '').length < SSN.replace(/-/g, '').length) {\n const last = SSN.length - 1;\n setValue(SSN.slice(0, last));\n return;\n }\n\n const numValue = value.replace(/\\D/g, '');\n let newSSN = '';\n\n // ! maxHiddenIndex - \u044D\u0442\u043E \u0438\u043D\u0434\u0435\u043A\u0441, \u041D\u0415 length. \u041F\u043E\u044D\u0442\u043E\u043C\u0443 \u043D\u0443\u0436\u043D\u043E \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C 1\n const staticLength\n = maxHiddenIndex !== -1 ? maxHiddenIndex + 1 : maskPattern?.length;\n\n if (SSN.length > staticLength) {\n newSSN = SSN.slice(0, staticLength) + numValue;\n }\n else {\n newSSN = SSN + numValue;\n }\n\n if (newSSN.length > maskPattern?.length) {\n return;\n }\n setValue(newSSN);\n };\n const onChange = isValueHidden ? onHiddenChange : onVisibleChange;\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = (e) => {\n onKeyDownProp?.(e);\n\n const { keyCode } = e;\n setKeyDown(keyCode);\n };\n const onKeyUp: KeyboardEventHandler<HTMLInputElement> | undefined = (e): void => {\n setKeyDown(null);\n // On Filled Callback\n if (\n getInputValue({ noLastTyppedCharIndexCheck: true }).length\n === maskPattern.length\n && ((e.target as HTMLInputElement).selectionStart ?? 0) >= maxEditableIndex\n ) {\n onFilledProp?.();\n }\n };\n const onClearClick: MouseEventHandler<SVGElement> = (e): void => {\n e.stopPropagation();\n e.preventDefault();\n\n resetInnerValue();\n\n inputRef?.current?.focus();\n setCaret(0);\n clearErrorMessage();\n };\n const onHiddenToggle = (value: boolean | string): void => {\n // ? \u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0430 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0439 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u0432\u0435\u043B\u044C\u044E (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n const newValue = typeof value === 'boolean' ? value : !isValueHidden;\n setIsValueHidden(newValue);\n if (isHiddenLogicInit) inputRef?.current?.focus();\n };\n const onFocus: React.FocusEventHandler<HTMLInputElement> | undefined = (): void => {\n setFocused(true);\n onFocusProp?.();\n };\n const onBlur = (): void => {\n setFocused(false);\n onBlurProp?.();\n };\n const onClick: React.MouseEventHandler<HTMLInputElement> | undefined = (e): void => {\n const cursor = (e.target as HTMLInputElement).selectionStart;\n if (cursor && cursor >= maxEditableIndex) setCaret(maxEditableIndex);\n };\n const onSelect = (e: React.SyntheticEvent<HTMLDivElement, Event>): void => {\n const { selectionStart, selectionEnd } = e.target as HTMLInputElement ?? {};\n setSelectedLength((selectionEnd ?? 0) - (selectionStart ?? 0));\n if (selectionStart && selectionStart >= maxEditableIndex) setCaret(maxEditableIndex);\n };\n // GENERAL EVENT HANDLERS | END //\n\n /// --- OBSERVERS ---///\n // Render Mask\n useEffect(() => {\n setIsInitValue(false);\n setInnerValue([]);\n setMaskRendered(false);\n\n if (!maskPattern) maskPattern = '';\n\n maskPattern.split('').map((char, id) => {\n addInnerValueChar({\n char,\n data: { id, isReadOnly: id === maskPattern.length },\n });\n if (value?.[id]) updateInnerValueChar({ char: value?.[id] }, id);\n return char;\n });\n setMaskRendered(true);\n }, [maskPattern]);\n\n useEffect(() => {\n if (\n (isMaskRendered && !isInitValue)\n || (isInitValue\n && ![getInputValue(), getClearInnerValueAsString()].includes(value as string))\n ) {\n setValue(value);\n setIsInitValue(true);\n }\n }, [isMaskRendered, value, isInitValue]);\n\n // OnChange Observer\n useEffect(() => {\n if (isMaskRendered && isInitValue) {\n setError(false);\n const values = [\n getClearInnerValueAsString(),\n getInputValue({ noLastTyppedCharIndexCheck: true, noHide: true }),\n ];\n if (returnMaskedValue) values.reverse();\n\n if (\n prevValueRef?.current?.[0] !== values[0]\n && prevValueRef?.current?.[1] !== values[1]\n && value !== getClearInnerValueAsString()\n ) {\n prevValueRef.current = values;\n onChangeProp?.(...(values as []));\n }\n }\n }, [innerValue, isMaskRendered, isInitValue]);\n\n // Blink Error\n useEffect(() => {\n if (blinkError) {\n setTimeout(() => {\n setBlinkError(false);\n }, blinkDuration);\n }\n }, [blinkError]);\n\n useEffect(() => {\n setError(customError !== '');\n setErrorMessage(customError === '' ? errors.default : customError);\n }, [customError, isError]);\n\n useEffect(() => {\n if (typeof isHide === 'boolean') {\n onHiddenToggle(isHide);\n if (!isHiddenLogicInit) setIsHiddenLogicInit(true);\n }\n }, [isHide]);\n\n /// --- RENDER ---///\n\n const renderChar = (obj: IInputMask3CharObj, i: number, className: string = ''): ReactNode => {\n const { char, ref, maskChar, isSpecialSymbol } = obj;\n\n return (\n <span\n tabIndex={-1}\n key={i}\n attr-char-id={i}\n className={cn('input-mask_value_item', className, {\n 'input-mask_value_item--digit': isDigitMaskChar(obj.maskChar),\n 'input-mask_value_item--letter': isLetterMaskChar(obj.maskChar),\n 'input-mask_value_item--spec': obj.isSpecialSymbol,\n 'input-mask_value_item--hidden': i < inputValue.length,\n })}\n ref={ref as LegacyRef<HTMLSpanElement>}\n >\n {!isFocused\n && hideMaskOnBlur\n && getClearInnerValueAsString().length === 0\n ? SPACE_CHAR\n : isSpecialSymbol\n ? maskChar\n : char === ''\n ? getPlaceholderCharByIndex(i)\n : char}\n </span>\n );\n };\n const renderMaskChar = (obj: IInputMask3CharObj, i: number): ReactNode =>\n renderChar(obj, i, 'input-mask_value_item_mask-char');\n const renderValueChar = (obj: IInputMask3CharObj, i: number): ReactNode =>\n isValueHidden && (maxHiddenIndex === -1 || i <= maxHiddenIndex)\n ? renderChar(\n { ...obj, char: hiddenChar },\n i,\n 'input-mask_value_item_value-hidden-char',\n )\n : renderChar(obj, i, 'input-mask_value_item_value-char');\n const renderSpecialChar = (obj: IInputMask3CharObj, i: number): ReactNode =>\n renderChar(obj, i, 'input-mask_value_item_spec-char');\n const renderInputValue = (): ReactNode => {\n return innerValue.map((obj, i) => {\n const { char, isSpecialSymbol } = obj;\n\n if (isSpecialSymbol) {\n return renderSpecialChar(obj, i);\n }\n\n const isMaskItem = (() => char === '')();\n return isMaskItem ? renderMaskChar(obj, i) : renderValueChar(obj, i);\n });\n };\n const renderMask = (): ReactNode => {\n return <div className=\"input-mask_value\">{renderInputValue()}</div>;\n };\n const renderInput = (): ReactNode => {\n return (\n <input\n tabIndex={disabled || isLoading ? -1 : 0}\n readOnly={disabled || isLoading}\n name={name || fieldKey || id || testId || ''}\n className={`input-mask_input ${className}`}\n ref={inputRef}\n value={inputValue}\n onChange={onChange}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n onBlur={onBlur}\n onClick={onClick}\n autoComplete={autocomplete}\n onFocus={(...params) => {\n if (isUseAutoSelect) inputRef.current?.select();\n if (onFocus) onFocus(...params);\n }}\n onDragStart={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onDragEnd={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onSelect={onSelect}\n {...attributesOfNativeInput}\n />\n );\n };\n const renderHideToggler = (): ReactNode => {\n return (\n <span className=\"formatted-raw-ssn-eye-holder\" onClick={() => onHiddenToggle(value as string)}>\n {' '}\n {isValueHidden\n ? (\n <Eye strokeWidth={1} className=\"password-icon\" />\n )\n : (\n <EyeOff strokeWidth={1} className=\"password-icon\" />\n )}\n </span>\n );\n };\n const renderClearButton = (): ReactNode => {\n return (\n <div className=\"input-mask_clear\">\n <X onClick={onClearClick} />\n </div>\n );\n };\n const renderHint = (): ReactNode => {\n return (\n <div className={`input-mask_hint input-mask_hint--${hintPosition}`}>\n <Hint hint={hintText} className={hintClassName} side={hintPosition} />\n </div>\n );\n };\n const renderIcon = (position: 'left' | 'right' = 'left'): ReactNode => {\n return (\n <div className={`input-mask_icon input-mask_icon--${position}`}>\n {DynamicIconComponent ?? icon}\n </div>\n );\n };\n const render = (): ReactElement => {\n return (\n <div\n data-testid={testId}\n className={cn(\n 'input-mask3_wrapper',\n className,\n { 'input-mask_error': isError },\n { 'input-mask_focus': isFocused },\n { 'input-mask_blink-error': blinkError },\n { disabled: disabled || isLoading },\n )}\n tabIndex={-1}\n >\n <div\n className={`\n input-mask\n ${isError ? 'input-mask_error' : ''}\n ${isFocused ? 'input-mask_focus' : ''}\n ${blinkError ? 'input-mask_blink-error' : ''}\n `}\n >\n {showHint && isHintLeft && renderHint()}\n {isIconLeft && showIcon && renderIcon('left')}\n {renderMask()}\n {renderInput()}\n {/* \u0415\u0441\u043B\u0438 isHide \u0431\u0443\u043B\u0435\u0432\u0430, \u0437\u043D\u0430\u0447\u0438\u0442 \u0431\u0443\u0434\u0435\u043C \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u0441\u0432\u0435\u0440\u0445\u0443, \u0437\u043D\u0430\u0447\u0438\u0442 \u0442\u0430\u043C \u0441\u0432\u043E\u0439 \u0442\u0440\u0438\u0433\u0433\u0435\u0440 */}\n {withHiddenMode && typeof isHide !== 'boolean' && renderHideToggler()}\n {isClearable && renderClearButton()}\n {isIconRight && showIcon && renderIcon('right')}\n {showHint && isHintRight && renderHint()}\n </div>\n {showErrors && errorMessage && (\n <div className=\"input-mask_error-text\">{errorMessage}</div>\n )}\n {isLoading && <Spinner size=\"small\" />}\n </div>\n );\n };\n\n return render();\n}\n\nexport default InputMask3;\n", "import type { ChangeEvent } from 'react';\n\ntype InputEvent = Event | ChangeEvent<HTMLInputElement>;\n\nexport function disableDefaultBehavior(e: InputEvent): void {\n e.preventDefault();\n e.stopPropagation();\n}\n", "import type { IInputMask3Errors } from './InputMask3.interface';\n\nexport const DEFAULT_ERRORS: IInputMask3Errors = {\n onlyLetter: 'Type letter',\n onlyDigit: 'Type digit',\n onlyUpperCase: 'Type letter in UpperCase',\n onlyLowerCase: 'Type letter in LowerCase',\n default: null,\n}\nexport const UPPERCASE_LETTER_MASK_CHAR: string = 'L';\nexport const LOWERCASE_LETTER_MASK_CHAR: string = 'l';\nexport const DIGIT_MASK_CHAR: string = 'D';\nexport const SPACE_CHAR: string = '\\u00A0';\nexport const ANDROID_CHROME_TEXT_CODE: number = 229;\nexport const EXCLUDED_KEYS: string[] = ['Tab'];\n", "import { DIGIT_MASK_CHAR, LOWERCASE_LETTER_MASK_CHAR, UPPERCASE_LETTER_MASK_CHAR } from './config';\n\nexport function getSelectionText(): string {\n let text = '';\n if (window.getSelection) {\n text = window.getSelection()?.toString() ?? '';\n }\n else if (document.getSelection() && document.getSelection()?.type !== 'Control') {\n text = document.getSelection()?.toString() ?? '';\n }\n\n return text?.replace(/\\n/g, '');\n}\nexport function resetSelectionText(): void {\n if (window.getSelection) {\n window.getSelection()?.removeAllRanges();\n }\n}\nexport function copyToClipboard(str: string): Promise<void> {\n if (navigator && navigator.clipboard && navigator.clipboard.writeText)\n return navigator.clipboard.writeText(str);\n\n return Promise.reject('The Clipboard API is not available.');\n}\nexport function selectElementContents(el: Node): void {\n const sel = window.getSelection();\n sel?.selectAllChildren(el);\n}\n\nexport function isLetter(char: string): boolean {\n return Boolean(char?.length === 1 && char?.match(/[a-z]/i));\n}\nexport function isUpperCaseLetter(char: string): boolean {\n return isLetter(char) ? char === char.slice().toUpperCase() : false;\n}\nexport function isLowerCaseLetter(char: string): boolean {\n return isLetter(char) ? char === char.slice().toLowerCase() : false;\n}\nexport function isDigit(char: string): boolean {\n return Boolean(Number.isInteger(Number.parseInt(char, 10)));\n}\n\nexport function isDigitMaskChar(char: string): boolean {\n return char === DIGIT_MASK_CHAR;\n}\nexport function isLetterMaskChar(char: string): boolean {\n return (\n char === UPPERCASE_LETTER_MASK_CHAR || char === LOWERCASE_LETTER_MASK_CHAR\n );\n}\n\nexport function voidFn(): void {\n console.error('Void Function Called');\n}\n", "import type { IInputCalendarProps } from './InputCalendar.interface';\n\nimport cn from 'classnames';\nimport moment from 'moment-timezone';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport InputMask from 'react-input-mask';\nimport { useClickOutside } from '../../../Functions/useClickOutside';\n\nimport Calendar from '../Calendar/Calendar';\nimport './InputCalendar.scss';\n\nconst InputCalendar: React.FC<IInputCalendarProps> = ({\n value,\n minDate,\n maxDate,\n format = 'MM/DD/YYYY',\n isDontLimitFuture,\n onChange,\n className = '',\n placeholder = 'mm/dd/yyyy',\n mask = '99/99/9999',\n isListTop,\n disabled,\n testId = 'input-calendar',\n\n onKeyDown: onKeyDownProp,\n onKeyUp: onKeyUpProp,\n onBlur: onBlurProp,\n}) => {\n const [isOpened, setIsOpened] = useState<boolean | null>(null);\n const calendarRef = useRef(null);\n const inputRef = useRef(null);\n\n const formattedMinDate\n = moment(minDate, format).format(format) !== 'Invalid date'\n ? moment(minDate, format).format(format)\n : null;\n const formattedMaxDate\n = moment(maxDate, format).format(format) !== 'Invalid date'\n ? moment(maxDate, format).format(format)\n : null;\n\n const momentMinDate = moment(formattedMinDate, format).startOf('day');\n const momentMaxDate = moment(formattedMaxDate, format).startOf('day');\n\n useClickOutside(calendarRef, () => setIsOpened(false));\n\n const changeInputValue = (val: string): void => {\n if (onChange) onChange(val);\n };\n\n const changeCalendarDay = (val: string): void => {\n if (onChange) onChange(val);\n };\n\n const getCalendarValue = (value: string): string => {\n const date = moment(value).format('L');\n\n if (date !== 'Invalid date') return date;\n\n return moment(new Date()).format('L');\n };\n\n const handleBlur = (): void => {\n let value = inputRef?.current ? (inputRef?.current as HTMLInputElement)?.value : '';\n if (\n moment(value, format).format(format) === 'Invalid date'\n || value.includes('_')\n ) {\n value = '';\n }\n\n if (\n value\n && typeof isOpened === 'boolean'\n && moment(value, format).startOf('day').isBefore(momentMinDate, 'days')\n ) {\n if (formattedMinDate) onChange(formattedMinDate);\n }\n else if (\n value\n && typeof isOpened === 'boolean'\n && moment(value, format).endOf('day').isAfter(momentMaxDate, 'days')\n ) {\n if (formattedMaxDate) onChange(formattedMaxDate);\n }\n else if (value) {\n onChange(moment(value, format).format(format));\n }\n };\n\n const onKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (e): void => {\n if (isOpened && [9, 13].includes(e.keyCode)) {\n setIsOpened(false);\n }\n\n onKeyDownProp?.(e);\n };\n\n const onKeyUp: React.KeyboardEventHandler<HTMLInputElement> | undefined = (e): void => {\n const isValidLenght = (e.target as HTMLInputElement).value?.replace(/\\D/g, '').length === 8;\n\n if ([9, 13].includes(e.keyCode)) {\n setIsOpened(true);\n }\n\n if (isValidLenght) {\n setIsOpened(false);\n handleBlur();\n }\n else {\n setIsOpened(true);\n }\n onKeyUpProp?.(e);\n };\n\n useEffect(() => {\n if (typeof isOpened === 'boolean' && !isOpened) {\n handleBlur();\n }\n }, [isOpened]);\n\n return (\n <div\n data-testid={testId}\n className={cn('input__wrap calendar-container', className, {\n 'calendar-container_disabled': disabled,\n })}\n ref={calendarRef}\n >\n <InputMask\n mask={mask}\n placeholder={placeholder}\n value={value}\n onChange={e => changeInputValue(e.target.value)}\n className=\"calendar-dropdown\"\n onClick={() => setIsOpened(true)}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n onBlur={e => onBlurProp?.(e)}\n ref={inputRef}\n />\n {isOpened\n ? (\n <Calendar\n date={getCalendarValue(value)}\n setDate={newDate => changeCalendarDay(newDate)}\n params={{\n minDate: formattedMinDate as string,\n maxDate: formattedMaxDate as string,\n momentMinDate,\n momentMaxDate,\n isDontLimitFuture,\n }}\n isListTop={isListTop}\n setIsOpened={setIsOpened}\n />\n )\n : null}\n </div>\n );\n};\n\nexport default InputCalendar;\n", "import { useEffect } from \"react\";\n\nexport const useClickOutside = (ref, setOut, open) => {\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n setOut(open);\n }\n }\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref]);\n};\n", "import type { IInputColorProps } from './InputColor.interface';\n\nimport cn from 'classnames';\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport {\n formatToHex,\n formatToOnlyASCIICodeText,\n} from '../../../Functions/fieldValueFormatters';\n\nimport Input from '../Input/Input';\n\nimport './InputColor.scss';\n\nconst InputColor: React.FC<IInputColorProps> = ({\n value = '',\n className,\n symbolsLimit = 7,\n onChange,\n withHexFormat = {\n withSharp: false,\n isTurnOn: true,\n },\n initialHexOfColorBlock = '#9AA0B9',\n testId = '',\n withDelete = true,\n ...args\n}) => {\n const { withSharp = false, isTurnOn: isHex = true } = withHexFormat;\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement> | string) => {\n let inputValue = typeof e === 'string' ? e : e.target.value;\n inputValue = formatToOnlyASCIICodeText(inputValue);\n if (isHex) {\n inputValue = formatToHex({ inputValue, withSharp });\n }\n if (symbolsLimit && inputValue.length > symbolsLimit) {\n inputValue = inputValue.substring(0, symbolsLimit);\n }\n onChange?.(inputValue);\n },\n [isHex, withSharp, symbolsLimit, onChange],\n );\n\n const colorBlockStyle = useMemo(() => {\n const isValidHex = /^#[0-9A-F]{6}$/i.test(value);\n return {\n backgroundColor: isValidHex ? value : initialHexOfColorBlock,\n };\n }, [value, initialHexOfColorBlock]);\n\n return (\n <div className={cn('inputColor', className)}>\n <div className=\"inputColor__color-block\" style={colorBlockStyle} />\n <Input\n {...args}\n // @ts-ignore\n value={value}\n withDelete={withDelete}\n onChange={handleChange}\n symbolsLimit={symbolsLimit}\n testId={`inputColor--key-${testId}`}\n className={cn('input inputColor__input')}\n type=\"text\"\n />\n </div>\n );\n};\n\nexport default InputColor;\n", "import type { Moment } from 'moment-timezone';\nimport type { LegacyRef } from 'react';\n\nimport type { IInputDateRange, IInputDateRangeProps } from './InputDateRange.interface';\nimport cn from 'classnames';\nimport moment from 'moment-timezone';\n\nimport React, { useLayoutEffect, useRef, useState } from 'react';\nimport useIsMobile from '../../../Functions/useIsMobile/useIsMobile';\n\nimport Arrow from '../../UI/Arrow/Arrow';\nimport OpenedPart from './components/OpenedPart';\n\nimport {\n ALL_TIME_KEY,\n CUSTOM_INTERVAL_KEY_TEXT,\n getActualDateRange,\n INTERVALS,\n MAIN_FORMAT,\n MAIN_TIME_FORMAT,\n useClickOutside,\n useToggle,\n} from './dependencies';\nimport './InputDateRange.scss';\n\nfunction checkFormat(date: Date | Moment | string | undefined, format: string): string | null {\n const momentObj = moment(date, format);\n return momentObj.isValid() ? momentObj.format(format) : null;\n}\n\nconst InputDateRange: React.FC<IInputDateRangeProps> = (props) => {\n const {\n txt,\n id,\n label,\n subLabel,\n className,\n value,\n onChange,\n error,\n disabled,\n isHoverable,\n isCompact = false,\n hideArrows = false,\n isOptionsRight,\n isUseAbs,\n testId = 'input-date-range',\n minDate,\n maxDate,\n minMaxDateParseFormat = 'MM/DD/YYYY',\n isDontLimitFuture,\n isListTop,\n isAltArrows,\n renderIntervals,\n isDoNotPullOutListOfMainContainer,\n } = props;\n\n const { isMobile } = useIsMobile();\n\n const formatedMinDate = checkFormat(minDate, minMaxDateParseFormat);\n const formatedMaxDate = checkFormat(maxDate, minMaxDateParseFormat);\n\n const momentMinDate = moment(formatedMinDate, minMaxDateParseFormat).startOf(\n 'day',\n );\n const momentMaxDate = moment(formatedMaxDate, minMaxDateParseFormat).startOf(\n 'day',\n );\n\n const actualValues = getActualDateRange(value);\n const { isToggled, toggle, toggleOn, toggleOff } = useToggle(false);\n const [current, setCurrent] = useState(actualValues?.intervalKey);\n const [isCompare, setIsCompare] = useState(actualValues?.compare);\n\n const dropdownContainers = document.getElementsByClassName(\n 'dropdown__container',\n );\n const ref = useClickOutside(toggleOff, dropdownContainers, !(!isUseAbs && !isMobile));\n const internalContainerRef = useRef(null);\n\n const [dateRangeContainerId] = useState(\n Math.random().toString(16).slice(2),\n );\n\n const handleChange = (input: IInputDateRange): IInputDateRange => {\n const newValue = getActualDateRange(input);\n const formatedValue = {\n intervalKey: newValue.intervalKey,\n start: newValue.start\n ? moment(newValue.start).format(MAIN_FORMAT)\n : newValue.start,\n end: newValue.end\n ? moment(newValue.end).format(MAIN_FORMAT)\n : newValue.end,\n ...(newValue.compare ? { compare: newValue.compare } : {}),\n ...(newValue.startPrevDate\n ? { startPrevDate: moment(newValue.startPrevDate).format(MAIN_FORMAT) }\n : {}),\n ...(newValue.endPrevDate\n ? { endPrevDate: moment(newValue.endPrevDate).format(MAIN_FORMAT) }\n : {}),\n };\n\n onChange(formatedValue);\n return formatedValue;\n };\n\n const Range = (): JSX.Element | null => {\n const SYMBOLS_QUANTITY_IF_TIME_ADDED = 13;\n if (!actualValues.start && value.start) {\n actualValues.start = value.start;\n actualValues.end = value.end || '';\n }\n const { start, end } = actualValues;\n if (!start || !end) return null;\n\n const startTime = moment(start).format(MAIN_TIME_FORMAT);\n const endTime = moment(end).format(MAIN_TIME_FORMAT);\n\n const firstPart = `${moment(start).format('ll')} ${startTime !== '00:00' ? `(${startTime})` : ''}`;\n const secondPart = `${(endTime !== '00:00' ? moment(end) : moment(end).subtract(1, 'days')).format('ll')} ${\n endTime !== '00:00' ? `(${endTime})` : ''\n }`;\n\n const getClasses = (base: string): string =>\n cn('date-range-input__range-text', {\n 'date-range-input__range-text_little':\n base.length > SYMBOLS_QUANTITY_IF_TIME_ADDED,\n });\n\n return (\n <>\n <span className={getClasses(firstPart)}>\n {firstPart}\n {endTime === '00:00'\n && moment(end).isSame(moment(start).add(1, 'days'), 'day')\n ? ''\n : ` - `}\n </span>\n {endTime === '00:00'\n && moment(end).isSame(moment(start).add(1, 'days'), 'day')\n ? null\n : (\n <span className={getClasses(secondPart)}>{secondPart}</span>\n )}\n </>\n );\n };\n\n const slideInterval = (direction = 'forward'): void => {\n const { start, end } = actualValues;\n const intervalHoursCount = moment(end).diff(start, 'hours');\n let newEnd;\n let newStart;\n const endHours = moment(end).hours();\n const startHours = moment(start).hours();\n if (direction === 'forward') {\n newStart = moment(end)\n .add(endHours === 0 ? 0 : 1, 'day')\n .hours(startHours)\n .toDate();\n newEnd = moment(newStart).add(intervalHoursCount, 'hours');\n }\n else {\n newEnd = moment(start)\n .subtract(endHours === 0 ? 0 : 1, 'day')\n .hours(endHours)\n .toDate();\n newStart = moment(newEnd).subtract(intervalHoursCount, 'hours');\n }\n const startPrevDate = moment(newStart)\n .subtract(intervalHoursCount, 'hours')\n .subtract(1, 'seconds');\n const endPrevDate = moment(newEnd).subtract(1, 'seconds');\n handleChange({\n ...value,\n intervalKey: getActualDateRange({\n start: newStart,\n end: newEnd,\n })?.intervalKey,\n start: newStart,\n end: newEnd,\n startPrevDate,\n endPrevDate,\n });\n };\n\n const handleArrowClick = (type: string): void => {\n slideInterval(type === 'right' ? 'forward' : 'back');\n toggleOff();\n };\n\n const getParentNode = (): Element | null => {\n return (\n document.querySelector('div#root') ?? document.querySelector('div#app')\n );\n };\n const initDateRangeContainer = (): void => {\n document.getElementById(dateRangeContainerId)?.remove();\n\n const dateRangeContainer = document.createElement('div');\n\n dateRangeContainer.setAttribute('id', dateRangeContainerId);\n dateRangeContainer.classList.add('input-date-range__mobile-container');\n\n getParentNode()?.append(dateRangeContainer);\n };\n\n const getDateRangeContainer = (): HTMLElement | null => {\n return document.getElementById(dateRangeContainerId);\n };\n\n useLayoutEffect(() => {\n initDateRangeContainer();\n return () => {\n getDateRangeContainer()?.remove();\n };\n }, []);\n\n return (\n <div\n data-testid={testId}\n ref={internalContainerRef}\n className={cn('date-range-input', className, {\n 'date-range-input_compact': isCompact,\n 'date-range-input_hide-arrows': hideArrows,\n 'date-range-input_focused': isToggled,\n 'date-range-input_error': error,\n 'date-range-input_disabled': disabled,\n })}\n >\n <span className=\"date-range-input__label\">{label}</span>\n <div\n className=\"date-range-input__wraper\"\n ref={ref as LegacyRef<HTMLDivElement>}\n onMouseEnter={isHoverable ? toggleOn : () => null}\n onMouseLeave={isHoverable ? toggleOff : () => null}\n >\n <div\n className={cn('date-range-input__absolut-wraper', {\n 'date-range-input__absolut-wraper_right-position': isOptionsRight,\n })}\n >\n <div className={cn('date-range-input__static-part')}>\n <button\n type=\"button\"\n id={id}\n className={cn('date-range-input__toggle-button')}\n disabled={disabled}\n onClick={!disabled && !isHoverable ? toggle : undefined}\n >\n <div className=\"date-range-input__interval-key\">\n {subLabel && (\n <span className=\"date-range-input__label\">\n {subLabel}\n :\n {' '}\n </span>\n )}\n <span>\n {(txt?.labels && actualValues?.intervalKey && txt.labels[actualValues?.intervalKey])\n ?? (actualValues?.intervalKey && INTERVALS[actualValues?.intervalKey]\n ? INTERVALS[actualValues?.intervalKey]?.label\n : CUSTOM_INTERVAL_KEY_TEXT)}\n </span>\n {current !== ALL_TIME_KEY && <span>:</span>}\n </div>\n {!isCompact && (\n <div className={cn('date-range-input__range', {})}>\n <Range />\n </div>\n )}\n </button>\n {!isCompact && !hideArrows && (\n <div className={cn('date-range-input__arrows-block')}>\n <Arrow\n testId={testId}\n type=\"left\"\n className=\"date-range-input__arrow\"\n onClick={() => handleArrowClick('left')}\n disabled={\n disabled\n || actualValues?.intervalKey === ALL_TIME_KEY\n || (formatedMinDate\n && moment(actualValues?.start)\n .subtract(\n moment(actualValues?.end).diff(\n actualValues?.start,\n 'hours',\n ),\n 'hours',\n )\n .isBefore(momentMinDate))\n }\n isAlt={isAltArrows}\n />\n <Arrow\n testId={testId}\n type=\"right\"\n className=\"date-range-input__arrow\"\n onClick={() => handleArrowClick('right')}\n disabled={\n disabled\n || actualValues?.intervalKey === ALL_TIME_KEY\n || (!isDontLimitFuture\n && (formatedMaxDate\n ? moment(actualValues?.end)\n .endOf('day')\n .subtract(\n moment(actualValues?.end).diff(\n actualValues?.start,\n 'hours',\n ),\n 'hours',\n )\n .isAfter(momentMaxDate.startOf('day'))\n : moment(actualValues?.end)\n .add(\n moment(actualValues?.end).diff(\n actualValues?.start,\n 'hours',\n ),\n 'hours',\n )\n .isAfter(moment().add(1, 'day').startOf('day'))))\n }\n isAlt={isAltArrows}\n />\n </div>\n )}\n </div>\n {isToggled && !isUseAbs && (\n <OpenedPart\n {...props}\n dateRangeContainerId={dateRangeContainerId}\n mainId={id as string}\n testId={testId}\n actualValues={actualValues}\n current={current as string}\n setCurrent={setCurrent}\n isCompare={isCompare}\n setIsCompare={setIsCompare}\n toggleOff={toggleOff}\n onChange={handleChange}\n minDate={formatedMinDate as string}\n maxDate={formatedMaxDate as string}\n momentMinDate={momentMinDate}\n momentMaxDate={momentMaxDate}\n isDontLimitFuture={isDontLimitFuture}\n isListTop={isListTop}\n renderIntervals={renderIntervals}\n isDoNotPullOutListOfMainContainer={isDoNotPullOutListOfMainContainer}\n />\n )}\n </div>\n </div>\n {error && <span className=\"date-range-input__error-block\">{error}</span>}\n </div>\n );\n};\n\nexport default React.memo(InputDateRange);\n", "import type { ReactElement, ReactNode } from 'react';\n\nimport type { IArrowProps } from './Arrow.interface';\nimport cn from 'classnames';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { getStyles } from '../../../Functions/utils';\nimport './Arrow.scss';\n\nfunction Arrow({ type, className, onClick, disabled, testId, isAlt }: IArrowProps): ReactElement | null {\n const ref = useRef<HTMLDivElement>(null);\n const [color, setColor] = useState<string>('currentColor');\n\n useEffect(() => {\n if (ref.current) {\n setColor(getStyles(ref.current, 'color') as string);\n }\n }, [ref.current]);\n if (!type || (type !== 'left' && type !== 'right')) return null;\n\n function renderSVG(): ReactNode {\n if (type === 'left') {\n if (isAlt) {\n return (\n <svg\n data-testid={testId}\n version=\"1.1\"\n id=\"Layer_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M12.7,8H3.3\"\n stroke={color}\n fill=\"none\"\n strokeWidth={1.3333}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8,3.3L3.3,8L8,12.7\"\n stroke={color}\n fill=\"none\"\n strokeWidth={1.3333}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n return (\n <svg\n data-testid={testId}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M15 18L9 12L15 6\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n if (isAlt) {\n return (\n <svg\n data-testid={testId}\n id=\"Layer_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M3.3,8h9.3\"\n stroke={color}\n fill=\"none\"\n strokeWidth={1.3333}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8,3.3L12.7,8L8,12.7\"\n stroke={color}\n fill=\"none\"\n strokeWidth={1.3333}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n return (\n <svg\n data-testid={testId}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9 18L15 12L9 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n\n return (\n <div\n data-testid={`arrow--key-${testId}--type-${type}`}\n ref={ref}\n className={cn('arrow', `arrow_${type}`, className, {\n arrow_disabled: disabled,\n })}\n onClick={onClick}\n >\n {renderSVG()}\n </div>\n );\n}\n\nexport default Arrow;\n", "import type { Moment } from 'moment-timezone';\nimport type { LegacyRef, ReactElement, ReactNode } from 'react';\n\nimport type { IIntervalItem, IOpenedPartProps } from '../InputDateRange.interface';\nimport cn from 'classnames';\nimport moment from 'moment-timezone';\nimport React, { useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport useIsMobile from '../../../../Functions/useIsMobile/useIsMobile';\nimport { useResize } from '../../../../Functions/useResize';\n\nimport { capitalized } from '../../../../Functions/utils';\n\nimport Modal from '../../../UI/Modal/Modal';\nimport Dropdown from '../../Dropdown/Dropdown';\n\nimport {\n CUSTOM_INTERVAL_KEY_TEXT,\n CUSTOM_INTERVAL_KEY as customKey,\n INTERVALS as intervals,\n} from '../dependencies';\nimport Datepicker from './Datepicker';\nimport SelectItem from './SelectItem';\n\nconst OpenedPart: React.FC<IOpenedPartProps> = (props): ReactElement => {\n const {\n dateRangeContainerId,\n txt,\n buttonsTypes,\n actualValues,\n onChange = () => {},\n isCompact = false,\n isIntervalsHidden = false,\n isCompareHidden = false,\n limitRange,\n isOptionsRight,\n current,\n setCurrent,\n isCompare,\n setIsCompare,\n toggleOff,\n isShortWeekNames,\n minDate,\n maxDate,\n momentMinDate,\n momentMaxDate,\n isDontLimitFuture,\n isListTop,\n mainId,\n testId,\n withMobileLogic,\n isDoNotPullOutListOfMainContainer,\n renderIntervals = ['today', 'yesterday', 'thisWeek', 'lastWeek', 'last7Days', 'last14Days', 'last30Days', 'thisMonth', 'lastMonth', 'last6Months', 'thisYear', 'lastYear', 'allTime'],\n } = props;\n const { isMobile } = useIsMobile();\n\n const boxRef = useRef<HTMLDivElement>();\n const { elemPosition } = useResize(boxRef);\n const [mobileChange, setMobileChange] = useState({});\n\n const openedPartClass = cn(\n 'date-range-input__opened-part',\n 'opened-part',\n { [`opened-part--${elemPosition}`]: elemPosition },\n { 'opened-part--top': isListTop },\n );\n const openedPartWrapperClass = cn('opened-part__wrapper', {\n 'opened-part__wrapper_right-position-once-element':\n isOptionsRight && (isCompact || isIntervalsHidden),\n });\n\n const filteredIntervals: { [key: string]: IIntervalItem } = renderIntervals\n ? Object.keys(intervals).filter(key => renderIntervals.includes(key)).reduce((result, key) => {\n return {\n ...result,\n [key]: intervals?.[key],\n }\n }, {})\n : intervals;\n\n const items = isCompact\n ? [...Object.keys(filteredIntervals)]\n : [...Object.keys(filteredIntervals), customKey];\n\n const [activeInterval, setActiveInterval] = useState<string>(\n actualValues?.intervalKey ?? '',\n );\n\n const handleItemClick = (item: string): void => {\n if (item !== customKey) {\n onChange({\n intervalKey: item,\n compare: isCompare,\n });\n setTimeout(() => toggleOff(), 0);\n }\n setCurrent(item);\n };\n\n const getSelectedMode = (newValues: { start: Moment | Date | string; end: Moment | Date | string; }): string => {\n const { start, end } = newValues;\n if (moment(start).get('hour') !== 0 || moment(end).get('hour') !== 0) {\n return customKey;\n }\n for (const [key, interval] of Object.entries(filteredIntervals)) {\n if (\n moment(start).isSame((interval as IIntervalItem).start())\n && moment(end).isSame((interval as IIntervalItem).end())\n ) {\n return key;\n }\n }\n return customKey;\n };\n\n const renderDatepicker = (): ReactElement => {\n return (\n <Datepicker\n mainId={mainId}\n testId={testId}\n className={cn('opened-part__date-picker')}\n buttonsTypes={buttonsTypes}\n values={actualValues}\n onChangeMobile={setMobileChange}\n onChange={(data) => {\n onChange({\n intervalKey: current,\n ...data,\n });\n toggleOff();\n }}\n getSelectedMode={getSelectedMode}\n onChangeInterval={val => setCurrent(val)}\n onChangeCompare={data => setIsCompare?.(data)}\n onCancel={toggleOff}\n isCompareHidden={isCompareHidden}\n limitRange={limitRange}\n setActiveInterval={setActiveInterval}\n isShortWeekNames={isShortWeekNames}\n minDate={minDate}\n maxDate={maxDate}\n momentMinDate={momentMinDate}\n momentMaxDate={momentMaxDate}\n isDontLimitFuture={isDontLimitFuture}\n withMobileLogic={withMobileLogic && isMobile}\n isDoNotPullOutListOfMainContainer={isDoNotPullOutListOfMainContainer}\n />\n );\n };\n\n const renderOpenedPart = (): JSX.Element => {\n return (\n <div className={openedPartClass} ref={boxRef as LegacyRef<HTMLDivElement>}>\n <div className={openedPartWrapperClass}>\n {!isIntervalsHidden && (\n <div className={cn('opened-part__intervals-list')}>\n {items.map((item, index) => {\n if (filteredIntervals[item]?.isHidden) return null;\n return (\n <SelectItem\n testId={testId}\n key={index}\n item={item}\n label={\n (txt?.labels && txt?.labels[item])\n || filteredIntervals[item]?.label\n || (item === customKey ? CUSTOM_INTERVAL_KEY_TEXT : item)\n }\n isActive={activeInterval === item}\n onItemClick={() => handleItemClick(item)}\n disabled={\n !!(item === customKey\n || (minDate\n && filteredIntervals[item]?.start?.()?.isBefore?.(momentMinDate)))\n }\n />\n );\n })}\n </div>\n )}\n {!isCompact && renderDatepicker()}\n </div>\n </div>\n );\n };\n\n const renderMobileOpenedPart = (): ReactNode => {\n return (\n <Modal\n zIndex={101}\n variant=\"title\"\n className=\"modal-fin date-picker-modal\"\n isOpen\n title=\"Select Interval\"\n onlyTitle\n confirmBtnLabel=\"Apply\"\n onConfirm={() => {\n onChange({\n intervalKey: current,\n ...mobileChange,\n });\n setMobileChange({});\n toggleOff();\n }}\n closeModal={() => {\n setMobileChange({});\n toggleOff();\n }}\n onDecline={() => {\n setMobileChange({});\n toggleOff();\n }}\n withMobileLogic={withMobileLogic}\n >\n <Dropdown\n label=\"Select Interval\"\n value={activeInterval}\n className=\"dropdown-fin\"\n onChange={v => handleItemClick(v.toString())}\n options={items\n ?.filter(item => !filteredIntervals[item]?.isHidden)\n ?.map((item) => {\n return {\n label: capitalized(\n (txt?.labels && txt?.labels[item])\n || filteredIntervals[item]?.label\n || (item === customKey ? CUSTOM_INTERVAL_KEY_TEXT : item),\n ),\n value: item,\n };\n })}\n withMobileLogic={withMobileLogic}\n sortAlphabetical={false}\n />\n {renderDatepicker()}\n </Modal>\n );\n };\n\n const getDateRangeContainer = (): HTMLElement | null => {\n return document.getElementById(dateRangeContainerId);\n };\n const renderDateRangeMobileContainer = (): JSX.Element => {\n const dateRangeContainer = getDateRangeContainer();\n\n if (!dateRangeContainer) return <></>;\n\n return createPortal(renderMobileOpenedPart(), dateRangeContainer);\n };\n\n return withMobileLogic && isMobile\n ? renderDateRangeMobileContainer()\n : renderOpenedPart();\n}\nexport default OpenedPart;\n", "import { useEffect, useLayoutEffect, useState } from \"react\";\n\nexport const useResize = (element) => {\n const [elemPosition, setElemPosition] = useState(\"\");\n\n const onResize = (elemRightPosition) => {\n if (elemRightPosition > document.documentElement.clientWidth) {\n return setElemPosition(\"left\");\n } else setElemPosition(\"\");\n };\n\n useEffect(() => {\n const elemRightPosition =\n element?.current?.getBoundingClientRect().right + 20;\n window.addEventListener(\"resize\", () => onResize(elemRightPosition));\n\n return () => {\n window.removeEventListener(\"resize\", () => setElemPosition(\"\"));\n };\n }, []);\n\n useLayoutEffect(() => {\n const elemRightPosition =\n element?.current?.getBoundingClientRect().right + 20;\n if (elemRightPosition > document.documentElement.clientWidth) {\n return setElemPosition(\"left\");\n }\n }, []);\n\n return { elemPosition };\n};\n", "import type { ReactElement, RefObject } from 'react';\nimport type { ISuspendProcessing } from '../../../Functions/useKeyPress/useKeyPress';\nimport type TWithEventManagementAsObj from '../../../types/declaration/TWithEventManagementAsObj';\nimport type { IModalProps } from './Modal.interface';\n\nimport cn from 'classnames';\nimport { useEffect, useLayoutEffect, useMemo, useRef } from 'react';\n\nimport useHandleKeyPress from '../../../Functions/useKeyPress/useHandleKeyPress';\nimport { getIsOnlyAnObject } from '../../../Functions/utils';\nimport Button from '../Button/Button';\n\nimport { EVENTS } from './partials/_constants';\n\nimport { getOnKeyPress, getWithEventManagementStructure } from './partials/_utils';\nimport ModalFooter from './partials/ModalFooter';\nimport ModalTitle from './partials/ModalTitle';\n\nimport useMobileModal from './partials/useMobileModal';\nimport './Modal.scss';\nimport './ModalMobile.scss';\n\nconst attrsForModalBodyDefault = {}\nexport const KEY_CODE = Object.freeze({\n ENTER: 13,\n ESC: 27,\n} as const);\n\nexport function renderModalTitle({\n mode,\n title,\n onlyTitle,\n}: {\n mode?: string;\n title: string;\n onlyTitle?: boolean;\n}): string {\n if (mode && mode !== 'default' && !onlyTitle) {\n return `${mode[0].toUpperCase()}${mode.slice(1)} ${title}`;\n }\n return title;\n}\n\nfunction Modal({\n ref,\n id,\n testId = 'modal',\n zIndex = 100,\n isOpen,\n onConfirm,\n onDecline,\n closeModal,\n className,\n variant = 'primary',\n size,\n mode,\n title,\n onlyTitle,\n atributesForModalBody = attrsForModalBodyDefault,\n confirmBtnClassName,\n confirmBtnLabel,\n confirmBtnVariant = 'primary',\n confirmBtnDisable,\n confirmBtnIcon,\n isConfirmBtnIconPositionRight,\n noConfirmBtn,\n forced,\n closeBtnClassName,\n closeBtnText,\n closeBtnVariant,\n closeBtnDisable,\n closeBtnIcon,\n btnClassNames,\n isCloseBtnIconPositionRight,\n noCloseBtn,\n noHeader,\n noHeaderCloseBtn,\n customHeader,\n declineBtnDisable,\n noFooter,\n customFooter,\n withFixedFooter,\n leftContentOfFooter,\n isSubmittingByEnter: isSubmittingByEnterOuter = true,\n isClosingByEsc: isClosingByEscOuter = true,\n withEventManagement = false,\n submitOnEnter,\n closeOnEsc,\n withMobileLogic,\n children,\n}: IModalProps & { ref?: React.RefObject<HTMLDivElement | null> }): ReactElement | null {\n const internalRef = useRef<HTMLDivElement | null>(null);\n const modalRef = ref || internalRef;\n\n // ? \u041F\u043E\u044F\u0441\u043D\u0435\u043D\u0438\u0435 \u0440\u0430\u0437\u043D\u0438\u0446\u044B \u043C\u0435\u0436\u0434\u0443 isSubmittingByEnter \u0438 confirmBtnDisable (\u0442\u043E\u0436\u0435 \u0441\u0430\u043C\u043E\u0435 \u0434\u043B\u044F isClosingByEsc \u0438 closeBtnDisable)\n // ? - isSubmittingByEnter \u043E\u0442\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0443 \u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440\u0430 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432, \u044D\u0442\u043E \u0441\u0442\u0430\u0442\u0438\u043A\u0430\n // ? (\u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440\u044B \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432 \u0441\u0442\u0430\u0432\u044F\u0442\u0441\u044F 1 \u0440\u0430\u0437, \u0432 useEffect \u043F\u043E \u043D\u0443\u043B\u0435\u0432\u043E\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438,\n // ? isSubmittingByEnter: false - \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u0435\u0433\u043E \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0443)\n // ? - confirmBtnDisable \u043F\u043E\u0434\u043C\u0435\u043D\u044F\u0435\u0442 onConfirm \u043D\u0430 \u0440\u0435\u0444\u043A\u0435, \u044D\u0442\u043E \u0434\u0438\u043D\u0430\u043C\u0438\u043A\u0430\n // ? (\u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D, \u0441\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u043F\u043E \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u043C \u0438\u0432\u0435\u043D\u0442\u0430\u043C \u0438\u0434\u0443\u0442, \u043D\u043E \u041D\u0415 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442\u0441\u044F onConfirm)\n const onConfirmRef = useRef(onConfirm);\n const closeModalRef = useRef(closeModal);\n const onDeclineRef = useRef(onDecline);\n\n // todo(vl) - \u043D\u0430 \u0441\u0442\u0430\u0440\u044B\u0445 \u043F\u0440\u043E\u043F\u0430\u0445 \u0438 \u0440\u0430\u043D\u044C\u0448\u0435 \u0434\u0435\u0444\u043E\u043B\u0442 \u0431\u044B\u043B true\n // todo(vl) - \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0434\u043B\u044F \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438 \u0441\u0442\u0430\u0440\u044C\u044F \u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u043E\u0442\u0441\u043B\u0435\u0436\u0438\u0432\u0430\u0442\u044C \u0437\u0430\u043F\u0440\u0435\u0442\u044B\n const isSubmittingByEnter = submitOnEnter === false\n ? false\n : isSubmittingByEnterOuter;\n\n const isClosingByEsc = closeOnEsc === false\n ? false\n : isClosingByEscOuter;\n\n // ! \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: withEventManagement \u0438 withEventManagementStructure \u041D\u0415 \u043E\u0434\u043D\u043E \u0438 \u0442\u043E\u0436\u0435!\n // ! withEventManagementStructure (\u0441\u043C\u043E\u0442\u0440\u0438 getWithEventManagementStructure \u0438 \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u044E)\n // ! - \u0442\u0443\u0442 \u0413\u0410\u0420\u0410\u041D\u0422\u0418\u0420\u041E\u0412\u0410\u041D\u041E \u0435\u0441\u0442\u044C \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B \u043F\u0440\u043E\u043F\u0441\u043E\u0432 \u0438\u0437 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0435\u0439 \u0432\u0435\u0442\u043A\u0438 InnerTypes (\u0443\u0436\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435);\n // ! - \u0442\u0443\u0442 \u043D\u0435\u0442 \u043D\u0438\u0447\u0435\u0433\u043E \u0438\u0437 ICommon\n const withEventManagementStructure = getWithEventManagementStructure(id, withEventManagement);\n const isUseAutoBlockingForHandlers = withEventManagementStructure.isWithSubmitAndCloseManagement;\n\n // ? \u0417\u0430\u0432\u044F\u0437\u0430\u043B \u0430\u0432\u0442\u043E\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u043A\u0443 \u043D\u0430 \u0438\u0432\u0435\u043D\u0442-\u043C\u0435\u043D\u0435\u0434\u0436\u043C\u0435\u043D\u0442 \u0434\u043B\u044F \"\u043C\u044F\u0433\u043A\u043E\u0433\u043E\" \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0430, \u0447\u0442\u043E\u0431\u044B \u043D\u0435\u0431\u044B\u043B\u043E \u0441\u044E\u0440\u043F\u0440\u0438\u0437\u043E\u043C \u043F\u043E \u0432\u0441\u0435\u043C \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u043C\n const isOnConfirmBlocked = typeof onConfirm === 'function' && isUseAutoBlockingForHandlers && confirmBtnDisable;\n const isCloseModalBlocked = typeof closeModal === 'function' && isUseAutoBlockingForHandlers && closeBtnDisable;\n const isOnDeclineBlocked = typeof onDecline === 'function' && isUseAutoBlockingForHandlers && declineBtnDisable;\n\n const {\n modalMobileHeaderRef,\n modalMobileBodyRef,\n modalMobileFooterRef,\n MODALS_LOGIC,\n renderModal,\n isMobile,\n scrollTop,\n scrollHeight,\n } = useMobileModal({\n withMobileLogic,\n withFixedFooter,\n isOpen,\n });\n\n // ? \u041B\u0443\u0447\u0448\u0435 \u0447\u0435\u043C useCallback, \u0442.\u043A.\n // ? - \u041D\u0415 \"\u0434\u0451\u0440\u0433\u0430\u0435\u0442\" \u0432\u0435\u0440\u0441\u0442\u043A\u0443 (\u0445\u043E\u0442\u044F \u043F\u043E \u0444\u0430\u043A\u0442\u0443 \u0440\u0435-\u0440\u0435\u043D\u0434\u0435\u0440 \u043F\u0440\u043E\u0438\u0437\u043E\u0439\u0434\u0435\u0442 \u0434\u043B\u044F useLayoutEffect-\u043E\u0432, \u043D\u043E \u0432 \u0448\u0435\u0434\u043E\u0443-\u0434\u043E\u043C\u0435 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0441\u044F)\n // ? - \u041D\u0415 \u0437\u0430\u043C\u044B\u043A\u0430\u0435\u0442 \u0432\u043D\u0435\u0448\u043D\u0438\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F (\u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u0435\u0442 useLayoutEffect)\n // ? - \u041D\u0415 \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440\u044B\n // ? \u0421\u0443\u0442\u044C \u043B\u043E\u0433\u0438\u043A\u0438: \"\u0438\u0434\u0438 \u043F\u043E \u044D\u0442\u043E\u0439 \u0441\u0441\u044B\u043B\u043A\u0435 \u0438 \u043F\u043E\u043F\u044B\u0442\u0430\u0439\u0441\u044F \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0442\u043E \u0447\u0442\u043E \u0442\u0430\u043C \u0435\u0441\u0442\u044C\",\n // ? \u0441\u0441\u044B\u043B\u043A\u0430 - \u043F\u0435\u0440\u043C\u0430\u043D\u0435\u043D\u0442\u043D\u0430\u044F, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0435 \u043C\u043E\u0436\u0435\u0442 \u043C\u0435\u043D\u044F\u0442\u044C\u0441\u044F \u043D\u0435\u0437\u0430\u043C\u0435\u0442\u043D\u043E \u0434\u043B\u044F \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0438\n const handle = useMemo(() => ({\n confirm: () => onConfirmRef.current?.(),\n close: () => closeModalRef.current?.(),\n\n decline: () => {\n if (typeof onDeclineRef.current === 'function') onDeclineRef.current();\n else closeModalRef.current?.();\n },\n }), []);\n\n // ? \u041E\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u043C \u043A\u043E\u043B\u0431\u0435\u043A\u0438, \u0447\u0435\u043A\u0430\u044E\u0449\u0438\u0435 \u0434\u043E\u043F. \u0443\u0441\u043B\u043E\u0432\u0438\u044F \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u0438\u0432\u0435\u043D\u0442\u043E\u0432.\n // ? \u042F \u043F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u044E, \u0447\u0442\u043E \u0432\u0430\u0436\u043D\u043E \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u044D\u0442\u0443 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0438\u043C\u0435\u043D\u043D\u043E \u0447\u0435\u0440\u0435\u0437 \u043A\u043E\u043B\u0431\u0435\u043A\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0431\u0443\u0434\u0443\u0442 \u0447\u0435\u043A\u0430\u0442\u044C \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F,\n // ? \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u041D\u0415 \u0441\u043F\u0440\u043E\u0432\u043E\u0446\u0438\u0440\u0443\u044E\u0442 \u0440\u0435\u0440\u0435\u043D\u0434\u0435\u0440 \u0434\u043B\u044F useCalbeck-\u043B\u043E\u0433\u0438\u043A\u0438, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u044C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0444\u043E\u0440\u043C\u044B \u043F\u0440\u044F\u043C\u043E \u0438\u0437 DOM\n // ? (\u0442.\u043A. \u044D\u0442\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u043C\u043E\u0434\u0430\u043B\u043A\u0438 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0435\u0442 \u043E \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F\u0445 \u0441\u0432\u043E\u0435\u0433\u043E \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0435\u0433\u043E \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430)\n const suspendProcessing = {\n // FIN-12482\n // ? \u0427\u0442\u043E\u0431\u044B \u041D\u0415 \u0437\u0430\u043C\u044B\u043A\u0430\u0442\u044C \u0440\u0435\u0444\u043A\u0443 \u043D\u0430 \u043C\u043E\u0434\u0430\u043B\u043A\u0443 \u0432 \u043B\u043E\u0433\u0438\u043A\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0442\u043E\u043C \u043F\u043E\u0438\u0441\u043A\u0430\u0442\u044C \u0432 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0435 \u0432\u0441\u0435 \u0442\u0435\u043A\u0441\u0442\u044D\u0440\u0438\u0430,\n // ? \u0447\u0442\u043E\u0431\u044B \u043E\u0446\u0435\u043D\u0438\u0442\u044C \u0435\u0441\u0442\u044C \u043B\u0438 \u0441\u0440\u0435\u0434\u0438 \u043D\u0438\u0445 \u0441\u0444\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0430\u044F - \u0434\u0435\u043B\u0430\u0435\u043C \u044D\u043B\u0435\u0413\u0410\u043D\u0442\u043D\u043E:\n // ? \u043E\u0446\u0435\u043D\u0438\u0432\u0430\u0435\u043C ev.target, \u0438 \u0435\u0441\u043B\u0438 target \u044D\u0442\u043E \u0442\u0435\u043A\u0441\u0442\u044D\u0440\u0438\u0430, \u0442\u043E \u0432\u043E\u0442 \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u043E \u043E\u043D\u0430 \u0438 \u0441\u0444\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u0430,\n // ? \u0442.\u0435 \u043D\u0443\u0436\u043D\u043E \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u044B \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0441 \u043D\u0430\u0436\u0430\u0442\u0438\u0435\u043C enter.\n Enter: (ev: globalThis.KeyboardEvent) => (ev?.target as HTMLElement)?.nodeName === 'TEXTAREA',\n\n // ? \u041A\u043E\u043B\u0431\u0435\u043A\u0438 \u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u044B, \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043D\u0443\u0436\u043D\u044B\u0435\n // Escape: (ev: globalThis.KeyboardEvent) => false,\n } as ISuspendProcessing;\n\n useHandleKeyPress({\n enterCallback: isSubmittingByEnter && typeof onConfirm === 'function' && !confirmBtnDisable ? handle.confirm : undefined,\n escCallback: isClosingByEsc && typeof closeModal === 'function' ? handle.close : undefined,\n withClamping: false,\n withEventManagementStructure: {\n isWithSubmitAndCloseManagement: confirmBtnDisable || withEventManagementStructure.isWithSubmitAndCloseManagement,\n },\n suspendProcessing,\n });\n\n useLayoutEffect(() => {\n onConfirmRef.current = isOnConfirmBlocked ? undefined : onConfirm;\n }, [onConfirm, isOnConfirmBlocked]);\n\n useLayoutEffect(() => {\n closeModalRef.current = isCloseModalBlocked ? undefined : closeModal;\n }, [closeModal, isCloseModalBlocked]);\n\n useLayoutEffect(() => {\n // ? \u041D\u0435\u043B\u044C\u0437\u044F \u0432\u044B\u0441\u0442\u0430\u0432\u0438\u0442\u044C undefined, \u0442.\u043A. \u0432 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0441\u044F closeModal (\u0441\u043C\u043E\u0442\u0440\u0438 handle.decline)\n onDeclineRef.current = isOnDeclineBlocked ? () => {} : onDecline;\n }, [onDecline, isOnDeclineBlocked]);\n\n // ? \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043D\u0430\u0436\u0430\u0442\u0438\u044F enter \u0438 esc \u043D\u0430 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u0430\u0445\n useEffect(() => {\n const outerTarget = getIsOnlyAnObject(withEventManagement)\n ? (withEventManagement as TWithEventManagementAsObj<'Modal'>).listenersTarget\n : undefined;\n const target = outerTarget ?? document;\n\n // ? useEffect \u043F\u043E \u043D\u0443\u043B\u0435\u0432\u043E\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F 1 \u0440\u0430\u0437, \u0430 \u0437\u043D\u0430\u0447\u0438\u0442 \u0441\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u043A\u043E\u043B\u0431\u0435\u043A \u041D\u0415 \u0438\u0437\u043C\u0435\u043D\u044F\u0442\u0441\u044F,\n // ? \u0430 \u0437\u043D\u0430\u0447\u0438\u0442 \u0441\u043D\u044F\u0442\u0438\u0435 \u0441\u043B\u0443\u0448\u0430\u0442\u0435\u043B\u044F \u043F\u0440\u043E\u0439\u0434\u0435\u0442 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\n const onKeyPress = getOnKeyPress({ id, onSubmit: handle.confirm, onClose: handle.close, suspendProcessing });\n\n if (withEventManagementStructure.isWithSubmitAndCloseManagement && !!onKeyPress) {\n if (isSubmittingByEnter) target.addEventListener(EVENTS.iGotAnEnterKeyPress.name, onKeyPress);\n if (isClosingByEsc) target.addEventListener(EVENTS.iGotAnEscKeyPress.name, onKeyPress);\n }\n\n return () => {\n if (withEventManagementStructure.isWithSubmitAndCloseManagement && !!onKeyPress) {\n if (isSubmittingByEnter) target.removeEventListener(EVENTS.iGotAnEnterKeyPress.name, onKeyPress);\n if (isClosingByEsc) target.removeEventListener(EVENTS.iGotAnEscKeyPress.name, onKeyPress);\n }\n }\n }, []);\n\n if (!isOpen) return null;\n\n return (\n <div\n id={`${id}`}\n style={{ zIndex }}\n data-testid={testId}\n className=\"modal-box j5\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={`${testId}-title`}\n >\n {renderModal(\n <>\n <div\n data-testid={`${testId}-overlay`}\n className={isOpen ? 'modal-overlay' : 'hidden'}\n onClick={handle.close}\n role=\"presentation\"\n />\n <div\n ref={modalRef as RefObject<HTMLDivElement>}\n style={{ width: typeof size === 'number' ? `${size}px` : `${size?.replace('px', '')}px` }}\n className={cn(className, {\n 'modal': isOpen,\n 'modal--no-header': isOpen && noHeader && !customHeader,\n 'modal-mobile': isOpen && isMobile,\n 'hidden': !isOpen,\n })}\n >\n {customHeader || (!noHeader && (\n <ModalTitle\n wrapperRef={modalMobileHeaderRef}\n className={cn({\n 'modal__header--hidden': MODALS_LOGIC.IS_HEADER_HIDDEN,\n 'modal__header--sticky': !MODALS_LOGIC.IS_HEADER_HIDDEN && MODALS_LOGIC.IS_HEADER_STICKY,\n })}\n variant={variant}\n isForced={forced}\n onClose={handle.close}\n noHeaderCloseBtn={noHeaderCloseBtn}\n >\n <span id={`${testId}-title`}>{renderModalTitle({ mode, title, onlyTitle })}</span>\n </ModalTitle>\n ))}\n\n <div\n {...atributesForModalBody}\n ref={modalMobileBodyRef}\n className={cn('modal__body', {\n 'modal__body--no-footer': noFooter,\n })}\n role=\"document\"\n >\n {children}\n </div>\n\n {(!noFooter || customFooter) && (\n <ModalFooter\n wrapperRef={modalMobileFooterRef}\n className={cn({\n 'modal__footer--hidden': MODALS_LOGIC.IS_FOOTER_HIDDEN,\n 'modal__footer--sticky':\n !MODALS_LOGIC.IS_FOOTER_HIDDEN\n && MODALS_LOGIC.IS_FOOTER_STICKY\n && scrollTop !== scrollHeight,\n 'modal__footer_with-left-content': leftContentOfFooter,\n })}\n >\n {customFooter || (\n <>\n {leftContentOfFooter}\n {(!noCloseBtn || !noConfirmBtn) && (\n <div className=\"modal__buttons-block\">\n {!noCloseBtn && (\n <Button\n testId=\"modal\"\n className={cn(closeBtnClassName, btnClassNames)}\n variant={closeBtnVariant || 'dark-outline'}\n onClick={handle.decline}\n label={closeBtnText || 'Cancel'}\n disabled={typeof onDecline === 'function' ? declineBtnDisable : closeBtnDisable}\n icon={closeBtnIcon}\n isIconRight={isCloseBtnIconPositionRight}\n tabIndex={1}\n aria-label=\"Close modal\"\n />\n )}\n {!noConfirmBtn && (\n <Button\n testId=\"modal\"\n onClick={handle.confirm}\n label={\n confirmBtnLabel\n || (mode && mode?.[0].toUpperCase() + mode?.slice(1))\n || 'Apply'\n }\n className={cn('ml5', confirmBtnClassName, btnClassNames)}\n variant={confirmBtnVariant}\n disabled={confirmBtnDisable}\n icon={confirmBtnIcon}\n isIconRight={isConfirmBtnIconPositionRight}\n aria-label=\"Confirm modal\"\n />\n )}\n </div>\n )}\n </>\n )}\n </ModalFooter>\n )}\n </div>\n </>,\n )}\n </div>\n );\n}\n\nModal.displayName = 'Modal';\n\nexport default Modal;\n", "import { useCallback, useEffect, useState } from 'react';\nimport { getIsOnlyAnObject } from '../utils';\n\n/**\n * A hook that detects when a specific key is pressed\n * @param targetKey - The key to listen for\n * @param clamping - Whether to allow key repeat events\n * @returns boolean indicating if the target key is currently pressed\n */\n\nexport interface ISuspendProcessing {\n [key: string]: (event: globalThis.KeyboardEvent) => boolean; // \u0412\u0435\u0440\u043D\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u041D\u0423\u0416\u041D\u041E \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443\n}\n\nexport function isISuspendProcessing(x: unknown): x is ISuspendProcessing {\n return getIsOnlyAnObject(x) && Object.values(x as Record<string, unknown>).every(v => typeof v === 'function');\n}\n\nfunction useKeyPress(\n targetKey: string,\n clamping: boolean = true,\n isForbidden?: boolean,\n suspendProcessing?: null | ISuspendProcessing,\n): boolean {\n const [keyPressed, setKeyPressed] = useState<boolean>(false);\n const safelySuspendProcessing = (isISuspendProcessing(suspendProcessing) ? suspendProcessing : {}) as ISuspendProcessing;\n\n const downHandler = useCallback(\n (event: globalThis.KeyboardEvent): void => {\n const { key, repeat, altKey, ctrlKey, shiftKey, metaKey } = event;\n const isPressingWithoutAuxiliaryKeys = !altKey && !ctrlKey && !shiftKey && !metaKey;\n\n if (key === targetKey && isPressingWithoutAuxiliaryKeys && !(safelySuspendProcessing[key]?.(event))) {\n if (!clamping && repeat) return;\n setKeyPressed(true);\n }\n },\n // ? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u044F\u0445 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0438\u043C\u0435\u043D\u043D\u043E \u0432\u0445\u043E\u0434\u043D\u043E\u0439 suspendProcessing,\n // ? \u0445\u043E\u0442\u044C \u0432 \u043A\u043E\u0434\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \"\u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u044B\u0439\"\n [clamping, targetKey, suspendProcessing],\n );\n\n const upHandler = useCallback(\n (event: globalThis.KeyboardEvent): void => {\n const { key, repeat, altKey, ctrlKey, shiftKey, metaKey } = event;\n const isPressingWithoutAuxiliaryKeys = !altKey && !ctrlKey && !shiftKey && !metaKey;\n\n if (key === targetKey && isPressingWithoutAuxiliaryKeys && !(safelySuspendProcessing[key]?.(event))) {\n if (!clamping && repeat) return;\n setKeyPressed(false);\n }\n },\n // ? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u044F\u0445 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0438\u043C\u0435\u043D\u043D\u043E \u0432\u0445\u043E\u0434\u043D\u043E\u0439 suspendProcessing,\n // ? \u0445\u043E\u0442\u044C \u0432 \u043A\u043E\u0434\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \"\u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u044B\u0439\"\n [clamping, targetKey, suspendProcessing],\n );\n\n useEffect(\n () => {\n const handleDown = (event: globalThis.KeyboardEvent): void => downHandler(event);\n const handleUp = (event: globalThis.KeyboardEvent): void => upHandler(event);\n\n if (!isForbidden) {\n window.addEventListener('keydown', handleDown);\n window.addEventListener('keyup', handleUp);\n }\n\n return () => {\n // ? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u041D\u0415 \u043E\u0431\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u044E if-\u043A\u043E\u0439:\n // ? \u043F\u0440\u0438 \u043F\u043E\u043F\u044B\u0442\u043A\u0435 \u0441\u043D\u044F\u0442\u044C \u0435\u0441\u043B\u0438 \u043D\u0435 \u0431\u044B\u043B\u043E \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u043E\u0448\u0438\u0431\u043A\u0438 \u043D\u0435 \u0431\u0443\u0434\u0435\u0442,\n // ? \u043D\u043E \u043F\u0440\u0438 \u044D\u0442\u043E\u043C \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E \u043E\u0442\u0440\u0430\u0431\u043E\u0442\u0435\u0442 \u043F\u0435\u0440\u0435\u0445\u043E\u0434 \u0438\u0437 isForbidden: false \u0432 isForbidden: true.\n window.removeEventListener('keydown', handleDown);\n window.removeEventListener('keyup', handleUp);\n };\n },\n // ? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u044F\u0445 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0438\u043C\u0435\u043D\u043D\u043E \u0432\u0445\u043E\u0434\u043D\u043E\u0439 suspendProcessing,\n // ? \u0445\u043E\u0442\u044C \u0432 \u043A\u043E\u0434\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \"\u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u044B\u0439\"\n [downHandler, upHandler, isForbidden, suspendProcessing],\n );\n\n return keyPressed;\n}\n\nexport default useKeyPress;\n", "import type TWithEventManagementAsObj from '../../types/declaration/TWithEventManagementAsObj';\nimport type { ISuspendProcessing } from './useKeyPress';\n\nimport { useEffect } from 'react';\nimport useKeyPress from './useKeyPress';\n\ninterface UseHandleKeyPressProps {\n /** Callback function to be called when Escape key is pressed */\n escCallback?: () => void;\n /** Callback function to be called when Enter key is pressed */\n enterCallback?: () => void;\n /** Whether to allow key repeat events */\n withClamping?: boolean;\n\n withEventManagementStructure?: TWithEventManagementAsObj<'Modal'>;\n\n /** Array of Keys (ev.key) to exclude from processing */\n suspendProcessing?: null | ISuspendProcessing;\n}\n\n/**\n * A hook that handles Enter and Escape key press events\n *\n * @param props - Configuration object for key press handling\n * @param props.escCallback - Function to be called when Escape key is pressed\n * @param props.enterCallback - Function to be called when Enter key is pressed\n * @param props.withClamping - Whether to allow key repeat events (default: true)\n * @param props.withEventManagementStructure - Structure for event management (e.g. Modal)\n * @param props.suspendProcessing - Optional map of key -> predicate to suspend processing for specific keys\n *\n * @example\n * ```tsx\n * function Component() {\n * useHandleKeyPress({\n * escCallback: () => console.log('Esc pressed'),\n * enterCallback: () => console.log('Enter pressed'),\n * });\n * }\n * ```\n */\nfunction useHandleKeyPress({\n escCallback,\n enterCallback,\n withClamping = true,\n withEventManagementStructure,\n suspendProcessing = null,\n}: UseHandleKeyPressProps): void {\n const { isWithSubmitAndCloseManagement } = withEventManagementStructure || {};\n\n const isPressEnter = useKeyPress('Enter', withClamping, isWithSubmitAndCloseManagement, suspendProcessing);\n const isPressEscape = useKeyPress('Escape', withClamping, isWithSubmitAndCloseManagement, suspendProcessing);\n\n useEffect(() => {\n if (!isWithSubmitAndCloseManagement && isPressEscape && typeof escCallback === 'function') {\n escCallback();\n }\n }, [isPressEscape, escCallback]);\n\n useEffect(() => {\n if (!isWithSubmitAndCloseManagement && isPressEnter && typeof enterCallback === 'function') {\n enterCallback();\n }\n }, [isPressEnter, enterCallback])\n}\n\nexport default useHandleKeyPress;\n", "// ? \u041E\u043F\u0446\u0438\u0438 \u0434\u043B\u044F \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0430 \u0438\u0432\u0435\u043D\u0442\u0430\nexport const DEFAULT_EVENT_OPTIONS = Object.freeze({\n bubbles: true,\n cancelable: true,\n composed: false,\n});\n\n// ? \u0412\u043E\u0437\u043C\u043E\u0436\u043D\u044B\u0435 \u043A\u043B\u044E\u0447\u0438 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432, \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u043E\u0442\u0440\u0435\u043D\u043D\u044B\u0445 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0435 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 (\u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0439 \u043D\u0435\u0439\u043C\u0438\u043D\u0433)\nexport enum ModalEventsInnerKeys {\n iGotAnEnterKeyPress = 'iGotAnEnterKeyPress',\n iGotAnEscKeyPress = 'iGotAnEscKeyPress',\n}\n\n/** \u0422\u0438\u043F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F ev.key (KeyboardEvent.key) \u2014 \u043F\u0440\u0438\u0432\u044F\u0437\u043A\u0430 \u043A \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u043E\u043C\u0443 \u0442\u0438\u043F\u0443, \u0431\u0435\u0437 \u0441\u0432\u043E\u0435\u0433\u043E union */\nexport type KeyboardEventKey = globalThis.KeyboardEvent['key'];\n\n// ? \u0418\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438\u0432\u0435\u043D\u0442\u0430 (\u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u043D\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E\u0431 \u0438\u0432\u0435\u043D\u0442\u0435)\nexport interface ICustomEvent<Key extends ModalEventsInnerKeys> {\n // ? \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0439 \u043A\u043B\u044E\u0447, \u0441\u043E\u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u0435 \u0441 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u043C \u043D\u0435\u0439\u043C\u0438\u043D\u0433\u043E\u043C\n innerKey: Key;\n // ? \u041F\u043E\u043B\u043D\u043E\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0438\u0432\u0435\u043D\u0442\u0430 (\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0430)\n // ? \u0414\u043B\u044F \u043F\u043E\u043B\u043D\u043E\u0433\u043E \u0438\u043C\u0435\u043D\u0438 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u043E\u0433\u043E \u0438\u0432\u0435\u043D\u0442\u0430 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0448\u0430\u0431\u043B\u043E\u043D:\n // ? '\u0443\u0441\u043B\u043E\u0432\u043D\u0430\u044F_\u0446\u0435\u043B\u044C_\u0438\u0432\u0435\u043D\u0442\u0430:\u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435_\u0442\u043E\u0433\u043E_\u0447\u0442\u043E_\u043F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u043E'\n // ? \u041D\u0430 \u0443\u0440\u043E\u0432\u043D\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u0430 \u043F\u043D\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u0430 EVENTS \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0430 (\u043A\u0430\u043A \u0438 \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0440),\n // ? \u0418 \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0438\u0442\u0441\u044F \u0431\u0443\u0434\u0443\u0442 \u0438\u0432\u0435\u043D\u0442\u044B \u043D\u0430 \u043C\u0430\u043D\u0435\u0440\u0443: dispatch(EVENTS.iGotAnEnterKeyPress.name, ...\u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0435_\u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u044B)\n name: string;\n // ? \u041D\u041E )) \u0435\u0441\u043B\u0438 \u043A\u043E\u043C\u0443\u0442\u043E \u043B\u0435\u043D\u044C, \u0442\u043E \u043C\u043E\u0436\u043D\u043E \u0432\u043E\u0441\u043F\u043E\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043A\u043E\u0442\u043E\u0442\u043A\u0438\u043C \u0438\u043C\u0435\u043D\u0435\u043D\u043C \u0438 \u043F\u0440\u043E\u043F\u0438\u0441\u0430\u0442\u044C \"\u0440\u0443\u043A\u0430\u043C\u0438\"\n // ? \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: dispatch('enterIsPressed', ...\u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0435_\u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u044B), \u0435\u0441\u043B\u0438 'enterIsPressed' \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 shortName \u043D\u0443\u0436\u043D\u043E\u0433\u043E \u0438\u0432\u0435\u043D\u0442\u0430\n // ? \u041D\u043E, \u043D\u0443\u0436\u043D\u043E \u043F\u043E\u043C\u043D\u0438\u0442\u044C, \u0447\u0442\u043E \u043D\u0430 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 (\u0443\u0440\u043E\u0432\u0435\u043D\u044C \u043B\u0438\u0431\u044B) \u0438\u0432\u0435\u043D\u0442 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0441\u0435-\u0440\u0430\u0432\u043D\u043E \u0441 \u043F\u043E\u043B\u043D\u044B\u043C \u0438\u043C\u0435\u043D\u0435\u043D\u043C (custonEvent.type),\n // ? \u0442\u0430\u043A \u043D\u0430\u043F\u0438\u0441\u0430\u043D \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0440\n shortName: string;\n\n // ? \u0418\u0434\u0435\u0442\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0434\u043B\u044F \u043C\u0435\u0445\u0430\u043D\u0438\u043A\u0438 suspendProcessing: \u043A\u043B\u044E\u0447 \u043A\u043E\u043B\u0431\u0435\u043A\u0430 \u0438\u0437 suspendProcessing \u0441 \u043A\u043E\u0442\u043E\u0440\u044B\u043C \u0441\u043E\u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0441\u044F \u044D\u0442\u043E\u0442 \u0438\u0432\u0435\u043D\u0442.\n // ? \u0417\u0430\u0432\u044F\u0437\u0430\u043B \u0431\u044B \u043C\u0435\u0445\u0430\u043D\u0438\u043A\u0443 suspendProcessing \u043D\u0430 \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u044E \u0438 \u043D\u0435\u0439\u043C\u0438\u043D\u0433 \u043E\u0442\u0441\u044E\u0434\u0430, \u043D\u043E \u0432\u044B\u043D\u0443\u0436\u0434\u0435\u043D \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044C \u0441\u0442\u0430\u0440\u044B\u0435 \u043C\u0435\u0445\u0430\u043D\u0438\u043A\u0438\n // ? (\u0432 \u0447\u0430\u0441\u0442\u043D\u043E\u0441\u0442\u0438 useKeyPress), \u0430 \u0442\u0430\u043C \u043A\u0430\u043A \u0431\u044B \u043D\u0435 \u043E\u0447\u0435\u043D\u044C \u043B\u043E\u0433\u0438\u0447\u043D\u043E \u044E\u0437\u0430\u0442\u044C \"\u043A\u0430\u043A\u0443\u044E-\u0442\u043E \u043B\u0435\u0432\u0443\u044E \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u044E\"\n // ? \u041D\u0430 \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u043C\u043E\u043C\u0435\u043D\u0442. \u0441\u0438\u0441\u0442\u0435\u043C\u0430 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432 \"\u0443\u043C\u0435\u0435\u0442\" \u043E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0442\u044C \u043D\u0430\u0436\u0430\u0442\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448 (enter \u0438 escape),\n // ? \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043B\u043E\u0433\u0438\u0447\u043D\u043E \u0432\u044B\u0431\u0440\u0430\u0442\u044C ev.key (\u043A\u043B\u044E\u0447 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 \u0432 \u0438\u0432\u0435\u043D\u0442\u0435 - KeyboardEventKey).\n // ? \u041D\u043E \u0432 \u0434\u0430\u043B\u044C\u043D\u0435\u0439\u0448\u0435\u043C \u0441\u0438\u0441\u0442\u0435\u043C\u0430 \u043C\u043E\u0436\u0435\u0442 \u0440\u0430\u0448\u0438\u0440\u044F\u0442\u044C\u0441\u044F \u0438 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0442\u044C\u0438\u0432\u0435\u043D\u0442\u044B \"\u043D\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u043D\u044B\u0435\", \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u0430\u0442\u0440\u0438\u0432\u0430\u044E \u043F\u0440\u043E\u0442\u043E \u0441\u0442\u0440\u0438\u043D\u0433\u043E\u0432\u043E\u0435 \u0432\u0435\u043B\u044C\u044E.\n middlewareKey: string | KeyboardEventKey;\n // ? \u041E\u043F\u0446\u0438\u0438 \u0434\u043B\u044F \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0430 \u0438\u0432\u0435\u043D\u0442\u0430, \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C DEFAULT_EVENT_OPTIONS, \u043C\u043E\u0436\u043D\u043E \u043F\u0440\u043E\u043F\u0438\u0441\u0430\u0442\u044C \u0441\u0432\u043E\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F\n options: EventInit;\n}\n\n/** \u041E\u0431\u044A\u0435\u043A\u0442, \u0443 \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E \u043A\u0430\u0436\u0434\u044B\u0439 \u043A\u043B\u044E\u0447 K \u0438\u0437 \u0435\u043D\u0430\u043C\u0430 \u0437\u0430\u0434\u0430\u0451\u0442 \u0442\u0438\u043F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F ICustomEvent<K> */\n// ? \u041E\u0431\u044A\u0435\u043A\u0442 \u0443 \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E\n// ? - \u043A\u043B\u044E\u0447\u0438 \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u0422\u041E\u041B\u042C\u041A\u041E \u0438\u0437 ModalEventsInnerKeys\n// ? - \u043A\u043B\u044E\u0447 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0437\u0430\u0434\u0430\u0435\u0442 \u043A\u043B\u044E\u0447 \u0434\u0436\u0435\u043D\u0435\u0440\u0438\u043A\u0430 ICustomEvent (\u0444\u0438\u043A\u0441\u0438\u0440\u0443\u0435\u043C \u043A\u043E\u043D\u043A\u0440\u0435\u0442\u043D\u044B\u0439 \u0438\u0432\u0435\u043D\u0442 \u0441 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u043C \u043D\u0435\u0439\u043C\u0438\u043D\u0433\u043E\u043C, \u0432 \u0438\u0432\u0435\u043D\u0442\u0435 - innerKey)\nexport type IConstantInfoAboutModalEvents<Keys extends ModalEventsInnerKeys> = { [K in Keys]: ICustomEvent<K> };\n\n// ? \u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0432\u0441\u0435\u0445 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432, \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u043E\u0442\u0440\u0435\u043D\u043D\u044B\u0445 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0435 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438.\nexport const EVENTS: IConstantInfoAboutModalEvents<ModalEventsInnerKeys> = Object.freeze({\n [ModalEventsInnerKeys.iGotAnEnterKeyPress]: {\n innerKey: ModalEventsInnerKeys.iGotAnEnterKeyPress,\n name: 'modal:i-got-an-enter-key-press',\n shortName: 'enterIsPressed',\n middlewareKey: 'Enter',\n options: DEFAULT_EVENT_OPTIONS,\n },\n [ModalEventsInnerKeys.iGotAnEscKeyPress]: {\n innerKey: ModalEventsInnerKeys.iGotAnEscKeyPress,\n name: 'modal:i-got-an-esc-key-press',\n shortName: 'escIsPressed',\n middlewareKey: 'Escape',\n options: DEFAULT_EVENT_OPTIONS,\n },\n});\n", "import type { ISuspendProcessing } from '../../../../Functions/useKeyPress/useKeyPress';\nimport type TWithEventManagementAsObj from '../../../../types/declaration/TWithEventManagementAsObj';\nimport type { IModalProps } from '../Modal.interface';\nimport type { ICustomEvent, ModalEventsInnerKeys } from './_constants';\n\nimport { isISuspendProcessing } from '../../../../Functions/useKeyPress/useKeyPress';\nimport { getIsOnlyAnObject } from '../../../../Functions/utils';\nimport { EVENTS } from './_constants';\n\n// ? \u0413\u0435\u0442\u0442\u0435\u0440 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043B\u044F \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F/\u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0438\u0432\u0435\u043D\u0442\u0430\u043C\u0438\n// ? \u0413\u0430\u0440\u0430\u043D\u0442\u0438\u0440\u0443\u0435\u0442 \u0432\u043E\u0437\u0432\u0440\u0430\u0442 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0441 \u041F\u041E\u041B\u041D\u042B\u041C \u043D\u0430\u0431\u043E\u0440\u043E\u043C \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u044B\u0445 \u043E\u043F\u0446\u0438\u0439\nexport function getWithEventManagementStructure(\n modalId: number | string | null | undefined,\n withEventManagement?: IModalProps['withEventManagement'],\n): TWithEventManagementAsObj<'Modal', true> {\n // ! \u0422\u0443\u0442 \u0414\u041E\u041B\u0416\u041D\u042B \u0411\u042B\u0422\u042C \u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0435\u043D\u044B \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B \u0438\u0437 \u0442\u0438\u043F\u0430 TWithEventManagementAsObj<'Modal'> (\u0411\u0415\u0417 \u043F\u0440\u043E\u043F\u0441\u043E\u0432 ICommon)\n // ! \u0418\u043C\u0435\u043D\u043D\u043E \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0441 isHard-\u043E\u043F\u0446\u0438\u0435\u0439 \u0438 \u0447\u0435\u0440\u0435\u0437 satisfies\n const output = {\n isWithSubmitAndCloseManagement: false,\n } satisfies TWithEventManagementAsObj<'Modal', true>;\n\n // ? \u0418\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043C\u0441\u044F \u043F\u043E \u043E\u043F\u0438\u0441\u0430\u043D\u043D\u044B\u043C \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430\u043C\n for (const key in output) {\n // ? \u0415\u0441\u043B\u0438 \u0432 \u043C\u043E\u0434\u0430\u043B\u043A\u0443 \u041D\u0415 \u043F\u0435\u0440\u0435\u0434\u0430\u043D id, \u0442\u043E \u0441\u0438\u0441\u0442\u0435\u043C\u0430 \u041D\u0415 \u0441\u043C\u043E\u0436\u0435\u0442 \u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\n if (!modalId) {\n output[key as keyof typeof output] = false;\n }\n else {\n // ? \u041F\u0440\u0438c\u0432\u0430\u0438\u0432\u0430\u0435\u043C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u043F\u0430\u043C \u0437\u0430\u0434\u0430\u043D\u043D\u043E\u0439 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0438\u0441\u0445\u043E\u0434\u044F \u0438\u0437 withEventManagement\n // ? - \u0435\u0441\u043B\u0438 withEventManagement \u043E\u0431\u044A\u0435\u043A\u0442, \u0442\u043E \u044D\u0442\u043E \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0430\u044F \u043F\u0440\u043E\u043F\u0430 (\u0435\u0441\u043B\u0438 \u0442\u0430\u043A\u0430\u044F \u0435\u0441\u0442\u044C)\n // ? - \u043B\u0438\u0431\u043E \u044D\u0442\u043E \u043F\u0440\u0438\u0432\u0435\u0434\u0451\u043D\u043D\u043E\u0435 \u043A \u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u043E\u043C\u0443 \u0442\u0438\u043F\u0443 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 withEventManagement\n output[key as keyof typeof output] = (\n getIsOnlyAnObject(withEventManagement)\n ? ((withEventManagement as TWithEventManagementAsObj<'Modal'>)[key as keyof TWithEventManagementAsObj<'Modal'>] ?? false)\n : !!withEventManagement\n );\n }\n }\n\n return output;\n}\n\n// ? \u0413\u0435\u0442\u0442\u0435\u0440 \u043A\u043E\u043B\u0431\u0435\u043A\u0430 \u0434\u043B\u044F \u0437\u0430\u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u043D\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432\n// ? (\u0441\u0434\u0435\u043B\u0430\u043D\u043E \u0447\u0435\u0440\u0435\u0437 \u0433\u0435\u0442\u0442\u0435\u0440 \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0434\u0443\u0431\u043B\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0434\u043B\u044F Modal \u0438 ModalHOC,\n// ? \u0435\u0441\u043B\u0438 \u043F\u0438\u0448\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u043E\u0434\u043D\u043E\u0433\u043E \u043C\u0435\u0441\u0442\u0430, \u0442\u043E \u0432 \u0433\u0435\u0442\u0435\u0440\u0435 \u043D\u0435\u0442 \u0441\u043C\u044B\u0441\u043B\u0430, \u043C\u043E\u0436\u043D\u043E \u0432\u0441\u0435 \u043F\u0438\u0441\u0430\u0442\u044C \u0432 useEffect)\nexport function getOnKeyPress({\n id: modalId,\n onSubmit,\n onClose,\n suspendProcessing,\n}: {\n id: number | string | null | undefined;\n onSubmit?: () => unknown;\n onClose?: () => unknown;\n suspendProcessing?: ISuspendProcessing | null;\n}): ((ev: Event) => void) | null {\n if (!modalId) return null;\n\n return function onKeyPress(ev: Event): void {\n // ? \u041F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u0438\n const customEvent = ev as CustomEvent;\n // ? \u0414\u043E\u0441\u0442\u0430\u0435\u043C \u0434\u0435\u0442\u0430\u043B\u0438 \u0437\u0430\u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u043D\u043D\u043E\u0433\u043E \u0438\u0432\u0435\u043D\u0442\u0430\n const { id: eventId, realEvent } = customEvent.detail || {};\n // ? \u0414\u043E\u0441\u0442\u0430\u0435\u043C \u0438\u0437 \u0441\u043F\u0440\u0430\u0432\u043E\u0447\u043D\u0438\u043A\u0430 \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u043D\u0443\u044E \u0438\u043D\u0444\u0443 \u043E\u0431 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u043E\u043C \u0438\u0432\u0435\u043D\u0442\u0435\n const constantInfoAboutCustomEvent = (\n Object.values(EVENTS).find(ev => ev.name === customEvent.type || ev.shortName === customEvent.type) || {}\n ) as ICustomEvent<ModalEventsInnerKeys>;\n // ? \u0412\u044B\u044F\u0441\u043D\u044F\u0435\u043C \u043A\u043B\u044E\u0447 \u0434\u043B\u044F \u0441\u0438\u0441\u0442\u0435\u043C\u044B suspendProcessing\n const middlewareKey = constantInfoAboutCustomEvent.middlewareKey || 'incorrectKey';\n\n const safelySuspendProcessing = (isISuspendProcessing(suspendProcessing) ? suspendProcessing : {}) as ISuspendProcessing;\n\n // ? \u0414\u0435\u043B\u0430\u0435\u043C \u0447\u0442\u043E-\u043B\u0438\u0431\u043E \u0435\u0441\u043B\u0438\n // ? - \u0435\u0441\u043B\u0438 \u0435\u0441\u0442\u044C modalId (\u043C\u043E\u0434\u0430\u043B\u043A\u0430 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043E\u0432\u0430\u043D\u0430)\n // ? - \u0435\u0441\u043B\u0438 \u0435\u0441\u0442\u044C eventId (\u043F\u0440\u0438 \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u043E\u0433\u043E \u0438\u0432\u0435\u043D\u0442\u0430 \u043D\u0430 \u0443\u0440\u043E\u0432\u043D\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u0430 \u0443\u043A\u0430\u0437\u0430\u043B\u0438 \u043A\u043E\u043C\u0443 \u0430\u0434\u0440\u0435\u0441\u043E\u0432\u0430\u043D \u0438\u0432\u0435\u043D\u0442)\n // ? - \u0435\u0441\u043B\u0438 eventId === modalId (\u0437\u0430\u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u043D\u044B\u0439 \u0438\u0432\u0435\u043D\u0442 \u043F\u0440\u0435\u0434\u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D \u044D\u0442\u043E\u0439 \u043C\u043E\u0434\u0430\u043B\u043A\u0435)\n // ? - \u0435\u0441\u043B\u0438 \u043D\u0435\u0442 \u043E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u0439 \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 (\u0435\u0441\u0442\u044C \u043A\u043E\u043B\u0431\u0435\u043A \u0438 \u0435\u0433\u043E \u0437\u0430\u043F\u0443\u0441\u043A \u0432\u0435\u0440\u043D\u0443\u043B true, \u0442.\u0435. \"\u0434\u0430, \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C\")\n if (modalId && eventId && eventId === modalId && !(safelySuspendProcessing[middlewareKey]?.(realEvent))) {\n // ? \u0412 ev.type \u043F\u0440\u0438\u0445\u043E\u0434\u0438\u0442 \u041F\u041E\u041B\u041D\u041E\u0415 \u0438\u043C\u044F \u0438\u0432\u0435\u043D\u0442\u0430 (\u0442\u0430\u043A \u043D\u0430\u043F\u0438\u0441\u0430\u043D \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0440)\n switch (customEvent.type) {\n case EVENTS.iGotAnEnterKeyPress.name: {\n onSubmit?.();\n break;\n }\n case EVENTS.iGotAnEscKeyPress.name: {\n onClose?.();\n break;\n }\n default: { break; }\n }\n }\n };\n}\n\n// ? \u0414\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0440 \u0438\u0432\u0435\u043D\u0442\u043E\u0432 (\u0434\u043B\u044F \u044D\u043A\u0441\u043F\u043E\u0440\u0442\u0430, \u0434\u043B\u044F \u0443\u0434\u043E\u0431\u0441\u0442\u0432\u0430 \u0438 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u0441\u0442\u0438 \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0439 \u043D\u0430 \u043C\u0435\u0441\u0442\u0430\u0445)\n// ? eventName - \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0438\u0432\u0435\u043D\u0442, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0432\u044B \u0445\u043E\u0442\u0438\u0442\u0435 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C\n// ? uniqueId - \u043F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u0442\u0441\u044F \u0447\u0442\u043E \u044D\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u043A\u043B\u044E\u0447 \u043C\u043E\u0434\u0430\u043B\u043A\u0438 (\u043A\u043B\u044E\u0447 \u0432\u0435\u0442\u043A\u0438 \u0432 ModalStore)\n// ? target - \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u043E\u0436\u0435 \u0441\u0430\u043C\u043E\u0435, \u0447\u0442\u043E/\u0435\u0441\u043B\u0438 \u043F\u0440\u043E\u043A\u0438\u0434\u044B\u0432\u0430\u043B\u0438 \u0432 \u043F\u0440\u043E\u043F\u0443 withEventManagement.listenersTarget\nexport function dispatchEventForModalManagement(\n realEvent: globalThis.KeyboardEvent,\n nameOfCustomEvent: string,\n uniqueIdOfRecipient: number | string,\n target?: HTMLElement | Document,\n): void {\n const { repeat, altKey, ctrlKey, shiftKey, metaKey } = realEvent;\n const isPressingWithoutAuxiliaryKeys = !altKey && !ctrlKey && !shiftKey && !metaKey;\n\n if (!repeat && isPressingWithoutAuxiliaryKeys) {\n const event = Object.values(EVENTS).find(ev => ev.name === nameOfCustomEvent || ev.shortName === nameOfCustomEvent);\n if (event && uniqueIdOfRecipient) {\n (target ?? document).dispatchEvent(new CustomEvent(event.name, { ...event.options, detail: { id: uniqueIdOfRecipient, realEvent } }));\n }\n }\n}\n", "import type { IModalFooterProps } from '../Modal.interface';\nimport cn from 'classnames';\n\nimport React, { memo } from 'react';\n\nconst ModalFooter: React.FC<IModalFooterProps> = memo(\n ({ className = '', children, wrapperRef, testId = 'modal-footer' }) => {\n return (\n <footer\n data-testid={testId}\n ref={wrapperRef}\n className={cn('modal__footer', className)}\n role=\"contentinfo\"\n aria-label=\"Modal footer\"\n >\n {children}\n </footer>\n );\n },\n);\n\nModalFooter.displayName = 'ModalFooter';\n\nexport default ModalFooter;\n", "import type { IModalTitleProps } from '../Modal.interface';\nimport cn from 'classnames';\nimport React, { memo, useLayoutEffect, useMemo, useRef } from 'react';\n\nimport { X } from 'react-feather';\n\nconst ModalTitle: React.FC<IModalTitleProps> = memo(\n ({\n variant = 'primary',\n children,\n isForced = false,\n onClose,\n closeBtnDisable,\n\n noHeaderCloseBtn = false,\n className,\n wrapperRef,\n testId = 'modal-title',\n }) => {\n const closeModalRef = useRef(onClose);\n\n // ! \u041D\u0415 \u043D\u0443\u0436\u043D\u043E \u0442\u0443\u0442 \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044C \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 \u043D\u0430\u0436\u0430\u0442\u0438\u044F Enter/Esc (\u043F\u0440\u0435\u0434\u0443\u0441\u043C\u043E\u0442\u0440\u0435\u043D\u0430 \u0432 ModalHOC).\n // ? \u0415\u0441\u043B\u0438 \u043D\u0443\u0436\u043D\u0430 \u044D\u0442\u0430 \u0438\u043D\u043A\u0430\u043F\u0441\u0443\u043B\u0438\u0440\u043E\u0432\u0430\u043D\u0430\u044F \u043B\u043E\u0433\u0438\u043A\u0430 - \u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435\u0441\u044C \u043A\u043E\u043C\u043F\u043E\u0437\u0438\u0446\u0438\u0435\u0439\n // ? - \"\u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u0435\u043B\u044C\" \u0432 ModalHOC \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 Enter/Esc\n // ? - \"\u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u0435\u043B\u044C\" \u0432 ModalTitle \u043D\u0430\u043A\u0438\u043D\u0435\u0442\u0441\u044F \u043D\u0430 \"\u043A\u0440\u0435\u0441\u0442\u0438\u043A\"\n /*\n <ModalHOC\n \u043F\u0440\u043E\u043F\u044B\n closeModal={\u0432\u0430\u0448_\u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u0435\u043B\u044C}\n >\n <ModalTitle\n \u043F\u0440\u043E\u043F\u044B\n onClose={\u0432\u0430\u0448_\u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u0435\u043B\u044C}\n >\n {\u0432\u0430\u0448\u0430 \u0432\u0435\u0440\u0441\u0442\u043A\u0430}\n </ModalTitle>\n\n {\u0432\u0430\u0448 \u043E\u0441\u0442\u0430\u043B\u044C\u043D\u043E\u0439 \u043A\u043E\u043D\u0442\u0435\u043D\u0442}\n </ModalHOC>\n */\n\n // ? \u041B\u0443\u0447\u0448\u0435 \u0447\u0435\u043C useCallback, \u0442.\u043A.\n // ? - \u041D\u0415 \"\u0434\u0451\u0440\u0433\u0430\u0435\u0442\" \u0432\u0435\u0440\u0441\u0442\u043A\u0443 (\u0445\u043E\u0442\u044F \u043F\u043E \u0444\u0430\u043A\u0442\u0443 \u0440\u0435-\u0440\u0435\u043D\u0434\u0435\u0440 \u043F\u0440\u043E\u0438\u0437\u043E\u0439\u0434\u0435\u0442 \u0434\u043B\u044F useLayoutEffect-\u043E\u0432, \u043D\u043E \u0432 \u0448\u0435\u0434\u043E\u0443-\u0434\u043E\u043C\u0435 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0441\u044F)\n // ? - \u041D\u0415 \u0437\u0430\u043C\u044B\u043A\u0430\u0435\u0442 \u0432\u043D\u0435\u0448\u043D\u0438\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F (\u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u0435\u0442 useLayoutEffect)\n // ? - \u041D\u0415 \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440\u044B\n // ? \u0421\u0443\u0442\u044C \u043B\u043E\u0433\u0438\u043A\u0438: \"\u0438\u0434\u0438 \u043F\u043E \u044D\u0442\u043E\u0439 \u0441\u0441\u044B\u043B\u043A\u0435 \u0438 \u043F\u043E\u043F\u044B\u0442\u0430\u0439\u0441\u044F \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0442\u043E \u0447\u0442\u043E \u0442\u0430\u043C \u0435\u0441\u0442\u044C\",\n // ? \u0441\u0441\u044B\u043B\u043A\u0430 - \u043F\u0435\u0440\u043C\u0430\u043D\u0435\u043D\u0442\u043D\u0430\u044F, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0435 \u043C\u043E\u0436\u0435\u0442 \u043C\u0435\u043D\u044F\u0442\u044C\u0441\u044F \u043D\u0435\u0437\u0430\u043C\u0435\u0442\u043D\u043E \u0434\u043B\u044F \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0438\n const handleClick: () => void = useMemo(() => () => closeModalRef.current?.(), []);\n\n useLayoutEffect(() => {\n closeModalRef.current = closeBtnDisable ? undefined : onClose;\n }, [onClose, closeBtnDisable]);\n\n return (\n <header\n data-testid={testId}\n ref={wrapperRef}\n className={cn('modal__header', className, {\n [`modal__header-${variant}`]: variant,\n })}\n role=\"banner\"\n aria-label=\"Modal header\"\n >\n <span\n className={cn('modal__header-title', {\n [`modal__header-${variant}-title`]: variant,\n })}\n id={`${testId}-heading`}\n >\n {children}\n </span>\n {!isForced && (\n <button\n type=\"button\"\n onClick={handleClick}\n className={cn('modal-close-icon-box', {\n 'modal-close-icon-box-primary': variant === 'primary',\n 'modal-close-icon-box--hidden': noHeaderCloseBtn,\n })}\n aria-label=\"Close modal\"\n title=\"Close modal\"\n >\n {!noHeaderCloseBtn && <X className=\"modal-close-icon\" role=\"img\" aria-hidden=\"true\" />}\n </button>\n )}\n </header>\n );\n },\n);\n\nModalTitle.displayName = 'ModalTitle';\n\nexport default ModalTitle;\n", "/* eslint-disable react-web-api/no-leaked-event-listener */\nimport type { MutableRefObject, ReactNode } from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport useIsMobile from '../../../../Functions/useIsMobile/useIsMobile';\n\ntype ScrollDirection = 'up' | 'down';\n\ninterface ModalsLogic {\n IS_HEADER_HIDDEN: boolean;\n IS_HEADER_STICKY: boolean;\n IS_FOOTER_HIDDEN: boolean;\n IS_FOOTER_STICKY: boolean;\n}\n\ninterface UseMobileModalProps {\n modalRef?: React.RefObject<HTMLDivElement>;\n withMobileLogic?: boolean;\n withFixedFooter?: boolean;\n isOpen?: boolean;\n}\n\ninterface UseMobileModalReturn {\n modalMobileContainerRef: MutableRefObject<HTMLDivElement | null>;\n modalMobileHeaderRef: MutableRefObject<HTMLDivElement | null>;\n modalMobileBodyRef: MutableRefObject<HTMLDivElement | null>;\n modalMobileFooterRef: MutableRefObject<HTMLDivElement | null>;\n MODALS_LOGIC: ModalsLogic;\n SCROLL_DIRECTION: { UP: ScrollDirection; DOWN: ScrollDirection };\n scrollTop: number;\n scrollHeight: number;\n renderModal: (modal: ReactNode) => ReactNode;\n isMobile: boolean;\n}\n\nconst SCROLL_DIRECTION = {\n UP: 'up' as ScrollDirection,\n DOWN: 'down' as ScrollDirection,\n};\n\nexport default function useMobileModal({\n modalRef,\n withMobileLogic = false,\n withFixedFooter = false,\n isOpen = false,\n}: UseMobileModalProps): UseMobileModalReturn {\n const modalMobileContainerRef = useRef<HTMLDivElement>(null);\n const modalMobileHeaderRef = useRef<HTMLDivElement>(null);\n const modalMobileFooterRef = useRef<HTMLDivElement>(null);\n const modalMobileBodyRef = useRef<HTMLDivElement>(null);\n\n const { isMobile } = useIsMobile();\n\n const [modalHeight, setModalHeight] = useState(0);\n const [modalsLogic, setModalsLogic] = useState<ModalsLogic>({\n IS_HEADER_HIDDEN: false,\n IS_HEADER_STICKY: false,\n IS_FOOTER_HIDDEN: false,\n IS_FOOTER_STICKY: withFixedFooter,\n });\n const [modalsLogicProps, setModalsLogicProps] = useState({\n headerHeight: 0,\n footerHeight: 0,\n });\n\n const [scrollDirection, setScrollDirection] = useState(SCROLL_DIRECTION.UP);\n const [scrollTopPrev, setScrollTopPrev] = useState(0);\n const [scrollTop, setScrollTop] = useState(0);\n const [scrollHeight, setScrollHeight] = useState(1);\n const [, setContainerScrollHeight] = useState(1);\n\n /* MODALS LOGIC | BEGIN */\n // Count ScrollTop\n useLayoutEffect(() => {\n const el = modalMobileContainerRef?.current;\n if (el) {\n el.addEventListener('scroll', () => {\n setScrollTop((scrollTop) => {\n if (scrollTop !== el.scrollTop) setScrollTopPrev(scrollTop);\n return el.scrollTop;\n });\n });\n }\n }, [modalMobileContainerRef?.current]);\n // Count ScrollDirection\n useEffect(() => {\n setScrollDirection(prevScrollDirection =>\n scrollTop < scrollTopPrev\n ? SCROLL_DIRECTION.UP\n : scrollTop > scrollTopPrev\n ? SCROLL_DIRECTION.DOWN\n : prevScrollDirection,\n );\n }, [scrollTop, scrollTopPrev]);\n // Dynamic Modal Positioning\n useLayoutEffect(() => {\n if (isOpen) {\n const modalStyle = modalRef?.current\n ? modalRef?.current.style\n || window.getComputedStyle(modalRef?.current)\n : {} as CSSStyleDeclaration;\n const computedModalHeight = modalRef?.current\n ? modalHeight + Number.parseFloat(modalStyle?.marginTop || '0')\n : 0;\n const windowHeight\n = document.documentElement.clientHeight\n || window.screen.availHeight\n || window.screen.height;\n if (modalMobileContainerRef?.current) {\n if (computedModalHeight <= windowHeight) {\n modalMobileContainerRef.current.style.display = 'flex';\n modalMobileContainerRef.current.style.alignItems = 'flex-end';\n }\n else {\n modalMobileContainerRef.current?.style?.removeProperty('display');\n modalMobileContainerRef.current?.style?.removeProperty('align-items');\n }\n }\n }\n }, [modalsLogicProps, isOpen, isMobile, modalHeight]);\n\n // Calculating\n useLayoutEffect(() => {\n if (isMobile && isOpen) {\n const newModalHeight = modalRef?.current?.getBoundingClientRect()?.height;\n if (newModalHeight && modalHeight !== newModalHeight) {\n setModalHeight(newModalHeight);\n }\n }\n });\n useEffect(() => {\n if (isMobile && withMobileLogic) {\n const { footerHeight, headerHeight } = modalsLogicProps;\n setModalsLogic(prevStickyLogic => ({\n IS_HEADER_HIDDEN:\n scrollDirection === SCROLL_DIRECTION.DOWN || scrollTop === 0,\n IS_HEADER_STICKY:\n scrollDirection === SCROLL_DIRECTION.UP\n && scrollTop !== 0\n && (scrollTop >= headerHeight || prevStickyLogic.IS_HEADER_STICKY),\n IS_FOOTER_HIDDEN:\n !withFixedFooter\n && (scrollDirection === SCROLL_DIRECTION.UP\n || scrollHeight === Math.round(scrollTop)),\n IS_FOOTER_STICKY:\n (withFixedFooter && scrollHeight > 1)\n || (scrollDirection === SCROLL_DIRECTION.DOWN\n && (scrollHeight - Math.round(scrollTop) >= footerHeight\n || prevStickyLogic.IS_FOOTER_STICKY)),\n }));\n }\n }, [\n scrollTop,\n scrollHeight,\n isMobile,\n withMobileLogic,\n scrollDirection,\n modalsLogicProps,\n modalHeight,\n window.innerHeight,\n ]);\n useLayoutEffect(() => {\n if (\n modalMobileHeaderRef?.current?.getBoundingClientRect()?.height\n !== undefined\n ) {\n setModalsLogicProps(state => ({\n ...state,\n headerHeight: modalMobileHeaderRef?.current?.getBoundingClientRect()?.height ?? 0,\n }));\n }\n }, [modalMobileHeaderRef?.current?.getBoundingClientRect()?.height]);\n useLayoutEffect(() => {\n if (\n modalMobileFooterRef?.current?.getBoundingClientRect()?.height\n !== undefined\n ) {\n setModalsLogicProps(state => ({\n ...state,\n footerHeight: modalMobileFooterRef?.current?.getBoundingClientRect()?.height ?? 0,\n }));\n }\n }, [modalMobileFooterRef?.current?.getBoundingClientRect()?.height]);\n useEffect(() => {\n if (modalMobileContainerRef?.current) {\n setContainerScrollHeight(modalMobileContainerRef?.current?.scrollHeight);\n setScrollHeight(\n modalMobileContainerRef?.current?.scrollHeight - window.innerHeight,\n );\n }\n }, [scrollTop, modalMobileContainerRef?.current, window.innerHeight]);\n useEffect(() => {\n window.addEventListener('resize', () => {\n setContainerScrollHeight((containerScrollHeight) => {\n setScrollHeight(containerScrollHeight - window.innerHeight);\n return containerScrollHeight;\n });\n });\n }, []);\n /* MODALS LOGIC | END */\n\n const renderModal = useCallback(\n (modal: ReactNode): ReactNode => {\n if (!isMobile || !withMobileLogic) return modal;\n\n return (\n <div className=\"modal-mobile-container\" ref={modalMobileContainerRef}>\n {modal}\n </div>\n );\n },\n [isMobile, withMobileLogic],\n );\n\n return {\n modalMobileContainerRef,\n modalMobileHeaderRef,\n modalMobileBodyRef,\n modalMobileFooterRef,\n MODALS_LOGIC: modalsLogic,\n SCROLL_DIRECTION,\n scrollTop,\n scrollHeight,\n renderModal,\n isMobile,\n };\n}\n", "import type { Moment } from 'moment-timezone';\nimport type { IInputDateRange, IIntervals } from './InputDateRange.interface';\n\nimport moment from 'moment-timezone';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nexport const getIsDateValid = (date: Date | Moment | string | null): boolean => moment(date).isValid();\n\nexport function useClickOutside(hideComponent: () => void, additionalComponent?: HTMLCollectionOf<Element>, onlyGetRef?: boolean): React.MutableRefObject<Element | null> {\n const ref = useRef<Element | null>(null);\n\n const checkCondition = (target: Element): boolean => {\n if (additionalComponent && additionalComponent?.length) {\n return (\n !ref.current?.contains(target)\n && !Array.from(additionalComponent)?.some(item => (item as Element)?.contains(target))\n );\n }\n else {\n return !ref.current?.contains(target);\n }\n };\n\n const handleClickOutside = useCallback(\n (e: MouseEvent) => {\n const target = e.target as Element;\n if (checkCondition(target)) hideComponent();\n },\n [hideComponent],\n );\n\n useEffect(() => {\n if (!onlyGetRef) {\n document.addEventListener('mousedown', handleClickOutside, true);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside, true);\n };\n }\n\n return () => {};\n }, []);\n\n return ref;\n}\n\nexport function useToggle(initialState?: string | boolean): { isToggled: boolean; toggle: () => void; toggleOn: () => void; toggleOff: () => void; } {\n const [isToggled, setToggle] = useState(Boolean(initialState));\n const toggle = useCallback(() => setToggle(isOn => !isOn), []);\n const toggleOn = useCallback(() => setToggle(true), []);\n const toggleOff = useCallback(() => setToggle(false), []);\n\n return {\n isToggled,\n toggle,\n toggleOn,\n toggleOff,\n };\n}\n\nexport const INTERVALS: IIntervals = {\n today: {\n label: 'today',\n start: () => moment().startOf('day'),\n end: () => moment().add(1, 'day').startOf('day'),\n },\n yesterday: {\n label: 'yesterday',\n start: () => moment().subtract(1, 'day').startOf('day'),\n end: () => moment().startOf('day'),\n },\n thisWeek: {\n label: 'This Week',\n start: () => moment().startOf('week'),\n end: () => moment().add(1, 'day').startOf('day'),\n },\n lastWeek: {\n label: 'Last Week',\n start: () => moment().subtract(1, 'week').startOf('week'),\n end: () => moment().startOf('week'),\n },\n last7Days: {\n label: 'Last 7 Days',\n start: () => moment().subtract(6, 'day').startOf('day'),\n end: () => moment().add(1, 'day').startOf('day'),\n },\n last14Days: {\n label: 'Last 14 Days',\n start: () => moment().subtract(13, 'day').startOf('day'),\n end: () => moment().add(1, 'day').startOf('day'),\n },\n last30Days: {\n label: 'Last 30 Days',\n start: () => moment().subtract(29, 'day').startOf('day'),\n end: () => moment().add(1, 'day').startOf('day'),\n },\n thisMonth: {\n label: 'This Month',\n start: () => moment().startOf('month'),\n end: () => moment().add(1, 'day').startOf('day'),\n },\n lastMonth: {\n label: 'Last Month',\n start: () => moment().subtract(1, 'month').startOf('month'),\n end: () => moment().startOf('month'),\n },\n last3Months: {\n label: 'Last 3 Months',\n start: () => moment().subtract(3, 'month').startOf('month'),\n end: () => moment().startOf('month'),\n },\n last6Months: {\n label: 'Last 6 Months',\n start: () => moment().subtract(6, 'month').startOf('month'),\n end: () => moment().startOf('month'),\n },\n sixMonths: {\n label: '6 Months',\n isHidden: true,\n start: () => moment().subtract(6, 'month'),\n end: () => moment().add(1, 'day').startOf('day'),\n },\n thisYear: {\n label: 'This Year',\n start: () => moment().startOf('year'),\n end: () => moment().add(1, 'day').startOf('day'),\n },\n year: {\n label: 'Year',\n isHidden: true,\n start: () => moment().subtract(1, 'year'),\n end: () => moment().add(1, 'day').startOf('day'),\n },\n lastYear: {\n label: 'Last Year',\n start: () => moment().subtract(1, 'year').startOf('year'),\n end: () => moment().startOf('year'),\n },\n allTime: {\n label: 'All Time',\n start: () => moment('2022-01-01T00:00:00'),\n end: () => moment(),\n // start: () => null,\n // end: () => null,\n },\n};\nexport const ALL_TIME_KEY = 'allTime';\nexport const CUSTOM_INTERVAL_KEY = 'customDate';\nexport const CUSTOM_INTERVAL_KEY_TEXT = 'Custom Date';\nexport const MAIN_FORMAT = 'YYYY-MM-DDTHH:mm';\nexport const MAIN_DATE_FORMAT = 'YYYY-MM-DD';\nexport const MAIN_TIME_FORMAT = 'HH:mm';\n\nexport function getActualDateRange(inputDateRange: IInputDateRange): IInputDateRange {\n const getActualIntervalKey = (): string => {\n if (\n inputDateRange?.intervalKey\n && Object.keys(INTERVALS).includes(inputDateRange.intervalKey)\n ) {\n return inputDateRange.intervalKey;\n }\n else if (inputDateRange?.start && inputDateRange?.end) {\n for (const [key, interval] of Object.entries(INTERVALS)) {\n if (\n moment(inputDateRange.start).isSame(interval.start())\n && moment(inputDateRange.end).isSame(interval.end())\n ) {\n return key;\n }\n }\n return CUSTOM_INTERVAL_KEY;\n }\n return ALL_TIME_KEY;\n };\n\n const getIntervalDate = (intervalKey: string): IInputDateRange => {\n if (intervalKey === ALL_TIME_KEY || intervalKey === CUSTOM_INTERVAL_KEY) {\n return {\n start: null,\n end: null,\n compare: inputDateRange?.compare,\n startPrevDate: null,\n endPrevDate: null,\n };\n }\n\n const actualValues: IInputDateRange = {\n start: INTERVALS[intervalKey]?.start()?.format(MAIN_FORMAT),\n end: INTERVALS[intervalKey]?.end()?.format(MAIN_FORMAT),\n compare: inputDateRange?.compare,\n };\n\n if (actualValues.compare) {\n const intervalHoursCount = moment(actualValues.end).diff(\n actualValues.start,\n 'hours',\n );\n actualValues.startPrevDate = moment(actualValues.start)\n .subtract(intervalHoursCount, 'hours')\n .toDate();\n actualValues.endPrevDate = actualValues.start;\n }\n return actualValues;\n };\n\n const interval = getActualIntervalKey();\n\n return interval !== CUSTOM_INTERVAL_KEY && interval !== ALL_TIME_KEY\n ? { intervalKey: interval, ...getIntervalDate(interval) }\n : { ...inputDateRange, intervalKey: interval };\n}\n", "import type { Moment } from 'moment-timezone';\n\nimport type { FocusEvent, KeyboardEvent, ReactElement, ReactNode, RefObject } from 'react';\n\nimport type { IDatepickerProps } from '../InputDateRange.interface';\nimport cn from 'classnames';\nimport moment from 'moment-timezone';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport Btn from '../../../UI/Button/Button';\n\nimport SelectInput from '../../Dropdown/Dropdown';\nimport Calendar from '../../RangeCalendar/RangeCalendar';\nimport Switcher from '../../Switcher/Switcher';\nimport {\n getActualDateRange,\n getIsDateValid,\n MAIN_FORMAT,\n MAIN_TIME_FORMAT,\n} from '../dependencies';\nimport DateInput from './DateInput';\n\nconst DATE_INPUT_FORMAT = 'MM/DD/YYYY';\n\nfunction padTime(time: number | string): string {\n return `${time.toString().padStart(2, '0')}:00`;\n}\n\nconst Datepicker: React.FC<IDatepickerProps> = (props): ReactElement => {\n const {\n txt,\n className,\n buttonsTypes = {},\n values = {},\n onChange,\n onChangeMobile,\n onChangeCompare,\n onCancel,\n getSelectedMode,\n onChangeInterval,\n isCompareHidden,\n limitRange,\n setActiveInterval,\n isShortWeekNames,\n minDate,\n maxDate,\n momentMinDate,\n momentMaxDate,\n isDontLimitFuture,\n testId,\n mainId,\n withMobileLogic,\n isDoNotPullOutListOfMainContainer,\n } = props;\n const { start = null, end = null, compare = false } = values;\n\n const startDateInputRef = useRef<Omit<HTMLInputElement, 'value'> | null>(null);\n const endDateInputRef = useRef<Omit<HTMLInputElement, 'value'> | null>(null);\n\n const [startDate, setStartDate] = useState<Moment | string>(\n getIsDateValid(start) ? moment(start) : '',\n );\n const [endDate, setEndDate] = useState<Moment | string>(\n getIsDateValid(end) ? moment(end) : '',\n );\n const dateInterval = getSelectedMode({ start: startDate, end: endDate });\n\n const [startDateInput, setStartDateInput] = useState<string | null>(null);\n const [endDateInput, setEndDateInput] = useState<string | null>(null);\n const [isStartFocused, setIsStartFocused] = useState<boolean>(false);\n const [isEndFocused, setIsEndFocused] = useState<boolean>(false);\n\n const [startHour, setStartHour] = useState<number>(start ? moment(start).hour() : 0);\n const [endHour, setEndHour] = useState<number>(end ? moment(end).hour() : 0);\n\n const [isCompare, setIsCompare] = useState<boolean>(compare);\n\n const [date1, setDate1] = useState<Moment>(\n start ? moment(start) : moment().subtract(1, 'month'),\n );\n const [date2, setDate2] = useState<Moment>(end ? moment(end) : moment());\n\n // ********************\n // Constants\n // ********************\n\n const isNearby = useMemo<boolean>(\n () => moment(date2).subtract(1, 'month').isSame(moment(date1), 'month'),\n [date1, date2],\n );\n\n const isPreviousPeriodShowed = useMemo<string | false | moment.Moment>(\n () => isCompare && !isCompareHidden && startDate && endDate,\n [startDate, endDate, isCompare],\n );\n\n const prevEndHour = useRef<number>(endHour);\n\n const startPrevDate = useMemo<Date | Moment | null>(() => {\n if (isPreviousPeriodShowed) {\n const intervalHoursCount = moment(endDate).diff(startDate, 'hours');\n return moment(startDate).subtract(intervalHoursCount, 'hours').toDate();\n }\n else {\n return null;\n }\n }, [startDate, endDate, isCompare]);\n\n const endPrevDate = useMemo<Date | Moment | string | null>(() => {\n if (isPreviousPeriodShowed) {\n return startDate;\n }\n else {\n return null;\n }\n }, [startDate, endDate, isCompare]);\n\n const title = useMemo<string>(() => {\n if (isCompare && !isCompareHidden && startDate && endDate) {\n return `${moment(startPrevDate).format('ll')} (${moment(startPrevDate).format(MAIN_TIME_FORMAT)}) - ${moment(\n endPrevDate,\n ).format('ll')} (${moment(endPrevDate).format(MAIN_TIME_FORMAT)})`;\n }\n else {\n return '';\n }\n }, [startDate, endDate, isCompare]);\n\n // ********************\n // Methods\n // ********************\n\n const subtractDay = (date: Date | Moment | string): Moment =>\n endHour === 0 ? moment(date).subtract(1, 'days') : moment(date);\n const addDay = (date: Date | Moment | string): Moment =>\n endHour === 0 ? moment(date).add(1, 'days') : moment(date);\n\n const getCorrectedDateForDateInput = (key: string, date: Date | Moment | string): Moment => {\n if (key === 'startDateInput') return moment(date);\n return subtractDay(moment(date));\n };\n\n const setInterval = (): void => {\n setActiveInterval?.(\n getActualDateRange({ start: startDate, end: endDate }).intervalKey as string,\n );\n };\n\n // ********************\n // Handlers\n // ********************\n\n const handleClick = (date: Date | Moment | string): void => {\n prevEndHour.current = 0;\n if (\n !startDate\n || (startDate\n && endDate\n && !(\n moment(startDate).add(1, 'd').isSame(endDate, 'day') && endHour === 0\n ))\n ) {\n setStartDate(moment(date).startOf('day'));\n setEndDate(moment(date).add(1, 'd').startOf('day'));\n setStartHour(0);\n setEndHour(0);\n }\n else if (moment(date).isBefore(moment(startDate), 'day')) {\n setEndDate(moment(startDate).add(1, 'd').startOf('day'));\n setStartDate(moment(date).set('hour', Number.parseInt(startHour.toString(), 10)));\n }\n else if (moment(date).isAfter(moment(startDate), 'day')) {\n setEndDate(moment(date).add(1, 'd').startOf('day'));\n }\n };\n\n const handleChangeStartHour = (val: string | number): void => {\n setStartHour(Number(val));\n setStartDate(moment(startDate || moment()).set('hour', Number(val)));\n };\n\n const handleChangeEndHour = (val: string | number): void => {\n const newHour = Number(val);\n setEndHour(newHour);\n let newEndDate = moment();\n\n if (endDate) {\n if (prevEndHour.current === 0 && newHour !== 0) {\n newEndDate = moment(endDate).subtract(1, 'days');\n }\n else if (prevEndHour.current !== 0 && newHour === 0) {\n newEndDate = moment(endDate).add(1, 'days');\n }\n }\n\n prevEndHour.current = newHour;\n setEndDate(moment(newEndDate).set('hour', newHour));\n };\n\n const handleDateInputFocus = (key: string, e: React.MouseEvent<HTMLDivElement, MouseEvent>): void => {\n const changeFlag\n = key === 'startDateInput' ? setIsStartFocused : setIsEndFocused;\n const set = key === 'startDateInput' ? setStartDateInput : setEndDateInput;\n const date = key === 'startDateInput' ? startDate : endDate;\n\n changeFlag(true);\n set(date ? getCorrectedDateForDateInput(key, date).format('L') : '');\n setTimeout(() => {\n const defaultTarget\n = key === 'startDateInput'\n ? startDateInputRef.current\n : endDateInputRef.current;\n const target = e?.target ?? defaultTarget;\n (target as HTMLInputElement).select?.();\n }, 0);\n };\n\n const doBlur = (type: string, e: React.MouseEvent<HTMLDivElement, MouseEvent>): void => {\n const executor\n = type === 'startDateInput' ? setIsStartFocused : setIsEndFocused;\n\n (e.target as HTMLElement).blur();\n executor(false);\n };\n\n const processOverflow = (newDateAsString: string, valueForRollback: string | Moment, key: string): string | Moment => {\n const newDateAsMomentObj = moment(newDateAsString, DATE_INPUT_FORMAT);\n\n // ? \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u0432\u0430\u043B\u0438\u0434\u043D\u043E...\n if (!newDateAsMomentObj.isValid()) {\n // ? ... \u0442\u043E \u043E\u0442\u043A\u0430\u0442\u044B\u0432\u0430\u0435\u043C \u043A \u0434\u0430\u0442\u0435 \u0434\u043E \u043D\u0430\u0431\u043E\u0440\u0430 \u0440\u0443\u043A\u0430\u043C\u0438\n return valueForRollback;\n }\n else {\n const beforeOfFuture = moment().endOf('day');\n const hour = key === 'startDateInput' ? startHour : endHour;\n\n let output;\n\n // ? \u0415\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0434\u0430\u0442\u0430 \u0438 \u0432\u0432\u0435\u0434\u0435\u043D\u043D\u0430\u044F \u043C\u0435\u043D\u044C\u0448\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0439, \u0442\u043E \u0441\u0442\u0430\u0432\u0438\u043C \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0443\u044E\n if (minDate && newDateAsMomentObj.isBefore(momentMinDate)) {\n output = momentMinDate;\n }\n // ? \u0415\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0434\u0430\u0442\u0430 \u0438 \u0432\u0432\u0435\u0434\u0435\u043D\u043D\u0430\u044F \u0431\u043E\u043B\u044C\u0448\u0435 \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0439, \u0442\u043E \u0441\u0442\u0430\u0432\u0438\u043C \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0443\u044E\n else if (maxDate && newDateAsMomentObj.isAfter(momentMaxDate)) {\n output = momentMaxDate;\n }\n // ? \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u043D\u0435 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u0442\u044C \u0434\u0430\u0442\u0443 \u043F\u043E \u0431\u0443\u0434\u0443\u0449\u0435\u043C\u0443...\n else if (\n !isDontLimitFuture\n && newDateAsMomentObj.isAfter(beforeOfFuture)\n ) {\n output = beforeOfFuture.startOf('day');\n }\n else {\n output = newDateAsMomentObj;\n }\n\n if (key === 'endDateInput') {\n output = addDay(output as Moment);\n }\n\n return (output as Moment).set('hour', Number.parseInt(hour.toString(), 10));\n }\n };\n\n const handleDateInputBlur = (key: string, e: FocusEvent<HTMLInputElement>): void => {\n const reserveValue\n = key === 'startDateInput' ? startDateInput : endDateInput;\n const valueForRollback = key === 'startDateInput' ? startDate : endDate;\n\n const execute = key === 'startDateInput' ? setStartDate : setEndDate;\n const executeForCalendar = key === 'startDateInput' ? setDate1 : setDate2;\n const prepareValueForCalendar = (newDate: Moment): Moment => {\n if (key === 'endDateInput') return newDate;\n return moment(newDate).isSameOrAfter(moment(date2), 'month')\n ? moment(date2).subtract(1, 'month')\n : moment(newDate);\n };\n\n const newDateValue = (e?.target as HTMLInputElement)?.value ?? reserveValue;\n const processedNewDate = processOverflow(\n newDateValue,\n valueForRollback,\n key,\n );\n execute(processedNewDate);\n executeForCalendar(prepareValueForCalendar(processedNewDate as Moment));\n doBlur(key, e as any);\n };\n\n const handleKeyPressed = (code: number, e: KeyboardEvent<HTMLInputElement>, type: string): void => {\n if (code === 13) {\n const syntheticEvent = {\n target: e.target,\n relatedTarget: null,\n } as unknown as FocusEvent<HTMLInputElement>;\n handleDateInputBlur(type, syntheticEvent);\n }\n if (code === 27) doBlur(type, e as any);\n };\n\n // ********************\n // Render Functions\n // ********************\n\n const getStartHourItems = (): { label: string; value: number; disabled: boolean }[] =>\n [...Array.from({ length: 24 }).keys()].map(hour => ({\n label: padTime(hour),\n value: hour,\n disabled: moment(startDate).isSame(endDate, 'day') && endHour <= hour,\n }));\n const getEndHourItems = (): { label: string; value: number; disabled: boolean }[] =>\n [...Array.from({ length: 24 }).keys()].map(hour => ({\n label: padTime(hour + 1),\n value: hour === 23 ? 0 : hour + 1,\n disabled:\n (moment(startDate).isSame(endDate, 'day')\n || (moment(startDate).isSame(\n moment(endDate).subtract(1, 'days'),\n 'day',\n )\n && endHour === 0))\n && hour < startHour,\n }));\n\n const renderButtons = (): ReactNode => (\n <>\n <Btn\n className=\"date-picker__button\"\n onClick={() => onCancel?.()}\n variant={buttonsTypes?.cancel}\n >\n {txt?.buttons?.cancel || 'Cancel'}\n </Btn>\n <Btn\n className=\"date-picker__button\"\n variant={buttonsTypes?.apply}\n disabled={!startDate || !endDate}\n onClick={() =>\n onChange?.({\n start: moment(startDate).format(MAIN_FORMAT),\n end: moment(endDate).format(MAIN_FORMAT),\n startPrevDate: moment(startPrevDate).format(MAIN_FORMAT),\n endPrevDate: moment(endPrevDate).format(MAIN_FORMAT),\n compare: isCompare,\n })}\n >\n {txt?.buttons?.apply || 'apply'}\n </Btn>\n </>\n );\n\n const renderPreviousPeriod = (): ReactNode => (\n <>\n {txt?.labels?.previousPeriod || ''}\n :\n {' '}\n <span className=\"date-picker__previous-period-interval\">{title}</span>\n </>\n );\n\n // ********************\n // useEffects\n // ********************\n\n useEffect(() => {\n if (moment(startDate).isSameOrAfter(endDate)) {\n setStartDate(moment(endDate).subtract(1, 'd'));\n setDate1(moment(endDate).subtract(1, 'd'));\n }\n }, [startDate]);\n\n useEffect(() => {\n if (moment(endDate).isSameOrBefore(startDate)) {\n setEndDate(moment(startDate).add(1, 'd'));\n setDate2(moment(startDate).add(1, 'd'));\n }\n }, [endDate]);\n\n useEffect(() => {\n if (moment(startDate).isBefore(moment(endDate), 'month')) {\n setDate1(moment(startDate));\n setDate2(moment(endDate));\n }\n setInterval();\n }, [startDate, endDate]);\n\n useEffect(() => {\n if (\n moment(date1).isSameOrAfter(moment(date2), 'month')\n && !withMobileLogic\n ) {\n setDate1(moment(date2).subtract(1, 'month'));\n }\n }, [date1, date2]);\n\n useEffect(() => {\n onChangeInterval(dateInterval);\n }, [dateInterval]);\n\n useEffect(() => {\n if (typeof onChangeMobile === 'function') {\n onChangeMobile({\n start: moment(startDate).format(MAIN_FORMAT),\n end: moment(endDate).format(MAIN_FORMAT),\n startPrevDate: moment(startPrevDate).format(MAIN_FORMAT),\n endPrevDate: moment(endPrevDate).format(MAIN_FORMAT),\n compare: isCompare,\n });\n }\n }, [startDate, endDate, startPrevDate, endPrevDate, isCompare]);\n\n const renderRowStart = (): ReactNode => {\n return (\n <div className=\"date-picker__date-row\">\n <DateInput\n ref={startDateInputRef as RefObject<Omit<HTMLInputElement, 'value'>>}\n testId={`datepicker-${testId}_start-date-input`}\n RC=\"date-picker__date-input\"\n className={cn('date-picker__date-input')}\n isFocused={isStartFocused}\n value={startDateInput as string}\n date={getCorrectedDateForDateInput('startDateInput', startDate)}\n disabled={!startDate}\n onChange={setStartDateInput}\n onFocus={e => handleDateInputFocus('startDateInput', e)}\n onBlur={e => handleDateInputBlur('startDateInput', e)}\n onKeyUp={(code, e) => handleKeyPressed(+code, e, 'startDateInput')}\n />\n <SelectInput\n testId={testId}\n id={`datepicker-id-${mainId}_start-hour-select-input`}\n className={cn('date-picker__hour-select-input')}\n onChange={value => handleChangeStartHour(value)}\n value={startHour}\n options={getStartHourItems()}\n disabled={!startDate}\n isDoNotPullOutListOfMainContainer={isDoNotPullOutListOfMainContainer}\n withMobileLogic={withMobileLogic}\n />\n </div>\n );\n };\n const renderRowEnd = (): ReactNode => {\n return (\n <div className=\"date-picker__date-row\">\n <DateInput\n ref={endDateInputRef as RefObject<Omit<HTMLInputElement, 'value'>>}\n testId={`datepicker-${testId}_start-date-input`}\n RC=\"date-picker__date-input\"\n className={cn('date-picker__date-input')}\n isFocused={isEndFocused}\n value={endDateInput as string}\n date={getCorrectedDateForDateInput('endDateInput', endDate)}\n disabled={!endDate}\n onChange={setEndDateInput}\n onFocus={e => handleDateInputFocus('endDateInput', e)}\n onBlur={e => handleDateInputBlur('endDateInput', e)}\n onKeyUp={(code, e) => handleKeyPressed(+code, e, 'endDateInput')}\n />\n <SelectInput\n testId={testId}\n id={`datepicker-id-${mainId}_end-hour-select-input`}\n className={cn('date-picker__hour-select-input')}\n onChange={value => handleChangeEndHour(value)}\n value={endHour}\n options={getEndHourItems()}\n disabled={!endDate}\n isDoNotPullOutListOfMainContainer={isDoNotPullOutListOfMainContainer}\n withMobileLogic={withMobileLogic}\n />\n </div>\n );\n };\n\n const renderCalendarStart = (): ReactNode => {\n return (\n <Calendar\n testId={testId}\n className=\"date-picker__calendar\"\n date={date1}\n setDate={setDate1}\n allowNext={\n withMobileLogic\n ? !moment(date1)\n .startOf('month')\n .isSameOrAfter(moment().startOf('day'), 'months')\n : !isNearby\n }\n startDate={startDate}\n endDate={endDate}\n startPrevDate={startPrevDate}\n endPrevDate={endPrevDate}\n onClick={handleClick}\n limitRange={limitRange}\n isShortWeekNames={isShortWeekNames}\n minDate={minDate}\n maxDate={maxDate}\n momentMinDate={momentMinDate}\n momentMaxDate={momentMaxDate}\n />\n );\n };\n const renderCalendarEnd = (): ReactNode => {\n return (\n <Calendar\n className=\"date-picker__calendar\"\n date={date2}\n setDate={setDate2}\n allowPrev={!isNearby}\n startDate={startDate}\n endDate={endDate}\n startPrevDate={startPrevDate}\n endPrevDate={endPrevDate}\n onClick={handleClick}\n isShortWeekNames={isShortWeekNames}\n minDate={minDate}\n maxDate={maxDate}\n momentMinDate={momentMinDate}\n momentMaxDate={momentMaxDate}\n isDontLimitFuture={isDontLimitFuture}\n />\n );\n };\n\n const render = (): ReactElement => {\n return (\n <div className={cn('date-picker', className)}>\n <div className=\"date-picker__header\">\n <div className=\"date-picker__inputs-block\">\n {renderRowStart()}\n <div className=\"date-picker__inputs-separator date-picker__header--gray\">\n \u2014\n </div>\n {renderRowEnd()}\n </div>\n {isCompare && !isCompareHidden && startDate && endDate && (\n <div className=\"date-picker__previous-period\">\n {renderPreviousPeriod()}\n </div>\n )}\n </div>\n\n <div className=\"date-picker__calendars\">\n <div className=\"date-picker__calendars-wrapper\">\n {renderCalendarStart()}\n {renderCalendarEnd()}\n </div>\n </div>\n <div\n className={cn('date-picker__footer', {\n 'date-picker__footer_once-element': isCompareHidden,\n })}\n >\n {!isCompareHidden\n ? (\n <div className=\"date-picker__compare-block\">\n <div className=\"mr5\">\n <Switcher\n label={txt?.labels?.compare || 'Compare'}\n isActive={isCompare}\n onChange={() => {\n onChangeCompare?.(!isCompare);\n setIsCompare(state => !state);\n }}\n />\n </div>\n </div>\n )\n : (\n <div />\n )}\n <div className=\"date-picker__buttons-block\">{renderButtons()}</div>\n </div>\n </div>\n );\n };\n const renderMobile = (): ReactElement => {\n return (\n <div className={cn('date-picker', className)}>\n <div className=\"date-picker__header\">\n <div className=\"date-picker__inputs-block\">\n {renderRowStart()}\n <div className=\"date-picker__inputs-separator date-picker__header--gray\">\n \u2014\n </div>\n {renderRowEnd()}\n </div>\n {isCompare && !isCompareHidden && startDate && endDate && (\n <div className=\"date-picker__previous-period\">\n {renderPreviousPeriod()}\n </div>\n )}\n </div>\n\n <div className=\"date-picker__calendars\">\n <div className=\"date-picker__calendars-wrapper\">\n {renderCalendarStart()}\n </div>\n </div>\n </div>\n );\n };\n return withMobileLogic ? renderMobile() : render();\n}\n\nexport default Datepicker;\n", "import React, { useEffect, useMemo, useState } from \"react\";\n\nimport cn from \"classnames\";\nimport moment from \"moment-timezone\";\n\nimport Arrow from \"../../UI/Arrow/Arrow\";\n\nimport \"./RangeCalendar.scss\";\n\nconst RangeCalendar = (props) => {\n const {\n className,\n date,\n setDate,\n startDate,\n endDate,\n allowPrev = true,\n allowNext = true,\n onClick = () => {},\n onHover = () => {},\n startPrevDate,\n endPrevDate,\n limitRange,\n isShortWeekNames,\n minDate,\n maxDate,\n momentMinDate,\n momentMaxDate,\n isDontLimitFuture,\n testId = \"range-calendar\",\n } = props;\n\n const [days, setDays] = useState({});\n\n const title = useMemo(\n () => `${moment(date).format(\"MMM\")} ${moment(date).format(\"YYYY\")}`,\n [date],\n );\n\n useEffect(() => {\n const result = {};\n const day = moment(date).startOf(\"month\");\n const daysInMonth = day.daysInMonth();\n for (let d = 0; d < daysInMonth; d += 1) {\n let week = day.week();\n if (day.month() === 11 && week === 1) week = 53;\n if (day.month() === 0 && week === 53) week = 0;\n if (!Object.prototype.hasOwnProperty.call(result, week)) {\n result[week] = {};\n }\n result[week][day.weekday()] = { date: day.toDate() };\n day.add(1, \"d\");\n }\n setDays(result);\n }, [date]);\n\n const renderDay = (week, dayOfWeek) => {\n const day = days[week][dayOfWeek];\n const isFutureDay = day && moment(day.date).isAfter(moment(), \"day\");\n const isPastDay = limitRange\n ? day &&\n moment(day.date).isBefore(moment().subtract(limitRange, \"days\"), \"day\")\n : null;\n const isRangeStart = day && moment(day.date).isSame(startDate, \"day\");\n const isRangeEnd =\n day &&\n moment(day.date).isSame(moment(endDate).subtract(1, \"hour\"), \"day\");\n const isRangeInside =\n day &&\n startDate &&\n endDate &&\n moment(day.date).isAfter(startDate, \"day\") &&\n moment(day.date).isBefore(moment(endDate).subtract(1, \"hour\"), \"day\");\n const isPrevRangeEnd =\n day &&\n (moment(day.date).isSame(startPrevDate, \"day\") ||\n moment(day.date).isSame(moment(endPrevDate).subtract(1, \"day\"), \"day\"));\n const isPrevRangeInside =\n day &&\n startPrevDate &&\n endPrevDate &&\n moment(day.date).isAfter(startPrevDate, \"day\") &&\n moment(day.date).isBefore(moment(endPrevDate).subtract(1, \"day\"), \"day\");\n const classNames = cn(\n \"range-calendar__day\",\n { \"range-calendar__day--clickable\": day },\n {\n \"range-calendar__day--disabled\":\n isPastDay ||\n (minDate && moment(day?.date).isBefore(momentMinDate, \"day\")) ||\n (!isDontLimitFuture &&\n (maxDate ? moment(day?.date).isAfter(momentMaxDate) : isFutureDay)),\n },\n { \"range-calendar__day--range-start\": isRangeStart },\n { \"range-calendar__day--range-end\": isRangeEnd },\n { \"range-calendar__day--range-inside\": isRangeInside },\n { \"range-calendar__day--prev-range-end\": isPrevRangeEnd },\n { \"range-calendar__day--prev-range-inside\": isPrevRangeInside },\n );\n\n return (\n <div\n key={`${week}_${dayOfWeek}`}\n className={classNames}\n onClick={day ? (e) => onClick(day.date, e) : null}\n onMouseOver={day ? () => onHover(day.date) : null}\n onMouseLeave={() => onHover(null)}\n >\n <span className=\"calendar__day-num\">{day && day.date.getDate()}</span>\n </div>\n );\n };\n\n const handlePrev = () => {\n setDate(moment(date).subtract(1, \"month\").toDate());\n };\n\n const handleNext = () => {\n setDate(moment(date).add(1, \"month\").toDate());\n };\n\n const getFormatedWeekName = (input) =>\n isShortWeekNames ? input.charAt(0) : input;\n\n return (\n <div className={cn(\"range-calendar\", className)} data-testid={testId}>\n <div className=\"range-calendar-header\">\n <Arrow\n type=\"left\"\n disabled={\n !allowPrev ||\n (minDate &&\n moment(date)\n .startOf(\"month\")\n .isSameOrBefore(momentMinDate, \"months\"))\n }\n onClick={handlePrev}\n className=\"range-calendar-header__prev\"\n />\n\n <div className=\"range-calendar-header__title\">{title}</div>\n\n <Arrow\n type=\"right\"\n disabled={\n !allowNext ||\n (!isDontLimitFuture &&\n moment(date)\n .startOf(\"month\")\n .isSameOrAfter(\n maxDate\n ? momentMaxDate\n : moment().add(1, \"day\").startOf(\"day\"),\n \"months\",\n ))\n }\n onClick={handleNext}\n className=\"range-calendar-header__next\"\n />\n </div>\n\n <div className=\"range-calendar__week range-calendar__week-title\">\n {[...Array(7).keys()].map((dayOfWeek) => {\n return (\n <div\n key={`day-of-week_${dayOfWeek}`}\n className=\"range-calendar__day range-calendar__day--title\"\n >\n {getFormatedWeekName(moment().weekday(dayOfWeek).format(\"dd\"))}\n </div>\n );\n })}\n </div>\n {Object.keys(days).map((week, index) => (\n <div key={`week_${index}`} className=\"range-calendar__week\">\n {[...Array(7).keys()].map((dayOfWeek) => renderDay(week, dayOfWeek))}\n </div>\n ))}\n </div>\n );\n};\n\nexport default RangeCalendar;\n", "import type { Moment } from 'moment-timezone';\n\nimport type { ReactElement } from 'react';\nimport type { IDateInputProps } from '../InputDateRange.interface';\n\nimport cn from 'classnames';\nimport moment from 'moment-timezone';\nimport React from 'react';\nimport { NUMERIC_KEYBOARD } from '../../../../Functions/presets/mobileKeyboardTypesPresets';\nimport TextInput from '../../Input/Input';\n\nfunction handleDateInputOnChange(value: string): string {\n const replace = (val: string): string => val?.replace(/[^0-9/]/g, '');\n\n const input = replace(value);\n const lastSymbol = input ? input.slice(-1) : '';\n const previousValue = input ? input.slice(0, input.length - 1) : '';\n\n if (value.length > 10 || lastSymbol === '/') return previousValue;\n return previousValue.length === 2 || previousValue.length === 5\n ? `${previousValue}/${lastSymbol}`\n : input;\n}\n\nfunction DateInput({ ref, ...props }: IDateInputProps & { ref?: React.RefObject<Omit<HTMLInputElement, 'value'> | null> }): ReactElement {\n const {\n RC,\n className,\n testId,\n isFocused,\n disabled,\n value,\n date,\n prepareDate,\n onChange,\n onFocus,\n onBlur,\n onKeyUp,\n } = props;\n const preparedDate = (() => {\n const prepareDateDefault = (date: Date | Moment | string): string => moment(date).format('MM/DD/YYYY');\n\n const output = prepareDate?.(date) ?? prepareDateDefault(date);\n return (output?.toString?.().toLowerCase() || '') !== 'invalid date'\n ? output\n : '';\n })();\n\n return isFocused\n ? (\n <TextInput\n ref={ref}\n testId={testId}\n className={cn(className, `${RC}-interactive`)}\n value={value}\n disabled={disabled}\n onChange={(value: string) => onChange(handleDateInputOnChange(value))}\n onBlur={onBlur}\n onKeyUp={onKeyUp}\n {...NUMERIC_KEYBOARD}\n />\n )\n : (\n <div\n className={cn(className, `${RC}-emulation`, {\n [`${RC}-emulation_disabled`]: disabled,\n })}\n onClick={disabled ? undefined : onFocus}\n >\n <span className={cn('')}>{preparedDate}</span>\n </div>\n );\n}\n\nexport default DateInput;\n", "//? \u0423\u0434\u043E\u0431\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0434\u043B\u044F \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043E\u0432\nexport const ALL_KEYBOARD_TYPES = {\n numeric: { inputMode: \"decimal\" },\n email: { inputMode: \"email\" },\n};\n\n//? \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440:\n/*\n const constructor = [\n ...\n {\n key: 'someField',\n ...\n attributesOfNativeInput: {\n 'data-testId': `someFieldTestId-${someId}`,\n ...ALL_KEYBOARD_TYPES.numeric\n }\n }\n ...\n ];\n\n*/\n\n// *****************************\n//? \u0423\u0434\u043E\u0431\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0434\u043B\u044F \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0444\u0438\u043B\u0434\u0430, \u0435\u0441\u043B\u0438 \u0432 \u0444\u0438\u043B\u0434\u0435 \u0431\u043E\u043B\u0435\u0435 \u043D\u0435 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044B\n//? \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440:\n/*\n const constructor = [\n ...\n {\n key: 'someField',\n ...NUMERIC_KEYBOARD\n ...\n }\n ...\n ];\n\n*/\n\nexport const NUMERIC_KEYBOARD = {\n attributesOfNativeInput: ALL_KEYBOARD_TYPES.numeric,\n};\nexport const EMAIL_KEYBOARD = {\n attributesOfNativeInput: ALL_KEYBOARD_TYPES.email,\n};\n", "import type { ISelectItemProps } from '../InputDateRange.interface';\n\nimport cn from 'classnames';\nimport React from 'react';\nimport { Check2 } from '../../../../Molecular/CustomIcons';\n\nconst SelectItem: React.FC<ISelectItemProps> = ({\n item,\n label,\n isActive,\n onItemClick,\n onMouseEnter,\n disabled,\n testId = 'select-item',\n}) => {\n return (\n <div\n className={cn('opened-part__intervals-item', {\n 'opened-part__intervals-item_active': isActive,\n 'opened-part__intervals-item_disabled': disabled,\n })}\n onClick={onItemClick}\n onMouseEnter={onMouseEnter}\n data-item={item}\n data-testid={testId}\n >\n {isActive && (\n <Check2 className={cn('opened-part__intervals-item-icon-active')} />\n )}\n {label}\n </div>\n )\n}\nexport default SelectItem;\n", "import type { ChangeEvent } from 'react';\nimport type { IInputLinkProps } from './InputLink.interface';\n\nimport cn from 'classnames';\nimport React, { useRef } from 'react';\n\nimport { ExternalLink } from 'react-feather';\nimport {\n formatToOnlyASCIICodeText,\n formatToReplaceAllWhiteSpace,\n} from '../../../Functions/fieldValueFormatters';\n\nimport Input from '../Input/Input';\n\nimport './InputLink.scss';\n\nconst InputLink: React.FC<IInputLinkProps> = ({\n icon,\n value,\n withHttpsPrefix = {\n isTurnOn: true,\n isSecure: true,\n },\n onRedirect,\n testId = '',\n onChange,\n withDelete,\n ...args\n}) => {\n const { isSecure, isTurnOn: isPrefix } = withHttpsPrefix || {};\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handle = {\n redirect: () => {\n window.open(\n `http${isSecure ? 's' : ''}://${value.replace(/https?:\\/\\/?/g, '')}`,\n '_blank',\n );\n onRedirect?.();\n },\n change: (e: ChangeEvent<HTMLInputElement> | string) => {\n let inputValue\n = typeof e === 'string'\n ? formatToOnlyASCIICodeText(e)\n : formatToOnlyASCIICodeText(e.target.value);\n\n let cursorPosition = inputRef.current?.selectionStart || 0;\n\n if ((isSecure && cursorPosition <= 8) || (!isSecure && cursorPosition <= 7)) {\n cursorPosition++;\n }\n\n setTimeout(() => {\n inputRef.current?.setSelectionRange(cursorPosition, cursorPosition);\n }, 0);\n\n if (isPrefix) {\n inputValue = formatToReplaceAllWhiteSpace(\n inputValue.replace(/https?:\\/\\/?/g, ''),\n );\n }\n\n onChange?.(inputValue.toString());\n },\n };\n\n return (\n <div\n className={cn('inputLink', {\n 'inputLink--withDelete': withDelete && value && value.length > 0,\n })}\n >\n {isPrefix && (\n <div className={cn('inputColor__prefix')}>\n {isSecure && value?.length > 0 && 'https://'}\n {!isSecure && value?.length > 0 && 'http://'}\n </div>\n )}\n <Input\n {...args}\n withDelete={withDelete}\n value={value}\n onChange={handle.change}\n testId={`inputLink--key-${testId}`}\n type=\"text\"\n ref={inputRef}\n className={cn({\n 'prefix-gutter--secured': isPrefix && isSecure && value?.length > 0,\n 'prefix-gutter--no-secured': isPrefix && !isSecure && value?.length > 0,\n })}\n />\n\n <div\n onClick={handle.redirect}\n className={cn('inputLink__icon pointer')}\n data-testid={`inputLink--redirect-icon-${testId}`}\n >\n {value && (icon || <ExternalLink />)}\n </div>\n </div>\n );\n};\n\nexport default InputLink;\n", "import InputMask from '../InputMask3/InputMask3';\n\nexport default InputMask;\n", "import type { IInputRow, IInputsRowProps } from './InputsRow.interface';\nimport React, { useEffect, useState } from 'react';\nimport { Trash2 } from 'react-feather';\n\nimport { v4 as uuid } from 'uuid';\nimport Button from '../../UI/Button/Button';\n\nimport Input from '../Input/Input';\n\nimport './InputsRow.scss';\n\nconst InputsRow: React.FC<IInputsRowProps> = ({\n items,\n title,\n paramPlaceholder = '',\n valuePlaceholder = '',\n descriptionPlaceholder = '',\n onChange = () => {},\n}) => {\n const initialRows: IInputRow[] = items || [\n { param: '', value: '', description: '', rowId: uuid() },\n { param: '', value: '', description: '', rowId: uuid() },\n ];\n\n const [rows, setRows] = useState<IInputRow[]>(initialRows);\n\n const updateRows = (newRows: IInputRow[]): void => {\n setRows(newRows);\n onChange(newRows);\n };\n\n const handle = {\n addRow: () => {\n const newRows = [\n ...rows,\n { param: '', value: '', description: '', rowId: uuid() },\n ];\n updateRows(newRows);\n },\n\n change: (\n valueOrEvent: React.ChangeEvent<HTMLInputElement> | string,\n id: string,\n prop: keyof Omit<IInputRow, 'rowId'>,\n ) => {\n const value\n = typeof valueOrEvent === 'object' && 'target' in valueOrEvent\n ? valueOrEvent.target.value\n : valueOrEvent;\n\n const newRows = rows.map(row =>\n row.rowId === id ? { ...row, [prop]: value } : row,\n );\n\n updateRows(newRows);\n },\n\n delete: (id: string) => {\n const newRows = rows.filter(row => row.rowId !== id);\n updateRows(newRows);\n },\n };\n\n useEffect(() => {\n if (items) {\n setRows(items);\n }\n }, [items]);\n\n return (\n <div>\n {title && <div className=\"mb5\">{title}</div>}\n\n <div className=\"df\">\n <div className=\"inputs-row--param-label\">Parameter name(key)</div>\n <div className=\"inputs-row--value-label\">Value</div>\n <div className=\"inputs-row--description-label\">Description</div>\n </div>\n\n {rows.map(item => (\n <div className=\"j4 mb5\" key={item.rowId}>\n <div className=\"inputs-row--input mr10\">\n <Input\n // @ts-ignore\n onChange={e => handle.change(e, item.rowId, 'param')}\n value={item.param}\n placeholder={paramPlaceholder}\n />\n </div>\n\n <div className=\"inputs-row--input mr10\">\n <Input\n // @ts-ignore\n onChange={e => handle.change(e, item.rowId, 'value')}\n value={item.value}\n placeholder={valuePlaceholder}\n />\n </div>\n\n <div className=\"inputs-row--input mr10\">\n <Input\n // @ts-ignore\n onChange={e => handle.change(e, item.rowId, 'description')}\n value={item.description}\n placeholder={descriptionPlaceholder}\n />\n </div>\n\n {rows.length > 1 && (\n <div\n onClick={() => handle.delete(item.rowId)}\n className=\"inputs-row--trash\"\n >\n <Trash2 data-testid=\"trash-icon\" />\n </div>\n )}\n </div>\n ))}\n\n {rows.length < 10 && (\n <Button\n onClick={handle.addRow}\n label=\"Add row\"\n className=\"inputs-row--add-btn\"\n />\n )}\n </div>\n );\n};\n\nexport default InputsRow;\n", "export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;\n", "import REGEX from './regex.js';\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\nexport default validate;\n", "import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n", "let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n", "const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n", "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n", "import type {\n ForwardedRef,\n ForwardRefRenderFunction,\n RefObject,\n} from 'react';\nimport type { IInputWithActionProps } from './InputWithAction.interface';\nimport cn from 'classnames';\n\nimport React, {\n useEffect,\n useState,\n} from 'react';\nimport Spinner from '../../Layout/Spinner/Spinner';\nimport Button from '../../UI/Button/Button';\n\nimport Input from '../Input/Input';\n\nimport './InputWithAction.scss';\n\nconst RC = 'input-with-action';\n\nconst InputWithAction: ForwardRefRenderFunction<any, IInputWithActionProps> = (\n props,\n ref: ForwardedRef<any>,\n) => {\n const {\n className,\n inputClassName,\n\n isHideAction = false,\n actionLabel = 'Generate',\n doAction,\n actionContent,\n actionProps,\n isNoChangeAfterAction = false,\n\n isWithCopy = true,\n copyLabel = 'Copy',\n copy,\n copyIcon,\n isNoCopyIcon,\n isCopyIconRight,\n copyButtonVariant = 'dark-outline',\n\n disabled,\n isInputZoneDisabled,\n isInputDisabled,\n\n isLodaing,\n\n onChange,\n value,\n\n testId,\n ...inputProps\n } = props;\n\n const [isLocalLoading, setIsLocalLoading] = useState(false);\n\n const handle = {\n doAction: async () => {\n setIsLocalLoading(true);\n const result = await doAction?.(value, actionProps);\n if (!isNoChangeAfterAction) onChange(result);\n setIsLocalLoading(false);\n return result;\n },\n copy: () => {\n if (typeof copy === 'function') copy(value);\n },\n };\n\n useEffect(() => {\n if (isLocalLoading !== isLodaing) setIsLocalLoading(!!isLodaing);\n }, [isLodaing]);\n\n return (\n <div className={cn(RC, className, { [`${RC}_disabled`]: disabled })}>\n <div\n className={cn(`${RC}__input-zone`, {\n [`${RC}__input-zone_disabled`]: isInputZoneDisabled,\n [`${RC}__input-zone_input-disabled`]: isInputDisabled,\n })}\n >\n <Input\n {...inputProps}\n // @ts-ignore\n testId={`${testId}-input`}\n ref={ref as RefObject<Omit<HTMLInputElement, 'value'>>}\n value={value}\n disabled={isInputDisabled}\n onChange={onChange}\n className={cn(`${RC}__input`, inputClassName)}\n />\n {!isHideAction && actionContent}\n\n {!isHideAction && !actionContent && (\n <div className={cn(`${RC}__action-container`)}>\n <span\n className={cn(`${RC}__action-label`)}\n onClick={() => handle.doAction()}\n data-testid={`${testId}-action-label`}\n >\n {actionLabel}\n </span>\n </div>\n )}\n {isLocalLoading && <Spinner size=\"small\" />}\n </div>\n {isWithCopy && (\n <Button\n data-testid={`${testId}-copy-button`}\n className={`${RC}__coppy-button`}\n onClick={() => handle.copy()}\n icon={copyIcon}\n noIcon={isNoCopyIcon}\n isIconRight={isCopyIconRight}\n variant={copyButtonVariant}\n >\n {copyLabel}\n </Button>\n )}\n </div>\n );\n};\n\nexport default React.forwardRef(InputWithAction);\n", "import type { ILabelProps } from './Label.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport Hint from '../../UI/Hint/Hint';\n\nimport './Label.scss';\n\nconst CN = 'label';\n\nconst Label: React.FC<ILabelProps> = ({\n className = '',\n label = '',\n note,\n hint,\n isRequired,\n isLabelBolt,\n onClickHintCallback,\n error = null,\n isAccessability = false,\n isAccessabilityHint = false,\n testId = CN,\n}) => {\n const correctLabel = isRequired\n ? (\n <>\n {label}\n {' '}\n <span className=\"label_asterisk\">*</span>\n {' '}\n {note && <span className=\"label_note\">{note}</span>}\n {hint && (\n <Hint\n key={`hint-${label}`}\n id={`hint-${label}`}\n children={null}\n isLoading={false}\n isAccessability={isAccessabilityHint}\n hint={hint.text}\n icon={hint.icon}\n variant={hint.variant}\n side={hint.hintSide}\n className=\"label-hint\"\n onClickCallback={onClickHintCallback}\n />\n )}\n </>\n )\n : (\n <>\n {label}\n {' '}\n {note && <span className=\"label_note\">{note}</span>}\n {hint && (\n <Hint\n isAccessability={isAccessabilityHint}\n hint={hint.text}\n icon={hint.icon}\n variant={hint.variant}\n side={hint.hintSide}\n className=\"label-hint\"\n onClickCallback={onClickHintCallback}\n key={undefined}\n id={undefined}\n children={undefined}\n isLoading={undefined}\n />\n )}\n </>\n );\n\n return (\n <span\n tabIndex={isAccessability ? 0 : -1}\n aria-label={label}\n className={cn(CN, { label_bold: isLabelBolt, error, isRequired }, className)}\n data-testid={testId}\n >\n <span className=\"label_text\" data-testid=\"label-text\">\n {correctLabel}\n </span>\n </span>\n );\n};\n\nexport default Label;\n", "import Label from './Label';\n\nexport default Label;\nexport type { ILabelProps } from './Label.interface';\n", "import type { DurationInputArg2, Moment } from 'moment';\n\nimport type { ReactElement, ReactNode, SetStateAction } from 'react';\nimport type { IMobileCalendarProps } from './MobileCalendar.interface';\nimport moment from 'moment';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { ChevronDown, ChevronUp } from 'react-feather';\nimport './MobileCalendar.scss';\n\nconst defaultClasses = {\n wrapper: '',\n label: '',\n body: '',\n\n yearsBlock: '',\n yearsList: '',\n yearsListItem: '',\n\n monthsBlock: '',\n monthsList: '',\n monthsListItem: '',\n\n daysBlock: '',\n daysList: '',\n daysListItem: '',\n\n prevItem: '',\n nextItem: '',\n activeItem: '',\n};\n\nfunction MobileCalendar({\n min = moment().subtract('10', 'years'),\n max = moment().add('10', 'years'),\n value = moment(),\n rows = 5,\n label = '',\n timeout = 75,\n isMobile = true,\n showSelectedDate = false,\n listItemHeight = 32,\n\n classes = defaultClasses,\n onChange = () => {},\n onMinDateReached = () => {},\n onMaxDateReached = () => {},\n}: IMobileCalendarProps): ReactElement {\n const [date, setDate] = useState(value ? (moment.isMoment(value) ? value.clone() : moment(value)) : moment());\n const [minDate, _setMinDate] = useState(moment.isMoment(min) ? min.clone() : moment(min));\n const [maxDate, _setMaxDate] = useState(moment.isMoment(max) ? max.clone() : moment(max));\n\n const [_isMouseDown, setIsMouseDown] = useState(false);\n const [_mouseDownOn, setMouseDownOn] = useState<SetStateAction<{ type: string; value: number } | null>>(null);\n\n const [touchY, setTouchY] = useState<SetStateAction<number | null>>(null);\n const [touchType, setTouchType] = useState<SetStateAction<string | null>>(null);\n const [_touchTimestamp, setTouchTimestamp] = useState<SetStateAction<number | null>>(null);\n\n const [scrollDirection, setScrollDirection] = useState(0);\n\n const monthsListRef = useRef<HTMLDivElement | null>(null);\n const daysListRef = useRef<HTMLDivElement | null>(null);\n const yearsListRef = useRef(null);\n\n const dateRef = useRef<Moment | null>(null);\n const intervalRef = useRef<null | ReturnType<typeof setInterval>>(null);\n\n // --HANDLERS--//\n const changeItem = (type: string, value: number): void => {\n setScrollDirection(value);\n setDate((date) => {\n const newDate = moment(date).add(value, (type as DurationInputArg2));\n\n if (moment(newDate).isBefore(minDate)) return minDate;\n if (moment(newDate).isAfter(maxDate)) return maxDate;\n\n return newDate;\n });\n setTimeout(() => {\n setScrollDirection(0);\n }, 50);\n };\n\n const checkAvailability = (type: string, value: number): boolean => {\n if (!dateRef?.current) return false;\n\n const newDate = moment(dateRef?.current).add(value, (type as DurationInputArg2));\n\n if (moment(newDate).isBefore(minDate)) return false;\n if (moment(newDate).isAfter(maxDate)) return false;\n\n return true;\n };\n const onArrowMouseDown = (type: string, value: number): void => {\n setIsMouseDown(true);\n\n setMouseDownOn({ type, value });\n };\n const onArrowMouseUp = (): void => {\n setIsMouseDown(false);\n setMouseDownOn(null);\n };\n const onWheel = (e: WheelEvent, type?: string): void => {\n e.preventDefault();\n\n const { deltaY } = e;\n const top = window.scrollX;\n const left = window.scrollY;\n\n window.scrollTo({ top, left });\n if (type) {\n changeItem(type, deltaY < 0 ? -1 : 1);\n }\n };\n\n const onTouchEnd = (e: TouchEvent, startY: number, startTime: number, touchType: string): void => {\n const { timeStamp, changedTouches } = e;\n const { pageY } = changedTouches[0];\n\n const path = Math.abs(startY - pageY); // in px\n const time = timeStamp - startTime; // ms\n const pxPerMs = path / time;\n\n if (pxPerMs > 0.65)\n innertionScroll({ startY, pageY, timeStamp, startTime, touchType });\n else setTouchType(null);\n\n setTouchY(null);\n };\n\n const onTouchStart = (e: TouchEvent, type: string): void => {\n e.preventDefault();\n\n if (intervalRef?.current) {\n clearInterval(intervalRef?.current);\n intervalRef.current = null;\n }\n\n const { timeStamp, changedTouches } = e;\n const { pageY } = changedTouches[0];\n\n setTouchY(pageY);\n setTouchTimestamp(timeStamp);\n setTouchType(type);\n\n window.addEventListener(\n 'touchend',\n e => onTouchEnd(e, pageY, timeStamp, type),\n { once: true },\n );\n };\n const onTouchMove = (e: React.TouchEvent<HTMLDivElement>): void => {\n if (!touchY || !touchType) return;\n\n const { timeStamp, changedTouches } = e;\n const { pageY } = changedTouches[0];\n\n const deltaY = Number(touchY) - pageY;\n\n if (Math.abs(deltaY) < listItemHeight) return;\n\n const direction = deltaY < 0 ? -1 : 1;\n\n setScrollDirection(direction);\n\n changeItem(String(touchType), direction);\n setTouchY(pageY);\n setTouchTimestamp(timeStamp);\n };\n\n function innertionScroll({\n startY,\n pageY,\n timeStamp,\n startTime,\n touchType,\n }: {\n startY: number;\n pageY: number;\n timeStamp: number;\n startTime: number;\n touchType: string;\n }): void {\n const path = Math.abs(startY - pageY); // in px\n const time = timeStamp - startTime; // ms\n const pxPerMs = Math.ceil(path / time); // speed\n\n const S = (pxPerMs / 2) * time;\n const blocks = Math.ceil((S / listItemHeight) * pxPerMs);\n\n let i = 1;\n\n intervalRef.current = setInterval(() => {\n if (\n checkAvailability(touchType, startY - pageY < 0 ? -1 : 1)\n && i <= blocks\n ) {\n changeItem(touchType, startY - pageY < 0 ? -1 : 1);\n }\n else {\n setTouchType(null);\n if (intervalRef?.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n intervalRef.current = null;\n }\n\n ++i;\n }, timeout);\n\n // for(let i = 1; i <= blocks; ++i){\n // // timeout = i*pxPerMs+Math.pow(i,2)*10;\n // timeout += 80;\n // if(checkAvailability(touchType, startY-pageY < 0 ? -1 : 1, date)){\n // setTimeout(() => {\n // console.log({timeout})\n // changeItem(touchType, startY-pageY < 0 ? -1 : 1);\n // }, timeout)\n // }\n\n // }\n };\n\n // --FUNCTIONS--//\n // const intervalWorker = (): void => {\n // if (!mouseDownOn) return;\n\n // const { type, value } = mouseDownOn;\n // changeItem(type, value);\n // };\n const getList = (type: string, format: string): string[] => {\n const list: string[] = [];\n\n const renderRows = rows;\n\n for (let i = (renderRows - 1) / 2; i >= ((renderRows - 1) / 2) * -1; --i) {\n list.push(moment(date).subtract(i, (type as DurationInputArg2)).format(format));\n }\n\n return list;\n };\n const getMonthList = (): string[] => getList('months', 'MMMM');\n const getDaysList = (): string[] => getList('days', 'D');\n const getYearsList = (): string[] => getList('years', 'YYYY');\n\n // --OBSERVERS--//\n useEffect(() => {\n if (moment(date.format('L'), 'L', true).isBefore(minDate.format('L'), 'day'))\n setDate(minDate);\n if (moment(date.format('L'), 'L', true).isAfter(maxDate.format('L'), 'day')) setDate(maxDate);\n }, []);\n\n // Events Observer\n useEffect(() => {\n document.addEventListener('mouseup', onArrowMouseUp);\n return () => {\n document.removeEventListener('mouseup', onArrowMouseUp);\n };\n }, []);\n\n useEffect(() => {\n onChange(date);\n dateRef.current = date;\n\n if (moment(date.format('L'), 'L', true).isSame(minDate.format('L'), 'day'))\n onMinDateReached(minDate);\n if (moment(date.format('L'), 'L', true).isSame(maxDate.format('L'), 'day'))\n onMaxDateReached(maxDate);\n }, [date]);\n\n // monthList Events\n useEffect(() => {\n if (!monthsListRef?.current) return;\n\n const handleWheel = (e: Event): void => onWheel(e as WheelEvent, 'months');\n const handleTouchStart = (e: Event): void => onTouchStart(e as TouchEvent, 'months');\n\n monthsListRef.current.addEventListener('wheel', handleWheel, { passive: false });\n monthsListRef.current.addEventListener('touchstart', handleTouchStart, { passive: false });\n\n return () => {\n monthsListRef.current?.removeEventListener('wheel', handleWheel);\n monthsListRef.current?.removeEventListener('touchstart', handleTouchStart);\n };\n }, [monthsListRef]);\n\n // daysList Events\n useEffect(() => {\n if (!daysListRef?.current) return;\n\n const handleWheel = (e: Event): void => onWheel(e as WheelEvent, 'days');\n const handleTouchStart = (e: Event): void => onTouchStart(e as TouchEvent, 'days');\n\n const el = daysListRef.current;\n\n el.addEventListener('wheel', handleWheel, { passive: false });\n el.addEventListener('touchstart', handleTouchStart, { passive: false });\n\n return () => {\n el.removeEventListener('wheel', handleWheel);\n el.removeEventListener('touchstart', handleTouchStart);\n };\n }, [daysListRef]);\n\n // yearsList Events\n useEffect(() => {\n if (!yearsListRef?.current) return;\n\n const handleWheel = (e: Event): void => onWheel(e as WheelEvent, 'years');\n const handleTouchStart = (e: Event): void => onTouchStart(e as TouchEvent, 'years');\n\n const el = yearsListRef.current as HTMLElement;\n\n el.addEventListener('wheel', handleWheel, { passive: false });\n el.addEventListener('touchstart', handleTouchStart, { passive: false });\n\n return () => {\n el.removeEventListener('wheel', handleWheel);\n el.removeEventListener('touchstart', handleTouchStart);\n };\n }, [yearsListRef]);\n\n // --RENDER--//\n const renderMonthsList = (): ReactNode => {\n const half = (rows - 1) / 2;\n return getMonthList().map((month, i) => (\n <div\n className={`mobile-calendar_wrapper_body_months-list--item ${i === half ? 'active' : ''} ${\n i === 0 || i === rows - 1 ? 'transparent' : ''\n } ${classes?.monthsListItem} ${i === half ? classes?.activeItem : ''}`}\n key={`month-${month}`}\n onClick={\n touchY\n ? undefined\n : () => (i - half === 0 ? {} : changeItem('months', i - half))\n }\n attr-scroll-direction={touchType === 'months' ? scrollDirection : 0}\n attr-is-scrolling={touchType === 'months' ? 1 : 0}\n >\n {month}\n </div>\n ));\n };\n const renderDaysList = (): ReactNode => {\n const half = (rows - 1) / 2;\n return getDaysList().map((day, i) => (\n <div\n className={`mobile-calendar_wrapper_body_days-list--item ${i === half ? 'active' : ''} ${\n i === 0 || i === rows - 1 ? 'transparent' : ''\n } ${classes?.daysListItem} ${i === half ? classes?.activeItem : ''}`}\n key={`day-${day}`}\n onClick={() => (i - half === 0 ? {} : changeItem('days', i - half))}\n attr-scroll-direction={touchType === 'days' ? scrollDirection : 0}\n attr-is-scrolling={touchType === 'days' ? 1 : 0}\n >\n {day}\n </div>\n ));\n };\n const renderYearsList = (): ReactNode => {\n const half = (rows - 1) / 2;\n return getYearsList().map((year, i) => (\n <div\n className={`mobile-calendar_wrapper_body_years-list--item ${i === half ? 'active' : ''} ${\n i === 0 || i === rows - 1 ? 'transparent' : ''\n } ${classes?.yearsListItem} ${i === half ? classes?.activeItem : ''}`}\n key={`year-${year}`}\n onClick={() => (i - half === 0 ? {} : changeItem('years', i - half))}\n attr-scroll-direction={touchType === 'years' ? scrollDirection : 0}\n attr-is-scrolling={touchType === 'years' ? 1 : 0}\n >\n {year}\n </div>\n ));\n };\n\n const renderMonthsBlock = (): ReactNode => {\n return (\n <div\n className={`mobile-calendar_wrapper_body_months ${classes?.monthsBlock}`}\n >\n <div\n className={`mobile-calendar_wrapper_body_months--prev ${classes?.prevItem}`}\n >\n <ChevronUp\n onClick={() => changeItem('months', -1)}\n onMouseDown={() => onArrowMouseDown('months', -1)}\n onMouseUp={onArrowMouseUp}\n />\n </div>\n <div\n className={`mobile-calendar_wrapper_body_months-list ${classes?.monthsList}`}\n ref={monthsListRef}\n >\n {renderMonthsList()}\n {isMobile && (\n <div className=\"mobile-calendar_wrapper_body_months-list_touch-zone\"></div>\n )}\n </div>\n <div\n className={`mobile-calendar_wrapper_body_months--next ${classes?.nextItem}`}\n >\n <ChevronDown\n onClick={() => changeItem('months', 1)}\n onMouseDown={() => onArrowMouseDown('months', 1)}\n onMouseUp={onArrowMouseUp}\n />\n </div>\n </div>\n );\n };\n const renderDaysBlock = (): ReactNode => {\n return (\n <div\n className={`mobile-calendar_wrapper_body_days ${classes?.daysBlock}`}\n >\n <div\n className={`mobile-calendar_wrapper_body_days--prev ${classes?.prevItem}`}\n >\n <ChevronUp\n onClick={() => changeItem('days', -1)}\n onMouseDown={() => onArrowMouseDown('days', -1)}\n onMouseUp={onArrowMouseUp}\n />\n </div>\n <div\n className={`mobile-calendar_wrapper_body_days-list ${classes?.daysList}`}\n ref={daysListRef}\n >\n {renderDaysList()}\n {isMobile && (\n <div className=\"mobile-calendar_wrapper_body_days-list_touch-zone\"></div>\n )}\n </div>\n <div\n className={`mobile-calendar_wrapper_body_days--next ${classes?.nextItem}`}\n >\n <ChevronDown\n onClick={() => changeItem('days', 1)}\n onMouseDown={() => onArrowMouseDown('days', 1)}\n onMouseUp={onArrowMouseUp}\n />\n </div>\n </div>\n );\n };\n const renderYearsBlock = (): ReactNode => {\n return (\n <div\n className={`mobile-calendar_wrapper_body_years ${classes?.yearsBlock}`}\n >\n <div\n className={`mobile-calendar_wrapper_body_years--prev ${classes?.prevItem}`}\n >\n <ChevronUp\n onClick={() => changeItem('years', -1)}\n onMouseDown={() => onArrowMouseDown('years', -1)}\n onMouseUp={onArrowMouseUp}\n />\n </div>\n <div\n className={`mobile-calendar_wrapper_body_years-list ${classes?.yearsList}`}\n ref={yearsListRef}\n >\n {renderYearsList()}\n {isMobile && (\n <div className=\"mobile-calendar_wrapper_body_years-list_touch-zone\"></div>\n )}\n </div>\n <div\n className={`mobile-calendar_wrapper_body_years--next ${classes?.nextItem}`}\n >\n <ChevronDown\n onClick={() => changeItem('years', 1)}\n onMouseDown={() => onArrowMouseDown('years', 1)}\n onMouseUp={onArrowMouseUp}\n />\n </div>\n </div>\n );\n };\n\n return (\n <div\n className={`mobile-calendar_wrapper ${classes?.wrapper}`}\n onTouchMove={(e: React.TouchEvent<HTMLDivElement>) => onTouchMove(e)}\n >\n <div className={`mobile-calendar_wrapper_label ${classes?.label}`}>\n {label}\n </div>\n {showSelectedDate && (\n <div className={`mobile-calendar_wrapper_label ${classes?.label}`}>\n {moment(date).format('LL')}\n </div>\n )}\n <div className={`mobile-calendar_wrapper_body ${classes?.body}`}>\n {renderMonthsBlock()}\n {renderDaysBlock()}\n {renderYearsBlock()}\n </div>\n </div>\n );\n}\n\nexport default MobileCalendar;\n", "import React, { useState } from 'react';\nimport CheckboxInput from '../CheckboxInput/CheckboxInput';\nimport Input from '../Input/Input';\nimport './MultiSelect.scss';\n\nexport interface MultiSelectOption {\n label: string;\n value: string;\n id: string | number;\n}\n\nexport interface MultiSelectProps {\n options: MultiSelectOption[];\n chosenOptions: string[];\n onChange: (values: string[]) => void;\n}\n\nconst MultiSelect: React.FC<MultiSelectProps> = ({ options, chosenOptions, onChange }) => {\n const [searchValue, setSearchValue] = useState('');\n\n const checkHandler = (state: boolean, value: string): void => {\n if (state) {\n onChange([...chosenOptions, value]);\n }\n else {\n onChange(chosenOptions.filter(item => item !== value));\n }\n };\n\n const filteredOptions = options.filter(({ label }) =>\n label.toLowerCase().includes(searchValue.toLowerCase()),\n );\n\n return (\n <div className=\"multiselect\" data-testid=\"multiselect-root\">\n <Input\n value={searchValue}\n onChange={(value: string) => setSearchValue(value)}\n placeholder=\"Search\"\n testId=\"multiselect-search\"\n />\n <div className=\"multiselect__list\" data-testid=\"multiselect-list\">\n {filteredOptions.map(({ label, value, id }) => (\n <CheckboxInput\n key={id}\n id={id}\n value={chosenOptions.includes(value)}\n label={label}\n onChange={(state: boolean) => checkHandler(state, value)}\n className=\"multiselect__item\"\n testId={`multiselect-item-${id}`}\n />\n ))}\n </div>\n </div>\n );\n};\n\nexport default MultiSelect;\n", "import React, { useEffect, useRef, useState } from \"react\";\n\nimport cn from \"classnames\";\nimport { Minus, Plus } from \"react-feather\";\n\nimport { KEYBOARD_SERVICE_KEYS } from \"../../../Constants/index.constants\";\nimport {\n formatToAddBitDepthPoints as addCommas,\n filterNumeric,\n formatToRemoveComa as removeCommas,\n} from \"../../../Functions/fieldValueFormatters\";\nimport { getCorrectTestId } from \"../../../Functions/utils\";\nimport Spinner from \"../../Layout/Spinner/Spinner\";\n\nimport \"./NumericInput.scss\";\n\nconst NumericInput = ({\n disabled,\n withDelete,\n numStep = 1,\n min = 0,\n max,\n value,\n placeholder,\n className,\n testId = \"numeric-input\",\n name,\n fieldKey,\n id,\n\n onChange = () => {},\n onBlur = () => {},\n onFocus = () => {},\n onKeyUp = () => {},\n onKeyDown = () => {},\n\n maskChar,\n formatChars,\n error,\n icon,\n isNotBlinkErrors,\n blinkTime,\n isPriceInput,\n isFocusDefault = false,\n isNotRenderButtons = false,\n isUseAutoSelect = true,\n isLoading = false,\n isAllowNullValue = false,\n onlyNumbers = {\n type: \"int\",\n },\n\n attributesOfNativeInput = {},\n}) => {\n const DEFAULT_BLINK_TIME = 200;\n\n //REFS\n const inputRef = useRef(null);\n const decRef = useRef(null);\n const incRef = useRef(null);\n const wrapRef = useRef(null);\n\n // STATES\n const initialMin = isAllowNullValue ? \"\" : min;\n const [inputValue, setInputValue] = useState(value || initialMin);\n const [inputValueFormated, setInputValueFormated] = useState(inputValue);\n const [intMemoVal, setIntMemoVal] = useState(0);\n\n const [isFocused, setIsFocused] = useState(false);\n\n const [isAttemptToChange, setIsAttemptToChange] = useState(false);\n const [isToHighlightError, setIsToHighlightError] = useState(false);\n\n const [prevValue, setPreviousValue] = useState(value || initialMin);\n\n const setCursorToEnd = () => {\n const input = inputRef.current;\n const cursor = input?.value?.length;\n if (input) setTimeout(() => input.setSelectionRange(cursor, cursor), 10);\n };\n\n // HANDLES\n const handle = {\n change: (e) => {\n const inputValue = e.target\n ? filterNumeric(e.target.value, onlyNumbers)\n : filterNumeric(e, onlyNumbers);\n setInputValue(inputValue.toString());\n },\n clear: () => {\n handle.change(initialMin || \"\");\n },\n focus: (e) => {\n setIsFocused(true);\n if (onFocus) onFocus(e);\n },\n blur: (e) => {\n setIsFocused(false);\n\n if (Number.isNaN(inputValue) || inputValue < min)\n setInputValue(initialMin);\n if (max && Number(max) < inputValue) setInputValue(max);\n\n if (onBlur) onBlur(e);\n },\n keyDown: (e) => {\n setPreviousValue(e?.target?.value);\n onKeyDown(e.keyCode, e);\n },\n\n keyUp: (e) => {\n if (!isNotBlinkErrors) {\n const changedValue = String(value ?? \"\");\n const previousValue = String(prevValue);\n\n const short =\n previousValue.length <= changedValue.length\n ? previousValue\n : changedValue;\n const long =\n previousValue.length > changedValue.length\n ? previousValue\n : changedValue;\n\n const infoAboutDifferencesSameness = short.split(\"\").reduce(\n (acc, symbol, idx) => {\n if (acc.countOn && symbol === long[idx]) acc.same.push(symbol);\n else {\n acc.countOn = false;\n acc.differences.push([idx, symbol]);\n }\n return acc;\n },\n { same: [], countOn: true, differences: [] },\n );\n\n const samePart = infoAboutDifferencesSameness.same.join(\"\");\n const differencesLength =\n infoAboutDifferencesSameness.differences.length;\n const currentSet = changedValue?.replace(samePart, \"\");\n\n if (\n !KEYBOARD_SERVICE_KEYS.includes(e.key) &&\n changedValue === previousValue\n )\n setIsAttemptToChange(!(!differencesLength && e.key === currentSet));\n }\n\n if (onKeyUp) onKeyUp(e.keyCode, e.target.value);\n },\n decrement: (e) => {\n let newValue = Number(intMemoVal) - Number(numStep);\n if (newValue < min) newValue = min;\n else if (newValue > max) newValue = max;\n\n handle.change(newValue);\n\n setTimeout(() => {\n inputRef?.current?.focus();\n setCursorToEnd();\n }, 100);\n },\n increment: (e) => {\n let newValue = Number(intMemoVal) + Number(numStep);\n if (newValue < min) newValue = min;\n else if (newValue > max) newValue = max;\n\n handle.change(newValue);\n\n setTimeout(() => {\n inputRef?.current?.focus();\n setCursorToEnd();\n }, 100);\n },\n };\n\n //Check Outside Click\n useEffect(() => {\n const handleClickOutside = (event) => {\n if (!wrapRef.current.contains(event.target)) setIsFocused(false);\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside, true);\n return () =>\n document.removeEventListener(\"mousedown\", handleClickOutside, true);\n }, []);\n\n useEffect(() => {\n if (!isNotBlinkErrors && isAttemptToChange) {\n setIsAttemptToChange(false);\n setIsToHighlightError(true);\n setTimeout(() => {\n setIsToHighlightError(false);\n }, blinkTime || DEFAULT_BLINK_TIME);\n }\n }, [isAttemptToChange]);\n\n useEffect(() => {\n if (value && value !== inputValue) setInputValue(value);\n }, [value]);\n\n //On Input Value Change\n useEffect(() => {\n if (inputValue !== value) setIsFocused(true);\n\n setInputValueFormated(\n isPriceInput && inputValue?.length > 0\n ? isFocused\n ? removeCommas(inputValue)\n : addCommas(inputValue)\n : inputValue,\n );\n setIntMemoVal(removeCommas(inputValue));\n\n if (typeof onChange === \"function\" && value !== undefined && +inputValue !== +value) onChange(inputValue?.toString());\n }, [inputValue]);\n\n //On Integer Value Change\n useEffect(() => {\n if (isNaN(intMemoVal)) setIntMemoVal(min || 0);\n }, [intMemoVal]);\n\n //On Focuse Change\n useEffect(() => {\n let formatedValue = inputValue;\n if (isPriceInput)\n formatedValue = isFocused\n ? removeCommas(inputValue)\n : addCommas(inputValue);\n setInputValueFormated(formatedValue);\n\n if (isFocused) {\n if (typeof onFocus === \"function\") onFocus({ target: inputRef?.current });\n inputRef?.current?.focus();\n } else {\n if (typeof onBlur === \"function\") onBlur({ target: inputRef?.current });\n inputRef?.current?.blur();\n }\n }, [isFocused]);\n\n useEffect(() => {\n if (inputRef?.current && typeof isFocusDefault === \"boolean\")\n setIsFocused(isFocusDefault);\n }, [inputRef, isFocusDefault]);\n\n function renderInput() {\n const uniProps = {\n name: name || fieldKey || id || testId || \"\",\n className: `input ${className || \"\"}`,\n placeholder,\n value: inputValueFormated,\n disabled,\n onChange: handle.change,\n onFocus: handle.focus,\n onBlur: handle.blur,\n onKeyDown: handle.keyDown,\n onKeyUp: handle.keyUp,\n min,\n max,\n ...(maskChar ? { maskChar } : {}),\n ...(formatChars ? { formatChars } : {}),\n };\n\n return (\n <>\n <input\n {...uniProps}\n data-testid={`${testId}-input`}\n value={value?.length > 0 ? addCommas(removeCommas(value)) : value}\n ref={inputRef}\n type=\"text\"\n onFocus={(...params) => {\n if (isUseAutoSelect) inputRef.current.select();\n if (uniProps.onFocus) uniProps.onFocus(...params);\n }}\n {...attributesOfNativeInput}\n />\n\n {!isNotRenderButtons ? (\n <div className=\"input__nums\">\n <button\n data-testid={`${testId}-minus-btn`}\n ref={decRef}\n className={cn(\"input__num-btn\", {\n \"events-none\": Number(value) <= min,\n })}\n onMouseDown={(e) => handle.decrement(e)}\n >\n <Minus className={cn({ disabled: Number(value) <= min })} />\n </button>\n <button\n data-testid={`-${testId}-plus-btn`}\n ref={incRef}\n className={cn(\"input__num-btn\", {\n \"events-none\": Number(value) >= max,\n })}\n onMouseDown={(e) => handle.increment(e)}\n >\n <Plus className={cn({ disabled: Number(value) >= max })} />\n </button>\n </div>\n ) : null}\n </>\n );\n }\n\n return (\n <div\n data-testid={testId}\n ref={wrapRef}\n className={cn(\n `input__wrap`,\n { [`input__wrap_focus`]: isFocused },\n { [`input__wrap_error`]: error || isToHighlightError },\n { [`input__wrap--disabled`]: disabled || isLoading },\n )}\n >\n {renderInput()}\n {icon}\n {withDelete && (\n <span\n className={cn(`input__close`, { hidden: !inputValue })}\n onClick={() => handle.clear()}\n />\n )}\n {isLoading && <Spinner size=\"small\" />}\n </div>\n );\n};\n\nexport default NumericInput;\n", "import type { ReactElement } from 'react';\n\nimport type { IRadioGroupProps } from './RadioGroup.interface';\n\nimport cn from 'classnames';\nimport { useLayoutEffect, useState } from 'react';\n\nimport RadioInput from '../RadioInput/RadioInput';\nimport './RadioGroup.scss';\n\nfunction RadioGroup({\n className,\n disabled,\n value,\n onChange = () => {},\n direction = 'row',\n options = [],\n}: IRadioGroupProps): ReactElement {\n const [values, setValues] = useState(options);\n\n useLayoutEffect(\n () =>\n setValues(\n options.map(item =>\n item.value === value ? { ...item, checked: value } : item,\n ),\n ),\n [options, value],\n );\n\n const handle = {\n change: (value: string | number | boolean) => {\n const newValues = values.map((item) => {\n if (item.value === value) {\n return {\n ...item,\n checked: value,\n };\n }\n return {\n id: item.id,\n label: item.label,\n value: item.value,\n };\n });\n setValues(newValues);\n onChange(value);\n },\n };\n return (\n <div\n data-testid=\"radio-group\"\n className={cn('radio-group', className, `radio-group--${direction}`, {\n 'radio-group--disabled': disabled,\n })}\n >\n {values.map(item => (\n <RadioInput\n key={item.id}\n {...item}\n value={item.value}\n onChange={handle.change}\n testId={`radio-input-${item.id}`}\n checked={item.checked}\n />\n ))}\n </div>\n );\n}\n\nexport default RadioGroup;\n", "import type { IOption, IRadioGroupWithInputProps } from './RadioGroupWithInput.interface';\n\nimport cn from 'classnames';\n\nimport React from 'react';\nimport FormElement from '../../../Molecular/FormElement/FormElement';\n\nimport Alert from '../../UI/Alert/Alert';\nimport Input from '../Input/Input';\n\nimport RadioInput from '../RadioInput/RadioInput';\nimport './RadioGroupWithInput.scss';\n\nfunction RadioGroupWithInput({\n alert,\n className,\n disabled,\n onChange = () => {},\n direction = 'row',\n options = [],\n}: IRadioGroupWithInputProps): React.ReactElement {\n const handle = {\n changeRadio: (_: string, el: { value: string }) => {\n const newOptions = options.map((item) => {\n return {\n ...item,\n checked: el.value === item.value ? item.value : '',\n };\n });\n onChange(newOptions);\n },\n changeInput: (value: string, el: IOption) => {\n if (el.input) {\n el.input.value = value;\n }\n onChange(options);\n },\n };\n\n return (\n <div className=\"radio-group-input-box\">\n {alert && <Alert className=\"mb10\" {...alert} />}\n <div\n className={cn(\n 'radio-group-input',\n className,\n `radio-group-input--${direction}`,\n {\n 'radio-group-input--disabled': disabled,\n },\n )}\n >\n {options?.map((item) => {\n return (\n <div\n key={item.id}\n className={cn(\n 'radio-group-input-item',\n `radio-group-input-item-${item.id}`,\n )}\n >\n <RadioInput\n {...item}\n id={String(item.id)}\n onChange={value => handle.changeRadio(String(value), item)}\n checked={item.checked}\n />\n {item.input && item.checked && (\n <FormElement {...item.input}>\n <Input\n onChange={value => handle.changeInput(value, item)}\n {...item.input}\n testId={`${item.id}-input`}\n />\n </FormElement>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nexport default RadioGroupWithInput;\n", "import type { ReactElement } from 'react';\n\nimport type { IFormElementProps } from './FormElement.interface';\n\nimport cn from 'classnames';\nimport Label from '../../Atomic/FormElements/Label/Label';\n\nimport Alert from '../../Atomic/UI/Alert/Alert';\nimport './FormElement.scss';\n\nconst RC = 'form-element';\n\nfunction FormElement({\n label,\n required,\n children,\n error,\n className,\n hint,\n isLabelBolt,\n isNoLabel,\n alert,\n onClickHintCallback,\n note,\n}: IFormElementProps): ReactElement {\n return (\n <div className={cn(className, RC, { [`${RC}--error`]: error })}>\n {label && !isNoLabel && (\n <Label\n className={`${RC}__label`}\n label={label}\n hint={hint}\n note={note}\n isRequired={required}\n isLabelBolt={isLabelBolt}\n onClickHintCallback={onClickHintCallback}\n />\n )}\n {children}\n {error && (\n <span\n className={cn(`${RC}__error`, {\n [`${RC}__error--with-alert`]: alert,\n })}\n >\n {error}\n </span>\n )}\n {alert && <Alert className={`${RC}__alert`} {...alert} />}\n </div>\n );\n}\n\nexport default FormElement;\n", "import classNames from 'classnames';\nimport React from 'react';\nimport './RadioRowSwitcher.scss';\n\nexport interface RadioRowSwitcherItem {\n key: string;\n label: React.ReactNode;\n}\n\nexport interface RadioRowSwitcherProps {\n onChange: (value: string) => void;\n radios: RadioRowSwitcherItem[];\n label?: string;\n value?: string;\n}\n\nconst RadioRowSwitcher: React.FC<RadioRowSwitcherProps> = ({ onChange, radios, label = '', value = '' }) => {\n const handle = {\n change: (newValue: string) => {\n if (newValue === value) onChange('');\n else onChange(newValue);\n },\n };\n\n const itemClass = (key: string): string =>\n classNames('radio-row-switcher__item', {\n 'radio-row-switcher__item--active': key === value,\n });\n const sliderClass = (key: string): string =>\n classNames(\n 'radio-row-switcher__slider',\n `radio-row-switcher__slider--${key}`,\n );\n\n return (\n <div className=\"radio-row-switcher\" data-testid=\"radio-row-switcher-root\">\n {label && <div className=\"radio-row-switcher__label\" data-testid=\"radio-row-switcher-label\">{label}</div>}\n\n <div className=\"radio-row-switcher__items-box\" data-testid=\"radio-row-switcher-items-box\">\n {radios.map((item) => {\n return (\n <React.Fragment key={item.key}>\n <div\n onClick={() => handle.change(item.key)}\n className={itemClass(item.key)}\n data-testid={`radio-row-switcher-item-${item.key}`}\n >\n {item.label}\n </div>\n </React.Fragment>\n );\n })}\n\n {value && (\n <div\n onClick={() => handle.change('')}\n className={sliderClass(value)}\n data-testid=\"radio-row-switcher-slider\"\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default RadioRowSwitcher;\n", "import type { KeyboardEvent } from 'react';\nimport type { IRangeInputsProps } from './RangeInputs.interface';\n\nimport cn from 'classnames';\nimport React, { useRef, useState } from 'react';\n\nimport {\n filterFloat,\n formatOnlyNumbers,\n} from '../../../Functions/fieldValueFormatters';\nimport { addBitDepthPoints } from '../../../Functions/utils.js';\nimport Input from '../Input/Input';\n\nimport './RangeInputs.scss';\n\nconst RC = 'range-inputs';\n\nconst RangeInputs: React.FC<IRangeInputsProps> = ({\n isColumnPosition,\n className,\n value: valueObj,\n onChange,\n validateErrors,\n type = 'int',\n setError: setInnerError,\n label = '',\n isPrice = false,\n testId,\n withZero = false,\n fromPlaceholder = '',\n toPlaceholder = '',\n disabled,\n isDisabled,\n}) => {\n const [error, setError] = useState<{ from: string; to: string }>({ from: '', to: '' });\n const inputFromRef = useRef<HTMLInputElement | null>(null);\n const inputToRef = useRef<HTMLInputElement | null>(null);\n\n const isFieldDisabled = disabled || isDisabled;\n\n const isValidRange = (from: string, to: string): boolean => {\n const correctFrom = Number.parseFloat(from?.toString()?.replace(/\\D/g, ''));\n const correctTo = Number.parseFloat(to?.toString()?.replace(/\\D/g, ''));\n\n return correctFrom <= correctTo;\n };\n\n const valueFormatter = (value: string | number): string => {\n const valStr = String(value);\n if (type === 'float' && !isPrice) return filterFloat(value, 2);\n else if (type === 'float' && isPrice)\n return addBitDepthPoints(filterFloat(valStr?.replace(/[^\\d.]/g, ''), 2));\n else if (type !== 'float' && isPrice)\n return addBitDepthPoints(valStr?.replace(/\\D/g, ''));\n else return formatOnlyNumbers(value);\n };\n\n const handleChange = (prop: 'from' | 'to', val: string | number): void => {\n onChange({ ...valueObj, [prop]: valueFormatter(val) });\n };\n\n const rangeValidation = (key: 'from' | 'to'): void => {\n const isEmpty = !valueObj?.from && !valueObj?.to;\n const oppositeKey = key === 'from' ? 'to' : 'from';\n const from = valueObj?.from != null ? String(valueObj.from) : '';\n const to = valueObj?.to != null ? String(valueObj.to) : '';\n const validationResult = validateErrors?.(from, to);\n\n if (!withZero && isEmpty) {\n setError({ from: '', to: '' });\n setInnerError?.('');\n }\n else if (!withZero && !valueObj?.[oppositeKey]) {\n const mustToFocus = key === 'from' ? inputToRef.current : inputFromRef.current;\n mustToFocus?.focus();\n }\n else if (!isValidRange(from, to)) {\n if (!valueObj?.from) setError({ ...error, from: 'Invalid range' });\n else setError({ ...error, to: 'Invalid range' });\n setInnerError?.('Invalid range');\n }\n else if (validationResult) {\n // \u043F\u0440\u043E\u043F validateErrors \u0432\u0435\u0440\u043D\u0435\u0442 \u043F\u0443\u0441\u0442\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443, \u0432 \u0441\u043B\u0443\u0447\u0430\u0435 \u0435\u0441\u043B\u0438 \u043E\u0448\u0438\u0431\u043E\u043A \u043D\u0435\u0442\n setError({\n from: validationResult.from ?? '',\n to: validationResult.to ?? '',\n });\n }\n else {\n setError({ from: '', to: '' });\n setInnerError?.('');\n // return e;\n }\n };\n\n return (\n <div\n className={cn(RC, className, {\n [`${RC}_column`]: isColumnPosition,\n })}\n >\n {label && label !== ' ' && <div className={`${RC}__label`}>{label}</div>}\n <div className={`${RC}__wrapper`}>\n <div className={`${RC}__input-from`}>\n <span className={`${RC}__input-label`}>From</span>\n <Input\n testId={`${testId}--from`}\n ref={inputFromRef}\n value={String(valueObj?.from) ?? ''}\n onChange={(val: string) => handleChange('from', val)}\n onBlur={() => rangeValidation('from')}\n error={error.from}\n onKeyUp={(_keyCode: number | string, e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n const from = valueObj?.from != null ? String(valueObj.from) : '';\n const to = valueObj?.to != null ? String(valueObj.to) : '';\n if (isValidRange(from, to)) {\n inputFromRef.current?.blur();\n }\n else {\n inputToRef.current?.focus();\n inputToRef.current?.select();\n }\n }\n }}\n placeholder={fromPlaceholder}\n disabled={isFieldDisabled}\n />\n </div>\n\n <div className={`${RC}__input-to`}>\n <span className={`${RC}__input-label`}>to</span>\n <Input\n testId={`${testId}--to`}\n ref={inputToRef}\n value={String(valueObj?.to) ?? ''}\n onChange={(val: string) => handleChange('to', val)}\n onBlur={() => rangeValidation('to')}\n error={error.to}\n onKeyUp={(_keyCode: number | string, e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') inputToRef.current?.blur();\n }}\n placeholder={toPlaceholder}\n disabled={isFieldDisabled}\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default RangeInputs;\n", "import type { IInputOnlyNumbersOptions, IRangeListProps } from './RangeList.interface';\nimport cn from 'classnames';\nimport React, { useRef, useState } from 'react';\n\nimport { addRangeDefault } from '../../../Functions/operations';\nimport Button from '../../UI/Button/Button';\nimport Input from '../Input/Input';\n\nimport RangeListRow, { RangeListCell } from './partial/RangeListRow';\n\nimport './RangeList.scss';\n\nconst RC = 'range-list';\nconst DEFAULT_STATE = { from: '', to: '' };\n\nconst RangeList: React.FC<IRangeListProps> = (props) => {\n const {\n className,\n value = [],\n disabled,\n validateErrors,\n onChange,\n isFloatValues,\n decimalPlaces,\n error,\n defaultErrorText,\n nullValueText,\n isOnlyOneRow = false,\n testId = 'range-list',\n } = props;\n\n const NULL_VALUE_TEXT = nullValueText ?? 'No data';\n\n const [state, setState] = useState<{ from: string; to: string }>(DEFAULT_STATE);\n const [innerError, setInnerError] = useState<string | boolean>('');\n const [outerError, setOuterError] = useState<string | boolean>('');\n\n const inputFromRef = useRef<HTMLInputElement>(null);\n const inputToRef = useRef<HTMLInputElement>(null);\n\n const isValidRange = Boolean(\n state?.from && state?.to && Number(state?.from) <= Number(state?.to),\n );\n const isShowRow = (isOnlyOneRow && value?.length === 0) || !isOnlyOneRow;\n\n const getOnlyNumbersProps = (): IInputOnlyNumbersOptions => {\n return isFloatValues\n ? { type: 'float', decimalPlaces: decimalPlaces || 0 }\n : { type: 'int' };\n };\n\n const handle = {\n inputsChange: (val: string, prop: 'from' | 'to') => setState({ ...state, [prop]: val }),\n addRange: () => {\n const validationError = validateErrors?.(Number(state.from), Number(state.to));\n\n if (isValidRange && !validationError) {\n onChange(\n addRangeDefault(\n Number(state.from),\n Number(state.to),\n value,\n isFloatValues ? decimalPlaces : null,\n ),\n );\n setState(DEFAULT_STATE);\n setInnerError('');\n setOuterError('');\n }\n else if (!isValidRange) {\n setInnerError(defaultErrorText || '');\n }\n else if (validationError) {\n setOuterError(validationError);\n }\n },\n removeRange: (index: number) =>\n onChange(value.filter((_, idx) => idx !== index)),\n rangeValidation: (e: React.FocusEvent, key: 'from' | 'to') => {\n const oppositeKey = key === 'from' ? 'to' : 'from';\n\n if (!state?.from && !state?.to) {\n setInnerError('');\n setOuterError('');\n return e;\n }\n if (!state[oppositeKey]) {\n const mustToFocus\n = key === 'from' ? inputToRef.current : inputFromRef.current;\n mustToFocus?.focus();\n }\n else if (!isValidRange) {\n setInnerError(defaultErrorText || '');\n if (validateErrors)\n setOuterError(validateErrors(Number(state.from), Number(state.to)) || '');\n }\n else {\n setInnerError('');\n if (validateErrors)\n setOuterError(validateErrors(Number(state.from), Number(state.to)) || '');\n }\n return null;\n },\n onKeyUpFromInput: (keyCode: string | number) => {\n if (keyCode === 13) {\n if (isValidRange) inputFromRef.current?.blur();\n else if (!state.to) inputToRef.current?.focus();\n else if (state.from) inputFromRef.current?.select();\n }\n },\n onKeyUpToInput: (keyCode: string | number) => {\n if (keyCode === 13) inputToRef.current?.blur();\n },\n };\n\n const renderInputsAndAddButtonRow = (): React.ReactElement => {\n return (\n <div className={cn(`${RC}__row`, `${RC}__inputs`)}>\n <RangeListCell className={`${RC}__cell-input`}>\n <Input\n ref={inputFromRef}\n onlyNumbers={getOnlyNumbersProps()}\n value={state.from}\n onBlur={(e: React.FocusEvent) => handle.rangeValidation(e, 'from')}\n onChange={(val: string) => handle.inputsChange(val, 'from')}\n onKeyUp={(keyCode: string | number) => handle.onKeyUpFromInput(keyCode)}\n />\n </RangeListCell>\n\n <RangeListCell className={`${RC}__cell-input`}>\n <Input\n ref={inputToRef}\n onlyNumbers={getOnlyNumbersProps()}\n value={state.to}\n onBlur={(e: React.FocusEvent) => handle.rangeValidation(e, 'to')}\n onChange={(val: string) => handle.inputsChange(val, 'to')}\n onKeyUp={(keyCode: string | number) => handle.onKeyUpToInput(keyCode)}\n />\n </RangeListCell>\n\n <RangeListCell className={`${RC}__cell-button`}>\n <Button onClick={handle.addRange}>Add</Button>\n </RangeListCell>\n </div>\n )\n };\n\n return (\n <div\n data-testid={testId}\n className={cn(RC, className, { [`${RC}_disabled`]: disabled })}\n >\n <div className={cn(`${RC}__row`, `${RC}__labels`)}>\n <RangeListCell className={`${RC}__cell-label`}>From</RangeListCell>\n <RangeListCell className={`${RC}__cell-label`}>To</RangeListCell>\n </div>\n {isShowRow && renderInputsAndAddButtonRow()}\n {(innerError || outerError || error) && (\n <span className={`${RC}__error`}>\n {innerError || error || outerError}\n </span>\n )}\n {!value?.length && (\n <div className={cn(`${RC}__row`, `${RC}__values`, `${RC}__null-value`)}>\n {NULL_VALUE_TEXT}\n </div>\n )}\n {value.map((row, idx) => (\n <RangeListRow\n data-testid={`${testId}-row-${idx}`}\n key={`idx-${idx}-from-${row.from}-to${row.to}`}\n {...row}\n idx={idx}\n actionClick={() => handle.removeRange(idx)}\n />\n ))}\n </div>\n );\n};\n\nexport default RangeList;\n", "// \u0412\u0437\u044F\u0442\u043E \u0438\u0437 https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Math/round\n// \u041F\u0440\u0438 \u0438\u043C\u043F\u043E\u0440\u0442\u0435 \u043B\u044E\u0431\u043E\u0439 \u0444-\u0438 \u0438\u0437 \u044D\u0442\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 \u043E\u0442\u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0441\u0430\u043C\u043E\u0432\u044B\u0437\u044B\u0432\u0430\u044E\u0449\u0430\u044F\u0441\u044F \u0444-\u044F \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\n// \u043E\u0431\u044A\u0435\u043A\u0442 Math 3-\u043C\u044F \u0444-\u043C\u0438: round10, floor10, ceil10\n(function () {\n /**\n * \u041A\u043E\u0440\u0440\u0435\u043A\u0442\u0438\u0440\u043E\u0432\u043A\u0430 \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F \u0434\u0435\u0441\u044F\u0442\u0438\u0447\u043D\u044B\u0445 \u0434\u0440\u043E\u0431\u0435\u0439.\n *\n * @param {String} type \u0422\u0438\u043F \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u0438\u0440\u043E\u0432\u043A\u0438.\n * @param {Number} value \u0427\u0438\u0441\u043B\u043E.\n * @param {Integer} exp \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0435\u043B\u044C \u0441\u0442\u0435\u043F\u0435\u043D\u0438 (\u0434\u0435\u0441\u044F\u0442\u0438\u0447\u043D\u044B\u0439 \u043B\u043E\u0433\u0430\u0440\u0438\u0444\u043C \u043E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u0438\u0440\u043E\u0432\u043A\u0438).\n * @returns {Number} \u0421\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435.\n */\n function decimalAdjust(type, value, exp) {\n // \u0415\u0441\u043B\u0438 \u0441\u0442\u0435\u043F\u0435\u043D\u044C \u043D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0430, \u043B\u0438\u0431\u043E \u0440\u0430\u0432\u043D\u0430 \u043D\u0443\u043B\u044E...\n if (typeof exp === \"undefined\" || Number(exp) === 0) {\n return Math[type](value);\n }\n value = Number(value);\n exp = Number(exp);\n // \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0447\u0438\u0441\u043B\u043E\u043C, \u043B\u0438\u0431\u043E \u0441\u0442\u0435\u043F\u0435\u043D\u044C \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0446\u0435\u043B\u044B\u043C \u0447\u0438\u0441\u043B\u043E\u043C...\n if (isNaN(value) || !(typeof exp === \"number\" && exp % 1 === 0)) {\n return NaN;\n }\n // \u0421\u0434\u0432\u0438\u0433 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432\n value = value.toString().split(\"e\");\n value = Math[type](\n Number(value[0] + \"e\" + (value[1] ? Number(value[1]) - exp : -exp)),\n );\n // \u041E\u0431\u0440\u0430\u0442\u043D\u044B\u0439 \u0441\u0434\u0432\u0438\u0433\n value = value.toString().split(\"e\");\n return Number(value[0] + \"e\" + (value[1] ? Number(value[1]) + exp : exp));\n }\n\n // \u0414\u0435\u0441\u044F\u0442\u0438\u0447\u043D\u043E\u0435 \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u0435 \u043A \u0431\u043B\u0438\u0436\u0430\u0439\u0448\u0435\u043C\u0443\n if (!Math.round10) {\n Math.round10 = function (value, exp) {\n return decimalAdjust(\"round\", value, exp);\n };\n }\n // \u0414\u0435\u0441\u044F\u0442\u0438\u0447\u043D\u043E\u0435 \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u0435 \u0432\u043D\u0438\u0437\n if (!Math.floor10) {\n Math.floor10 = function (value, exp) {\n return decimalAdjust(\"floor\", value, exp);\n };\n }\n // \u0414\u0435\u0441\u044F\u0442\u0438\u0447\u043D\u043E\u0435 \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u0435 \u0432\u0432\u0435\u0440\u0445\n if (!Math.ceil10) {\n Math.ceil10 = function (value, exp) {\n return decimalAdjust(\"ceil\", value, exp);\n };\n }\n})();\n\nexport const addRangeDefault = (from, to, currentValues, decimalPlaces) => {\n if (!currentValues?.length) return [{ from, to }];\n const step = decimalPlaces ? Math.pow(10, -1 * decimalPlaces) : 1;\n\n const resultOfProcessAddingRange = currentValues.reduce(\n (acc, range) => {\n const isIncludesFrom =\n Boolean(acc.from) && range.from < acc.from && range.to >= acc.from;\n const isIncludesTo =\n Boolean(acc.to) && range.from <= acc.to && range.to > acc.to;\n const isRangeMustBeIncludet =\n Boolean(acc.from) &&\n Boolean(acc.to) &&\n acc.from <= range.from &&\n acc.to >= range.to;\n\n const processTo = () => {\n const lastAccRange = acc.result[acc.result.length - 1];\n\n if (acc.to < range.from) {\n lastAccRange.to = acc.to;\n acc.to = null;\n acc.result = [...acc.result, range];\n } else if (isIncludesTo) {\n lastAccRange.to = acc.to;\n acc.result = [\n ...acc.result,\n {\n from: Math.round10(acc.to + step, -1 * decimalPlaces),\n to: range.to,\n },\n ];\n acc.to = null;\n } else if (acc.to === range.to) {\n lastAccRange.to = acc.to;\n acc.to = null;\n }\n };\n\n if (!acc.from && !acc.to) acc.result = [...acc.result, range];\n else if (!acc.from && acc.to) processTo();\n else if (acc.from && acc.to) {\n if (acc.from <= range.from) {\n acc.result = [...acc.result, { from: acc.from }];\n acc.from = null;\n processTo();\n } else if (isIncludesFrom) {\n acc.result = [\n ...acc.result,\n {\n from: range.from,\n to: Math.round10(acc.from - step, -1 * decimalPlaces),\n },\n { from: acc.from },\n ];\n acc.from = null;\n processTo();\n } else {\n acc.result = [\n ...acc.result,\n ...(!isRangeMustBeIncludet ? [range] : []),\n {\n from: Math.round10(acc.from, -1 * decimalPlaces),\n to: Math.round10(acc.to, -1 * decimalPlaces),\n },\n ];\n }\n }\n return acc;\n },\n { from, to, result: [] },\n );\n\n const result = resultOfProcessAddingRange.result;\n if (!result[result.length - 1].to) result[result.length - 1].to = to;\n return result;\n};\n", "import type { IRangeListCellProps, IRangeListRowProps } from '../RangeList.interface';\nimport cn from 'classnames';\nimport React from 'react';\n\nimport { Trash2 } from 'react-feather';\n\nconst RC = 'range-list';\n\nexport const RangeListCell: React.FC<IRangeListCellProps> = ({ children, idx, className, onClick }) => {\n return (\n <div\n className={cn(`${RC}__cell`, className, { [`${RC}__cell-${idx}`]: idx })}\n onClick={onClick}\n >\n {children}\n </div>\n );\n};\n\nconst RangeListRow: React.FC<IRangeListRowProps> = ({ from, to, idx, actionClick }) => {\n return (\n <div\n className={cn(`${RC}__row`, `${RC}__values`, {\n [`${RC}__values_first-value`]: idx === 0,\n })}\n >\n <RangeListCell idx={1} className={`${RC}__cell-value`}>\n {from}\n </RangeListCell>\n\n <RangeListCell idx={2} className={`${RC}__cell-value`}>\n {to}\n </RangeListCell>\n\n <RangeListCell\n idx={3}\n className={`${RC}__cell-action`}\n onClick={() => actionClick(idx)}\n >\n <Trash2 />\n </RangeListCell>\n </div>\n );\n};\n\nexport default RangeListRow;\n", "import type {\n MouseEvent as ReactMouseEvent,\n TouchEvent as ReactTouchEvent,\n} from 'react';\nimport type { IRangeItem, IRangeSlider2Props, ITriggerItem } from './RangeSlider2.interface';\n\nimport cn from 'classnames';\nimport React, {\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ChevronLeft, ChevronRight, Plus, X } from 'react-feather';\n\nimport useIsMobile from '../../../Functions/useIsMobile/useIsMobile';\nimport { compare } from '../../../Functions/utils';\n\nimport { EAssignSide, ECollision, EPointValueType } from './RangeSlider2.interface';\nimport './RangeSlider2.scss';\n\nconst COMPONENT_CLASS = 'range-slider2';\n\nconst RangeSlider2: React.FC<IRangeSlider2Props> = ({\n min = 300,\n max = 850,\n minRange = 50,\n dividersRange = 50,\n pointValueType = EPointValueType.From,\n precision = 0,\n step = 5,\n className,\n value = [],\n onChange = () => { },\n transformDataOnConcat = () => ({ data: [], value: 0 }),\n}) => {\n const { isMobile } = useIsMobile();\n const trackRef = useRef<HTMLDivElement>(null);\n const addTriggerRef = useRef<HTMLDivElement>(null);\n\n // ==================== STATE ==================== //\n\n const [protectedValue, setProtectedValue] = useState<IRangeItem[]>([]);\n const [ranges, setRanges] = useState<IRangeItem[]>(value);\n const [triggers, setTriggers] = useState<ITriggerItem[]>([]);\n\n const [trackWidth, setTrackWidth] = useState(0);\n const [trackPosition, setTrackPosition] = useState(0);\n const [mouseTrackPosition, setMouseTrackPosition] = useState(0);\n\n const [movingTrigger, setMovingTrigger] = useState<HTMLElement | null>(null);\n const [movingTriggerIndex, setMovingTriggerIndex] = useState<number | null>(null);\n const [movingController, setMovingController] = useState<AbortController | null>(null);\n const [movingTriggerData, setMovingTriggerData] = useState<ITriggerItem | null>(null);\n const [isTriggerMoved, setIsTriggerMoved] = useState(false);\n\n const [isMouseOverTrigger, setIsMouseOverTrigger] = useState(false);\n const [isMouseOverTrack, setIsMouseOverTrack] = useState(false);\n\n const [pointsPerPx, setPointsPerPx] = useState(0);\n\n const [addTriggerFixedScore, setAddTriggerFixedScore] = useState<number | null>(null);\n const [addTriggerFixedRange, setAddTriggerFixedRange] = useState<IRangeItem | null>(null);\n const [isAddTriggerFixed, setIsAddTriggerFixed] = useState(false);\n const [assignValueToRange, setAssignValueToRange] = useState<EAssignSide>(EAssignSide.Left);\n\n const setMouseOverTrigger = (): void => setIsMouseOverTrigger(true);\n const setMouseLeaveTrigger = (): void => setIsMouseOverTrigger(false);\n const setMouseOverTrack = (): void => setIsMouseOverTrack(true);\n const setMouseLeaveTrack = (): void => setIsMouseOverTrack(false);\n\n const isTriggerMoving = (triggerIndex: number): boolean => triggerIndex === movingTriggerIndex;\n const countPointsPerPx = (width: number): number => {\n return (max - min) / width;\n };\n\n const fixAddTrigger = (score: number | null, inRange: IRangeItem): void => {\n if (score !== null) {\n setAddTriggerFixedScore(score);\n setAddTriggerFixedRange(inRange);\n setIsAddTriggerFixed(true);\n }\n };\n const unfixAddTrigger = (e?: any): void => {\n e?.stopPropagation();\n e?.preventDefault();\n\n setAddTriggerFixedScore(null);\n setAddTriggerFixedRange(null);\n setIsAddTriggerFixed(false);\n setAssignValueToRange(EAssignSide.Left);\n };\n\n const prepareValue = (value: number | string): number => {\n return Number.parseInt((Number.parseFloat(value.toString()) * 10 ** precision).toString(), 10) / 10 ** precision;\n };\n const addRange = ({ from, to, label, value, data = [], id }: IRangeItem): void =>\n setRanges((ranges) => {\n if (!id) {\n id = (ranges?.length + 1) * -1;\n }\n\n return [\n ...ranges,\n {\n id,\n from,\n to,\n label,\n data,\n value: Number.isInteger(value) ? value : 0,\n },\n ].sort((a, b) => a.from - b.from);\n });\n const updateRange = ({ from, to, label, value, data, id }: IRangeItem): void =>\n setRanges((ranges) => {\n const newRanges = [...ranges];\n const range = newRanges?.find(({ id: rangeId }) => rangeId === id);\n\n if (range) {\n range.from = from ?? range?.from;\n range.to = to ?? range?.to;\n range.label = label ?? range?.label;\n range.value\n = value !== undefined\n ? Number.isInteger(value)\n ? value\n : 0\n : range?.value;\n range.data = data !== undefined ? data : range?.data;\n }\n\n return newRanges;\n });\n const splitRange = (score: number): void => {\n const range = ranges?.find(\n ({ from, to }) => from + minRange <= score + 1 && score <= to - minRange,\n );\n if (!range) return;\n\n const { value = 0, label, data = [] } = addTriggerFixedRange || {};\n addRange({\n value: assignValueToRange === EAssignSide.Right ? value : 0,\n data: assignValueToRange === EAssignSide.Right ? data : undefined,\n label,\n from: score + 1,\n to: range?.to,\n id: null,\n });\n updateRange({\n ...range,\n value: assignValueToRange === EAssignSide.Left ? value : 0,\n data: assignValueToRange === EAssignSide.Left ? data : undefined,\n label,\n to: score,\n });\n\n if (isAddTriggerFixed) unfixAddTrigger();\n };\n const removeRange = (id?: number | null): void =>\n setRanges(ranges => ranges?.filter(range => range?.id !== id));\n const concatRanges = (score: number): void => {\n const [left, right] = ranges?.filter(\n ({ from, to }) => from === score + 1 || score === to,\n );\n const { data, value } = transformDataOnConcat(left, right);\n\n updateRange({ from: left?.from, to: right?.to, id: left?.id, data, value });\n removeRange(right?.id);\n };\n const clearRanges = (): void => setRanges([]);\n\n const addTrigger = (\n value: number | null,\n { isFixed = false, isHidden = false } = {},\n { withRange = true } = {},\n index = triggers.length,\n ): void =>\n setTriggers((state) => {\n if (value === null) return state;\n\n if (withRange) splitRange(value);\n\n const newState = [...state];\n const id = state?.length\n ? Math.max(...state?.map(({ id }) => id)) + 1\n : 0;\n\n newState.splice(index, 0, { id, value, isFixed, isHidden });\n return newState.sort((a, b) => (a.value < b.value ? -1 : 1));\n });\n const updateTrigger = (index: number, value: number): void =>\n setTriggers((state) => {\n const newState = [...state];\n newState[index] = { ...newState[index], value };\n return newState;\n });\n const removeTrigger = (index: number): void =>\n setTriggers((state) => {\n concatRanges(state[index]?.value);\n\n const newState = [...state];\n newState.splice(index, 1);\n return newState;\n });\n const clearTriggers = (): void => setTriggers([]);\n const getTriggerByScore = (score: number | null): ITriggerItem | undefined => {\n if (score === null) return undefined;\n\n return triggers?.find(({ value: triggerScore }) => triggerScore === score);\n };\n const updateRangesByTrigger = (trigger: ITriggerItem): void => {\n const newValue = triggers?.find(({ id }) => id === trigger?.id)?.value ?? 0;\n const oldValue = trigger?.value;\n\n const leftRange = ranges?.find(range => range?.to === oldValue);\n const rightRange = ranges?.find(range => range?.from === oldValue + 1);\n\n if (leftRange && rightRange) {\n updateRange({ from: leftRange?.from, to: newValue, id: leftRange?.id });\n updateRange({\n from: newValue + 1,\n to: rightRange?.to,\n id: rightRange?.id,\n });\n }\n };\n const resetMovingTrigger = (): void => {\n setTimeout(() => {\n setMovingTrigger(null);\n setMovingTriggerIndex(null);\n }, 1);\n };\n\n const getTrackXByScore = (score: number | null): number => {\n if (score === null) return 0;\n\n return (score - min) / pointsPerPx;\n };\n const getScoreByX = (x: number): number => {\n let points = (x - trackPosition) * pointsPerPx + min;\n points -= points % step;\n\n if (points < min) points = min;\n if (points > max) points = max;\n\n return points - 1;\n };\n const getTriggerCollisionDirection = (index: number, points: number): ECollision => {\n if (index <= 0) return points;\n\n const [triggerBefore, triggerAfter] = [\n triggers?.[index - 1]?.value + minRange - 1,\n triggers?.[index + 1]?.value - minRange - 1,\n ];\n\n if (triggerBefore === triggerAfter) return ECollision.Both;\n else if (points === triggerBefore) return ECollision.Left;\n else if (points === triggerAfter) return ECollision.Right;\n else return ECollision.None;\n };\n const getTriggerScore = (index: number, points: number): number => {\n if (index <= 0) return points;\n\n const [triggerBefore, triggerAfter] = [\n triggers?.[index - 1]?.value + minRange - 1,\n triggers?.[index + 1]?.value - minRange - 1,\n ];\n\n if (points < triggerBefore) return triggerBefore;\n else if (points > triggerAfter) return triggerAfter;\n else return points;\n };\n const getRangesList = (): { from: number, to: number }[] => {\n return triggers\n .map(({ value }) => value)\n .sort()\n .reduce((result: { from: number, to: number }[], score, i, scores) => {\n if (i !== 0) {\n result.push({\n from: scores[i - 1],\n to: score,\n });\n }\n return result;\n }, []);\n };\n const getAddTriggerScore = (x: number): number | null => {\n const score = getScoreByX(x);\n\n let result: number | null = getRangesList()?.reduce((result: number | null, { from, to }: IRangeItem) => {\n if (to - from + 1 <= 2 * minRange && from <= score && score <= to) {\n return null;\n }\n\n if (from <= score && score <= from + minRange) {\n return from + minRange - 1;\n }\n else if (to - minRange <= score && score <= to) {\n return to - minRange - 1;\n }\n else {\n return result;\n }\n }, score);\n\n if (!result) {\n const closestRange = getRangesList()\n ?.filter(({ from, to }) => to - from + 1 >= 2 * minRange)\n ?.reduce((result: { from: number; to: number; distance: number } | null, range: IRangeItem) => {\n const distance: number = Math.abs((range.to + range.from) / 2 - score);\n if (!result || distance < result?.distance) {\n return {\n ...range,\n distance,\n };\n }\n\n return result;\n }, null);\n\n if (closestRange) {\n if (closestRange?.to < score) result = closestRange?.to - minRange - 1;\n if (score < closestRange?.from)\n result = closestRange?.from + minRange - 1;\n }\n }\n\n return result;\n };\n const getInRange = (score: number | null): IRangeItem | undefined => {\n return ranges?.find(({ from, to }) => score !== null && from <= score && score <= to);\n };\n const getAddTriggerCollisionDirection = (x: number): number => {\n const triggerScore = getAddTriggerScore(x);\n const inRange = getInRange(triggerScore);\n\n if (!inRange) return 0;\n\n const { from, to } = inRange;\n const triggerBefore = from + minRange - 1;\n const triggerAfter = to - minRange - 1;\n\n if (triggerBefore === triggerAfter) return ECollision.Both;\n else if (triggerScore !== null && triggerScore <= triggerBefore) return ECollision.Left;\n else if (triggerScore !== null && triggerScore >= triggerAfter) return ECollision.Right;\n else return ECollision.None;\n };\n const getAddTriggerPosition = (): number => {\n return isAddTriggerFixed\n ? getTrackXByScore(addTriggerFixedScore ?? 0)\n : mouseTrackPosition;\n };\n const getPointValue = (score: number | null): string => {\n if (score === null) return '';\n\n switch (pointValueType) {\n case EPointValueType.From:\n return `${score + 1}`;\n case EPointValueType.To:\n return `${score}`;\n case EPointValueType.Both:\n default:\n return `${score} | ${score + 1}`;\n }\n };\n\n // EVENTS //\n const onRangeChange = (index: number, value: number, validate = true): void => {\n if (validate) value = prepareValue(value);\n\n if (Number.isNaN(value)) value = 0;\n updateTrigger(index, value);\n };\n const onTriggerMouseDown = (e: ReactMouseEvent | ReactTouchEvent, index: number): void => {\n setMovingTrigger(e.target as HTMLElement);\n setMovingTriggerIndex(index);\n setMovingTriggerData({ ...triggers[index] });\n };\n const onTriggerMove = (e: ReactTouchEvent | ReactMouseEvent | TouchEvent | MouseEvent): boolean => {\n if (e?.cancelable) e?.preventDefault();\n e?.stopPropagation();\n\n if (!movingTriggerIndex || !movingTrigger) {\n return false;\n }\n\n if (!isTriggerMoved) setIsTriggerMoved(true);\n\n const { clientX: x } = (e as ReactTouchEvent)?.touches?.[0] ?? e;\n const { width: triggerWidth }\n = movingTrigger?.getBoundingClientRect() || {};\n\n if (x < trackPosition || x > trackPosition + trackWidth + triggerWidth)\n return false;\n\n const triggerPoints = getTriggerScore(movingTriggerIndex, getScoreByX(x));\n\n onRangeChange(movingTriggerIndex, triggerPoints);\n\n return true;\n };\n\n useEffect(() => {\n if (isMobile) {\n document.addEventListener('touchend', resetMovingTrigger);\n }\n else {\n document.addEventListener('mouseup', resetMovingTrigger);\n }\n\n return () => {\n if (isMobile) {\n document.removeEventListener('touchend', resetMovingTrigger);\n }\n else {\n document.removeEventListener('mouseup', resetMovingTrigger);\n }\n };\n }, []);\n // MouseMove Event Controller\n useEffect(() => {\n if (!movingTrigger && isTriggerMoved) {\n movingController?.abort();\n setIsTriggerMoved(false);\n setMovingController(null);\n }\n else if (movingTrigger && !isTriggerMoved) {\n setMovingController(new AbortController());\n }\n\n const body = document.getElementsByTagName('body')[0];\n body.classList?.[movingTrigger ? 'add' : 'remove']('moving-cursor');\n }, [movingTrigger]);\n\n useEffect(() => {\n if (movingController) {\n if (isMobile) {\n document.addEventListener('touchmove', onTriggerMove, {\n signal: movingController?.signal,\n });\n }\n else {\n document.addEventListener('mousemove', onTriggerMove, {\n signal: movingController?.signal,\n });\n }\n }\n\n return () => {\n if (isMobile) {\n document.removeEventListener('touchmove', onTriggerMove);\n }\n else {\n document.removeEventListener('mousemove', onTriggerMove);\n }\n };\n }, [movingController]);\n useLayoutEffect(() => {\n const { width = 0, x = 0 } = trackRef?.current?.getBoundingClientRect() || {};\n\n setPointsPerPx(countPointsPerPx(width));\n setTrackWidth(width);\n setTrackPosition(x);\n }, [trackRef]);\n useEffect(() => {\n onChange(ranges, triggers);\n }, [ranges]);\n useEffect(() => {\n clearRanges();\n clearTriggers();\n\n if (protectedValue?.length === 0) {\n addRange({ from: min, to: max });\n addTrigger(min, { isFixed: true, isHidden: true });\n addTrigger(max, { isFixed: true, isHidden: true });\n }\n else {\n protectedValue\n ?.reduce((result, range) => {\n addRange({ ...range });\n\n if (!result.find(score => score === range?.from))\n // @ts-ignore\n result.splice(result?.length - 1, 0, range?.from);\n if (!result.find(score => score === range?.to))\n // @ts-ignore\n result.splice(result?.length - 1, 0, range?.to);\n return result;\n }, [])\n ?.sort((a, b) => (a < b ? -1 : 1))\n ?.filter((item, i, arr) => i === 0 || item - 1 !== arr[i - 1])\n ?.map((score, i, triggers) => {\n if (i === 0 || score - 1 !== triggers[i - 1]) {\n const isExtremum = score === min || score === max;\n\n addTrigger(\n score,\n { isFixed: isExtremum, isHidden: isExtremum },\n { withRange: false },\n );\n }\n\n return score;\n });\n }\n }, [protectedValue]);\n useEffect(() => {\n if (!compare(value, protectedValue)) {\n setProtectedValue(value);\n }\n }, [value]);\n useEffect(() => {\n if (!movingTriggerIndex && movingTriggerData) {\n updateRangesByTrigger({ ...movingTriggerData });\n setMovingTriggerData(null);\n }\n }, [movingTriggerIndex]);\n\n // RENDER //\n const renderCollision = ({\n isCollisionVisible,\n isLeftCollision,\n isRightCollision,\n isBothCollision,\n className,\n }: {\n isCollisionVisible?: boolean;\n isLeftCollision?: boolean;\n isRightCollision?: boolean;\n isBothCollision?: boolean;\n className?: string;\n }): JSX.Element => {\n const pieces = Number.parseInt(((max - min) / minRange).toString(), 10);\n const { width: trackWidth = 0 }\n = trackRef?.current?.getBoundingClientRect() ?? {};\n const collisionWidth = trackWidth / pieces - 4;\n\n const width = isCollisionVisible\n ? isBothCollision\n ? collisionWidth * 2\n : isLeftCollision || isRightCollision\n ? collisionWidth\n : 0\n : 0;\n\n return (\n <div\n className={cn('collision', className, {\n 'collision--visible': isCollisionVisible,\n 'collision--left': isLeftCollision && !isBothCollision,\n 'collision--right': isRightCollision && !isBothCollision,\n 'collision--both': isBothCollision,\n })}\n style={{ width }}\n />\n );\n };\n const renderAddTrackTriggerSettings = (): JSX.Element => {\n const { label, value } = addTriggerFixedRange || {};\n return (\n <div\n className={`${COMPONENT_CLASS}__track__range-triggers--add-trigger__settings`}\n >\n <div\n className={`${COMPONENT_CLASS}__track__range-triggers--add-trigger__settings-body`}\n >\n <div\n className={`${COMPONENT_CLASS}__track__range-triggers--add-trigger__settings-body--assign-left`}\n onClick={(e) => {\n e.stopPropagation();\n setAssignValueToRange(EAssignSide.Left);\n }}\n attr-is-active={`${assignValueToRange === EAssignSide.Left}`}\n >\n <ChevronLeft />\n </div>\n <div\n className={`${COMPONENT_CLASS}__track__range-triggers--add-trigger__settings-body--lenders-count`}\n >\n {label}\n {value}\n </div>\n <div\n className={`${COMPONENT_CLASS}__track__range-triggers--add-trigger__settings-body--assign-right`}\n onClick={(e) => {\n e.stopPropagation();\n setAssignValueToRange(EAssignSide.Right);\n }}\n attr-is-active={`${assignValueToRange === EAssignSide.Right}`}\n >\n <ChevronRight />\n </div>\n </div>\n <div\n className={`${COMPONENT_CLASS}__track__range-triggers--add-trigger__settings-actions`}\n >\n <div\n className={`${COMPONENT_CLASS}__track__range-triggers--add-trigger__settings-actions--cancel`}\n onClick={e => unfixAddTrigger(e)}\n >\n Cancel\n </div>\n <div\n className={`${COMPONENT_CLASS}__track__range-triggers--add-trigger__settings-actions--apply`}\n onClick={(e) => {\n e.stopPropagation();\n addTrigger(addTriggerFixedScore);\n }}\n >\n Apply\n </div>\n </div>\n </div>\n );\n };\n const renderAddTrackTrigger = (): JSX.Element | null => {\n const isNoTriggers = !triggers?.filter(({ isHidden }) => !isHidden).length;\n\n const x = getAddTriggerPosition();\n const score = isAddTriggerFixed\n ? addTriggerFixedScore\n : isNoTriggers && !isMouseOverTrack\n ? (min + max) / 2 - 1\n : getAddTriggerScore(x);\n\n const triggerCollision = !isAddTriggerFixed\n ? getAddTriggerCollisionDirection(x)\n : ECollision.None;\n const isLeftCollision = triggerCollision === ECollision.Left;\n const isRightCollision = triggerCollision === ECollision.Right;\n const isBothCollision = triggerCollision === ECollision.Both;\n const isCollisionVisible\n = (isLeftCollision || isRightCollision || isBothCollision)\n && !(isNoTriggers && !isMouseOverTrack);\n const left = getTrackXByScore(score);\n const inRange = getInRange(score);\n\n const isTriggerWithScoreExists = getTriggerByScore(score);\n\n if (isTriggerWithScoreExists || movingTrigger || isMouseOverTrigger)\n return null;\n\n return (\n <div\n className={cn(\n `${COMPONENT_CLASS}__track__range-triggers--add-trigger`,\n {\n [`${COMPONENT_CLASS}__track__range-triggers--add-trigger--fixed`]:\n isAddTriggerFixed,\n [`${COMPONENT_CLASS}__track__range-triggers--add-trigger--force-visible`]:\n isNoTriggers,\n [`${COMPONENT_CLASS}__track__range-triggers--add-trigger--moved-smoothly`]:\n isNoTriggers && !isMouseOverTrack,\n },\n )}\n style={{ left: `${left}px` }}\n onClick={() =>\n inRange?.value ? fixAddTrigger(score, inRange) : addTrigger(score)}\n >\n <div\n ref={addTriggerRef}\n className={cn(\n `${COMPONENT_CLASS}__track__range-triggers--add-trigger__point`,\n {\n [`${COMPONENT_CLASS}__track__range-triggers--add-trigger__point--shake`]:\n isCollisionVisible,\n },\n )}\n data-point-value={getPointValue(score)}\n >\n <Plus />\n </div>\n {isAddTriggerFixed && renderAddTrackTriggerSettings()}\n {renderCollision({\n isCollisionVisible,\n isLeftCollision,\n isRightCollision,\n isBothCollision,\n })}\n </div>\n );\n };\n const renderTrackTrigger = (\n { value: triggerScore, isFixed, isHidden }: { value: number; isFixed?: boolean; isHidden?: boolean },\n triggerIndex: number,\n ): JSX.Element => {\n const triggerCollision = getTriggerCollisionDirection(\n triggerIndex,\n triggerScore,\n );\n const isLeftCollision = triggerCollision === ECollision.Left;\n const isRightCollision = triggerCollision === ECollision.Right;\n const isBothCollision = triggerCollision === ECollision.Both;\n const isCurrentTriggerMoving = isTriggerMoving(triggerIndex);\n const isCollisionVisible\n = isCurrentTriggerMoving\n && isTriggerMoved\n && (isLeftCollision || isRightCollision || isBothCollision);\n return (\n <div\n key={`${COMPONENT_CLASS}__track__range-triggers--trigger-${triggerIndex}`}\n style={{\n left: getTrackXByScore(triggerScore).toString().concat('px'),\n }}\n className={cn(`${COMPONENT_CLASS}__track__range-triggers--trigger`, {\n [`${COMPONENT_CLASS}__track__range-triggers--trigger__moving`]:\n isCurrentTriggerMoving,\n [`${COMPONENT_CLASS}__track__range-triggers--trigger__fixed`]:\n isFixed,\n [`${COMPONENT_CLASS}__track__range-triggers--trigger__hidden`]:\n isHidden,\n })}\n {...(isMobile\n ? {}\n : {\n onMouseOver: setMouseOverTrigger,\n onMouseLeave: setMouseLeaveTrigger,\n })}\n >\n <div\n className={cn(\n `${COMPONENT_CLASS}__track__range-triggers--trigger__point`,\n {\n [`${COMPONENT_CLASS}__track__range-triggers--trigger__point--shake`]:\n isCollisionVisible,\n },\n )}\n data-point-value={getPointValue(triggerScore)}\n {...(isMobile\n ? {\n onTouchStart: e => onTriggerMouseDown(e, triggerIndex),\n onTouchEnd: resetMovingTrigger,\n }\n : {\n onMouseDown: e => onTriggerMouseDown(e, triggerIndex),\n onMouseUp: resetMovingTrigger,\n })}\n />\n <div\n className={cn(\n `${COMPONENT_CLASS}__track__range-triggers--trigger__actions`,\n {\n [`${COMPONENT_CLASS}__track__range-triggers--trigger__actions--hidden`]:\n isCurrentTriggerMoving,\n },\n )}\n >\n <div\n className={`${COMPONENT_CLASS}__track__range-triggers--trigger__actions--remove`}\n onClick={() => removeTrigger(triggerIndex)}\n >\n <X />\n </div>\n </div>\n {renderCollision({\n isCollisionVisible,\n isLeftCollision,\n isRightCollision,\n isBothCollision,\n className: `${COMPONENT_CLASS}__track__range-triggers--trigger__collision`,\n })}\n </div>\n );\n };\n const renderTrackTriggers = (): JSX.Element => {\n return (\n <div className={`${COMPONENT_CLASS}__track__range-triggers`}>\n {triggers?.map(renderTrackTrigger)}\n </div>\n );\n };\n const renderRangeValue = ({ from, to, label, value }: IRangeItem, rangeIndex: number): JSX.Element | null => {\n if (!value) return null;\n\n const left = getTrackXByScore((to + from) / 2);\n\n return (\n <div\n className={cn(`${COMPONENT_CLASS}__track__ranges-value--item`)}\n style={{ left: `${left}px` }}\n key={`${COMPONENT_CLASS}__track__ranges-value--item-${rangeIndex}`}\n >\n <div\n className={cn(`${COMPONENT_CLASS}__track__ranges-value--item__label`)}\n >\n {label}\n </div>\n <div\n className={cn(`${COMPONENT_CLASS}__track__ranges-value--item__value`)}\n >\n {value}\n </div>\n </div>\n );\n };\n const renderRangesValue = (): JSX.Element => {\n return (\n <div className={cn(`${COMPONENT_CLASS}__track__ranges-value`)}>\n {ranges?.map((range, i) => renderRangeValue(range, i))}\n </div>\n );\n };\n const renderTrackDividers = useMemo(() => {\n const renderTrackDivider = (key = 0): JSX.Element => (\n <div\n key={key}\n className={`${COMPONENT_CLASS}__track__line__dividers--item`}\n />\n );\n\n const dividersCount = Number.parseInt(((max - min) / dividersRange).toString(), 10);\n const dividers: JSX.Element[] = [];\n\n for (let i = 0; i < dividersCount; ++i)\n dividers.push(renderTrackDivider(i));\n\n return (\n <div className={`${COMPONENT_CLASS}__track__line__dividers`}>\n {dividers}\n </div>\n );\n }, [trackRef, minRange, min, max]);\n const renderTrackLine = (): JSX.Element => {\n return (\n <div className={`${COMPONENT_CLASS}__track__line`}>\n <div className={`${COMPONENT_CLASS}__track__line__extremum--min`}>\n {min}\n </div>\n {renderTrackDividers}\n <div className={`${COMPONENT_CLASS}__track__line__extremum--max`}>\n {max}\n </div>\n </div>\n );\n };\n const renderTrack = (): JSX.Element => {\n return (\n <div\n className={cn(`${COMPONENT_CLASS}__track`, className)}\n ref={trackRef}\n >\n {renderTrackLine()}\n {renderAddTrackTrigger()}\n {renderTrackTriggers()}\n {renderRangesValue()}\n </div>\n );\n };\n const render = (): JSX.Element => {\n return (\n <div\n className={COMPONENT_CLASS}\n onMouseOver={setMouseOverTrack}\n onMouseLeave={setMouseLeaveTrack}\n onMouseMove={e => setMouseTrackPosition(e?.clientX)}\n >\n {renderTrack()}\n </div>\n );\n };\n\n return render();\n};\n\nexport default RangeSlider2;\n", "import React, { useEffect, useLayoutEffect, useRef, useState } from \"react\";\n\nimport cn from \"classnames\";\nimport { X } from \"react-feather\";\n\nimport { formatToAddBitDepthPoints as addCommas } from \"../../../Functions/fieldValueFormatters\";\nimport { NUMERIC_KEYBOARD } from \"../../../Functions/presets/mobileKeyboardTypesPresets\";\nimport useIsMobile from \"../../../Functions/useIsMobile/useIsMobile\";\nimport Input from \"../Input/Input\";\n\nimport \"./RangeSlider.scss\";\n\nlet timer;\n\nconst DEBOUNCE_TIME = 800;\n\nfunction debounce(func, timeout = DEBOUNCE_TIME) {\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n}\n\nexport default function RangeSlider({\n required,\n noTrack,\n rangeSymbol,\n min = 0,\n max = 100,\n decimalPlaces = 2,\n minRange = 0,\n precision = 0,\n testId = \"range-slider\",\n value = {\n from: min,\n to: max,\n },\n unit = \"\",\n label = \"\",\n isUseBitPoints = true,\n\n onChange = () => {},\n}) {\n const { isMobile } = useIsMobile();\n const trackRef = useRef(0);\n const [trackWidth, setTrackWidth] = useState(0);\n const [trackPosition, setTrackPosition] = useState(0);\n\n const fromTriggerRef = useRef(0);\n const toTriggerRef = useRef(0);\n\n const prepareValue = (value) => {\n return parseInt(parseFloat(value) * 10 ** precision, 10) / 10 ** precision;\n };\n\n const [from, setFromValue] = useState(value?.from ?? min);\n const setFrom = (v) => setFromValue(prepareValue(v));\n const [to, setToValue] = useState(value?.to ?? max);\n const setTo = (v) => setToValue(prepareValue(v));\n\n const [focusedType, setFocusedType] = useState(null);\n const [frezeedValues, setFrezeedValues] = useState(null);\n\n const [isInputsFocused, setIsInputsFocused] = useState({\n from: false,\n to: false,\n });\n\n const setIsInputFocused = (input, value) =>\n setIsInputsFocused((state) => ({ ...state, [input]: value }));\n\n const fromValue = frezeedValues ? frezeedValues?.from : from;\n const toValue = frezeedValues ? frezeedValues?.to : to;\n\n const [movingController, setMovingController] = useState(null);\n\n const [movingTrigger, setMovingTrigger] = useState(null);\n const [movingTriggerType, setMovingTriggerType] = useState(null);\n const [isTriggerMoved, setIsTriggerMoved] = useState(false);\n\n const [pointsPerPx, setPointsPerPx] = useState(0);\n\n const [extremumRange, setExtremumRange] = useState(0);\n const [extremumWidth, setExtremumWidth] = useState(0);\n\n const countPointsPerPx = (width) => {\n return (max - min) / width;\n };\n\n const resetRange = () => {\n setFrom(min);\n setTo(max);\n };\n\n const getTrackXByPoints = (pts) => {\n return (pts - min) / pointsPerPx;\n };\n\n const getRangeWidth = () => {\n return getTrackXByPoints(toValue) - getTrackXByPoints(fromValue);\n };\n\n const getRangeOffset = () => {\n return getTrackXByPoints(fromValue);\n };\n\n const getXByPoints = (pts) => {\n return (pts - min) / pointsPerPx + trackPosition;\n };\n\n const getPointsByX = (x) => {\n return (x - trackPosition) * pointsPerPx + min;\n };\n\n const onRangeChange = (type, value, validate = true, callOnChange = true) => {\n if (validate) value = prepareValue(value);\n\n if (isNaN(value)) value = 0;\n\n switch (type) {\n case \"from\":\n const getValidatedFromValue = (value) => {\n if ((!value && value !== 0) || value < min) {\n value = min;\n }\n\n if (value > to - minRange) {\n value = to - minRange;\n }\n\n return value;\n };\n\n if (validate) {\n value = getValidatedFromValue(value);\n }\n\n validate ? setFrom(value) : setFromValue(value);\n if (!isTriggerMoved && callOnChange) {\n debounce(() => {\n const values = {\n from: prepareValue(getValidatedFromValue(value)),\n to,\n };\n onChange(values);\n setFrezeedValues(values);\n }, DEBOUNCE_TIME)();\n }\n break;\n case \"to\":\n const getValidatedToValue = (value) => {\n if ((!value && value !== 0) || value > max) {\n value = max;\n }\n\n if (value < from + minRange) {\n value = from + minRange;\n }\n\n return value;\n };\n\n if (validate) {\n value = getValidatedToValue(value);\n }\n\n validate ? setTo(value) : setToValue(value);\n if (!isTriggerMoved && callOnChange) {\n debounce(() => {\n const values = {\n from,\n to: prepareValue(getValidatedToValue(value)),\n };\n onChange(values);\n setFrezeedValues(values);\n }, DEBOUNCE_TIME)();\n }\n break;\n }\n };\n // MouseDown Event Controller\n const onTriggerMouseDown = (e, type) => {\n if (e.button !== 0 && !isMobile) return; // \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443, \u0435\u0441\u043B\u0438 \u043D\u0430\u0436\u0430\u0442\u0430 \u043D\u0435 \u043B\u0435\u0432\u0430\u044F \u043A\u043D\u043E\u043F\u043A\u0430 \u043C\u044B\u0448\u0438\n setMovingTrigger(e.target);\n setMovingTriggerType(type);\n setIsTriggerMoved(true); // \u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0444\u043B\u0430\u0433 \u0434\u0432\u0438\u0436\u0435\u043D\u0438\u044F \u0432 true \u043F\u0440\u0438 \u043A\u043B\u0438\u043A\u0435\n };\n\n const onTriggerMove = (e) => {\n if (!isMobile) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (!isTriggerMoved) setIsTriggerMoved(true);\n if (!movingTrigger) return false;\n\n let { clientX: x } = isMobile ? e?.touches?.[0] : e;\n const { width: triggerWidth = 16 } =\n movingTrigger?.getBoundingClientRect() || {};\n\n if (x < trackPosition || x > trackPosition + trackWidth + triggerWidth)\n return false;\n\n x -= triggerWidth / 2;\n\n onRangeChange(movingTriggerType, getPointsByX(x));\n };\n const onTriggerMoveEnd = () => {\n setMovingTrigger(null);\n setMovingTriggerType(null);\n setIsTriggerMoved(false);\n };\n const onRangeInputFocus = (e, type) => {\n setTimeout(() => setIsInputFocused(type, true), 1);\n };\n\n const onRangeInputBlur = (e, type) => {\n setIsInputFocused(type, false);\n };\n\n useEffect(() => {\n onRangeChange(\"from\", value?.from ?? max, true, false);\n onRangeChange(\"to\", value?.to ?? min, true, false);\n }, []);\n\n /// MouseUp Event Controller\n useEffect(() => {\n document.addEventListener(\"mouseup\", onTriggerMoveEnd);\n\n return () => {\n document.removeEventListener(\"mouseup\", onTriggerMoveEnd);\n };\n }, []);\n\n // MouseMove Event Controller\n useEffect(() => {\n // \u041F\u0440\u0435\u043A\u0440\u0430\u0442\u0438\u0442\u044C \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443, \u0435\u0441\u043B\u0438 \u043D\u0435\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0433\u043E \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \u0438\u043B\u0438 \u043D\u0435 \u0431\u044B\u043B\u043E \u0434\u0432\u0438\u0436\u0435\u043D\u0438\u044F\n if (!movingTrigger || !isTriggerMoved) return;\n const handleMouseMove = (e) => {\n onTriggerMove(e);\n };\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n };\n }, [movingTrigger, isTriggerMoved]);\n\n useEffect(() => {\n if (movingController) {\n document.addEventListener(\"mousemove\", onTriggerMove, {\n signal: movingController?.signal,\n });\n }\n }, [movingController]);\n\n useEffect(() => {\n setFrezeedValues(null);\n }, [isTriggerMoved]);\n\n useEffect(() => {\n if (\n Object.values(isInputsFocused).every((v) => !v) &&\n !isTriggerMoved &&\n (value.from !== from || value.to !== to)\n ) {\n onChange({ from, to });\n }\n if (isTriggerMoved) setFrezeedValues({ from, to });\n }, [from, to, isTriggerMoved]);\n\n useLayoutEffect(() => {\n setFrom(value.from);\n setTo(value.to);\n }, [value]);\n\n useLayoutEffect(() => {\n let { width, x } = trackRef?.current?.getBoundingClientRect() || {};\n width -=\n fromTriggerRef?.current?.getBoundingClientRect()?.width ||\n toTriggerRef?.current?.getBoundingClientRect()?.width;\n\n setPointsPerPx(countPointsPerPx(width));\n setTrackWidth(width);\n setTrackPosition(x);\n }, [trackRef]);\n\n useEffect(() => {\n if (Object.values(isInputsFocused).every((v) => !v)) {\n setFrezeedValues(false);\n } else {\n setFrezeedValues({ from, to });\n }\n }, [isInputsFocused]);\n\n const renderLabel = () => {\n return (\n <div className=\"range-slider__header__label\">\n {label}\n {required && <span className=\"label_isRequired\">*</span>}\n </div>\n );\n };\n\n const renderSelectedRange = () => {\n return (\n <div className=\"range-slider__header__selected-range\">\n <div className=\"range-slider__header__selected-range--text\">\n from {isUseBitPoints ? addCommas(fromValue) : fromValue} to{\" \"}\n {isUseBitPoints ? addCommas(toValue) : toValue}\n {rangeSymbol}\n {unit}\n </div>\n <div\n className=\"range-slider__header__selected-range--reset\"\n onClick={resetRange}\n >\n <X />\n </div>\n </div>\n );\n };\n\n const renderHeader = () => {\n return (\n <div className=\"range-slider__header\">\n {renderLabel()}\n {min !== fromValue || max !== toValue ? renderSelectedRange() : null}\n </div>\n );\n };\n\n const renderInputs = () => {\n return (\n <div className=\"range-slider__inputs\">\n <div className=\"range-slider__inputs--from\">\n <Input\n data-testid={`${testId}-input-from`}\n value={from.toString()}\n onFocus={(e) => onRangeInputFocus(e, \"from\")}\n onBlur={(e) => onRangeInputBlur(e, \"from\")}\n onChange={(value) => onRangeChange(\"from\", value, false)}\n onlyNumbers={{ type: \"float\", decimalPlaces, min, max }}\n isPriceInput={isUseBitPoints}\n {...NUMERIC_KEYBOARD}\n />\n </div>\n <div className=\"range-slider__inputs__input\">\n <Input\n data-testid={`${testId}-input-to`}\n value={to.toString()}\n onFocus={(e) => onRangeInputFocus(e, \"to\")}\n onBlur={(e) => onRangeInputBlur(e, \"to\")}\n onChange={(value) => onRangeChange(\"to\", value, false)}\n onlyNumbers={{ type: \"float\", decimalPlaces, min, max }}\n isPriceInput={isUseBitPoints}\n {...NUMERIC_KEYBOARD}\n />\n </div>\n </div>\n );\n };\n\n const renderTrackRange = () => {\n const style = {\n width: `${getRangeWidth()}px`,\n left: `${getRangeOffset()}px`,\n };\n return <div className=\"range-slider__track__range\" style={style} />;\n };\n\n const renderTrackTriggers = () => {\n const fromStyle = {\n left: `${getTrackXByPoints(fromValue)}px`,\n };\n const toStyle = {\n left: `${getTrackXByPoints(toValue)}px`,\n };\n const renderTrack = () => {\n return (\n <div\n className={cn(\"range-slider__track\", { hidden: noTrack })}\n ref={trackRef}\n >\n <div className=\"range-slider__track__line\" />\n {renderTrackRange()}\n {renderTrackTriggers()}\n </div>\n );\n };\n return (\n <div className=\"range-slider__track__range-triggers\">\n <div\n data-testid={`${testId}-track-from`}\n ref={fromTriggerRef}\n style={fromStyle}\n className=\"range-slider__track__range-triggers--trigger range-slider__track__range-triggers--trigger-left\"\n onMouseDown={(e) => (!isMobile ? onTriggerMouseDown(e, \"from\") : {})}\n onTouchStart={(e) => onTriggerMouseDown(e, \"from\")}\n onTouchMove={onTriggerMove}\n onTouchEnd={onTriggerMoveEnd}\n onClick={() => {}} // DONT REMOVE! MOBILE WILL NOT WORK WITHOUT IT\n />\n <div\n data-testid={`${testId}-track-to`}\n ref={toTriggerRef}\n style={toStyle}\n className=\"range-slider__track__range-triggers--trigger range-slider__track__range-triggers--trigger-right\"\n onMouseDown={(e) => (!isMobile ? onTriggerMouseDown(e, \"to\") : {})}\n onTouchStart={(e) => onTriggerMouseDown(e, \"to\")}\n onTouchMove={onTriggerMove}\n onTouchEnd={onTriggerMoveEnd}\n onClick={() => {}} // DONT REMOVE! MOBILE WILL NOT WORK WITHOUT IT\n />\n </div>\n );\n };\n\n const renderTrack = () => {\n return (\n <div\n className={cn(\"range-slider__track\", { hidden: noTrack })}\n ref={trackRef}\n >\n <div className=\"range-slider__track__line\" />\n {renderTrackRange()}\n {renderTrackTriggers()}\n </div>\n );\n };\n\n return (\n <div data-testid={testId} className=\"range-slider\">\n {renderHeader()}\n {renderInputs()}\n {renderTrack()}\n </div>\n );\n}\n", "import type { ISwitchableRowProps } from './SwitchableRow.interface';\n\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport Switcher from '../Switcher/Switcher';\nimport './SwitchableRow.scss';\n\nconst RC_default = 'switchable-row';\n\nconst SwitchableRow: React.FC<ISwitchableRowProps> = (props) => {\n const {\n RC = RC_default,\n className,\n children,\n isActive,\n setIsActive,\n switcherLabel,\n isSwitcherLabelBold,\n testId = RC_default,\n } = props || {};\n\n return (\n <div className={cn(RC, className)} data-testid={testId}>\n <div className={cn(`${RC}__cell`)}>\n <Switcher\n isActive={isActive}\n onChange={setIsActive}\n isLabelBold={isSwitcherLabelBold}\n label={switcherLabel}\n testId={`${testId}-switcher`}\n />\n </div>\n {children}\n </div>\n );\n};\n\nexport default SwitchableRow;\n", "import type { ReactElement } from 'react';\n\nimport type { ISwitcherCheckboxProps } from './SwitcherCheckbox.interface';\n\nimport cn from 'classnames';\nimport CheckboxesLine from '../CheckboxesLine/CheckboxesLine';\n\nimport Switcher from '../Switcher/Switcher';\nimport './SwitcherCheckbox.scss';\n\nconst RC = 'switcher-hide';\n\nfunction SwitcherCheckbox({\n label,\n hint,\n items = [],\n value = [],\n className,\n isLabelBold,\n isActive,\n hintSide,\n disabled,\n hideChildren = true,\n onSwitcherChange = () => {},\n onChange = () => {},\n}: ISwitcherCheckboxProps): ReactElement {\n const renderCheckboxes: () => ReactElement = () => {\n return <CheckboxesLine items={items} value={value} onChange={onChange} />;\n };\n return (\n <div\n className={cn(RC, className, {\n [`${RC}_closed`]: !isActive,\n [`${RC}_disabled`]: disabled,\n })}\n >\n <Switcher\n className={`${RC}__switcher`}\n hintSide={hintSide}\n label={label}\n isActive={isActive}\n onChange={value => onSwitcherChange(value)}\n isLabelBold={isLabelBold}\n hint={hint}\n />\n {isActive ? renderCheckboxes() : !hideChildren ? renderCheckboxes() : ''}\n </div>\n );\n}\n\nexport default SwitcherCheckbox;\n", "import type { ISwitcherHideProps } from './SwitcherHide.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport Switcher from '../Switcher/Switcher';\n\nimport './SwitcherHide.scss';\n\nconst RC = 'switcher-hide';\n\nconst SwitcherHide: React.FC<ISwitcherHideProps> = ({\n children,\n label,\n hint,\n className,\n isLabelBold,\n isActive,\n hintSide,\n disabled,\n onChange,\n testId = RC,\n}) => {\n return (\n <div\n data-testid={testId}\n className={cn(RC, className, {\n [`${RC}_closed`]: !isActive,\n [`${RC}_disabled`]: disabled,\n })}\n >\n <Switcher\n testId={`${testId}-switcher`}\n className={`${RC}__switcher`}\n hintSide={hintSide}\n label={label}\n isActive={isActive}\n onChange={(value, e) => onChange(value, e)}\n isLabelBold={isLabelBold}\n hint={hint}\n />\n {isActive && children}\n </div>\n );\n};\n\nexport default SwitcherHide;\n", "import type { ISwitcherRadioProps } from './SwitcherRadio.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport RadioInput from '../RadioInput/RadioInput';\nimport SwitcherHide from '../SwitcherHide/SwitcherHide';\n\nimport './SwitcherRadio.scss';\n\nconst RC = 'switcher-radio';\n\nconst SwitcherRadio: React.FC<ISwitcherRadioProps> = ({\n options,\n label,\n hint,\n hintSide,\n isLabelBold,\n direction,\n className,\n value,\n disabled,\n isHideSwitcher = false,\n onChange = () => {},\n isActive = true,\n setIsActive = () => {},\n testId = '',\n}) => {\n const safelyValue = value || options?.[0]?.value || '';\n\n const renderRadioGroup = (): JSX.Element => {\n return (\n <div\n className={cn(\n `${RC}__wrap`,\n { [`switcher-radio_${direction}`]: direction },\n { disabled },\n className,\n )}\n >\n {options?.map((option, index) => (\n // @ts-ignore\n <RadioInput\n {...option}\n key={option.id || index}\n className=\"switcher-radio__radio\"\n checked={safelyValue}\n onChange={val => onChange(val)}\n />\n ))}\n </div>\n );\n };\n\n const renderSwitcher = (body: any): JSX.Element => {\n return (\n <SwitcherHide\n testId={`switcher-radio--${testId}`}\n isActive={isActive}\n label={label}\n hint={hint}\n hintSide={hintSide}\n onChange={setIsActive}\n isLabelBold={isLabelBold}\n className={cn(RC, className)}\n disabled={disabled}\n >\n {body}\n </SwitcherHide>\n );\n };\n\n return !isHideSwitcher\n ? renderSwitcher(renderRadioGroup())\n : renderRadioGroup();\n};\n\nexport default SwitcherRadio;\n", "import type { ISwitcherRangeProps } from './SwitcherRange.interface';\nimport React from 'react';\n\nimport RangeInputs from '../RangeInputs/RangeInputs';\nimport SwitcherHide from '../SwitcherHide/SwitcherHide';\n\nconst RC = 'switcher-range';\n\nconst SwitcherRange: React.FC<ISwitcherRangeProps> = ({\n label,\n isLabelBold,\n hint,\n isActive,\n setIsActive,\n value,\n onChange,\n isInputsColumn,\n validateErrors,\n withZero,\n isPrice,\n inputsType,\n testId = RC,\n}) => {\n // const [error, setError] = useState(\"\");\n\n // const rangeValidation = () => {\n // if (inputFrom && inputTo && inputFrom > inputTo) {\n // setError(\"Invalid range\");\n // } else {\n // setError(\"\");\n // }\n // };\n\n return (\n <SwitcherHide\n testId={testId}\n label={label}\n hint={hint}\n className={RC}\n isActive={isActive}\n onChange={setIsActive}\n isLabelBold={isLabelBold}\n >\n <RangeInputs\n testId={testId}\n className=\"switcher-range__range-inputs\"\n type={inputsType}\n onChange={onChange}\n value={value}\n setError={() => {}}\n isColumnPosition={isInputsColumn}\n validateErrors={validateErrors}\n withZero={withZero}\n isPrice={isPrice}\n />\n </SwitcherHide>\n );\n};\n\nexport default SwitcherRange;\n", "import type { ReactElement } from 'react';\n\nimport type { ISwitcherRangeListProps } from './SwitcherRangeList.interface';\n\nimport cn from 'classnames';\nimport RangeList from '../RangeList/RangeList';\n\nimport SwitcherHide from '../SwitcherHide/SwitcherHide';\nimport './SwitcherRangeList.scss';\n\nconst RC = 'switcher-range-list';\nfunction noop(): void {}\n\nfunction SwitcherRangeList(props: ISwitcherRangeListProps): ReactElement {\n const {\n className,\n label,\n isLabelBold,\n hint,\n hintSide,\n disabled,\n isActive,\n value,\n validateErrors,\n isFloatValues,\n decimalPlaces,\n error,\n defaultErrorText,\n nullValueText,\n isOnlyOneRow,\n setIsActive = noop,\n onChange = noop,\n testId,\n } = props;\n\n // Adapter: ISwitcherRangeListValues[] <-> RangeValue[]\n const valueAdapter = value?.map(v => ({ from: v.from, to: v.to })) ?? [];\n const onChangeAdapter = (vals: { from: number | string; to: number | string }[]): void => {\n const mapped = vals.map(v => ({\n from: typeof v.from === 'string' ? Number(v.from) : v.from,\n to: typeof v.to === 'string' ? Number(v.to) : v.to,\n }));\n onChange(mapped);\n };\n\n const validateErrorsAdapter = validateErrors\n ? (from: string | number, to: string | number) => {\n // Call original validateErrors with string values\n const valid = validateErrors(String(from), String(to));\n return valid ? undefined : defaultErrorText ?? 'Invalid range';\n }\n : undefined;\n\n return (\n <SwitcherHide\n isActive={isActive}\n onChange={setIsActive}\n label={label}\n isLabelBold={isLabelBold}\n hint={hint}\n hintSide={hintSide}\n className={cn(RC, className)}\n disabled={disabled}\n >\n <div className=\"switcher-range-list__row\">\n <RangeList\n testId={testId}\n className={`${RC}__range-list`}\n value={valueAdapter}\n isOnlyOneRow={isOnlyOneRow}\n onChange={onChangeAdapter}\n validateErrors={validateErrorsAdapter}\n isFloatValues={isFloatValues}\n decimalPlaces={decimalPlaces}\n error={error}\n defaultErrorText={defaultErrorText}\n nullValueText={nullValueText}\n />\n </div>\n </SwitcherHide>\n );\n}\n\nexport default SwitcherRangeList;\n", "import type { ITagsDropdownOption, ITagsDropdownProps } from '../TagsDropdown/TagsDropdown.interface';\n\nimport type { ISwitcherTagsDropdownProps } from './SwitcherTagsDropdown.interface';\n\nimport cn from 'classnames';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport Button from '../../UI/Button/Button';\nimport SwitcherHide from '../SwitcherHide/SwitcherHide';\nimport TagsDropdown from '../TagsDropdown/TagsDropdown';\n\nimport Textarea from '../Textarea/Textarea';\nimport TextSwitcher from '../TextSwitcher/TextSwitcher';\nimport './SwitcherTagsDropdown.scss';\n\nconst RC = 'switcher-tags-dropdown';\n\nconst SwitcherTagsDropdown: React.FC<ISwitcherTagsDropdownProps> = ({\n className,\n label,\n isLabelBold,\n isValuesInTags,\n isActive,\n isIncluded,\n isAdvancedLabelSearch,\n disabled,\n options = [],\n chosenOptions = [],\n setIsActive = () => {},\n setIsIncluded = () => {},\n onChange = () => {},\n}) => {\n const [listView, setListView] = useState<boolean>(false);\n const [textValue, setTextValue] = useState<string>('');\n\n const singleLevelOptions = useMemo(\n () =>\n options.reduce<ITagsDropdownOption[]>(\n (acc, item) => [...acc, ...(item.groupName ? item.list ?? [] : [item])],\n [],\n ),\n [options],\n );\n\n const apply = (): void => {\n // \u0432\u0435\u0440\u043D\u0435\u0442 \u0444\u0443\u043D\u043A\u0446\u0438\u044E\u044E \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u043C\u0435\u0442\u043E\u0434\u0430 filter \u0441 \u0437\u0430\u043C\u043A\u043D\u0443\u0442\u044B\u043C \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C listValuesArr\n // (\u043F\u043E \u043B\u043E\u0433\u0438\u043A\u0435 listValuesArr - \u043C\u0430\u0441\u0441\u0438\u0432 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043D\u044B\u0439 \u0438\u0437 \u0441\u0442\u0440\u043E\u043A\u0438 textaria).\n const getFilterFunction = (listValuesArr: string[]) => (item: ITagsDropdownOption) => {\n return listValuesArr.find((el) => {\n const itemValue = item?.value ? item?.value.toString().toLowerCase() : undefined;\n const itemLabel = (item.title || item.label || item.name || item.value || '')\n .toString()\n .toLowerCase();\n const chosenOption = el.toString().toLowerCase();\n const isChosenOptionIncludedInLabel\n = itemLabel.includes(chosenOption)\n && item.value && !chosenOptions.includes(item.value);\n\n if (isValuesInTags) {\n return (\n (chosenOption === itemValue || chosenOption === itemLabel)\n && !item.disabled\n );\n }\n else if (isAdvancedLabelSearch) {\n return (\n (chosenOption === itemLabel\n || chosenOption === itemValue\n || isChosenOptionIncludedInLabel)\n && !item.disabled\n );\n }\n else {\n return (\n (chosenOption === itemLabel || chosenOption === itemValue)\n && !item.disabled\n );\n }\n });\n };\n\n const textToArray = textValue\n ?.split?.(',')\n .map(item => item.toString().trim())\n .filter(item => Boolean(item));\n const newOptions = options\n .filter(getFilterFunction(textToArray))\n .map(option => option.value ?? '');\n\n onChange(newOptions, 'chosenOptions');\n setListView(false);\n };\n\n const enterHandler = (e?: KeyboardEventInit, value?: string): void => {\n if (e?.keyCode === 13) {\n const option = options?.find(\n item =>\n item?.title?.toLowerCase() === value?.toLowerCase() && !item.disabled,\n );\n const isOptionChecked = chosenOptions?.some(\n item => typeof item !== 'string' && typeof item !== 'number' ? item?.title?.toLowerCase() === option?.title?.toLowerCase() : item?.toString().toLowerCase() === option?.title?.toLowerCase(),\n );\n if (option && !isOptionChecked)\n onChange([...chosenOptions, option], 'chosenOptions');\n }\n };\n\n useEffect(() => {\n const getLabel = (el: ITagsDropdownOption): string | number | undefined => el.title || el.label || el.name || el.value;\n const valuesArr = chosenOptions?.map(item =>\n isValuesInTags\n ? item\n : getLabel(singleLevelOptions.find(option => option.value === item) ?? {} as ITagsDropdownOption),\n );\n setTextValue(valuesArr.join(', '));\n }, [chosenOptions, listView]);\n\n return (\n <SwitcherHide\n isActive={isActive}\n onChange={setIsActive}\n label={label}\n className={cn(RC, className)}\n isLabelBold={isLabelBold}\n disabled={disabled}\n >\n <div className={`${RC}__wrap switcher-hide__content`}>\n <TextSwitcher\n activeText=\"is\"\n inactiveText=\"is not\"\n isActive={isIncluded ?? true}\n onChange={setIsIncluded}\n className={`${RC}__text-switcher`}\n />\n <div className=\"filter-select__wrap--buttons\">\n <button\n type=\"button\"\n onClick={() => setListView(!listView)}\n className={`${RC}__btn`}\n >\n {listView ? 'Close' : 'List view'}\n </button>\n {listView && (\n <Button\n label=\"Apply\"\n className={`${RC}__apply`}\n onClick={() => apply()}\n />\n )}\n <button\n type=\"button\"\n onClick={() => onChange([], 'chosenOptions')}\n className={`${RC}__btn`}\n >\n Clear\n </button>\n </div>\n </div>\n {listView\n ? (\n // @ts-ignore\n <Textarea value={textValue} onChange={value => setTextValue(value)} />\n )\n : (\n <TagsDropdown\n options={options}\n chosenOptions={chosenOptions as ITagsDropdownProps['chosenOptions']}\n onChange={onChange}\n className={`${RC}__tags-dropdown`}\n onKeyPress={(e, value) => enterHandler(e, value)}\n tagClassname={cn(`${RC}__tag`, {\n [`${RC}__tag_inactive`]: !isIncluded,\n })}\n isValuesInTags={isValuesInTags}\n />\n )}\n </SwitcherHide>\n );\n};\n\nexport default SwitcherTagsDropdown;\n", "/* eslint-disable ts/no-use-before-define */\n/* eslint-disable react-web-api/no-leaked-event-listener */\nimport type {\n LegacyRef,\n MouseEventHandler,\n ReactNode,\n} from 'react';\n\nimport type { ITagProps } from '../../UI/Tag';\nimport type { ITagsDropdownLocalOptions, ITagsDropdownOption, ITagsDropdownProps, TListPosition } from './TagsDropdown.interface';\nimport cn from 'classnames';\nimport React, {\n createRef,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\nimport {\n Check,\n ChevronDown,\n ChevronUp,\n Code,\n MoreHorizontal,\n Trash2,\n X,\n} from 'react-feather';\nimport { formatToOnlyASCIICodeText } from '../../../Functions/fieldValueFormatters';\nimport { useDebounce } from '../../../Functions/useDebounce';\nimport useIsMobile from '../../../Functions/useIsMobile/useIsMobile';\nimport Button from '../../UI/Button/Button';\nimport Tag from '../../UI/Tag/Tag';\nimport TagList from '../../UI/TagList/TagList';\n\nimport CheckboxInput from '../CheckboxInput/CheckboxInput';\nimport Input from '../Input/Input';\nimport './TagsDropdown.scss';\n\nconst RC = 'tags-dropdown';\n\nconst MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH = 10;\n\nconst COLORS = [\n '#F1F0F0',\n '#E3E2E0',\n '#EEDFDA',\n '#F9DEC9',\n '#FDECC8',\n '#DBECDB',\n '#D3E4EF',\n '#E8DEEE',\n '#F4E0E9',\n '#FFE2DD',\n '#D3EFED',\n '#ECEEDE',\n];\n\ntype TSetEditingOptionFunctionArg = (option?: ITagsDropdownOption | null) => ITagsDropdownOption;\ntype TSetEditingOptionArg = ITagsDropdownOption | TSetEditingOptionFunctionArg | null;\n\nconst TagsDropdown: React.FC<ITagsDropdownProps> = ({\n options: optionsProp,\n tagsFullList,\n chosenOptions,\n onChange,\n className,\n tagClassname,\n listClassName,\n onKeyPress,\n placeholder,\n label,\n disabled,\n isValuesInTags,\n error,\n isNotValidateASCII = false,\n noTagsWrap = false,\n\n headerContent = null,\n footerContent = null,\n selectAllButtonRef = null,\n unselectAllButtonRef = null,\n\n closeOnSelect = false,\n closeOnRemove = false,\n closeOnRemoveAll = false,\n closeOnSelectAll = false,\n closeOnSelectMobile = false,\n closeOnRemoveMobile = false,\n closeOnRemoveAllMobile = false,\n closeOnSelectAllMobile = false,\n fieldKey,\n id,\n noOptionsText = 'No options available',\n mobileSearchPlaceholder,\n isSearchable = true,\n useLiveSearch,\n doRequest: doLiveSearchRequest,\n\n attributesOfNativeInput,\n\n isUseLocalOptionsStore = true,\n isDefaultOpened = false,\n withMobileLogic,\n withCreateLogic,\n withActions,\n withSearchInputInList,\n renderOptionsAsTags,\n minItemsForShowMobileSearch = MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH,\n\n onOptionCreate,\n onOptionEdit,\n onOptionDelete,\n onActionConfirmClick,\n onActionCancelClick,\n onDropdownListClose,\n\n customTriggerRef,\n renderCustomTrigger,\n isUseInTable,\n recalculateListContainerStylesTrigger,\n}) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const wrapperRef = useRef<HTMLElement | null>(null);\n const dropdownRef = useRef<HTMLElement | null>(null);\n const dropdownListRef = useRef<HTMLElement | null>(null);\n const editOptionModalRef = useRef<HTMLElement | null>(null);\n const dropdownListWrapperRef = useRef<HTMLElement | null>(null);\n\n const { isMobile: isMobileProp } = useIsMobile();\n const isMobile\n = isMobileProp && withMobileLogic && window.screen.width <= 768;\n\n const [dropdownId] = useState(\n id || fieldKey || Math.random().toString(16).slice(2),\n );\n const [isOpen, setIsOpen] = useState(false);\n const [windowScrollTop, setWindowScrollTop] = useState(0);\n\n const [listPos, setListPos] = useState<TListPosition | null>(null);\n\n const [initListHeight, setInitListHeight] = useState<number | null>(null);\n const [isScrollableList, setIsScrollableList] = useState<boolean | null>(null);\n const [isFixedMaxHeight, setIsFixedMaxHeight] = useState(false);\n\n const [scrollTop, setScrollTop] = useState(0);\n const [scrollHeight, setScrollHeight] = useState(1);\n\n const searchValueRef = useRef<string | null>(null);\n const [searchValue, setSearchValue] = useState<string>('');\n const debouncedSearchTerm = useDebounce({ searchValue, delay: 600 });\n const [isValueDeleted, setIsValueDeleted] = useState(false);\n\n const setSearchValueInterceptor = (value: string): void => {\n setSearchValue(value);\n setIsValueDeleted(searchValue !== value && value === '');\n searchValueRef.current = value;\n };\n\n const editingOptionInputRef = useRef<HTMLInputElement | null>(null);\n const [options, setOptions] = useState<ITagsDropdownOption[]>([]);\n const [editingOption, setEditingOptionState] = useState<ITagsDropdownOption | null>(null);\n const setEditingOption = (data: TSetEditingOptionArg): void => {\n setEditingOptionState(editingOption =>\n !data\n ? data\n : {\n ...(editingOption ?? {}),\n ...(typeof data === 'function' ? data?.(editingOption) : data),\n isChanged: Boolean(editingOption),\n },\n );\n };\n const isEditingOptionError = useMemo(() => {\n if (!editingOption) return false;\n\n return options\n .filter(({ value }) => value !== editingOption.value)\n .some(({ label }) => label === editingOption.label)\n ? true\n : null;\n }, [options, editingOption]);\n const [localOptionsStore, setLocalOptionsStore] = useState<ITagsDropdownLocalOptions>({});\n\n const randomColorForNewOption = useMemo(() => {\n const getRandomIndex = (min: number, max: number): number => {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n };\n const randomIndex = getRandomIndex(0, COLORS?.length - 1);\n return COLORS[randomIndex];\n }, [options?.length]);\n\n const singleLevelOptions = options?.reduce(\n (acc: ITagsDropdownOption[], item: ITagsDropdownOption) => {\n const checkUniqAndPush = (acc: ITagsDropdownOption[], item: ITagsDropdownOption): void => {\n const isExist = acc?.findIndex(({ value }) => value === item?.value);\n if (isExist !== -1) {\n acc[isExist] = item;\n }\n else {\n acc.push(item);\n }\n };\n if (item.groupName) {\n item.list?.map(item => checkUniqAndPush(acc, item));\n }\n else {\n checkUniqAndPush(acc, item);\n }\n\n return acc;\n },\n isUseLocalOptionsStore\n ? Object.keys(localOptionsStore)?.map(value => ({\n value,\n label: localOptionsStore?.[value] ?? '',\n })) as ITagsDropdownOption[]\n : [],\n );\n\n const deleteChosen = (value: string | number): void => {\n if (isMobile ? closeOnRemoveMobile : closeOnRemove) setIsOpen(false);\n\n if (isUseLocalOptionsStore) {\n setLocalOptionsStore((options) => {\n const newOptions: ITagsDropdownLocalOptions = ({\n ...options,\n [value]: undefined,\n });\n\n return newOptions;\n });\n }\n\n onChange?.(\n chosenOptions.filter(item => item !== value),\n 'chosenOptions',\n );\n };\n\n // --- LIST CONTAINER FUNCTIONS BEGIN --- //\n const getParentNode = (): Element | null => {\n return (\n document.querySelector('div#root')\n ?? document.querySelector('div#app')\n ?? document.querySelector('div#storybook-root')\n );\n };\n const initListContainer = (): void => {\n const dropdownList = document.createElement('div');\n\n dropdownList.setAttribute('id', dropdownId);\n dropdownList.classList.add('tags-dropdown__container');\n listClassName && dropdownList.classList.add(listClassName);\n\n if (isMobile) {\n dropdownList.addEventListener('click', (e) => {\n if (e.target && (e.target as HTMLElement).id === dropdownId) setIsOpen(false);\n });\n }\n\n if (isMobile) {\n try {\n document.getElementById(`mlw-${dropdownId}`)?.remove();\n }\n catch {}\n\n const dropdownMobileListWrapper = document.createElement('div');\n dropdownMobileListWrapper.classList.add('tags-dropdown-mobile');\n dropdownMobileListWrapper.setAttribute('id', `mlw-${dropdownId}`);\n dropdownMobileListWrapper?.append(dropdownList);\n getParentNode()?.append(dropdownMobileListWrapper);\n }\n else {\n getParentNode()?.append(dropdownList);\n }\n };\n const getListContainer = (): HTMLElement | null => {\n return document.getElementById(dropdownId);\n };\n const getListContainerWrapper = (): HTMLElement | null => {\n return document.getElementById(`mlw-${dropdownId}`);\n };\n const setListContainerStyles = (): boolean | void => {\n const listContainer = getListContainer();\n\n if (!listContainer || !isOpen) return false;\n\n const windowHeight\n = window.innerHeight\n || document.documentElement.clientHeight\n || document.body.clientHeight;\n\n const { width, height = 0, left, top = 0 }\n = dropdownRef?.current?.getBoundingClientRect() ?? {};\n\n const selectorWrapper = dropdownListWrapperRef?.current;\n const dropdownList = listContainer.getElementsByClassName(\n 'tags-dropdown__list',\n )[0] as HTMLElement;\n const listHeader = selectorWrapper?.getElementsByClassName(\n 'tags-dropdown__header',\n )[0] as HTMLElement;\n const listFooter = selectorWrapper?.getElementsByClassName(\n 'tags-dropdown__footer',\n )[0] as HTMLElement;\n\n const margin = Number.parseInt(\n getComputedStyle(selectorWrapper as Element)?.marginTop?.replace('px', '') ?? 0,\n 10,\n );\n\n let selectorWrapperHeight\n = selectorWrapper?.getBoundingClientRect()?.height ?? 0;\n const maxSelectorWrapperHeight\n = 500\n - (listHeader?.getBoundingClientRect()?.height ?? 0)\n - (listFooter?.getBoundingClientRect()?.height ?? 0);\n\n if (!isMobile || !withMobileLogic) {\n const dropdownListMaxHeightInPx\n = getComputedStyle(dropdownList)?.maxHeight;\n const maxHeight\n = initListHeight\n ?? Number.parseInt(dropdownListMaxHeightInPx?.replace('px', '') ?? 0, 10);\n\n if (initListHeight === null && !Number.isNaN(maxHeight))\n setInitListHeight(maxHeight);\n\n if (selectorWrapperHeight !== undefined && selectorWrapperHeight > maxHeight && !Number.isNaN(maxHeight))\n selectorWrapperHeight = maxHeight - 2 * margin;\n\n const toTop = renderCustomTrigger\n ? top\n - margin\n - (customTriggerRef?.current?.getBoundingClientRect()?.height ?? 0)\n : top - margin;\n const toBottom = windowHeight - top - height - margin * 2;\n\n let listPosition = listPos;\n\n if (!listPos && options?.length) {\n listPosition\n = toTop < toBottom || toBottom >= selectorWrapperHeight\n ? 'bottom'\n : 'top';\n setListPos(listPosition);\n }\n\n if (selectorWrapperHeight > (listPosition === 'top' ? toTop : toBottom)) {\n selectorWrapperHeight\n = (listPosition === 'top' ? toTop : toBottom) - 3 * margin;\n\n if (selectorWrapperHeight < 200) {\n selectorWrapperHeight = 200;\n }\n\n if (selectorWrapper) selectorWrapper.style.maxHeight = `${selectorWrapperHeight}px`;\n }\n\n listContainer.style.minWidth = `${width}px`;\n listContainer.style.left = `${left}px`;\n listContainer.style.top = `${listPosition === 'bottom' ? top + height : top - selectorWrapperHeight - 2 * margin}px`;\n }\n else {\n dropdownList.style.maxHeight = `${maxSelectorWrapperHeight}px`;\n }\n };\n const renderListContainer = (): React.ReactPortal | null => {\n const lc = getListContainer();\n\n if (!lc) return null;\n\n return createPortal(getListMarkUp(), lc);\n };\n // --- LIST CONTAINER FUNCTIONS END --- //\n\n // --- CREATABLE LOGIC BEGIN --- //\n const onOptionCreateClick = (): void => {\n const newOption: ITagsDropdownOption = {\n label: searchValue,\n style: {\n backgroundColor: randomColorForNewOption,\n },\n isEditable: true,\n ref: createRef(),\n };\n\n (onOptionCreate?.(newOption) ?? new Promise(r => r(1))).then((result) => {\n const tempId = Math.random().toString(16).slice(2);\n\n newOption.value = (result as { id?: string | number })?.id ?? tempId;\n\n setOptions(state => [...state, newOption]);\n setSearchValue('');\n onChangeHandler(newOption);\n });\n };\n const onOptionEditClick = (e: React.MouseEvent<HTMLDivElement, MouseEvent>, item: ITagsDropdownOption): void => {\n e?.preventDefault();\n e?.stopPropagation();\n\n setEditingOption(editingOption?.value === item?.value ? null : item);\n };\n const onOptionDeleteClick = (): void => {\n (onOptionDelete?.(editingOption) ?? new Promise(r => r(1))).then(() => {\n if (editingOption?.value) deleteChosen(editingOption?.value);\n\n setOptions(options =>\n options.filter(({ value }) => value !== editingOption?.value),\n );\n setEditingOption(null);\n });\n };\n const saveEditingOption = (): void | boolean => {\n if (!editingOption?.isChanged || isEditingOptionError) {\n setEditingOption(null);\n return false;\n }\n\n onOptionEdit?.(editingOption);\n\n setOptions(options =>\n options?.map((option) => {\n if (editingOption && option.value === editingOption?.value) {\n const tmp = { ...editingOption };\n setEditingOption(null);\n return tmp;\n }\n return option;\n }),\n );\n };\n\n const setEditOptionModalStyles = (): null | void => {\n if (!editingOption || !editOptionModalRef?.current) return null;\n\n const modalSize = 200;\n const { scrollX, scrollY } = window;\n\n const positionClasses = {\n left: 'modal-left',\n right: 'modal-right',\n top: 'modal-top',\n bottom: 'modal-bottom',\n };\n\n const windowWidth\n = window.innerWidth\n || document.documentElement.clientWidth\n || document.body.clientWidth;\n\n const windowHeight\n = window.innerHeight\n || document.documentElement.clientHeight\n || document.body.clientHeight;\n\n const el = (editingOption?.ref as React.MutableRefObject<Element | null>)?.current;\n const { x = 0, y = 0, width = 0, height = 0 } = el?.getBoundingClientRect() ?? {};\n\n const containerPosition\n = dropdownListWrapperRef?.current?.getBoundingClientRect();\n\n const distanceToRight\n = windowWidth - (containerPosition?.x ?? 0) - (containerPosition?.width ?? 0);\n const distanceToBottom = windowHeight - y - scrollY - height;\n\n Object.values(positionClasses)?.map((className) => {\n if (editOptionModalRef.current) editOptionModalRef.current.classList.remove(className);\n\n return className;\n });\n\n editOptionModalRef.current.classList.add(\n positionClasses?.[distanceToRight < modalSize ? 'left' : 'right'] ?? '',\n );\n\n editOptionModalRef.current.classList.add(\n positionClasses?.[distanceToBottom < modalSize ? 'top' : 'bottom'] ?? '',\n );\n\n const xTranslate\n = distanceToRight < modalSize ? 'calc(-100% + 7px)' : '-35px';\n const yTranslate\n = distanceToBottom < modalSize ? `calc(-100% - ${height + 10}px)` : '10px';\n\n if (editOptionModalRef.current instanceof HTMLElement) {\n (editOptionModalRef.current).style.left = `${x + scrollX + width}px`;\n (editOptionModalRef.current).style.top = `${y + scrollY + height}px`;\n (editOptionModalRef.current).style.transform = `translate(${xTranslate}, ${yTranslate})`;\n }\n };\n const renderEditOptionModal = (): ReactNode => {\n return (\n <div\n key={`editOptionModal${editingOption?.value}`}\n ref={editOptionModalRef as LegacyRef<HTMLDivElement>}\n className={cn(`${RC}__edit-option-modal`)}\n >\n <div className={cn(`${RC}__edit-option-modal-section`)}>\n <Input\n value={editingOption?.label}\n onChange={(v: string) =>\n setEditingOption(state => ({ ...state, label: v }))}\n error={!!isEditingOptionError}\n onKeyDown={(keyCode: number | string) => {\n if (keyCode === 13) saveEditingOption();\n }}\n symbolsLimit=\"50\"\n ref={editingOptionInputRef}\n />\n <Button\n variant=\"link\"\n icon={<Trash2 />}\n label=\"Delete\"\n onClick={onOptionDeleteClick}\n />\n </div>\n <div className={cn(`${RC}__edit-option-modal-section-divider`)} />\n <div className={cn(`${RC}__edit-option-modal-section`)}>\n <h3>Colors</h3>\n <div className={cn(`${RC}__edit-option-modal-section-colors`)}>\n {COLORS?.map(color => (\n <div\n key={color}\n className=\"color-block\"\n style={{ backgroundColor: color }}\n onClick={() =>\n setEditingOption(state => ({\n ...state,\n style: {\n ...(state ? state.style : {}),\n backgroundColor: color,\n },\n }))}\n >\n {editingOption?.style?.backgroundColor === color\n ? (\n <Check />\n )\n : null}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n };\n // --- CREATABLE LOGIC END --- //\n\n // --- GENERAL FUNCTIONS BEGIN --- //\n const handleClickOutside = (e: Event | MouseEvent): void => {\n const { target } = e;\n\n if (\n isOpen\n && !getListContainer()?.contains(target as HTMLElement)\n && !editOptionModalRef.current\n && !dropdownRef?.current?.contains(target as HTMLElement)\n // &&\n // (\n // customTriggerRef?.current ? customTriggerRef?.current?.contains(target) : true\n // )\n ) {\n setIsOpen(false);\n onDropdownListClose?.(e);\n }\n else if (\n editOptionModalRef.current\n && !editOptionModalRef.current?.contains(target as HTMLElement)\n ) {\n if (\n !document\n ?.getElementById?.(`editTrigger${editingOption?.value}`)\n ?.contains?.(target as HTMLElement)\n ) {\n saveEditingOption();\n }\n }\n };\n const closeList = (e: Event | MouseEvent): void => {\n handleClickOutside(e);\n if (!(e.target as HTMLElement).isEqualNode(inputRef?.current)) inputRef?.current?.blur();\n };\n const isTargetInParent = (target: HTMLElement): boolean => {\n if (\n (target?.tagName === 'svg'\n && ((target as HTMLElement)?.parentNode as HTMLElement)?.className === 'tag__button')\n || target?.tagName === 'line'\n ) {\n return false;\n }\n\n if (\n (target?.tagName === 'svg'\n && ((target as HTMLElement)?.parentNode as HTMLElement)?.className !== 'tag__button')\n || target?.className?.indexOf?.('tag__label') !== -1\n || target?.className?.indexOf?.('tag-list_wrapper') !== -1\n || target?.className.indexOf(`${RC}__trigger`) !== -1\n || target?.className === 'tags-dropdown__arrow'\n ) {\n return true;\n }\n\n return false;\n };\n const isItemMatchesSearch = (item: ITagsDropdownOption): boolean => {\n if (item.isHiddenInList) return false;\n\n const title = item.title || item.label;\n return searchValue?.length\n ? !!title?.toLowerCase().includes(searchValue?.toLowerCase() || '')\n : true;\n };\n // --- GENERAL FUNCTIONS END --- //\n\n const prepareOptions = (options: ITagsDropdownOption[]): ITagsDropdownOption[] => {\n return options\n ?.map(option => (option?.groupName ? option?.list ?? [] : option))\n .flat();\n };\n const getFilteredOptions = (options: ITagsDropdownOption[]): ITagsDropdownOption[] =>\n options?.reduce((result: ITagsDropdownOption[], option: ITagsDropdownOption) => {\n if (option.groupName) {\n const filteredGroupItems: ITagsDropdownOption[] | undefined = option?.list?.filter(item =>\n isItemMatchesSearch(item),\n );\n\n if (filteredGroupItems?.length) {\n result.push({\n ...option,\n list: filteredGroupItems,\n });\n }\n }\n else if (isItemMatchesSearch(option)) {\n result.push(option);\n }\n\n return result;\n }, []);\n const getTotalOptions = useCallback(() => {\n return options?.reduce((result, item: ITagsDropdownOption) => {\n if (item?.list) {\n result += item?.list?.length || 0;\n }\n else {\n ++result;\n }\n\n return result;\n }, 0);\n }, [options]);\n\n const onChangeHandler = (item: ITagsDropdownOption): boolean | null | void => {\n if (item?.isFreezed) return false;\n if (item?.closeOnOptionSelect !== undefined) {\n if (item.closeOnOptionSelect) setIsOpen(false);\n }\n else if (isMobile ? closeOnSelectMobile : closeOnSelect) {\n setIsOpen(false);\n }\n setSearchValueInterceptor('');\n\n if (item.value && chosenOptions.includes(item.value)) {\n deleteChosen(item.value);\n return null;\n }\n\n if (item.value && isUseLocalOptionsStore) {\n setLocalOptionsStore((options) => {\n if (item.value) {\n return ({\n ...options,\n [item.value]: item?.label,\n });\n }\n else {\n return options;\n }\n });\n }\n\n if (item.value) onChange?.([...chosenOptions, item.value], 'chosenOptions');\n return null;\n };\n const onSearchHandler = (name: string): void => {\n let inputValue = name;\n if (!isNotValidateASCII) inputValue = formatToOnlyASCIICodeText(inputValue);\n setSearchValueInterceptor(inputValue);\n };\n const onWrapperClick: MouseEventHandler<Element> = (e): void => {\n if (e.target === wrapperRef?.current) {\n e.stopPropagation();\n e.preventDefault();\n\n setIsOpen(false);\n }\n };\n const selectAllItems = (): void => {\n const preparedOptions = prepareOptions(options)?.filter(\n ({ isFreezed, value }) =>\n value && !isFreezed && !chosenOptions?.includes(value || value?.toString()) && value !== 'open_modal',\n );\n\n if (isUseLocalOptionsStore) {\n setLocalOptionsStore(options =>\n preparedOptions?.reduce((result, { value, label }) => {\n if (value) result[value] = label;\n return result;\n }, options),\n );\n }\n\n onChange?.(\n [...chosenOptions, ...(preparedOptions?.map(({ value }) => value ?? '') || [])],\n 'chosenOptions',\n );\n if (isMobile ? closeOnSelectAllMobile : closeOnSelectAll) setIsOpen(false);\n };\n const unselectAllItems = (): void => {\n if (isUseLocalOptionsStore) setLocalOptionsStore({});\n onChange?.(\n chosenOptions?.filter(\n item =>\n prepareOptions(options)?.find(({ value }) => value === item)?.isFreezed,\n ),\n 'chosenOptions',\n );\n if (isMobile ? closeOnRemoveAllMobile : closeOnRemoveAll) setIsOpen(false);\n };\n const doScrollCallback = useCallback(\n (e: Event | MouseEvent) => {\n if (doLiveSearchRequest && typeof doLiveSearchRequest === 'function') {\n if (\n +Math.round((e.target as HTMLElement).clientHeight + (e.target as HTMLElement).scrollTop)\n === +(e.target as HTMLElement).scrollHeight\n ) {\n doLiveSearchRequest(searchValueRef.current, true);\n }\n }\n },\n [options],\n );\n\n // --- RENDER FUNCTIONS BEGIN --- //\n\n const getMarkupForElement = (item: ITagsDropdownOption): ReactNode => {\n const { description } = item;\n const title = item.title || item.label;\n\n const hightlightSearchValue = (title: string): ReactNode => {\n const index = title?.toLowerCase()?.indexOf(searchValue?.toLowerCase());\n\n if (index === -1) return title;\n\n return (\n <pre className=\"inherit-styles\">\n <span>{title.substring(0, index)}</span>\n <span className=\"search-match\">\n {title.substring(index, index + searchValue?.length)}\n </span>\n <span>{title.substring(index + searchValue?.length)}</span>\n </pre>\n );\n };\n\n return (\n <button\n type=\"button\"\n ref={item?.ref as LegacyRef<HTMLButtonElement>}\n key={`${RC}__list-item-${item.id || item.value}`}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onChangeHandler(item);\n }}\n className={cn(\n `${RC}__list-item`,\n {\n [`${RC}__list-item_active`]: chosenOptions?.some(\n value => value === item.value,\n ),\n },\n { [`${RC}__list-item_disabled`]: item.disabled },\n { [`${RC}__list-item_freezed`]: item?.isFreezed },\n {\n [`${RC}__list-item--editing`]: item?.value === editingOption?.value,\n },\n item.className,\n )}\n >\n {!isMobile && (\n <span\n className={cn(`${RC}__active-icon`, {\n [`${RC}__active-icon_active`]: chosenOptions?.some(\n value => value === item.value,\n ),\n })}\n >\n <Check width={16} height={16} className=\"color--text\" />\n </span>\n )}\n <div className={cn(`${RC}__list-item-body`)}>\n {renderOptionsAsTags\n ? (\n <Tag\n key={item?.value}\n className={cn(`${RC}__list-item-title`, item?.labelClassName, {\n 'tag_with-btn': !item?.isFreezed,\n })}\n label={title ? hightlightSearchValue(title) : ''}\n style={item?.style}\n isUseInTable={isUseInTable}\n isNoDismiss\n />\n )\n : (\n <span className={cn(`${RC}__list-item-title`, item.labelClassName)}>\n {title ? hightlightSearchValue(title) : ''}\n </span>\n )}\n {description && (\n <span className={cn(`${RC}__list-item-description`)}>\n {description}\n </span>\n )}\n </div>\n {!isMobile && item?.isEditable && onOptionEdit && onOptionDelete && (\n <div\n id={`editTrigger${item?.value}`}\n className={cn(`${RC}__list-item-edit-trigger`)}\n onClick={e => onOptionEditClick(e, item)}\n >\n <MoreHorizontal />\n </div>\n )}\n {isMobile\n ? item?.customMobileIcon ?? (\n <CheckboxInput\n value={chosenOptions?.some(value => value === item.value)}\n onChange={() => {\n onChangeHandler(item);\n }}\n label=\"\"\n id=\"\"\n />\n )\n : ''}\n </button>\n );\n };\n const getListMarkUp = (): ReactNode => {\n const filteredOptions = getFilteredOptions(options);\n\n const arrToPrint: ReactNode[] = [];\n for (const option of filteredOptions) {\n if (option.groupName) {\n arrToPrint.push(\n <div\n key={option.groupName\n ?.toString()\n ?.replace(/ /g, '_')\n .concat(Date.now()?.toString())}\n className={cn(`${RC}-group`, option.className)}\n >\n <span className={`${RC}-group__name`}>{option.groupName}</span>\n {option.list?.map(item => getMarkupForElement(item))}\n </div>,\n );\n }\n else if (!option.readOnly) {\n arrToPrint.push(getMarkupForElement(option));\n }\n }\n\n return (\n <div\n className={cn(`${RC}__container-wrapper`)}\n ref={wrapperRef as LegacyRef<HTMLDivElement>}\n onClick={isMobile ? onWrapperClick : () => {}}\n >\n <div\n ref={dropdownListWrapperRef as LegacyRef<HTMLDivElement>}\n className={cn(`${RC}__selector-wrapper`, {\n [`${RC}__selector-wrapper--fixed-height`]:\n isFixedMaxHeight && isMobile,\n })}\n >\n {headerContent || isMobile\n ? (\n <div\n className={cn(`${RC}__header`, {\n [`${RC}__header-with-shadow`]: isScrollableList && isMobile,\n [`${RC}__header-with-shadow-hidden`]: scrollTop === 0,\n })}\n >\n {isMobile && (\n <>\n <div className={cn(`${RC}__header-row`)}>\n <div className={cn(`${RC}__label`)}>{label}</div>\n <div\n className={cn(`${RC}__close-icon`)}\n onClick={(e) => {\n e.stopPropagation();\n setIsOpen(false);\n }}\n >\n <X\n onClick={(e) => {\n e.stopPropagation();\n setIsOpen(false);\n }}\n />\n </div>\n </div>\n {getTotalOptions()\n > (minItemsForShowMobileSearch\n || MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH) && (\n <div className={cn(`${RC}__header-row`)}>\n <Input\n className={`${RC}__input`}\n // @ts-ignore\n value={searchValue}\n // @ts-ignore\n onChange={(v: string) => setSearchValueInterceptor(v)}\n placeholder={mobileSearchPlaceholder || 'Search'}\n withDelete\n onMouseDown={() => {\n if (!isOpen) {\n setIsOpen(true);\n }\n }}\n {...attributesOfNativeInput}\n />\n </div>\n )}\n </>\n )}\n {headerContent && (\n <div className={cn(`${RC}__header-row`)}>{headerContent}</div>\n )}\n </div>\n )\n : null}\n {withSearchInputInList && (\n <div className={cn(`${RC}__input-list-wrapper`)}>\n {renderSearchInput()}\n </div>\n )}\n {withCreateLogic\n && onOptionCreate\n && searchValue\n && filteredOptions?.length\n && singleLevelOptions.every(\n ({ label }) => label?.toLowerCase() !== searchValue?.toLowerCase(),\n )\n ? (\n <div className={cn(`${RC}__creatable-helper`)}>\n Select an option or create one\n </div>\n )\n : null}\n\n <div\n ref={dropdownListRef as LegacyRef<HTMLDivElement>}\n className={`${RC}__list ${headerContent || isMobile ? `${RC}__list--with-header` : ''} ${\n footerContent ? `${RC}__list--with-footer` : ''\n }`}\n >\n {arrToPrint}\n {filteredOptions.filter(({ value }) => value !== 'open_modal')\n ?.length === 0\n && (!withCreateLogic || !searchValue)\n ? (\n <div className={`${RC}__no-options`}>{noOptionsText}</div>\n )\n : null}\n </div>\n {(footerContent || isMobile)\n && filteredOptions.filter(({ value }) => value !== 'open_modal')\n ?.length > 0\n ? (\n <div\n className={cn(`${RC}__footer`, {\n [`${RC}__footer-with-shadow`]: isMobile && isScrollableList,\n [`${RC}__footer-with-shadow-hidden`]:\n scrollTop === scrollHeight,\n })}\n >\n {footerContent}\n {isMobile && (\n <button type=\"button\" onClick={() => setIsOpen(false)}>\n Apply\n {chosenOptions?.length ? `(${chosenOptions?.length})` : ''}\n </button>\n )}\n </div>\n )\n : null}\n {editingOption\n && createPortal(\n renderEditOptionModal(),\n document.getElementById('root') ?? document.body,\n )}\n {withCreateLogic\n && onOptionCreate\n && searchValue\n && singleLevelOptions.every(\n ({ label }) =>\n label?.toLowerCase() !== searchValue?.toLowerCase(),\n ) && (\n <div\n className={cn(`${RC}__create-option`)}\n onClick={onOptionCreateClick}\n >\n Create\n <Tag\n isUseInTable={isUseInTable}\n label={searchValue}\n style={{ backgroundColor: randomColorForNewOption }}\n isNoDismiss\n />\n </div>\n )}\n </div>\n </div>\n );\n };\n const renderSearchInput = (): ReactNode => {\n return (\n <Input\n ref={inputRef}\n // TODO: REMOVE AFTER MIGRATE INPUT TO TYPESCRIPT\n // @ts-ignore\n className={cn(`${RC}__input`, {\n [`${RC}__input--in-list`]: withSearchInputInList,\n })}\n value={searchValue}\n onChange={onSearchHandler}\n placeholder={placeholder || 'Select from list'}\n attributesOfNativeInput={{\n ...attributesOfNativeInput,\n onKeyDown: (e: KeyboardEvent) => {\n if (\n e.keyCode === 13\n && withCreateLogic\n && onOptionCreate\n && singleLevelOptions.every(\n ({ label }) =>\n label?.toLowerCase() !== searchValue?.toLowerCase(),\n )\n ) {\n onOptionCreateClick();\n }\n onKeyPress?.(e, searchValue);\n },\n // onFocus: (e) => {\n // if (isMobile) e?.target?.blur();\n // },\n }}\n {...(withCreateLogic ? { symbolsLimit: 50 } : {})}\n />\n );\n };\n const renderDropdownTrigger = useCallback(() => {\n const renderDefaultDropdownTrigger = (): ReactNode => {\n // @ts-ignore\n return (\n <div\n className={cn(`${RC}__trigger`, {\n 'tags-dropdown__error': error,\n [`${RC}__trigger--with-actions`]: withActions,\n })}\n onClick={({ target }) => {\n if ((target as HTMLElement)?.tagName === 'INPUT') {\n setIsOpen(true);\n }\n else if (isTargetInParent(target as HTMLElement)) {\n setIsOpen(isOpen => !isOpen);\n }\n }}\n >\n {noTagsWrap\n ? (\n // @ts-ignore\n <TagList\n // TODO: REMOVE AFTER MIGRATE TAGLIST TO TYPESCRIPT\n // @ts-ignore\n items={chosenOptions?.map((value, i) => {\n const tag = singleLevelOptions?.find(el => el.value === value) as ITagProps;\n const label = isValuesInTags\n ? tag?.value\n : tag?.label || tag?.name || tag?.title;\n return {\n value,\n label,\n id: i,\n className: tag?.labelClassName,\n style: tag?.style,\n };\n })}\n isUseInTable={isUseInTable}\n disableShowMore\n />\n )\n : (\n chosenOptions?.map((value) => {\n const tag = singleLevelOptions?.find(el => el.value === value) as ITagProps;\n const label = isValuesInTags\n ? tag?.value\n : tag?.label || tag?.name || tag?.title;\n return (\n <Tag\n key={value}\n className={cn(tagClassname, tag?.labelClassName, {\n 'tag_with-btn': !tag?.isFreezed,\n })}\n label={label}\n style={tag?.style}\n removeItem={(tag?.isFreezed || tag?.readOnly) ? undefined : () => deleteChosen(value)}\n isNoDismiss={false}\n isUseInTable={isUseInTable}\n />\n );\n })\n )}\n\n {chosenOptions?.length === 0 || !noTagsWrap ? renderSearchInput() : ''}\n <span\n className={cn(`${RC}__arrow`, { [`${RC}__arrow_active`]: isOpen })}\n >\n {isMobile\n ? (\n <Code className=\"mobile-icon\" />\n )\n : isOpen\n ? (\n <ChevronUp className=\"color--text\" />\n )\n : (\n <ChevronDown className=\"color--text\" />\n )}\n </span>\n </div>\n );\n };\n\n return (\n renderCustomTrigger?.({\n chosenOptions,\n singleLevelOptions,\n deleteChosen,\n inputRef,\n onSearchHandler,\n isOpen,\n setIsOpen,\n }) ?? renderDefaultDropdownTrigger()\n );\n }, [chosenOptions, singleLevelOptions, inputRef, isOpen]);\n // --- RENDER FUNCTIONS END --- //\n\n useLayoutEffect(() => {\n initListContainer();\n\n if (isDefaultOpened && !isMobileProp) setIsOpen(true);\n\n return () => {\n getListContainer()?.remove();\n getListContainerWrapper()?.remove();\n };\n }, []);\n\n useLayoutEffect(() => {\n if (!isMobile) {\n window.addEventListener('mousewheel', closeList);\n window.addEventListener('wheel', closeList);\n window.addEventListener('touchmove', closeList);\n window.addEventListener('mouseup', handleClickOutside);\n }\n else {\n window.removeEventListener('mousewheel', closeList);\n window.removeEventListener('wheel', closeList);\n window.removeEventListener('touchmove', closeList);\n window.removeEventListener('mouseup', handleClickOutside);\n }\n\n getListContainer()?.addEventListener('click', closeList);\n\n return () => {\n window.removeEventListener('mousewheel', closeList);\n window.removeEventListener('mouseup', handleClickOutside);\n window.removeEventListener('wheel', closeList);\n window.removeEventListener('touchmove', closeList);\n getListContainer()?.removeEventListener('click', closeList);\n };\n }, [getListContainer, isMobile]);\n\n useLayoutEffect(() => {\n if (isOpen) {\n setListContainerStyles();\n setEditOptionModalStyles();\n }\n }, [\n isOpen,\n optionsProp,\n chosenOptions,\n searchValue,\n isMobile,\n dropdownListWrapperRef?.current?.getBoundingClientRect()?.height,\n recalculateListContainerStylesTrigger,\n ]);\n\n useEffect(() => {\n if (\n isUseLocalOptionsStore\n && chosenOptions?.length !== Object.keys(localOptionsStore)?.length\n ) {\n options.map((option: ITagsDropdownOption) => {\n if (option?.value && !localOptionsStore?.[option?.value?.toString()]) {\n setLocalOptionsStore((options) => {\n if (option.value) {\n return ({\n ...options,\n [option?.value?.toString()]: option?.label,\n });\n }\n else {\n return options;\n }\n });\n }\n\n return option;\n });\n }\n }, [chosenOptions, isUseLocalOptionsStore]);\n\n useEffect(() => {\n const windowScrollEventHandler = (): void => {\n setWindowScrollTop(window.scrollY);\n };\n\n const fn = isOpen ? 'addEventListener' : 'removeEventListener';\n selectAllButtonRef?.current?.[fn]('click', selectAllItems, true);\n unselectAllButtonRef?.current?.[fn]('click', unselectAllItems, true);\n\n if (isOpen) {\n if (!isMobile || !withMobileLogic)\n window.removeEventListener('scroll', windowScrollEventHandler);\n\n if (customTriggerRef?.current) {\n customTriggerRef.current.style.pointerEvents = 'none';\n }\n getListContainer()?.classList.add('tags-dropdown__container--opened');\n if (!isMobile) {\n inputRef?.current?.focus?.();\n }\n else {\n inputRef?.current?.blur?.();\n }\n }\n else {\n if (!isMobile || !withMobileLogic)\n window.addEventListener('scroll', windowScrollEventHandler);\n\n if (customTriggerRef?.current) {\n customTriggerRef.current.style.pointerEvents = 'auto';\n }\n getListContainer()?.classList.remove('tags-dropdown__container--opened');\n if (withSearchInputInList) setSearchValueInterceptor('');\n setListPos(null);\n setSearchValue('');\n }\n }, [isOpen]);\n\n useEffect(() => {\n const setScrollTopValue = (e: Event | MouseEvent): void => {\n setScrollTop(Number.parseInt((e.target as HTMLElement).scrollTop?.toString(), 10));\n };\n\n const preventWindowScrolling = (e: Event): void => {\n e.preventDefault();\n window.scrollTo({ top: windowScrollTop });\n };\n\n if (isOpen && isMobile && dropdownListRef?.current) {\n dropdownListRef?.current?.addEventListener('scroll', setScrollTopValue);\n\n setIsScrollableList(\n dropdownListRef?.current?.scrollHeight\n > dropdownListRef?.current?.clientHeight,\n );\n\n if (isScrollableList === null) {\n setIsFixedMaxHeight(\n dropdownListRef?.current?.scrollHeight\n > dropdownListRef?.current?.clientHeight,\n );\n }\n }\n\n if (isOpen && dropdownListRef && dropdownListRef.current) {\n dropdownListRef.current.addEventListener('scroll', doScrollCallback);\n if (!isMobile || !withMobileLogic)\n window.addEventListener('scroll', preventWindowScrolling);\n }\n\n return () => {\n if (!isMobile || !withMobileLogic)\n window.removeEventListener('scroll', preventWindowScrolling);\n dropdownListRef?.current?.removeEventListener('scroll', doScrollCallback);\n dropdownListRef?.current?.removeEventListener(\n 'scroll',\n setScrollTopValue,\n );\n };\n }, [\n isOpen,\n isMobile,\n dropdownListRef?.current,\n dropdownListRef?.current?.scrollHeight,\n dropdownListRef?.current?.clientHeight,\n ]);\n\n useEffect(() => {\n if (dropdownListRef?.current) {\n setScrollHeight(\n Number.parseInt(\n (dropdownListRef?.current?.scrollHeight\n - dropdownListRef?.current?.clientHeight)?.toString(),\n 10,\n ),\n );\n }\n }, [scrollTop, dropdownListRef?.current]);\n\n useEffect(() => {\n if (\n isSearchable\n && useLiveSearch\n && (debouncedSearchTerm || isValueDeleted || isOpen)\n ) {\n doLiveSearchRequest?.(debouncedSearchTerm);\n }\n }, [isOpen, debouncedSearchTerm, isValueDeleted]);\n\n useEffect(() => {\n setOptions((tagsFullList || optionsProp)?.map(option => ({ ...option, ref: createRef() })));\n }, [optionsProp, tagsFullList]);\n\n useEffect(() => {\n if (editingOption) {\n setEditOptionModalStyles();\n editingOptionInputRef?.current?.focus?.();\n }\n }, [editingOption?.value]);\n\n return (\n <div\n className={cn(RC, className, {\n [`${RC}_disabled`]: disabled,\n [`${RC}-mobile`]: isMobile,\n [`${RC}--focused`]: isOpen && !customTriggerRef?.current && !isMobile,\n [`${RC}--custom-trigger`]: Boolean(customTriggerRef?.current),\n })}\n ref={dropdownRef as LegacyRef<HTMLDivElement>}\n >\n {renderDropdownTrigger()}\n {withActions && (\n <div className={cn(`${RC}__actions`)}>\n <div\n className={cn(`${RC}__actions-item`)}\n onClick={onActionConfirmClick}\n >\n <Check />\n </div>\n <div\n className={cn(`${RC}__actions-item`)}\n onClick={onActionCancelClick}\n >\n <X />\n </div>\n </div>\n )}\n {isOpen && renderListContainer()}\n </div>\n );\n};\nexport default TagsDropdown;\n", "import type { ITagProps } from './Tag.interface';\nimport cn from 'classnames';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { AlertTriangle, X } from 'react-feather';\nimport Spinner from '../../Layout/Spinner';\n\nimport './Tag.scss';\n\nconst CN = 'tag';\n\nfunction defaultOnClick(): void {}\n\nconst Tag: React.FC<ITagProps> = ({\n value,\n className,\n style,\n label,\n warning,\n isWarningHint = true,\n removeItem,\n name,\n isPopup,\n popupInfoContent,\n popupClassName,\n id,\n isUseInTable,\n isNoDismiss = true,\n onClick = defaultOnClick,\n testId = CN,\n}) => {\n const tagRef = useRef<HTMLDivElement>(null);\n\n const [isTagHover, setIsTagHover] = useState<boolean>(false);\n const [isTagPopupOpened, setIsTagPopupOpened] = useState<boolean>(false);\n\n const { x, y, height, width } = tagRef?.current?.getBoundingClientRect() ?? {};\n const { scrollY } = window;\n\n const tagPopupStyles = useMemo(() => {\n if (!isTagPopupOpened || !tagRef?.current) return {};\n\n const { x, y, height, width } = tagRef?.current?.getBoundingClientRect();\n\n return {\n left: `${x}px`,\n top: `${y + scrollY}px`,\n transform: `translate(calc(-1 * calc(100% - ${width / 2 + 22}px)), ${height + 10}px)`,\n };\n }, [isTagPopupOpened, x, y, width, height, scrollY]);\n\n const tagLabelStyle = useMemo(() => {\n const styleObj: React.CSSProperties = {};\n\n const bgColor = style?.backgroundColor ?? style?.background;\n\n if (bgColor === '#242424') {\n styleObj.color = '#fff';\n }\n\n return styleObj;\n }, [style]);\n\n const handle = {\n onTagClick: (event: React.MouseEvent<HTMLDivElement>) => {\n if (isUseInTable) {\n event.stopPropagation();\n }\n if (isPopup) {\n setIsTagPopupOpened(!isTagPopupOpened);\n }\n onClick(id, event);\n },\n };\n\n const handleClickOutside = (): void => {\n setIsTagPopupOpened(false);\n };\n\n useEffect(() => {\n document.addEventListener('click', handleClickOutside, true);\n return () => {\n document.removeEventListener('click', handleClickOutside, true);\n };\n }, []);\n\n useEffect(() => {\n const handleScroll = (): void => {\n setIsTagPopupOpened(false);\n };\n\n window.addEventListener('scroll', handleScroll, true);\n return () => {\n window.removeEventListener('scroll', handleScroll, true);\n };\n }, []);\n\n return (\n <div\n onMouseEnter={() => setIsTagHover(true)}\n onMouseLeave={() => setIsTagHover(false)}\n data-testid={testId}\n role=\"listitem\"\n aria-label={`Tag: ${label || name}`}\n className={cn(CN, className, { 'tag-warn': warning })}\n style={style ?? {}}\n onClick={event => handle.onTagClick(event)}\n ref={tagRef}\n >\n {warning && typeof warning === 'string' && (\n <AlertTriangle className=\"advanced-tags--warning-icon mr5\" aria-label=\"Warning\" />\n )}\n {warning && typeof warning === 'string' && isTagHover && isWarningHint && (\n <div className=\"tag__warn-hint\" role=\"tooltip\">\n {warning}\n </div>\n )}\n <span className=\"tag__label\" style={tagLabelStyle}>{label || name}</span>\n\n {removeItem && !isNoDismiss && (\n <button\n type=\"button\"\n onClick={(e) => {\n e?.preventDefault();\n e?.stopPropagation();\n removeItem(value);\n }}\n aria-label={`Remove ${label || name}`}\n className=\"tag__button\"\n >\n <X className=\"color--text\" />\n </button>\n )}\n\n {isTagPopupOpened\n && createPortal(\n <div id={`tagPopup${value}`} className={cn('tag__popup', popupClassName)} style={tagPopupStyles}>\n {!popupInfoContent ? <Spinner size=\"small\" /> : popupInfoContent}\n </div>,\n document.getElementById('root')!,\n )}\n </div>\n );\n};\n\nexport default Tag;\n", "import Spinner from './Spinner';\n\nexport default Spinner;\nexport type { ISpinnerProps } from './Spinner.interface';\n", "import type { ITagProps } from '../Tag/Tag.interface';\n\nimport type { ITagListProps } from './TagList.interface';\nimport cn from 'classnames';\n\nimport {\n createRef,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { Edit3 } from 'react-feather';\n\nimport { checkedRef } from '../../../Functions/utils';\nimport Tag from '../Tag/Tag';\nimport './TagList.scss';\n\nconst TagList: React.FC<ITagListProps> = ({\n disabled,\n className,\n onTagClick,\n removeItem,\n items,\n withToggle = true,\n disableShowMore = false,\n shownItemsCount = 'auto',\n testId = 'test-taglist',\n refProp,\n\n renderOrder,\n\n onEditClick,\n onToggleRenderAll,\n isUseInTable,\n}) => {\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const [tagList, setTagList] = useState<(ITagProps & { itemRef: React.RefObject<HTMLDivElement> })[]>([]);\n\n const [staticTagsCount, setStaticTagsCount] = useState(-1);\n const [renderItemsCount, setRenderItemsCount] = useState(-1);\n const [renderAll, setRenderAll] = useState(!withToggle);\n\n const wrapperWidth\n = wrapperRef?.current?.getBoundingClientRect()?.width ?? -1;\n\n const setRenderAllInterceptor = (v: boolean, event: any): void => {\n setRenderAll(v);\n onToggleRenderAll?.(v);\n event?.stopPropagation();\n event?.preventDefault();\n };\n\n const getStaticTagsCount = (computedWidth: number): number => {\n if (typeof shownItemsCount === 'number') return shownItemsCount;\n\n const delta = typeof onEditClick === 'function' ? 60 : 32;\n const result = tagList.reduce <{\n count: number;\n width: number;\n items: { w: number; r: HTMLDivElement | null }[];\n skip?: boolean;\n }>((result, { itemRef }, index) => {\n if (result.skip) return result;\n\n const itemStyle\n = itemRef?.current && window.getComputedStyle(itemRef.current);\n\n const itemWidth = [\n Number.parseInt((itemRef.current?.getBoundingClientRect()?.width ?? 0).toString(), 10),\n Number.parseInt((itemStyle?.marginLeft ?? 0).toString(), 10),\n Number.parseInt((itemStyle?.marginRight ?? 0).toString(), 10),\n ].reduce((result, item) => {\n if (!Number.isNaN(item)) result += item;\n return result;\n }, 0);\n\n if (\n (!Number.isNaN(itemWidth)\n && itemWidth > 0\n && itemWidth + result.width < computedWidth - delta)\n || index === 0\n ) {\n result = {\n count: result.count + 1,\n width: result.width + itemWidth,\n items: [...result.items, { w: itemWidth, r: itemRef?.current }],\n };\n }\n else {\n result.skip = true;\n }\n\n return result;\n }, { count: 0, width: 0, items: [], skip: false });\n if (result?.items?.length === 1 && result.items[0].r && tagList.length > 1) {\n result.items[0].r.style.maxWidth = `${computedWidth - delta - 8}px`;\n }\n\n return result?.count;\n };\n\n const cancelDefault = (_e: string | undefined, cb: () => void): void => {\n cb?.();\n };\n\n const renderTags = (): (JSX.Element | null)[] => {\n const tagsRenderOrder\n = renderOrder ?? tagList.map(({ value, id }) => id ?? value);\n\n return tagsRenderOrder.map((v, i) => {\n const item = tagList.find(({ value, id }) => {\n // \u041D\u0415 \u0420\u0415\u0424\u0410\u041A\u0422\u041E\u0420\u0418\u0422\u042C \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u0447\u0435\u0440\u0435\u0437 || \u0434\u0430\u0435\u0442 \u043D\u0435\u043E\u0431\u044A\u044F\u0441\u043D\u0438\u043C\u044B\u0439 \u0441\u0430\u0439\u0434 \u044D\u0444\u0444\u0435\u043A\u0442\n if (id) return id === v; // \u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u0438\u0449\u0435\u043C \u043F\u043E id\n if (value) return value === v; // \u043F\u043E\u0442\u043E\u043C \u043F\u043E value\n return false;\n });\n\n if (!item) return null;\n\n const isHidden\n = renderItemsCount !== -1 && staticTagsCount !== -1\n ? i >= renderItemsCount\n : false;\n\n return (\n <div\n className={`tag-list_wrapper_item ${isHidden ? 'tag-list_wrapper_item--hidden' : ''}`}\n key={`tag-list-item-${item?.id ?? item?.value}`}\n ref={checkedRef(item?.itemRef)}\n >\n <Tag\n testId={`test-taglist-item-${item?.id ?? item?.value}`}\n {...item}\n onClick={onTagClick}\n removeItem={removeItem}\n isUseInTable={isUseInTable}\n />\n </div>\n );\n });\n };\n\n const renderMoreTags = (): JSX.Element | null => {\n if (\n (typeof shownItemsCount === 'number' && tagList?.length < shownItemsCount)\n || !tagList?.length\n || disableShowMore\n ) {\n return null;\n }\n const restItems = tagList.length - renderItemsCount;\n\n if (restItems === 0 || !withToggle || staticTagsCount === -1) return null;\n\n return (\n <Tag\n label={`+${restItems}`}\n className=\"tag-list_wrapper_render-more\"\n onClick={\n disableShowMore\n ? () => {}\n : (value, event) => cancelDefault(value, () => setRenderAllInterceptor(true, event))\n }\n isUseInTable={isUseInTable}\n />\n );\n };\n const renderHideTags = (): JSX.Element | null => {\n if (\n renderItemsCount !== tagList?.length\n || !withToggle\n || staticTagsCount === -1\n || staticTagsCount === tagList?.length\n ) {\n return null;\n }\n\n return (\n <Tag\n label=\"...\"\n className=\"tag-list_wrapper_hide-more\"\n onClick={(value, event) => cancelDefault(value, () => setRenderAllInterceptor(false, event))}\n isUseInTable={isUseInTable}\n />\n );\n };\n\n // Set TagList Items\n useEffect(() => {\n setStaticTagsCount(-1);\n setRenderItemsCount(-1);\n setRenderAllInterceptor(false, null);\n const itemsWithRef = items.map(item => ({ ...item, itemRef: createRef<HTMLDivElement>() }));\n setTagList(itemsWithRef);\n }, [items]);\n\n // Count Row Tags\n useLayoutEffect(() => {\n if (withToggle && wrapperWidth !== -1 && staticTagsCount === -1) {\n let computedWidth = wrapperWidth;\n\n if (computedWidth === 0) {\n computedWidth = Number.parseInt(\n (wrapperRef?.current\n ? window.getComputedStyle(wrapperRef?.current)?.width\n : 0).toString(),\n );\n }\n\n if (!Number.isNaN(computedWidth)) {\n setStaticTagsCount(getStaticTagsCount(computedWidth));\n }\n }\n }, [tagList, wrapperWidth, wrapperRef?.current]);\n\n //\n useLayoutEffect(() => {\n setRenderItemsCount(staticTagsCount);\n }, [staticTagsCount]);\n\n // Toggle Show/Hide More Tags\n useEffect(() => {\n setRenderItemsCount(renderAll ? tagList?.length : staticTagsCount);\n }, [renderAll]);\n\n useEffect(() => {\n if (wrapperRef?.current && refProp) refProp.current = wrapperRef?.current;\n }, [wrapperRef?.current]);\n\n return (\n <div\n data-testid={testId}\n className={cn(\n 'tag-list_wrapper',\n `${\n renderItemsCount !== tagList?.length\n || !withToggle\n || staticTagsCount === -1\n || staticTagsCount === tagList?.length\n ? 'tag-list_wrapper--only-static-items'\n : 'tag-list_wrapper--all-items'\n }`,\n className,\n { 'tag-list_wrapper--disabled': disabled },\n )}\n style={{\n visibility: staticTagsCount === -1 ? 'hidden' : 'visible',\n zIndex: staticTagsCount === -1 ? '-1' : 'auto',\n }}\n ref={wrapperRef}\n >\n {renderTags()}\n {renderMoreTags()}\n {renderHideTags()}\n {typeof onEditClick === 'function' && (\n <div className=\"tag-list__edit-trigger\">\n <Edit3 onClick={onEditClick} />\n </div>\n )}\n </div>\n );\n}\n\nexport default TagList;\n", "import type {\n ChangeEvent,\n FocusEvent,\n} from 'react';\nimport type { ISymbolsLimit, ITextareaProps } from './Textarea.interface';\n\nimport cn from 'classnames';\nimport React, {\n useEffect,\n useMemo,\n useRef,\n} from 'react';\n\nimport { formatToOnlyASCIICodeText } from '../../../Functions/fieldValueFormatters';\nimport { getIsOnlyAnObject } from '../../../Functions/utils';\n\nimport './Textarea.scss';\n\nconst RC = 'textarea';\n\nfunction getDefaultSymbolsLimit(symbolsLimit: unknown): ISymbolsLimit {\n if (typeof symbolsLimit === 'number') return { limit: symbolsLimit } as ISymbolsLimit;\n return { limit: null } as ISymbolsLimit;\n}\n\nfunction Textarea({\n ref,\n id,\n value,\n onChange,\n onFocus,\n onBlur,\n onKeyDown,\n placeholder,\n disabled,\n className,\n isNotValidateASCII = false,\n testId = RC,\n withAutoGrow,\n symbolsLimit,\n}: ITextareaProps & { ref?: React.RefObject<HTMLTextAreaElement | null> }): JSX.Element {\n const internalRef = useRef<HTMLTextAreaElement>(null);\n const textareaRef = (ref as React.RefObject<HTMLTextAreaElement>) || internalRef;\n\n const symbolsLimitSafely = useMemo(() => {\n const sourse = getIsOnlyAnObject(symbolsLimit) ? (symbolsLimit as ISymbolsLimit) : getDefaultSymbolsLimit(symbolsLimit);\n\n const limit = typeof sourse.limit === 'number' ? sourse.limit : null;\n const isShowLimit = typeof sourse.isShowLimit === 'boolean'\n ? sourse.isShowLimit && typeof limit === 'number' && limit >= 0\n : typeof limit === 'number' && limit >= 0;\n\n return { limit, isShowLimit };\n }, [symbolsLimit]);\n\n const handle = {\n change: (val: string) => {\n if (typeof symbolsLimitSafely.limit === 'number' && val.length > symbolsLimitSafely.limit) return;\n\n let inputValue = val;\n if (!isNotValidateASCII) {\n inputValue = formatToOnlyASCIICodeText(inputValue);\n }\n onChange(inputValue);\n },\n focus: (e: FocusEvent<HTMLTextAreaElement>) => onFocus?.(e),\n blur: (e: FocusEvent<HTMLTextAreaElement>) => onBlur?.(e),\n };\n\n const autoGrow = (el: HTMLTextAreaElement | null): void => {\n if (!el) return;\n el.style.height = '5px';\n el.style.height = `${el.scrollHeight}px`;\n };\n\n useEffect(() => {\n if (withAutoGrow) {\n autoGrow(textareaRef?.current);\n }\n }, [value, withAutoGrow]);\n\n return (\n <div data-testid={testId} className={cn(RC, className)}>\n <textarea\n id={id ?? Math.random().toString(16).slice(2)}\n data-testid={`${testId}-textarea`}\n className={`${RC}__textarea`}\n value={value}\n onChange={(e: ChangeEvent<HTMLTextAreaElement>) => handle.change(e.target.value)}\n placeholder={placeholder}\n disabled={disabled}\n onKeyDown={onKeyDown}\n ref={textareaRef}\n onFocus={handle.focus}\n onBlur={handle.blur}\n />\n\n {symbolsLimitSafely.isShowLimit && (\n <div className={`${RC}__symbols-limit`}>\n {value.length}\n {' '}\n /\n {' '}\n {symbolsLimitSafely.limit}\n </div>\n )}\n </div>\n );\n}\n\nexport default Textarea;\n", "import type { ISwitcherTextareaProps } from './SwitcherTextarea.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\nimport SwitcherHide from '../SwitcherHide/SwitcherHide';\nimport Textarea from '../Textarea/Textarea';\n\nimport TextSwitcher from '../TextSwitcher/TextSwitcher';\nimport './SwitcherTextarea.scss';\n\nconst RC = 'switcher-textarea';\n\nconst SwitcherTextarea: React.FC<ISwitcherTextareaProps> = ({\n label,\n isLabelBold,\n hint,\n className,\n isActive = true,\n setIsActive,\n isIncluded = true,\n setIsIncluded,\n text = '',\n setText,\n activeText = 'is',\n inactiveText = 'is not',\n placeholder,\n disabled,\n testId = RC,\n}) => {\n return (\n <SwitcherHide\n testId={testId}\n isActive={isActive}\n onChange={v => setIsActive?.(v)}\n label={label}\n isLabelBold={isLabelBold}\n className={cn(RC, className)}\n hint={hint}\n disabled={disabled}\n >\n <>\n <div className={`${RC}__wrap switcher-hide__content`}>\n <TextSwitcher\n testId={testId}\n activeText={activeText}\n inactiveText={inactiveText}\n isActive={isIncluded ?? true}\n onChange={value => setIsIncluded?.(value)}\n className={`${RC}__text-switcher`}\n />\n <button\n type=\"button\"\n onClick={() => setText?.('')}\n className={`${RC}__btn`}\n data-testid={`${testId}-clear-btn`}\n >\n Clear\n </button>\n </div>\n <Textarea\n testId={testId}\n value={text}\n placeholder={placeholder}\n onChange={value => setText?.(value)}\n className={`${RC}__textarea`}\n />\n </>\n </SwitcherHide>\n );\n};\n\nexport default SwitcherTextarea;\n", "import type { ITagListProps } from '../../UI/TagList/TagList.interface';\n\nimport type { ITagsDropdownProps } from '../TagsDropdown/TagsDropdown.interface';\nimport type { ITagListToDropdownProps } from './TagListToDropdown.interface';\nimport { useEffect, useRef, useState } from 'react';\nimport TagList from '../../UI/TagList/TagList';\nimport TagsDropdown from '../TagsDropdown/TagsDropdown';\n\nconst TagListToDropdown: React.FC<ITagListToDropdownProps> = ({\n options,\n tagsFullList,\n value = [],\n dropdownProps,\n listProps,\n onChange,\n useDropdownCompactMode,\n}) => {\n const preparedValue: ITagsDropdownProps['chosenOptions'] = value.map(({ value }) => value !== undefined ? value : '');\n const [isEditMode, setIsEditMode] = useState(false);\n const [isRenderAllTags, setIsRenderAllTags] = useState(false);\n const [newValue, setNewValue] = useState(preparedValue);\n const [isValueChanged, setIsValueChanged] = useState(false);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const tagListRef = useRef(null);\n\n const onConfirmChangesClick = (): void => {\n if (isValueChanged) {\n setIsLoading(true);\n setIsValueChanged(false);\n new Promise((r) => {\n const onChangeResult = onChange?.(\n options.filter(({ value }) => value !== undefined ? newValue.includes(value) : false),\n );\n if (onChangeResult && typeof (onChangeResult as any).then === 'function') {\n (onChangeResult as Promise<any>).then(data => r(data));\n }\n else {\n r(true);\n }\n })?.finally(() => {\n setIsEditMode(false);\n setIsLoading(false);\n });\n }\n else {\n setIsEditMode(false);\n }\n };\n\n useEffect(() => {\n setNewValue(preparedValue);\n }, [isEditMode]);\n\n const renderTagsDropdown = (props?: Partial<ITagsDropdownProps>): JSX.Element => {\n return (\n <TagsDropdown\n {...dropdownProps}\n disabled={isLoading}\n options={options}\n tagsFullList={tagsFullList}\n chosenOptions={newValue}\n renderOptionsAsTags\n withCreateLogic\n isUseLocalOptionsStore={false}\n onOptionEdit={dropdownProps?.onOptionEdit}\n onOptionDelete={dropdownProps?.onOptionDelete}\n onOptionCreate={dropdownProps?.onOptionCreate}\n onActionConfirmClick={onConfirmChangesClick}\n onActionCancelClick={() => setIsEditMode(v => !v)}\n onChange={(data) => {\n setNewValue(data);\n setIsValueChanged(true);\n }}\n {...props}\n isDefaultOpened={isEditMode}\n />\n );\n };\n\n const renderTagsList = (props?: Partial<ITagListProps>): JSX.Element => {\n return (\n <TagList\n disabled={isLoading}\n refProp={tagListRef}\n {...listProps}\n items={value}\n onEditClick={() => setIsEditMode(v => !v)}\n {...props}\n />\n );\n };\n\n const renderCompactMode = (): JSX.Element => {\n return renderTagsDropdown({\n withActions: false,\n withSearchInputInList: true,\n customTriggerRef: tagListRef,\n recalculateListContainerStylesTrigger: isRenderAllTags,\n onDropdownListClose: onConfirmChangesClick,\n renderCustomTrigger: ({ setIsOpen }) =>\n renderTagsList({\n onToggleRenderAll: v => setTimeout(() => setIsRenderAllTags(v), 1),\n onEditClick: () => {\n setIsOpen(!isEditMode);\n if (isEditMode) onConfirmChangesClick();\n else setIsEditMode(true);\n },\n }),\n });\n };\n\n return useDropdownCompactMode\n ? renderCompactMode()\n : isEditMode\n ? renderTagsDropdown({ withActions: true })\n : renderTagsList();\n}\n\nexport default TagListToDropdown;\n", "import type { ITextLink, ITextProps } from './Text.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport './Text.scss';\n\nconst RC = 'text';\n\n/**\n *\n * @param value\n * @param className\n * @param classesObj\n * @param icon\n * @param link\n * @param align\n * @param testId\n * @return {JSX.Element|null}\n * @constructor\n */\n\n// ? \u041F\u0440\u043E\u0442\u043E\u0442\u0438\u043F \u043B\u0435\u0436\u0438\u0442 \u043D\u0430 \u043F\u0440\u043E\u0435\u043A\u0442\u0435 \u043A\u0430\u0431\u0438\u043D\u0435\u0442\u0430 src\\JS\\Components\\Atomic\\FormElements\\Text\\Text.js\n// ? \u0427\u0442\u043E \u043F\u043E\u043C\u0435\u043D\u044F\u043B?\n// ? - \u0432 \u0432\u0435\u0440\u0441\u0442\u043A\u0435 \u0443\u0431\u0440\u0430\u043B \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u0443\u044E \u0432\u043B\u043E\u0436\u0435\u043D\u043D\u043E\u0441\u0442\u044C\n// ? (\u0442\u0435\u043F\u0435\u0440\u044C \u0442\u043E\u043B\u044C\u043A\u043E 1 \u0432\u043D\u0435\u0448\u043D\u0438\u0439 \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440, \u0434\u043E\u043F. \u043A\u043B\u0430\u0441\u0441\u044B \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E\u0442\u0441\u044F \u0440\u044F\u0434\u043E\u043C \u0441 className)\n// ? - \u0443\u0431\u0440\u0430\u043B \u043F\u0440\u043E\u043F\u044B as \u0438 isTitle, \u043E\u043D\u0438 \u0431\u044B\u043B\u0438 \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0442\u044B \u0441 \u043F\u0440\u0435\u0434\u0437\u0430\u0434\u0430\u043D\u043D\u044B\u043C\u0438 \u043A\u043B\u0430\u0441\u0441\u0430\u043C\u0438 \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u043C\u0438 \u0441 \u0442\u043E\u043A\u0435\u043D\u0438\u0437\u0430\u0446\u0438\u0435\u0439\n// ? \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u043F\u0440\u043E\u043A\u0438\u043D\u0443\u0442\u044C \u0434\u043E\u043F. \u043A\u043B\u0430\u0441\u0441\u044B \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C \u0441 \u0443\u0441\u043B\u043E\u0432\u0438\u044F\u043C\u0438 \u043E\u0441\u0442\u0430\u0432\u0438\u043B \u0447\u0435\u0440\u0435\u0437 \u043F\u0440\u043E\u043F\u0443 classesObj\n// ? - \u0437\u0430\u043C\u0435\u043D\u0438\u043B \u043F\u0440\u043E\u043F\u0443 text \u043D\u0430 value\n// ? - \u0437\u0430\u043C\u0435\u043D\u0438\u043B \u043F\u0440\u043E\u043F\u0443 iconMain \u043D\u0430 icon\n// ? - \u043F\u0435\u0440\u0435\u0440\u0430\u0431\u043E\u0442\u0430\u043B \u043F\u0440\u043E\u043F\u0443 link, \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u043E\u0439 \u0438\u043B\u0438 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C\n// ? \u0435\u0441\u043B\u0438 \u044D\u0442\u043E \u043E\u0431\u044A\u0435\u043A\u0442, \u0442\u043E \u0443 \u043D\u0435\u0433\u043E \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430\n// ? - path - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F href\n\n// ? - target - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 target, \u0438\u043C\u0435\u0435\u0442 \u0441\u043C\u044B\u0441\u043B \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044C, \u0435\u0441\u043B\u0438 \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u044E\u0442\u0441\u044F onClick \u0438\u043B\u0438 redirect\n\n// ? - onClick - \u0430\u043B\u044C\u0442\u0435\u0440\u043D\u0430\u0442\u0438\u0432\u043D\u044B\u0439 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u043D\u0430\u0436\u0430\u0442\u0438\u044F, \u0435\u0441\u043B\u0438 \u043E\u043D \u0435\u0441\u0442\u044C \u0442\u043E \u043E\u043D \u0431\u0443\u0434\u0435\u0442 \u0438\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D \u0432 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u0435,\n// ? \u0444-\u044F \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0437\u0432\u0430\u043D\u0430 \u0441 1 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u043E\u043C - props, \u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u0435 props \u0431\u0443\u0434\u0435\u0442 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E ev (event) \u0438 \u0432\u0441\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0435 link,\n// ? \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0434\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F onClick \u0431\u0443\u0434\u0443\u0442 \u0432\u044B\u0437\u0432\u0430\u043D\u044B e.preventDefault() \u0438 e.stopPropagation\n\n// ? - redirect - \u0430\u043B\u044C\u0442\u0435\u0440\u043D\u0430\u0442\u0438\u0432\u043D\u044B\u0439 \u0438\u0441\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C \u0440\u0435\u0434\u0438\u0440\u0435\u043A\u0442\u0430 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 history.push),\n// ? \u0435\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u0438 \u043D\u0435\u0442 onClick - \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0437\u0432\u0430\u043D \u0441 \u043E\u0434\u043D\u0438\u043C \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u043E\u043C (link.path)\n\n// ? - isNoPreventDefault - \u043E\u0442\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0432\u044B\u0437\u043E\u0432 e.preventDefault \u043F\u0435\u0440\u0435\u0434 \u0432\u044B\u0437\u043E\u0432\u043E\u043C onClick \u0438\u043B\u0438 redirect\n\n// ? - isNoStopPropagation - \u043E\u0442\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0432\u044B\u0437\u043E\u0432 e.preventDefault \u043F\u0435\u0440\u0435\u0434 \u0432\u044B\u0437\u043E\u0432\u043E\u043C onClick \u0438\u043B\u0438 redirect\n\nconst Text: React.FC<ITextProps> = ({\n value,\n className,\n classesObj,\n icon,\n link,\n align = 'left',\n testId = 'text-lib-component',\n}) => {\n if (!value) return null;\n\n const isLinkAsObj = link instanceof Object && !Array.isArray(link);\n const isLinkAsString = typeof link === 'string';\n const isLink = isLinkAsObj || isLinkAsString;\n\n const linkObj = isLinkAsObj ? link as ITextLink : {};\n const {\n path = '',\n target,\n redirect,\n onClick: onClickInner,\n isNoPreventDefault,\n isNoStopPropagation,\n } = linkObj;\n\n const preparedPath = (() => {\n if (!isLink) return '';\n return isLinkAsObj ? path : link as string;\n })();\n\n const atributes: React.AnchorHTMLAttributes<HTMLAnchorElement> = {};\n\n if (typeof onClickInner === 'function' || typeof redirect === 'function') {\n atributes.onClick = function onClick(ev: React.MouseEvent<HTMLAnchorElement>) {\n if (!isNoPreventDefault) ev.preventDefault();\n if (!isNoStopPropagation) ev.stopPropagation();\n\n // ? \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u044B \u0438 onClick, \u0438 redirect, \u0442\u043E onClick \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044F \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u043D\u0435\u0435 redirect\n if (onClickInner) {\n onClickInner({\n ev,\n ...(isLinkAsObj ? link as ITextLink : { path: link as string }),\n });\n return;\n }\n if (redirect) {\n redirect(preparedPath);\n }\n };\n }\n\n const mainInner = (\n <>\n {icon && <div className={`${RC}__icon-container`}>{icon}</div>}\n {value}\n </>\n );\n\n return (\n <div\n data-testid={testId}\n className={cn(RC, className, {\n [`${RC}-left`]: align === 'left',\n [`${RC}-center`]: align === 'center',\n [`${RC}-right`]: align === 'right',\n [`${RC}-justify`]: align === 'justify',\n ...classesObj,\n })}\n >\n {isLink\n ? (\n <a\n {...atributes}\n href={preparedPath}\n target={target ?? '_self'}\n rel=\"noreferrer\"\n >\n {mainInner}\n </a>\n )\n : (\n mainInner\n )}\n </div>\n );\n};\n\nexport default Text;\n", "import type { ITieredCheckboxesProps, ITieredCheckboxItem } from './TieredCheckboxes.interface';\n\nimport cn from 'classnames';\nimport React, { useMemo } from 'react';\n\nimport { compareAlphabetical } from '../../../Functions/utils';\nimport CheckboxInput from '../CheckboxInput/CheckboxInput';\n\nimport AccordionWithCheckbox from './partial/AccordionWithCheckbox';\n\nimport './TieredCheckboxes.scss';\n\nconst RC = 'tiered-checkboxes';\n\nconst TieredCheckboxes: React.FC<ITieredCheckboxesProps> = ({\n items = [],\n className,\n onChange,\n isUseParentsClassesAsDataset,\n isUseAccordionForGroup,\n accordionIcons,\n isOnlyOne = false,\n sortGroups = false,\n sortGroupItems = false,\n labelFor,\n}) => {\n const handle = {\n changeParent: (value: boolean, key: string, prop?: string) => {\n const parent = items.find(item => item.key === key);\n if (!parent) return;\n\n if (prop) {\n (parent as any)[prop] = value;\n }\n else {\n parent.value = value;\n\n if (!prop) {\n if (value) {\n parent.children\n .filter(({ disabled }) => !disabled)\n .forEach(item => (item.value = true));\n }\n else {\n parent.children\n .filter(({ disabled }) => !disabled)\n .forEach(item => (item.value = false));\n }\n }\n }\n onChange([...items]);\n },\n changeChild: (value: boolean, key: string, parentKey: string) => {\n if (isOnlyOne) {\n const parent = items.find(item => item.key === parentKey);\n if (!parent) return;\n\n const child = parent.children.find(item => item.key === key);\n if (child) {\n child.value = value;\n\n parent.children = parent.children.map((item) => {\n if (item.key !== key && value === true) {\n item.disabled = true;\n parent.disabled = true;\n }\n else if (item.key !== key && value === false) {\n item.disabled = false;\n parent.disabled = false;\n }\n else {\n item.disabled = false;\n }\n return item;\n });\n\n parent.disabled = true;\n }\n }\n else {\n const parent = items.find(item => item.key === parentKey);\n if (!parent) return;\n\n const child = parent.children.find(item => item.key === key);\n if (child) {\n child.value = value;\n\n if (parent.children.every(item => item.value)) {\n parent.value = true;\n }\n else {\n parent.value = false;\n }\n }\n }\n\n onChange([...items]);\n },\n isAllChecked: (item: ITieredCheckboxItem) => {\n return (\n item?.children.some(child => child.value)\n && !item?.children.every(child => child.value)\n );\n },\n };\n\n const preparedItems = useMemo(() => {\n let newItems = [...items];\n\n if (sortGroups) {\n newItems = newItems?.sort(compareAlphabetical);\n }\n\n if (sortGroupItems) {\n newItems = newItems?.map((parent) => {\n if (parent?.children) {\n parent.children = parent?.children?.sort(compareAlphabetical);\n }\n\n return parent;\n });\n }\n\n return newItems;\n }, [items, sortGroups, sortGroupItems]);\n\n const renderInner = (parent: ITieredCheckboxItem): JSX.Element | null => {\n return parent.children\n ? (\n <div className={`${RC}__children-wrapper`}>\n {parent.children.map(child => (\n <div key={child.key} className={`${RC}__children`}>\n <CheckboxInput\n id={labelFor ? `${labelFor}_${child.key}` : child.key}\n testId={child.key}\n label={child.label}\n value={child.value}\n disabled={child?.disabled}\n onChange={(value: boolean) =>\n handle.changeChild(value, child.key, parent.key)}\n />\n </div>\n ))}\n </div>\n )\n : null;\n };\n\n return (\n <div className={cn(RC, className)}>\n {preparedItems.map((parent) => {\n const datasetProp\n = isUseParentsClassesAsDataset && parent?.className\n ? { 'data-key': parent?.className }\n : {};\n if (isUseAccordionForGroup) {\n return (\n <AccordionWithCheckbox\n key={parent.key}\n RC={RC}\n parent={parent}\n datasetProp={datasetProp}\n isUseParentsClassesAsDataset={isUseParentsClassesAsDataset}\n className={`${RC}__mono-accordion`}\n setIsOpen={() =>\n handle.changeParent(!parent.isOpen, parent.key, 'isOpen')}\n onChange={(value: boolean) => handle.changeParent(value, parent.key)}\n icon={\n !parent.isOpen\n ? accordionIcons?.[0] || null\n : accordionIcons?.[1] || null\n }\n >\n {renderInner(parent)}\n </AccordionWithCheckbox>\n );\n }\n return (\n <div\n {...datasetProp}\n key={parent.key}\n className={cn(`${RC}__parents`, {\n [`${parent.className}`]: !isUseParentsClassesAsDataset,\n })}\n >\n <CheckboxInput\n id={labelFor ? `${labelFor}_${parent.key}` : parent.key}\n isStark={handle.isAllChecked(parent)}\n label={parent.label}\n value={parent.value}\n onChange={(value: boolean) => handle.changeParent(value, parent.key)}\n disabled={\n parent.children.every(({ disabled }) => disabled === true)\n || parent.disabled\n }\n />\n <div className={cn(`${RC}__parent__children`)}>\n {renderInner(parent)}\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default TieredCheckboxes;\n", "import type { IAccordionWithCheckboxProps } from '../TieredCheckboxes.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\nimport MonoAccordion from '../../../UI/MonoAccordion/MonoAccordion';\n\nimport CheckboxInput from '../../CheckboxInput/CheckboxInput';\n\nimport '../TieredCheckboxes.scss';\n\nconst AccordionWithCheckbox: React.FC<IAccordionWithCheckboxProps> = ({\n children,\n parent,\n onChange,\n className,\n RC,\n setIsOpen,\n icon,\n disabled,\n datasetProp,\n isUseParentsClassesAsDataset,\n}) => {\n return (\n <MonoAccordion\n datasetProp={datasetProp}\n className={cn(className, {\n [`${parent.className}`]: !isUseParentsClassesAsDataset,\n })}\n isOpen={parent.isOpen}\n onClick={setIsOpen}\n icon={icon}\n disabled={disabled}\n // disabled={parent.children?.every?.((child) => child.disabled)}\n titleJSX={(\n <>\n <CheckboxInput\n id={`${parent.key}_checkbox-input`}\n className={`${RC}__checkbox-input`}\n isStark={\n parent?.children?.some?.(item => item.value)\n && !parent?.children?.every?.(item => item.value)\n }\n label={parent.label}\n value={parent.value}\n onChange={onChange}\n disabled={\n parent.children.every(({ disabled }) => disabled === true)\n || parent.disabled\n }\n />\n <span onClick={setIsOpen} className={`${RC}__description-checked`}>\n {parent?.children?.length\n ? `Selected ${parent.children.filter(child => child.value).length} from ${parent.children?.length}`\n : null}\n </span>\n </>\n )}\n >\n {children}\n </MonoAccordion>\n );\n};\n\nexport default AccordionWithCheckbox;\n", "import React, { useEffect, useRef, useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport \"./MonoAccordion.scss\";\n\nconst RC = \"mono-accordion\";\n\nconst MonoAccordion = ({\n titleJSX,\n icon,\n children,\n isOpen,\n onClick,\n className,\n disabled,\n testId = \"mono-accordion\",\n datasetProp = {},\n}) => {\n const [maxHeight, setMaxHeight] = useState();\n const titleRef = useRef();\n const containerRef = useRef();\n\n const setHeight = (value) => {\n if (value !== undefined) setMaxHeight((state) => `${value}px`);\n else\n setMaxHeight(\n (state) =>\n `${Array.from(containerRef.current?.childNodes)?.reduce?.((acc, el) => acc + el.offsetHeight, 0)}px`,\n );\n };\n\n const handleClick = (e) => {\n if (\n !Array.from(titleRef.current.childNodes).some((el) =>\n el.contains(e.target),\n )\n ) {\n onClick(e);\n e?.preventDefault();\n e?.stopPropagation();\n } else return e;\n };\n\n useEffect(() => {\n if (!isOpen) setHeight(0);\n else setHeight();\n }, [isOpen, children]);\n\n return (\n <div\n {...datasetProp}\n data-testid={testId}\n className={cn(RC, className, {\n [`${RC}_is-open`]: isOpen,\n [`${RC}_disabled`]: disabled,\n })}\n >\n <div\n className={`${RC}__head`}\n onClick={handleClick}\n >\n <div ref={titleRef} className={`${RC}__tile-container`}>\n {titleJSX}\n </div>\n <span className={`${RC}__icon-container`}>{icon}</span>\n </div>\n\n <div\n ref={containerRef}\n style={{ maxHeight }}\n className={cn(`${RC}__container`)}\n >\n <div className={`${RC}__content-wrapper`}>{children}</div>\n </div>\n </div>\n );\n};\n\nexport default MonoAccordion;\n", "import type { ITimeRangePops } from './TimeRange.interface';\nimport cn from 'classnames';\nimport moment from 'moment';\n\nimport React, { useMemo, useState } from 'react';\nimport useToggle from '../../../Functions/useToggle';\n\nimport Input from '../Input/Input';\n\nimport Label from '../Label';\n\nimport './TimeRange.scss';\n\nconst CN = 'time-range';\n\nconst TimeRange: React.FC<ITimeRangePops> = ({\n className,\n from = '',\n to = '',\n labelFrom,\n labelTo,\n testId = CN,\n}) => {\n const [startTime, setStartTime] = useState<string>(from);\n const [endTime, setEndTime] = useState<string>(to);\n\n const { isToggled: isStartTimeValidate } = useToggle();\n const { isToggled: isEndTimeValidate } = useToggle();\n\n const isStartTimeValid = useMemo(() => moment(startTime, 'HH:mm', true).isValid(), [startTime]);\n const isEndTimeValid = useMemo(() => moment(endTime, 'HH:mm', true).isValid(), [endTime]);\n\n const blurTimeHandler = (time: string, setFunc: (value: string) => void): void => {\n const formattedTime = time ? moment(time, 'HH:mm').format('HH:mm') : '';\n setFunc(formattedTime);\n };\n\n return (\n <div data-testid={testId} className={cn(CN, className)}>\n <div className=\"time-range__range\">\n <Label label={labelFrom || 'Between'} />\n <Input\n // @ts-ignore - \u0438\u043D\u043F\u0443\u0442 \u043F\u043E\u043A\u0430 .js\n // ANCHOR - \u043F\u043E\u043A\u0430 .js\n className=\"time-range__input\"\n value={startTime}\n onChange={(value: string) => setStartTime(value)}\n placeholder=\"00:00\"\n onBlur={() => blurTimeHandler(startTime, setStartTime)}\n error={isStartTimeValidate || !isStartTimeValid ? 'HH:MM format' : ''}\n testId=\"start-time-input\"\n />\n\n <Label label={labelTo || 'and'} />\n <Input\n // @ts-ignore - \u0438\u043D\u043F\u0443\u0442 \u043F\u043E\u043A\u0430 .js\n // ANCHOR - \u043F\u043E\u043A\u0430 .js\n className=\"time-range__input\"\n value={endTime}\n onChange={(value: string) => setEndTime(value)}\n placeholder=\"00:00\"\n onBlur={() => blurTimeHandler(endTime, setEndTime)}\n error={isEndTimeValidate || !isEndTimeValid ? 'HH:MM format' : ''}\n testId=\"end-time-input\"\n />\n </div>\n </div>\n );\n};\n\nexport default TimeRange;\n", "import { useCallback, useState } from \"react\";\n\nconst useToggle = (initialState) => {\n const [isToggled, setToggle] = useState(Boolean(initialState));\n const toggle = useCallback(() => setToggle((isOn) => !isOn), []);\n const toggleOn = useCallback(() => setToggle(true), []);\n const toggleOff = useCallback(() => setToggle(false), []);\n\n return {\n isToggled,\n toggle,\n toggleOn,\n toggleOff,\n };\n};\n\nexport default useToggle;\n", "import TimeRange from './TimeRange';\n\nexport default TimeRange;\nexport type { ITimeRangePops } from './TimeRange.interface';\n", "import type { ReactNode } from 'react';\nimport type {\n IUserContactProps,\n TContactPrefix,\n TMainContactsDescriptions,\n} from './UserContacts.interface';\nimport cn from 'classnames';\n\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { Email, Phone } from '../../../Molecular/CustomIcons';\n\nimport './UserContacts.scss';\n\nconst RC = 'user-contacts';\n\nconst UserContacts: React.FC<IUserContactProps> = (props) => {\n const {\n testId = RC,\n className,\n email,\n phone,\n EmailIcon,\n PhoneIcon,\n isFirstPhone = false,\n maxWidth,\n isUseCommaSeparator = true,\n generalizingWord = 'contact',\n isNotRenderGeneralizingWord = false,\n Lng = (value: string): string => value,\n otherContacts = [],\n isOtherTogetherMainContacts = false,\n ...mainContacts\n } = props || {};\n\n const mainContactsDescriptions: TMainContactsDescriptions = {\n isDisputeContact: 'Dispute',\n isSalesContact: 'Sales',\n isAccountingContact: 'Accounting',\n isBusinessContact: 'Business',\n isTechnicalContact: 'Technical',\n };\n\n const getContact = (key: keyof TMainContactsDescriptions): string => {\n const contact = mainContacts[key] as TContactPrefix | boolean | undefined;\n const { prefix = '', postfix = '' } = typeof contact === 'object' ? contact : {};\n\n return `${prefix ? `${Lng(prefix.toString())} ` : ''}${Lng(mainContactsDescriptions[key])}${\n postfix ? ` ${Lng(postfix.toString())}` : ''\n }`;\n };\n\n let mainContactsStructure: string[] = (\n Object.keys(mainContacts) as Array<keyof TMainContactsDescriptions>\n ).reduce(\n (acc: string[], key) =>\n mainContacts[key] && key in mainContactsDescriptions ? [...acc, getContact(key)] : acc,\n [],\n );\n\n mainContactsStructure = isOtherTogetherMainContacts\n ? [\n ...mainContactsStructure,\n ...(Array.isArray(otherContacts) ? otherContacts.map((contact: string) => Lng(contact)) : []),\n ]\n : mainContactsStructure;\n\n let mainContactsCount = mainContactsStructure.length;\n let otherContactsCount = otherContacts?.length || 0;\n const isContacts = Boolean(mainContactsCount) || Boolean(otherContactsCount);\n const isMainContacts = Boolean(mainContactsCount);\n\n const mainRef = useRef<HTMLDivElement>(null);\n const firstRef = useRef<HTMLAnchorElement>(null);\n const secondRef = useRef<HTMLAnchorElement>(null);\n const contactsRef = useRef<HTMLSpanElement>(null);\n\n const [isIconMode, setIconMode] = useState<boolean>(false);\n const [isRunTask, setIsRunTask] = useState<Record<string, never> | null>(null);\n\n const getSeparator = (type?: 'main' | 'other'): string => {\n const separator = isUseCommaSeparator ? ', ' : ' ';\n switch (type) {\n case 'main':\n return mainContactsCount-- > 1 ? separator : '';\n case 'other':\n return otherContactsCount-- > 1 ? separator : '';\n default:\n return separator;\n }\n };\n\n type ContactKey = 'email' | 'phone';\n\n const firstKey: ContactKey = isFirstPhone ? 'phone' : 'email';\n const secondKey: ContactKey = isFirstPhone ? 'email' : 'phone';\n\n const getIcon = (key: ContactKey): ReactNode => {\n switch (key) {\n case 'email':\n return EmailIcon || <Email />;\n case 'phone':\n return PhoneIcon || <Phone />;\n default:\n return null;\n }\n };\n\n const getProtocol = (key: ContactKey): string => {\n switch (key) {\n case 'email':\n return 'mailto:';\n case 'phone':\n return 'tel:';\n default:\n return 'https://';\n }\n };\n\n const getClasses = (isFirst: boolean): string =>\n cn('no-wrap', `${RC}__${isFirst ? firstKey : secondKey}`, {\n [`${RC}__${isFirst ? firstKey : secondKey}_icon-mode`]: isIconMode,\n });\n\n const checkWidth = (): void => {\n if (mainRef.current && firstRef.current && secondRef.current && contactsRef.current) {\n const measure: number = maxWidth || mainRef.current.clientWidth;\n\n if (\n firstRef.current.clientWidth + secondRef.current.clientWidth + contactsRef.current.clientWidth\n > measure\n ) {\n setIconMode(true);\n }\n else {\n setIconMode(false);\n }\n }\n };\n\n useLayoutEffect(checkWidth, [isRunTask]);\n\n useEffect(() => {\n setIsRunTask({});\n return () => setIconMode(false);\n }, [email, phone, JSON.stringify(mainContactsStructure), Number(maxWidth)]);\n\n return (\n <div data-testid={testId} ref={mainRef} className={cn('j4', RC, className)}>\n {Boolean(props[firstKey]) && (\n <a\n ref={firstRef}\n href={`${getProtocol(firstKey)}${props[firstKey]?.trim()}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={getClasses(true)}\n >\n {isIconMode\n ? getIcon(firstKey)\n : `${props[firstKey]}${props[secondKey] || isContacts ? getSeparator() : ''}`}\n </a>\n )}\n {Boolean(props[secondKey]) && (\n <a\n ref={secondRef}\n href={`${getProtocol(secondKey)}${props[secondKey]?.trim()}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={getClasses(false)}\n >\n {isIconMode ? getIcon(secondKey) : `${props[secondKey]}${isContacts ? getSeparator() : ''}`}\n </a>\n )}\n\n {isContacts && (\n <span ref={contactsRef} className={cn('no-wrap', `${RC}__contacts`)}>\n {isMainContacts\n ? mainContactsStructure.map((contact: string) => `${contact}${getSeparator('main')}`)\n : null}\n {isMainContacts && generalizingWord && !isNotRenderGeneralizingWord\n ? ` ${Lng(generalizingWord)}`\n : ''}\n {isMainContacts\n && Boolean(otherContacts)\n && Boolean(otherContacts?.length)\n && !isOtherTogetherMainContacts\n ? getSeparator()\n : ''}\n {Boolean(otherContacts) && Boolean(otherContacts?.length) && !isOtherTogetherMainContacts\n ? otherContacts?.map?.((contact: string) => `${contact}${getSeparator('other')}`)\n : null}\n </span>\n )}\n </div>\n );\n};\n\nexport default UserContacts;\n", "import UserContacts from './UserContacts';\n\nexport default UserContacts;\nexport type { IUserContactProps, TContactPrefix } from './UserContacts.interface';\n", "import React, { useEffect, useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport { compare } from \"../../../Functions/utils\";\n\nimport VariantsListRadioItem from \"./partials/VariantsListRadioItem\";\n\nimport \"./VariantsListRadio.scss\";\n\nconst RC = \"variants-list-radio\";\n\nconst VariantsListRadio = ({\n items: outerItems,\n value: outerValue,\n onChange = () => {},\n\n isWithBorders,\n itemsContentRenderMode,\n isRadioPositionReverse,\n isUseAsOptionsList,\n disabled,\n isDisabled,\n\n id,\n className,\n testId = \"variants-list-radio\",\n\n attributesOfNativeInput,\n isMixWithPersonalAttributes,\n}) => {\n const [items, setItems] = useState(outerItems);\n const [value, setValue] = useState(outerValue);\n\n const componentnId = id || \"variantsListRadio\";\n const mode = itemsContentRenderMode === \"col\" ? \"col\" : \"row\";\n const isElementDisabled = disabled || isDisabled;\n\n const handleChange = (newValue) => {\n setValue(newValue);\n onChange(newValue);\n };\n\n useEffect(() => {\n if (!compare(outerItems, items)) setItems(outerItems);\n }, [outerItems]);\n\n useEffect(() => {\n if (value !== outerValue) setValue(outerValue);\n }, [outerValue]);\n\n return (\n <div\n id={componentnId}\n data-testid={testId}\n className={cn(RC, `${RC}_items-content-${mode}`, className, {\n [`${RC}_with-borders`]: isWithBorders && !isUseAsOptionsList,\n [`${RC}_radio-position-reverse`]: isRadioPositionReverse,\n })}\n >\n {items.map((item) => (\n <VariantsListRadioItem\n key={`variants-list-radio-id-${componentnId}-item-id-${item.value}`}\n RC={RC}\n parentId={componentnId}\n item={{\n ...item,\n isDisabled:\n item.disabled || item.isDisabled || isElementDisabled || false,\n }}\n value={value}\n onChange={handleChange}\n attributesOfNativeInput={attributesOfNativeInput}\n isMixWithPersonalAttributes={isMixWithPersonalAttributes}\n parentDisabled={disabled}\n isUseAsOptionsList={isUseAsOptionsList}\n />\n ))}\n </div>\n );\n};\n\nexport default VariantsListRadio;\n", "import React from \"react\";\n\nimport cn from \"classnames\";\n\nimport { getIsOnlyAnObject } from \"../../../../Functions/utils\";\n\nconst VariantsListRadioItem = ({\n RC,\n parentId,\n item,\n value: actualValue,\n onChange = () => {},\n\n attributesOfNativeInput = {},\n isMixWithPersonalAttributes,\n\n isUseAsOptionsList,\n testId = \"variants-list-radio-item\",\n}) => {\n // ? \u0414\u043B\u044F \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u044B \u043D\u0443\u0436\u043D\u044B parentId \u0438 item(\u043E\u0431\u044A\u0435\u043A\u0442)\n if (!parentId || !getIsOnlyAnObject(item)) return null;\n\n const {\n value,\n label,\n description,\n isDisabled,\n attributesOfNativeInput: personalAttributesOfNativeInput,\n } = item;\n const id = `${parentId.toString()}--item-${value}`;\n const name = parentId.toString();\n const isActive = actualValue === value;\n const addAtributesObj = isMixWithPersonalAttributes\n ? { ...attributesOfNativeInput, ...personalAttributesOfNativeInput }\n : personalAttributesOfNativeInput || attributesOfNativeInput || {};\n\n return (\n <label\n data-testid={testId}\n className={cn(`${RC}__item`, {\n [`${RC}__item_disabled`]: isDisabled,\n [`${RC}__item_active`]: isActive,\n [`${RC}__item_as-option`]: isUseAsOptionsList,\n })}\n htmlFor={id}\n >\n <div className={cn(`${RC}__item-radio-container`)}>\n <div className={cn(`${RC}__item-radio`)}>\n <input\n id={id}\n data-testid={`${testId}-input`}\n type=\"radio\"\n checked={isActive}\n className={`${RC}__item-radio-input`}\n onChange={() => onChange(value)}\n name={name}\n disabled={isDisabled}\n {...addAtributesObj}\n />\n <div className={`${RC}__item-radio-mark`}></div>\n </div>\n </div>\n\n <div className={cn(`${RC}__item-content`)}>\n {label && (\n <div className={cn(`${RC}__item-content-wrapper`)}>\n <div className={cn(`${RC}__item-content-label`)}>{label}</div>\n </div>\n )}\n {description && !isUseAsOptionsList && (\n <div className={cn(`${RC}__item-content-wrapper`)}>\n <div className={cn(`${RC}__item-content-description`)}>\n {description}\n </div>\n </div>\n )}\n </div>\n </label>\n );\n};\n\nexport default VariantsListRadioItem;\n", "import React from \"react\";\n\nimport cn from \"classnames\";\n\nimport \"./WidgetPseudoTable.scss\";\n\nconst RC = \"widget-pseudo-table\";\n\nconst WidgetPseudoTable = (props) => {\n const {\n className,\n title,\n rightHeaderContent,\n nullContentData,\n isNotRenderThead = false,\n isNoHeader = false,\n columns = [],\n rows,\n CellComponent,\n CellComponentProps,\n onChange,\n } = props || {};\n\n return (\n <div className={cn(RC, className)}>\n {!isNoHeader && <div className={cn(`${RC}__header`)}>\n <div className={cn(`${RC}__title-block`)}>{title}</div>\n <div className={cn(`${RC}__right-header-content-block`)}>\n {rightHeaderContent}\n </div>\n </div>}\n <div\n className={cn(`${RC}__body`, {\n [`${RC}__body_no-content`]: !rows?.length,\n })}\n >\n {Boolean(rows?.length) && !isNotRenderThead && (\n <div className={cn(`${RC}__thead`)}>\n {columns.map((field) => (\n <div\n key={`thead-${field.key}`}\n className={cn(\n `${RC}__thead-cell`,\n field.theadCellClassName,\n field.columnClassName,\n {\n [`${RC}__thead-cell_reqiured`]: field.isRequired,\n },\n )}\n data-key={field.key}\n >\n {field.label}\n </div>\n ))}\n </div>\n )}\n\n <div className={cn(`${RC}__table`)}>\n {rows?.length ? (\n rows.map((row) => (\n <div\n key={`row-${row.id}`}\n className={cn(`${RC}__row`)}\n data-id={row.id}\n >\n {columns.map((cell) => (\n <div\n key={`row-${row.id}-cell-${cell.key}`}\n className={cn(\n `${RC}__cell`,\n cell.cellClassName,\n cell.columnClassName,\n )}\n >\n <CellComponent\n {...CellComponentProps}\n field={{\n ...cell,\n value: row[cell.key],\n rowData: row,\n }}\n onChange={(key, val) => onChange(val, cell.key, row.id)}\n />\n </div>\n ))}\n </div>\n ))\n ) : (\n <div className={cn(`${RC}__row`)} data-id=\"empty-row\">\n <span className={cn(`${RC}__no-data-content`)}>\n {nullContentData ?? \"No data\"}\n </span>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default WidgetPseudoTable;\n", "import React from \"react\";\n\nimport cn from \"classnames\";\n\nimport \"./WidgetWithSwitchableRows.scss\";\n\nconst RC = \"widget-with-switchable-rows\";\n\nconst WidgetWithSwitchableRows = (props) => {\n const {\n className,\n title,\n rightHeaderContent,\n nullContentData,\n\n columns = [],\n rows,\n CellComponent,\n CellComponentProps,\n onChange,\n isNoHeader = false,\n } = props || {};\n\n const preperedColumns = [\n { ...columns[0], key: \"isActive\", type: \"switcher\" },\n ...columns.slice(1),\n ];\n\n return (\n <div className={cn(RC, className)}>\n {!isNoHeader && <div className={cn(`${RC}__header`)}>\n <div className={cn(`${RC}__title-block`)}>{title}</div>\n <div className={cn(`${RC}__right-header-content-block`)}>\n {rightHeaderContent}\n </div>\n </div>}\n <div\n className={cn(`${RC}__body`, {\n [`${RC}__body_no-content`]: !rows?.length,\n })}\n >\n {Boolean(rows?.length) && (\n <div className={cn(`${RC}__thead`)}>\n {preperedColumns.map((field) => (\n <div\n key={`thead-${field.key}`}\n className={cn(\n `${RC}__thead-cell`,\n field.theadCellClassName,\n field.columnClassName,\n {\n [`${RC}__thead-cell_reqiured`]: field.isRequired,\n },\n )}\n data-key={field.key}\n >\n {field.label}\n </div>\n ))}\n </div>\n )}\n\n <div className={cn(`${RC}__table`)}>\n {rows?.length ? (\n rows.map((row) => (\n <div\n key={`row-${row.id}`}\n className={cn(`${RC}__row`)}\n data-id={row.id}\n >\n {preperedColumns.map((cell) => (\n <div\n key={`row-${row.id}-cell-${cell.key}`}\n className={cn(\n `${RC}__cell`,\n cell.cellClassName,\n cell.columnClassName,\n )}\n >\n <CellComponent\n {...CellComponentProps}\n field={{\n ...cell,\n value: row[cell.key],\n rowData: row,\n ...(cell.key === \"isActive\"\n ? {\n disabled: cell.disabled,\n label: row.label,\n isActive: row.isActive,\n }\n : { disabled: !row.isActive, label: cell.label }),\n }}\n onChange={(key, value, propName, innerFieldKey, additional) => onChange({value, additional, propName, innerFieldKey, key: cell.key || key, rowId: row.id })}\n />\n </div>\n ))}\n </div>\n ))\n ) : (\n <div className={cn(`${RC}__row`)} data-id=\"empty-row\">\n <span className={cn(`${RC}__no-data-content`)}>\n {nullContentData ?? \"No data\"}\n </span>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default WidgetWithSwitchableRows;\n", "// global\nimport React, { useEffect, useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport useFormFieldsChangesManager from \"../../Functions/hooks/useFormFieldsChangesManager\";\nimport { clone, getIsOnlyAnObject } from \"../../Functions/utils\";\n\n// local functions\nimport { getDependOnStarter } from \"./partials/_utils\";\n\nconst RC = \"form-with-depend-on\";\n\nconst FormWithDependOn = React.forwardRef(\n (\n {\n form,\n formId,\n setForm,\n\n //! \u0420\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u044E \u041D\u0415 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C, \u043F\u043E\u043A\u0430 \u0447\u0442\u043E \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043F\u043B\u043E\u0445\u043E\n //? \u041F\u043E \u0437\u0430\u0434\u0443\u043C\u043A\u0435 \u0432\u0432\u043E\u0434\u0438\u043B\u0430\u0441\u044C \u0434\u043B\u044F \u043A\u043E\u0440\u0440\u0435\u043A\u0446\u0438\u0438 \u0444\u043E\u0440\u043C\u044B \u043F\u0440\u0438 \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u044B\u0445 \u043F\u043E\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u044F\u0445\n // todo(VL) - \u043A\u0430\u043A-\u043D\u0438\u0431\u0443\u0434\u044C \u043F\u043E\u043F\u0440\u043E\u0431\u043E\u0432\u0430\u0442\u044C \u0434\u043E\u043F\u0438\u043B\u0438\u0442\u044C\n getActualForm: getActualFormOuter,\n\n onChange,\n renderField,\n\n getAnotherActions,\n\n className,\n isInitializeByDependOn,\n isFormDisabled,\n typeOfUse = \"default\",\n },\n ref,\n ) => {\n // ? \u041F\u0440\u0438\u0445\u0440\u0430\u043D\u0438\u0432\u0430\u0435\u043C \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u0444\u043E\u0440\u043C\u044B \u043D\u0430 \u043C\u043E\u043C\u0435\u043D\u0442 \u0432\u0445\u043E\u0434\u0430\n const [initialForm] = useState(clone(form));\n\n const safelySetForm = typeof setForm === \"function\" ? setForm : () => {};\n const safelyOnChange = typeof onChange === \"function\" ? onChange : () => {};\n\n const getActualForm = typeof getActualFormOuter === \"function\" ? getActualFormOuter : () => form;\n\n const { assignChangesToField } = useFormFieldsChangesManager({\n form: Array.isArray(form) ? form : [],\n setForm: safelySetForm,\n });\n\n const assign = assignChangesToField;\n\n // ***** handlers *****\n\n const anotherActions = typeof getAnotherActions === \"function\"\n ? getAnotherActions({ setForm, assign, getActualForm })\n : {};\n\n const getMainOfAdditional = (onChange, additionalOfOnChange) => ({\n formId,\n actions: anotherActions,\n isInit: true,\n ...(getIsOnlyAnObject(additionalOfOnChange) ? additionalOfOnChange : {}),\n onChange,\n setForm: safelySetForm,\n assign,\n getActualForm,\n initialForm,\n typeOfUse,\n });\n\n const startDependOn = getDependOnStarter({ assign, getActualForm });\n\n // ? \u041C\u0435\u0441\u0442\u043D\u044B\u0439 handleChange \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 \u043B\u043E\u0433\u0438\u043A\u0443 dependOn \u043A \u0432\u0435\u0440\u0445\u043D\u0435\u043C\u0443 onChange,\n // ? \u0430 \u0442\u0430\u043A \u0436\u0435 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u043F\u0440\u043E\u0447\u0438\u0435 \u044D\u043A\u0448\u0435\u043D\u044B, \u0438\u0437 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u043C\u0435\u0442\u043E\u0434\u043E\u0432, \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043C\u044B\u043C getAnotherActions\n const handleChange = (\n newValue,\n fieldKey,\n propKey,\n additionalOfOnChange,\n ) => {\n const {\n updatedForm = null,\n isMakeChangesAnyway = false,\n isUseActualForm = false,\n } = getIsOnlyAnObject(additionalOfOnChange) ? additionalOfOnChange : {};\n\n const currentForm = clone(\n (() => {\n if (isUseActualForm) return getActualForm();\n return Array.isArray(updatedForm) ? updatedForm : form;\n })(),\n );\n\n const currField = clone(currentForm.find(field => field.key === fieldKey));\n\n // ? \u0417\u0430\u0449\u0438\u0442\u0430 \u043E\u0442 \u0434\u0443\u0431\u043B\u0438\u0440\u0443\u044E\u0449\u0438\u0445 \u0432\u044B\u0437\u043E\u0432\u043E\u0432 onChange \u0441\u043D\u0438\u0437\u0443\n // ? \"\u0415\u0441\u043B\u0438 newValue \u0442\u0430\u043A\u043E\u0435 \u0436\u0435 \u043A\u0430\u043A \u0443\u0436\u0435 \u0435\u0441\u0442\u044C \u0438 \u043D\u0435\u0442 \u0444\u043B\u0430\u0433\u0430 \"\u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0432\u0441\u0435\u0433\u0434\u0430\"\"\n // ! (*) - \u0412\u0430\u0436\u043D\u043E !\n // ! \u041E\u0442\u043A\u043B\u044E\u0447\u0430\u0439\u0442\u0435 \u043F\u0440\u044F\u043C\u0443\u044E \u043C\u0443\u0442\u0430\u0446\u0438\u044E \u043D\u0430 \u0443\u0440\u043E\u0432\u043D\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u043D\u043E\u0433\u043E FormItem (\u0432 \u043A\u0430\u0436\u0434\u043E\u043C \u0444\u0438\u043B\u0434\u0435 \u0443\u043A\u0430\u0437\u0430\u0442\u044C isNotUseInnerHandler: true)\n // ! \u0442.\u043A. \u0442\u043E\u0442 \u0445\u0435\u043D\u0434\u043B\u0435\u0440 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0442\u0441\u044F \u0440\u0430\u043D\u044C\u0448\u0435 \u0438 \u0441\u044E\u0434\u0430 \u0444\u0438\u043B\u0434 \u0434\u043E\u0445\u043E\u0434\u0438\u0442 \u0441 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u043C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C,\n // ! \u0430 \u0437\u043D\u0430\u0447\u0438\u0442 \u043D\u0435 \u043F\u0440\u043E\u0439\u0434\u0435\u0442 \u044D\u0442\u0443 if-\u043A\u0443\n if (currField[propKey || \"value\"] === newValue && !isMakeChangesAnyway) return;\n\n // ? \u0421\u0440\u0430\u0437\u0443 \u0436\u0435 \u043C\u0443\u0442\u0438\u0440\u0443\u0435\u043C\n safelyOnChange(newValue, fieldKey, propKey, { ...additionalOfOnChange, updatedForm: currentForm });\n\n // ? \u041C\u0435\u0445\u0430\u043D\u0438\u043A\u0430 dependOn (\u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0435\u0439)\n // ? \u0412 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438 \u043E\u0442\u0434\u0435\u043B\u0438\u043B \u043E\u0442 \u044D\u043A\u0448\u0435\u043D\u0430 all.\n\n startDependOn({\n newValue,\n fieldKey,\n propKey,\n field: currField,\n form: currentForm,\n additional: getMainOfAdditional(handleChange, additionalOfOnChange),\n });\n\n // ? \u0415\u0441\u043B\u0438 \u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u0435 \u043C\u0435\u0442\u043E\u0434\u043E\u0432 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043C\u043E\u043C getAnotherActions \u0435\u0441\u0442\u044C \u043C\u0435\u0442\u043E\u0434 all, \u0442\u043E \u043E\u043D \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442\u0441\u044F \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\n if (typeof anotherActions.all === \"function\") {\n anotherActions.all({\n newValue,\n fieldKey,\n propKey,\n field: currField,\n form: currentForm,\n additional: getMainOfAdditional(handleChange, additionalOfOnChange),\n });\n }\n\n if (fieldKey in anotherActions && typeof anotherActions[fieldKey] === \"function\") {\n const postChanges = anotherActions[fieldKey]({\n newValue,\n fieldKey,\n propKey,\n field: currField,\n form: currentForm,\n additional: getMainOfAdditional(handleChange, additionalOfOnChange),\n });\n\n if (postChanges) assign(postChanges, fieldKey);\n }\n };\n\n // ***** useEffects *****\n\n useEffect(() => {\n if (isInitializeByDependOn && typeof setForm === \"function\" && typeof onChange === \"function\")\n form.forEach(field => {\n startDependOn({\n newValue: field.value,\n fieldKey: field.key,\n field,\n form,\n additional: {\n ...getMainOfAdditional(handleChange),\n isInitialization: true,\n isInit: false,\n },\n });\n });\n }, [isInitializeByDependOn]);\n\n // ***** output *****\n return (\n <div {...(formId ? { id: formId } : {})} className={cn(RC, className)}>\n {typeof renderField === \"function\"\n ? form.map(field =>\n renderField({\n ...getMainOfAdditional(handleChange),\n field: {\n ...field,\n disabled: Boolean(isFormDisabled || field.disabled),\n },\n }),\n )\n : null}\n </div>\n );\n },\n);\n\nexport default FormWithDependOn;\n", "import React, { useEffect, useState } from 'react';\nimport { getIsOnlyAnObject, clone } from '../utils';\n\nconst timeouts = { timeoutId: null };\nconst formChanges = [];\nconst DELAY_TIME = 1;\n\n// ? validateField - \u0434\u043E\u043B\u0436\u0435\u043D \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044C \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0443 { field, isValid }\nfunction useFormFieldsChangesManager({ form, setForm, callback, validateField, settings }) {\n const { isNotSetForm, isUseValidation = false } = settings || {};\n\n //? \u041F\u0440\u043E\u0431\u043E\u0432\u0430\u043B \u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043F\u0440\u043E\u0441\u0442\u043E useEffect \u043F\u043E formChangesRef.current,\n //? \u043D\u043E \u043F\u043E \u043A\u0430\u043A\u043E\u0439-\u0442\u043E \u043F\u0440\u0438\u0447\u0438\u043D\u0435 \u043F\u043E\u0441\u043B\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0438 \u0440\u0435\u0444\u043A\u0438 \u043D\u0435 \u0437\u0430\u0445\u043E\u0434\u0438\u043B\u043E \u0432 useEffect.\n //? \u041E\u0434\u043D\u0430\u043A\u043E \u0435\u0441\u043B\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u043B useEffect \u043F\u043E \u043A\u0430\u043A\u043E\u0439-\u043D\u0438\u0431\u0443\u0434\u044C \u0434\u0440\u0443\u0433\u043E\u0439 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439,\n //? \u0442\u043E \u0438 \u0432 useEffect \u043F\u043E formChangesRef.current \u0442\u043E\u0436\u0435 \u0437\u0430\u0445\u043E\u0434\u0438\u043B\u043E.\n //? \u041F\u043E\u044D\u0442\u043E\u043C\u0443 \u0442\u0443\u0442 \u043D\u0443\u0436\u0435\u043D \u044D\u0442\u043E\u0442 \u0441\u0442\u0435\u0439\u0442,\n //? \u0445\u043E\u0442\u044F \u043F\u043E \u0438\u0442\u043E\u0433\u0443 \u0432 \u043A\u043E\u043D\u0435\u0447\u043D\u043E\u0439 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u043D\u0438\u043C \u0434\u0430\u0436\u0435 \u043D\u0435\u043F\u043B\u043E\u0445\u043E \u043F\u043E\u043B\u0443\u0447\u0438\u043B\u043E\u0441\u044C (\u043D\u043E \u0432\u043E\u043E\u0431\u0449\u0435 \u043E\u0447\u0435\u043D\u044C \u0441\u0442\u0440\u0430\u043D\u043D\u0430\u044F \u0435\u0440\u0443\u043D\u0434\u0430...)\n const [isFormMustBeChanget, setIsFormMustBeChanget] = useState(false);\n const startChangesProcessing = () => {\n // ? \u0421 \u0443\u0447\u0435\u0442\u043E\u043C \u0442\u043E\u0433\u043E \u0447\u0442\u043E changeForm \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u0430\u044F, \u0442\u043E \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u0430\u0435\u043C \u043F\u043E\u043F\u044B\u0442\u043A\u0438 \u0438\u0437-\u0432\u043D\u0435 \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0444\u043B\u0430\u0433 \u0435\u0441\u043B\u0438 \u0444\u043B\u0430\u0433 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\n if (isFormMustBeChanget) return;\n // ? \u041D\u0443 \u0438 \u043F\u043E \u0441\u0443\u0442\u0438 - \u0432\u044B\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u0430\u043F\u0440\u0438\u043E\u0440\u0438 \u043D\u0435 \u0434\u0430\u0435\u043C, \u0442\u043E\u043B\u044C\u043A\u043E \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u044C.\n setIsFormMustBeChanget(true);\n };\n\n //? \u0424-\u044F \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0444-\u0435\u0439 - \u043F\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0449\u0438\u043A\u043E\u043C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u0444\u043E\u0440\u043C\u044B \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u044C.\n //? \u0424-\u044F \u043F\u043E\u043B\u0443\u0447\u0430\u0435\u0442\u0441\u044F \u0441\u0430\u043C\u043E\u0432\u044B\u0437\u044B\u0432\u0430\u044E\u0449\u0438\u043C\u0441\u044F \u0433\u0435\u0442\u0442\u0435\u0440\u043E\u043C.\n //? C\u0443\u0442\u044C \u0444-\u0438\u0438:\n //? \u0414\u043B\u044F \u0442\u043E\u0433\u043E \u0447\u0442\u043E\u0431 \u043D\u0435 \u0441\u043F\u0430\u043C\u0438\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\u043C\u0438, \u0435\u0441\u043B\u0438 \u0438\u0445 \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u0435\u0442\u0441\u044F \u043C\u043D\u043E\u0433\u043E \u0432 \u0440\u0430\u043C\u043A\u0430\u0445 \u043E\u0434\u043D\u043E\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438,\n //? \u0438\u043F\u043E\u043B\u044C\u0437\u0443\u044E \u043F\u0440\u0438\u0435\u043C \u0441 \u043F\u0435\u0440\u0435\u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C setTimeout\n\n //? \u0427\u0442\u043E\u0431\u044B \u043F\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435 \u0441\u043F\u0440\u043E\u0432\u0430\u0446\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0440\u0430\u0431\u043E\u0442\u043A\u0443 useEffect\n //? \u043F\u043E \u0441\u0442\u0435\u0439\u0442\u0443 \u0444\u0438\u043A\u0441\u0438\u0440\u0443\u044E\u0449\u0435\u043C\u0443 \"\u043E\u0442\u043C\u0430\u0448\u043A\u0443\" \u043A \u043D\u0430\u0447\u0430\u043B\u0443 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 (isFormMustBeChanget)\n //? \u043E\u0442\u043A\u043B\u0430\u0434\u044B\u0432\u0430\u044E \u043F\u0435\u0440\u0435\u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044D\u0442\u043E\u0433\u043E \u0441\u0442\u0435\u0439\u0442\u0430 \u0434\u043E \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u043D\u0435\u043F\u0440\u0435\u0440\u044B\u0432\u043D\u044B\u0445 \u0432\u044B\u0437\u043E\u0432\u043E\u0432 assignChangesToField,\n //? \u043D\u043E \u043F\u0440\u0438 \u044D\u0442\u043E\u043C \u043F\u0440\u0438 \u043A\u0430\u0436\u0434\u043E\u043C \u0435\u0435 \u0432\u044B\u0437\u043E\u0432\u0435 \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0430\u044E \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0432 \u043C\u0430\u0441\u0441\u0438\u0432\n const assignChangesToField = (() => {\n // ? data - \u043E\u0431\u044A\u0435\u043A\u0442 \u0441 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\u043C\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043F\u043E\u0437\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D \u0432 \u0444\u0438\u043B\u0434\n // ? upd: \u0442\u0435\u043F\u0435\u0440\u044C data \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u0430 \u043A\u0430\u043A \u0440\u0435\u0434\u044C\u044E\u0441\u0435\u0440, \u0442\u0430\u043A \u0436\u0435 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D 3-\u0439 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442 - settings\n\n // todo(vl) - upd: \u0432\u0432\u0435\u043B \u0434\u043B\u044F \u0430\u0441\u0430\u0439\u043D\u0435\u0440\u0430 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u043F\u0440\u043E\u043A\u0438\u0434\u044B\u0432\u0430\u0442\u044C settings \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u043E\u0442\u043B\u043E\u0436\u0435\u043D\u043D\u043E\u0433\u043E \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F,\n // todo(vl) - \u043D\u043E \u043F\u043E\u043A\u0430 \u0447\u0442\u043E \u043D\u0438\u043A\u0430\u043A \u043D\u0435 \u043E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442\u0441\u044F, \u0432\u0432\u0435\u043B \u0434\u043B\u044F \u0440\u0430\u0441\u0448\u0438\u0440\u044F\u0435\u043C\u043E\u0441\u0442\u0438 \u0444-\u043B\u0430\n return (data, key, settings) => {\n clearTimeout(timeouts.timeoutId);\n\n // ? \u041F\u0440\u043E\u043F\u0443\u0441\u043A\u0430\u0435\u043C \"\u043F\u0443\u0441\u0442\u044B\u0435\"/\u043D\u0435\u0444\u043E\u0440\u043C\u0430\u0442\u043D\u044B\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\n // todo(vl) - \u043F\u043E\u0434\u0443\u043C\u0430\u0442\u044C \u043D\u0443\u0436\u043D\u0430 \u043B\u0438 \u043F\u0440\u043E\u043C\u0438\u0441\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u043D\u0430 \u044D\u0442\u043E\u043C \u0443\u0440\u043E\u0432\u043D\u0435 (\u043F\u043E\u043A\u0430 \u0434\u0443\u043C\u0430\u044E \u0447\u0442\u043E \u043D\u0435\u0442)\n if (getIsOnlyAnObject(data) || typeof data === 'function') {\n formChanges.push({ key, data, settings });\n }\n\n setIsFormMustBeChanget(false);\n timeouts.timeoutId = setTimeout(() => setIsFormMustBeChanget(true), DELAY_TIME);\n\n // ? \u0412\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043C \u043D\u0430 \u043C\u0435\u0441\u0442\u043E \u0432\u044B\u0437\u043E\u0432\u0430 \u043A\u043B\u043E\u043D \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u043E\u0433\u043E \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439:\n // ? - \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u043E\u043B\u0435\u0437\u043D\u043E \u0434\u043B\u044F \u0430\u043D\u0430\u043B\u0438\u0437\u0430\n // ? - \u043D\u043E \u041D\u0415 \u0434\u0430\u0435\u043C \u0432\u043C\u0435\u0448\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u0432\u043E \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044E\u044E \u0440\u0430\u0431\u043E\u0442\u0443 \u0445\u0443\u043A\u0430 (\u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043A\u043B\u043E\u043D)\n return clone(formChanges);\n };\n })();\n\n const addChangesToField = (field, data, currentForm, currentChangesSettings) => {\n // todo(vl) - \u043F\u043E\u0434\u0443\u043C\u0430\u0442\u044C\n // todo(vl) - - \u043D\u0443\u0436\u043D\u0430 \u043B\u0438 \u043F\u0440\u043E\u043C\u0438\u0441\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u043D\u0430 \u044D\u0442\u043E\u043C \u0443\u0440\u043E\u0432\u043D\u0435 (\u043D\u0435 \u0444\u0430\u043A\u0442 \u0447\u0442\u043E \u043D\u0443\u0436\u043D\u0430, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0434\u043E\u0436\u0434\u0430\u0442\u044C\u0441\u044F \u0443\u0439\u0434\u0435\u0442 \u0432 \u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0441\u0442\u044C changeForm)\n // todo(vl) - - \u0435\u0441\u043B\u0438 \u043D\u0443\u0436\u043D\u0430, \u0442\u043E \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044C \u0444-\u043B\n const changesDataSafely = (() => {\n if (typeof data === 'function') return data(field, currentForm, currentChangesSettings);\n return getIsOnlyAnObject(data) ? data : {};\n })();\n\n const { error } = changesDataSafely;\n return { newField: { ...field, ...changesDataSafely }, ...(error !== undefined ? { error } : {}) };\n };\n\n //? \u0424-\u044F \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0435\u0442 \"\u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u043D\u044B\u0435\" \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\n const changeForm = async () => {\n let modifiedFormFromOutside;\n const errorsFromChanges = {};\n\n // ? \u041F\u0440\u043E\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0435\u043C \u043D\u043E\u0432\u0443\u044E \u0444\u043E\u0440\u043C\u0443 \u0441 \u0432\u043D\u0435\u0441\u0435\u043D\u043D\u044B\u043C\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\u043C\u0438 \u043F\u043E \u0444\u0438\u043B\u0434\u0430\u043C.\n // ? \u041E\u0431\u0440\u0430\u0449\u0430\u044E \u0432\u043D\u0438\u043C\u0430\u043D\u0438\u0435, \u0447\u0442\u043E \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043C\u0441\u044F \u043F\u043E \u043C\u0430\u0441\u0441\u0438\u0432\u0443 formChanges, \u0430 \u0437\u043D\u0430\u0447\u0438\u0442 \u0444\u043E\u0440\u043C\u0430 \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F \u0432 \u043F\u043E\u0440\u044F\u0434\u043A\u0435 \u043F\u043E\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u044F \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439\n const newForm = formChanges.reduce((acc, changesItem) => {\n const { data, key, settings } = changesItem;\n const field = acc.find(field => field.key === key);\n\n // ? \u0415\u0441\u043B\u0438 \u0432 \u0444\u043E\u0440\u043C\u0435 \u0435\u0441\u0442\u044C \u0444\u0438\u043B\u0434 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0439 key \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F - \u043C\u0443\u0442\u0438\u0440\u0443\u0435\u043C \u0444\u0438\u043B\u0434\n if (field) {\n // ? \u041C\u0443\u0442\u0430\u0446\u0438\u044F \u0444\u0438\u043B\u0434\u0430 \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442 \u043D\u0430 \u0430\u043A\u043A\u0443\u043C\u0443\u043B\u044F\u0442\u043E\u0440\u0435 (\u0442\u0435\u043A\u0443\u0449\u0430\u044F \u0444\u043E\u0440\u043C\u0430), \u0434\u043B\u044F \u0442\u043E\u0433\u043E \u0447\u0442\u043E\u0431\u044B \u0432 \u043F\u043E\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044F\u0445 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0435\n acc = acc.map(field => {\n if (field.key !== key) return field;\n\n // ? error - \u044D\u0442\u043E error \u041D\u0415 \u0438\u0437 \u0444\u0438\u043B\u0434\u0430 (\u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0441\u0430\u0442\u0440\u044B\u0439), \u0430 \u0438\u043C\u0435\u043D\u043D\u043E \u0438\u0437 \"\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\",\n // ? \u0435\u0441\u043B\u0438 \u041D\u0415 \u043F\u0440\u0438\u0445\u043E\u0434\u0438\u043B \u0438\u043C\u0435\u043D\u043D\u043E \u0432 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\u0445, \u0442\u043E \u0435\u0433\u043E \u0438 \u043D\u0435 \u0431\u0443\u0434\u0435\u0442.\n const { newField, error } = addChangesToField(field, data, acc, settings);\n // ? \u041D\u0430 \u043A\u0430\u0436\u0434\u043E\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u0444\u0438\u043A\u0441\u0438\u0440\u0443\u0435\u043C \u0438\u0442\u043E\u0433\u043E\u0432\u0443\u044E \u043C\u0443\u0442\u0430\u0446\u0438\u044E \u043F\u0440\u043E\u043F\u044B error \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u0444\u0438\u043B\u0434\u0430\n if (error || error !== undefined) errorsFromChanges[key] = error;\n\n return newField;\n });\n }\n return acc;\n }, form);\n\n // ToDo - \u043F\u043E\u0440\u0435\u0444\u0430\u043A\u0442\u043E\u0440\u0438\u0442\u044C, \u043D\u0435 \u043F\u0440\u043E\u0433\u043E\u043D\u044F\u0442\u044C \u0432\u0430\u043B\u0438\u0434\u0430\u0446\u0438\u044E \u0432\u0441\u0435\u0445 \u043F\u043E\u043B\u0435\u0439, \u0430 \u0442\u043E\u043B\u044C\u043A\u043E \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043D\u044B\u0445\n const validatedForm =\n isUseValidation && typeof validateField === 'function'\n ? newForm.map(field => ({\n ...field,\n error: (() => {\n let output = '';\n const validateFieldResult = validateField({ ...field }, newForm);\n if (validateFieldResult?.field?.error !== undefined) output = validateFieldResult.field.error;\n else if (errorsFromChanges[field.key] !== undefined) output = errorsFromChanges[field.key];\n return output;\n })(),\n }))\n : newForm;\n\n if (callback && typeof callback === 'function') modifiedFormFromOutside = await callback(validatedForm);\n if (!isNotSetForm) await setForm(modifiedFormFromOutside ?? validatedForm);\n\n formChanges.length = 0;\n setIsFormMustBeChanget(false);\n };\n\n useEffect(() => {\n if (isFormMustBeChanget) changeForm();\n }, [isFormMustBeChanget]);\n\n return {\n assignChangesToField, // \u043C\u0435\u0442\u043E\u0434 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u043E\u0442\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0445 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439\n isFormMustBeChanget, // \u0444\u043B\u0430\u0433 \u0441\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u043D\u0435\u043F\u043E\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0445 \u043C\u0443\u0442\u0430\u0446\u0438\u0439 \u0444\u043E\u0440\u043C\u044B\n\n // \u043C\u0435\u0442\u043E\u0434 \u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0439 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u0444\u043B\u0430\u0433\u0430 \u0441\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u043D\u0435\u043F\u043E\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0445 \u043C\u0443\u0442\u0430\u0446\u0438\u0439 \u0444\u043E\u0440\u043C\u044B\n // \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u043D\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F, \u041D\u0415 \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442, \u0435\u0441\u043B\u0438 \u0443\u0436\u0435 \u043E\u0442\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442 \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u0438\u0435\n startChangesProcessing,\n\n // todo(vl) - deprecated, \u043D\u043E \u043F\u043E\u043A\u0430 \u043D\u0435 \u0432\u044B\u043F\u0438\u043B\u0438\u0432\u0430\u044E, \u043D\u0435 \u043F\u0440\u043E\u0432\u0435\u0440\u0438\u043B \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u043B\u0438 \u043D\u0430 \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u0445\n setIsFormMustBeChanget: startChangesProcessing, // \u043C\u0435\u0442\u043E\u0434 \u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0439 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u0444\u043B\u0430\u0433\u0430 \u0441\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u043D\u0435\u043F\u043E\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0445 \u043C\u0443\u0442\u0430\u0446\u0438\u0439 \u0444\u043E\u0440\u043C\u044B\n\n changesArray: clone(formChanges), // \u0442\u0435\u043A\u043A\u0443\u0449\u0435\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439\n\n // \u041A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u0430 (\u043D\u0430 \u0447\u0442\u0435\u043D\u0438\u0435) \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0438, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u0432\u044B\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044F \u043C\u0435\u0436\u0434\u0443 \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F\u043C\u0438,\n // \u043F\u043E\u0441\u043B\u0435 \u043A\u043E\u0442\u043E\u0440\u043E\u0439 \u043E\u0442\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u043D\u0430\u043A\u043E\u043F\u0438\u0432\u0448\u0438\u0445\u0441\u044F \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u0432 \u0444\u043E\u0440\u043C\u0443\n DELAY_TIME,\n };\n}\n\nexport default useFormFieldsChangesManager;\n", "import { getIsOnlyAnObject } from \"../../../Functions/utils\";\n\nexport const getDependOnStarter = (props) => {\n const { assign } = props;\n\n return ({ newValue, fieldKey, propKey, field, form, additional }) => {\n if (field.isDominantField) {\n const dependFields = form.filter((f) =>\n f.dependOn?.keys?.includes?.(fieldKey),\n );\n\n if (dependFields.length > 0) {\n const { isNotResetErrors } = additional;\n dependFields.forEach((dependField) => {\n // ! \u0414\u043B\u044F \u0437\u0432\u0438\u0441\u0438\u043C\u043E\u0433\u043E \u0444\u0438\u043B\u0434\u0430 \u0435\u0441\u0442\u044C 2 \u0441\u043F\u043E\u0441\u043E\u0431\u0430 \u043D\u0430\u0437\u043D\u0430\u0447\u0438\u0442\u044C \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\n\n // ? - \u043F\u0440\u043E\u043F\u0438\u0441\u0430\u0442\u044C \u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u0435 dependOn callback, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438,\n // ? \u0430 \u0443\u0436\u0435 \u0432\u043D\u0443\u0442\u0440\u0438 \u0441\u0430\u043C\u043E\u0433\u043E \u043A\u043E\u043B\u0431\u044D\u043A\u0430 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044C\u0441\u044F, \u0434\u043B\u044F \u043A\u0430\u043A\u043E\u0439 \u0438\u043C\u043C\u0435\u043D\u043D\u043E \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u0432\u044B\u0437\u0432\u0430\u043D \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\n\n // ? - \u043F\u0440\u043E\u043F\u0438\u0441\u0430\u0442\u044C \u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u0435 dependOn \u043F\u0440\u043E\u043F\u0443 callbacks, \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u0432 \u043D\u0435\u0435 \u043E\u0431\u044A\u0435\u043A\u0442 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435\n // ? { ... [\u043A\u043B\u044E\u0447_\u0434\u043E\u043C\u0438\u043D\u0438\u0440\u0443\u044E\u0449\u0435\u0433\u043E_\u043F\u043E\u043B\u044F]: \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0439_\u043A\u043E\u043B\u043B\u0431\u044D\u043A, ... }\n // ? \u0442\u0430\u043A\u0438\u043C \u043E\u0431\u0440\u0430\u0437\u043E\u043C \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0437\u0432\u0430\u043D \u0441\u0432\u043E\u0439 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\n const execute =\n dependField.dependOn.callbacks?.[fieldKey] ??\n dependField.dependOn.callback;\n\n // ? \u041F\u044B\u0442\u0430\u0435\u043C\u0441\u044F \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u0438 \u0435\u0441\u043B\u0438 \u043E\u043D\u0438 \u043F\u0440\u0438\u0445\u043E\u0434\u044F\u0442 - \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u0435\u043C.\n // ? \u0412\u044B\u0431\u0440\u0430\u043D\u043D\u0430\u044F \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u044F \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u043E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0442\u044C \u043E\u0431\u044B\u0447\u043D\u044B\u0435 \u0438 \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u044B\u0435 \u043A\u043E\u043B\u0431\u0435\u043A\u0438 \u0432\u0440\u0430\u0437\u043D\u043E\u0431\u043E\u0439,\n // ? \u043F\u0440\u0438\u0447\u0435\u043C \u043D\u0435 \u043E\u0436\u0438\u0434\u0430\u044F \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0445\n new Promise((resolve) => {\n resolve(\n execute?.(\n {\n ...field,\n [propKey || \"value\"]: newValue,\n ...(!isNotResetErrors ? { error: \"\" } : {}),\n },\n dependField,\n form,\n { ...additional, propKey },\n ),\n );\n })\n .then((changes) => {\n if (getIsOnlyAnObject(changes)) assign(changes, dependField.key);\n return changes;\n })\n .catch(() => {});\n });\n }\n }\n };\n};\n", "/* eslint-disable react-web-api/no-leaked-timeout */\nimport type { IInputAddressProps, IInputAddressValue } from './InputAddress.interface';\n\nimport cn from 'classnames';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { AlertTriangle, X } from 'react-feather';\nimport Input from '../../Atomic/FormElements/Input/Input';\nimport Spinner from '../../Atomic/Layout/Spinner/Spinner';\nimport Hint from '../../Atomic/UI/Hint/Hint';\nimport useIsMobile from '../../Functions/useIsMobile/useIsMobile';\n\nimport { compare, getIsOnlyAnObject } from '../../Functions/utils';\nimport './InputAddress.scss';\n\nconst DEFAULT_HINT_MESSAGE\n = 'Select the correct address from the list of suggestions (must contains house number and street name)';\n\nconst RC = 'input-address';\n\n// ? \u0415\u0441\u043B\u0438 \u0440\u0430\u0432\u043D\u044B - true\nfunction compareValues(val1: string | IInputAddressValue, val2: string | IInputAddressValue): boolean {\n return (\n typeof val1 === typeof val2\n && (getIsOnlyAnObject(val1) ? compare(val1, val2) : val1 === val2)\n );\n}\n\nfunction throttle(fn: (...args: any[]) => void, ms: number) {\n let id: ReturnType<typeof setTimeout> | null = null;\n return (...args: any[]) => {\n if (id) clearTimeout(id);\n\n id = setTimeout(() => {\n fn(...args);\n }, ms);\n };\n}\n\n// \u041E\u0442\u0434\u0430\u0435\u0442 true \u0435\u0441\u043B\u0438 value \u0432\u0430\u043B\u0438\u0434\u043D\u043E\u0435 \u041D\u0415 \u043D\u0443\u043B\u0435\u0432\u043E\u0435 \u0447\u0438\u0441\u043B\u043E\nfunction getIsValidNumber(value: any): value is number {\n return Boolean(value) && typeof value === 'number' && !Number.isNaN(value)\n}\n\nconst InputAddress: React.FC<IInputAddressProps> = ({\n label,\n className = '',\n isClearable = true,\n isKeyboardControlled = true,\n fieldKey = '',\n testId = '',\n throttle: throttleTime = 500, // ms\n additionalThrottleTimeForListingRequest = 0, // ms\n loader = '',\n noItemsMessage = '',\n error,\n value = '',\n onChange,\n onChangeValueTransformer,\n disabled,\n isDisabled,\n\n getListItems,\n clarifyAddressInfo, // ! \u041D\u0435 \u0434\u0435\u043B\u0430\u0442\u044C \u0434\u0435\u0444\u043E\u043B\u0442\u043D\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F! \u042D\u0442\u043E \u0438 \u043C\u0435\u0442\u043E\u0434 \u0438 \u0444\u043B\u0430\u0433\n\n noValidate = false,\n\n renderSelectedItem,\n renderListItem,\n renderHintMessage,\n\n attributesOfNativeInput,\n}) => {\n const { isMobile } = useIsMobile();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const listOverlayRef = useRef<HTMLDivElement>(null);\n const listWrapperRef = useRef<HTMLDivElement>(null);\n const listHeaderRef = useRef<HTMLDivElement>(null);\n const previousValueRef = useRef(value);\n\n const [innerValue, setInnerValue] = useState<string | IInputAddressValue>(value);\n\n const [tempInnerValue, setTempInnerValue] = useState <string | IInputAddressValue | null>(null);\n\n const [listItems, setListItems] = useState<any[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [isListLoading, setIsListLoading] = useState(false);\n\n const [hightlightedIndex, setHightlightedIndex] = useState<number | null>(null);\n\n const [isFocused, setIsFocused] = useState(false);\n const [isListVisible, setIsListVisible] = useState(false);\n\n const isWrongAddress = useMemo(() => {\n if (noValidate) return false;\n\n if (innerValue === '') return false;\n\n if (\n (typeof innerValue === 'object' && !Object.hasOwn(innerValue, 'streetNumber'))\n || (typeof innerValue !== 'string' && !innerValue?.streetNumber)\n ) {\n return true;\n }\n\n // eslint-disable-next-line no-prototype-builtins\n if (!innerValue?.hasOwnProperty('street') || (typeof innerValue !== 'string' && !innerValue?.street?.fullName))\n return true;\n\n return false;\n }, [innerValue]);\n\n const setItemAsInnerValue = (e: any, item: any): void => {\n if (e instanceof Event) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n setTimeout(() => {\n setInnerValue(item);\n\n if (isMobile) {\n setIsListVisible(false);\n }\n }, 0);\n };\n\n // ? \u0411\u0430\u0437\u043E\u0432\u044B\u0439 \u043C\u0435\u0442\u043E\u0434 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0441\u043F\u0438\u0441\u043A\u0430 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432 \u0430\u0434\u0440\u0435\u0441\u0430\n const getAddressVariants = useMemo(\n () => (innerValue: string | IInputAddressValue) =>\n getListItems?.(innerValue)\n ?.then(setListItems)\n .finally(() => setIsListLoading(false)),\n [getListItems],\n );\n\n // ? \u041C\u0435\u0442\u043E\u0434 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0441\u043F\u0438\u0441\u043A\u0430 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432 \u0430\u0434\u0440\u0435\u0441\u0430 \u0441 \u0442\u0440\u043E\u0442\u043B\u0438\u043D\u0433\u043E\u043C (\u043E\u0441\u043D\u043E\u0432\u043D\u044B\u043C \u0438, \u0435\u0441\u043B\u0438 \u043D\u0443\u0436\u043D\u043E, \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u043C)\n // ? \u0411\u0435\u0437 useMemo \u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u041D\u0415 \u0431\u0443\u0434\u0435\u0442 (\u0442.\u043A. \u043D\u0430 \u043A\u0430\u0436\u0434\u043E\u043C \u043F\u0435\u0440\u0435\u0440\u0435\u043D\u0434\u0435\u0440\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u043E\u0432\u0430\u044F \u0444-\u044F \u0438 \u0431\u0443\u0434\u0435\u0442 \u0442\u0435\u0440\u044F\u0442\u044C\u0441\u044F \u0437\u0430\u043C\u043A\u043D\u0443\u0442\u0430\u044F \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u0430\u044F id \u0438\u0437 throttle)\n const getAddressVariantsWithThrottling = useMemo(() => {\n const execute = getIsValidNumber(additionalThrottleTimeForListingRequest)\n ? throttle(getAddressVariants, additionalThrottleTimeForListingRequest)\n : getAddressVariants;\n\n return getIsValidNumber(throttleTime)\n ? throttle(execute, throttleTime)\n : execute;\n }, [\n getAddressVariants,\n additionalThrottleTimeForListingRequest,\n throttleTime,\n ]);\n\n // ? \u0418\u0442\u043E\u0433\u043E\u0432\u044B\u0439 \"\u043F\u043E\u043B\u0443\u0447\u0430\u0442\u0435\u043B\u044C\" \u0441\u043F\u0438\u0441\u043A\u0430 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432 \u0430\u0434\u0440\u0435\u0441\u043E\u0432\n const getAddressVariantsList = (): null => {\n if (!innerValue?.length) return null;\n\n // ? \u0412\u043E\u043E\u0431\u0449\u0435 \u0441 \u0443\u0447\u0435\u0442\u043E\u043C \u043D\u0430\u0434\u043F\u0438\u0441\u044C \"Loading\" \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432 \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442\u0441\u044F \u0432 \u044D\u0442\u043E\u043C \u043C\u0435\u0441\u0442\u0435 (\u0442.\u0435. \u0441\u0440\u0430\u0437\u0443 \u043F\u0440\u0438 \u043D\u0430\u0447\u0430\u043B\u0435 \u043D\u0430\u0431\u043E\u0440\u0430),\n // ? \u0442\u043E, \u043D\u0430\u0432\u0435\u0440\u043D\u043E\u0435, \u043C\u043E\u0436\u043D\u043E \u0431\u044B\u043B\u043E \u041D\u0415 \u043C\u0443\u0442\u0438\u0442\u044C \u0441 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u043C \u0442\u0440\u043E\u0442\u043B\u0438\u043D\u0433\u043E\u043C )).\n // ? \u041D\u0430\u0432\u0435\u0440\u043D\u043E\u0435, \u043C\u043E\u0436\u043D\u043E \u0431\u044B\u043B\u043E \u0443\u0432\u0435\u043B\u0438\u0447\u0438\u0442\u044C \u0432\u0440\u0435\u043C\u044F \u043F\u0435\u0440\u0432\u0438\u0447\u043D\u043E\u0433\u043E \u0442\u0440\u043E\u0442\u043B\u0438\u043D\u0433\u0430 \u0438, \u043D\u0430\u0432\u0435\u0440\u043D\u043E\u0435, \u0440\u0430\u0431\u043E\u0442\u0430\u043B\u043E \u0431\u044B \u0442\u0430\u043A \u0436\u0435 ))\n // ? \u041D\u041E, \u0440\u0430\u0437 \u0443\u0436\u0435 \u0441\u0434\u0435\u043B\u0430\u043B )) \u043E\u0441\u0442\u0430\u0432\u043B\u044E, \u043C\u043E\u0436\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043C \u043F\u043E\u043B\u0435\u0437\u043D\u043E )\n setIsListLoading(true);\n getAddressVariantsWithThrottling(innerValue);\n\n return null;\n };\n\n const onClearClick: React.MouseEventHandler<SVGElement> = (e): void => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!isMobile) {\n setIsListVisible(false);\n }\n\n setInnerValue('');\n\n inputRef?.current?.focus();\n setTimeout(() => setIsFocused(true), 0);\n };\n\n const onOverlayClick: React.MouseEventHandler<HTMLDivElement> = (e): void => {\n if (e.target === listOverlayRef?.current) {\n e.stopPropagation();\n e.preventDefault();\n setIsListVisible(false);\n if (tempInnerValue) setInnerValue(tempInnerValue);\n onChange?.(\n typeof innerValue === 'string'\n || !onChangeValueTransformer\n || typeof onChangeValueTransformer !== 'function'\n ? innerValue\n : onChangeValueTransformer(innerValue),\n );\n }\n };\n\n const onKeyDown = (keyCode: number | string): boolean => {\n if (!isListVisible || !isKeyboardControlled) return false;\n\n if (keyCode === 13) {\n // Enter Controller\n if (typeof hightlightedIndex === 'number') setItemAsInnerValue(null, listItems[hightlightedIndex]);\n setHightlightedIndex(null);\n inputRef?.current?.blur();\n }\n else {\n let newHightlightedIndex: number | null = null;\n const listItemsElements = document.getElementsByClassName('input-address__list--item');\n\n const listHeight = listRef?.current?.getBoundingClientRect()?.height ?? 0;\n const listScrollTop = listRef?.current?.scrollTop || 0;\n const lastItemIndex = Number.parseInt(listItems?.length?.toString(), 10) - 1;\n\n /** Arrows Controllers */\n if (keyCode === 40) {\n // Down Key Controller\n if (hightlightedIndex === null || hightlightedIndex === lastItemIndex) {\n newHightlightedIndex = 0;\n }\n else if (hightlightedIndex + 1 < listItems?.length) {\n newHightlightedIndex = hightlightedIndex + 1;\n }\n }\n else if (keyCode === 38) {\n // Up Key Controller\n if (hightlightedIndex === null || hightlightedIndex === 0) {\n newHightlightedIndex = lastItemIndex;\n }\n else if (hightlightedIndex - 1 >= 0) {\n newHightlightedIndex = hightlightedIndex - 1;\n }\n }\n\n // Scroll to Element\n const newHightlightedElement = typeof newHightlightedIndex === 'number' ? listItemsElements[newHightlightedIndex] as HTMLElement : null;\n const newHightlightedElementHeight\n = newHightlightedElement?.getBoundingClientRect()?.height ?? 0;\n\n const newHightlightedElementTopInList = newHightlightedElement ? newHightlightedElement?.offsetTop : 0;\n\n if (\n newHightlightedElementTopInList + newHightlightedElementHeight\n > listScrollTop + listHeight\n ) {\n if (\n Math.abs(\n newHightlightedElementTopInList\n + newHightlightedElementHeight\n - (listScrollTop + listHeight),\n ) <= newHightlightedElementHeight\n ) {\n listRef?.current?.scrollTo(\n 0,\n listScrollTop + newHightlightedElementHeight,\n );\n }\n else {\n listRef?.current?.scrollTo(0, newHightlightedElementTopInList);\n }\n }\n else if (newHightlightedElementTopInList < listScrollTop) {\n if (Math.abs(newHightlightedElementTopInList - listScrollTop) < newHightlightedElementHeight) {\n listRef?.current?.scrollTo(0, listScrollTop - newHightlightedElementHeight);\n }\n else {\n listRef?.current?.scrollTo(0, newHightlightedElementTopInList);\n }\n }\n\n if (!isMobile) setHightlightedIndex(newHightlightedIndex);\n }\n\n return true;\n };\n\n const getHintMessage = (): string => {\n if (!renderHintMessage || typeof renderHintMessage !== 'function')\n return DEFAULT_HINT_MESSAGE;\n\n return renderHintMessage(innerValue);\n };\n\n const getSelectedItemLabel = (value = innerValue): string => {\n if (!value) return '';\n if (typeof value === 'string') return value;\n if (typeof renderSelectedItem === 'function') renderSelectedItem(value);\n\n const label\n = `${value?.streetNumber || ''} ${value?.street?.fullName || ''}`.trim();\n return !label && isLoading ? previousValueRef.current as string : label;\n };\n\n const getListItemLabel = (item: string | IInputAddressValue): string | React.ReactNode => {\n if (typeof item === 'string') return item;\n\n if (!renderListItem || typeof renderListItem !== 'function')\n return item?.fullPrediction;\n\n return renderListItem(item);\n };\n\n const setListHeight = (): void => {\n if (listWrapperRef?.current && listHeaderRef?.current && listRef.current) {\n const listWrapperHeight\n = listWrapperRef?.current?.getBoundingClientRect()?.height;\n const listWrapperStyles = getComputedStyle(listWrapperRef?.current);\n\n const listHeaderHeight\n = listHeaderRef?.current?.getBoundingClientRect()?.height;\n\n const listHeight\n = listWrapperHeight\n - listHeaderHeight\n - Number.parseInt(listWrapperStyles.paddingBottom, 10);\n\n listRef.current.style.maxHeight = `${listHeight}px`;\n }\n };\n\n const resetListHeight = (): void => {\n if (listRef.current) {\n listRef.current.style.maxHeight = `initial`;\n }\n };\n\n // ? \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u0431\u043B\u043E\u043A \u0440\u0430\u0431\u043E\u0442\u044B \u0441\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F\u043C\u0438 \u0430\u0434\u0440\u0435\u0441\u0430\n // ? \u041D\u0435 \u043C\u0435\u043D\u044F\u0439\u0442\u0435 \u0432\u044B\u0437\u043E\u0432\u044B setInnerValue \u0438 onChange \u043D\u0435 \u0440\u0430\u0437\u043E\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044C \u0432 \u043B\u043E\u0433\u0438\u043A\u0435 \u0432\u044B\u0437\u043E\u0432\u043E\u0432\n useEffect(() => {\n // ? \u0418\u0441\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438 - \u0440\u0430\u0432\u043D\u044B \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u043F\u0435\u0440\u0432\u043E\u043C \u0440\u0435\u043D\u0434\u0435\u0440\u0435 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430,\n // ? \u0442.\u043A. \u0440\u0435\u0444\u043A\u0430 \u0438 \u0441\u0442\u0435\u0439\u0442 \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u0443\u044E\u0442\u0441\u044F \u0432\u0435\u0440\u0445\u043D\u0438\u043C value\n if (!compareValues(innerValue, previousValueRef.current)) {\n const isObject = getIsOnlyAnObject(innerValue);\n\n // ? innerValue \u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F \u043B\u0438\u0431\u043E \u043E\u0442 \u0440\u0443\u0447\u043D\u043E\u0433\u043E \u0432\u0432\u043E\u0434\u0430, \u043B\u0438\u0431\u043E \u043E\u0442 \u0432\u044B\u0431\u043E\u0440\u0430 \u0438\u0437 \u0441\u043F\u0438\u0441\u043A\u0430\n // ? \u041F\u043E\u043B\u043D\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u0438\u043B\u0438 \u043D\u0435\u0442 - \u043D\u0430\u043F\u0440\u044F\u043C\u0443\u044E \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043E\u0442 \u043E\u0442\u0432\u0435\u0442\u0430 getListItems\n const isFullInfo\n = isObject\n && 'streetNumber' in (innerValue as IInputAddressValue)\n && 'street' in (innerValue as IInputAddressValue)\n && 'city' in (innerValue as IInputAddressValue)\n && 'state' in (innerValue as IInputAddressValue)\n && 'country' in (innerValue as IInputAddressValue)\n && 'zipCode' in (innerValue as IInputAddressValue);\n\n // ? \u0414\u043B\u044F \u0441\u0442\u0430\u0440\u043E\u0433\u043E \u044D\u043D\u0434\u043F\u043E\u0438\u043D\u0442\u0430 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044F \u0441\u043F\u0438\u0441\u043E\u043A \u0441 \u043F\u043E\u043B\u043D\u043E\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0435\u0439, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043D\u0430 \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u0445 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043F\u043E\u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F,\n // ? \u0435\u0441\u043B\u0438 \u043D\u0435 \u043C\u0435\u043D\u044F\u0442\u044C \u0437\u0430\u043F\u0440\u043E\u0441\u043D\u0438\u043A (getListItems), \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u043F\u0440\u043E\u0445\u043E\u0434\u0438\u0442\u044C \u043F\u043E \u044D\u0442\u043E\u0439 if-\u043A\u0435 \u0438\u043B\u0438 \u043F\u043E 3-\u0439 (\u0434\u043B\u044F \u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0445 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439)\n if (isFullInfo) {\n onChange?.(innerValue);\n setIsLoading(false);\n }\n\n // ? \u041D\u0435\u043F\u043E\u043B\u043D\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0432 \u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435, \u043A\u043E\u0433\u0434\u0430 \u043C\u0435\u0442\u043E\u0434 getListItems \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u0443\u0436\u0435 \u043D\u043E\u0432\u044B\u0439 \u044D\u043D\u0434\u043F\u043E\u0438\u043D\u0442 \u0433\u0443\u0433\u043B-\u0430\u043F\u0438.\n // ? \u041F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \u043F\u0440\u0438 \u044D\u0442\u043E\u043C \u0432 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442 \u0431\u0443\u0434\u0435\u0442 \u043F\u0440\u043E\u043A\u0438\u043D\u0443\u0442\u0430 \u0444-\u044F \"\u0443\u0442\u043E\u0447\u043D\u044F\u0442\u0435\u043B\u044C\" (clarifyAddressInfo)\n if (isObject && !isFullInfo) {\n if (typeof clarifyAddressInfo === 'function') {\n setIsLoading(true);\n // ? \u041F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u0442\u0441\u044F, \u0447\u0442\u043E clarifyAddressInfo - \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u0430\u044F \u0444-\u044F, \u0437\u0430\u043F\u0440\u043E\u0441\u043D\u0438\u043A \u0443\u0442\u043E\u0447\u043D\u0435\u043D\u0438\u044F \u043E\u043F\u0446\u0438\u0438\n // ? \u041D\u0438\u043A\u0430\u043A\u0438\u0445 await-\u043E\u0432 \u041D\u0415 \u043D\u0443\u0436\u043D\u043E (\u0442\u0435\u043C \u0431\u043E\u043B\u0435\u0435 \u0447\u0442\u043E \u0432 useEffect \u0438 \u043D\u0435\u043B\u044C\u0437\u044F \u0434\u043B\u044F \u043D\u043E\u0432\u043E\u0433\u043E React),\n // ? \u043F\u0440\u043E\u043C\u0438\u0441 \"\u0432\u044B\u043F\u043B\u044E\u043D\u0435\u0442\u0441\u044F \u0432 \u043F\u0443\u0441\u0442\u043E\u0442\u0443\", \u043D\u043E \u041D\u0415 \u0431\u0443\u0434\u0435\u0442 \u043E\u0442\u0447\u0438\u0449\u0435\u043D \u0434\u043E \u0440\u0435\u0437\u043E\u043B\u0432\u0430, \u0430 useEffect (\u0438 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044F \u0440\u0435\u043D\u0434\u0435\u0440\u0430 \u0432 \u0446\u0435\u043B\u043E\u043C) \u043F\u0440\u0438 \u044D\u0442\u043E\u043C \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043A\u043E\u043D\u0447\u0435\u043D(\u0430)\n clarifyAddressInfo(innerValue as IInputAddressValue)?.then?.((res) => {\n if (res) {\n setInnerValue(res);\n }\n else {\n setInnerValue(previousValueRef.current);\n setTimeout(() => {\n inputRef.current?.focus();\n inputRef.current?.setSelectionRange(\n previousValueRef.current.length,\n previousValueRef.current.length,\n );\n }, 0);\n }\n\n setIsLoading(false);\n return res;\n });\n }\n // ! \u0415\u0441\u043B\u0438 \u0441\u0432\u0435\u0440\u0445\u0443 \u043F\u043E\u043C\u0435\u043D\u044F\u043B\u0438 \u044D\u043D\u0434\u043F\u043E\u0438\u043D\u0442 \u0438 \u043E\u043D \u0432\u044B\u0434\u0430\u0435\u0442 \"\u043E\u0431\u043B\u0435\u0433\u0447\u0435\u043D\u043D\u044B\u0439 \u043B\u0438\u0441\u0442\u0438\u043D\u0433\" (\u0430\u0439\u0442\u0435\u043C\u044B \u0441 \u043D\u0435\u043F\u043E\u043B\u043D\u043E\u0439 \u0438\u043D\u0444\u043E\u0439),\n // ! \u0438 \u041D\u0415 \u043F\u0440\u043E\u0431\u0440\u043E\u0441\u0438\u043B\u0438 clarifyAddressInfo, \u0442\u043E \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u0435\u0439\u0441\u0435 \u0432\u0435\u043B\u044C\u044E \u0438\u043D\u043F\u0443\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u043F\u0440\u043E\u0441\u0442\u043E \u0437\u0430\u043D\u0443\u043B\u044F\u0442\u044C\u0441\u044F\n // ! (getSelectedItemLabel \u0432\u0435\u0440\u043D\u0435\u0442 \u043F\u0443\u0441\u0442\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443 \u0435\u0441\u043B\u0438 \u0432\u043A\u0438\u043D\u0443\u0442\u044C innerValue \u0431\u0435\u0437 \u0432\u0441\u0435\u0439 \u0438\u043D\u0444\u044B)\n else {\n setInnerValue(getSelectedItemLabel(innerValue));\n }\n }\n\n // ? \u041A\u0435\u0439\u0441 \u0434\u043B\u044F \u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0445 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439\n if (!isObject) {\n // ? \u0412\u044B\u0437\u044B\u0432\u0430\u0435\u043C \u0432\u0435\u0440\u0445\u043D\u0438\u0439 onChange \u0435\u0441\u043B\u0438 innerValue \u0435\u0441\u0442\u044C \u0438\u043B\u0438 \u0435\u0441\u043B\u0438 \u043D\u0435\u0442\u0443, \u043D\u043E \u044D\u0442\u043E \u043D\u0435 \u043F\u043E\u0441\u043B\u0435 \u043B\u043E\u0433\u0438\u043A\u0438 \u0443\u0442\u043E\u0447\u043D\u0435\u043D\u0438\u044F\n if (innerValue || !isLoading) onChange?.(innerValue);\n // ? \u0415\u0441\u043B\u0438 innerValue \u0435\u0441\u0442\u044C \u0438 \u0435\u0449\u0435 \u043D\u0435 \u043E\u0442\u043A\u0440\u044B\u0442 \u043B\u0438\u0441\u0442\u0438\u043D\u0433 - \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u043C\n if (innerValue && !isListVisible) setIsListVisible(true);\n // ? \u0415\u0441\u043B\u0438 \u0438\u043D\u043F\u0443\u0442 \u0441\u0444\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u0430\u043D \u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0435\u0441\u0442\u044C - \u0437\u0430\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043C \u0441\u043F\u0438\u0441\u043E\u043A \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432\n if (isFocused && Boolean(innerValue)) getAddressVariantsList();\n }\n }\n }, [innerValue]);\n\n useEffect(() => {\n if (!isFocused && !isMobile) {\n setIsListVisible(false);\n setHightlightedIndex(null);\n }\n }, [isFocused]);\n\n useEffect(() => {\n if (!isListVisible) {\n setListItems([]);\n resetListHeight();\n }\n\n if (isMobile && isListVisible) {\n setTempInnerValue(innerValue);\n setListHeight();\n }\n }, [isListVisible]);\n\n useEffect(() => {\n // ? \u0443\u0447\u0435\u0442 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F value \u0441\u0432\u0435\u0440\u0445\u0443 (\u0432\u0435\u0440\u0445\u043D\u0438\u0435 \u043F\u0435\u0440\u0435\u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0432\u0435\u043B\u044C\u044E)\n if (!compareValues(value, innerValue)) setInnerValue(value);\n\n // ? useEffect \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u043C, \u0442.\u043A. \u0440\u0435\u0444\u043A\u0430 \u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F \u0432 \u0440\u0430\u043C\u043A\u0430\u0445 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438\n previousValueRef.current = value;\n }, [value]);\n\n const renderSearchableInput = (): JSX.Element => {\n const inputValue = getSelectedItemLabel();\n\n return (\n <div className={cn('input-address__input-wrapper')}>\n <Input\n ref={inputRef}\n testId={`inputAddress--input--key-${testId || fieldKey}`}\n className={cn('input-address__input', className)}\n value={inputValue as string}\n onChange={setInnerValue}\n onFocus={() => {\n setIsFocused(true);\n }}\n onBlur={() => setIsFocused(false)}\n onKeyDown={onKeyDown}\n attributesOfNativeInput={attributesOfNativeInput}\n disabled={disabled || isDisabled}\n />\n {isWrongAddress && (\n <div\n className={cn('input-address__alert', {\n 'input-address__alert--visible': !isFocused,\n })}\n >\n <Hint\n side=\"left\"\n hint={getHintMessage()}\n icon={<AlertTriangle />}\n handleOpenType=\"hover\"\n />\n </div>\n )}\n {isClearable && (!isWrongAddress || isFocused) && !(disabled || isDisabled) && (\n <div\n className={cn('input-address__clear-query', {\n 'input-address__clear-query--input-focused': isFocused,\n })}\n >\n <X onClick={onClearClick} />\n </div>\n )}\n </div>\n );\n };\n\n const renderInput = (): JSX.Element => {\n const inputValue = getSelectedItemLabel(\n isListVisible && tempInnerValue ? tempInnerValue : innerValue,\n );\n\n return (\n <div className={cn('input-address__input-wrapper')}>\n <Input\n testId={`inputAddress--input--key-${testId || fieldKey}`}\n className={cn('input-address__input', className)}\n value={inputValue as string}\n onChange={setInnerValue}\n onFocus={(e) => {\n setIsListVisible(true);\n e?.target?.blur();\n setTimeout(() => inputRef?.current?.focus(), 200);\n }}\n disabled={disabled || isDisabled}\n />\n </div>\n );\n };\n\n const renderLoader = (): JSX.Element => {\n return (\n <div className=\"input-address__list--loader\">\n {loader || 'Loading...'}\n </div>\n );\n };\n\n const renderList = (): JSX.Element => {\n const renderListItem = (item: IInputAddressValue, i: number): JSX.Element => {\n return (\n <div\n key={`input-address__list-item${i}`}\n className={cn('input-address__list--item', {\n 'input-address__list--item-hightlighted': i === hightlightedIndex,\n })}\n onMouseDown={e => setItemAsInnerValue(e, item)}\n >\n {getListItemLabel(item)}\n </div>\n );\n };\n const renderListItemCustom = (): JSX.Element => {\n return (\n <div\n key=\"input-address__list-item--custom\"\n className={cn(\n 'input-address__list--item',\n 'input-address__list--item-custom',\n )}\n onMouseDown={e => setItemAsInnerValue(e, getSelectedItemLabel())}\n >\n {getSelectedItemLabel()}\n <AlertTriangle />\n <span>Choose this only if your address is not listed below</span>\n </div>\n );\n };\n const renderNoItems = (): JSX.Element => {\n return (\n <div className=\"input-address__list--no-items\">\n {isMobile && !innerValue?.length\n ? 'Please begin entering your address'\n : noItemsMessage || 'No Items'}\n </div>\n );\n };\n\n const renderListDesktop = (): JSX.Element => {\n return (\n <div className=\"input-address__list-wrapper\" ref={listWrapperRef}>\n <div className=\"input-address__list\" ref={listRef}>\n {isListLoading\n ? renderLoader()\n : listItems?.length\n ? listItems?.map(renderListItem)\n : renderNoItems()}\n </div>\n </div>\n );\n };\n const renderListMobile = (): JSX.Element => {\n return (\n <div\n className=\"input-address__list-overlay\"\n ref={listOverlayRef}\n onClick={onOverlayClick}\n >\n <div className=\"input-address__list-wrapper\" ref={listWrapperRef}>\n {isMobile && (\n <div\n ref={listHeaderRef}\n className={cn(`${RC}__list-header`, {\n [`${RC}__list-header-with-shadow`]: isMobile,\n })}\n >\n <div className={cn(`${RC}__list-header-row`)}>\n <div className={cn(`${RC}__list-label`)}>\n {label || 'Address'}\n </div>\n <div\n className={cn(`${RC}__list-close-icon`)}\n onClick={() => setIsListVisible(false)}\n >\n <X onClick={() => setIsListVisible(false)} />\n </div>\n </div>\n <div className={cn(`${RC}__list-header-row`)}>\n {renderSearchableInput()}\n </div>\n </div>\n )}\n <div className=\"input-address__list\" ref={listRef}>\n {isListLoading\n ? (\n renderLoader()\n )\n : (\n <>\n {getSelectedItemLabel() && renderListItemCustom()}\n {listItems?.map(renderListItem)}\n {!listItems?.length\n && !getSelectedItemLabel()\n && renderNoItems()}\n </>\n )}\n </div>\n </div>\n </div>\n );\n };\n\n return isMobile ? renderListMobile() : renderListDesktop();\n };\n\n return (\n <div\n className={cn('input-address', {\n 'input-address--error': error || (isWrongAddress && !isFocused),\n 'input-address--disabled': disabled || isDisabled,\n })}\n >\n {isLoading && <Spinner size=\"small\" />}\n {isMobile ? renderInput() : renderSearchableInput()}\n {isListVisible && renderList()}\n </div>\n );\n}\n\nexport default InputAddress;\n", "import type { ReactElement } from 'react';\n\nimport type { IInputPasswordProps } from './InputPassword.interface';\nimport cn from 'classnames';\nimport { useRef, useState } from 'react';\n\nimport { Eye, EyeOff } from 'react-feather';\nimport Input from '../../Atomic/FormElements/Input/Input';\n\nimport { setCarretToEnd } from '../../Functions/utils';\nimport './InputPassword.scss';\n\nfunction InputPassword({ field = { value: '' }, onChange = () => {}, testId = 'input-password' }: IInputPasswordProps): ReactElement {\n const [showPassword, setSP] = useState(false);\n const inputWrapper = useRef<HTMLDivElement>(null);\n\n const handle = {\n changeView: () => {\n const input = inputWrapper?.current?.querySelector('input');\n\n if (input instanceof HTMLInputElement) {\n input?.focus();\n setCarretToEnd(input);\n setSP(!showPassword);\n }\n },\n };\n\n return (\n <div data-testid={testId} className=\"password\" ref={inputWrapper}>\n <Input\n key={field.key}\n value={field.value}\n testId={`inputPassword--input--key-${testId || field.key}`}\n className={cn('input-fin', field?.key)}\n onChange={onChange}\n type={showPassword ? 'text' : 'password'}\n />\n <span\n className=\"password-eye-holder\"\n data-testid=\"password-eye-holder\"\n onClick={handle.changeView}\n >\n {' '}\n {showPassword\n ? (\n <EyeOff strokeWidth={1} className=\"password-icon\" />\n )\n : (\n <Eye strokeWidth={1} className=\"password-icon\" />\n )}\n </span>\n </div>\n );\n}\n\nexport default InputPassword;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "jsxs", "cn", "jsxs", "jsx", "ActionAlert_default", "jsx", "jsxs", "jsx", "jsxs", "cn", "jsx", "jsxs", "cn", "RC", "cn", "RC", "jsxs", "jsx", "AdvancedStatus_default", "jsx", "jsxs", "cn", "React", "classNames", "jsx", "jsx", "jsxs", "cn", "RC", "cn", "RC", "jsx", "CheckboxesLine_default", "CheckboxInput_default", "Fragment", "jsx", "jsxs", "jsx", "jsxs", "useEffect", "moment", "value", "jsx", "jsxs", "jsx", "jsxs", "cn", "CN", "jsx", "useEffect", "useState", "Icon", "useEffect", "useState", "useEffect", "useState", "useState", "value", "useState", "cn", "useEffect", "useMemo", "useRef", "jsx", "jsxs", "jsx", "jsxs", "cn", "RC", "jsx", "jsxs", "React", "useEffect", "useState", "useIsMobile_default", "text", "useMemo", "useRef", "useState", "useIsMobile_default", "value", "cn", "useEffect", "useMemo", "RC", "getListContainer", "getListContainerWrapper", "getParentNode", "getPreparedOptionLabel", "getSortedOptions", "value", "id", "isOpen", "jsxs", "jsx", "scrollTop", "scrollHeight", "jsx", "jsxs", "Fragment", "jsx", "jsxs", "jsx", "jsx", "jsxs", "jsx", "jsxs", "jsx", "jsxs", "getParentNode", "cn", "useEffect", "useRef", "useState", "createPortal", "timer", "className", "jsxs", "jsx", "Fragment", "cn", "RC", "jsxs", "jsx", "jsx", "jsxs", "cn", "moment", "useEffect", "useMemo", "useState", "classNames", "cn", "moment", "useEffect", "useMemo", "useRef", "useState", "compare", "jsxs", "Fragment", "jsx", "jsx", "jsxs", "React", "useEffect", "useState", "cn", "useCallback", "useEffect", "useLayoutEffect", "useMemo", "useRef", "useState", "createPortal", "Check", "ChevronDown", "ChevronUp", "Code", "X", "RC", "getParentNode", "getListContainer", "text", "jsxs", "jsx", "jsx", "jsxs", "Fragment", "jsx", "jsxs", "cn", "useMemo", "RC", "Fragment", "jsx", "jsxs", "cn", "useEffect", "RC", "cn", "useState", "RC", "jsxs", "jsx", "jsx", "jsxs", "jsx", "jsxs", "useEffect", "useRef", "useState", "React", "cn", "ChevronDown", "ChevronUp", "jsx", "jsxs", "cn", "value", "cn", "useEffect", "useMemo", "useState", "RC", "MAX_FILE_SIZE", "jsxs", "jsx", "files", "id", "Fragment", "jsx", "jsxs", "jsx", "jsxs", "cn", "useState", "X", "cn", "useEffect", "useState", "MAX_FILE_SIZE", "jsx", "Fragment", "jsxs", "jsx", "jsxs", "mask", "jsx", "jsxs", "cn", "useEffect", "useMemo", "useRef", "useState", "X", "jsx", "innerValue", "value", "isSpecialSymbol", "id", "className", "jsxs", "useRef", "useState", "Eye", "EyeOff", "value", "jsxs", "jsx", "jsx", "jsxs", "useEffect", "cn", "moment", "useEffect", "useRef", "useState", "InputMask", "value", "jsxs", "jsx", "jsx", "jsxs", "cn", "useCallback", "useMemo", "Fragment", "jsx", "jsxs", "jsx", "jsxs", "cn", "useEffect", "useRef", "useState", "Fragment", "jsx", "jsxs", "useEffect", "useLayoutEffect", "useState", "Fragment", "jsx", "jsxs", "useCallback", "useEffect", "useState", "useEffect", "ModalEventsInnerKeys", "ev", "jsx", "cn", "jsx", "jsxs", "cn", "memo", "useLayoutEffect", "useMemo", "useRef", "X", "jsx", "useCallback", "useEffect", "useLayoutEffect", "useRef", "useState", "scrollTop", "cn", "useEffect", "useLayoutEffect", "useMemo", "useRef", "jsx", "jsxs", "Fragment", "moment", "useCallback", "useEffect", "useRef", "useState", "useClickOutside", "interval", "Fragment", "jsx", "jsxs", "jsx", "jsxs", "React", "useEffect", "useMemo", "useState", "cn", "moment", "classNames", "jsx", "cn", "moment", "RC", "date", "jsx", "value", "cn", "moment", "useEffect", "useMemo", "useRef", "useState", "padTime", "Datepicker", "compare", "setInterval", "jsxs", "Fragment", "jsx", "Datepicker_default", "jsx", "jsxs", "cn", "cn", "moment", "useRef", "useState", "createPortal", "jsx", "Datepicker_default", "jsxs", "Fragment", "cn", "moment", "React", "useLayoutEffect", "useRef", "useState", "useClickOutside", "jsxs", "Fragment", "jsx", "getParentNode", "jsx", "jsxs", "cn", "useRef", "jsx", "jsxs", "uuid", "uuid", "useEffect", "useState", "Trash2", "jsxs", "jsx", "jsx", "jsxs", "cn", "React", "useEffect", "useState", "RC", "Fragment", "jsx", "jsxs", "cn", "CN", "Label_default", "jsx", "jsxs", "moment", "useEffect", "useRef", "useState", "ChevronDown", "ChevronUp", "value", "date", "touchType", "e", "jsx", "jsxs", "useState", "Fragment", "jsx", "jsxs", "React", "useEffect", "useRef", "useState", "cn", "DEFAULT_BLINK_TIME", "inputValue", "jsx", "cn", "useLayoutEffect", "useState", "value", "jsx", "jsxs", "jsx", "jsxs", "cn", "RC", "cn", "jsxs", "jsx", "jsx", "jsxs", "React", "jsx", "jsxs", "cn", "useRef", "useState", "RC", "jsx", "jsxs", "jsx", "jsxs", "cn", "Trash2", "RC", "cn", "useRef", "useState", "RC", "jsxs", "jsx", "jsx", "jsxs", "cn", "useEffect", "useLayoutEffect", "useMemo", "useRef", "useState", "ChevronLeft", "ChevronRight", "Plus", "X", "value", "ranges", "id", "result", "validate", "triggers", "className", "trackWidth", "jsx", "jsxs", "React", "useEffect", "useLayoutEffect", "useRef", "useState", "cn", "X", "debounce", "value", "validate", "renderTrack", "jsx", "jsxs", "cn", "RC", "jsx", "jsxs", "cn", "RC", "value", "jsx", "jsxs", "cn", "RC", "jsx", "createElement", "cn", "RC", "jsx", "RC", "jsx", "cn", "RC", "jsx", "jsxs", "Fragment", "jsx", "jsxs", "jsx", "jsxs", "Spinner_default", "cn", "useEffect", "useMemo", "useRef", "useState", "createPortal", "AlertTriangle", "X", "CN", "defaultOnClick", "x", "y", "height", "width", "jsxs", "jsx", "Spinner_default", "jsx", "jsxs", "cn", "createRef", "useEffect", "useLayoutEffect", "useRef", "useState", "result", "cn", "createRef", "useCallback", "useEffect", "useLayoutEffect", "useMemo", "useRef", "useState", "createPortal", "Check", "ChevronDown", "ChevronUp", "Code", "Trash2", "X", "RC", "MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH", "editingOption", "label", "acc", "item", "options", "getParentNode", "getListContainer", "getListContainerWrapper", "className", "jsxs", "jsx", "getTotalOptions", "title", "Fragment", "isOpen", "jsx", "jsxs", "cn", "useEffect", "useMemo", "useRef", "RC", "cn", "useEffect", "useMemo", "useState", "RC", "jsxs", "jsx", "Fragment", "jsx", "jsxs", "cn", "RC", "jsx", "useEffect", "useRef", "useState", "value", "Fragment", "jsx", "jsxs", "cn", "RC", "jsx", "createElement", "Fragment", "jsx", "jsxs", "jsx", "jsxs", "React", "useEffect", "useRef", "useState", "cn", "RC", "cn", "RC", "jsx", "jsxs", "Fragment", "disabled", "cn", "useMemo", "RC", "jsx", "createElement", "jsx", "jsxs", "useCallback", "useState", "useToggle", "cn", "moment", "useMemo", "useState", "CN", "jsx", "jsxs", "Label_default", "TimeRange_default", "jsx", "jsxs", "cn", "useEffect", "useLayoutEffect", "useRef", "useState", "RC", "UserContacts_default", "jsx", "jsx", "jsxs", "React", "cn", "RC", "React", "useEffect", "useState", "cn", "RC", "jsx", "jsx", "jsxs", "React", "cn", "RC", "jsx", "jsxs", "React", "cn", "RC", "jsx", "React", "useEffect", "useState", "settings", "field", "React", "useEffect", "useState", "cn", "RC", "onChange", "jsx", "Fragment", "jsx", "jsxs", "cn", "useEffect", "useMemo", "useRef", "useState", "AlertTriangle", "X", "RC", "throttle", "innerValue", "value", "label", "renderListItem", "jsx", "jsxs", "cn", "useRef", "useState", "Eye", "EyeOff"]
|
|
7
|
+
}
|