intelicoreact 2.0.15 → 2.0.17
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/css/accordion-table.css +1 -0
- package/dist/css/accordion-text.css +1 -0
- package/dist/css/accordion.css +1 -0
- package/dist/css/action-alert.css +1 -0
- package/dist/css/advanced-status.css +1 -0
- package/dist/css/advanced-tag.css +1 -0
- package/dist/css/alert.css +1 -0
- package/dist/css/arrow.css +1 -0
- package/dist/css/base.css +1 -0
- package/dist/css/box.css +1 -0
- package/dist/css/button.css +1 -0
- package/dist/css/buttons-bar.css +1 -0
- package/dist/css/calendar.css +1 -0
- package/dist/css/chart.css +1 -0
- package/dist/css/checkbox-input.css +1 -0
- package/dist/css/checkboxes-line.css +1 -0
- package/dist/css/circle-progress-bar.css +1 -0
- package/dist/css/date-time.css +1 -0
- package/dist/css/datepicker.css +1 -0
- package/dist/css/debug-container.css +1 -0
- package/dist/css/double-string.css +1 -0
- package/dist/css/dropdown-live-search.css +1 -0
- package/dist/css/dropdown.css +1 -0
- package/dist/css/file-loader-description.css +1 -0
- package/dist/css/file-loader-local-group.css +1 -0
- package/dist/css/file-loader-local.css +1 -0
- package/dist/css/file-loader.css +1 -0
- package/dist/css/form-element.css +1 -0
- package/dist/css/formatted-raw-ssn.css +1 -0
- package/dist/css/header.css +1 -0
- package/dist/css/hint.css +1 -0
- package/dist/css/input-address.css +1 -0
- package/dist/css/input-calendar.css +1 -0
- package/dist/css/input-color.css +1 -0
- package/dist/css/input-currency.css +1 -0
- package/dist/css/input-custom-fetch.css +1 -0
- package/dist/css/input-date-range.css +1 -0
- package/dist/css/input-link.css +1 -0
- package/dist/css/input-mask3.css +1 -0
- package/dist/css/input-password.css +1 -0
- package/dist/css/input-with-action.css +1 -0
- package/dist/css/input.css +1 -0
- package/dist/css/inputs-row.css +1 -0
- package/dist/css/label.css +1 -0
- package/dist/css/main-menu.css +1 -0
- package/dist/css/manifest.json +594 -0
- package/dist/css/mobile-calendar.css +1 -0
- package/dist/css/modal.css +1 -0
- package/dist/css/mono-accordion.css +1 -0
- package/dist/css/multi-select.css +1 -0
- package/dist/css/nav-line.css +1 -0
- package/dist/css/numeric-input.css +1 -0
- package/dist/css/page-title.css +1 -0
- package/dist/css/pie-chart.css +1 -0
- package/dist/css/progress-line.css +1 -0
- package/dist/css/radio-group-with-input.css +1 -0
- package/dist/css/radio-group.css +1 -0
- package/dist/css/radio-input.css +1 -0
- package/dist/css/radio-row-switcher.css +1 -0
- package/dist/css/range-calendar.css +1 -0
- package/dist/css/range-inputs.css +1 -0
- package/dist/css/range-list.css +1 -0
- package/dist/css/range-slider.css +1 -0
- package/dist/css/range-slider2.css +1 -0
- package/dist/css/spinner.css +1 -0
- package/dist/css/status.css +1 -0
- package/dist/css/switchable-row.css +1 -0
- package/dist/css/switcher-checkbox.css +1 -0
- package/dist/css/switcher-hide.css +1 -0
- package/dist/css/switcher-radio.css +1 -0
- package/dist/css/switcher-range-list.css +1 -0
- package/dist/css/switcher-range.css +1 -0
- package/dist/css/switcher-tags-dropdown.css +1 -0
- package/dist/css/switcher-textarea.css +1 -0
- package/dist/css/switcher.css +1 -0
- package/dist/css/table.css +1 -0
- package/dist/css/tag-list.css +1 -0
- package/dist/css/tag.css +1 -0
- package/dist/css/tags-dropdown.css +1 -0
- package/dist/css/text-switcher.css +1 -0
- package/dist/css/text.css +1 -0
- package/dist/css/textarea.css +1 -0
- package/dist/css/tiered-checkboxes.css +1 -0
- package/dist/css/time-range.css +1 -0
- package/dist/css/user-box.css +1 -0
- package/dist/css/user-contacts.css +1 -0
- package/dist/css/variants-list-radio.css +1 -0
- package/dist/css/widget-pseudo-table.css +1 -0
- package/dist/css/widget-with-switchable-rows.css +1 -0
- package/dist/css/wizard-stepper.css +1 -0
- package/dist/es/_virtual/_rolldown/runtime.js +27 -0
- package/dist/es/charts.js +4 -0
- package/dist/es/classes.js +4 -0
- package/dist/es/form.js +99 -0
- package/dist/es/hooks.js +32 -0
- package/dist/es/icons.js +10 -0
- package/dist/es/icons.js.map +1 -0
- package/dist/es/index.js +71 -0
- package/dist/es/layout.js +3 -0
- package/dist/es/presets.js +6 -0
- package/dist/es/router-ui.js +8 -0
- package/dist/es/sdk.js +1 -0
- package/dist/es/styles/base.css +1 -0
- package/dist/es/types/index.js +2 -0
- package/dist/es/ui.js +42 -0
- package/dist/es/utils.js +6 -0
- package/dist/intelicoreact.css +1 -1
- package/dist/scss/_mixins.scss +2 -2
- package/dist/scss/_vars.scss +1 -1
- package/dist/scss/main.scss +4 -1
- package/package.json +47 -64
- package/charts/package.json +0 -5
- package/classes/package.json +0 -5
- package/dist/charts.cjs +0 -927
- package/dist/charts.cjs.map +0 -7
- package/dist/charts.js +0 -911
- package/dist/charts.js.map +0 -7
- package/dist/classes.cjs +0 -1858
- package/dist/classes.cjs.map +0 -7
- package/dist/classes.js +0 -1836
- package/dist/classes.js.map +0 -7
- package/dist/form.cjs +0 -15167
- package/dist/form.cjs.map +0 -7
- package/dist/form.js +0 -15182
- package/dist/form.js.map +0 -7
- package/dist/hooks.cjs +0 -2330
- package/dist/hooks.cjs.map +0 -7
- package/dist/hooks.js +0 -2298
- package/dist/hooks.js.map +0 -7
- package/dist/icons.cjs +0 -1807
- package/dist/icons.cjs.map +0 -7
- package/dist/icons.js +0 -1785
- package/dist/icons.js.map +0 -7
- package/dist/index.cjs +0 -22917
- package/dist/index.cjs.map +0 -7
- package/dist/index.js +0 -22938
- package/dist/index.js.map +0 -7
- package/dist/layout.cjs +0 -458
- package/dist/layout.cjs.map +0 -7
- package/dist/layout.js +0 -426
- package/dist/layout.js.map +0 -7
- package/dist/presets.cjs +0 -262
- package/dist/presets.cjs.map +0 -7
- package/dist/presets.js +0 -240
- package/dist/presets.js.map +0 -7
- package/dist/router-ui.cjs +0 -989
- package/dist/router-ui.cjs.map +0 -7
- package/dist/router-ui.js +0 -957
- package/dist/router-ui.js.map +0 -7
- package/dist/sdk.cjs +0 -451
- package/dist/sdk.cjs.map +0 -7
- package/dist/sdk.js +0 -429
- package/dist/sdk.js.map +0 -7
- package/dist/types/index.cjs +0 -18
- package/dist/types/index.cjs.map +0 -7
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +0 -7
- package/dist/ui.cjs +0 -4090
- package/dist/ui.cjs.map +0 -7
- package/dist/ui.js +0 -4064
- package/dist/ui.js.map +0 -7
- package/dist/utils.cjs +0 -653
- package/dist/utils.cjs.map +0 -7
- package/dist/utils.js +0 -621
- package/dist/utils.js.map +0 -7
- package/form/package.json +0 -5
- package/hooks/package.json +0 -5
- package/icons/package.json +0 -5
- package/layout/package.json +0 -5
- package/presets/package.json +0 -5
- package/router-ui/package.json +0 -5
- package/sdk/package.json +0 -5
- package/types/package.json +0 -5
- package/ui/package.json +0 -5
- package/utils/package.json +0 -5
package/dist/index.cjs.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/Classes/AbortableFetch.js", "../src/Classes/AnimatedHandler.js", "../src/Classes/RESTAPI/partials/AbortableFetch.ts", "../src/Classes/RESTAPI/partials/_utils.ts", "../src/Classes/RESTAPI/partials/Utils.ts", "../src/Classes/RESTAPI/partials/ApiUtils.ts", "../src/Classes/RESTAPI/partials/sse.ts", "../src/Classes/RESTAPI/partials/ApiRequestCreators.ts", "../src/Classes/RESTAPI/partials/ApiBase.ts", "../src/Classes/RESTAPI/partials/CredentialsProcessing.ts", "../src/Classes/RESTAPI/index.ts", "../src/Constants/index.constants.js", "../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/components/DatepickerCalendar.tsx", "../src/Atomic/FormElements/Datepicker/Datepicker.tsx", "../src/Langs.js", "../src/Atomic/FormElements/Dropdown/Dropdown.tsx", "../src/Functions/utils.js", "../src/Functions/fieldValueFormatters.js", "../src/Atomic/FormElements/Input/Input.tsx", "../src/Atomic/Layout/Spinner/Spinner.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/Atomic/FormElements/Dropdown/useDropdown.tsx", "../src/Functions/useIsMobile/useIsMobile.ts", "../src/Functions/useIsMobile/index.ts", "../src/Atomic/FormElements/Dropdown/_utils.ts", "../src/Atomic/FormElements/Switcher/Switcher.tsx", "../src/Atomic/UI/Hint/Hint.tsx", "../src/Molecular/CustomIcons/components/AffiliateNetworks.tsx", "../src/Molecular/CustomIcons/components/AlertCircle.tsx", "../src/Molecular/CustomIcons/components/AppStore.tsx", "../src/Molecular/CustomIcons/components/Arrow.tsx", "../src/Molecular/CustomIcons/components/ArrowDown.tsx", "../src/Molecular/CustomIcons/components/ArrowLeft.tsx", "../src/Molecular/CustomIcons/components/ArrowRight.tsx", "../src/Molecular/CustomIcons/components/ArrowUp.tsx", "../src/Molecular/CustomIcons/components/Bell.tsx", "../src/Molecular/CustomIcons/components/Button.tsx", "../src/Molecular/CustomIcons/components/Campaigns.tsx", "../src/Molecular/CustomIcons/components/Check.tsx", "../src/Molecular/CustomIcons/components/Check2.tsx", "../src/Molecular/CustomIcons/components/ChevronDown.tsx", "../src/Molecular/CustomIcons/components/ChevronDownDisabled.tsx", "../src/Molecular/CustomIcons/components/ChevronLeft.tsx", "../src/Molecular/CustomIcons/components/ChevronRight.tsx", "../src/Molecular/CustomIcons/components/ChevronUp.tsx", "../src/Molecular/CustomIcons/components/ChevronUpDown.tsx", "../src/Molecular/CustomIcons/components/Close.tsx", "../src/Molecular/CustomIcons/components/ColumnsOrder.tsx", "../src/Molecular/CustomIcons/components/Delete.tsx", "../src/Molecular/CustomIcons/components/Edit.tsx", "../src/Molecular/CustomIcons/components/Email.tsx", "../src/Molecular/CustomIcons/components/FinturfLogo.tsx", "../src/Molecular/CustomIcons/components/FinturfLogo2.tsx", "../src/Molecular/CustomIcons/components/Flows.tsx", "../src/Molecular/CustomIcons/components/Gift.tsx", "../src/Molecular/CustomIcons/components/GoogleAuth.tsx", "../src/Molecular/CustomIcons/components/GooglePlay.tsx", "../src/Molecular/CustomIcons/components/HelpCircle.tsx", "../src/Molecular/CustomIcons/components/HelpCircle2.tsx", "../src/Molecular/CustomIcons/components/HelpCircleFilled.tsx", "../src/Molecular/CustomIcons/components/Home.tsx", "../src/Molecular/CustomIcons/components/Home2.tsx", "../src/Molecular/CustomIcons/components/Key.tsx", "../src/Molecular/CustomIcons/components/Landers.tsx", "../src/Molecular/CustomIcons/components/Lock.tsx", "../src/Molecular/CustomIcons/components/Mail.tsx", "../src/Molecular/CustomIcons/components/Mastercard.tsx", "../src/Molecular/CustomIcons/components/Minus.tsx", "../src/Molecular/CustomIcons/components/Offers.tsx", "../src/Molecular/CustomIcons/components/Pause.tsx", "../src/Molecular/CustomIcons/components/PayPal.tsx", "../src/Molecular/CustomIcons/components/PayPalLightLarge.tsx", "../src/Molecular/CustomIcons/components/Phone.tsx", "../src/Molecular/CustomIcons/components/Play.tsx", "../src/Molecular/CustomIcons/components/Plus.tsx", "../src/Molecular/CustomIcons/components/Profile.tsx", "../src/Molecular/CustomIcons/components/QRCode.tsx", "../src/Molecular/CustomIcons/components/Rectangle.tsx", "../src/Molecular/CustomIcons/components/Revert.tsx", "../src/Molecular/CustomIcons/components/Star.tsx", "../src/Molecular/CustomIcons/components/Star2.tsx", "../src/Molecular/CustomIcons/components/TrafficSources.tsx", "../src/Molecular/CustomIcons/components/Trash.tsx", "../src/Molecular/CustomIcons/components/TrashRed.tsx", "../src/Molecular/CustomIcons/components/Triggers.tsx", "../src/Molecular/CustomIcons/components/User.tsx", "../src/Molecular/CustomIcons/components/Visa.tsx", "../src/Molecular/CustomIcons/components/X.tsx", "../src/Atomic/UI/Hint/partials/_constants.ts", "../src/Atomic/UI/Hint/partials/_utils.ts", "../src/Atomic/FormElements/Dropdown/index.ts", "../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/FormattedRawSSN/index.ts", "../src/Atomic/FormElements/Input/index.ts", "../src/Atomic/FormElements/InputCalendar/InputCalendar.tsx", "../src/Functions/useClickOutside.js", "../src/Atomic/FormElements/InputColor/InputColor.tsx", "../src/Atomic/FormElements/InputColor/index.ts", "../src/Atomic/FormElements/InputCurrency/InputCurrency.tsx", "../src/Atomic/FormElements/InputDateRange/components/DateInput.tsx", "../src/Functions/presets/mobileKeyboardTypesPresets.js", "../src/Atomic/FormElements/InputDateRange/components/Datepicker.tsx", "../src/Atomic/FormElements/RangeCalendar/RangeCalendar.js", "../src/Atomic/UI/Arrow/Arrow.tsx", "../src/Atomic/FormElements/InputDateRange/dependencies.ts", "../src/Atomic/FormElements/InputDateRange/components/OpenedPart.tsx", "../src/Functions/useResize.js", "../src/Atomic/UI/Modal/Modal.tsx", "../src/Functions/useKeyPress/useHandleKeyPress.ts", "../src/Functions/useKeyPress/useKeyPress.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/components/SelectItem.tsx", "../src/Atomic/FormElements/InputDateRange/InputDateRange.tsx", "../src/Atomic/FormElements/InputLink/InputLink.tsx", "../src/Atomic/FormElements/InputLink/index.ts", "../src/Atomic/FormElements/InputMask/InputMask.tsx", "../src/Atomic/FormElements/InputsRow/InputsRow.tsx", "../src/Atomic/FormElements/InputsRow/index.ts", "../src/Atomic/FormElements/InputWithAction/InputWithAction.tsx", "../src/Atomic/FormElements/InputWithAction/index.ts", "../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/RadioInput/index.ts", "../src/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.tsx", "../src/Atomic/FormElements/RangeInputs/RangeInputs.tsx", "../src/Atomic/FormElements/RangeInputs/index.ts", "../src/Atomic/FormElements/RangeList/RangeList.tsx", "../src/Functions/operations.js", "../src/Atomic/FormElements/RangeList/partial/RangeListRow.tsx", "../src/Atomic/FormElements/RangeList/index.ts", "../src/Atomic/FormElements/RangeSlider2/RangeSlider2.tsx", "../src/Atomic/FormElements/RangeSlider/RangeSlider.js", "../src/Atomic/FormElements/SwitchableRow/SwitchableRow.tsx", "../src/Atomic/FormElements/Switcher/index.ts", "../src/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.tsx", "../src/Atomic/FormElements/SwitcherHide/SwitcherHide.tsx", "../src/Atomic/FormElements/SwitcherHide/index.ts", "../src/Atomic/FormElements/SwitcherRadio/SwitcherRadio.tsx", "../src/Atomic/FormElements/SwitcherRadio/index.ts", "../src/Atomic/FormElements/SwitcherRange/SwitcherRange.tsx", "../src/Atomic/FormElements/SwitcherRange/index.ts", "../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/Text/index.ts", "../src/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.tsx", "../src/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.tsx", "../src/Atomic/UI/MonoAccordion/MonoAccordion.js", "../src/Atomic/FormElements/TieredCheckboxes/index.ts", "../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/InputCustomFetch/InputCustomFetch.tsx", "../src/Molecular/InputCustomFetch/lib/hooks/useDebouncedCallback.ts", "../src/Molecular/InputCustomFetch/lib/hooks/useFetchWithAbort.ts", "../src/Molecular/InputCustomFetch/lib/utils.ts", "../src/Molecular/InputPassword/InputPassword.tsx", "../src/Functions/customEventListener.js", "../src/Functions/dateTime.js", "../src/Functions/locale/createTranslator.js", "../src/Functions/Portal.js", "../src/Functions/useBodyScrollLock.js", "../src/Functions/useFieldFocus.js", "../src/Functions/useFormTools/index.js", "../src/Functions/useFormTools/functions/General.js", "../src/Functions/useFormTools/form-drivers/ArrayWithObjects.js", "../src/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js", "../src/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js", "../src/Functions/useFormTools/functions/RenderFields.js", "../src/Functions/useInputHighlightError.js", "../src/Functions/useLocalStorage.js", "../src/Functions/useLocationParams.js", "../src/Functions/useMediaQuery.js", "../src/Functions/useMetaInfo.js", "../src/Functions/useMouseUpOutside.js", "../src/Functions/useOnlineStatus.js", "../src/Functions/usePasswordChecker.js", "../src/Functions/usePrevious.js", "../src/Functions/useScrollTo.js", "../src/icons.ts", "../src/Atomic/Layout/Header/Header.tsx", "../src/Functions/presets/inputMaskPresets.js", "../src/Functions/presets/inputPresets.js", "../src/Atomic/UI/AccordionTable/AccordionTable.js", "../src/Atomic/UI/AdvancedTag/AdvancedTags.tsx", "../src/Atomic/UI/AdvancedTag/AdvTag.tsx", "../src/Atomic/UI/AdvancedTag/index.ts", "../src/Atomic/UI/Alert/index.ts", "../src/Atomic/UI/Box/Box.tsx", "../src/Atomic/UI/CircleProgressBar/CircleProgressBar.js", "../src/Atomic/UI/DateTime/DateTime.tsx", "../src/Atomic/UI/DebugContainer/DebugContainer.tsx", "../src/Atomic/UI/DebugContainer/useDebugContainer.tsx", "../src/Atomic/UI/DoubleString/DoubleString.tsx", "../src/Atomic/UI/DoubleString/index.ts", "../src/Atomic/UI/Hint/index.ts", "../src/Atomic/UI/Modal/ModalHOC.tsx", "../src/Atomic/UI/Modal/index.ts", "../src/Atomic/UI/MonoAccordion/index.ts", "../src/Atomic/UI/PageTitle/PageTitle.tsx", "../src/Atomic/UI/PageTitle/index.ts", "../src/Atomic/UI/Price/Price.tsx", "../src/Atomic/UI/Price/index.ts", "../src/Atomic/UI/PriceRange/PriceRange.tsx", "../src/Atomic/UI/PriceRange/index.ts", "../src/Atomic/UI/ProgressLine/ProgressLine.tsx", "../src/Atomic/UI/ProgressLine/index.ts", "../src/Atomic/UI/Status/index.ts", "../src/Atomic/UI/Table/Table.js", "../src/Atomic/UI/Table/Partials/TdHeader.js", "../src/Atomic/UI/Table/Partials/TdRow.js", "../src/Atomic/UI/Table/TdTypes/TdRange.js", "../src/Atomic/UI/Table/Partials/TdCell.js", "../src/Atomic/UI/Accordion/AccordionItem.tsx", "../src/Atomic/UI/Table/TdTypes/TdActions.js", "../src/Atomic/UI/Table/TdTypes/TdPriority.js", "../src/Atomic/UI/Table/TdTypes/TdWeight.js", "../src/Atomic/UI/Tag/index.ts", "../src/Atomic/UI/UserBox/UserBox.tsx", "../src/Atomic/UI/UserBox/index.ts", "../src/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.tsx", "../src/Atomic/UI/WizardStepper/ui/icons.tsx", "../src/Atomic/UI/WizardStepper/ui/StepRow/StepRow.tsx", "../src/Atomic/UI/WizardStepper/constructor.js", "../src/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.tsx", "../src/Atomic/UI/WizardStepper/ui/StateIcon/index.ts", "../src/Atomic/UI/WizardStepper/ui/StepWrapper/index.ts", "../src/Atomic/UI/WizardStepper/ui/index.ts", "../src/Atomic/UI/WizardStepper/index.ts", "../src/Functions/guards/typeGuards.ts", "../src/Functions/guards/assertions.ts", "../src/Functions/guards/safeValue.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * IntelicoKit \u2014 Main entry point\n * Re-exports all public subpaths, \u041A\u0420\u041E\u041C\u0415 \"router-ui\".\n *\n * \"router-ui\" (Accordion, ButtonsBar, NavLine, MainMenu) \u0441\u044E\u0434\u0430 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u043D\u043E\n * \u043D\u0435 \u0440\u0435\u044D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044F: \u043E\u043D require'\u0438\u0442 react-router-dom \u043D\u0430 \u0443\u0440\u043E\u0432\u043D\u0435 \u043C\u043E\u0434\u0443\u043B\u044F,\n * \u0430 \u0440\u043E\u0443\u0442\u0435\u0440 \u2014 optional peer. Root entry \u043E\u0431\u044F\u0437\u0430\u043D \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044C\u0441\u044F \u0443 \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B\u0435\u0439\n * \u0431\u0435\u0437 \u0440\u043E\u0443\u0442\u0435\u0440\u0430; \u043D\u0443\u0436\u043D\u044B \u044D\u0442\u0438 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u044B \u2014 \u0438\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u0443\u0439 'intelicoreact/router-ui'.\n *\n * \u0414\u043B\u044F tree-shaking \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0441\u0443\u0431\u043F\u0430\u043A\u0435\u0442\u043D\u044B\u0435 \u0438\u043C\u043F\u043E\u0440\u0442\u044B:\n * import { Button } from 'intelicoreact/ui';\n * import { Input } from 'intelicoreact/form';\n */\n\n// Classes (RESTAPI, etc.)\nexport * from './classes';\n\n// Constants\nexport * from './Constants/index.constants';\n\n// Form elements\nexport * from './form';\n\n// Hooks & functions\nexport * from './hooks';\n\n// Icons \u2014 \u0440\u0435\u044D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u0443\u0435\u043C \u0447\u0435\u0440\u0435\u0437 namespace, \u0447\u0442\u043E\u0431\u044B \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044C \u043A\u043E\u043B\u043B\u0438\u0437\u0438\u0439 (Arrow, Button)\nexport * as Icons from './icons';\n\n// Layout\nexport * from './layout';\n\n// Presets\nexport * from './presets';\n\n// Types\nexport * from './types';\n\n// UI components\nexport * from './ui';\n\n// Utilities\nexport * from './utils';\n", "/* eslint-disable no-unused-vars */\n\nconst RESPONSE_AS_OBJECT_ALWAYS_VALUE = \"always\";\nclass AbortableFetch {\n #pathPrefix = null;\n\n #method = null;\n\n #queryParameters = null;\n\n #headers = null;\n\n #body = null;\n\n #options = null;\n\n #callback = null;\n\n #catchCallback = null;\n\n #everyPromiseCallback = null;\n\n #isResponseAsObject = false;\n\n constructor(input) {\n if (input && (typeof input !== \"object\" || Array.isArray(input)))\n throw new Error(\"Not valid input value!\");\n this.getPathPrefix = this.getPathPrefix.bind(this);\n this.setPathPrefix = this.setPathPrefix.bind(this);\n this.getMethod = this.getMethod.bind(this);\n this.setMethod = this.setMethod.bind(this);\n this.getQueryParameters = this.getQueryParameters.bind(this);\n this.getQueryString = this.getQueryString.bind(this);\n this.setQueryParameters = this.setQueryParameters.bind(this);\n this.getHeaders = this.getHeaders.bind(this);\n this.getHeadersObj = this.getHeadersObj.bind(this);\n this.setHeaders = this.setHeaders.bind(this);\n this.getBody = this.getBody.bind(this);\n this.setBody = this.setBody.bind(this);\n this.getOptions = this.getOptions.bind(this);\n this.setOptions = this.setOptions.bind(this);\n this.getCallback = this.getCallback.bind(this);\n this.setCallback = this.setCallback.bind(this);\n this.getCatchCallback = this.getCatchCallback.bind(this);\n this.setCatchCallback = this.setCatchCallback.bind(this);\n this.getEveryPromiseCallback = this.getEveryPromiseCallback.bind(this);\n this.setEveryPromiseCallback = this.setEveryPromiseCallback.bind(this);\n this.getIsResponseAsObject = this.getIsResponseAsObject.bind(this);\n this.setIsResponseAsObject = this.setIsResponseAsObject.bind(this);\n this.getProps = this.getProps.bind(this);\n this.setProps = this.setProps.bind(this);\n\n this.request = this.request.bind(this);\n this.repeatRequest = this.repeatRequest.bind(this);\n this.setProps(input || {});\n }\n\n request(props) {\n if (!props || (typeof props !== \"object\" && typeof props !== \"string\"))\n throw new Error(\"Not valid props value!\");\n\n const stringifyBody = (b) =>\n b?.constructor === FormData ? b : JSON.stringify(b);\n\n this.requestInput = props;\n // eslint-disable-next-line no-use-before-define\n const requests = getRequestsArray.call(this, props);\n if (!requests.length)\n return Promise.reject(new Error(\"There are no any valid props\"));\n\n const abortController = new AbortController();\n let externalRequest = Promise.all(\n requests.map(async (item) => {\n const safelyQuery = item.path.includes(\"?\")\n ? `&${item.queryParameters.replace(/\\?/g, \"\")}`\n : item.queryParameters;\n let request = fetch(`${item.pathPrefix}${item.path}${safelyQuery}`, {\n ...item.options,\n method: item.method,\n headers: item.headers,\n ...(item.body ? { body: stringifyBody(item.body) } : {}),\n signal: abortController.signal,\n })\n .then((response) => {\n response.request = item;\n return response;\n })\n .catch((response) => {\n\n return Promise.resolve({\n ok: false,\n status: 0,\n statusText: response,\n request: item,\n })\n }\n\n );\n\n if (this.#everyPromiseCallback && !item.isSkipEveryPromiseCallback)\n request = request.then((response) =>\n this.#everyPromiseCallback(response),\n );\n\n if (item.callback)\n request = request.then((response) => item.callback(response));\n\n if (this.#isResponseAsObject)\n request = request.then((response) => ({ name: item.name, response }));\n\n return request;\n }),\n );\n\n externalRequest = externalRequest.then((response) =>\n response.length < 2 ? response[0] : response,\n );\n\n if (this.#isResponseAsObject) {\n externalRequest = externalRequest.then((response) => {\n if (Array.isArray(props) && props.length > 1)\n return response.reduce(\n (ac, item) => ({ ...ac, [item.name]: item.response }),\n {},\n );\n else\n return this.#isResponseAsObject === RESPONSE_AS_OBJECT_ALWAYS_VALUE\n ? { [response.name]: response.response }\n : response.response;\n });\n }\n\n externalRequest = externalRequest.then((response) =>\n this.#callback ? this.#callback(response) : response,\n );\n\n externalRequest = externalRequest.catch((error) =>\n this.#catchCallback ? this.#catchCallback(error) : error,\n );\n\n // eslint-disable-next-line no-proto\n externalRequest.__proto__.abort = () => abortController.abort();\n return externalRequest;\n\n function getRequestsArray(input) {\n const requestsArray = (() => {\n if (typeof input === \"string\") return [{ path: input }];\n return Array.isArray(input) ? [...input] : [input];\n })();\n\n return requestsArray.reduce((ac, item, index) => {\n const itemObj =\n typeof item === \"object\" && item !== null && !Array.isArray(item)\n ? item\n : {};\n const {\n name,\n path,\n method,\n queryParameters,\n headers,\n body,\n options,\n callback,\n mergeProps,\n isNoPathPrefix,\n isSkipEveryPromiseCallback,\n } = itemObj;\n\n\n\n const safelyMergeProps =\n mergeProps instanceof Object && !Array.isArray(mergeProps)\n ? mergeProps\n : {};\n const getMergeProps = (key) =>\n safelyMergeProps.all ?? safelyMergeProps[key];\n\n if (!path || typeof path !== \"string\") return ac;\n\n const {\n name: omitName,\n path: omitPath,\n pathPrefix: omitPathPrefix,\n method: omitMethod,\n queryParameters: omitQueryParameters,\n headers: omitHeaders,\n body: omitBody,\n options: omitOptions,\n callback: omitCallback,\n mergeProps: omitMergeProps,\n ...optionsRest\n } = options || {};\n\n return [\n ...ac,\n {\n path,\n pathPrefix:\n getMergeProps(\"pathPrefix\") === \"onlyLocal\" || isNoPathPrefix\n ? \"\"\n : this.#pathPrefix || \"\",\n method: (() => {\n if (getMergeProps(\"method\") === \"onlyLocal\")\n return method || \"GET\";\n return getMergeProps(\"method\") === \"onlyGlobal\"\n ? this.#method || \"GET\"\n : method || this.#method || \"GET\";\n })(),\n queryParameters: (() => {\n if (\n (getMergeProps(\"queryParameters\") ?? getMergeProps(\"query\")) ===\n \"onlyLocal\"\n ) {\n return this.getQueryString(this.getQueryArray(queryParameters));\n }\n return (getMergeProps(\"queryParameters\") ??\n getMergeProps(\"query\")) === \"onlyGlobal\"\n ? this.getQueryString(this.getQueryArray(this.#queryParameters))\n : this.getQueryString([\n ...this.getQueryArray(this.#queryParameters),\n ...this.getQueryArray(queryParameters),\n ]);\n })(),\n headers: (() => {\n if (getMergeProps(\"headers\") === \"onlyLocal\")\n return this.getHeadersObj(headers || {});\n return getMergeProps(\"headers\") === \"onlyGlobal\"\n ? this.getHeadersObj({ ...(this.#headers || {}) })\n : this.getHeadersObj({\n ...(this.#headers || {}),\n ...(headers || {}),\n });\n })(),\n body: (() => {\n if (getMergeProps(\"body\") === \"onlyLocal\") return body || null;\n if (getMergeProps(\"body\") === \"onlyGlobal\")\n return this.#body || null;\n if (\n body &&\n this.#body &&\n typeof body === typeof this.#body &&\n typeof body === \"object\"\n ) {\n return Array.isArray(body)\n ? [...this.#body, ...body]\n : { ...this.#body, ...body };\n } else return body || this.#body || null;\n })(),\n options: (() => {\n if (getMergeProps(\"options\") === \"onlyLocal\")\n return { ...(optionsRest || {}) };\n return getMergeProps(\"options\") === \"onlyGlobal\"\n ? { ...(this.#options || {}) }\n : { ...(this.#options || {}), ...(optionsRest || {}) };\n })(),\n callback,\n isSkipEveryPromiseCallback,\n ...(this.getIsResponseAsObject()\n ? { name: name && typeof name === \"string\" ? name : index }\n : {}),\n },\n ];\n }, []);\n }\n }\n\n repeatRequest() {\n return this.request(this.requestInput);\n }\n\n // ***** getters and setters *****\n getPathPrefix() {\n return this.#pathPrefix;\n }\n\n setPathPrefix(value) {\n if (value && typeof value !== \"string\")\n throw new Error(\"Not valid pathPrefix value!\");\n this.#pathPrefix = value || null;\n }\n\n getMethod() {\n return this.#method;\n }\n\n setMethod(value) {\n const methods = [\n \"GET\",\n \"HEAD\",\n \"POST\",\n \"PUT\",\n \"DELETE\",\n \"CONNECT\",\n \"OPTIONS\",\n \"TRACE\",\n \"PATCH\",\n ];\n if (value && !methods.includes(value))\n throw new Error(\"Not valid method value!\");\n this.#method = value || null;\n }\n\n getQueryParameters() {\n return this.#queryParameters;\n }\n\n // eslint-disable-next-line class-methods-use-this\n getQueryArray(value) {\n if (typeof value === \"string\") return value?.replace(/\\?/g, \"\")?.split(\"&\");\n else if (Array.isArray(value))\n return value.map((item) => item.replace(/\\?/g, \"\"));\n else if (typeof value === \"object\" && value !== null)\n return Object.keys(value)\n .filter((key) => key && value[key])\n .map((key) => `${key}=${value[key]}`);\n else return [];\n }\n\n // eslint-disable-next-line class-methods-use-this\n getQueryString(value) {\n if (!Array.isArray(value))\n throw new Error(\"Not valid query parameters value!\");\n return value.length ? `?${value.join(\"&\")}` : \"\";\n }\n\n setQueryParameters(value) {\n if (value && !Array.isArray(value))\n throw new Error(\"Not valid query parameters value!\");\n this.#queryParameters = value || null;\n }\n\n getHeaders() {\n return this.#headers;\n }\n\n // eslint-disable-next-line class-methods-use-this\n getHeadersObj(value) {\n const headers = new Headers();\n if (!value) return headers;\n\n if (typeof value !== \"object\" || Array.isArray(value))\n throw new Error(\"Not valid headers value!\");\n Object.keys(value).forEach((item) => {\n headers.append(item, value[item]);\n });\n return headers;\n }\n\n setHeaders(value) {\n if (value && (typeof value !== \"object\" || Array.isArray(value)))\n throw new Error(\"Not valid headers value!\");\n this.#headers = value || null;\n }\n\n getBody() {\n return this.#body;\n }\n\n setBody(value) {\n this.#body = value;\n }\n\n getOptions() {\n return this.#options;\n }\n\n setOptions(value) {\n if (value && (typeof value !== \"object\" || Array.isArray(value)))\n throw new Error(\"Not valid options value!\");\n this.#options = { ...value };\n }\n\n getCallback() {\n return this.#callback;\n }\n\n setCallback(value) {\n if (value && typeof value !== \"function\")\n throw new Error(\"Not valid callback value!\");\n this.#callback = value || null;\n }\n\n getCatchCallback() {\n return this.#catchCallback;\n }\n\n setCatchCallback(value) {\n if (value && typeof value !== \"function\")\n throw new Error(\"Not valid callback value!\");\n this.#catchCallback = value || null;\n }\n\n getEveryPromiseCallback() {\n return this.#everyPromiseCallback;\n }\n\n setEveryPromiseCallback(value) {\n if (value && typeof value !== \"function\")\n throw new Error(\"Not valid callback value!\");\n this.#everyPromiseCallback = value || null;\n }\n\n getIsResponseAsObject() {\n return this.#isResponseAsObject;\n }\n\n setIsResponseAsObject(value) {\n this.#isResponseAsObject =\n typeof value !== \"boolean\" && value !== \"always\" ? Boolean(value) : value;\n }\n\n getProps() {\n return {\n pathPrefix: this.getPathPrefix() || null,\n method: this.getMethod() || null,\n queryParameters: this.getQueryParameters() || null,\n headers: this.getHeaders() || null,\n body: this.getBody() || null,\n options: this.getOptions() || null,\n callback: this.getCallback() || null,\n everyPromiseCallback: this.getEveryPromiseCallback(),\n // isAnywayRunCallback: this.getIsAnywayRunCallback(),\n isResponseAsObject: this.getIsResponseAsObject(),\n };\n }\n\n setProps(input) {\n const {\n pathPrefix,\n method,\n queryParameters,\n headers,\n body,\n options,\n callback,\n catchCallback,\n everyPromiseCallback,\n // isAnywayRunCallback,\n isResponseAsObject,\n } = input;\n if (pathPrefix) this.setPathPrefix(pathPrefix);\n if (method) this.setMethod(method);\n if (queryParameters)\n this.setQueryParameters(this.getQueryArray(queryParameters));\n if (headers) this.setHeaders(headers);\n if (body) this.setBody(body);\n if (options) this.setOptions(options);\n if (callback) this.setCallback(callback);\n if (catchCallback) this.setCatchCallback(catchCallback);\n if (everyPromiseCallback)\n this.setEveryPromiseCallback(everyPromiseCallback);\n // if (isAnywayRunCallback) this.setIsAnywayRunCallback(isAnywayRunCallback);\n if (isResponseAsObject !== undefined)\n this.setIsResponseAsObject(isResponseAsObject);\n }\n}\n\nexport default AbortableFetch;\n", "const DEFAULT_ANIMATION_DURATION = 200;\n\nclass AnimatedHandler {\n constructor(params) {\n const {\n type = \"\",\n animationTarget,\n animation,\n settings,\n hendler,\n } = params || {};\n if (!animationTarget || !hendler) throw new Error(\"Bad input!\");\n const {\n keyframes,\n delay,\n direction,\n duration,\n easing,\n endDelay,\n fill,\n iterationStart,\n iterations,\n } = animation || {};\n\n // eslint-disable-next-line no-constructor-return\n return function (...args) {\n const keyframesToUse = Array.isArray(keyframes)\n ? keyframes\n : [\n { height: `${animationTarget.clientHeight}px`, opacity: 1 },\n { height: \"0\", opacity: 0 },\n ];\n const durationToUse = duration || DEFAULT_ANIMATION_DURATION;\n\n animationTarget.animate(keyframesToUse, animation);\n\n return new Promise((res) => {\n setTimeout(\n () => res(hendler ? hendler(...args) : undefined),\n durationToUse,\n );\n });\n };\n }\n}\n\nexport default AnimatedHandler;\n", "import type { HttpMethod, UnknownRecord } from './types';\nimport { getIsOnlyAnObject } from './_utils';\n\n// ? \u041A\u043E\u043B\u0431\u044D\u043A \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u043E\u0442\u0432\u0435\u0442\u0430 \u043D\u0430 \u0440\u0430\u0437\u043D\u044B\u0445 \u0443\u0440\u043E\u0432\u043D\u044F\u0445 \u0446\u0435\u043F\u043E\u0447\u043A\u0438 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432.\n// ? this \u0442\u0438\u043F\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D \u043A\u0430\u043A AbortableFetch: everyPromiseCallback/catchCallback \u0432\u044B\u0437\u044B\u0432\u0430\u044E\u0442\u0441\u044F \u043A\u0430\u043A\n// ? this.#callback(res) \u0438 \u043E\u043F\u0438\u0440\u0430\u044E\u0442\u0441\u044F \u043D\u0430 this === \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 AbortableFetch.\ntype ResponseCallback = (this: AbortableFetch, response: unknown) => unknown;\n\n// ? \u041A\u043E\u043B\u0431\u044D\u043A \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0433\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0430: \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043A\u0430\u043A item.callback(res) (\u0431\u0435\u0437 \u0437\u043D\u0430\u0447\u0438\u043C\u043E\u0433\u043E this).\ntype ItemCallback = (response: unknown) => unknown;\n\n// ? \u041F\u0440\u043E\u043C\u0438\u0441 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0430 request() \u0441 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u043C \u043C\u0435\u0442\u043E\u0434\u043E\u043C \u043E\u0442\u043C\u0435\u043D\u044B \u0432\u0441\u0435\u0439 \u0446\u0435\u043F\u043E\u0447\u043A\u0438 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432.\nexport type AbortablePromise<T> = Promise<T> & { abort: () => void };\n\n// ? \u041F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0439 (\u043D\u043E\u0440\u043C\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043D\u044B\u0439) \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u043E\u0434\u043D\u043E\u0433\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u0434\u043B\u044F \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0435\u0433\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F.\ninterface PreparedRequest {\n path: string;\n pathPrefix: string;\n method: HttpMethod;\n queryParameters: string;\n headers: Headers;\n body: unknown;\n options: UnknownRecord;\n callback?: ItemCallback;\n isSkipEveryPromiseCallback?: boolean;\n name?: string | number;\n}\n\nconst HTTP_METHODS: readonly string[] = ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'];\n\n// ? Type-guard: \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0441\u0442\u0440\u043E\u043A\u0430 \u0432\u0430\u043B\u0438\u0434\u043D\u044B\u043C HTTP-\u043C\u0435\u0442\u043E\u0434\u043E\u043C.\nfunction isHttpMethod(value: string): value is HttpMethod {\n return HTTP_METHODS.includes(value);\n}\n\nconst RESPONSE_AS_OBJECT_ALWAYS_VALUE = 'always';\nclass AbortableFetch {\n #pathPrefix: string | null = null;\n\n #method: HttpMethod | null = null;\n\n #queryParameters: string[] | null = null;\n\n #headers: UnknownRecord | null = null;\n\n #body: unknown = null;\n\n #options: UnknownRecord | null = null;\n\n #callback: ResponseCallback | null = null;\n\n #catchCallback: ResponseCallback | null = null;\n\n #everyPromiseCallback: ResponseCallback | null = null;\n\n #isResponseAsObject: boolean | 'always' = false;\n\n // ? \u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u0432\u0445\u043E\u0434 request() \u2014 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F repeatRequest() \u0434\u043B\u044F \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E\u0433\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u0442\u043E\u0439 \u0436\u0435 \u043F\u0430\u0447\u043A\u0438.\n requestInput: string | UnknownRecord | Array<string | UnknownRecord> = [];\n\n constructor(input?: UnknownRecord) {\n if (input && !getIsOnlyAnObject(input)) throw new Error('Not valid input value!');\n this.getPathPrefix = this.getPathPrefix.bind(this);\n this.setPathPrefix = this.setPathPrefix.bind(this);\n this.getMethod = this.getMethod.bind(this);\n this.setMethod = this.setMethod.bind(this);\n this.getQueryParameters = this.getQueryParameters.bind(this);\n this.getQueryString = this.getQueryString.bind(this);\n this.setQueryParameters = this.setQueryParameters.bind(this);\n this.getHeaders = this.getHeaders.bind(this);\n this.getHeadersObj = this.getHeadersObj.bind(this);\n this.setHeaders = this.setHeaders.bind(this);\n this.getBody = this.getBody.bind(this);\n this.setBody = this.setBody.bind(this);\n this.getOptions = this.getOptions.bind(this);\n this.setOptions = this.setOptions.bind(this);\n this.getCallback = this.getCallback.bind(this);\n this.setCallback = this.setCallback.bind(this);\n this.getCatchCallback = this.getCatchCallback.bind(this);\n this.setCatchCallback = this.setCatchCallback.bind(this);\n this.getEveryPromiseCallback = this.getEveryPromiseCallback.bind(this);\n this.setEveryPromiseCallback = this.setEveryPromiseCallback.bind(this);\n this.getIsResponseAsObject = this.getIsResponseAsObject.bind(this);\n this.setIsResponseAsObject = this.setIsResponseAsObject.bind(this);\n this.getProps = this.getProps.bind(this);\n this.setProps = this.setProps.bind(this);\n\n this.request = this.request.bind(this);\n this.repeatRequest = this.repeatRequest.bind(this);\n this.setProps(input || {});\n }\n\n /**\n * \u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u043E\u0434\u0438\u043D \u0438\u043B\u0438 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E HTTP-\u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 (\u043D\u0430\u0442\u0438\u0432\u043D\u044B\u0439 fetch) \u0441 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C\u044E \u043E\u0442\u043C\u0435\u043D\u044B.\n *\n * \u041C\u0435\u0442\u043E\u0434 `abort()` \u043D\u0430\u0432\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u043F\u0440\u043E\u0442\u043E\u0442\u0438\u043F \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043C\u043E\u0433\u043E \u043F\u0440\u043E\u043C\u0438\u0441\u0430 (\u043A\u0430\u043A \u0432 \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u0439 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438),\n * \u0447\u0442\u043E \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u044E \u0446\u0435\u043F\u043E\u0447\u043A\u0443 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 \u0432\u044B\u0437\u043E\u0432\u043E\u043C `abort()` \u043D\u0430 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0451\u043D\u043D\u043E\u043C \u043F\u0440\u043E\u043C\u0438\u0441\u0435.\n *\n * @param props - \u043F\u0443\u0442\u044C, \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u0438\u043B\u0438 \u0438\u0445 \u043C\u0430\u0441\u0441\u0438\u0432.\n * @returns \u041F\u0440\u043E\u043C\u0438\u0441 \u0441 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u043C (\u0444\u043E\u0440\u043C\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043E\u0442 isResponseAsObject); \u043D\u0430 \u043F\u0440\u043E\u0442\u043E\u0442\u0438\u043F\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D `abort()`.\n */\n async request(props: string | UnknownRecord | Array<string | UnknownRecord>): Promise<unknown> {\n if (!getIsOnlyAnObject(props) && !Array.isArray(props) && typeof props !== 'string') throw new Error('Not valid props value!');\n\n const stringifyBody = (b: unknown): FormData | string => (b instanceof FormData ? b : JSON.stringify(b));\n\n this.requestInput = props;\n const requests = getRequestsArray.call(this, props);\n\n const ABORTABLE_FETCH_CONTEXT = this;\n const abortController = new AbortController();\n\n // ? \u0414\u043E\u043A\u0438\u0434\u044B\u0432\u0430\u0435\u0442 \u043D\u0430 \u043E\u0442\u0432\u0435\u0442 (Response \u0438\u043B\u0438 \u043F\u0441\u0435\u0432\u0434\u043E-\u043E\u0442\u0432\u0435\u0442) \u0441\u043B\u0443\u0436\u0435\u0431\u043D\u044B\u0435 \u043F\u043E\u043B\u044F request/name.\n // ? \u041C\u0443\u0442\u0438\u0440\u0443\u0435\u043C \u0438\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442 (\u0432\u0430\u0436\u043D\u043E \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C Response \u0434\u043B\u044F downstream-\u043F\u0440\u043E\u0432\u0435\u0440\u043E\u043A), \u0431\u0435\u0437 \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u0442\u0438\u043F\u043E\u0432.\n const addProps = (response: object, request: PreparedRequest): object => {\n return Object.assign(response, {\n request,\n ...(ABORTABLE_FETCH_CONTEXT.#isResponseAsObject ? { name: getIsOnlyAnObject(request) ? request.name || '' : '' } : {}),\n });\n };\n\n const externalRequest = Promise.all(\n requests.map((item) => {\n // \u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0439 \u0443\u0440\u043E\u0432\u0435\u043D\u044C (\u043A\u0430\u0436\u0434\u044B\u0439 \u0437\u0430\u043F\u0440\u043E\u0441 \u0438\u0437 \u043C\u0430\u0441\u0441\u0438\u0432\u0430)\n\n const safelyQuery = item.path.includes('?') ? `&${item.queryParameters.replace(/\\?/g, '')}` : item.queryParameters;\n const internalRequest = fetch(`${item.pathPrefix}${item.path}${safelyQuery}`, {\n ...item.options,\n method: item.method,\n headers: item.headers,\n ...(item.body ? { body: stringifyBody(item.body) } : {}),\n signal: abortController.signal,\n })\n // ? \u0414\u043E\u043A\u0438\u0434\u044B\u0432\u0430\u0435\u043C \u0438\u043D\u0444\u044B\n .then(async response => addProps(response, item))\n // ! \u0412\u0410\u0416\u041D\u041E !\n // ! \u0413\u0430\u0440\u0430\u043D\u0442\u0438\u0440\u0443\u0435\u043C \u0447\u0442\u043E \u043A\u0430\u0436\u0434\u044B\u0439 \u0437\u0430\u043F\u0440\u043E\u0441 \u0417\u0410\u0420\u0415\u0417\u041E\u041B\u0412\u0418\u0422\u0421\u042F\n .catch(async (response: unknown) => {\n // ? \u0415\u0441\u043B\u0438 fetch \u043E\u0442\u0440\u0430\u0431\u043E\u0442\u0430\u043B \u043F\u043E \u043D\u043E\u0432\u043E\u043C\u0443 \u0438 \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u043B \u043E\u0442\u0432\u0435\u0442\u044B \u0441 \"\u043D\u0435 200-\u043C\u0438 \u043A\u043E\u0434\u0430\u043C\u0438\" \u0432 catch,\n // ? \u0442\u043E \u043E\u0436\u0438\u0434\u0430\u0435\u043C \u0447\u0442\u043E response \u0431\u0443\u0434\u0435\u0442 \u041D\u0415 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C Error, \u0430 \u0432\u0441\u0435-\u0442\u0430\u043A\u0438 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C Response.\n // ? \u041F\u043E\u044D\u0442\u043E\u043C\u0443 \u0432 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0438\u043C \u0435\u0433\u043E \u043A\u0430\u043A \u0432 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u043C then\n if (response instanceof Response) return Promise.resolve(addProps(response, item));\n\n // ? \u0412\u043E \u0432\u0441\u0435\u0445 \u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0445 \u0441\u043B\u0443\u0447\u0430\u044F\u0445 \u0442\u0440\u0430\u043A\u0442\u0443\u0435\u043C \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044E \u043A\u0430\u043A \"\u0437\u0430\u043F\u0440\u043E\u0441 \u041D\u0415 \u0443\u0448\u0435\u043B\":\n // ? \u043F\u0440\u043E\u043C\u0438\u0441 \u0432\u0441\u0435-\u0440\u0430\u0432\u043D\u043E \u0440\u0435\u0437\u043E\u043B\u0432\u0438\u043C, \u0433\u043E\u0442\u0434\u0430\u0435\u043C \"\u043F\u0441\u0435\u0432\u0434\u043E-\u043E\u0442\u0432\u0435\u0442\"\n return Promise.resolve(\n addProps(\n {\n ok: false,\n status: 0,\n statusText: response,\n request: item,\n },\n item,\n ),\n );\n })\n // ? \u041D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043E\u0442 \u0442\u043E\u0433\u043E \u0447\u0442\u043E \u0441\u0440\u0430\u0431\u043E\u0442\u0430\u043A\u0435\u0442 \u043E\u0436\u0438\u0434\u0430\u0435\u043C \u0437\u0430\u0440\u0435\u0437\u043E\u043B\u0432\u043B\u0435\u043D\u043D\u044B\u0439 \u043F\u0440\u043E\u043C\u0438\u0441, \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0430\u0435\u043C then-chain\n\n // ? \u041E\u0442\u0440\u0430\u0431\u0430\u0438\u044B\u0432\u0430\u0435\u043C everyPromiseCallback\n // ? (\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043A\u043E\u043B\u0431\u0435\u043A \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0430, \u043E\u043F\u0438\u0441\u0430\u043D\u044B\u0439 \u043D\u0430 \u0443\u0440\u043E\u0432\u043D\u0435 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0430 AbortableFetch)\n .then(async (res) => {\n return typeof ABORTABLE_FETCH_CONTEXT.#everyPromiseCallback === 'function' && !item.isSkipEveryPromiseCallback\n ? await ABORTABLE_FETCH_CONTEXT.#everyPromiseCallback(res)\n : res;\n })\n // ? \u041E\u0442\u0440\u0430\u0431\u0430\u0438\u044B\u0432\u0430\u0435\u043C \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0439callback\n .then(async (res) => {\n return await (typeof item.callback === 'function' ? item.callback(res) : res);\n })\n // ? \u041F\u043E\u0434\u0433\u043E\u0442\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u043C \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0443 \u0434\u043B\u044F \u0432\u043D\u0435\u0448\u043D\u0435\u0433\u043E \u0443\u0440\u043E\u0432\u043D\u044F\n .then(async (res) => {\n return { request: item, response: res, ...(item.name ? { name: item.name } : {}) };\n });\n\n // ? \u041A\u0430\u0436\u0434\u043E\u043C\u0443 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0435\u043C\u0443 \u043F\u0440\u043E\u043C\u0438\u0441\u0443 \u0432 \u043F\u0440\u043E\u0442\u043E\u0442\u0438\u043F\u044B \u043B\u0435\u043F\u0438\u043C \u043C\u0435\u0442\u043E\u0434 \u043E\u0442\u043C\u0435\u043D\u044B \u0432\u0441\u0435\u0439 \u0446\u0435\u043F\u043E\u0447\u043A\u0438 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432\n const internalProto: { abort?: () => void } = Object.getPrototypeOf(internalRequest);\n internalProto.abort = () => abortController.abort();\n return internalRequest;\n }),\n )\n // \u0412\u043D\u0435\u0448\u043D\u0438\u0439 \u0443\u0440\u043E\u0432\u0435\u043D\u044C (Promise.all)\n // ? \u041F\u0440\u043E\u0446\u0435\u0441\u0441\u0438\u043C \u0432\u043E\u0437\u0432\u0440\u0430\u0442 \u0432\u043D\u0435\u0448\u043D\u0435\u0433\u043E \u0443\u0440\u043E\u0432\u043D\u044F (\u043A\u0430\u043A \u043E\u0431\u044A\u0435\u043A\u0442)\n .then(async (resArr) => {\n // ? \u0415\u0441\u043B\u0438 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 \u043D\u0435\u0442, \u0442\u043E \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043C \u043F\u0443\u0441\u0442\u043E\u0439 \u043E\u0431\u044A\u0435\u043A\u0442 \u0438\u043B\u0438 \u043C\u0430\u0441\u0441\u0438\u0432, true \u0438\u043B\u0438 \"always\" - \u0440\u0430\u0432\u043D\u043E\u0437\u043D\u0430\u0447\u043D\u043E\n if (resArr.length < 1) {\n return ABORTABLE_FETCH_CONTEXT.#isResponseAsObject ? {} : [];\n }\n\n // ? \u0415\u0441\u043B\u0438 #isResponseAsObject === \"always\", \u0442\u043E \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043E\u0442 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0432\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 \u0432\u044B\u0434\u0430\u0435\u043C \u043E\u0431\u044A\u0435\u043A\u0442\n if (ABORTABLE_FETCH_CONTEXT.#isResponseAsObject === RESPONSE_AS_OBJECT_ALWAYS_VALUE) {\n return resArr.reduce<UnknownRecord>((ac, item) => ({ ...ac, [String(item.name)]: item.response }), {});\n }\n\n // ? \u0415\u0441\u043B\u0438 \u0437\u0430\u043F\u0440\u043E\u0441 \u043E\u0434\u0438\u043D, \u0442\u043E \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043C \u0435\u0433\u043E \u043A\u0430\u043A \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u0439 \u043E\u0442\u0432\u0435\u0442\n if (resArr.length === 1) return resArr[0].response;\n\n // ? \u0415\u0441\u043B\u0438 \u0434\u043E\u0449\u043B\u0438 \u0434\u043E \u0441\u044E\u0434\u0430, \u0442\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 \u0431\u043E\u043B\u044C\u0448\u0435 \u0447\u0435\u043C 1 \u0438 \u043D\u0443\u0436\u043D\u043E \u043F\u043E\u043D\u044F\u0442\u044C \u043A\u0430\u043A \u0438\u0445 \u0441\u043A\u043E\u043C\u043F\u043E\u043D\u043E\u0432\u0430\u0442\u044C\n // ? - \u043A\u0430\u043A \u043E\u0431\u044A\u0435\u043A\u0435\u0442 (#isResponseAsObject === true \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0435\u0441\u043B\u0438 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 \u0431\u043E\u043B\u044C\u0448\u0435 \u0447\u0435\u043C 1)\n // ? - \u043A\u0430\u043A \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0439 \u043E\u0442\u0432\u0435\u0442 \u043E\u0442 Promise.all (\u0442.\u0435. \u043C\u0430\u0441\u0441\u0438\u0432 \u043E\u0442\u0432\u0435\u0442\u043E\u0432)\n return ABORTABLE_FETCH_CONTEXT.#isResponseAsObject === true\n ? resArr.reduce<UnknownRecord>((ac, item) => ({ ...ac, [String(item.name)]: item.response }), {})\n : resArr.map(item => item.response);\n })\n // ? \u041F\u043E\u0441\u043B\u0435 \u043E\u0442\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u0444\u043E\u0440\u043C\u0430\u0442\u0430 \u043E\u0442\u0432\u0435\u0442\u0430 \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C/\u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u043C \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0439 callback\n .then(async (res) => {\n return typeof ABORTABLE_FETCH_CONTEXT.#callback === 'function' ? await ABORTABLE_FETCH_CONTEXT.#callback(res) : res;\n })\n // ? \u041D\u0430 \u0441\u043B\u0443\u0447\u0430\u0439 \u0440\u0435\u0436\u0435\u043A\u0442\u0430 Promise.all \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C/\u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u043C \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0439 catchCallback\n .catch(async (res: unknown) => {\n return typeof ABORTABLE_FETCH_CONTEXT.#catchCallback === 'function' ? await ABORTABLE_FETCH_CONTEXT.#catchCallback(res) : res;\n });\n\n // ? \u0412 \u043F\u0440\u043E\u0442\u043E\u0442\u0438\u043F\u044B Promise.all \u043B\u0435\u043F\u0438\u043C \u043C\u0435\u0442\u043E\u0434 \u043E\u0442\u043C\u0435\u043D\u044B \u0432\u0441\u0435\u0439 \u0446\u0435\u043F\u043E\u0447\u043A\u0438 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432\n const externalProto: { abort?: () => void } = Object.getPrototypeOf(externalRequest);\n externalProto.abort = () => abortController.abort();\n\n return externalRequest;\n\n function getRequestsArray(this: AbortableFetch, input: string | UnknownRecord | Array<string | UnknownRecord>): PreparedRequest[] {\n // ? \u041F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u043A \u043E\u0434\u043D\u043E\u043C\u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0443 - \u043C\u0430\u0441\u0441\u0438\u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432\n const requestsArray: Array<string | UnknownRecord> = (() => {\n if (typeof input === 'string') return [{ path: input }];\n return Array.isArray(input) ? [...input] : [input];\n })();\n\n return requestsArray.reduce<PreparedRequest[]>((ac, item, index) => {\n const itemObj: UnknownRecord = getIsOnlyAnObject(item) ? item : {};\n const { name, path, method, queryParameters, headers, body, options, callback, mergeProps, isNoPathPrefix, isSkipEveryPromiseCallback }\n = itemObj;\n\n const safelyMergeProps: UnknownRecord = getIsOnlyAnObject(mergeProps) ? mergeProps : {};\n const getMergeProps = (key: string): unknown => safelyMergeProps.all ?? safelyMergeProps[key];\n\n if (!path || typeof path !== 'string') return ac;\n\n const {\n name: omitName,\n path: omitPath,\n pathPrefix: omitPathPrefix,\n method: omitMethod,\n queryParameters: omitQueryParameters,\n headers: omitHeaders,\n body: omitBody,\n options: omitOptions,\n callback: omitCallback,\n mergeProps: omitMergeProps,\n ...optionsRest\n } = getIsOnlyAnObject(options) ? options : {};\n\n // ? \u041B\u043E\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u043C\u0435\u0442\u043E\u0434 \u0437\u0430\u043F\u0440\u043E\u0441\u0430, \u043F\u0440\u0438\u0432\u0435\u0434\u0451\u043D\u043D\u044B\u0439 \u043A HttpMethod (\u0438\u043B\u0438 null, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u0432\u0430\u043B\u0438\u0434\u043D\u043E).\n const localMethod: HttpMethod | null = typeof method === 'string' && isHttpMethod(method) ? method : null;\n // ? \u041B\u043E\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 callback, \u043E\u0431\u0451\u0440\u043D\u0443\u0442\u044B\u0439 \u0432 \u0442\u0438\u043F\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0443\u044E \u0444\u0443\u043D\u043A\u0446\u0438\u044E (\u0431\u0435\u0437 \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u0442\u0438\u043F\u043E\u0432).\n const localCallback: ItemCallback | undefined = typeof callback === 'function' ? (res: unknown) => callback(res) : undefined;\n\n return [\n ...ac,\n {\n path,\n pathPrefix: getMergeProps('pathPrefix') === 'onlyLocal' || isNoPathPrefix ? '' : this.#pathPrefix || '',\n method: ((): HttpMethod => {\n if (getMergeProps('method') === 'onlyLocal') return localMethod || 'GET';\n return getMergeProps('method') === 'onlyGlobal' ? this.#method || 'GET' : localMethod || this.#method || 'GET';\n })(),\n queryParameters: ((): string => {\n if ((getMergeProps('queryParameters') ?? getMergeProps('query')) === 'onlyLocal') {\n return this.getQueryString(this.getQueryArray(queryParameters));\n }\n return (getMergeProps('queryParameters') ?? getMergeProps('query')) === 'onlyGlobal'\n ? this.getQueryString(this.getQueryArray(this.#queryParameters))\n : this.getQueryString([...this.getQueryArray(this.#queryParameters), ...this.getQueryArray(queryParameters)]);\n })(),\n headers: ((): Headers => {\n if (getMergeProps('headers') === 'onlyLocal') return this.getHeadersObj(getIsOnlyAnObject(headers) ? headers : {});\n return getMergeProps('headers') === 'onlyGlobal'\n ? this.getHeadersObj({ ...(this.#headers || {}) })\n : this.getHeadersObj({\n ...(this.#headers || {}),\n ...(getIsOnlyAnObject(headers) ? headers : {}),\n });\n })(),\n body: ((): unknown => {\n if (getMergeProps('body') === 'onlyLocal') return body || null;\n if (getMergeProps('body') === 'onlyGlobal') return this.#body || null;\n if (body && this.#body && typeof body === typeof this.#body && typeof body === 'object') {\n return Array.isArray(body)\n ? [...(Array.isArray(this.#body) ? this.#body : []), ...body]\n : { ...(getIsOnlyAnObject(this.#body) ? this.#body : {}), ...(getIsOnlyAnObject(body) ? body : {}) };\n }\n else {\n return body || this.#body || null;\n }\n })(),\n options: ((): UnknownRecord => {\n if (getMergeProps('options') === 'onlyLocal') return { ...optionsRest };\n return getMergeProps('options') === 'onlyGlobal' ? { ...(this.#options || {}) } : { ...(this.#options || {}), ...optionsRest };\n })(),\n callback: localCallback,\n isSkipEveryPromiseCallback: Boolean(isSkipEveryPromiseCallback),\n ...(this.getIsResponseAsObject() ? { name: name && typeof name === 'string' ? name : index } : {}),\n },\n ];\n }, []);\n }\n }\n\n /** \u041F\u043E\u0432\u0442\u043E\u0440\u044F\u0435\u0442 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u043D\u044B\u0439 \u0437\u0430\u043F\u0440\u043E\u0441 (\u0442\u0443 \u0436\u0435 \u043F\u0430\u0447\u043A\u0443). */\n repeatRequest(): Promise<unknown> {\n return this.request(this.requestInput);\n }\n\n // ***** getters and setters *****\n getPathPrefix(): string | null {\n return this.#pathPrefix;\n }\n\n setPathPrefix(value?: string | null): void {\n if (value && typeof value !== 'string') throw new Error('Not valid pathPrefix value!');\n this.#pathPrefix = value || null;\n }\n\n getMethod(): HttpMethod | null {\n return this.#method;\n }\n\n setMethod(value?: HttpMethod | null): void {\n if (value && !isHttpMethod(value)) throw new Error('Not valid method value!');\n this.#method = value || null;\n }\n\n getQueryParameters(): string[] | null {\n return this.#queryParameters;\n }\n\n getQueryArray(value: unknown): string[] {\n if (typeof value === 'string') {\n return (value[0] === '?' ? value.slice(1) : value).split('&');\n }\n else if (Array.isArray(value)) {\n return value.map(item => `${item}`);\n }\n else if (typeof value === 'object' && value !== null) {\n const record: UnknownRecord = getIsOnlyAnObject(value) ? value : {};\n return Object.keys(record)\n .filter(key => Boolean(key) && Boolean(record[key]))\n .map(key => `${key}=${record[key]}`);\n }\n else {\n return [];\n }\n }\n\n getQueryString(value: string[] | null): string {\n if (!value) return '';\n if (!Array.isArray(value)) throw new Error('Not valid query parameters value!');\n return value.length ? `?${value.join('&')}` : '';\n }\n\n setQueryParameters(value?: string[] | null): void {\n if (value && !Array.isArray(value)) throw new Error('Not valid query parameters value!');\n this.#queryParameters = value || null;\n }\n\n getHeaders(): UnknownRecord | null {\n return this.#headers;\n }\n\n getHeadersObj(obj: UnknownRecord): Headers {\n const headers = new Headers();\n if (!obj) return headers;\n\n if (typeof obj !== 'object' || Array.isArray(obj)) throw new Error('Not valid headers value!');\n Object.keys(obj).forEach((key) => {\n headers.append(key, `${obj[key]}`);\n });\n return headers;\n }\n\n setHeaders(value?: UnknownRecord | null): void {\n if (value && (typeof value !== 'object' || Array.isArray(value))) throw new Error('Not valid headers value!');\n this.#headers = value || null;\n }\n\n getBody(): unknown {\n return this.#body;\n }\n\n setBody(value: unknown): void {\n this.#body = value;\n }\n\n getOptions(): UnknownRecord | null {\n return this.#options;\n }\n\n setOptions(value?: UnknownRecord | null): void {\n if (value && (typeof value !== 'object' || Array.isArray(value))) throw new Error('Not valid options value!');\n this.#options = { ...value };\n }\n\n getCallback(): ResponseCallback | null {\n return this.#callback;\n }\n\n setCallback(value?: ResponseCallback | null): void {\n if (value && typeof value !== 'function') throw new Error('Not valid callback value!');\n this.#callback = value || null;\n }\n\n getCatchCallback(): ResponseCallback | null {\n return this.#catchCallback;\n }\n\n setCatchCallback(value?: ResponseCallback | null): void {\n if (value && typeof value !== 'function') throw new Error('Not valid callback value!');\n this.#catchCallback = value || null;\n }\n\n getEveryPromiseCallback(): ResponseCallback | null {\n return this.#everyPromiseCallback;\n }\n\n setEveryPromiseCallback(value?: ResponseCallback | null): void {\n if (value && typeof value !== 'function') throw new Error('Not valid callback value!');\n this.#everyPromiseCallback = value || null;\n }\n\n getIsResponseAsObject(): boolean | 'always' {\n return this.#isResponseAsObject;\n }\n\n setIsResponseAsObject(value: unknown): void {\n this.#isResponseAsObject = typeof value !== 'boolean' && value !== 'always' ? Boolean(value) : value;\n }\n\n getProps(): UnknownRecord {\n return {\n pathPrefix: this.getPathPrefix() || null,\n method: this.getMethod() || null,\n queryParameters: this.getQueryParameters() || null,\n headers: this.getHeaders() || null,\n body: this.getBody() || null,\n options: this.getOptions() || null,\n callback: this.getCallback() || null,\n everyPromiseCallback: this.getEveryPromiseCallback(),\n // isAnywayRunCallback: this.getIsAnywayRunCallback(),\n isResponseAsObject: this.getIsResponseAsObject(),\n };\n }\n\n setProps(input: UnknownRecord): void {\n const {\n pathPrefix,\n method,\n queryParameters,\n headers,\n body,\n options,\n callback,\n catchCallback,\n everyPromiseCallback,\n // isAnywayRunCallback,\n isResponseAsObject,\n } = input;\n if (pathPrefix) this.setPathPrefix(typeof pathPrefix === 'string' ? pathPrefix : null);\n if (method) this.setMethod(typeof method === 'string' && isHttpMethod(method) ? method : null);\n if (queryParameters) this.setQueryParameters(this.getQueryArray(queryParameters));\n if (headers) this.setHeaders(getIsOnlyAnObject(headers) ? headers : null);\n if (body) this.setBody(body);\n if (options) this.setOptions(getIsOnlyAnObject(options) ? options : null);\n // ? \u041A\u043E\u043B\u0431\u044D\u043A\u0438 \u043E\u0431\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043C \u0441 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435\u043C this (\u0447\u0435\u0440\u0435\u0437 .call): everyPromiseCallback/catchCallback\n // ? \u043E\u043F\u0438\u0440\u0430\u044E\u0442\u0441\u044F \u043D\u0430 this === \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 AbortableFetch. \u041F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0442\u0438\u043F\u043E\u0432 \u043D\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F.\n if (callback && typeof callback === 'function') {\n const fn = callback;\n this.setCallback(function wrappedCallback(this: AbortableFetch, response: unknown) {\n return fn.call(this, response);\n });\n }\n if (catchCallback && typeof catchCallback === 'function') {\n const fn = catchCallback;\n this.setCatchCallback(function wrappedCatchCallback(this: AbortableFetch, response: unknown) {\n return fn.call(this, response);\n });\n }\n if (everyPromiseCallback && typeof everyPromiseCallback === 'function') {\n const fn = everyPromiseCallback;\n this.setEveryPromiseCallback(function wrappedEveryPromiseCallback(this: AbortableFetch, response: unknown) {\n return fn.call(this, response);\n });\n }\n // if (isAnywayRunCallback) this.setIsAnywayRunCallback(isAnywayRunCallback);\n if (isResponseAsObject !== undefined) this.setIsResponseAsObject(isResponseAsObject);\n }\n}\n\nexport default AbortableFetch;\n", "import type { CredentialsState, FetchSystemContext, UnknownRecord } from './types';\nimport AbortableFetch from './AbortableFetch';\n\n/**\n * Type-guard: \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u00AB\u0447\u0438\u0441\u0442\u044B\u043C\u00BB \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C-\u0441\u043B\u043E\u0432\u0430\u0440\u0451\u043C.\n * \u041E\u0442\u0441\u0435\u043A\u0430\u0435\u0442 \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B, \u0444\u0443\u043D\u043A\u0446\u0438\u0438, null, \u043C\u0430\u0441\u0441\u0438\u0432\u044B, Set \u0438 Map.\n *\n * @param input - \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435.\n * @returns `true`, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u2014 \u043E\u0431\u044B\u0447\u043D\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442 (\u0441 \u0441\u0443\u0436\u0435\u043D\u0438\u0435\u043C \u0442\u0438\u043F\u0430 \u0434\u043E {@link UnknownRecord}).\n */\nexport function getIsOnlyAnObject(input: unknown): input is UnknownRecord {\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/**\n * \u0420\u0435\u043A\u0443\u0440\u0441\u0438\u0432\u043D\u043E \u043A\u043B\u043E\u043D\u0438\u0440\u0443\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u044E\u0442\u0441\u044F \u043A\u0430\u043A \u0435\u0441\u0442\u044C, \u043C\u0430\u0441\u0441\u0438\u0432\u044B \u0438 \u043E\u0431\u044A\u0435\u043A\u0442\u044B \u2014 \u0433\u043B\u0443\u0431\u043E\u043A\u043E).\n *\n * @param input - \u043A\u043B\u043E\u043D\u0438\u0440\u0443\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435.\n * @returns \u0413\u043B\u0443\u0431\u043E\u043A\u0430\u044F \u043A\u043E\u043F\u0438\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F.\n */\nexport function clone(input: unknown): unknown {\n if (input === null || typeof input !== 'object') return input;\n if (Array.isArray(input)) return input.map(item => clone(item));\n const source: UnknownRecord = getIsOnlyAnObject(input) ? input : {};\n const data: UnknownRecord = {};\n Object.keys(source).forEach((key) => {\n data[key] = clone(source[key]);\n });\n return data;\n}\n\n/**\n * \u0412\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043A\u043E\u043F\u0438\u044E \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0431\u0435\u0437 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u0445 \u043A\u043B\u044E\u0447\u0435\u0439.\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, \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)\n *\n * @param obj - \u0438\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442.\n * @param keys - \u043A\u043B\u044E\u0447\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043D\u0443\u0436\u043D\u043E \u0438\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u044C.\n * @returns \u041D\u043E\u0432\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442 \u0431\u0435\u0437 \u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0435\u043D\u043D\u044B\u0445 \u043A\u043B\u044E\u0447\u0435\u0439.\n */\nexport function omitKeys(obj?: UnknownRecord, keys: string[] = []): UnknownRecord {\n const source: UnknownRecord = obj ?? {};\n const keySet = new Set(keys);\n const result: UnknownRecord = {};\n Object.keys(source).forEach((key) => {\n if (!keySet.has(key)) result[key] = source[key];\n });\n return result;\n}\n\n/**\n * \u041A\u043B\u043E\u043D\u0438\u0440\u0443\u0435\u0442 Response \u0447\u0435\u0440\u0435\u0437 \u043D\u0430\u0442\u0438\u0432\u043D\u044B\u0439 `clone()`, \u0430 \u043F\u0440\u043E\u0447\u0438\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u2014 \u0433\u043B\u0443\u0431\u043E\u043A\u0438\u043C {@link clone}.\n *\n * @param res - \u043E\u0431\u044A\u0435\u043A\u0442 Response \u043B\u0438\u0431\u043E \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435.\n * @returns \u041F\u0440\u043E\u043C\u0438\u0441 \u0441 \u043A\u043B\u043E\u043D\u043E\u043C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F.\n */\nexport async function getResponseClone(res: unknown): Promise<unknown> {\n if (res && typeof res === 'object' && 'clone' in res && typeof res.clone === 'function') {\n return res.clone();\n }\n return clone(res);\n}\n\n/**\n * \u0414\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 (`this`) \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u043C\u0435\u0442\u043E\u0434\u044B \u0438\u0437 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 `data` (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E \u0441 \u043F\u0440\u0435\u0444\u0438\u043A\u0441\u043E\u043C).\n * \u041A\u043E\u043F\u0438\u0440\u0443\u044E\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F-\u0444\u0443\u043D\u043A\u0446\u0438\u0438.\n *\n * @param this - \u0446\u0435\u043B\u0435\u0432\u043E\u0439 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 (\u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044F \u0447\u0435\u0440\u0435\u0437 `.call`).\n * @param data - \u0441\u043B\u043E\u0432\u0430\u0440\u044C \u043C\u0435\u0442\u043E\u0434\u043E\u0432 \u0434\u043B\u044F \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F.\n * @param prefix - \u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043F\u0440\u0435\u0444\u0438\u043A\u0441 \u0438\u043C\u0435\u043D\u0438 \u043C\u0435\u0442\u043E\u0434\u0430.\n */\nexport function addCustomMethods(this: UnknownRecord, data: UnknownRecord, prefix?: string): void {\n const preparedPrefix = (prefix || '').toString();\n\n Object.keys(data).forEach((key) => {\n const preparedKey = `${preparedPrefix}${key}`;\n if (typeof data[key] === 'function' && getIsOnlyAnObject(this)) this[preparedKey] = data[key];\n });\n}\n\n/**\n * \u0413\u043E\u0442\u043E\u0432\u0438\u0442 \u0438 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 {@link AbortableFetch} \u0434\u043B\u044F \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430 API.\n *\n * \u041F\u043E\u0434\u043C\u0435\u0448\u0438\u0432\u0430\u0435\u0442 \u0442\u043E\u043A\u0435\u043D\u044B \u0430\u0432\u0442\u043E\u0440\u0438\u0437\u0430\u0446\u0438\u0438 (\u0435\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0451\u043D credentialsProcessing), \u043E\u0431\u0449\u0438\u0435 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438/\u043E\u043F\u0446\u0438\u0438\n * \u0438\u0437 `addAsCommon`, \u0430 \u0442\u0430\u043A\u0436\u0435 \u043D\u0430\u0432\u0435\u0448\u0438\u0432\u0430\u0435\u0442 everyPromiseCallback (\u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043A\u043E\u0434\u043E\u0432 \u043E\u0442\u0432\u0435\u0442\u0430) \u0438\n * catchCallback (\u0444\u043B\u043E\u0443 \u0440\u0435\u0444\u0440\u0435\u0448\u0430 \u0442\u043E\u043A\u0435\u043D\u043E\u0432).\n *\n * @param this - \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0430 API (\u0441\u043C. {@link FetchSystemContext}).\n * @param isGetBody - \u0438\u0437\u0432\u043B\u0435\u043A\u0430\u0442\u044C \u043B\u0438 \u0442\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430 \u0432 everyPromiseCallback.\n * @returns \u041F\u0440\u043E\u043C\u0438\u0441 \u0441 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C {@link AbortableFetch} \u043B\u0438\u0431\u043E `null`, \u0435\u0441\u043B\u0438 \u0440\u0435\u0444\u0440\u0435\u0448 \u0442\u043E\u043A\u0435\u043D\u0430 \u043D\u0435 \u0443\u0434\u0430\u043B\u0441\u044F.\n */\nexport async function getInstanceOfFetchSystem(this: FetchSystemContext, isGetBody?: boolean): Promise<AbortableFetch | null> {\n const API_CONTEXT = this;\n const CREDENTIALS_CONTEXT = API_CONTEXT.credentialsProcessing;\n\n let credentials: CredentialsState = {};\n // ? \u041D\u0430\u043B\u0438\u0447\u0438\u0435 credentialsProcessing \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0442\u043E\u043A\u0435\u043D\u0430 \u0432 \u043F\u0440\u0438\u043D\u0446\u0438\u043F\u0435 (\u0435\u0441\u043B\u0438 \u0430\u0432\u0442\u043E\u0440\u0438\u0437\u043E\u0432\u0430\u043D\u044B \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0435)\n if (CREDENTIALS_CONTEXT) {\n // ? \u041C\u0435\u0442\u043E\u0434 getCredentials - \u043A\u043B\u0430\u0441\u0441\u043E\u0432\u044B\u0439 \u043C\u0435\u0442\u043E\u0434, \u043E\u0431\u0435\u0440\u0442\u043A\u0430 \u043D\u0430\u0434 getCredentials, \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u044B\u043C \u043F\u0440\u0438 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0438 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0430\n // ? \u0412 \u043A\u043B\u0430\u0441\u0441\u043E\u0432\u043E\u043C getCredentials \u0443\u0436\u0435 \u0438\u043D\u043A\u0430\u043F\u0441\u0443\u043B\u0438\u0440\u043E\u0432\u0430\u043D\u0430 \u043B\u043E\u0433\u0438\u043A\u0430 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F importCredentials\n const cred = await CREDENTIALS_CONTEXT.getCredentials();\n\n credentials = CREDENTIALS_CONTEXT.isUseRefreshTokensPropcessing\n ? await CREDENTIALS_CONTEXT.waitRefresh(Boolean(cred.isNeedRefresh) && !CREDENTIALS_CONTEXT.getIsTokenStartRefresh()).then(async () =>\n CREDENTIALS_CONTEXT.processCredentials(await CREDENTIALS_CONTEXT.getCredentials()),\n )\n : cred;\n }\n\n // ? \u041D\u0430 \u0443\u0440\u043E\u0432\u043D\u0435 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F instance \u043C\u043E\u0436\u0435\u0442 \u0443\u0436\u0435 \u0441\u043B\u043E\u0436\u0438\u0442\u044C\u0441\u044F \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044F, \u0447\u0442\u043E \u0441\u0445\u043E\u0434\u0438\u043B\u0438 \u043D\u0430 \u0440\u0435\u0444\u0440\u0435\u0448 \u0438 \u043E\u043D \u043D\u0435\u0443\u0434\u0430\u0447\u043D\u044B\u0439.\n // ? \u041F\u0440\u0435\u0440\u044B\u0432\u0430\u0435\u043C \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435 instance, \u0434\u0430\u0435\u043C \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u043E\u0442\u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C callbackAfterRejectRefresh (\u0441\u043C\u043E\u0442\u0440\u0438 class CredentialsProcessing)\n if (credentials.isRefreshFailed) return null;\n\n if (API_CONTEXT.addAsCommon && typeof API_CONTEXT.addAsCommon !== 'function') {\n throw new Error('addAsCommon must be function [getInstanceOfFetchSystem]');\n }\n\n const {\n headers: headersToAbortableFetchInstance,\n queryParameters: queryParamsToAbortableFetchInstance,\n options: optionsToAbortableFetchInstance,\n } = (await API_CONTEXT.addAsCommon?.()) || {};\n\n if (\n (headersToAbortableFetchInstance && !getIsOnlyAnObject(headersToAbortableFetchInstance))\n || (optionsToAbortableFetchInstance && !getIsOnlyAnObject(optionsToAbortableFetchInstance))\n || (queryParamsToAbortableFetchInstance\n && !(\n typeof queryParamsToAbortableFetchInstance === 'string'\n || getIsOnlyAnObject(queryParamsToAbortableFetchInstance)\n || Array.isArray(queryParamsToAbortableFetchInstance)\n ))\n ) {\n throw new Error('Bad output format from addAsCommon [getInstanceOfFetchSystem]');\n }\n\n // ? \u041F\u043E \u0438\u0442\u043E\u0433\u0443 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044F \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 \u043A\u043B\u0430\u0441\u0441\u0430 AbortableFetch (\u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043C\u044B \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043C \u0431\u043E\u043B\u044C\u0448\u0438\u043C \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A)\n return (CREDENTIALS_CONTEXT?.isUseRefreshTokensPropcessing ? CREDENTIALS_CONTEXT.waitRefresh() : Promise.resolve()).then(\n async () =>\n new AbortableFetch({\n // ? \u041C\u0435\u0442\u043E\u0434 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E\n method: 'GET',\n // ? \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E\n headers: {\n ...headersToAbortableFetchInstance,\n // ? (*) \u0422\u0443\u0442 \u043E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u044E\u0442\u0441\u044F \u043A\u0435\u0439\u0441\u044B\n // ? - \u043A\u043E\u0433\u0434\u0430 \u043D\u0435\u0442 this.credentialsProcessing\n // ? (\u043C\u044B \u041D\u0415 \u0445\u043E\u0442\u0438\u043C \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C \u0442\u043E\u043A\u0435\u043D\u044B \u0432 \u043F\u0440\u0438\u043D\u0446\u0438\u043F\u0435, \u043D\u0435 \u0437\u0430\u0448\u043B\u0438 \u0432 \u0432\u0435\u0440\u0445\u043D\u044E\u044E if-\u043A\u0443)\n // ? - \u043A\u043E\u0433\u0434\u0430 \u0435\u0441\u0442\u044C this.credentialsProcessing, \u043D\u043E \u043D\u0435\u0442 credentials.token (\u043D\u0435 \u0430\u0432\u0442\u043E\u0440\u0438\u0437\u043E\u0432\u0430\u043D\u044B)\n // ? (\u0437\u0430\u0448\u043B\u0438 \u0432 \u0432\u0435\u0440\u0445\u043D\u044E\u044E if-\u043A\u0443, \u043F\u043E\u043F\u0440\u043E\u0431\u043E\u0432\u0430\u043B\u0438 \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C/\u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u043A\u0440\u0435\u0434\u044B)\n ...(credentials.token ? CREDENTIALS_CONTEXT?.getHeadersForAuthorize?.(credentials.token) || {} : {}),\n },\n queryParameters: await API_CONTEXT.processQueryParams(queryParamsToAbortableFetchInstance),\n // ? \u041E\u043F\u0446\u0438\u0438 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E\n options: {\n mode: 'cors',\n redirect: 'follow',\n ...optionsToAbortableFetchInstance,\n },\n\n // ? \u041A\u0430\u0436\u0434\u044B\u0439 \u0437\u0430\u043F\u0440\u043E\u0441 (\u043A\u0430\u0436\u0434\u044B\u0439 \u0437\u0430\u043F\u0440\u043E\u0441 \u043C\u0443\u043B\u044C\u0442\u0438\u0437\u0430\u043F\u0440\u043E\u0441\u0430), \u0441\u0434\u0435\u043B\u0430\u043D\u044B\u0439 \u043C\u0435\u0442\u043E\u0434\u043E\u043C request \u044D\u0442\u043E\u0433\u043E \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0430 \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442 \u044D\u0442\u043E\u0442 \u043A\u043E\u043B\u0431\u0435\u043A\n everyPromiseCallback: async function everyPromiseCallback(this: AbortableFetch, response: UnknownRecord): Promise<unknown> {\n // ? this - \u044D\u0442\u043E \u041D\u0415 API_CONTEXT \u0438 \u041D\u0415 CREDENTIALS_CONTEXT, a \u0438\u0442\u043E\u0433\u043E\u0432\u044B\u0439 \u044D\u0435\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 AbortableFetch\n const ABORTABLE_FETCH_INSTANCE = this;\n\n if (!response.status) {\n const reqInput = ABORTABLE_FETCH_INSTANCE.requestInput;\n const responseRequest: UnknownRecord = getIsOnlyAnObject(response.request) ? response.request : {};\n const request = Array.isArray(reqInput)\n ? reqInput.find(item => getIsOnlyAnObject(item) && item.path === responseRequest.path)\n : undefined;\n const mesageOptions: UnknownRecord | undefined\n = getIsOnlyAnObject(request) && getIsOnlyAnObject(request.mesageOptions) ? request.mesageOptions : undefined;\n const isUseErrorToast = mesageOptions?.isUseErrorToast;\n if (isUseErrorToast) {\n API_CONTEXT.sendMessage?.(API_CONTEXT.NO_INET, mesageOptions, response);\n }\n }\n\n return API_CONTEXT.REJECT_CODES.includes(Number(response.status))\n || (CREDENTIALS_CONTEXT?.isUseRefreshTokensPropcessing\n && Boolean(CREDENTIALS_CONTEXT?.CODES_USING_THE_REFRESH_ATTEMPT?.includes(Number(response.status))))\n ? Promise.reject(new Error(`status:${Number(response.status)}`))\n : Promise.resolve(!isGetBody ? response : await API_CONTEXT.getResponseBody(response));\n },\n\n // ? \u0415\u0441\u043B\u0438 \u0445\u043E\u0442\u044C \u043E\u0434\u0438\u043D \u0437\u0430\u043F\u0440\u043E\u0441 \u0438\u0437 \u043F\u0430\u0447\u043A\u0438 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0440\u0435\u0434\u0436\u0435\u043A\u0447\u0435\u043D, \u0437\u0430\u0440\u0435\u0434\u0436\u0435\u043A\u0442\u0438\u0442\u0441\u044F \u0432\u0441\u044F \u043F\u0430\u0447\u043A\u0430.\n // ? \u0412 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D \u044D\u0442\u043E\u0442 \u043A\u043E\u043B\u0431\u044D\u043A\n catchCallback: async function catchCallback(this: AbortableFetch, res: unknown): Promise<unknown> {\n // ? this - \u044D\u0442\u043E \u041D\u0415 API_CONTEXT \u0438 \u041D\u0415 CREDENTIALS_CONTEXT, a \u0438\u0442\u043E\u0433\u043E\u0432\u044B\u0439 \u044D\u0435\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 AbortableFetch\n const ABORTABLE_FETCH_INSTANCE = this;\n if (!CREDENTIALS_CONTEXT) return Promise.reject(res);\n\n const code = Number(res instanceof Error ? res.message.split(':')[1] : '');\n\n if (CREDENTIALS_CONTEXT.CODES_USING_THE_REFRESH_ATTEMPT?.includes(code)) {\n const isDoRefresh = !CREDENTIALS_CONTEXT.getIsTokenStartRefresh();\n\n return CREDENTIALS_CONTEXT.waitRefresh(isDoRefresh).then(async () => {\n // ? \u041F\u0440\u043E\u0431\u0443\u0435\u043C \u0437\u0430\u0440\u0435\u0444\u0440\u0435\u0448\u0438\u0442\u044C\n const newCredentials = await CREDENTIALS_CONTEXT.processCredentials({\n ...(await CREDENTIALS_CONTEXT.getCredentials(true)),\n isCatchCallbackProcess: isDoRefresh,\n });\n\n const currentHeaders = ABORTABLE_FETCH_INSTANCE.getHeaders();\n ABORTABLE_FETCH_INSTANCE.setHeaders({\n ...(getIsOnlyAnObject(currentHeaders) ? currentHeaders : {}),\n ...(newCredentials.token ? { Authorization: `Bearer ${newCredentials.token}` } : {}),\n });\n\n if (newCredentials.token) return ABORTABLE_FETCH_INSTANCE.repeatRequest();\n return Promise.reject(res);\n });\n }\n\n return Promise.reject(res);\n },\n }),\n );\n}\n", "import type { UnknownRecord } from './types';\nimport { getIsOnlyAnObject } from './_utils';\n\n// ? \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043D\u043E\u0440\u043C\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438 query-\u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432.\ninterface NormalizeQueryParamsSettings {\n isEncode?: boolean;\n outputAs?: 'string' | 'object' | 'array';\n}\n\n// ? \u0410\u043A\u043A\u0443\u043C\u0443\u043B\u044F\u0442\u043E\u0440 \u0441\u043A\u043B\u0435\u0439\u043A\u0438 \u00AB\u0432\u0438\u0441\u044F\u0447\u0438\u0445\u00BB query-\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439 \u0432 reduce.\ninterface NormalizeAccumulator {\n result: string[];\n toJoin: string | null;\n}\n\n// ? \u0412 \u044D\u0442\u043E\u043C \u043A\u043A\u043B\u0430\u0441\u0441\u0435 \u0441\u043E\u0431\u0440\u0430\u043D\u044B \u043F\u043E\u043B\u0435\u0437\u043D\u044B\u0435 \u0434\u043E\u0431\u0430\u0432\u043E\u0447\u043D\u044B\u0435 \u0443\u0442\u0438\u043B\u0438\u0442\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u044B \u0434\u0440\u0443\u0433\u0438\u043C\u0438 \u043A\u043B\u0430\u0441\u0441\u0430\u043C\u0438,\n// ? \u043D\u043E \u043D\u0435 \u0438\u043C\u0435\u044E\u0442 \u043F\u0440\u044F\u043C\u043E\u0433\u043E \u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u044F \u043A \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438 \u043F\u0440\u044F\u043C\u043E\u0439 \u0444-\u0442\u0438 RESTAPI\n// ? \u0422\u0430\u043A \u0436\u0435 \u0443\u0442\u0438\u043B\u0438\u0442\u044B \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u044B \u043A\u0430\u043A \u0431\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u0447\u043D\u044B\u0435\nclass Utils {\n // ? \u0418\u043D\u0434\u0435\u043A\u0441-\u0441\u0438\u0433\u043D\u0430\u0442\u0443\u0440\u0430: \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 \u0434\u0438\u043D\u0430\u043C\u0438\u0447\u0435\u0441\u043A\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u043C\u0435\u0442\u043E\u0434\u044B (addCustomMethods)\n // ? \u0438 \u0440\u0435\u043A\u0432\u0435\u0441\u0442-\u043A\u0440\u0435\u0439\u0442\u0435\u0440\u044B (createRequest_${type}). \u041E\u0431\u044A\u044F\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u043C\u0435\u0442\u043E\u0434\u044B \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u044E\u0442 \u0442\u043E\u0447\u043D\u044B\u0435 \u0442\u0438\u043F\u044B.\n [key: string]: unknown;\n\n // ! \u041C\u043E\u0433\u0443\u0442 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C\u0441\u044F \u041D\u0415\u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u044B\u0435 \u043C\u0435\u0442\u043E\u0434\u044B!\n\n /**\n * \u041D\u043E\u0440\u043C\u0430\u043B\u0438\u0437\u0430\u0442\u043E\u0440 \u0441\u043B\u043E\u0436\u043D\u044B\u0445 query-\u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432.\n *\n * \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: `&key1=&&&===&&&key2====&&&&&&&&key3=...`. \u0414\u043B\u044F \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u044B \u043D\u0430 \u0432\u0445\u043E\u0434 \u043D\u0443\u0436\u043D\u043E \u043F\u043E\u0434\u0430\u0432\u0430\u0442\u044C\n * \u041D\u0415 \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F. \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0432\u044B\u0445\u043E\u0434\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F query-\u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u041D\u0415 \u043A\u043E\u0434\u0438\u0440\u0443\u044E\u0442\u0441\u044F.\n *\n * @param queryParams - query \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043E\u043A\u0438, \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u043B\u0438 \u043E\u0431\u044A\u0435\u043A\u0442\u0430.\n * @param settings - \u0444\u043E\u0440\u043C\u0430\u0442 \u0432\u044B\u0432\u043E\u0434\u0430 (`array` | `string` | `object`) \u0438 \u0444\u043B\u0430\u0433 \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F.\n * @returns \u041D\u043E\u0440\u043C\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043D\u044B\u0435 query-\u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u0432 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435.\n */\n // ? \u0424-\u044F normalizeQueryParams \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u043E\u0440\u043C\u0430\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u043E\u043C \u0441\u043B\u043E\u0436\u043D\u044B\u0445 \u043A\u0432\u0435\u0440\u0438\n // ? \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: &key1=&&&===&&&key2====&&&&&&&&key3=....\n // ? \u0414\u043B\u044F \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u044B \u043D\u0430 \u0432\u0445\u043E\u0434 \u043D\u0443\u0436\u043D\u043E \u043F\u043E\u0434\u0430\u0432\u0430\u0442\u044C \u041D\u0415 \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F\n // ? \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0432\u044B\u0445\u043E\u0434\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043A\u0432\u0435\u0440\u0438-\u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u041D\u0415 \u043A\u043E\u0434\u0438\u0440\u0443\u044E\u0442\u0441\u044F\n normalizeQueryParams(queryParams: unknown, settings?: NormalizeQueryParamsSettings): string | UnknownRecord | string[] {\n if (settings && !getIsOnlyAnObject(settings)) {\n throw new Error('Bad settings [class Utils, normalizeQueryParams]');\n }\n\n const getInitialArr = (input: unknown): string[] => {\n const prepareParam = (key: unknown, value: unknown): string => {\n if (!value) return `${key}=`;\n else if (typeof value === 'string' || typeof value === 'number') return `${key}=${value}`;\n else if (Array.isArray(value)) return `${key}=${value.join('')}`;\n else return `${key}=Bad-data-format`;\n };\n\n if (Array.isArray(input)) {\n return input\n .map((item): string[] => {\n if (typeof item !== 'string') return [];\n const index = item.indexOf('=');\n if (index === -1) return [item];\n return [item.slice(0, index), item.slice(index + 1)];\n })\n .filter(([key]) => Boolean(key))\n .map(([key, value]) => prepareParam(key, value));\n }\n else if (getIsOnlyAnObject(input)) {\n return Object.keys(input).map(key => prepareParam(key, input[key]));\n }\n else if (typeof input === 'string') {\n return (input[0] === '?' ? input.slice(1) : input).split('&');\n }\n else {\n return [];\n }\n };\n\n const { isEncode = false, outputAs = 'array' } = settings || {};\n const initialStructure = getInitialArr(queryParams);\n\n const normalizedStructure = initialStructure.reduce<NormalizeAccumulator>(\n (acc, str, idx) => {\n const lastIndex = acc.result.length - 1;\n const processToJoin = (val: string, recoverableSymbol = '&'): void => {\n const encodedToJoin = `${encodeURIComponent(recoverableSymbol)}${encodeURIComponent(val)}`;\n acc.result[lastIndex] = `${acc.result[lastIndex]}${encodedToJoin}`;\n acc.toJoin = null;\n };\n if (typeof acc.toJoin === 'string') processToJoin(acc.toJoin);\n const index = str.indexOf('=');\n if (index !== -1 && index !== 0) {\n const key = str.slice(0, index);\n acc.result.push(`${key}=${encodeURIComponent(str.slice(index + 1))}`);\n }\n else {\n acc.toJoin = str;\n }\n // ? \u0414\u043E\u0431\u0438\u0432\u043A\u0430 \u0434\u043B\u044F \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438\n if (idx === initialStructure.length - 1 && typeof acc.toJoin === 'string') processToJoin(acc.toJoin);\n return acc;\n },\n { result: [], toJoin: null },\n ).result;\n\n const outputStructure = normalizedStructure.map((item): [string, string] => {\n const [key, value] = item.split('=');\n return [key, !isEncode ? decodeURIComponent(value ?? '') : value ?? ''];\n });\n\n switch (outputAs) {\n case 'string':\n return outputStructure.length ? `?${outputStructure.map(([key, value]) => `${key}=${value}`).join('&')}` : '';\n case 'object':\n return outputStructure.reduce<UnknownRecord>((acc, [key, value]) => ({ ...acc, [key]: value }), {});\n default:\n return outputStructure.map(([key, value]) => `${key}=${value}`);\n }\n }\n}\n\nexport default Utils;\n", "import type { AddAsCommonResult, RESTAPISettings, UnknownRecord } from './types';\nimport { addCustomMethods, getIsOnlyAnObject, getResponseClone } from './_utils';\nimport Utils from './Utils';\n\n/**\n * \u0423\u0442\u0438\u043B\u0438\u0442\u0430\u0440\u043D\u044B\u0439 \u0441\u043B\u043E\u0439 API: \u0440\u0430\u0437\u0431\u043E\u0440 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A \u043D\u0430 \u0447\u0430\u0441\u0442\u0438 (splitProperties), \u0438\u0437\u0432\u043B\u0435\u0447\u0435\u043D\u0438\u0435 \u0442\u0435\u043B\u0430 \u043E\u0442\u0432\u0435\u0442\u0430,\n * \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043A\u043E\u0434\u0430 \u043E\u0442\u0432\u0435\u0442\u0430 \u0438 \u0442\u043E\u0447\u043A\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F (getRootPath / addAsCommon / processQueryParams).\n * \u041F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0445 \u043C\u0435\u0442\u043E\u0434\u043E\u0432-\u0443\u0442\u0438\u043B\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0443 `utils`.\n */\nclass ApiUtils extends Utils {\n /** \u041A\u043E\u0440\u043D\u0435\u0432\u043E\u0439 \u043F\u0443\u0442\u044C API (\u0440\u0430\u0441\u043A\u043B\u0430\u0434\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u0432 ApiBase \u0438\u0437 constants.API_PATH). */\n API_PATH!: string;\n\n constructor(settings?: RESTAPISettings) {\n super();\n const { utils } = settings || {};\n if (getIsOnlyAnObject(utils)) addCustomMethods.call(this, utils);\n }\n\n /**\n * \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0435\u0434\u0438\u043D\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u043D\u0430 \u0447\u0430\u0441\u0442\u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u043E\u0442 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F.\n *\n * @param apiParams - \u043E\u0431\u044A\u0435\u0434\u0438\u043D\u0451\u043D\u043D\u044B\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u0437\u0430\u043F\u0440\u043E\u0441\u0430.\n * @param variant - `'doRequestMapping'` \u0434\u043B\u044F \u043C\u0443\u043B\u044C\u0442\u0438\u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u043B\u0438\u0431\u043E `undefined` \u0434\u043B\u044F \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u043E\u0433\u043E.\n * @returns \u0414\u043B\u044F `doRequestMapping` \u2014 \u043E\u0431\u044A\u0435\u043A\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432; \u0438\u043D\u0430\u0447\u0435 \u043A\u043E\u0440\u0442\u0435\u0436 `[\u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B, \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438]`.\n */\n // ? \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \u043C\u0435\u0442\u043E\u0434 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u043D\u043E, \u043E\u0434\u043D\u0430\u043A\u043E \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0438 \u0435\u0433\u043E \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0435\n // ? \u041C\u0435\u0442\u043E\u0434 \u043D\u0435 \u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043B\u0441\u044F \u043A\u0430\u043A \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u044B\u0439,\n // ? \u043E\u0434\u043D\u0430\u043A\u043E \u0432\u0432\u0438\u0434\u0443 \u0442\u043E\u0433\u043E \u0447\u0442\u043E \u043E\u043D \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043D \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0435 \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u043E\u0441\u0442\u044C \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044F\n async splitProperties(apiParams: UnknownRecord, variant?: string): Promise<UnknownRecord | UnknownRecord[]> {\n const {\n isResponseAsObject,\n isGetBody,\n finalCallback,\n\n isToastResult,\n toastOptions,\n isNoToastSuccess,\n isNoToastError,\n isNoToast,\n\n successMess,\n commonSuccessMessage,\n successMessages,\n successMessageType,\n\n errorMess,\n commonErrorMessage,\n errorMessages,\n\n ...restParams\n } = apiParams || {};\n\n switch (variant) {\n case 'doRequestMapping':\n return {\n ...restParams,\n\n isGetBody,\n\n isToastResult,\n toastOptions,\n isNoToastSuccess,\n isNoToastError,\n isNoToast,\n\n successMess,\n commonSuccessMessage,\n successMessages,\n successMessageType,\n\n errorMess,\n commonErrorMessage,\n errorMessages,\n };\n default:\n return [\n restParams,\n {\n isGetBody,\n isResponseAsObject,\n ...(finalCallback ? { callback: finalCallback } : {}),\n\n isToastResult,\n toastOptions,\n isNoToastSuccess,\n isNoToastError,\n isNoToast,\n\n commonSuccessMessage: successMess || commonSuccessMessage,\n successMessages,\n successMessageType,\n\n commonErrorMessage: errorMess || commonErrorMessage,\n errorMessages,\n },\n ];\n }\n }\n\n /**\n * \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u043F\u0440\u043E\u043F\u044B `api` \u0438\u0437 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u2014 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043A\u043E\u0440\u043D\u0435\u0432\u043E\u0439 \u043F\u0443\u0442\u044C API.\n *\n * @returns \u041A\u043E\u0440\u043D\u0435\u0432\u043E\u0439 \u043F\u0443\u0442\u044C (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u2014 API_PATH).\n */\n // ! \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u043F\u0440\u043E\u043F\u044B api \u0438\u0437 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430\n // ? \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \u043C\u0435\u0442\u043E\u0434 \u0431\u0443\u0434\u0435\u0442 \u043F\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0435,\n // ? \u0442.\u043A. \u043D\u0430 \u0440\u0430\u0437\u043D\u044B\u0445 \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u0445 \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u0440\u0430\u0437\u043D\u044B\u0435 \u0438\u043D\u0442\u0435\u0440\u043F\u0440\u0435\u0442\u0430\u0446\u0438\u0438 \u043F\u0440\u043E\u043F\u044B api\n // ? \u041C\u0435\u0442\u043E\u0434 \u043D\u0435 \u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043B\u0441\u044F \u043A\u0430\u043A \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u044B\u0439,\n // ? \u043E\u0434\u043D\u0430\u043A\u043E \u0432\u0432\u0438\u0434\u0443 \u0442\u043E\u0433\u043E \u0447\u0442\u043E \u043E\u043D \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043D \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0435 \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u043E\u0441\u0442\u044C \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044F\n async getRootPath(_apiProp?: unknown): Promise<string> {\n // ? \u0411\u0430\u0437\u043E\u0432\u0430\u044F \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0438\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u0442 apiProp \u0438 \u043E\u0442\u0434\u0430\u0451\u0442 API_PATH.\n // ? \u041F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0435 (\u0447\u0435\u0440\u0435\u0437 settings.utils), \u0433\u0434\u0435 apiProp (\u043F\u043E\u043B\u0435 `api`\n // ? \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430) \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u0432\u044B\u0447\u0438\u0441\u043B\u0435\u043D\u0438\u044F \u043A\u043E\u0440\u043D\u0435\u0432\u043E\u0433\u043E \u043F\u0443\u0442\u0438.\n return this.API_PATH;\n }\n\n /**\n * \u0418\u0437\u0432\u043B\u0435\u043A\u0430\u0435\u0442 \u0442\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430 \u0432 \u043D\u0443\u0436\u043D\u043E\u043C \u0432\u0438\u0434\u0435 (json/blob/text/arrayBuffer/formData) \u043B\u0438\u0431\u043E \u043F\u043E content-type.\n *\n * @param response - \u043E\u0431\u044A\u0435\u043A\u0442 Response (\u0438\u043D\u0430\u0447\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044F \u043A\u0430\u043A \u0435\u0441\u0442\u044C).\n * @param getBodyAs - \u0436\u0435\u043B\u0430\u0435\u043C\u044B\u0439 \u0441\u043F\u043E\u0441\u043E\u0431 \u0438\u0437\u0432\u043B\u0435\u0447\u0435\u043D\u0438\u044F \u0442\u0435\u043B\u0430.\n * @returns \u041F\u0440\u043E\u043C\u0438\u0441 \u0441 \u0442\u0435\u043B\u043E\u043C \u043E\u0442\u0432\u0435\u0442\u0430 (\u0438\u043B\u0438 \u0438\u0441\u0445\u043E\u0434\u043D\u044B\u043C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C / null \u043F\u0440\u0438 \u043E\u0448\u0438\u0431\u043A\u0435).\n */\n // ? \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \u043C\u0435\u0442\u043E\u0434 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u043D\u043E, \u043E\u0434\u043D\u0430\u043A\u043E \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0438 \u0435\u0433\u043E \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0435\n // ? \u041C\u0435\u0442\u043E\u0434 \u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043B\u0441\u044F \u043A\u0430\u043A \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u044B\u0439\n async getResponseBody(response: unknown, getBodyAs?: string): Promise<unknown> {\n // ? \u0415\u0441\u043B\u0438 response \u043D\u0435 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 Response, \u0442\u043E \u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043F\u043E \u0444\u0430\u043A\u0442\u0443\n if (!(response instanceof Response)) return response;\n\n // ? \u0412 \u044D\u0442\u043E\u043C \u043C\u0435\u0441\u0442\u0435 \u0432\u0441\u0435 \u043C\u0435\u0442\u043E\u0434\u044B \u0434\u043E\u043B\u0436\u043D\u044B \u0431\u044B\u0442\u044C, \u0442.\u043A. response \u0442\u043E\u0447\u043D\u043E \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 Response.\n // ? \u0410 \u0432\u043E\u0442 contentType-\u0430 \u043F\u043E\u0445\u043E\u0434\u0443 \u043C\u043E\u0436\u0435\u0442 \u043D\u0435 \u0431\u044B\u0442\u044C. \u041D\u0430\u0432\u0435\u0440\u043D\u043E\u0435...\n const contentType = response.headers.get('content-type');\n if (!contentType) return '';\n\n // ? \u041D\u0430\u0431\u043E\u0440 \u00AB\u0447\u0438\u0442\u0430\u0442\u0435\u043B\u0435\u0439\u00BB \u0442\u0435\u043B\u0430 Response \u2014 \u0442\u0438\u043F\u043E\u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u0430\u044F \u0437\u0430\u043C\u0435\u043D\u0430 \u0434\u0438\u043D\u0430\u043C\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E response[getBodyAs].\n const bodyReaders = {\n json: (r: Response) => r.json(),\n blob: (r: Response) => r.blob(),\n text: (r: Response) => r.text(),\n arrayBuffer: (r: Response) => r.arrayBuffer(),\n formData: (r: Response) => r.formData(),\n };\n const isBodyKey = (key: string): key is keyof typeof bodyReaders => key in bodyReaders;\n\n // ToDo - \u043E\u0448\u0438\u0431\u043A\u0430 \u0431\u044B\u043B\u0430 \u0432 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0438 executor-\u0430...\n // ToDo - \u0412\u0441\u0435 \u0431\u044B\u043B\u043E \u0447\u0435\u0440\u0435\u0437 if. \u0412 \u0441\u043B\u0443\u0447\u0430\u0435, \u0435\u0441\u043B\u0438 \u043D\u0435 \u043F\u043E\u043F\u0430\u0434\u0430\u043B\u043E \u043D\u0438 \u0432 \u043E\u0434\u043D\u0443 if-\u043A\u0443, \u0442\u043E \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u043B\u0441\u044F undefined \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E,\n // ToDo - \u0430 \u043F\u043E\u0441\u043B\u0435 \u044D\u0442\u043E\u0442 undefined \u043F\u044B\u0442\u0430\u043B\u0441\u044F \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0447\u0435\u0440\u0435\u0437 call...\n const reader\n = typeof getBodyAs === 'string' && isBodyKey(getBodyAs)\n ? bodyReaders[getBodyAs]\n : contentType.includes('text/csv')\n ? bodyReaders.blob\n : contentType.includes('json')\n ? bodyReaders.json\n : bodyReaders.text;\n\n // \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u0441\u043B\u0443\u0447\u0430\u0435\u0432 \u043A\u0440\u0430\u0448\u0430 \u043C\u0435\u0442\u043E\u0434\u0430 json \u043F\u0440\u0438 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0442\u0435\u043B\u0430 \u043E\u0442\u0432\u0435\u0442\u0430\n try {\n return await reader(response);\n }\n catch {\n // ? \u0434\u0443\u043C\u0430\u044E \u0441\u0442\u043E\u0438\u0442 \u0437\u043D\u0430\u0442\u044C \u043C\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u0442\u0435\u043B\u043E, \u0430 \u0431\u044D\u043A \u0435\u0433\u043E \u043D\u0435 \u043F\u043E\u043B\u043E\u0436\u0438\u043B\n // eslint-disable-next-line no-console\n console.log('Failed to extract the body');\n return null;\n }\n }\n\n /**\n * \u0424\u043E\u0440\u043C\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0443 \u043E\u0448\u0438\u0431\u043A\u0438 \u0438\u0437 \u0442\u0435\u043B\u0430 \u043E\u0442\u0432\u0435\u0442\u0430 (\u0442\u043E\u0447\u043A\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F \u043F\u043E\u0434 \u0444\u043E\u0440\u043C\u0430\u0442 \u0431\u044D\u043A\u0435\u043D\u0434\u0430).\n *\n * @param res - \u0443\u0436\u0435 \u0438\u0437\u0432\u043B\u0435\u0447\u0451\u043D\u043D\u043E\u0435 \u0442\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430.\n * @returns \u0421\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435.\n */\n // ! \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0434\u043B\u044F \u043E\u0448\u0438\u0431\u043A\u0438 (\u043D\u0435 \u0440\u0435\u043D\u0434\u0435\u0440 \u043C\u0435\u0441\u0441\u0435\u0434\u0436\u0430, \u0430 \u0438\u043C\u0435\u0435\u043D\u043E \u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043E\u0448\u0438\u0431\u043A\u0438),\n // ? \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \u043C\u0435\u0442\u043E\u0434 \u0431\u0443\u0434\u0435\u0442 \u043F\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0435,\n // ? \u0442.\u043A. \u043D\u0430 \u0440\u0430\u0437\u043D\u044B\u0445 \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u0445 \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u0440\u0430\u0437\u043D\u044B\u0435 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0442\u0435\u043B\u0430 \u043E\u0442\u0432\u0435\u0442\u0430 \u0434\u043B\u044F \u043E\u0448\u0438\u0431\u043A\u0438\n // ? \u041C\u0435\u0442\u043E\u0434 \u043D\u0435 \u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043B\u0441\u044F \u043A\u0430\u043A \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u044B\u0439,\n // ? \u043E\u0434\u043D\u0430\u043A\u043E \u0432\u0432\u0438\u0434\u0443 \u0442\u043E\u0433\u043E \u0447\u0442\u043E \u043E\u043D \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043D \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0435 \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u043E\u0441\u0442\u044C \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044F\n // ? res - \u0443\u0436\u0435 \u0442\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430\n async getErrorMessage(res: unknown): Promise<unknown> {\n return res;\n }\n\n /**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u043A\u043E\u0434 \u043E\u0442\u0432\u0435\u0442\u0430 \u0438 (\u0435\u0441\u043B\u0438 \u0437\u0430\u0434\u0430\u043D sendMessage) \u0438\u043D\u0444\u043E\u0440\u043C\u0438\u0440\u0443\u0435\u0442 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u043E\u0431 \u0443\u0441\u043F\u0435\u0445\u0435/\u043E\u0448\u0438\u0431\u043A\u0435.\n *\n * @param res - \u043E\u0431\u044A\u0435\u043A\u0442 Response (\u0438\u043B\u0438 \u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C\u044B\u0439 \u0441 \u043F\u043E\u043B\u0435\u043C `ok`).\n * @param settings - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0442\u043E\u0441\u0442\u043E\u0432 \u0434\u043B\u044F \u0434\u0430\u043D\u043D\u043E\u0433\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0430.\n * @returns \u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 `res` (\u043C\u0435\u0442\u043E\u0434 \u043D\u0435 \u043C\u0435\u043D\u044F\u0435\u0442 \u043E\u0442\u0432\u0435\u0442, \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u0438\u0433\u043D\u0430\u043B\u0438\u0442 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435\u043C).\n */\n // ? \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \u043C\u0435\u0442\u043E\u0434 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0435\u0438\u0437\u043C\u0435\u043D\u043D\u043E, \u043E\u0434\u043D\u0430\u043A\u043E \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0438 \u0435\u0433\u043E \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0435\n // ? \u041C\u0435\u0442\u043E\u0434 \u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043B\u0441\u044F \u043A\u0430\u043A \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u044B\u0439\n async checkResponseCode(res: unknown, settings?: UnknownRecord): Promise<unknown> {\n // ! \u041F\u0440\u0438 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0438 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0430, \u0435\u0441\u043B\u0438 sendMessage \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0444-\u0435\u0439,\n // ! \u0442\u043E \u044D\u0442\u043E \u0432\u043E\u0441\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u043A\u0430\u043A \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u0448\u0430\u0433\u0430 \u0438\u043D\u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u043A\u0430\u043A \u0442\u0430\u043A\u043E\u0432\u043E\u0433\u043E\n const send = this.sendMessage;\n if (typeof send !== 'function') return res;\n\n const { successMess, errorMess } = settings || {};\n\n const isOk = getIsOnlyAnObject(res) ? Boolean(res.ok) : false;\n\n const message = isOk\n ? successMess || this.DEFAULT_SUCCESS_MESSAGE\n : errorMess || (await this.getErrorMessage(await this.getResponseBody(await getResponseClone(res))));\n\n try {\n send(message, settings, await getResponseClone(res));\n }\n catch {\n /* \u043E\u0448\u0438\u0431\u043A\u0438 \u0438\u043D\u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u043D\u0435 \u0434\u043E\u043B\u0436\u043D\u044B \u0432\u043B\u0438\u044F\u0442\u044C \u043D\u0430 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 \u043E\u0442\u0432\u0435\u0442\u0430 */\n }\n return res;\n }\n\n /**\n * \u0421\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0434\u043B\u044F \u041A\u0410\u0416\u0414\u041E\u0413\u041E \u0437\u0430\u043F\u0440\u043E\u0441\u0430, \u0441\u0434\u0435\u043B\u0430\u043D\u043D\u043E\u0433\u043E \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C RESTAPI.\n *\n * @returns \u041E\u0431\u044A\u0435\u043A\u0442 `{ headers, queryParameters, options }` (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043F\u0443\u0441\u0442\u043E\u0439).\n */\n // ? \u0421\u0443\u0442\u044C \u043C\u0435\u0442\u043E\u0434\u0430:\n // ? \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u0438\u0437 \u0432\u043D\u0435 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0434\u043B\u044F \u041A\u0410\u0416\u0414\u041E\u0413\u041E \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u0441\u0434\u0435\u043B\u0430\u043D\u043D\u043E\u0433\u043E \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C RESTAPI\n // ! \u0414\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0442\u0440\u0443\u0442 \u043F\u0440\u043E\u0447\u0438\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u041A\u0420\u041E\u041C\u0415 \u0434\u0430\u043D\u043D\u044B\u0445 \u043F\u043E \u043B\u043E\u0433\u0438\u043A\u0435 \u0430\u0432\u0442\u043E\u0440\u0438\u0437\u0430\u0446\u0438\u0438\n // ? \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \u043C\u0435\u0442\u043E\u0434 \u0431\u0443\u0434\u0435\u0442 \u043F\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0435\n // ? \u041C\u0435\u0442\u043E\u0434 \u043D\u0435 \u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043B\u0441\u044F \u043A\u0430\u043A \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u044B\u0439,\n // ? \u043E\u0434\u043D\u0430\u043A\u043E \u0432\u0432\u0438\u0434\u0443 \u0442\u043E\u0433\u043E \u0447\u0442\u043E \u043E\u043D \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043D \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0435 \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u043E\u0441\u0442\u044C \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044F\n async addAsCommon(): Promise<AddAsCommonResult> {\n // ! \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u0430\u044F \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430 { headers, queryParameters, options }, \u0433\u0434\u0435\n // ! - headers \u0438 options - \u043E\u0431\u044A\u0435\u043A\u0442\u044B,\n // ! - queryParameters - \u0441\u0442\u0440\u043E\u043A\u0430, \u043C\u0430\u0441\u0441\u0438\u0432 \u0438\u043B\u0438 \u043E\u0431\u044A\u0435\u043A\u0442\n return {};\n }\n\n /**\n * \u041E\u0431\u0449\u0438\u0439 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A query-\u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 (\u0442\u043E\u0447\u043A\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F, \u043D\u0430\u043F\u0440. \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435/\u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u043A \u043C\u0430\u0441\u0441\u0438\u0432\u0443).\n *\n * @param queryParams - \u0432\u0445\u043E\u0434\u043D\u044B\u0435 query-\u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B.\n * @returns \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u043D\u044B\u0435 query-\u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u2014 \u0431\u0435\u0437 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439).\n */\n // ! \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u043A\u0432\u0435\u0440\u0438-\u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u0434\u043B\u044F \u043E\u0431\u0449\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0438\u043D\u0433\u0430,\n // ! \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u0434\u043B\u044F \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F decodeURIComponent \u0438\u043B\u0438/\u0438 \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u0432 \u0444\u043E\u0440\u043C\u0430\u0442 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n // ? \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \u043C\u0435\u0442\u043E\u0434 \u0431\u0443\u0434\u0435\u0442 \u043F\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0435,\n // ? \u0442.\u043A. \u043D\u0430 \u0440\u0430\u0437\u043D\u044B\u0445 \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u0445 \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u0440\u0430\u0437\u043D\u044B\u0435 \u0434\u043E\u0433\u043E\u0432\u043E\u0440\u0435\u043D\u043D\u043E\u0441\u0442\u0438 \u043F\u043E \u0444\u043E\u0440\u043C\u0430\u0442\u0430\u043C\n // ? \u041C\u0435\u0442\u043E\u0434 \u043D\u0435 \u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043B\u0441\u044F \u043A\u0430\u043A \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u044B\u0439,\n // ? \u043E\u0434\u043D\u0430\u043A\u043E \u0432\u0432\u0438\u0434\u0443 \u0442\u043E\u0433\u043E \u0447\u0442\u043E \u043E\u043D \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043D \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0435 \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u043E\u0441\u0442\u044C \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044F\n async processQueryParams(queryParams: unknown): Promise<unknown> {\n return queryParams;\n }\n}\n\nexport default ApiUtils;\n", "import type { SSEEvent, SSEReadOptions, StreamResponseLike } from './types';\n\n// ? \u0423\u0442\u0438\u043B\u0438\u0442\u044B \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 Server-Sent Events (text/event-stream).\n// ? \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442\u0441\u044F \u043A\u0440\u0435\u0439\u0442\u0435\u0440\u043E\u043C createRequest_sse (\u0441\u043C\u043E\u0442\u0440\u0438 \u043A\u043B\u0430\u0441\u0441 ApiRequestCreators).\n// ? \u0420\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u0441\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 EventSource:\n// ? - \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u0440\u0430\u0437\u0434\u0435\u043B\u044F\u044E\u0442\u0441\u044F \u043F\u0443\u0441\u0442\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u043E\u0439;\n// ? - \u0441\u0442\u0440\u043E\u043A\u0438 \u0432\u0438\u0434\u0430 \"field:value\" (\u043E\u0434\u0438\u043D \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u043F\u0440\u043E\u0431\u0435\u043B \u0432 value \u043E\u0442\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442\u0441\u044F);\n// ? - \u0441\u0442\u0440\u043E\u043A\u0430, \u043D\u0430\u0447\u0438\u043D\u0430\u044E\u0449\u0430\u044F\u0441\u044F \u0441 \":\", \u2014 \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 (\u0438\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044F);\n// ? - \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u043B\u0435\u0439 data \u0441\u043A\u043B\u0435\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u0447\u0435\u0440\u0435\u0437 \"\\n\";\n// ? - \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043C\u044B\u0435 \u043F\u043E\u043B\u044F: event, data, id, retry.\n\n/**\n * \u041F\u0430\u0440\u0441\u0438\u0442 \u043E\u0434\u0438\u043D \u0431\u043B\u043E\u043A SSE (\u0442\u0435\u043A\u0441\u0442 \u043C\u0435\u0436\u0434\u0443 \u043F\u0443\u0441\u0442\u044B\u043C\u0438 \u0441\u0442\u0440\u043E\u043A\u0430\u043C\u0438) \u0432 \u043E\u0431\u044A\u0435\u043A\u0442 \u0441\u043E\u0431\u044B\u0442\u0438\u044F.\n *\n * \u0412\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 `null`, \u0435\u0441\u043B\u0438 \u0432 \u0431\u043B\u043E\u043A\u0435 \u043D\u0435 \u043E\u043A\u0430\u0437\u0430\u043B\u043E\u0441\u044C \u043D\u0438 \u043E\u0434\u043D\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0438\u043C\u043E\u0433\u043E \u043F\u043E\u043B\u044F\n * (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0431\u043B\u043E\u043A \u0441\u043E\u0441\u0442\u043E\u044F\u043B \u0442\u043E\u043B\u044C\u043A\u043E \u0438\u0437 \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0435\u0432/heartbeat-\u0430).\n *\n * @param block - \u0441\u044B\u0440\u043E\u0439 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439 \u0431\u043B\u043E\u043A SSE (\u0431\u0435\u0437 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044E\u0449\u0435\u0439 \u043F\u0443\u0441\u0442\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0438).\n * @returns \u0420\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043D\u043E\u0435 \u0441\u043E\u0431\u044B\u0442\u0438\u0435 {@link SSEEvent} \u043B\u0438\u0431\u043E `null`.\n */\nexport function parseSSEEvent(block: string): SSEEvent | null {\n if (typeof block !== 'string') return null;\n\n const event: SSEEvent = { event: 'message', data: '', id: undefined, retry: undefined };\n const dataLines: string[] = [];\n let hasField = false;\n\n block.split('\\n').forEach((line) => {\n // ? \u041F\u0443\u0441\u0442\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 \u0432\u043D\u0443\u0442\u0440\u0438 \u0431\u043B\u043E\u043A\u0430 \u043D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u0430 (\u043F\u043E \u043D\u0435\u0439 \u0431\u043B\u043E\u043A \u0438 \u0440\u0435\u0436\u0435\u0442\u0441\u044F), \u043D\u043E \u043D\u0430 \u0432\u0441\u044F\u043A\u0438\u0439 \u0441\u043B\u0443\u0447\u0430\u0439 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u0430\u0435\u043C.\n // ? \u0421\u0442\u0440\u043E\u043A\u0430-\u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 \u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441 \u0434\u0432\u043E\u0435\u0442\u043E\u0447\u0438\u044F.\n if (line === '' || line[0] === ':') return;\n\n const colonIdx = line.indexOf(':');\n const field = colonIdx === -1 ? line : line.slice(0, colonIdx);\n let value = colonIdx === -1 ? '' : line.slice(colonIdx + 1);\n // ? \u041F\u043E \u0441\u043F\u0435\u043A\u0435 \u043E\u0442\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u0440\u043E\u0432\u043D\u043E \u043E\u0434\u0438\u043D \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u043F\u0440\u043E\u0431\u0435\u043B \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F.\n if (value[0] === ' ') value = value.slice(1);\n\n switch (field) {\n case 'event':\n event.event = value;\n hasField = true;\n break;\n case 'data':\n dataLines.push(value);\n hasField = true;\n break;\n case 'id':\n event.id = value;\n hasField = true;\n break;\n case 'retry':\n if (/^\\d+$/.test(value)) {\n event.retry = Number(value);\n hasField = true;\n }\n break;\n default:\n // ? \u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u044B\u0435 \u043F\u043E\u043B\u044F \u043F\u043E \u0441\u043F\u0435\u043A\u0435 \u0438\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u044E\u0442\u0441\u044F.\n break;\n }\n });\n\n if (!hasField) return null;\n event.data = dataLines.join('\\n');\n return event;\n}\n\n// ? \u0411\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u044B\u0439 \u0432\u044B\u0437\u043E\u0432 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0433\u043E \u043A\u043E\u043B\u0431\u044D\u043A\u0430: \u0435\u0433\u043E \u043E\u0448\u0438\u0431\u043A\u0430 \u043D\u0435 \u0434\u043E\u043B\u0436\u043D\u0430 \u0440\u0432\u0430\u0442\u044C \u0447\u0442\u0435\u043D\u0438\u0435 \u043F\u043E\u0442\u043E\u043A\u0430.\nfunction safeCall(fn: unknown, ...args: unknown[]): void {\n if (typeof fn !== 'function') return;\n try {\n // ? fn \u0441\u0443\u0436\u0435\u043D \u0434\u043E \u0444\u0443\u043D\u043A\u0446\u0438\u0438 type-guard-\u043E\u043C \u0432\u044B\u0448\u0435 \u2014 \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u043C \u0431\u0435\u0437 \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u0442\u0438\u043F\u043E\u0432.\n fn(...args);\n }\n catch {\n /* \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u043A\u043E\u043B\u0431\u044D\u043A \u043D\u0435 \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0447\u0442\u0435\u043D\u0438\u0435 \u043F\u043E\u0442\u043E\u043A\u0430 */\n }\n}\n\n/**\n * \u0427\u0438\u0442\u0430\u0435\u0442 \u0442\u0435\u043B\u043E Response \u043A\u0430\u043A \u043F\u043E\u0442\u043E\u043A Server-Sent Events.\n *\n * \u0420\u0435\u0437\u043E\u043B\u0432\u0438\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C \u0432\u0441\u0435\u0445 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043D\u044B\u0445 \u0441\u043E\u0431\u044B\u0442\u0438\u0439 \u041F\u041E\u0421\u041B\u0415 \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F \u043F\u043E\u0442\u043E\u043A\u0430.\n * \u041F\u0440\u0435\u0440\u044B\u0432\u0430\u043D\u0438\u0435 \u043F\u043E\u0442\u043E\u043A\u0430 \u0447\u0435\u0440\u0435\u0437 `AbortController` \u0442\u0440\u0430\u043A\u0442\u0443\u0435\u0442\u0441\u044F \u043A\u0430\u043A \u0448\u0442\u0430\u0442\u043D\u043E\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0435\n * (\u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044F \u0442\u043E, \u0447\u0442\u043E \u0443\u0441\u043F\u0435\u043B\u0438 \u0441\u043E\u0431\u0440\u0430\u0442\u044C); \u043B\u044E\u0431\u0430\u044F \u0438\u043D\u0430\u044F \u043E\u0448\u0438\u0431\u043A\u0430 \u0447\u0442\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u0432\u044B\u0448\u0435.\n *\n * @param response - \u043E\u0431\u044A\u0435\u043A\u0442 Response (\u0438\u043B\u0438 duck-typed \u0441 `body.getReader()`).\n * @param options - \u043A\u043E\u043B\u0431\u044D\u043A\u0438 \u0438 \u043E\u043F\u0446\u0438\u0438 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u043F\u043E\u0442\u043E\u043A\u0430 (\u0441\u043C. {@link SSEReadOptions}).\n * @param options.onEvent - \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u043A\u0430\u0436\u0434\u043E\u0435 \u0440\u0430\u0441\u043F\u0430\u0440\u0441\u0435\u043D\u043D\u043E\u0435 \u0441\u043E\u0431\u044B\u0442\u0438\u0435.\n * @param options.onChunk - \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u043F\u043E\u043B\u0435\u0437\u043D\u0443\u044E \u043D\u0430\u0433\u0440\u0443\u0437\u043A\u0443 (\u043F\u043E\u043B\u0435 data) \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u0441\u043E\u0431\u044B\u0442\u0438\u044F.\n * @param options.handlers - \u043A\u0430\u0440\u0442\u0430 `{ \u0438\u043C\u044F\u0421\u043E\u0431\u044B\u0442\u0438\u044F: cb }` \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u043F\u043E \u043F\u043E\u043B\u044E `event`.\n * @param options.parseJson - \u0435\u0441\u043B\u0438 `true`, \u043F\u043E\u043B\u0435 `data` \u043F\u0440\u043E\u0433\u043E\u043D\u044F\u0435\u0442\u0441\u044F \u0447\u0435\u0440\u0435\u0437 `JSON.parse`.\n * @returns \u041F\u0440\u043E\u043C\u0438\u0441 \u0441 \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C \u0432\u0441\u0435\u0445 \u0440\u0430\u0441\u043F\u0430\u0440\u0441\u0435\u043D\u043D\u044B\u0445 \u0441\u043E\u0431\u044B\u0442\u0438\u0439 {@link SSEEvent}.\n */\nexport async function readSSE(response: StreamResponseLike, { onEvent, onChunk, handlers, parseJson }: SSEReadOptions = {}): Promise<SSEEvent[]> {\n const events: SSEEvent[] = [];\n // ? \u041D\u0435\u0442 \u0442\u0435\u043B\u0430 \u2014 \u043D\u0435\u0447\u0435\u0433\u043E \u0447\u0438\u0442\u0430\u0442\u044C (\u0437\u0430\u0449\u0438\u0442\u0430 \u043E\u0442 null \u0438 \u0434\u043B\u044F strictNullChecks).\n const stream = response.body;\n if (!stream) return events;\n\n const reader = stream.getReader();\n const decoder = new TextDecoder('utf-8');\n let buffer = '';\n // ? \u041E\u0442\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0439 \u0445\u0432\u043E\u0441\u0442\u043E\u0432\u043E\u0439 \"\\r\": \u043C\u043E\u0436\u0435\u0442 \u043E\u043A\u0430\u0437\u0430\u0442\u044C\u0441\u044F \u043F\u0435\u0440\u0432\u043E\u0439 \u043F\u043E\u043B\u043E\u0432\u0438\u043D\u043E\u0439 \"\\r\\n\", \u0440\u0430\u0437\u043E\u0440\u0432\u0430\u043D\u043D\u043E\u0433\u043E \u043D\u0430 \u0433\u0440\u0430\u043D\u0438\u0446\u0435 \u0447\u0430\u043D\u043A\u043E\u0432.\n // ? \u0411\u0435\u0437 \u044D\u0442\u043E\u0433\u043E \u043D\u0430\u0438\u0432\u043D\u0430\u044F \u043D\u043E\u0440\u043C\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u043F\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043B\u0430 \u0431\u044B \"\\r\" + \"\\n\" \u0432 \"\\n\\n\" \u0438 \u0441\u043E\u0437\u0434\u0430\u043B\u0430 \u043B\u043E\u0436\u043D\u044B\u0439 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0441\u043E\u0431\u044B\u0442\u0438\u0439.\n let pendingCR = '';\n\n // ? \u041D\u043E\u0440\u043C\u0430\u043B\u0438\u0437\u0443\u0435\u0442 \u043F\u0435\u0440\u0435\u0432\u043E\u0434\u044B \u0441\u0442\u0440\u043E\u043A \u0432 \u043E\u0434\u043D\u043E\u043C \u0447\u0430\u043D\u043A\u0435 (SSE \u0434\u043E\u043F\u0443\u0441\u043A\u0430\u0435\u0442 CR, LF \u0438 CRLF).\n const normalize = (chunk: string): string => chunk.replace(/\\r\\n|\\r/g, '\\n');\n\n // ? \u0414\u0438\u0441\u043F\u0435\u0442\u0447\u0435\u0440 \u043E\u0434\u043D\u043E\u0433\u043E \u0433\u043E\u0442\u043E\u0432\u043E\u0433\u043E \u0431\u043B\u043E\u043A\u0430: \u043F\u0430\u0440\u0441\u0438\u0442, \u0430\u043A\u043A\u0443\u043C\u0443\u043B\u0438\u0440\u0443\u0435\u0442 \u0438 \u0434\u0451\u0440\u0433\u0430\u0435\u0442 \u043A\u043E\u043B\u0431\u044D\u043A\u0438.\n const flush = (rawBlock: string): void => {\n const event = parseSSEEvent(rawBlock);\n if (!event) return;\n\n // ? \u041E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0439 JSON-\u043F\u0430\u0440\u0441\u0438\u043D\u0433 \u043F\u043E\u043B\u0435\u0437\u043D\u043E\u0439 \u043D\u0430\u0433\u0440\u0443\u0437\u043A\u0438 (\u043F\u043E\u0434 \u0431\u044D\u043A\u0435\u043D\u0434\u044B, \u0448\u043B\u044E\u0449\u0438\u0435 JSON \u0432 data).\n if (parseJson && typeof event.data === 'string' && event.data !== '') {\n try {\n event.data = JSON.parse(event.data);\n }\n catch {\n /* \u043D\u0435 \u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 JSON \u2014 \u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u043C data \u0441\u0442\u0440\u043E\u043A\u043E\u0439 */\n }\n }\n\n events.push(event);\n safeCall(onEvent, event);\n safeCall(onChunk, event.data, event);\n // ? \u0422\u0438\u043F\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u043F\u043E \u0438\u043C\u0435\u043D\u0438 \u0441\u043E\u0431\u044B\u0442\u0438\u044F (event: delta|status|done|...).\n if (handlers) safeCall(handlers[event.event], event.data, event);\n };\n\n try {\n // ? \u0427\u0438\u0442\u0430\u0435\u043C \u043F\u043E\u0442\u043E\u043A \u0434\u043E \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F, \u043F\u043E \u043C\u0435\u0440\u0435 \u043F\u0440\u0438\u0445\u043E\u0434\u0430 \u0447\u0430\u043D\u043A\u043E\u0432 \u043D\u0430\u0440\u0435\u0437\u0430\u0435\u043C \u0433\u043E\u0442\u043E\u0432\u044B\u0435 \u0441\u043E\u0431\u044B\u0442\u0438\u044F.\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n // ? \u041D\u043E\u0440\u043C\u0430\u043B\u0438\u0437\u0443\u0435\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0439 \u0447\u0430\u043D\u043A (\u043B\u0438\u043D\u0435\u0439\u043D\u0430\u044F \u0441\u043B\u043E\u0436\u043D\u043E\u0441\u0442\u044C), \u043F\u0435\u0440\u0435\u043D\u043E\u0441\u0430 \u0432\u0441\u0435\u0433\u043E \u0431\u0443\u0444\u0435\u0440\u0430 \u043D\u0435 \u0434\u0435\u043B\u0430\u0435\u043C.\n let chunk = pendingCR + decoder.decode(value, { stream: true });\n pendingCR = '';\n // ? \u0415\u0441\u043B\u0438 \u0447\u0430\u043D\u043A \u043E\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \"\\r\" \u2014 \u043E\u0442\u043A\u043B\u0430\u0434\u044B\u0432\u0430\u0435\u043C \u0435\u0433\u043E: \u0432\u0434\u0440\u0443\u0433 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0447\u0430\u043D\u043A \u043D\u0430\u0447\u043D\u0451\u0442\u0441\u044F \u0441 \"\\n\" (CRLF \u043D\u0430 \u0433\u0440\u0430\u043D\u0438\u0446\u0435).\n if (chunk.endsWith('\\r')) {\n pendingCR = '\\r';\n chunk = chunk.slice(0, -1);\n }\n buffer += normalize(chunk);\n\n // ? \u0412\u044B\u0440\u0435\u0437\u0430\u0435\u043C \u0432\u0441\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043D\u043D\u044B\u0435 \u0441\u043E\u0431\u044B\u0442\u0438\u044F (\u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u2014 \u043F\u0443\u0441\u0442\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430).\n let sepIdx;\n // eslint-disable-next-line no-cond-assign\n while ((sepIdx = buffer.indexOf('\\n\\n')) !== -1) {\n const rawBlock = buffer.slice(0, sepIdx);\n buffer = buffer.slice(sepIdx + 2);\n flush(rawBlock);\n }\n }\n\n // ? \u0414\u043E\u0431\u0438\u0432\u0430\u0435\u043C \u0434\u0435\u043A\u043E\u0434\u0435\u0440, \u043E\u0442\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0439 \"\\r\" \u0438 \u0445\u0432\u043E\u0441\u0442, \u0435\u0441\u043B\u0438 \u043F\u043E\u0442\u043E\u043A \u0437\u0430\u043A\u0440\u044B\u043B\u0441\u044F \u0431\u0435\u0437 \u0444\u0438\u043D\u0430\u043B\u044C\u043D\u043E\u0439 \u043F\u0443\u0441\u0442\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0438.\n buffer += normalize(pendingCR + decoder.decode());\n buffer = buffer.replace(/\\n+$/g, '');\n if (buffer !== '') flush(buffer);\n }\n catch (error: unknown) {\n // ? \u041F\u0440\u0435\u0440\u044B\u0432\u0430\u043D\u0438\u0435 (abort) \u2014 \u044D\u0442\u043E \u0448\u0442\u0430\u0442\u043D\u043E\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0435 \u0441\u0442\u0440\u0438\u043C\u0430: \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043C \u0442\u043E, \u0447\u0442\u043E \u0443\u0441\u043F\u0435\u043B\u0438 \u0441\u043E\u0431\u0440\u0430\u0442\u044C.\n // ? \u041B\u044E\u0431\u0443\u044E \u0438\u043D\u0443\u044E \u043E\u0448\u0438\u0431\u043A\u0443 \u0447\u0442\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u043C \u0432\u044B\u0448\u0435 (\u0435\u0451 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 catchCallback/\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C).\n // ? abort \u0431\u0440\u043E\u0441\u0430\u0435\u0442 DOMException \u0441 name === 'AbortError' (\u0432 Node \u043E\u043D \u043D\u0435 instanceof Error) \u2014 \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C \u043F\u043E\u043B\u0435 \u0447\u0435\u0440\u0435\u0437 guard.\n const name = error && typeof error === 'object' && 'name' in error ? error.name : undefined;\n if (name !== 'AbortError') throw error;\n }\n finally {\n try {\n reader.releaseLock?.();\n }\n catch {\n /* releaseLock \u043C\u043E\u0436\u0435\u0442 \u0431\u0440\u043E\u0441\u0438\u0442\u044C, \u0435\u0441\u043B\u0438 \u043F\u043E\u0442\u043E\u043A \u0443\u0436\u0435 \u043E\u0442\u043F\u0443\u0449\u0435\u043D \u2014 \u0438\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u043C */\n }\n }\n\n return events;\n}\n", "import type { RequestDescriptor, RESTAPISettings, SSEEvent, SSEReadOptions, StreamResponseLike, UnknownRecord } from './types';\nimport { addCustomMethods, getIsOnlyAnObject, getResponseClone, omitKeys } from './_utils';\nimport ApiUtils from './ApiUtils';\nimport { readSSE } from './sse';\n\n// ? \u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u043B\u044E\u0431\u043E\u0433\u043E \u043A\u0440\u0435\u0439\u0442\u0435\u0440\u0430 \u2014 \u0442\u043E, \u0447\u0442\u043E \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 splitProperties.\ntype CreatorResult = Promise<UnknownRecord | UnknownRecord[]>;\n\n// ? Type-guard: \u043E\u0442\u0432\u0435\u0442 \u043F\u0440\u0438\u0433\u043E\u0434\u0435\u043D \u0434\u043B\u044F \u0447\u0442\u0435\u043D\u0438\u044F \u043A\u0430\u043A \u043F\u043E\u0442\u043E\u043A (\u0435\u0441\u0442\u044C \u0442\u0435\u043B\u043E \u0441 getReader \u0438 \u043A\u043E\u0434 ok).\nfunction isStreamResponse(value: unknown): value is StreamResponseLike {\n if (!getIsOnlyAnObject(value) || !value.ok) return false;\n const body = value.body;\n return typeof body === 'object' && body !== null && 'getReader' in body && typeof body.getReader === 'function';\n}\n\n// ? \u041F\u0440\u0435\u0444\u0438\u043A\u0441 createRequest_ \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043A \u043A\u0440\u0435\u0439\u0442\u0435\u0440\u0430\u043C \u0441 \u0446\u0435\u043B\u044C\u044E \u0440\u0430\u0437\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u043E \u0438\u043C\u0435\u043D\nconst PREFIX_OF_CLASS_UTILS = 'createRequest_';\n\n/**\n * \u0421\u043B\u043E\u0439 \u0440\u0435\u043A\u0432\u0435\u0441\u0442-\u043A\u0440\u0435\u0439\u0442\u0435\u0440\u043E\u0432: \u043C\u0435\u0442\u043E\u0434\u044B `createRequest_<type>`, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u044E\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 \u043E\u0442\u0432\u0435\u0442\u0430\n * \u043F\u043E\u0434 \u043A\u043E\u043D\u043A\u0440\u0435\u0442\u043D\u044B\u0439 \u0441\u0446\u0435\u043D\u0430\u0440\u0438\u0439 (toJson, blob, sse \u0438 \u0442.\u0434.) \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u044E\u0442 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u044B \u0434\u043B\u044F doRequest.\n * \u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u043A\u0440\u0435\u0439\u0442\u0435\u0440\u044B \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0430\u044E\u0442\u0441\u044F \u0447\u0435\u0440\u0435\u0437 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0443 `requestsCreators`.\n */\nclass ApiRequestCreators extends ApiUtils {\n constructor(settings?: RESTAPISettings) {\n super(settings);\n const { requestsCreators } = settings || {};\n\n if (getIsOnlyAnObject(requestsCreators)) addCustomMethods.call(this, requestsCreators, PREFIX_OF_CLASS_UTILS);\n }\n\n /**\n * \u041A\u0440\u0435\u0439\u0442\u0435\u0440 \u0442\u0438\u043F\u0430 `toJson`: \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 callback \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0442\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430 (Response.json()).\n *\n * @param props - \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430.\n * @param variant - \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 splitProperties.\n */\n // ? \u041F\u0440\u0438 \u0442\u0438\u043F\u0435 toJson \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 callback \u043D\u0430 \u0432\u0445\u043E\u0434 \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0442\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043D\u043E\u0435 \u043C\u0435\u0442\u043E\u0434\u043E\u043C Response.json()\n // ? \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043E\u0442 \u043D\u0430\u0441\u0442\u043E\u0440\u043E\u0439\u043A\u0438 isGetBody\n async createRequest_toJson(props: RequestDescriptor, variant?: string): CreatorResult {\n const safelyProps = omitKeys(props, ['getBodyAs']);\n\n return this.splitProperties(\n {\n ...safelyProps,\n isGetBody: false,\n callback: async (res: unknown) => {\n const output = await this.getResponseBody(res, 'json');\n return await (props.callback?.(output) ?? output);\n },\n },\n variant,\n );\n }\n\n /**\n * \u041A\u0440\u0435\u0439\u0442\u0435\u0440 \u0442\u0438\u043F\u0430 `toJsonAdvanced`: callback \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0443 `{ response, result }`.\n *\n * @param props - \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430.\n * @param variant - \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 splitProperties.\n */\n // ? \u041F\u0440\u0438 \u0442\u0438\u043F\u0435 toJsonAdvanced \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 callback \u043D\u0430 \u0432\u0445\u043E\u0434 \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0443 { response, result },\n // ? \u0433\u0434\u0435 response - \u043E\u0431\u044A\u0435\u043A\u0442 Response, result - \u0442\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043D\u043E\u0435 \u043C\u0435\u0442\u043E\u0434\u043E\u043C Response.json()\n // ? \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043E\u0442 \u043D\u0430\u0441\u0442\u043E\u0440\u043E\u0439\u043A\u0438 isGetBody\n async createRequest_toJsonAdvanced(props: RequestDescriptor, variant?: string): CreatorResult {\n const safelyProps = omitKeys(props, ['getBodyAs']);\n\n return this.splitProperties(\n {\n ...safelyProps,\n isGetBody: false,\n callback: async (res: unknown) => {\n const output = {\n response: res,\n result: await this.getResponseBody(await getResponseClone(res), 'json'),\n };\n return await (props.callback?.(output) ?? output);\n },\n },\n variant,\n );\n }\n\n /**\n * \u041A\u0440\u0435\u0439\u0442\u0435\u0440 \u0442\u0438\u043F\u0430 `blob`: callback \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0442\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430 (Response.blob()).\n *\n * @param props - \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430.\n * @param variant - \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 splitProperties.\n */\n // ? \u041F\u0440\u0438 \u0442\u0438\u043F\u0435 blob \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 callback \u043D\u0430 \u0432\u0445\u043E\u0434 \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0442\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043D\u043E\u0435 \u043C\u0435\u0442\u043E\u0434\u043E\u043C Response.blob(),\n // ? \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043E\u0442 \u043D\u0430\u0441\u0442\u043E\u0440\u043E\u0439\u043A\u0438 isGetBody\n async createRequest_blob(props: RequestDescriptor, variant?: string): CreatorResult {\n const safelyProps = omitKeys(props, ['getBodyAs']);\n\n return this.splitProperties(\n {\n ...safelyProps,\n isGetBody: false,\n callback: async (res: unknown) => {\n const output = await this.getResponseBody(await getResponseClone(res), 'blob');\n return await (props.callback?.(output) ?? output);\n },\n },\n variant,\n );\n }\n\n /**\n * \u041A\u0440\u0435\u0439\u0442\u0435\u0440 \u0442\u0438\u043F\u0430 `sse`: \u043E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442 \u043E\u0442\u0432\u0435\u0442 \u043A\u0430\u043A \u043F\u043E\u0442\u043E\u043A Server-Sent Events (text/event-stream).\n *\n * \u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043F\u0440\u043E\u043F\u044B \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430: `onEvent`, `onChunk`, `handlers`, `parseJson`.\n * \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A `Accept: text/event-stream`. \u041C\u0435\u0442\u043E\u0434 doRequest \u0440\u0435\u0437\u043E\u043B\u0432\u0438\u0442\u0441\u044F\n * \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C \u0432\u0441\u0435\u0445 \u0441\u043E\u0431\u044B\u0442\u0438\u0439 \u041F\u041E\u0421\u041B\u0415 \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F \u043F\u043E\u0442\u043E\u043A\u0430; \u043E\u0442\u043C\u0435\u043D\u0430 \u2014 \u043C\u0435\u0442\u043E\u0434\u043E\u043C `.abort()` \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0451\u043D\u043D\u043E\u0433\u043E \u043F\u0440\u043E\u043C\u0438\u0441\u0430.\n *\n * @param props - \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430 (\u043F\u043B\u044E\u0441 onEvent/onChunk/handlers/parseJson).\n * @param variant - \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 splitProperties.\n */\n // ? \u041F\u0440\u0438 \u0442\u0438\u043F\u0435 sse \u0437\u0430\u043F\u0440\u043E\u0441 \u043E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043A\u0430\u043A \u043F\u043E\u0442\u043E\u043A Server-Sent Events (text/event-stream).\n // ? \u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043F\u0440\u043E\u043F\u044B \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430:\n // ? - onEvent(event) \u2014 \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u043A\u0430\u0436\u0434\u043E\u0435 \u0440\u0430\u0441\u043F\u0430\u0440\u0441\u0435\u043D\u043D\u043E\u0435 \u0441\u043E\u0431\u044B\u0442\u0438\u0435 { event, data, id, retry };\n // ? - onChunk(data, event) \u2014 \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u043F\u043E\u043B\u0435\u0437\u043D\u0443\u044E \u043D\u0430\u0433\u0440\u0443\u0437\u043A\u0443 (\u043F\u043E\u043B\u0435 data) \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u0441\u043E\u0431\u044B\u0442\u0438\u044F;\n // ? - handlers \u2014 \u043A\u0430\u0440\u0442\u0430 { \u0438\u043C\u044F\u0421\u043E\u0431\u044B\u0442\u0438\u044F: cb } \u0434\u043B\u044F \u0442\u0438\u043F\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0439 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u043F\u043E \u043F\u043E\u043B\u044E event\n // ? (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 { delta, status, done }); cb \u043F\u043E\u043B\u0443\u0447\u0430\u0435\u0442 (data, event);\n // ? - parseJson \u2014 \u0435\u0441\u043B\u0438 true, \u043F\u043E\u043B\u0435 data \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u043F\u0440\u043E\u0433\u043E\u043D\u044F\u0435\u0442\u0441\u044F \u0447\u0435\u0440\u0435\u0437 JSON.parse.\n // ? \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A Accept: text/event-stream (\u0435\u0433\u043E \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0447\u0435\u0440\u0435\u0437 headers).\n // ? \u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 callback (\u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D) \u043D\u0430 \u0432\u0445\u043E\u0434 \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0438\u0442\u043E\u0433\u043E\u0432\u044B\u0439 \u043C\u0430\u0441\u0441\u0438\u0432 \u0432\u0441\u0435\u0445 \u0441\u043E\u0431\u044B\u0442\u0438\u0439.\n // ? \u041C\u0435\u0442\u043E\u0434 doRequest \u0440\u0435\u0437\u043E\u043B\u0432\u0438\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C \u0432\u0441\u0435\u0445 \u0441\u043E\u0431\u044B\u0442\u0438\u0439 \u041F\u041E\u0421\u041B\u0415 \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u044F \u043F\u043E\u0442\u043E\u043A\u0430;\n // ? \u043E\u0442\u043C\u0435\u043D\u0430 \u043F\u043E\u0442\u043E\u043A\u0430 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u043C\u0435\u0442\u043E\u0434\u043E\u043C .abort() \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0451\u043D\u043D\u043E\u0433\u043E \u043F\u0440\u043E\u043C\u0438\u0441\u0430 (\u0447\u0435\u0440\u0435\u0437 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0439 AbortController).\n async createRequest_sse(props: RequestDescriptor, variant?: string): CreatorResult {\n const safelyProps = omitKeys(props, ['getBodyAs', 'onChunk', 'onEvent', 'handlers', 'parseJson']);\n const { onChunk, onEvent, handlers, parseJson } = props;\n\n // ? \u0422\u0438\u043F\u043E\u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E \u0441\u043E\u0431\u0438\u0440\u0430\u0435\u043C \u043E\u043F\u0446\u0438\u0438 \u043F\u043E\u0442\u043E\u043A\u0430 \u0438\u0437 \u00AB\u0441\u044B\u0440\u044B\u0445\u00BB \u043F\u0440\u043E\u043F\u043E\u0432 \u0437\u0430\u043F\u0440\u043E\u0441\u0430 (\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0441\u0443\u0436\u0430\u0435\u043C guard-\u0430\u043C\u0438).\n const sseOptions: SSEReadOptions = {\n onChunk: typeof onChunk === 'function' ? (data: unknown, event: SSEEvent) => onChunk(data, event) : undefined,\n onEvent: typeof onEvent === 'function' ? (event: SSEEvent) => onEvent(event) : undefined,\n parseJson: Boolean(parseJson),\n handlers: getIsOnlyAnObject(handlers)\n ? Object.keys(handlers).reduce<Record<string, ((data: unknown, event: SSEEvent) => void) | undefined>>((acc, key) => {\n const fn = handlers[key];\n acc[key] = typeof fn === 'function' ? (data: unknown, event: SSEEvent) => fn(data, event) : undefined;\n return acc;\n }, {})\n : undefined,\n };\n\n return this.splitProperties(\n {\n ...safelyProps,\n headers: { Accept: 'text/event-stream', ...(getIsOnlyAnObject(safelyProps.headers) ? safelyProps.headers : {}) },\n isGetBody: false,\n callback: async (res: unknown) => {\n // ? \u0421\u0442\u0440\u0438\u043C\u0438\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u0443\u0441\u043F\u0435\u0448\u043D\u044B\u0439 \u043E\u0442\u0432\u0435\u0442 \u0441 \u0447\u0438\u0442\u0430\u0435\u043C\u044B\u043C \u0442\u0435\u043B\u043E\u043C.\n // ? \u0418\u043D\u0430\u0447\u0435 (\u043E\u0448\u0438\u0431\u043A\u0430/\u043D\u0435\u0442 \u0442\u0435\u043B\u0430) \u043E\u0442\u0434\u0430\u0451\u043C res \u043A\u0430\u043A \u0435\u0441\u0442\u044C \u2014 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 checkResponseCode/catchCallback/\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C.\n const output = isStreamResponse(res) ? await readSSE(res, sseOptions) : res;\n return await (props.callback?.(output) ?? output);\n },\n },\n variant,\n );\n }\n\n /**\n * \u041A\u0440\u0435\u0439\u0442\u0435\u0440 \u0442\u0438\u043F\u0430 `testBadResponse`: callback \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0441\u0438\u043D\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 Response \u0441\u043E \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u043C 401.\n *\n * @param props - \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430.\n * @param variant - \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 splitProperties.\n */\n // ? \u041F\u0440\u0438 \u0442\u0438\u043F\u0435 testBadResponse \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 callback \u043D\u0430 \u0432\u0445\u043E\u0434 \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u043E\u0431\u044A\u0435\u043A\u0442 Response \u0432 401-\u043C \u0441\u0442\u0430\u0442\u0443\u0441\u0435\n // ? \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u0432\u043E\u043E\u0431\u0449\u0435 \u043D\u0438 \u043E\u0442 \u0447\u0435\u0433\u043E\n async createRequest_testBadResponse(props: RequestDescriptor, variant?: string): CreatorResult {\n return this.splitProperties(\n {\n ...props,\n callback: async () =>\n Promise.resolve(\n new Response(JSON.stringify({ errors: [{ message: 'test bad Response' }] }), {\n status: 401,\n statusText: 'test bad Response',\n headers: (() => {\n const headers = new Headers();\n headers.append('content-type', 'application/json');\n return headers;\n })(),\n }),\n ).then(res => props.callback?.(res) ?? res),\n },\n variant,\n );\n }\n\n /**\n * \u041A\u0440\u0435\u0439\u0442\u0435\u0440 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E: callback \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u043E\u0431\u044A\u0435\u043A\u0442 Response (\u0438\u043B\u0438 \u0442\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430 \u043F\u0440\u0438 isGetBody: 'first').\n *\n * @param props - \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430.\n * @param variant - \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 splitProperties.\n */\n // ? \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 callback \u043D\u0430 \u0432\u0445\u043E\u0434 \u043F\u043E\u043B\u0443\u0447\u0438\u0442\n // ? - \u043B\u0438\u0431\u043E \u043E\u0431\u044A\u0435\u043A\u0442 Response\n // ? - \u043B\u0438\u0431\u043E \u0442\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430 (\u0432 \u0441\u043B\u0443\u0447\u0430\u0435 isGetBody: 'first') \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043D\u043E\u0435 \u043C\u0435\u0442\u043E\u0434\u043E\u043C getResponseBody (\u0441\u043C\u043E\u0442\u0440\u0438 \u043A\u043B\u0430\u0441\u0441 ApiUtils)\n async createRequest_default(props: RequestDescriptor, variant?: string): CreatorResult {\n return this.splitProperties(props, variant);\n }\n}\n\nexport default ApiRequestCreators;\n", "import type { RESTAPISettings } from './types';\nimport ApiRequestCreators from './ApiRequestCreators';\n\n/**\n * \u0411\u0430\u0437\u043E\u0432\u044B\u0439 \u043A\u043B\u0430\u0441\u0441 API: \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0438 \u0432\u0430\u043B\u0438\u0434\u0438\u0440\u0443\u0435\u0442 \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u044B \u0438\u0437 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A\n * (API_PATH, \u0442\u0435\u043A\u0441\u0442\u044B \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439, REJECT_CODES) \u0438 \u0440\u0430\u0441\u043A\u043B\u0430\u0434\u044B\u0432\u0430\u0435\u0442 \u0438\u0445 \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440.\n * \u041A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0435 \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u044B \u043F\u0440\u043E\u043A\u0438\u0434\u044B\u0432\u0430\u044E\u0442\u0441\u044F \u043D\u0430 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 \u043A\u0430\u043A \u0435\u0441\u0442\u044C.\n */\nclass ApiBase extends ApiRequestCreators {\n /** \u0422\u0435\u043A\u0441\u0442 \u043E\u0448\u0438\u0431\u043A\u0438 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445 \u0437\u0430\u043F\u0440\u043E\u0441\u0430. */\n BAD_REQUEST_DATA_TEXT!: string;\n\n /** \u0422\u0435\u043A\u0441\u0442 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u043E\u0431 \u0443\u0441\u043F\u0435\u0445\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E. */\n DEFAULT_SUCCESS_MESSAGE!: string;\n\n /** \u0422\u0435\u043A\u0441\u0442 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E. */\n DEFAULT_ERROR_MESSAGE!: string;\n\n /** \u0422\u0435\u043A\u0441\u0442 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u043E\u0431 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u0435\u0442\u0438. */\n NO_INET!: string;\n\n /** \u041A\u043E\u0434\u044B \u043E\u0442\u0432\u0435\u0442\u0430, \u043F\u043E \u043A\u043E\u0442\u043E\u0440\u044B\u043C \u0437\u0430\u043F\u0440\u043E\u0441 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044F \u043E\u0442\u043A\u043B\u043E\u043D\u0451\u043D\u043D\u044B\u043C. */\n REJECT_CODES!: number[];\n\n constructor(settings: RESTAPISettings) {\n super(settings);\n\n const {\n API_PATH,\n\n BAD_REQUEST_DATA_TEXT = 'Bad request data',\n DEFAULT_SUCCESS_MESSAGE = 'Success',\n DEFAULT_ERROR_MESSAGE = 'Something wrong, try again',\n NO_INET = 'Please check your network connection and reload page',\n\n REJECT_CODES = [],\n\n ...customConstants\n } = settings.constants || {};\n\n if (typeof API_PATH !== 'string') throw new Error('No API_PATH [ApiBase constructor]');\n\n if (\n typeof BAD_REQUEST_DATA_TEXT !== 'string'\n || typeof DEFAULT_SUCCESS_MESSAGE !== 'string'\n || typeof DEFAULT_ERROR_MESSAGE !== 'string'\n || typeof NO_INET !== 'string'\n || !Array.isArray(REJECT_CODES)\n || !REJECT_CODES.every(i => typeof i === 'number')\n ) {\n throw new Error('Bad input data [ApiBase constructor]');\n }\n\n this.API_PATH = API_PATH;\n\n this.BAD_REQUEST_DATA_TEXT = BAD_REQUEST_DATA_TEXT;\n this.DEFAULT_SUCCESS_MESSAGE = DEFAULT_SUCCESS_MESSAGE;\n this.DEFAULT_ERROR_MESSAGE = DEFAULT_ERROR_MESSAGE;\n this.NO_INET = NO_INET;\n\n this.REJECT_CODES = REJECT_CODES;\n\n Object.keys(customConstants).forEach((key) => {\n this[key] = customConstants[key];\n });\n }\n}\n\nexport default ApiBase;\n", "import type { CredentialsState, RESTAPISettings, UnknownRecord } from './types';\nimport { getIsOnlyAnObject } from './_utils';\n\n/**\n * \u0414\u0435\u043A\u043E\u0434\u0438\u0440\u0443\u0435\u0442 payload JWT-\u0442\u043E\u043A\u0435\u043D\u0430.\n *\n * @param token - JWT-\u0441\u0442\u0440\u043E\u043A\u0430 \u0432\u0438\u0434\u0430 `header.payload.signature`.\n * @returns \u0420\u0430\u0441\u043F\u0430\u0440\u0441\u0435\u043D\u043D\u044B\u0439 payload (\u043E\u0431\u044A\u0435\u043A\u0442) \u043B\u0438\u0431\u043E `null`, \u0435\u0441\u043B\u0438 \u0434\u0435\u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C.\n */\nexport function decodeJWT(token: string): UnknownRecord | null {\n try {\n const payload = token.split('.')[1] ?? '';\n const decoded: unknown = JSON.parse(atob(payload));\n return getIsOnlyAnObject(decoded) ? decoded : null;\n }\n catch {\n return null;\n }\n}\n\n/**\n * \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u0443\u0447\u0451\u0442\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445 (\u0442\u043E\u043A\u0435\u043D\u043E\u0432): \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u043E\u043A\u0435\u043D \u0432 \u0437\u0430\u043F\u0440\u043E\u0441\u044B \u0438 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E) \u0440\u0435\u0430\u043B\u0438\u0437\u0443\u0435\u0442\n * \u0444\u043B\u043E\u0443 \u0440\u0435\u0444\u0440\u0435\u0448\u0430 \u0442\u043E\u043A\u0435\u043D\u043E\u0432. \u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044F \u0447\u0435\u0440\u0435\u0437 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0443 `credentialsProcessing`.\n */\nclass CredentialsProcessing {\n // ? \u0418\u043D\u0434\u0435\u043A\u0441-\u0441\u0438\u0433\u043D\u0430\u0442\u0443\u0440\u0430: getRESTAPIContext \u043D\u0430\u0432\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0438\u0437\u0432\u043D\u0435 (\u0438\u0437 \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u0430 RESTAPI).\n [key: string]: unknown;\n\n /** \u0412\u043A\u043B\u044E\u0447\u0451\u043D \u043B\u0438 \u0444\u043B\u043E\u0443 \u0440\u0435\u0444\u0440\u0435\u0448\u0430 \u0442\u043E\u043A\u0435\u043D\u043E\u0432. */\n isUseRefreshTokensPropcessing = false;\n\n /** \u0423\u0447\u0451\u0442\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E (\u043F\u0443\u0441\u0442\u044B\u0435). */\n DEFAULT_CREDENTIALS: CredentialsState = {};\n\n /** \u0412\u043D\u0435\u0448\u043D\u0438\u0439 \u043C\u0435\u0442\u043E\u0434 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0443\u0447\u0451\u0442\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445. */\n getCredentialsByOuter!: () => unknown;\n\n /** \u0412\u043D\u0435\u0448\u043D\u0438\u0439 \u043C\u0435\u0442\u043E\u0434 \u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u0432 \u0430\u0432\u0442\u043E\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043F\u043E \u0442\u043E\u043A\u0435\u043D\u0443. */\n getHeadersForAuthorize!: (token: string) => UnknownRecord;\n\n /** \u041D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u0443\u0447\u0451\u0442\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445 \u043F\u043E\u0441\u043B\u0435 getCredentials. */\n importCredentials?: (cred: unknown) => unknown;\n\n /** \u041D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043C\u0435\u0442\u043E\u0434 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F \u0443\u0447\u0451\u0442\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445 (\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u0435\u043D \u0434\u043B\u044F \u0444\u043B\u043E\u0443 \u0440\u0435\u0444\u0440\u0435\u0448\u0430). */\n saveCredentials?: (cred: unknown) => unknown;\n\n /** \u0412\u043D\u0435\u0448\u043D\u0438\u0439 \u043C\u0435\u0442\u043E\u0434 \u0440\u0435\u0444\u0440\u0435\u0448\u0430 \u0443\u0447\u0451\u0442\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445. */\n refreshCredentialsByOuter?: (cred: CredentialsState) => unknown;\n\n /** \u041F\u043E\u043B\u043D\u044B\u0439 \u043F\u0443\u0442\u044C \u0434\u043E \u044D\u043D\u0434\u043F\u043E\u0438\u043D\u0442\u0430 \u0440\u0435\u0444\u0440\u0435\u0448\u0430 \u0442\u043E\u043A\u0435\u043D\u0430. */\n REFRESH_TOKEN_PATH?: string;\n\n /** \u041A\u043E\u0434\u044B \u043E\u0442\u0432\u0435\u0442\u0430, \u043F\u043E \u043A\u043E\u0442\u043E\u0440\u044B\u043C \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0438\u0442\u0441\u044F \u043F\u043E\u043F\u044B\u0442\u043A\u0430 \u0440\u0435\u0444\u0440\u0435\u0448\u0430. */\n CODES_USING_THE_REFRESH_ATTEMPT?: number[];\n\n /** \u041A\u043B\u044E\u0447 \u0444\u043B\u0430\u0433\u0430 \u00AB\u0440\u0435\u0444\u0440\u0435\u0448 \u043D\u0430\u0447\u0430\u0442\u00BB \u0432 localStorage. */\n REFRESH_TOKEN_FLAG = 'refreshTokenFlag';\n\n /** \u0418\u043D\u0442\u0435\u0440\u0432\u0430\u043B \u043E\u043F\u0440\u043E\u0441\u0430 \u0444\u043B\u0430\u0433\u0430 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u0442\u043E\u043A\u0435\u043D\u0430, \u043C\u0441. */\n INTERVAL_FOR_CHECKING_TOKEN_UPDATE = 50;\n\n /** \u041A\u043E\u043B\u0431\u044D\u043A, \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u043C\u044B\u0439 \u043F\u043E\u0441\u043B\u0435 \u043D\u0435\u0443\u0434\u0430\u0447\u043D\u043E\u0433\u043E \u0440\u0435\u0444\u0440\u0435\u0448\u0430. */\n callbackAfterRejectRefresh?: () => unknown;\n\n /** \u0414\u043E\u0441\u0442\u0443\u043F \u043A \u0432\u0435\u0440\u0445\u043D\u0435\u043C\u0443 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0443 RESTAPI (\u043D\u0430\u0432\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0438\u0437 \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u0430 RESTAPI). */\n getRESTAPIContext?: () => unknown;\n\n constructor(settings: RESTAPISettings) {\n const { credentialsProcessing } = settings;\n const {\n // ? \u0414\u043B\u044F \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u044B \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u0442\u043E\u043A\u0435\u043D\u043E\u0432 \u0432 \u0437\u0430\u043F\u0440\u043E\u0441\u044B \u043E\u0442 API\n // ? \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044C \u043C\u0435\u0442\u043E\u0434\u044B getCredentials \u0438 getHeadersForAuthorize\n getCredentials,\n getHeadersForAuthorize, // ? \u041D\u0430 \u0432\u0445\u043E\u0434 \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0442\u043E\u043A\u0435\u043D, \u0434\u043E\u043B\u0436\u043D\u0430 \u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 \u0434\u043B\u044F \u043A\u043E\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u0430 Headers\n\n // ? \u0422\u0430\u043A \u0436\u0435 \u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044C\n importCredentials, // ? \u0435\u0441\u043B\u0438 \u043E\u043D \u043F\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044F, \u0442\u043E \u043E\u043D \u0431\u0443\u0434\u0435\u0442 \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0442\u044C\u0441\u044F \u043A \u0432\u044B\u0432\u043E\u0434\u0443 \u043E\u0442 \u0432\u044B\u0437\u043E\u0432\u0430 getCredentials\n saveCredentials, // ? \u043C\u043E\u0436\u043D\u043E \u0431\u0443\u0434\u0435\u0442 \u043D\u0430\u0439\u0442\u0438 \u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u0435 credentialsProcessing, \u0447\u0442\u043E\u0431\u044B \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u043C\u0438 \u043C\u0435\u0442\u043E\u0434\u0430\u043C\u0438\n\n // ! \u041B\u0438\u0431\u043E \u0432\u044B\u0437\u043E\u0432 getCredentials, \u043B\u0438\u0431\u043E \u0446\u0435\u043F\u043E\u0447\u043A\u0430 \u0432\u044B\u0437\u043E\u0432\u043E\u0432 importCredentials(getCredentials())\n // ! \u0434\u043E\u043B\u0436\u043D\u0430 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044C \u0442\u0440\u0435\u0431\u0443\u0435\u043C\u0443\u044E \u043A\u043B\u0430\u0441\u0441\u043E\u043C \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0443\n // ! \u041A\u043B\u0430\u0441\u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B\n // ! - { token }, \u0435\u0441\u043B\u0438 \u0444\u043B\u043E\u0443 \u0440\u0435\u0444\u0440\u0435\u0448 \u0442\u043E\u043A\u0435\u043D\u0430 \u041D\u0415 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F\n // ! - { token, refreshToken, expires }, \u0435\u0441\u043B\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0444\u043B\u043E\u0443 \u0440\u0435\u0444\u0440\u0435\u0448 \u0442\u043E\u043A\u0435\u043D\u0430\n\n // *********\n\n // ? \u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0444\u043B\u043E\u0443 \u0440\u0435\u0444\u0440\u0435\u0448\u0430 \u0442\u043E\u043A\u0435\u043D\u043E\u0432\n isUseRefreshTokensPropcessing = false,\n\n // ! \u0414\u043B\u044F \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u044B \u0444\u043B\u043E\u0443 \u0440\u0435\u0444\u0440\u0435\u0448\u0430 \u0442\u043E\u043A\u0435\u043D\u043E\u0432 \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043C\u0435\u0442\u043E\u0434\u0430 saveCredentials \u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0441\u044F \u041E\u0411\u042F\u0417\u0410\u0422\u0415\u041B\u042C\u041D\u041E\u0419\n\n // ? \u0422\u0430\u043A \u0436\u0435 \u0434\u043B\u044F \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u044B \u0444\u043B\u043E\u0443 \u0440\u0435\u0444\u0440\u0435\u0448\u0430 \u0442\u043E\u043A\u0435\u043D\u043E\u0432 \u043D\u0443\u0436\u043D\u043E\n // ? - \u043B\u0438\u0431\u043E\n refreshCredentials, // ! \u043C\u0435\u0442\u043E\u0434 \u0434\u043E\u043B\u0436\u0435\u043D \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044C \u0442\u0430\u043A\u0443\u044E \u0436\u0435 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0443 \u043A\u0430\u043A \u0438 \u043C\u0435\u0442\u043E\u0434 getCredentials,\n // ? \u043D\u0430 \u0432\u0445\u043E\u0434 \u043F\u043E\u043B\u0443\u0447\u0438\u0442 \u0442\u0435\u043A\u0443\u0449\u0438\u0435 \u043A\u0440\u0435\u0434\u044B, \u043A \u0432\u044B\u0445\u043E\u0434\u0443 \u0431\u0443\u0434\u0435\u0442 \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D importCredentials, \u0435\u0441\u043B\u0438 \u044D\u0442\u043E\u0442 \u043C\u0435\u0442\u043E\u0434 \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043B\u0441\u044F\n // ? - \u043B\u0438\u0431\u043E\n REFRESH_TOKEN_PATH, // ! REFRESH_TOKEN_PATH \u043F\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044F \u041F\u041E\u041B\u041D\u041E\u0421\u0422\u042C\u042E (\u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u0430\u044F \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044F)!\n CODES_USING_THE_REFRESH_ATTEMPT, // ? \u0443\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u043F\u043E \u043A\u0430\u043A\u0438\u043C \u043A\u043E\u0434\u0430\u043C \u043E\u0442\u0432\u0435\u0442\u0430 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0438\u0442\u044C\u0441\u044F \u0440\u0435\u0444\u0440\u0435\u0448, \u043C\u0430\u0441\u0441\u0438\u0432 \u0447\u0438\u0441\u0435\u043B\n\n // ? \u041E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E\n REFRESH_TOKEN_FLAG = 'refreshTokenFlag',\n INTERVAL_FOR_CHECKING_TOKEN_UPDATE = 50, // ms\n callbackAfterRejectRefresh,\n } = credentialsProcessing || {};\n\n if (typeof getCredentials !== 'function') throw new Error('No getCredentials method [CredentialsProcessing]');\n if (typeof getHeadersForAuthorize !== 'function') {\n throw new TypeError('No getHeadersForAuthorize method [CredentialsProcessing]');\n }\n if (importCredentials && typeof importCredentials !== 'function') {\n throw new Error('Bad importCredentials method [CredentialsProcessing]');\n }\n\n this.isUseRefreshTokensPropcessing = Boolean(isUseRefreshTokensPropcessing);\n this.DEFAULT_CREDENTIALS = {};\n // ? \u0412\u043D\u0435\u0448\u043D\u0438\u0435 \u0444\u0443\u043D\u043A\u0446\u0438\u0438 \u043E\u0431\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043C \u0432 \u0442\u0438\u043F\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043E\u0431\u0451\u0440\u0442\u043A\u0438 (\u0431\u0435\u0437 \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u0442\u0438\u043F\u043E\u0432 / \u0442\u0438\u043F\u0430 Function).\n this.getCredentialsByOuter = () => getCredentials();\n this.getHeadersForAuthorize = (token: string) => {\n const result = getHeadersForAuthorize(token);\n return getIsOnlyAnObject(result) ? result : {};\n };\n if (typeof importCredentials === 'function') this.importCredentials = (cred: unknown) => importCredentials(cred);\n\n // ? \u0415\u0441\u043B\u0438 \u043C\u0435\u0442\u043E\u0434 \u043F\u0435\u0440\u0435\u0434\u0430\u043D \u0438\u043B\u0438 \u0435\u0441\u043B\u0438 \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u043D, \u043D\u043E \u0432\u043A\u043B\u044E\u0447\u0435\u043D \u0444\u043B\u043E\u0443 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u0442\u043E\u043A\u0435\u043D\u043E\u0432 (\u0442\u043E\u0433\u0434\u0430 saveCredentials \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u0435\u043D)\n if (saveCredentials || isUseRefreshTokensPropcessing) {\n if (typeof saveCredentials !== 'function') throw new Error('No saveCredentials method [CredentialsProcessing]');\n else this.saveCredentials = (cred: unknown) => saveCredentials(cred);\n }\n\n if (isUseRefreshTokensPropcessing) {\n if (typeof refreshCredentials === 'function') {\n this.refreshCredentialsByOuter = (cred: CredentialsState) => refreshCredentials(cred);\n }\n else {\n if (typeof this.refreshCredentialsByOuter === 'function' && typeof REFRESH_TOKEN_PATH !== 'string') {\n throw new TypeError('No REFRESH_TOKEN_PATH [CredentialsProcessing]');\n }\n this.REFRESH_TOKEN_PATH = typeof REFRESH_TOKEN_PATH === 'string' ? REFRESH_TOKEN_PATH : undefined;\n }\n\n if (!Array.isArray(CODES_USING_THE_REFRESH_ATTEMPT)) {\n throw new TypeError('No CODES_USING_THE_REFRESH_ATTEMPT [CredentialsProcessing]');\n }\n if (!CODES_USING_THE_REFRESH_ATTEMPT.every(i => typeof i === 'number')) {\n throw new Error('Invalid format of CODES_USING_THE_REFRESH_ATTEMPT elements [CredentialsProcessing]');\n }\n\n if (typeof REFRESH_TOKEN_FLAG !== 'string') throw new Error('Bad REFRESH_TOKEN_FLAG [CredentialsProcessing]');\n if (typeof INTERVAL_FOR_CHECKING_TOKEN_UPDATE !== 'number') {\n throw new TypeError('Bad INTERVAL_FOR_CHECKING_TOKEN_UPDATE [CredentialsProcessing]');\n }\n if (typeof INTERVAL_FOR_CHECKING_TOKEN_UPDATE !== 'number') {\n throw new TypeError('Bad INTERVAL_FOR_CHECKING_TOKEN_UPDATE [CredentialsProcessing]');\n }\n if (callbackAfterRejectRefresh && typeof callbackAfterRejectRefresh !== 'function') {\n throw new Error('Bad INTERVAL_FOR_CHECKING_TOKEN_UPDATE [CredentialsProcessing]');\n }\n\n this.CODES_USING_THE_REFRESH_ATTEMPT = CODES_USING_THE_REFRESH_ATTEMPT;\n this.REFRESH_TOKEN_FLAG = REFRESH_TOKEN_FLAG;\n this.INTERVAL_FOR_CHECKING_TOKEN_UPDATE = INTERVAL_FOR_CHECKING_TOKEN_UPDATE;\n\n if (typeof callbackAfterRejectRefresh === 'function') this.callbackAfterRejectRefresh = () => callbackAfterRejectRefresh();\n }\n }\n\n /** \u0412\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0444\u043B\u0430\u0433\u0430 \u00AB\u0440\u0435\u0444\u0440\u0435\u0448 \u043D\u0430\u0447\u0430\u0442\u00BB \u0438\u0437 localStorage. */\n getIsTokenStartRefresh(): string | null {\n return localStorage.getItem(this.REFRESH_TOKEN_FLAG);\n }\n\n /** \u0412\u044B\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 \u0444\u043B\u0430\u0433 \u00AB\u0440\u0435\u0444\u0440\u0435\u0448 \u043D\u0430\u0447\u0430\u0442\u00BB \u0432 localStorage. */\n setIsTokenStartRefresh(): void {\n localStorage.setItem(this.REFRESH_TOKEN_FLAG, String(true));\n }\n\n /** \u0421\u043D\u0438\u043C\u0430\u0435\u0442 \u0444\u043B\u0430\u0433 \u00AB\u0440\u0435\u0444\u0440\u0435\u0448 \u043D\u0430\u0447\u0430\u0442\u00BB \u0438\u0437 localStorage. */\n removeIsTokenStartRefresh(): void {\n localStorage.removeItem(this.REFRESH_TOKEN_FLAG);\n }\n\n /**\n * \u0412\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043A\u0443\u0449\u0438\u0435 \u0443\u0447\u0451\u0442\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 (\u0441 \u0443\u0447\u0451\u0442\u043E\u043C importCredentials \u0438 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0438\u0441\u0442\u0435\u0447\u0435\u043D\u0438\u044F JWT).\n *\n * @param isCatchCallbackProcess - \u0444\u043B\u0430\u0433 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u043E\u0448\u0438\u0431\u043A\u0438 (\u043E\u0442\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0443 \u0438\u0441\u0442\u0435\u0447\u0435\u043D\u0438\u044F).\n * @param callback - \u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043A\u043E\u043B\u0431\u044D\u043A, \u043F\u043E\u043B\u0443\u0447\u0430\u044E\u0449\u0438\u0439 \u0438\u0442\u043E\u0433\u043E\u0432\u044B\u0435 \u0443\u0447\u0451\u0442\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435.\n * @returns \u041F\u0440\u043E\u043C\u0438\u0441 \u0441 \u0443\u0447\u0451\u0442\u043D\u044B\u043C\u0438 \u0434\u0430\u043D\u043D\u044B\u043C\u0438.\n */\n async getCredentials(isCatchCallbackProcess?: boolean, callback?: (cred: CredentialsState) => unknown): Promise<CredentialsState> {\n let credentials: unknown = await this.getCredentialsByOuter();\n\n if (typeof this.importCredentials === 'function') credentials = await this.importCredentials(credentials);\n const credObj: CredentialsState = getIsOnlyAnObject(credentials) ? credentials : {};\n\n const token = credObj.token || null;\n\n if (token && !isCatchCallbackProcess) {\n let decoded: UnknownRecord | null;\n try {\n decoded = decodeJWT(token);\n }\n catch {\n decoded = null;\n }\n const currentTime = Date.now() / 1000;\n if (decoded !== null && Number(decoded.exp) < currentTime) credObj.isNeedRefresh = true;\n }\n\n if (callback) await callback({ ...credObj, isCatchCallbackProcess });\n return { ...credObj, isCatchCallbackProcess };\n }\n\n /**\n * \u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u0440\u0435\u0444\u0440\u0435\u0448 \u0443\u0447\u0451\u0442\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445 (\u0432\u043D\u0435\u0448\u043D\u0438\u043C \u043C\u0435\u0442\u043E\u0434\u043E\u043C \u043B\u0438\u0431\u043E \u0434\u0435\u0444\u043E\u043B\u0442\u043D\u044B\u043C OAuth-\u0444\u043B\u043E\u0443).\n *\n * @param currentCredentials - \u0442\u0435\u043A\u0443\u0449\u0438\u0435 \u0443\u0447\u0451\u0442\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435.\n * @param callback - \u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043A\u043E\u043B\u0431\u044D\u043A \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F \u043D\u043E\u0432\u044B\u0445 \u0443\u0447\u0451\u0442\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445.\n * @returns \u041F\u0440\u043E\u043C\u0438\u0441 \u0441 \u043D\u043E\u0432\u044B\u043C\u0438 \u0443\u0447\u0451\u0442\u043D\u044B\u043C\u0438 \u0434\u0430\u043D\u043D\u044B\u043C\u0438.\n */\n async refreshCredentials(currentCredentials: CredentialsState, callback?: (cred: CredentialsState) => unknown): Promise<CredentialsState> {\n const CONTEXT = this;\n\n async function finalize(cred: CredentialsState): Promise<CredentialsState> {\n if (callback) await callback(cred);\n return Promise.resolve(cred).then(async (res) => {\n CONTEXT.removeIsTokenStartRefresh();\n return res;\n });\n }\n\n if (!currentCredentials?.token || !currentCredentials?.refreshToken) return finalize(CONTEXT.DEFAULT_CREDENTIALS);\n\n // ! \u0412\u041D\u0418\u041C\u0410\u041D\u0418\u0415! \u0414\u0430\u043D\u043D\u044B\u0439 \u043C\u0435\u0445\u0430\u043D\u0438\u0437\u043C \u0440\u0435\u0444\u0440\u0435\u0448\u0430 \u043F\u0440\u0438\u043D\u044F\u0442 \u043D\u0430 \u043F\u0440\u043E\u0435\u043A\u0442\u0435 finturfreactfrontend (\u0430\u0434\u043C\u0438\u043D\u043A\u0430)\n // ! \u041D\u0430 \u043A\u0430\u0431\u0438\u043D\u0435\u0442\u0435 \u043E\u043D \u0422\u041E\u0427\u041D\u041E \u041D\u0415 \u0422\u0410\u041A\u041E\u0419\n async function refreshCredentialsByDefault(): Promise<Response> {\n const { token, refreshToken } = currentCredentials;\n // ? \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438 \u0430\u0432\u0442\u043E\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u043E\u0440\u043C\u0438\u0440\u0443\u0435\u043C \u0447\u0435\u0440\u0435\u0437 \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440 Headers \u0438\u0437 \u043F\u0430\u0440 \u00AB\u043A\u043B\u044E\u0447-\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u00BB.\n const headers = new Headers(Object.entries(CONTEXT.getHeadersForAuthorize(token || '')).map(([key, value]): [string, string] => [key, `${value}`]));\n\n const body = new FormData();\n body.append('grant_type', 'refresh_token');\n body.append('refresh_token', refreshToken || '');\n body.append('client_id', 'oauth');\n body.append('client_secret', 'secret');\n body.append('access_type', 'offline');\n\n return fetch(`${CONTEXT.REFRESH_TOKEN_PATH}`, {\n mode: 'cors',\n method: 'POST',\n headers,\n body,\n redirect: 'follow',\n });\n }\n\n // ? \u041F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0439 refreshCredentials \u043F\u0440\u0438 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0438 \u044D\u043A\u0437\u0435\u043C\u043B\u044F\u0440\u0430 RESTAPI, \u0435\u0441\u043B\u0438 \u043D\u0435 \u0443\u0432\u0435\u0440\u0435\u043D\u044B,\n // ? \u0447\u0442\u043E \u043C\u0435\u0445\u0430\u043D\u0438\u0437\u043C \u0440\u0435\u0444\u0440\u0435\u0448\u0430 \u0442\u043E\u043A\u0435\u043D\u043E\u0432 \u0418\u041C\u0415\u041D\u041D\u041E \u0422\u0410\u041A\u041E\u0419 \u043A\u0430\u043A \u0432 \u0444-\u0438 refreshCredentialsByDefault!\n // ! currentCredentials \u043F\u0435\u0440\u0435\u0434\u0430\u044E\u0442\u0441\u044F \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \u043A\u043B\u0430\u0441\u0441\u0430! ({ token, refreshToken, expires })\n const newCredentials\n = typeof CONTEXT.refreshCredentialsByOuter === 'function'\n ? await CONTEXT.refreshCredentialsByOuter(currentCredentials)\n : await refreshCredentialsByDefault();\n\n return finalize(getIsOnlyAnObject(newCredentials) ? newCredentials : CONTEXT.DEFAULT_CREDENTIALS);\n }\n\n /**\n * \u041E\u0436\u0438\u0434\u0430\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F \u0440\u0435\u0444\u0440\u0435\u0448\u0430 \u0442\u043E\u043A\u0435\u043D\u0430 (\u0438\u043B\u0438 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u0435\u0433\u043E \u0444\u043B\u0430\u0433 \u043F\u0440\u0438 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E\u0441\u0442\u0438).\n *\n * @param isNeedRefresh - \u0432\u044B\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043B\u0438 \u0444\u043B\u0430\u0433 \u00AB\u0440\u0435\u0444\u0440\u0435\u0448 \u043D\u0430\u0447\u0430\u0442\u00BB \u043F\u0440\u0438 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0433\u043E \u0440\u0435\u0444\u0440\u0435\u0448\u0430.\n * @returns \u041F\u0440\u043E\u043C\u0438\u0441, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0440\u0435\u0437\u043E\u043B\u0432\u0438\u0442\u0441\u044F \u043F\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0438 \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u044F.\n */\n async waitRefresh(isNeedRefresh?: boolean): Promise<void> {\n return new Promise<void>((resolve) => {\n if (!this.getIsTokenStartRefresh()) {\n if (isNeedRefresh) this.setIsTokenStartRefresh();\n resolve();\n }\n else {\n const intervalId = setInterval(() => {\n if (!this.getIsTokenStartRefresh()) {\n clearInterval(intervalId);\n resolve();\n }\n }, this.INTERVAL_FOR_CHECKING_TOKEN_UPDATE);\n }\n });\n }\n\n /**\n * \u041E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442 \u0443\u0447\u0451\u0442\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435: \u043F\u0440\u0438 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E\u0441\u0442\u0438 \u0440\u0435\u0444\u0440\u0435\u0448\u0438\u0442 \u0442\u043E\u043A\u0435\u043D \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0430\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435.\n *\n * @param cred - \u0442\u0435\u043A\u0443\u0449\u0438\u0435 \u0443\u0447\u0451\u0442\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435.\n * @returns \u041F\u0440\u043E\u043C\u0438\u0441 \u0441 \u0430\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u044B\u043C\u0438 \u0443\u0447\u0451\u0442\u043D\u044B\u043C\u0438 \u0434\u0430\u043D\u043D\u044B\u043C\u0438 (\u0441 \u0444\u043B\u0430\u0433\u043E\u043C isRefreshFailed \u043F\u0440\u0438 \u043D\u0435\u0443\u0434\u0430\u0447\u0435).\n */\n async processCredentials(cred: CredentialsState): Promise<CredentialsState> {\n if (!cred.isNeedRefresh && !cred.isCatchCallbackProcess) return cred;\n\n const CONTEXT = this;\n\n return CONTEXT.refreshCredentials(cred, response => CONTEXT.saveCredentials?.(response)).then(() => {\n return new Promise<CredentialsState>((resolve) => {\n setTimeout(async () => {\n const newCredentials = await CONTEXT.getCredentials();\n if (!newCredentials?.token) {\n newCredentials.isRefreshFailed = true;\n setTimeout(() => {\n CONTEXT?.callbackAfterRejectRefresh?.();\n }, 0);\n }\n resolve(newCredentials);\n }, 0);\n });\n });\n }\n}\n\nexport default CredentialsProcessing;\n", "import type { DoRequestSettings, RequestDescriptor, RequestInput, RESTAPISettings, UnknownRecord } from './partials/types';\nimport { getInstanceOfFetchSystem, getIsOnlyAnObject } from './partials/_utils';\nimport ApiBase from './partials/ApiBase';\nimport CredentialsProcessing from './partials/CredentialsProcessing';\n\n// ? \u0412\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 (\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u043F\u0440\u043E\u0431\u0440\u043E\u0441\u0430 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430 RESTAPI \u0432 credentialsProcessing).\nfunction returnTheContext(this: RESTAPI): RESTAPI {\n return this;\n}\n\n/**\n * \u041A\u043B\u0430\u0441\u0441 REST API \u043F\u043E\u0432\u0435\u0440\u0445 AbortableFetch: \u0444\u043E\u0440\u043C\u0438\u0440\u0443\u0435\u0442 \u0438 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u0437\u0430\u043F\u0440\u043E\u0441\u044B (\u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u0435 \u0438 \u043C\u0443\u043B\u044C\u0442\u0438\u0437\u0430\u043F\u0440\u043E\u0441\u044B),\n * \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0442\u043E\u043A\u0435\u043D\u0430\u043C\u0438 \u0430\u0432\u0442\u043E\u0440\u0438\u0437\u0430\u0446\u0438\u0438 (\u0447\u0435\u0440\u0435\u0437 {@link CredentialsProcessing}) \u0438 \u0438\u043D\u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F.\n * \u0420\u0430\u0441\u0448\u0438\u0440\u044F\u0435\u0442\u0441\u044F \u0440\u0435\u043A\u0432\u0435\u0441\u0442-\u043A\u0440\u0435\u0439\u0442\u0435\u0440\u0430\u043C\u0438, \u0443\u0442\u0438\u043B\u0438\u0442\u0430\u043C\u0438 \u0438 \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u0430\u043C\u0438 \u0447\u0435\u0440\u0435\u0437 \u043E\u0431\u044A\u0435\u043A\u0442 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A.\n */\nclass RESTAPI extends ApiBase {\n /** \u0424\u0443\u043D\u043A\u0446\u0438\u044F \u043F\u043E\u043A\u0430\u0437\u0430 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044E (\u0438\u043B\u0438 null, \u0435\u0441\u043B\u0438 \u0438\u043D\u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u043E). */\n sendMessage: ((...args: unknown[]) => unknown) | null = null;\n\n /** \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u0443\u0447\u0451\u0442\u043D\u044B\u0445 \u0434\u0430\u043D\u043D\u044B\u0445 (\u0441\u043E\u0437\u0434\u0430\u0451\u0442\u0441\u044F \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 credentialsProcessing). */\n credentialsProcessing?: CredentialsProcessing;\n\n constructor(settings: RESTAPISettings) {\n super(settings);\n const { sendMessage, credentialsProcessing } = settings || {};\n this.sendMessage = typeof sendMessage === 'function' ? sendMessage : null;\n\n // ! \u041D\u0430\u043B\u0438\u0447\u0438\u0435 credentialsProcessing \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0414\u041E\u0411\u0410\u0412\u041B\u0415\u041D\u0418\u0415 \u0422\u041E\u041A\u0415\u041D\u041E\u0412 \u0412 \u0417\u0410\u041F\u0420\u041E\u0421\u042B,\n // ! \u041D\u041E \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u041D\u0415 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 \u0444\u043B\u043E\u0443 \u0440\u0435\u0444\u0440\u0435\u0448\u0430 \u0442\u043E\u043A\u0435\u043D\u043E\u0432\n // ! (\u0444\u043B\u043E\u0443 \u0440\u0435\u0444\u0440\u0435\u0448\u0430 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0430\u0435\u0442\u0441\u044F \u043F\u0440\u043E\u043F\u043E\u0439 isUseRefreshTokensPropcessing \u0438\u0437 credentialsProcessing)\n if (getIsOnlyAnObject(credentialsProcessing)) {\n this.credentialsProcessing = new CredentialsProcessing(settings);\n\n // ? credentialsProcessing \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D \u043E\u0431\u043E\u0441\u043E\u0431\u043B\u0435\u043D\u043E \u0434\u043B\u044F \u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043E\u0431\u043B\u0430\u0434\u0430\u0442\u044C \u0441\u0432\u043E\u0438\u043C \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u044B\u043C this\n // ? \u041E\u0434\u043D\u0430\u043A\u043E \u043F\u0440\u0438 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0438 \u043C\u0435\u0442\u043E\u0434\u043E\u0432 credentialsProcessing\n // ? \u043C\u043E\u0436\u0435\u0442 \u043F\u043E\u043D\u0430\u0434\u043E\u0431\u0438\u0442\u0441\u044F \u0432\u043E\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0435\u043F\u043E\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u043C\u0438 \u043C\u0435\u0442\u043E\u0434\u0430\u043C\u0438 \u043A\u043B\u0430\u0441\u0441\u0430 RESTAPI\n // ? \u0414\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u0434\u043E\u0442\u044F\u043D\u0443\u0442\u044C\u0441\u044F \u0434\u043E \u0432\u0435\u0440\u0445\u043D\u0435\u0433\u043E \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430\n this.credentialsProcessing.getRESTAPIContext = returnTheContext.bind(this);\n }\n }\n\n /**\n * \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 (\u0431\u0430\u0437\u043E\u0432\u044B\u0439) \u043C\u0435\u0442\u043E\u0434 API: \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u043C\u0443\u043B\u044C\u0442\u0438\u0437\u0430\u043F\u0440\u043E\u0441 (\u0438\u043B\u0438 \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u0439 \u0437\u0430\u043F\u0440\u043E\u0441).\n *\n * @param inputRequests - \u043F\u0443\u0442\u044C, \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u0438\u043B\u0438 \u0438\u0445 \u043C\u0430\u0441\u0441\u0438\u0432.\n * @param settings - \u043E\u0431\u0449\u0438\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0437\u0430\u043F\u0440\u043E\u0441\u0430 (\u0444\u043E\u0440\u043C\u0430\u0442 \u043E\u0442\u0432\u0435\u0442\u0430, \u0442\u043E\u0441\u0442\u044B, \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u0438 \u0442.\u043F.).\n * @returns \u041F\u0440\u043E\u043C\u0438\u0441 \u0441 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u043C (\u0444\u043E\u0440\u043C\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043E\u0442 isResponseAsObject).\n */\n // ! \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 (\u0431\u0430\u0437\u043E\u0432\u044B\u0439) \u043C\u0435\u0442\u043E\u0434 API, \u043C\u0443\u043B\u044C\u0442\u0438\u0437\u0430\u043F\u0440\u043E\u0441\u044B\n async doRequest(inputRequests: RequestInput, settings?: DoRequestSettings): Promise<unknown> {\n if (typeof inputRequests !== 'string' && typeof inputRequests !== 'object') {\n return Promise.reject(new Error(this.BAD_REQUEST_DATA_TEXT));\n }\n\n // ? \u041A \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430\u043C \u0438 \u043C\u0435\u0442\u043E\u0434\u0430\u043C API \u0431\u0443\u0434\u0435\u043C \u0442\u044F\u043D\u0443\u0442\u044C\u0441\u044F \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043C\u044B\u043A\u0430\u043D\u0438\u044F\n const API_CONTEXT = this;\n\n const { isResponseAsObject, isGetBody, callback, ...partialRestSettings } = settings || {};\n const {\n commonSuccessMessage: CSMfromSettings,\n commonErrorMessage: CEMfromSettings,\n successMessageType: SMTfromSettings,\n\n isToastResult: isToastFromSettings,\n toastOptions: TOFomSettings,\n isNoToastSuccess: isNTSFromSettings,\n isNoToastError: isNTEFromSettings,\n isNoToast: isNoToastFromSettings,\n\n successMessages,\n errorMessages,\n } = partialRestSettings || {};\n\n // ? \u041F\u0440\u0438 \u0432\u044B\u0437\u043E\u0432\u0435 getRequestInstance \u043F\u0435\u0440\u0435\u0434\u0430\u0434\u0438\u043C \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 API\n // ? \u0412 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0435 \u0432\u044B\u0437\u043E\u0432\u0430 \u043F\u043E\u043B\u0443\u0447\u0438\u043C \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 \u043A\u043B\u0430\u0441\u0441\u0430 AbortableFetch...\n const instance = await getInstanceOfFetchSystem.call(this);\n if (!instance) {\n throw new Error('It is impossible to make a request!');\n }\n\n // ? ... \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0435\u0449\u0435 \u043D\u0435\u043C\u043D\u043E\u0433\u043E \u0434\u043E\u043D\u0430\u0441\u0442\u0440\u043E\u0438\u043C \u0441\u0435\u0442\u0442\u0435\u0440\u0430\u043C\u0438 \u044D\u043A\u0437\u0435\u043F\u043B\u044F\u0440\u0430\n instance.setIsResponseAsObject(isResponseAsObject ?? true);\n if (typeof callback === 'function') instance.setCallback(callback);\n\n // ? \u042D\u0442\u043E \u041D\u0415 \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u0430\u044F \u0444-\u044F, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u0432\u0435\u0440\u043D\u0435\u0442 \u043C\u0430\u0441\u0441\u0438\u0432 \u043F\u0440\u043E\u043C\u0438\u0441\u043E\u0432\n function getRequests(): Array<Promise<UnknownRecord>> {\n let output: Array<string | UnknownRecord>;\n if (typeof inputRequests === 'string') output = [{ path: inputRequests }];\n else output = Array.isArray(inputRequests) ? inputRequests : [inputRequests];\n\n // ? \u042D\u0442\u043E \u041D\u0415 \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u0430\u044F \u0444-\u044F, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u044B\u0439 \u043A\u043E\u043B\u0431\u044D\u043A\n function getCallback(item: UnknownRecord, mesageOptions: UnknownRecord): (res: unknown) => Promise<unknown> {\n const getBodyAs = typeof item.getBodyAs === 'string' ? item.getBodyAs : undefined;\n\n const finalIsGetBody = typeof item.isGetBody === 'boolean' || typeof item.isGetBody === 'string' ? item.isGetBody : isGetBody;\n const finalIsGetBodyFirst = finalIsGetBody === 'first';\n\n const checkResponseCallback = finalIsGetBodyFirst\n ? async (res: unknown, options: UnknownRecord) =>\n API_CONTEXT.getResponseBody(await API_CONTEXT.checkResponseCode(res, options), getBodyAs)\n : async (res: unknown, options: UnknownRecord) => API_CONTEXT.checkResponseCode(res, options);\n\n const itemCallback = item.callback;\n const callbackFn = typeof itemCallback === 'function'\n ? async (res: unknown) => itemCallback(await checkResponseCallback(res, mesageOptions))\n : async (res: unknown) => checkResponseCallback(res, mesageOptions);\n\n return finalIsGetBody && !finalIsGetBodyFirst\n ? async (res: unknown) => API_CONTEXT.getResponseBody(await callbackFn(res), getBodyAs)\n : callbackFn;\n }\n\n async function getRequestItem(item: string | UnknownRecord, idx: number): Promise<UnknownRecord> {\n const itemObj: UnknownRecord = getIsOnlyAnObject(item) ? item : { path: item };\n const { type, ...partialRestFirst } = itemObj;\n // ? \u041F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u043B\u043E\u0441\u044C \u0447\u0442\u043E \u043F\u0440\u043E\u043F\u0430 type \u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u0435 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430\n // ? \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0438\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0434\u043B\u044F \u043C\u0435\u0442\u043E\u0434\u0430 doMonoRequest,\n // ? \u043E\u0434\u043D\u0430\u043A\u043E \u043E\u043A\u0430\u0437\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E type \u0443\u0434\u043E\u0431\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0438 \u0432 \u043C\u0443\u043B\u044C\u0442\u0438 \u0437\u0430\u043F\u0440\u043E\u0441\u0430\u0445 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E).\n // ? \u0412 \u0434\u0430\u043D\u043D\u043E\u043C \u043C\u0435\u0441\u0442\u0435 \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 type \u0434\u043B\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u0438\u0437 \u043C\u0443\u043B\u044C\u0442\u0438 \u0437\u0430\u043F\u0440\u043E\u0441\u0430.\n // ? 'doRequestMapping' - \u043A\u043B\u044E\u0447 \u0434\u043B\u044F \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0432\u044B\u0445\u043E\u0434\u043D\u044B\u043C\u0438 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430\u043C\u0438 \u0438\u0437 \u043C\u0435\u0442\u043E\u0434\u0430 splitProperties\n // ? (splitProperties \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u041B\u042E\u0411\u042B\u041C \u043A\u0440\u0435\u0439\u0442\u0435\u0440\u043E\u043C)\n const itemAfterRequestCreating: UnknownRecord = await (async () => {\n const key = `createRequest_${typeof type === 'string' ? type : 'default'}`;\n\n // ? \u0417\u0430\u0449\u0438\u0442\u0430 \u043D\u0430 \u0441\u043B\u0443\u0447\u0430\u0439 \u0435\u0441\u043B\u0438 type \u043F\u0435\u0440\u0435\u0434\u0430\u043D, \u043D\u043E \u0442\u0430\u043A\u043E\u0433\u043E \u043D\u0435\u0442 \u0432 API_CONTEXT\n const creator = key in API_CONTEXT ? API_CONTEXT[key] : undefined;\n const result = typeof creator === 'function'\n ? creator.call(API_CONTEXT, partialRestFirst, 'doRequestMapping')\n : API_CONTEXT.createRequest_default(partialRestFirst, 'doRequestMapping');\n const awaited = await result;\n return getIsOnlyAnObject(awaited) ? awaited : {};\n })();\n\n const { fullPath, api, path, query, queryParameters, ...partialRestSecond } = itemAfterRequestCreating;\n const {\n successMess,\n commonSuccessMessage,\n successMessageType,\n errorMess,\n commonErrorMessage,\n isToastResult,\n toastOptions,\n isNoToastSuccess,\n isNoToastError,\n isNoToast,\n ...rest\n } = partialRestSecond;\n\n const successMessagesArr = Array.isArray(successMessages) ? successMessages : undefined;\n const errorMessagesArr = Array.isArray(errorMessages) ? errorMessages : undefined;\n\n const useSuccessMessageFlag = Boolean(\n successMess || commonSuccessMessage || successMessagesArr?.[idx] || CSMfromSettings || isToastResult || isToastFromSettings,\n );\n\n const isUseSuccessToast = useSuccessMessageFlag && !isNoToast && !isNoToastFromSettings && !isNoToastSuccess && !isNTSFromSettings;\n\n const isUseErrorToast = !isNoToast && !isNoToastFromSettings && !isNoToastError && !isNTEFromSettings;\n\n const mesageOptions: UnknownRecord = {\n successMess: successMess || commonSuccessMessage || successMessagesArr?.[idx] || CSMfromSettings,\n successMessageType: successMessageType || SMTfromSettings,\n errorMess: errorMess || commonErrorMessage || errorMessagesArr?.[idx] || CEMfromSettings,\n isUseSuccessToast,\n isUseErrorToast,\n toastOptions: toastOptions || TOFomSettings,\n };\n\n // ? \u0414\u0430\u043D\u043D\u0430\u044F \u0444-\u044F \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u0430\u044F, \u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u0441\u044F await-\u043C\u0438 \u0447\u0442\u043E\u0431\u044B \u0434\u043E\u0436\u0434\u0430\u0442\u044C\u0441\u044F \u0444\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439\n return {\n ...rest,\n path: `${fullPath || (await API_CONTEXT.getRootPath(api)) + (typeof path === 'string' ? path : '')}`,\n\n // ? \u0417\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u043C \u0441\u0430\u043C\u043E\u0432\u044B\u0437\u044B\u0432\u0430\u044E\u0449\u0443\u044E\u0441\u044F \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u0443\u044E \u0444-\u044E, \u0436\u0434\u0435\u043C \u0440\u0435\u0437\u043E\u043B\u0432\u0430 \u043F\u0440\u043E\u043C\u0438\u0441\u0430 \u043E\u0442 \u043D\u0435\u0435\n queryParameters: await (async () => {\n const queryParams = query || queryParameters || '';\n // ? \u0422.\u043A.\u0441\u0430\u043C\u043E\u0432\u044B\u0437\u044B\u0432\u0430\u044E\u0449\u0430\u044F\u0441\u044F \u0444-\u044F \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u0430\u044F, \u0442\u043E \u043C\u043E\u0436\u0435\u043C \u0434\u043E\u0436\u0434\u0430\u0442\u044C\u0441\u044F \u0444\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F\n const preparedQueryParams = await API_CONTEXT.processQueryParams(queryParams);\n return preparedQueryParams;\n })(),\n mesageOptions,\n callback: getCallback(itemAfterRequestCreating, mesageOptions),\n };\n }\n\n // ? getRequestItem - \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u0430\u044F \u0444-\u044F (\u0432\u044B\u0437\u043E\u0432 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043F\u0440\u043E\u043C\u0438\u0441)\n // ? \u0412\u044B\u0437\u044B\u0432\u0430\u0435\u043C \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043C\u0430\u043F\u0438\u043D\u0433\u0430, \u043F\u043E\u043B\u0443\u0447\u0430\u0435\u043C \u043C\u0430\u0441\u0441\u0438\u0432 \u043F\u0440\u043E\u043C\u0438\u0441\u043E\u0432\n return output.map((item, idx) => getRequestItem(item, idx));\n }\n\n // ? \u0424-\u044F getRequests \u041D\u0415 \u0430\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u043D\u0430\u044F, \u043D\u043E \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043C\u0430\u0441\u0441\u0438\u0432 \u043F\u0440\u043E\u043C\u0438\u0441\u043E\u0432\n // ? \u0414\u041E\u0416\u0418\u0414\u0410\u0415\u041C\u0421\u042F \u0440\u0435\u0437\u043E\u043B\u0432\u0430 \u0432\u0441\u0435\u0445 \u043F\u0440\u043E\u043C\u0438\u0441\u043E\u0432 \u0447\u0435\u0440\u0435\u0437 Promise.all,\n // ? \u043F\u043E\u0441\u043B\u0435 \u0440\u0435\u0437\u043E\u043B\u0432\u0430 \u0432\u0441\u0435\u0445 \u043F\u0440\u043E\u043C\u0438\u0441\u043E\u0432 Promise.all \u0432\u0435\u0440\u043D\u0435\u0442 \u043C\u0430\u0441\u0441\u0438\u0432 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u0440\u0435\u0437\u043E\u043B\u0432\u0430,\n // ? instance - \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 AbortableFetch\n // ? \u0412\u044B\u0437\u044B\u0432\u0430\u0435\u043C instance.request, \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044F \u043C\u0430\u0441\u0441\u0438\u0432 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u0440\u0435\u0437\u043E\u043B\u0432\u043E\u0432 \u043F\u0440\u043E\u043C\u0438\u0441\u043E\u0432\n // ? (\u0442.\u0435. \u043C\u0430\u0441\u0441\u0438\u0432 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430)\n return instance.request(await Promise.all(getRequests()));\n }\n\n /**\n * \u041C\u0435\u0442\u043E\u0434 API \u0434\u043B\u044F \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u0445 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432: \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0435\u0442 \u043A\u0440\u0435\u0439\u0442\u0435\u0440 \u043F\u043E `type` \u0438 \u0434\u0435\u043B\u0435\u0433\u0438\u0440\u0443\u0435\u0442 \u0432 {@link RESTAPI.doRequest}.\n *\n * @param requestSettings - \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u043E\u0433\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0430 (\u0441 \u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u043C `type`).\n * @returns \u041F\u0440\u043E\u043C\u0438\u0441 \u0441 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u043C \u0437\u0430\u043F\u0440\u043E\u0441\u0430.\n */\n // ! \u041C\u0435\u0442\u043E\u0434 API \u0434\u043B\u044F \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u0445 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432\n async doMonoRequest(requestSettings: RequestDescriptor): Promise<unknown> {\n if (!getIsOnlyAnObject(requestSettings)) throw new Error(`${this.BAD_REQUEST_DATA_TEXT} [RESTAPI.doMonoRequest]`);\n const { type, ...requestSettingsRest } = requestSettings;\n\n // ? \u0420\u0435\u043A\u0432\u0435\u0441\u0442-\u043A\u0440\u0435\u0439\u0442\u0435\u0440\u044B \u0440\u0430\u0437\u0434\u0435\u043B\u044F\u044E\u0442 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B, \u043F\u0440\u0438 \u043D\u0430\u0434\u043E\u0431\u043D\u043E\u0441\u0442\u0438 \u044D\u0442\u0438 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u044E\u0442, \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u044E\u0442 \u0444-\u0442\u044C\n // ? \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u044E\u0442 \u043C\u0430\u0441\u0441\u0438\u0432 \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0445 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0434\u043B\u044F \u043C\u0435\u0442\u043E\u0434\u0430 doRequest\n const key = `createRequest_${typeof type === 'string' ? type : ''}`;\n const creator = type && key in this ? this[key] : undefined;\n const created = typeof creator === 'function'\n ? await creator.call(this, requestSettingsRest)\n : await this.createRequest_default(requestSettingsRest);\n\n const doRequestArgs = Array.isArray(created) ? created : [created];\n\n return this.doRequest(doRequestArgs[0], doRequestArgs[1]);\n }\n}\n\nexport default RESTAPI;\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 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 { 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", "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", "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 { 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, 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 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 {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 { 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 * `onlyNumbers` \u0438\u043C\u0435\u0435\u0442 union `boolean | OnlyNumbersOptions`, \u0430\n * `filterNumeric` / `addCommas` \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u044E\u0442 only `IBitDepthSettings` (object).\n * `boolean` \u043F\u043E\u0434\u0432\u0438\u0434 union'\u0430 \u0441\u044E\u0434\u0430 \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u043C \u2014 \u043D\u043E\u0440\u043C\u0430\u043B\u0438\u0437\u0443\u0435\u043C \u043A object | undefined.\n * `typeof === 'object'` \u0441\u0440\u0430\u0437\u0443 \u0441\u0443\u0436\u0430\u0435\u0442 union \u0431\u0435\u0437 `as`-cast.\n */\n const bitDepthSettings: OnlyNumbersOptions | undefined\n = typeof onlyNumbers === 'object' && onlyNumbers !== null ? onlyNumbers : undefined;\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 ? String(minimum) : '0';\n }\n /**\n * `minimum !== undefined` \u0434\u0443\u0431\u043B\u0438\u0440\u0443\u0435\u0442 `!Number.isNaN(Number(minimum))`\n * (Number(undefined) = NaN), \u043D\u043E \u0434\u0430\u0451\u0442 TS narrowing \u0434\u043B\u044F `String(minimum)` \u043D\u0438\u0436\u0435.\n */\n else if (\n inputValue\n && minimum !== undefined\n && !Number.isNaN(Number(minimum))\n && Number(minimum) > Number((minusSymbol ?? '') + inputValue)\n ) {\n inputValue = String(minimum);\n }\n };\n\n const checkMax = (): void => {\n if (\n maximum !== undefined\n && !Number.isNaN(Number(maximum))\n && Number(maximum) < Number((minusSymbol ?? '') + inputValue)\n ) {\n inputValue = String(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, bitDepthSettings);\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, bitDepthSettings);\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 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 { 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 { 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 AffiliateNetworks(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <path\n fill=\"none\"\n stroke=\"#9AA0B9\"\n d=\"M17 21v-2c0-2.2-1.8-4-4-4H5c-2.2 0-4 1.8-4 4v2\"\n />\n <circle cx={9} cy={7} r={4} fill=\"none\" stroke=\"#9AA0B9\" />\n <path\n fill=\"none\"\n stroke=\"#9AA0B9\"\n d=\"M23 21v-2c0-1.8-1.2-3.4-3-3.9M16 3.1c2.1.5 3.4 2.7 2.9 4.9-.4 1.4-1.5 2.5-2.9 2.9\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function AlertCircle(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n id=\"Layer_1\"\n x={0}\n y={0}\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <style>\n {\n '.st0{fill:none;stroke:#f06d8d;strokeWidth:2;strokeLinecap:round;strokeLinejoin:round}'\n }\n </style>\n <circle cx={12} cy={12} r={10} className=\"st0\" />\n <path d=\"M12 8v4M12 16\" className=\"st0\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function AppStore(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n width={108}\n height={38}\n fill=\"none\"\n {...props}\n >\n <path fill=\"url(#a)\" d=\"M-2 0h110v38H-2z\" />\n <defs>\n <pattern\n id=\"a\"\n width={1}\n height={1}\n patternContentUnits=\"objectBoundingBox\"\n >\n <use xlinkHref=\"#b\" transform=\"matrix(.00385 0 0 .01113 0 -.001)\" />\n </pattern>\n <image\n xlinkHref=\"data:image/png;base64,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\"\n id=\"b\"\n width={260}\n height={90}\n />\n </defs>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Arrow(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 <g clipPath=\"url(#a)\">\n <mask\n id=\"b\"\n width={16}\n height={16}\n x={0}\n y={0}\n mask-type=\"alpha\"\n maskUnits=\"userSpaceOnUse\"\n >\n <path stroke=\"#000\" d=\"m4 6 4 4 4-4\" />\n </mask>\n <g mask=\"url(#b)\">\n <path fill=\"#1E1E2D\" d=\"M0 0h16v16H0z\" />\n </g>\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M-533-86H491v424H-533z\" />\n </clipPath>\n </defs>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function ArrowDown(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={6}\n height={7}\n fill=\"none\"\n {...props}\n >\n <path\n fill=\"#F06D8D\"\n fillRule=\"evenodd\"\n d=\"M3.598 0h-2v3.5H0L2.598 7l2.598-3.5H3.598V0Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function ArrowLeft(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n id=\"Layer_1\"\n x={0}\n y={0}\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <style>\n {\n '.st0{fill:none;stroke:#6b81dd;strokeWidth:1.3333;strokeLinecap:round;strokeLinejoin:round}'\n }\n </style>\n <path d=\"M12.7 8H3.3M8 3.3 3.3 8 8 12.7\" className=\"st0\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function ArrowRight(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n id=\"Layer_1\"\n x={0}\n y={0}\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <style>\n {\n '.st0{fill:none;stroke:#fff;strokeWidth:1.3333;strokeLinecap:round;strokeLinejoin:round}'\n }\n </style>\n <path d=\"M3.3 8h9.3M8 3.3 12.7 8 8 12.7\" className=\"st0\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function ArrowUp(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={6}\n height={7}\n fill=\"none\"\n {...props}\n >\n <path\n fill=\"#00B031\"\n fillRule=\"evenodd\"\n d=\"M1.598 7h2V3.5h1.598L2.598 0 0 3.5h1.598V7Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Bell(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 stroke=\"#000\"\n d=\"M12 5.333a4 4 0 1 0-8 0c0 4.667-2 6-2 6h12s-2-1.333-2-6ZM9.153 14a1.333 1.333 0 0 1-2.306 0\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Button(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 fill=\"#fff\" d=\"M0 0h16v16H0z\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Campaigns(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <path\n fill=\"none\"\n stroke=\"#9AA0B9\"\n strokeMiterlimit={10}\n d=\"M8 14.7A6.7 6.7 0 1 0 8 1.3a6.7 6.7 0 0 0 0 13.4zM14.7 8H12M4 8H1.3M8 4V1.3M8 14.7V12\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Check(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 512 512\"\n {...props}\n >\n <path d=\"M504.502 75.496c-9.997-9.998-26.205-9.998-36.204 0L161.594 382.203 43.702 264.311c-9.997-9.998-26.205-9.997-36.204 0-9.998 9.997-9.998 26.205 0 36.203l135.994 135.992c9.994 9.997 26.214 9.99 36.204 0L504.502 111.7c9.998-9.997 9.997-26.206 0-36.204z\" />\n </svg>\n )\n}\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 ChevronDown(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=\"m4 6 4 4 4-4\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function ChevronDownDisabled(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <path fill=\"none\" stroke=\"#A5A5AB\" d=\"m4 6 4 4 4-4\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function ChevronLeft(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <path fill=\"none\" stroke=\"#000\" d=\"M10 4 6 8l4 4\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function ChevronRight(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <path fill=\"none\" stroke=\"#000\" d=\"m6 12 4-4-4-4\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function ChevronUp(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <path fill=\"none\" stroke=\"#000\" d=\"M12 10 8 6l-4 4\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function ChevronUpDown(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 stroke=\"#171D33\" d=\"m5 10 3 3 3-3M5 6l3-3 3 3\" />\n </mask>\n <g mask=\"url(#a)\">\n <path fill=\"#171D33\" d=\"M0 0h16v16H0z\" />\n </g>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Close(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 <g stroke=\"#1E1E2D\" opacity={0.3}>\n <path d=\"m12 4-8 8M4 4l8 8\" />\n </g>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function ColumnsOrder(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={8}\n height={13}\n fill=\"none\"\n {...props}\n >\n <circle cx={1.5} cy={6.5} r={1.5} fill=\"#6B81DD\" />\n <circle cx={6.5} cy={6.5} r={1.5} fill=\"#6B81DD\" />\n <circle cx={6.5} cy={1.5} r={1.5} fill=\"#6B81DD\" />\n <circle cx={6.5} cy={11.5} r={1.5} fill=\"#6B81DD\" />\n <circle cx={1.5} cy={1.5} r={1.5} fill=\"#6B81DD\" />\n <circle cx={1.5} cy={11.5} r={1.5} fill=\"#6B81DD\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Delete(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 28 28\"\n {...props}\n >\n <path\n fill=\"#F06D8D\"\n fillRule=\"evenodd\"\n d=\"M4.9 26.7c-.5-.5-1.3-1.3-1.3-2.7V7.6H2.4c-.7 0-1.2-.5-1.2-1.2s.5-1.2 1.2-1.2h5V4c0-1.5.8-2.2 1.3-2.7S9.9 0 11.4 0h4.8c1.5 0 2.3.8 2.7 1.3.5.5 1.3 1.3 1.3 2.7v1.2h5c.7 0 1.2.5 1.2 1.2s-.5 1.2-1.2 1.2H24V24c0 1.5-.8 2.3-1.3 2.7-.4.5-1.2 1.3-2.7 1.3H7.6c-1.5 0-2.2-.8-2.7-1.3zM21.1 25c.5-.5.6-.6.6-1.1V7.6H6V24c0 .4.1.6.6 1.1.5.5.6.6 1.1.6H20c.4-.1.6-.2 1.1-.7zm-10.9-4.8v-7.6c0-.7.5-1.2 1.2-1.2s1.2.5 1.2 1.2v7.6c0 .7-.5 1.2-1.2 1.2-.6 0-1.2-.6-1.2-1.2zm4.8 0v-7.6c0-.7.5-1.2 1.2-1.2s1.2.5 1.2 1.2v7.6c0 .7-.5 1.2-1.2 1.2s-1.2-.6-1.2-1.2zm2.9-15V4c0-.4-.1-.6-.6-1.1-.5-.5-.6-.6-1.1-.6h-4.8c-.4 0-.6.1-1.1.6-.4.5-.5.7-.5 1.1v1.2h8.1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Edit(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 17 16\"\n {...props}\n >\n <path\n fill=\"none\"\n stroke=\"#6B81DD\"\n d=\"M9 13.3h6M12 2.3c.3-.3.6-.4 1-.4.2 0 .4 0 .5.1.2.1.3.2.5.3s.2.3.3.5c.1.2.1.4.1.5 0 .2 0 .4-.1.5-.1.2-.2.4-.3.5l-8.3 8.3-2.7.7.7-2.7L12 2.3z\"\n />\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 FinturfLogo(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={30} height={36} {...props}>\n <title>background</title>\n <path fill=\"none\" d=\"M-1-1h32v38H-1z\" />\n <title>Layer 1</title>\n <g fillRule=\"evenodd\" clipRule=\"evenodd\">\n <path\n fill=\"#99C28C\"\n d=\"M14.42.448c7.713-.12 12.755 4.626 14.282 10.614.334 1.344.34 2.928.34 4.608-.018.702-.03 1.404-.048 2.112-.207 1.296-.39 2.466-.81 3.534-1.538 3.882-4.385 6.594-8.332 8.1-.706.27-1.496.438-2.281.606-.432.054-.87.114-1.296.168.006-.84-.012-1.674 0-2.514 1.624.006 3.443-.834 4.514-1.464 3.418-2.004 5.699-5.052 5.699-10.446-.006-.822-.018-1.65-.025-2.472-.158-.918-.237-1.752-.492-2.544-1.186-3.72-4.039-6.282-7.865-7.416-.918-.276-1.898-.24-2.998-.414l-1.199.072c-1.678.294-2.913.564-4.154 1.188C6.908 5.614 4.9 7.906 3.904 11.164c-.25.81-.207 1.614-.365 2.592-.013 1.056-.019 2.118-.025 3.174.158.936.146 1.794.39 2.592 1.052 3.456 3.333 5.976 6.514 7.32.675.288 1.417.492 2.184.684.37.054.723.108 1.094.168v2.496c-.425-.06-.84-.114-1.265-.168-1.01-.216-1.977-.462-2.846-.828-4.258-1.776-7.305-5.124-8.382-10.032C.929 17.914.96 16.426.96 14.92c-.006-1.11-.013-2.184.194-3.126.377-1.74.894-3.246 1.697-4.56 1.74-2.874 4.416-5.088 7.962-6.18.755-.234 1.563-.366 2.403-.51.401-.03.803-.066 1.204-.096z\"\n />\n <path\n fill=\"#FEFEFE\"\n d=\"M16.276 35.554h-2.58V14.23c-1.18-1.146-2.353-2.292-3.533-3.438a7.42 7.42 0 0 0 .2-.222c.542-.516 1.083-1.038 1.63-1.554h.05c.978.96 1.952 1.926 2.93 2.892.39-.39.786-.774 1.175-1.164l1.806-1.728h.049c.602.582 1.204 1.17 1.8 1.752-.523.528-1.052 1.056-1.575 1.584-.65.624-1.302 1.248-1.952 1.878.006 1.326.018 2.652.024 3.978l1.277-1.26c.56-.534 1.12-1.074 1.679-1.608h.049c.602.588 1.204 1.17 1.806 1.758-.48.474-.955.954-1.43 1.434a885.234 885.234 0 0 0-3.405 3.306v13.716z\"\n />\n </g>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function FinturfLogo2(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={118}\n height={36}\n fill=\"none\"\n {...props}\n >\n <path\n fill=\"#FEFEFE\"\n d=\"M37.066 32.976h-1.161v.762h1.07v.57h-1.07v1.206h-.742v-3.108h1.903v.57Zm1.965-.57v.54h-.28v2.028h.28v.54h-1.295v-.54h.273v-2.028h-.273v-.54h1.295Zm3.832 3.108h-.748l-1.357-1.956a3.66 3.66 0 0 1-.164-.252h-.012c.012.108.018.276.018.498v1.71h-.7v-3.108h.798l1.307 1.896c.061.084.116.168.165.252h.012a3.155 3.155 0 0 1-.019-.426v-1.722h.7v3.108Zm4.05 0h-.808l-.231-.69h-1.18l-.225.69h-.803l1.198-3.108h.876l1.174 3.108Zm-1.21-1.23-.358-1.044a1.55 1.55 0 0 1-.055-.282h-.018c-.006.09-.025.186-.055.276l-.359 1.05h.846Zm4.982 1.23h-.748l-1.356-1.956a3.65 3.65 0 0 1-.165-.252h-.012c.012.108.018.276.018.498v1.71h-.7v-3.108h.804l1.301 1.896c.061.084.116.168.165.252h.012a3.178 3.178 0 0 1-.018-.426v-1.722h.7v3.108Zm3.516-.108c-.244.108-.554.162-.943.162-.505 0-.9-.138-1.192-.42-.286-.282-.432-.654-.432-1.122 0-.498.164-.9.486-1.212.323-.306.749-.462 1.266-.462.322 0 .596.036.815.114v.678a1.494 1.494 0 0 0-.755-.186c-.31 0-.56.09-.748.276-.188.18-.285.432-.285.744 0 .3.09.54.267.72.183.18.42.27.724.27.292 0 .553-.072.797-.204v.642Zm2.95.108h-1.977v-3.108h1.898v.57h-1.156v.69h1.077v.57h-1.077v.714h1.235v.564Zm4.002.054c-.468 0-.858-.144-1.15-.432-.298-.294-.45-.672-.45-1.134 0-.492.152-.894.457-1.194.297-.306.699-.456 1.198-.456.468 0 .845.144 1.137.438.292.288.438.672.438 1.146 0 .492-.152.882-.456 1.188-.298.294-.687.444-1.174.444Zm.03-2.61a.773.773 0 0 0-.62.276c-.152.18-.225.426-.225.732s.073.552.225.732c.158.18.359.27.602.27.256 0 .462-.09.608-.264.152-.174.225-.414.225-.726 0-.324-.072-.576-.212-.756a.746.746 0 0 0-.603-.264Zm5.505 2.556h-.742l-1.362-1.956a3.65 3.65 0 0 1-.165-.252h-.006c.012.108.019.276.019.498v1.71h-.7v-3.108h.797l1.308 1.896.164.252h.006a3.178 3.178 0 0 1-.018-.426v-1.722h.7v3.108Zm5.322-3.108-1.07 2.004v1.104h-.742v-1.092l-1.046-2.016h.851l.53 1.158c.005.024.036.108.072.258h.012c.019-.108.043-.186.067-.246l.542-1.17h.784Zm2.166 3.162c-.469 0-.858-.144-1.15-.432-.298-.294-.45-.672-.45-1.134 0-.492.152-.894.456-1.194.298-.306.7-.456 1.198-.456.469 0 .846.144 1.138.438.292.288.438.672.438 1.146 0 .492-.152.882-.456 1.188-.298.294-.688.444-1.174.444Zm.03-2.61a.773.773 0 0 0-.62.276c-.153.18-.225.426-.225.732s.072.552.225.732c.158.18.359.27.602.27.255 0 .462-.09.608-.264.152-.174.225-.414.225-.726 0-.324-.073-.576-.219-.756-.14-.174-.34-.264-.596-.264Zm5.23 1.212c0 .93-.461 1.398-1.38 1.398-.894 0-1.344-.456-1.344-1.368v-1.794h.742v1.806c0 .504.213.756.627.756.407 0 .614-.246.614-.732v-1.83h.742v1.764Zm3.875 1.344h-.845l-.517-.798a1.895 1.895 0 0 0-.11-.162.72.72 0 0 0-.103-.126.488.488 0 0 0-.115-.078.285.285 0 0 0-.128-.024h-.195v1.188h-.748v-3.108h1.18c.797 0 1.198.282 1.198.846a.799.799 0 0 1-.206.546.801.801 0 0 1-.232.192 1.151 1.151 0 0 1-.304.126v.012a.524.524 0 0 1 .146.066c.043.036.091.072.134.114.043.048.08.09.122.144.036.048.073.096.103.144l.62.918Zm-2.013-2.586v.87h.317a.547.547 0 0 0 .383-.132.43.43 0 0 0 .146-.33c0-.27-.17-.408-.511-.408h-.335Zm7.257 2.586h-.743v-1.266H86.45v1.266h-.742v-3.108h.742v1.236h1.362v-1.236h.743v3.108Zm2.548.054c-.474 0-.857-.144-1.156-.432-.291-.294-.444-.672-.444-1.134 0-.492.153-.894.457-1.194.298-.306.7-.456 1.198-.456.468 0 .845.144 1.137.438.292.288.432.672.432 1.146 0 .492-.146.882-.45 1.188-.298.294-.693.444-1.174.444Zm.03-2.61c-.261 0-.468.09-.62.276-.152.18-.225.426-.225.732s.073.552.225.732a.75.75 0 0 0 .602.27c.256 0 .457-.09.609-.264.152-.174.225-.414.225-.726 0-.324-.073-.576-.22-.756a.734.734 0 0 0-.596-.264Zm6.296 2.556h-.73v-1.86c0-.204.006-.426.024-.666h-.018a3.132 3.132 0 0 1-.103.414l-.773 2.112h-.602l-.785-2.094a2.484 2.484 0 0 1-.103-.432h-.024c.018.306.03.576.03.804v1.722h-.669v-3.108h1.089l.669 1.842c.055.15.097.3.121.444h.013c.042-.168.085-.318.127-.444l.676-1.842h1.058v3.108Zm3.126 0h-1.977v-3.108h1.898v.57H99.32v.69h1.077v.57H99.32v.714h1.235v.564Zm4.927-2.538h-.943v2.538h-.742v-2.538h-.936v-.57h2.621v.57Zm3.528 1.194c0 .93-.462 1.398-1.381 1.398-.894 0-1.344-.456-1.344-1.368v-1.794h.742v1.806c0 .504.207.756.627.756.407 0 .614-.246.614-.732v-1.83h.742v1.764Zm3.874 1.344h-.851l-.511-.798a1.895 1.895 0 0 0-.11-.162c-.036-.048-.066-.09-.103-.126a.486.486 0 0 0-.115-.078.29.29 0 0 0-.128-.024h-.201v1.188h-.742v-3.108h1.18c.797 0 1.198.282 1.198.846a.809.809 0 0 1-.207.546.78.78 0 0 1-.231.192 1.142 1.142 0 0 1-.304.126v.012a.512.512 0 0 1 .146.066c.043.036.085.072.128.114.042.048.085.09.128.144.036.048.073.096.103.144l.62.918Zm-2.019-2.586v.87h.322a.57.57 0 0 0 .384-.132.43.43 0 0 0 .146-.33c0-.27-.171-.408-.517-.408h-.335Zm4.635.048h-1.162v.762h1.065v.57h-1.065v1.206h-.742v-3.108h1.904v.57Z\"\n />\n <path\n fill=\"#99C28C\"\n fillRule=\"evenodd\"\n d=\"M13.789.462C21.5.342 26.544 5.088 28.07 11.076c.335 1.344.341 2.928.341 4.608-.018.702-.03 1.404-.049 2.112-.206 1.296-.389 2.466-.809 3.534-1.538 3.882-4.385 6.594-8.333 8.1-.705.27-1.496.438-2.28.606-.432.054-.87.114-1.296.168.006-.84-.012-1.674 0-2.514 1.624.006 3.443-.834 4.513-1.464 3.418-2.004 5.7-5.052 5.7-10.446-.007-.822-.019-1.65-.025-2.472-.158-.918-.237-1.752-.493-2.544-1.186-3.72-4.038-6.282-7.864-7.416-.919-.276-1.898-.24-2.999-.414l-1.198.072c-1.679.294-2.914.564-4.155 1.188-2.846 1.434-4.853 3.726-5.85 6.984-.25.81-.208 1.614-.366 2.592-.012 1.056-.018 2.118-.024 3.174.158.936.146 1.794.39 2.592 1.051 3.456 3.332 5.976 6.513 7.32.676.288 1.418.492 2.184.684.371.054.724.108 1.095.168v2.496c-.426-.06-.84-.114-1.265-.168-1.01-.216-1.977-.462-2.847-.828-4.258-1.776-7.305-5.124-8.381-10.032-.274-1.248-.244-2.736-.244-4.242-.006-1.11-.012-2.184.195-3.126.377-1.74.894-3.246 1.697-4.56 1.74-2.874 4.416-5.088 7.962-6.18.754-.234 1.563-.366 2.402-.51.402-.03.803-.066 1.205-.096Z\"\n clipRule=\"evenodd\"\n />\n <path\n fill=\"#FEFEFE\"\n fillRule=\"evenodd\"\n d=\"M15.644 35.568h-2.579V14.244c-1.18-1.146-2.354-2.292-3.534-3.438a7.42 7.42 0 0 0 .201-.222c.541-.516 1.083-1.038 1.63-1.554h.049c.979.96 1.952 1.926 2.931 2.892.39-.39.785-.774 1.174-1.164l1.807-1.728h.049c.602.582 1.204 1.17 1.8 1.752-.523.528-1.052 1.056-1.575 1.584a574.94 574.94 0 0 0-1.953 1.878c.006 1.326.018 2.652.024 3.978l1.278-1.26c.56-.534 1.119-1.074 1.679-1.608h.048c.602.588 1.205 1.17 1.807 1.758-.48.474-.955.954-1.43 1.434a885.234 885.234 0 0 0-3.406 3.306v13.716Z\"\n clipRule=\"evenodd\"\n />\n <path\n fill=\"#FEFEFE\"\n d=\"M67.82 29.436a1.01 1.01 0 0 1-.378.372 1.235 1.235 0 0 1-.425.144c-.134.012-.232.024-.28.024h-.95c-.4 0-.693-.108-.869-.324-.182-.216-.28-.42-.304-.612a4.927 4.927 0 0 1-.037-.336v-6.618c0-1.002-.097-1.83-.291-2.478-.195-.648-.45-1.164-.76-1.548a2.591 2.591 0 0 0-1.096-.804 3.713 3.713 0 0 0-1.29-.228c-.437 0-.924.144-1.453.42-.535.282-1.052.678-1.55 1.188v10.092c0 .306-.056.534-.159.696-.11.162-.231.282-.377.36a1.309 1.309 0 0 1-.432.144c-.14.018-.231.024-.28.024h-.882c-.407 0-.7-.108-.882-.324-.176-.216-.28-.414-.304-.6a4.538 4.538 0 0 1-.036-.324l.024-13.35c0-.03.012-.138.037-.324.024-.186.127-.384.304-.6.182-.216.468-.324.857-.324h.882c.03 0 .104.006.22.012.115.006.242.042.376.096.14.054.268.15.383.276.116.126.195.306.244.528a7.434 7.434 0 0 1 1.587-.768 5.215 5.215 0 0 1 1.71-.288c.711 0 1.453.144 2.232.432.772.288 1.478.756 2.116 1.404.64.648 1.168 1.482 1.588 2.514.42 1.032.633 2.292.633 3.774v6.666c0 .288-.055.516-.159.684ZM50.727 14.274c.146-.078.28-.126.407-.144.134-.018.22-.024.268-.024h.949c.407 0 .7.108.876.324.176.216.28.42.304.612.024.192.036.306.036.336l-.024 13.326c0 .288-.055.516-.158.684a1.01 1.01 0 0 1-.377.372 1.267 1.267 0 0 1-.414.144 2.106 2.106 0 0 1-.268.024h-.973c-.383 0-.669-.108-.845-.324-.183-.216-.28-.414-.304-.6a4.538 4.538 0 0 1-.037-.324V15.33c0-.306.055-.534.17-.696.11-.162.244-.282.39-.36Zm2.256-1.224a1.038 1.038 0 0 1-.413.144 2.107 2.107 0 0 1-.268.024h-.949c-.401 0-.693-.108-.87-.324-.182-.216-.28-.414-.304-.6a4.241 4.241 0 0 1-.036-.318v-.648c0-.306.06-.54.182-.696a1.242 1.242 0 0 1 .81-.504c.133-.018.218-.024.267-.024h.924c.408 0 .7.108.876.324.177.216.28.42.304.612.025.192.037.3.037.336V12c0 .282-.055.51-.17.678a1.135 1.135 0 0 1-.39.372ZM48.6 11.592c-.22.174-.426.276-.62.3a4.736 4.736 0 0 1-.341.036H38.38v5.34h2.987l5.127-.024c.31 0 .548.06.718.168a1.134 1.134 0 0 1 .523.804c.018.138.024.228.024.276v.912c0 .402-.11.69-.328.864-.219.174-.426.276-.62.3a4.742 4.742 0 0 1-.341.036h-8.065v8.172c0 .336-.055.588-.159.756a.933.933 0 0 1-.377.36 1.198 1.198 0 0 1-.438.12c-.146.006-.249 0-.316-.012h-.894c-.408 0-.7-.108-.876-.312-.182-.21-.28-.402-.292-.588a4.718 4.718 0 0 1-.024-.324V11.064c0-.606.121-1.08.365-1.416.243-.336.51-.582.815-.744.298-.156.59-.252.87-.288.285-.03.468-.048.547-.048l3.887.024h6.173c.31 0 .542.06.706.168a1.147 1.147 0 0 1 .51.804c.02.138.025.228.025.276v.888c0 .396-.11.684-.328.864Z\"\n />\n <path\n fill=\"#99C28C\"\n d=\"M117.793 10.284c-.049.168-.079.27-.097.3l-.341.72c-.207.288-.456.45-.742.492-.28.036-.505.024-.669-.036l-.286-.12a3.419 3.419 0 0 0-1.533-.36c-.273 0-.59.048-.936.156a4.043 4.043 0 0 0-.986.444 2.972 2.972 0 0 0-.766.678 1.391 1.391 0 0 0-.304.852v1.44h3.43c.304 0 .542.054.706.168.158.114.28.24.365.384.079.144.128.282.146.42.012.132.018.228.018.276v.696c0 .378-.103.66-.322.834-.219.18-.426.276-.609.3a4.763 4.763 0 0 1-.328.036h-3.406v10.764c0 .288-.049.516-.158.684a1.001 1.001 0 0 1-.371.372 1.279 1.279 0 0 1-.426.144c-.14.012-.231.024-.28.024h-.949c-.407 0-.699-.108-.876-.324-.176-.216-.279-.414-.304-.6a4.644 4.644 0 0 1-.036-.324v-10.74h-1.119c-.292 0-.524-.048-.688-.156a1.012 1.012 0 0 1-.377-.372.994.994 0 0 1-.146-.42 2.207 2.207 0 0 1-.024-.27v-.696c0-.402.109-.69.328-.864.219-.174.42-.276.602-.3.189-.024.298-.036.329-.036h1.095v-1.056c0-.492.097-.966.292-1.416a6.63 6.63 0 0 1 .644-1.17c.238-.336.548-.702.937-1.104a8.51 8.51 0 0 1 .864-.648 8.047 8.047 0 0 1 1.089-.612c.401-.18.827-.336 1.289-.456.462-.12.943-.18 1.448-.18.34 0 .784.042 1.338.12a4.555 4.555 0 0 1 1.6.576c.31.21.492.45.547.72.055.27.061.492.012.66Zm-13.667 5.694c-.043.174-.067.276-.085.312l-.341.744c-.213.282-.456.45-.742.486-.28.042-.505.03-.669-.036a4.002 4.002 0 0 1-.292-.12c-.438-.24-.943-.36-1.527-.36-.426 0-.82.078-1.192.228-.371.156-.803.438-1.29.852-.34.354-.51.714-.51 1.08v9.564c0 .288-.049.516-.158.684a1.01 1.01 0 0 1-.378.372 1.25 1.25 0 0 1-.42.144c-.14.012-.23.024-.28.024h-.948c-.407 0-.7-.108-.876-.324-.176-.216-.28-.414-.304-.6a4.538 4.538 0 0 1-.036-.324V19.38c0-.54.085-1.026.255-1.452.17-.42.365-.786.584-1.086a3.72 3.72 0 0 1 .645-.72 3.13 3.13 0 0 1 .438-.336 7.83 7.83 0 0 1 1.953-1.224 8.598 8.598 0 0 1 1.276-.444c.45-.12.925-.18 1.412-.18.34 0 .772.042 1.295.12a4.949 4.949 0 0 1 1.569.528c.323.192.517.426.584.708.067.276.079.504.037.684ZM92.228 26.142c-.42 1.002-.954 1.812-1.6 2.418-.65.606-1.356 1.044-2.128 1.308a6.896 6.896 0 0 1-2.245.396c-.486 0-.96-.06-1.423-.18a7.39 7.39 0 0 1-1.29-.456 9.361 9.361 0 0 1-1.094-.6 8.262 8.262 0 0 1-.858-.636c-.036-.03-.146-.144-.34-.336a8.041 8.041 0 0 1-.633-.708 5.991 5.991 0 0 1-.62-.906 1.947 1.947 0 0 1-.28-.972V15.33c0-.306.055-.54.17-.708a.986.986 0 0 1 .383-.36c.146-.072.28-.114.414-.132a2.04 2.04 0 0 1 .261-.024h.943c.402 0 .694.108.87.324.177.216.274.414.298.6.024.186.037.294.037.324l-.025 7.092v3.192c.633.606 1.168 1.02 1.606 1.23.438.216.9.324 1.387.324.486 0 .937-.096 1.356-.288a2.77 2.77 0 0 0 1.095-.894c.31-.408.554-.924.73-1.548.176-.624.268-1.374.268-2.256V15.33c0-.306.054-.534.17-.696.115-.162.243-.282.395-.36a1.22 1.22 0 0 1 .414-.144c.128-.018.219-.024.267-.024h.882c.408 0 .7.108.882.324.177.216.28.414.305.6.024.186.036.294.036.324v7.068c0 1.47-.207 2.712-.633 3.72ZM78.477 28.68c-.049.27-.219.504-.51.696a3.86 3.86 0 0 1-.84.408 4.83 4.83 0 0 1-.821.204c-.268.036-.524.066-.755.084-.237.012-.431.024-.596.024-.067 0-.237-.012-.51-.024a5.009 5.009 0 0 1-.974-.18 5.777 5.777 0 0 1-1.18-.492 4 4 0 0 1-1.137-.96c-.353-.414-.639-.942-.864-1.584-.225-.636-.34-1.422-.34-2.346v-7.29h-1.096c-.03 0-.14-.012-.328-.036-.182-.024-.39-.12-.608-.294-.22-.18-.329-.456-.329-.84v-.72c0-.048.013-.138.025-.276.018-.138.067-.276.146-.42.085-.144.207-.27.377-.372.17-.102.401-.156.693-.156h1.12V9.84c0-.03.011-.138.036-.324.024-.186.128-.384.304-.6.176-.216.468-.324.876-.324h.924c.05 0 .14.012.274.024.14.018.28.066.426.144.146.084.28.204.39.36.115.162.17.39.17.696v4.29h3.406c.03 0 .14.012.322.036.189.024.39.126.608.3.22.174.329.462.329.864v.696c0 .048-.006.132-.025.264-.012.126-.06.264-.146.408-.079.144-.2.27-.365.378-.158.114-.395.168-.699.168h-3.43v7.626c0 .066.012.21.024.444.018.228.073.468.158.72.091.246.231.468.426.654.194.192.468.288.827.288.322 0 .608-.018.864-.06.249-.036.474-.12.669-.252.03-.012.128-.048.292-.102.158-.06.383-.072.663-.036.286.03.535.186.742.474l.365.744c.018.036.048.132.097.3.049.168.049.39 0 .66Z\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Flows(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <path\n fill=\"none\"\n stroke=\"#9AA0B9\"\n d=\"M16 3h5v5M4 20 21 3M21 16v5h-5M15 15l6 6M4 4l5 5\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Gift(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n id=\"Layer_1\"\n x={0}\n y={0}\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <style>\n {\n '.st0{fill:none;stroke:#9aa0b9;strokeWidth:1.07;strokeLinecap:round;strokeLinejoin:round}'\n }\n </style>\n <path\n d=\"M13.3 8v6.7H2.7V8M14.7 4.7H1.3V8h13.3V4.7zM8 14.7v-10M8 4.7H5c-.4 0-.9-.2-1.2-.5s-.5-.8-.5-1.2.2-.9.5-1.2.8-.5 1.2-.5c2.3 0 3 3.4 3 3.4zM8 4.7h3c.4 0 .9-.2 1.2-.5.3-.3.5-.7.5-1.2s-.2-.9-.5-1.2c-.3-.3-.7-.5-1.2-.5-2.3 0-3 3.4-3 3.4z\"\n className=\"st0\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function GoogleAuth(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n width={52}\n height={52}\n fill=\"none\"\n {...props}\n >\n <path fill=\"url(#a)\" d=\"M0 0h52v52H0z\" />\n <defs>\n <pattern\n id=\"a\"\n width={1}\n height={1}\n patternContentUnits=\"objectBoundingBox\"\n >\n <use xlinkHref=\"#b\" transform=\"scale(.00195)\" />\n </pattern>\n <image\n xlinkHref=\"data:image/png;base64,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\"\n id=\"b\"\n width={512}\n height={512}\n />\n </defs>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function GooglePlay(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n width={132}\n height={38}\n fill=\"none\"\n {...props}\n >\n <path fill=\"url(#a)\" d=\"M-1.327-.667h134.161v40H-1.327z\" />\n <defs>\n <pattern\n id=\"a\"\n width={1}\n height={1}\n patternContentUnits=\"objectBoundingBox\"\n >\n <use xlinkHref=\"#b\" transform=\"matrix(.00331 0 0 .01111 -.002 0)\" />\n </pattern>\n <image\n xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAS8AAABaCAYAAADpRtAeAAAACXBIWXMAAAsSAAALEgHS3X78AAAgAElEQVR4nO2dd3wU5fbGv1N300MPQVFEQUqwABaU4gVsgIgNf6CiYBfuFSliR1RQsQEqKOgVBAvXggg2iqIovShFQJAiHdKzm92d8v7+mJ1JlhqQEmSfz2cImcy880575rznfc45EqUgSRKAIoSwkpKSaNiw4TkXXND0+tq1azerVKnSaX6/XyaOOOKI4yghFArZ2dnZG9etW/fL/PkLPl2+fPmvgUAASZIUwBJCeNtK3n8kCSGEomma1aJly3PaXX3VM7Vr177S7/drRUVF5OcXEDEix+N84ogjjpMEuqaTlpZKcnIyoVDIWLdu3TdTv/r6iR9nzfrVMAxFkiSPwCQoIa709HTrnnvu7nPppZe+IMuysmzZcvHjTz/Zq1evlrKzcyTTNI/ricURRxz/bKiqSqVKFUXdunVFi+bN5ayshpJt29bs2bMffuutt1/Oy8vzCEyKEpeclpZm9+nTZ2jjxuf33blzp/X++xPErB9nqZZHWBKSHB81xhFHHEcPwrYBx7JSVJWWLVqat97aVapataqyaNHil15++eV++fn5siRJtgQoiYmJ1r//8+/el15yySsbNm40X3zxJWXTxg2SqmrIioIQgtJjzTjiiCOOowVJkpAkCduyME2DmqedLvr372udftpp6uyff35o+LDhrwaDQUUBxHXXX9eofbt2H2dnZ6uDhzwvbdywQdJ9fuwoacWJK4444jhWKM05mqaTk71bWvn779IFFzSV6tat2yocCU9esXzFdjkzM5N/XXbZo4Dvw48+MjesXy/p/gQsyzq+ZxBHHHGc9LAsC92fwIb166UPP/rIBHz/uuyyRzMzM5FbtWpZPyMjo/3q1auZOfMHRVE1rLhjPo444ignsEwTRdWYOfMHZfXq1WRkZLRv1aplffnUU2u203U96Zdf5lhGJCwpinK8+xpHHHHEEQNFUTAiYemXX+ZYuq4nnXpqzXZy9czql4RCIVatWi0Bcf9WHHHEUe7g8tKqVaulUChE9czql8hpqak1i4qK2L17NyDFySuOOOIod3B4SWL37t0UFRWRlppaU05KSpIjhoER93PFEUcc5RyGaWIYBklJSY7qVDrYHnHEEUcc5Qzq8e7AyQ5JkpBl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\"\n id=\"b\"\n width={303}\n height={90}\n />\n </defs>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function HelpCircle(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 HelpCircle2(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <path\n fill=\"none\"\n stroke=\"#FFF\"\n d=\"M8 14.7A6.7 6.7 0 1 0 8 1.3a6.7 6.7 0 0 0 0 13.4z\"\n />\n <path\n fill=\"none\"\n stroke=\"#FFF\"\n d=\"M6.1 6c.2-.4.5-.8.9-1.1.4-.2.9-.3 1.4-.2.4.1.8.3 1.1.7.3.4.5.8.5 1.3 0 1.3-2 2-2 2M8 11.3\"\n />\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 Home(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 stroke=\"#000\"\n d=\"m2 6 6-4.667L14 6v7.333a1.333 1.333 0 0 1-1.333 1.334H3.333A1.333 1.333 0 0 1 2 13.333V6Z\"\n />\n <path stroke=\"#000\" d=\"M6 14.667V8h4v6.667\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Home2(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <path\n fill=\"none\"\n stroke=\"#9AA0B9\"\n strokeMiterlimit={10}\n d=\"m2 6 6-4.7L14 6v7.3c0 .4-.1.7-.4.9-.3.3-.6.4-.9.4H3.3c-.4 0-.7-.1-.9-.4-.3-.2-.4-.5-.4-.9V6z\"\n />\n <path\n fill=\"none\"\n stroke=\"#9AA0B9\"\n strokeMiterlimit={10}\n d=\"M6 14.7V8h4v6.7\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Key(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <path\n d=\"m10.3 5 2.3-2.3M14 1.3l-1.3 1.3L14 1.3zM7.6 7.7c.3.3.6.7.8 1.2.2.4.3.9.3 1.4 0 .5-.1 1-.3 1.4-.2.4-.5.9-.8 1.2-.3.3-.7.6-1.2.8-.4.2-.9.3-1.4.3-.5 0-1-.1-1.4-.3-.4-.2-.9-.5-1.2-.8-.7-.7-1-1.6-1-2.6s.4-1.9 1.1-2.6 1.6-1 2.5-1c1 0 1.9.4 2.6 1zm0 0L10.3 5 7.6 7.7zM10.3 5l2 2 2.3-2.3-2-2L10.3 5z\"\n style={{\n fill: 'none',\n stroke: '#9aa0b9',\n strokeWidth: 1.07,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }}\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Landers(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <path\n fill=\"none\"\n stroke=\"#9AA0B9\"\n d=\"M16 4h2c1.1 0 2 .9 2 2v14c0 1.1-.9 2-2 2H6c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2h2\"\n />\n <path\n fill=\"none\"\n stroke=\"#9AA0B9\"\n d=\"M9 2h6c.6 0 1 .4 1 1v2c0 .6-.4 1-1 1H9c-.6 0-1-.4-1-1V3c0-.6.4-1 1-1z\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Lock(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 stroke=\"#000\"\n d=\"M12.667 7.333H3.333C2.597 7.333 2 7.93 2 8.667v4.666c0 .737.597 1.334 1.333 1.334h9.334c.736 0 1.333-.597 1.333-1.334V8.667c0-.737-.597-1.334-1.333-1.334ZM4.667 7.333V4.667a3.333 3.333 0 0 1 6.666 0v2.666\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Mail(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n id=\"Layer_1\"\n x={0}\n y={0}\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <style>\n {\n '.st0{fill:none;stroke:#9aa0b9;strokeWidth:1.07;strokeLinecap:round;strokeLinejoin:round}'\n }\n </style>\n <path\n d=\"M2.7 2.7h10.7c.7 0 1.3.6 1.3 1.3v8c0 .7-.6 1.3-1.3 1.3H2.7c-.7 0-1.3-.6-1.3-1.3V4c-.1-.7.5-1.3 1.3-1.3z\"\n className=\"st0\"\n />\n <path d=\"M14.7 4 8 8.7 1.3 4\" className=\"st0\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Mastercard(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={38}\n height={24}\n fill=\"none\"\n {...props}\n >\n <g clipPath=\"url(#a)\">\n <path\n fill=\"#fff\"\n fillRule=\"evenodd\"\n d=\"M0 1.784C0 .799.799 0 1.784 0H36.27c.985 0 1.784.799 1.784 1.784v21.405c0 .985-.799 1.784-1.784 1.784H1.784A1.784 1.784 0 0 1 0 23.189V1.784Z\"\n clipRule=\"evenodd\"\n />\n <path\n fill=\"#D8232A\"\n fillRule=\"evenodd\"\n d=\"M14.865 19.027a6.54 6.54 0 1 0 0-13.081 6.54 6.54 0 0 0 0 13.081Z\"\n clipRule=\"evenodd\"\n />\n <path\n fill=\"#ED9F2D\"\n fillRule=\"evenodd\"\n d=\"M19.026 17.532a6.54 6.54 0 1 0 0-10.091 6.527 6.527 0 0 1 2.379 5.045 6.527 6.527 0 0 1-2.379 5.046Z\"\n clipRule=\"evenodd\"\n />\n <path\n fill=\"#D8232A\"\n fillRule=\"evenodd\"\n d=\"M19.027 7.44a6.527 6.527 0 0 0-2.379 5.046c0 2.031.926 3.846 2.379 5.046a6.527 6.527 0 0 0 2.378-5.046 6.527 6.527 0 0 0-2.378-5.045Z\"\n clipRule=\"evenodd\"\n />\n <mask\n id=\"b\"\n width={6}\n height={11}\n x={16}\n y={7}\n mask-type=\"alpha\"\n maskUnits=\"userSpaceOnUse\"\n >\n <path\n fill=\"#fff\"\n fillRule=\"evenodd\"\n d=\"M19.027 7.44a6.527 6.527 0 0 0-2.379 5.046c0 2.031.926 3.846 2.379 5.046a6.527 6.527 0 0 0 2.378-5.046 6.527 6.527 0 0 0-2.378-5.045Z\"\n clipRule=\"evenodd\"\n />\n </mask>\n <g mask=\"url(#b)\">\n <path\n fill=\"#ED9F2D\"\n fillRule=\"evenodd\"\n d=\"M16.054 7.73H22v.594h-5.946V7.73Zm0 1.189H22v.595h-5.946v-.595ZM22 10.109h-5.946v.594H22v-.595Zm-5.946 1.188H22v.595h-5.946v-.595ZM22 12.487h-5.946v.594H22v-.595Zm-5.946 1.189H22v.594h-5.946v-.594ZM22 14.865h-5.946v.594H22v-.594Zm-5.946 1.189H22v.595h-5.946v-.595ZM22 17.244h-5.946v.594H22v-.595Z\"\n clipRule=\"evenodd\"\n />\n </g>\n <path\n fill=\"#E5E5E5\"\n fillOpacity={0.01}\n fillRule=\"evenodd\"\n d=\"M0 1.784C0 .799.799 0 1.784 0H36.27c.985 0 1.784.799 1.784 1.784v21.405c0 .985-.799 1.784-1.784 1.784H1.784A1.784 1.784 0 0 1 0 23.189V1.784Z\"\n clipRule=\"evenodd\"\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M0 0h38v24H0z\" />\n </clipPath>\n </defs>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Minus(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 mask-type=\"alpha\"\n maskUnits=\"userSpaceOnUse\"\n >\n <path stroke=\"#000\" d=\"M3.333 8h9.334\" />\n </mask>\n <g mask=\"url(#a)\">\n <path fill=\"#1E1E2D\" d=\"M0 0h16v16H0z\" />\n </g>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Offers(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <path\n fill=\"none\"\n stroke=\"#9AA0B9\"\n strokeMiterlimit={10}\n d=\"M2.7 10s.7-.7 2.7-.7 3.3 1.3 5.3 1.3 2.7-.7 2.7-.7V2s-.7.7-2.7.7-3.3-1.3-5.3-1.3-2.7.6-2.7.6v8zM2.7 14.7V10\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Pause(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 mask-type=\"alpha\"\n maskUnits=\"userSpaceOnUse\"\n >\n <path\n stroke=\"#000\"\n d=\"M6.667 2.667H4v10.666h2.667V2.667ZM12 2.667H9.333v10.666H12V2.667Z\"\n />\n </mask>\n <g mask=\"url(#a)\">\n <path fill=\"#F06D8D\" d=\"M0 0h16v16H0z\" />\n </g>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function PayPal(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={201}\n height={42}\n fill=\"none\"\n {...props}\n >\n <rect\n width={200}\n height={41}\n x={0.5}\n y={0.5}\n fill=\"#fff\"\n stroke=\"#6B81DD\"\n rx={3.5}\n />\n <rect width={61} height={40} x={1} y={1} fill=\"#fff\" rx={4} />\n <path\n fill=\"#253D80\"\n d=\"m26.85 32.65.444-2.75H21.626l3.253-20.325a.261.261 0 0 1 .09-.163.308.308 0 0 1 .177-.062h7.892c2.63 0 4.435.537 5.388 1.6.422.446.716.994.852 1.588a5.437 5.437 0 0 1 0 2.187v.625l.445.25c.338.166.644.39.902.662.388.462.64 1.02.724 1.613.096.775.061 1.56-.101 2.325a8.016 8.016 0 0 1-.979 2.637 5.41 5.41 0 0 1-1.538 1.663 6.485 6.485 0 0 1-2.071.913c-.83.206-1.685.306-2.542.3h-.622c-.437 0-.86.15-1.195.424-.337.28-.559.671-.623 1.1v.25l-.775 4.85v.188c.01.033.01.067 0 .1h-.076l-3.978.025Z\"\n />\n <path\n fill=\"#189BD7\"\n d=\"m40.141 14.85-.076.463c-1.042 5.25-4.613 7.074-9.163 7.074H28.59c-.556 0-1.03.397-1.118.938l-1.182 7.4-.343 2.1a.58.58 0 0 0 .136.468c.112.13.276.205.449.207h4.117c.488 0 .904-.35.979-.825v-.2l.775-4.838v-.262a.973.973 0 0 1 .966-.825h.673c3.978 0 7.104-1.588 8.007-6.25a5.23 5.23 0 0 0-.814-4.663 4.098 4.098 0 0 0-1.093-.787Z\"\n />\n <path\n fill=\"#242E65\"\n d=\"m39.049 14.425-.483-.125-.534-.1A13.012 13.012 0 0 0 36 14.063h-6.202a.952.952 0 0 0-.966.813l-1.27 8.211v.238c.087-.54.561-.938 1.118-.938h2.313c4.55 0 8.12-1.825 9.162-7.075l.077-.462a5.762 5.762 0 0 0-.852-.35l-.33-.075Z\"\n />\n <path\n fill=\"#253D80\"\n d=\"M28.831 14.875a.952.952 0 0 1 .966-.813H36c.68-.007 1.36.039 2.033.138l.534.1.483.125.241.075c.293.094.578.21.852.35a4.938 4.938 0 0 0-1.017-4.463C37.855 9.063 35.77 8.5 33.05 8.5h-7.904c-.557 0-1.03.397-1.118.938L20.736 29.95c-.03.193.028.39.157.539.13.148.318.235.517.236h4.88l1.27-7.638 1.271-8.212Z\"\n />\n <path\n fill=\"#6B81DD\"\n d=\"M66.871 22.067c-.114.978-.476 1.733-1.085 2.267-.606.529-1.412.793-2.419.793-1.092 0-1.968-.392-2.628-1.174-.656-.783-.984-1.83-.984-3.142v-.89c0-.858.153-1.613.457-2.265.31-.652.745-1.151 1.308-1.498.563-.352 1.214-.527 1.955-.527.982 0 1.769.275 2.361.825.593.546.938 1.303 1.035 2.273h-1.225c-.106-.737-.336-1.27-.692-1.6-.351-.33-.844-.495-1.479-.495-.779 0-1.39.288-1.834.863-.44.576-.66 1.394-.66 2.457v.895c0 1.003.209 1.8.628 2.393.419.592 1.005.888 1.758.888.677 0 1.196-.152 1.555-.457.364-.309.606-.844.724-1.606h1.225Zm2.66-3.104c.52-.639 1.197-.958 2.031-.958 1.451 0 2.184.819 2.196 2.456V25h-1.174v-4.545c-.004-.495-.118-.861-.343-1.098-.22-.237-.565-.355-1.034-.355-.381 0-.716.101-1.003.304-.288.203-.512.47-.673.8V25h-1.175v-9.75h1.175v3.713Zm8.836 6.164c-.931 0-1.689-.305-2.273-.914-.584-.614-.876-1.433-.876-2.457v-.215c0-.682.13-1.289.388-1.822a3.048 3.048 0 0 1 1.091-1.257c.47-.305.978-.457 1.524-.457.893 0 1.587.294 2.082.882.495.588.742 1.43.742 2.527v.488h-4.652c.016.677.213 1.225.59 1.644.38.415.863.623 1.447.623.415 0 .766-.085 1.054-.254.288-.17.54-.394.755-.673l.718.558c-.576.885-1.44 1.327-2.59 1.327Zm-.146-6.157c-.474 0-.872.173-1.194.52-.321.343-.52.825-.596 1.448h3.44v-.09c-.034-.596-.195-1.057-.482-1.383-.288-.33-.677-.495-1.168-.495Zm6.944 5.199c.419 0 .785-.128 1.098-.381a1.34 1.34 0 0 0 .52-.953h1.111a2.129 2.129 0 0 1-.406 1.124 2.67 2.67 0 0 1-1.003.85 2.866 2.866 0 0 1-1.32.318c-.935 0-1.68-.311-2.234-.933-.55-.627-.825-1.481-.825-2.565v-.196c0-.669.122-1.264.368-1.784.245-.52.596-.925 1.053-1.213.462-.287 1.005-.431 1.632-.431.77 0 1.409.23 1.917.692.512.461.785 1.06.819 1.796h-1.111c-.034-.444-.203-.808-.508-1.092-.3-.287-.673-.431-1.117-.431-.597 0-1.06.216-1.39.647-.326.428-.49 1.048-.49 1.86v.222c0 .792.164 1.4.49 1.828.325.428.79.642 1.396.642Zm5.967-2.35-.737.769V25h-1.174v-9.75h1.174v5.897l.629-.755 2.14-2.26h1.427L91.92 21 94.902 25h-1.377l-2.393-3.18Zm4.36-.317c0-.672.132-1.278.394-1.815a2.988 2.988 0 0 1 1.105-1.244 3.023 3.023 0 0 1 1.618-.438c.936 0 1.691.324 2.266.971.58.648.87 1.509.87 2.584v.082c0 .669-.129 1.27-.387 1.803-.254.529-.62.941-1.098 1.238-.474.296-1.02.444-1.638.444-.93 0-1.686-.324-2.266-.971-.576-.648-.863-1.505-.863-2.571v-.083Zm1.181.14c0 .762.176 1.373.527 1.835.356.46.83.692 1.422.692.597 0 1.07-.233 1.422-.699.351-.47.527-1.125.527-1.968 0-.753-.18-1.362-.54-1.828a1.693 1.693 0 0 0-1.422-.704c-.58 0-1.047.23-1.402.692-.356.46-.534 1.121-.534 1.98Zm10.785 2.679c-.457.537-1.128.806-2.012.806-.732 0-1.291-.212-1.676-.635-.381-.427-.573-1.058-.578-1.891v-4.47h1.175v4.438c0 1.04.423 1.561 1.269 1.561.897 0 1.494-.334 1.79-1.003v-4.995h1.175V25h-1.118l-.025-.68Zm4.526-7.852v1.663h1.282v.908h-1.282v4.259c0 .275.057.482.171.622.115.135.309.203.584.203.136 0 .322-.025.559-.076V25c-.309.085-.61.127-.902.127-.524 0-.92-.159-1.187-.476-.266-.317-.399-.768-.399-1.352v-4.26h-1.251v-.907h1.251v-1.663h1.174Zm11.965 6.912 1.321-5.25h1.174l-2 6.869h-.952l-1.669-5.205L120.198 25h-.952l-1.994-6.868h1.168l1.352 5.141 1.6-5.141h.946l1.631 5.25Zm4.97 1.619h-1.174v-6.868h1.174V25Zm-1.269-8.69a.71.71 0 0 1 .171-.482c.119-.131.292-.197.521-.197.228 0 .402.066.52.197a.692.692 0 0 1 .178.482c0 .19-.059.35-.178.476-.118.127-.292.19-.52.19-.229 0-.402-.063-.521-.19a.686.686 0 0 1-.171-.476Zm4.748.159v1.663h1.282v.908h-1.282v4.259c0 .275.057.482.171.622.115.135.309.203.584.203.136 0 .322-.025.559-.076V25a3.404 3.404 0 0 1-.901.127c-.525 0-.921-.159-1.187-.476-.267-.317-.4-.768-.4-1.352v-4.26h-1.251v-.907h1.251v-1.663h1.174Zm3.834 2.494c.52-.639 1.198-.958 2.031-.958 1.452 0 2.184.819 2.196 2.456V25h-1.174v-4.545c-.004-.495-.118-.861-.343-1.098-.22-.237-.565-.355-1.034-.355-.381 0-.715.101-1.003.304-.288.203-.512.47-.673.8V25h-1.174v-9.75h1.174v3.713Zm10.613 2.419V25h-1.219v-9.242h3.409c1.012 0 1.803.258 2.374.774.576.517.863 1.2.863 2.05 0 .898-.281 1.59-.844 2.076-.558.483-1.36.724-2.406.724h-2.177Zm0-.997h2.19c.652 0 1.151-.152 1.498-.457.347-.309.521-.753.521-1.333 0-.55-.174-.99-.521-1.32-.347-.33-.823-.502-1.428-.514h-2.26v3.624ZM157.808 25c-.068-.135-.123-.377-.165-.724-.546.567-1.198.851-1.955.851-.678 0-1.234-.19-1.67-.571a1.87 1.87 0 0 1-.647-1.46c0-.715.27-1.27.812-1.663.546-.398 1.312-.597 2.298-.597h1.143v-.54c0-.41-.123-.736-.369-.977-.245-.246-.607-.368-1.085-.368-.419 0-.77.105-1.054.317-.283.212-.425.468-.425.768h-1.181c0-.343.121-.673.362-.99.246-.322.576-.576.99-.762.419-.186.878-.28 1.378-.28.791 0 1.411.2 1.86.598.448.393.681.937.698 1.63v3.162c0 .63.08 1.132.241 1.504V25h-1.231Zm-1.949-.895c.368 0 .717-.095 1.047-.286.33-.19.569-.438.718-.742v-1.41h-.921c-1.439 0-2.158.421-2.158 1.264 0 .368.123.656.368.863.246.207.561.311.946.311Zm6.925-.825 1.6-5.148h1.257l-2.762 7.928c-.427 1.143-1.106 1.714-2.037 1.714l-.222-.02-.438-.082v-.952l.317.026c.398 0 .707-.08.927-.242.224-.16.408-.455.552-.882l.26-.698-2.45-6.792h1.282l1.714 5.148Zm5.313-1.898V25h-1.219v-9.242h3.409c1.012 0 1.803.258 2.374.774.576.517.863 1.2.863 2.05 0 .898-.281 1.59-.844 2.076-.558.483-1.36.724-2.406.724h-2.177Zm0-.997h2.19c.652 0 1.151-.152 1.498-.457.347-.309.521-.753.521-1.333 0-.55-.174-.99-.521-1.32-.347-.33-.823-.502-1.428-.514h-2.26v3.624ZM179.06 25c-.068-.135-.123-.377-.165-.724-.546.567-1.198.851-1.956.851-.677 0-1.233-.19-1.669-.571a1.87 1.87 0 0 1-.647-1.46c0-.715.27-1.27.812-1.663.546-.398 1.312-.597 2.298-.597h1.142v-.54c0-.41-.122-.736-.368-.977-.245-.246-.607-.368-1.085-.368-.419 0-.77.105-1.054.317-.283.212-.425.468-.425.768h-1.181c0-.343.121-.673.362-.99a2.51 2.51 0 0 1 .99-.762c.419-.186.878-.28 1.378-.28.791 0 1.411.2 1.86.598.448.393.681.937.698 1.63v3.162c0 .63.08 1.132.241 1.504V25h-1.231Zm-1.949-.895c.368 0 .717-.095 1.047-.286.33-.19.569-.438.717-.742v-1.41h-.92c-1.439 0-2.158.421-2.158 1.264 0 .368.123.656.368.863.245.207.561.311.946.311Zm6.056.895h-1.175v-9.75h1.175V25Z\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function PayPalLightLarge(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={61}\n height={40}\n fill=\"none\"\n {...props}\n >\n <rect width={61} height={40} fill=\"#fff\" rx={4} />\n <path\n fill=\"#253D80\"\n d=\"m25.85 31.65.444-2.75H20.626l3.253-20.325a.261.261 0 0 1 .09-.163.308.308 0 0 1 .177-.062h7.892c2.63 0 4.435.537 5.388 1.6.422.446.716.994.852 1.588a5.437 5.437 0 0 1 0 2.187v.625l.445.25c.338.166.644.39.902.662.388.462.64 1.02.724 1.613.096.775.061 1.56-.101 2.325a8.016 8.016 0 0 1-.979 2.637 5.41 5.41 0 0 1-1.538 1.663 6.485 6.485 0 0 1-2.071.913c-.83.206-1.685.306-2.542.3h-.622c-.437 0-.86.15-1.195.424-.337.28-.559.671-.623 1.1v.25l-.775 4.85v.188c.01.033.01.067 0 .1h-.076l-3.978.025Z\"\n />\n <path\n fill=\"#189BD7\"\n d=\"m39.141 13.85-.076.463c-1.042 5.25-4.613 7.074-9.163 7.074H27.59c-.556 0-1.03.397-1.118.938l-1.182 7.4-.343 2.1a.58.58 0 0 0 .136.469c.112.129.276.204.449.206h4.117c.488 0 .904-.35.979-.825v-.2l.775-4.838v-.262a.973.973 0 0 1 .966-.825h.673c3.978 0 7.104-1.588 8.007-6.25a5.23 5.23 0 0 0-.814-4.663 4.098 4.098 0 0 0-1.093-.787Z\"\n />\n <path\n fill=\"#242E65\"\n d=\"m38.049 13.425-.483-.125-.534-.1A13.012 13.012 0 0 0 35 13.063h-6.202a.952.952 0 0 0-.966.813l-1.27 8.211v.238c.087-.54.561-.938 1.118-.938h2.313c4.55 0 8.12-1.825 9.162-7.075l.077-.462a5.762 5.762 0 0 0-.852-.35l-.33-.075Z\"\n />\n <path\n fill=\"#253D80\"\n d=\"M27.831 13.875a.952.952 0 0 1 .966-.813H35c.68-.007 1.36.039 2.033.138l.534.1.483.125.241.075c.293.094.578.21.852.35a4.938 4.938 0 0 0-1.017-4.463C36.855 8.063 34.77 7.5 32.05 7.5h-7.904c-.557 0-1.03.397-1.118.938L19.736 28.95c-.03.193.028.39.157.539.13.148.318.235.517.236h4.88l1.27-7.638 1.271-8.212Z\"\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", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Play(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 mask-type=\"alpha\"\n maskUnits=\"userSpaceOnUse\"\n >\n <path stroke=\"#000\" d=\"M3.444 1.857 13 8l-9.556 6.143V1.857Z\" />\n </mask>\n <g mask=\"url(#a)\">\n <path fill=\"#00B031\" d=\"M0 0h16v16H0z\" />\n </g>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Plus(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 mask-type=\"alpha\"\n maskUnits=\"userSpaceOnUse\"\n >\n <path stroke=\"#1E1E2D\" d=\"M8 3.333v9.334M3.333 8h9.334\" />\n </mask>\n <g mask=\"url(#a)\">\n <path fill=\"#1E1E2D\" d=\"M0 0h16v16H0z\" />\n </g>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Profile(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={24}\n height={24}\n fill=\"none\"\n {...props}\n >\n <circle cx={12} cy={12} r={12} fill=\"#F4F6FF\" />\n <path\n stroke=\"#9AA0B9\"\n d=\"M17.333 18v-1.333A2.667 2.667 0 0 0 14.667 14H9.333a2.667 2.667 0 0 0-2.666 2.667V18M12 11.333A2.667 2.667 0 1 0 12 6a2.667 2.667 0 0 0 0 5.333Z\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function QRCode(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n width={168}\n height={168}\n fill=\"none\"\n {...props}\n >\n <path fill=\"url(#a)\" stroke=\"#E2E5EC\" d=\"M.5.5h167v167H.5z\" />\n <defs>\n <pattern\n id=\"a\"\n width={1}\n height={1}\n patternContentUnits=\"objectBoundingBox\"\n >\n <use xlinkHref=\"#b\" transform=\"scale(.0039)\" />\n </pattern>\n <image\n xlinkHref=\"data:image/png;base64,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\"\n id=\"b\"\n width={256}\n height={256}\n />\n </defs>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Rectangle(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={215}\n height={440}\n fill=\"none\"\n {...props}\n >\n <path fill=\"#C4C4C4\" d=\"M0 0h215v440H0z\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Revert(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=\"M1 3v4h4\" />\n <path stroke=\"#F06D8D\" d=\"M2.34 10a6 6 0 1 0 1.42-6.24S2.5 5 2 6.5\" />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Star(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <path\n fill=\"#F59A2F\"\n d=\"m8 .1 2.5 5 5.5.8-3.9 3.8 1 5.5-5-2.6-4.9 2.6 1-5.5L0 5.9l5.5-.8L8 .1z\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Star2(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <path\n fill=\"none\"\n stroke=\"#9AA0B9\"\n strokeMiterlimit={10}\n d=\"m8 1.2 2.1 4.2 4.6.7-3.3 3.2.8 4.6L8 11.7l-4.1 2.2.8-4.6-3.4-3.2 4.6-.7L8 1.2z\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function TrafficSources(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <g fill=\"none\" stroke=\"#9AA0B9\">\n <path d=\"M4.7 10.7 8 14l3.3-3.3\" />\n <path d=\"M.7 2.7h4.7c.7 0 1.4.3 1.9.8.4.4.7 1.1.7 1.8v8M15.3 2.7h-4.7c-.7 0-1.4.3-1.9.8S8 4.6 8 5.3v8\" />\n </g>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Trash(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n d=\"M2 4h12M5.3 4V2.7c0-.4.1-.7.4-.9.3-.3.6-.5 1-.5h2.7c.4 0 .7.1.9.4.3.3.4.6.4.9V4m2 0v9.3c0 .4-.1.7-.4.9-.3.3-.6.4-.9.4H4.7c-.4 0-.7-.1-.9-.4-.3-.3-.4-.6-.4-.9V4h9.3zM6.7 7.3v4M9.3 7.3v4\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function TrashRed(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <path\n fill=\"none\"\n stroke=\"#F06D8D\"\n d=\"M2 4h12M5.3 4V2.7c0-.4.1-.7.4-.9.3-.3.6-.5 1-.5h2.7c.4 0 .7.1.9.4.3.3.4.6.4.9V4m2 0v9.3c0 .4-.1.7-.4.9-.3.3-.6.4-.9.4H4.7c-.4 0-.7-.1-.9-.4-.3-.3-.4-.6-.4-.9V4h9.3zM6.7 7.3v4M9.3 7.3v4\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Triggers(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <path\n fill=\"none\"\n stroke=\"#9AA0B9\"\n d=\"M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function User(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n id=\"Layer_1\"\n x={0}\n y={0}\n viewBox=\"0 0 16 16\"\n {...props}\n >\n <style>\n {\n '.st0{fill:none;stroke:#9aa0b9;strokeWidth:1.07;strokeLinecap:round;strokeLinejoin:round}'\n }\n </style>\n <path\n d=\"M13.3 14v-1.3a2.732 2.732 0 0 0-2.7-2.7H5.3a2.732 2.732 0 0 0-2.7 2.7V14M8 7.3c1.5 0 2.7-1.2 2.7-2.7S9.5 2 8 2 5.3 3.2 5.3 4.7 6.5 7.3 8 7.3z\"\n className=\"st0\"\n />\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function Visa(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={38}\n height={24}\n fill=\"none\"\n {...props}\n >\n <g fillRule=\"evenodd\" clipPath=\"url(#a)\" clipRule=\"evenodd\">\n <path\n fill=\"#fff\"\n d=\"M0 1.784C0 .799.799 0 1.784 0H36.27c.985 0 1.784.799 1.784 1.784v21.405c0 .985-.799 1.784-1.784 1.784H1.784A1.784 1.784 0 0 1 0 23.189V1.784Z\"\n />\n <path\n fill=\"#0071CE\"\n d=\"M23.325 9.21a4.132 4.132 0 0 0-1.543-.291c-1.702 0-2.9.938-2.91 2.281-.01.994.855 1.548 1.508 1.878.67.339.896.555.893.858-.004.463-.535.675-1.03.675-.69 0-1.055-.104-1.622-.363l-.221-.11-.24 1.548c.4.192 1.145.36 1.917.368 1.81 0 2.984-.927 2.998-2.36.006-.789-.452-1.386-1.446-1.88-.601-.32-.97-.532-.966-.856 0-.288.311-.595.986-.595.563-.01.97.125 1.288.265l.155.08.233-1.499Zm-7.966 6.742 1.077-6.913h1.721l-1.077 6.913H15.36Zm10.944-4.383s-.543 1.535-.685 1.932h1.429c-.068-.346-.399-1.995-.399-1.995l-.116-.597c-.046.137-.11.318-.158.456v.001a4.467 4.467 0 0 0-.07.203Zm1.438-2.523h-1.33c-.413 0-.722.123-.902.573l-2.557 6.335h1.808s.295-.852.362-1.04l.994.002 1.211.002c.052.242.21 1.036.21 1.036h1.598L27.74 9.046Zm-13.826 0-1.685 4.712-.18-.958-.001-.003-.603-3.173c-.104-.438-.407-.568-.78-.583H7.888l-.023.143c.676.179 1.28.437 1.81.758l1.53 6.004 1.822-.002 2.711-6.899h-1.824Z\"\n />\n <path\n fill=\"#E5E5E5\"\n fillOpacity={0.01}\n d=\"M0 1.784C0 .799.799 0 1.784 0H36.27c.985 0 1.784.799 1.784 1.784v21.405c0 .985-.799 1.784-1.784 1.784H1.784A1.784 1.784 0 0 1 0 23.189V1.784Z\"\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M0 0h38v24H0z\" />\n </clipPath>\n </defs>\n </svg>\n )\n}\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function X(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=\"m12 4-8 8M4 4l8 8\" />\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 { IDropdownOption, IDropdownProps } from './Dropdown.interface';\nimport Dropdown from './Dropdown';\n\nexport type { IDropdownOption, IDropdownProps };\nexport default Dropdown;\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 className={cn(`${RC}__accordion`)}\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 = <>\nLorem 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</>\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 './Alert.scss';\n\nconst Alert: React.FC<IAlertProps> = ({\n message,\n icon,\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 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 {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';\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 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 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 {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 { IFormattedRawSSNProps } from './FormattedRawSSN.interface';\nimport FormattedRawSSN from './FormattedRawSSN';\n\nexport type { IFormattedRawSSNProps };\nexport default FormattedRawSSN;\n", "import type { TAutoComplete } from './lib/autocomplete'\nimport type { InputProps } from './types';\n\nimport Input from './Input';\n\nexport default Input;\nexport type { InputProps, TAutoComplete };\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 { IHexFormatOptions, IInputColorProps } from './InputColor.interface';\nimport InputColor from './InputColor';\n\nexport type { IHexFormatOptions, IInputColorProps };\nexport default InputColor;\n", "import type { FC } from 'react';\n\nimport type { IInputCurrencyProps, IOnlyNumbersConfig } from './InputCurrency.interface';\n\nimport cn from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { filterNumeric } from '../../../Functions/fieldValueFormatters';\n\nimport './InputCurrency.scss';\n\nconst attrsOfNativeInputDefault = {} as IInputCurrencyProps['attributesOfNativeInput'];\nconst CN = 'input-currency';\n/**\n * Type-annotation \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u0435\u043D: \u0431\u0435\u0437 \u043D\u0435\u0433\u043E TS widens `type: 'float'` \u2192 `type: string`,\n * \u0438 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0432 `filterNumeric(...: IBitDepthSettings)` \u043B\u043E\u0432\u0438\u043C TS2345.\n */\nconst ONLY_NUMBERS_DEFAULT: IOnlyNumbersConfig = {\n type: 'float',\n decimalPlaces: 2,\n};\n\nconst InputCurrency: FC<IInputCurrencyProps> = ({\n currencySymbol = '$',\n testId = CN,\n onChange,\n className,\n value,\n disabled,\n attributesOfNativeInput = attrsOfNativeInputDefault,\n min = 0,\n max,\n error,\n isNoCheckMinMax,\n allowZero = false,\n onlyNumbers = ONLY_NUMBERS_DEFAULT,\n}) => {\n const [inputValue, setInputValue] = useState<string>(currencySymbol);\n const [isFocused, setIsFocused] = useState<boolean>(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const formatNumberWithCommas = (number: number | string): string => {\n const parts = number.toString().split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n return parts.join('.');\n };\n\n const formatCurrencyInput = (event: React.ChangeEvent<HTMLInputElement>): void => {\n let newValue = event.target.value;\n newValue = newValue.replace(currencySymbol, '');\n\n // If user typed comma(',') replace it to dot('.') for float value typing\n if (typeof newValue === 'string' && newValue.charAt(newValue.length - 1) === ',')\n newValue = newValue.substring(0, newValue.length - 1).concat('.');\n\n // Handle decimal input separately\n const parts = newValue.split('.');\n const integerPart = parts[0];\n const decimalPart = parts[1];\n\n // Filter and format the integer part\n const preparedIntegerValue = filterNumeric(integerPart, { ...onlyNumbers, type: 'int' });\n const parsedIntegerValue = Number.parseInt(preparedIntegerValue);\n\n if (!Number.isNaN(parsedIntegerValue)) {\n if (parsedIntegerValue === 0 && !decimalPart) {\n if (allowZero) {\n setInputValue(`${currencySymbol}0`);\n onChange(0);\n }\n else {\n setInputValue(currencySymbol);\n onChange('');\n }\n }\n else {\n let formattedValue = formatNumberWithCommas(parsedIntegerValue);\n\n // Add decimal part if exists\n if (decimalPart !== undefined) {\n const filteredDecimal = filterNumeric(decimalPart, { type: 'int' });\n if (filteredDecimal) {\n formattedValue += `.${filteredDecimal.slice(0, onlyNumbers.decimalPlaces)}`;\n }\n else if (decimalPart === '') {\n formattedValue += '.';\n }\n }\n\n setInputValue(`${currencySymbol}${formattedValue}`);\n onChange(Number.parseFloat(formattedValue.replace(/,/g, '')));\n }\n }\n else {\n setInputValue(currencySymbol);\n onChange('');\n }\n };\n\n const onInputClick = (): void => {\n if (!inputValue && inputRef.current) {\n inputRef.current.selectionStart = inputRef.current.selectionEnd\n = currencySymbol ? currencySymbol.length : 1;\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>): void => {\n if (event.key.match(/^[a-z0-9]$/i) && inputRef.current) {\n setInputValue(inputValue.slice(0, inputRef.current.selectionStart || 0));\n }\n };\n\n const checkMinMax = (event: React.FocusEvent<HTMLInputElement> | null, checkValue?: string | number): boolean => {\n const clearValue = checkValue ?? filterNumeric(event?.target?.value || '', onlyNumbers);\n\n if (!clearValue) return false;\n\n const numericValue = typeof clearValue === 'string' ? Number.parseFloat(clearValue) : clearValue;\n\n if (numericValue < min) {\n setInputValue(`${currencySymbol}${formatNumberWithCommas(min)}`);\n onChange(min);\n return false;\n }\n\n if (max && numericValue > max) {\n setInputValue(`${currencySymbol}${formatNumberWithCommas(max)}`);\n onChange(max);\n return false;\n }\n\n return true;\n };\n\n useEffect(() => {\n if (value === 0 || value === '0') {\n if (allowZero) {\n setInputValue(`${currencySymbol}0`);\n onChange(0);\n }\n else {\n setInputValue(currencySymbol);\n onChange('');\n }\n }\n else if (value) {\n setInputValue(`${currencySymbol}${formatNumberWithCommas(value)}`);\n }\n else {\n setInputValue(currencySymbol);\n }\n }, [value, currencySymbol, allowZero]);\n\n return (\n <div\n data-testid={testId}\n className={cn('input-currency-box', className, {\n disabled,\n 'input-currency__error': error,\n 'input-currency__focused': isFocused,\n })}\n >\n <input\n className={CN}\n type=\"text\"\n ref={inputRef}\n value={inputValue}\n onChange={formatCurrencyInput}\n onClick={onInputClick}\n onKeyDown={onKeyDown}\n {...attributesOfNativeInput}\n onFocus={(e) => {\n attributesOfNativeInput?.onFocus?.(e);\n setIsFocused(true);\n }}\n onBlur={(e) => {\n attributesOfNativeInput?.onBlur?.(e);\n if (!isNoCheckMinMax) {\n const currentValue = Number.parseFloat(\n filterNumeric(inputValue.replace(currencySymbol, ''), onlyNumbers),\n );\n checkMinMax(null, currentValue);\n }\n setIsFocused(false);\n }}\n />\n </div>\n );\n};\n\nInputCurrency.displayName = 'InputCurrency';\n\nexport default InputCurrency;\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 { 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 { 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 { 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';\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 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", "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", "// ? \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 { 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 { 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 { 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 type { IInputLinkProps, IWithHttpsPrefix } from './InputLink.interface';\nimport InputLink from './InputLink';\n\nexport type { IInputLinkProps, IWithHttpsPrefix };\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", "import type { IInputRow, IInputsRowProps } from './InputsRow.interface';\nimport InputsRow from './InputsRow';\n\nexport type { IInputRow, IInputsRowProps };\nexport default InputsRow;\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 { IInputWithActionProps } from './InputWithAction.interface';\nimport InputWithAction from './InputWithAction';\n\nexport type { IInputWithActionProps };\nexport default 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 type { IRadioInputProps } from './RadioInput.interface';\nimport RadioInput from './RadioInput';\n\nexport type { IRadioInputProps };\nexport default RadioInput;\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 { IRangeInputsProps } from './RangeInputs.interface';\nimport RangeInputs from './RangeInputs';\n\nexport type { IRangeInputsProps };\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 { IRangeListCellProps, IRangeListProps, IRangeListRowProps } from './RangeList.interface';\nimport RangeList from './RangeList.js';\n\nexport type { IRangeListCellProps, IRangeListProps, IRangeListRowProps };\nexport default RangeList;\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 touch = 'touches' in e ? e.touches?.[0] : undefined;\n const x = touch?.clientX ?? ('clientX' in e ? e.clientX : 0);\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 { ISwitcherProps } from './Switcher.interface';\nimport Switcher from './Switcher';\n\nexport type { ISwitcherProps };\nexport default Switcher;\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 { ISwitcherHideProps } from './SwitcherHide.interface';\nimport SwitcherHide from './SwitcherHide';\n\nexport type { ISwitcherHideProps };\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 { ISwitcherRadioProps } from './SwitcherRadio.interface';\nimport SwitcherRadio from './SwitcherRadio';\n\nexport type { ISwitcherRadioProps };\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 { ISwitcherRangeProps } from './SwitcherRange.interface';\nimport SwitcherRange from './SwitcherRange';\n\nexport type { ISwitcherRangeProps };\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 if (!data) return null;\n\n const nextData = typeof data === 'function' ? data(editingOption) : data;\n\n return {\n ...(editingOption ?? {}),\n ...nextData,\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 }) => String(value) === String(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 Promise.resolve(onOptionCreate?.(newOption) ?? 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 Promise.resolve(onOptionDelete?.(editingOption) ?? 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 unknown 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 (inputRef?.current?.focus) {\n inputRef.current.focus();\n\n const len = inputRef.current?.value?.length ?? 0;\n inputRef.current.setSelectionRange(len, len);\n }\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\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 => String(el.value) === String(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 => String(el.value) === String(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 searchValueRef.current = '';\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?.(searchValue ? 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 Promise.resolve(onChange?.(\n options.filter(({ value }) => value !== undefined ? newValue.includes(value) : false),\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 { ITextLink, ITextProps } from './Text.interface';\nimport Text from './Text';\n\nexport type { ITextLink, ITextProps };\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 { IAccordionWithCheckboxProps, ITieredCheckboxesProps, ITieredCheckboxItem } from './TieredCheckboxes.interface';\nimport TieredCheckboxes from './TieredCheckboxes';\n\nexport type { IAccordionWithCheckboxProps, ITieredCheckboxesProps, ITieredCheckboxItem };\nexport default TieredCheckboxes;\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 { InputCustomFetchProps } from './model/types';\nimport cn from 'classnames';\nimport React, { useCallback, 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';\n\nimport useIsMobile from '../../Functions/useIsMobile/useIsMobile';\n\nimport { useDebouncedCallback } from './lib/hooks/useDebouncedCallback';\nimport { useFetchWithAbort } from './lib/hooks/useFetchWithAbort';\nimport { compareValues, getIsValidNumber } from './lib/utils';\n\nimport './InputCustomFetch.scss';\n\nconst RC = 'input-custom-fetch';\nconst DEFAULT_HINT_MESSAGE = 'Please select a valid option from the list';\n\nfunction noop(): void {}\n\nfunction InputCustomFetch<TOption = any, TValue = any>(\n props: InputCustomFetchProps<TOption, TValue>,\n): JSX.Element {\n const {\n label,\n className = '',\n isClearable = true,\n isKeyboardControlled = true,\n fieldKey = '',\n testId = '',\n throttle: throttleTime = 500,\n loader = '',\n noItemsMessage = '',\n error,\n value = '' as TValue,\n onChange = noop,\n onChangeValueTransformer,\n disabled,\n isDisabled,\n noValidate = false,\n attributesOfNativeInput,\n optionToValue,\n valueToSearchString,\n isValidValue,\n renderSelectedItem,\n renderListItem,\n renderHintMessage,\n } = props;\n\n const { isMobile } = useIsMobile();\n\n // Refs\n const inputRef = useRef<any>(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<TValue>(value);\n\n // State\n const [isScrollableList] = useState<boolean | null>(null);\n const [scrollTop] = useState(0);\n\n const [innerValue, setInnerValue] = useState<TValue>(value);\n const [tempInnerValue, setTempInnerValue] = useState<TValue | null>(null);\n\n const [listItems, setListItems] = useState<TOption[]>([]);\n const [isLoading] = 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 // ===================== FETCH LOGIC =====================\n\n const { fetchWithAbort, abortControllerRef } = useFetchWithAbort(props);\n\n const execute = useCallback(\n async (searchQuery: string): Promise<void> => {\n if (!searchQuery?.length) return;\n\n setIsListLoading(true);\n try {\n const items = await fetchWithAbort(searchQuery);\n setListItems(items);\n }\n catch {\n setListItems([]);\n }\n finally {\n setIsListLoading(false);\n }\n },\n [fetchWithAbort],\n );\n\n const debouncedExecute = useDebouncedCallback(\n execute,\n getIsValidNumber(throttleTime) ? throttleTime : 0,\n );\n\n const getOptionsList = useCallback(() => {\n const searchString = valueToSearchString(innerValue);\n if (!searchString?.length) return;\n\n debouncedExecute(searchString);\n }, [innerValue, valueToSearchString, debouncedExecute]);\n\n // ===================== VALIDATION =====================\n\n const isWrongValue = useMemo(() => {\n if (noValidate) return false;\n\n const searchString = valueToSearchString(innerValue);\n if (searchString === '') return false;\n\n if (isValidValue) {\n return !isValidValue(innerValue);\n }\n\n return false;\n }, [innerValue, noValidate, isValidValue, valueToSearchString]);\n\n // ===================== HANDLERS =====================\n\n const setItemAsInnerValue = useCallback(\n (e: React.MouseEvent | null, item: TOption) => {\n if (e instanceof Event) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n setTimeout(() => {\n const newValue = optionToValue(item);\n setInnerValue(newValue);\n\n if (isMobile) {\n setIsListVisible(false);\n }\n }, 0);\n },\n [optionToValue, isMobile],\n );\n\n const onClearClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!isMobile) {\n setIsListVisible(false);\n }\n\n setInnerValue('' as TValue);\n\n inputRef?.current?.focus();\n setTimeout(() => setIsFocused(true), 0);\n },\n [isMobile],\n );\n\n const onOverlayClick = useCallback(\n (e: React.MouseEvent) => {\n if (e.target === listOverlayRef?.current) {\n e.stopPropagation();\n e.preventDefault();\n setIsListVisible(false);\n if (tempInnerValue !== null) {\n setInnerValue(tempInnerValue);\n onChange(\n !onChangeValueTransformer || typeof onChangeValueTransformer !== 'function'\n ? tempInnerValue\n : onChangeValueTransformer(tempInnerValue),\n );\n }\n }\n },\n [tempInnerValue, onChange, onChangeValueTransformer],\n );\n\n const onKeyDown = useCallback(\n (keyCode: number | string): void => {\n if (!isListVisible || !isKeyboardControlled) return;\n\n if (keyCode === 13) {\n // Enter\n if (hightlightedIndex !== null && listItems[hightlightedIndex]) {\n setItemAsInnerValue(null, listItems[hightlightedIndex]);\n setHightlightedIndex(null);\n inputRef?.current?.blur();\n }\n }\n else {\n let newHightlightedIndex: number | null = null;\n const listItemsElements = document.getElementsByClassName(\n `${RC}__list--item`,\n );\n\n const listHeight = listRef?.current?.getBoundingClientRect()?.height || 0;\n const listScrollTop = listRef?.current?.scrollTop || 0;\n const lastItemIndex = listItems.length - 1;\n\n if (keyCode === 40) {\n // Down\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\n if (hightlightedIndex === null || hightlightedIndex === 0) {\n newHightlightedIndex = lastItemIndex;\n }\n else if (hightlightedIndex - 1 >= 0) {\n newHightlightedIndex = hightlightedIndex - 1;\n }\n }\n\n if (newHightlightedIndex !== null) {\n const newHightlightedElement = listItemsElements[\n newHightlightedIndex\n ] as HTMLElement;\n const newHightlightedElementHeight\n = newHightlightedElement?.getBoundingClientRect()?.height || 0;\n const newHightlightedElementTopInList\n = 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 (\n Math.abs(newHightlightedElementTopInList - listScrollTop)\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\n if (!isMobile) setHightlightedIndex(newHightlightedIndex);\n }\n }\n },\n [\n isListVisible,\n isKeyboardControlled,\n hightlightedIndex,\n listItems,\n isMobile,\n setItemAsInnerValue,\n ],\n );\n\n // ===================== RENDER HELPERS =====================\n\n const getHintMessage = useCallback((): string => {\n if (!renderHintMessage || typeof renderHintMessage !== 'function')\n return DEFAULT_HINT_MESSAGE;\n\n return renderHintMessage(innerValue);\n }, [renderHintMessage, innerValue]);\n\n const getSelectedItemLabel = useCallback(\n (val: TValue = innerValue): string => {\n if (!val) return '';\n\n const searchString = valueToSearchString(val);\n if (typeof searchString === 'string') return searchString;\n\n if (typeof renderSelectedItem === 'function') {\n return renderSelectedItem(val);\n }\n\n return String(val);\n },\n [innerValue, valueToSearchString, renderSelectedItem],\n );\n\n const getListItemLabel = useCallback(\n (item: TOption): React.ReactNode => {\n if (!renderListItem || typeof renderListItem !== 'function') {\n return String(item);\n }\n\n return renderListItem(item);\n },\n [renderListItem],\n );\n\n const setListHeight = useCallback(() => {\n if (listWrapperRef?.current && listHeaderRef?.current && listRef.current) {\n const listWrapperHeight\n = listWrapperRef?.current?.getBoundingClientRect()?.height || 0;\n const listWrapperStyles = getComputedStyle(listWrapperRef?.current);\n\n const listHeaderHeight\n = listHeaderRef?.current?.getBoundingClientRect()?.height || 0;\n\n const listHeight\n = listWrapperHeight\n - listHeaderHeight\n - Number.parseInt(listWrapperStyles.paddingBottom || '0', 10);\n\n listRef.current.style.maxHeight = `${listHeight}px`;\n }\n }, []);\n\n const resetListHeight = useCallback(() => {\n if (listRef.current) {\n listRef.current.style.maxHeight = `initial`;\n }\n }, []);\n\n // ===================== EFFECTS =====================\n\n useEffect(() => {\n if (!compareValues(innerValue, previousValueRef.current)) {\n const searchString = valueToSearchString(innerValue);\n\n if (searchString) {\n onChange(\n !onChangeValueTransformer || typeof onChangeValueTransformer !== 'function'\n ? innerValue\n : onChangeValueTransformer(innerValue),\n );\n\n if (!isListVisible) setIsListVisible(true);\n if (isFocused) getOptionsList();\n }\n else {\n onChange(innerValue);\n }\n }\n }, [innerValue, valueToSearchString, onChange, onChangeValueTransformer, isListVisible, isFocused, getOptionsList]);\n\n useEffect(() => {\n if (!isFocused && !isMobile) {\n setIsListVisible(false);\n setHightlightedIndex(null);\n }\n }, [isFocused, isMobile]);\n\n useEffect(() => {\n if (!isListVisible) {\n setListItems([]);\n resetListHeight();\n }\n\n if (isMobile && isListVisible) {\n setTempInnerValue(innerValue);\n setListHeight();\n }\n }, [isListVisible, isMobile, innerValue, resetListHeight, setListHeight]);\n\n useEffect(() => {\n if (!compareValues(value, innerValue)) {\n setInnerValue(value);\n }\n\n previousValueRef.current = value;\n }, [value, innerValue]);\n\n // Cleanup abort controller on unmount\n useEffect(() => {\n return () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n };\n }, [abortControllerRef]);\n\n // ===================== RENDER COMPONENTS =====================\n\n const renderSearchableInput = (): JSX.Element => {\n const inputValue = getSelectedItemLabel();\n\n return (\n <div className={cn(`${RC}__input-wrapper`)}>\n <Input\n ref={inputRef}\n testId={`${RC}--input--key-${testId || fieldKey}`}\n className={cn(`${RC}__input`, className)}\n value={inputValue}\n onChange={(val: string) => setInnerValue(val as TValue)}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onKeyDown={onKeyDown}\n attributesOfNativeInput={attributesOfNativeInput}\n disabled={disabled || isDisabled}\n />\n {isWrongValue && (\n <div\n className={cn(`${RC}__alert`, {\n [`${RC}__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 && (!isWrongValue || isFocused) && !(disabled || isDisabled) && inputValue && (\n <div\n className={cn(`${RC}__clear-query`, {\n [`${RC}__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 || innerValue : innerValue,\n );\n\n return (\n <div className={cn(`${RC}__input-wrapper`)}>\n <Input\n testId={`${RC}--input--key-${testId || fieldKey}`}\n className={cn(`${RC}__input`, className)}\n value={inputValue}\n onChange={(val: string) => setInnerValue(val as TValue)}\n onFocus={(e: any) => {\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={`${RC}__list--loader`}>\n {loader || 'Loading...'}\n </div>\n );\n };\n\n const renderList = (): JSX.Element => {\n const renderListItemComponent = (item: TOption, i: number): JSX.Element => {\n return (\n <div\n key={`${RC}__list-item${i}`}\n className={cn(`${RC}__list--item`, {\n [`${RC}__list--item-hightlighted`]: i === hightlightedIndex,\n })}\n onMouseDown={e => setItemAsInnerValue(e, item)}\n >\n {getListItemLabel(item)}\n </div>\n );\n };\n\n const renderNoItems = (): JSX.Element => {\n return (\n <div className={`${RC}__list--no-items`}>\n {isMobile && !valueToSearchString(innerValue)?.length\n ? 'Please begin typing'\n : noItemsMessage || 'No Items'}\n </div>\n );\n };\n\n const renderListDesktop = (): JSX.Element => {\n return (\n <div className={`${RC}__list-wrapper`} ref={listWrapperRef}>\n <div className={`${RC}__list`} ref={listRef}>\n {isListLoading\n ? renderLoader()\n : listItems?.length\n ? listItems?.map(renderListItemComponent)\n : renderNoItems()}\n </div>\n </div>\n );\n };\n\n const renderListMobile = (): JSX.Element => {\n return (\n <div\n className={`${RC}__list-overlay`}\n ref={listOverlayRef}\n onClick={onOverlayClick}\n >\n <div className={`${RC}__list-wrapper`} ref={listWrapperRef}>\n {isMobile && (\n <div\n ref={listHeaderRef}\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`)}>\n {label || 'Select'}\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={`${RC}__list`} ref={listRef}>\n {isListLoading\n ? renderLoader()\n : listItems?.length\n ? listItems?.map(renderListItemComponent)\n : renderNoItems()}\n </div>\n </div>\n </div>\n );\n };\n\n return isMobile ? renderListMobile() : renderListDesktop();\n };\n\n return (\n <div\n className={cn(RC, {\n [`${RC}--error`]: error || (isWrongValue && !isFocused),\n [`${RC}--disabled`]: disabled || isDisabled,\n })}\n >\n {isLoading && <Spinner size=\"small\" />}\n {isMobile ? renderInput() : renderSearchableInput()}\n {isListVisible && renderList()}\n </div>\n );\n}\n\nexport default InputCustomFetch;\n", "import { useCallback, useRef } from 'react';\n\n/**\n * \u0425\u0443\u043A \u0434\u043B\u044F \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F debounced \u0432\u0435\u0440\u0441\u0438\u0438 callback-\u0444\u0443\u043D\u043A\u0446\u0438\u0438\n * \u041E\u0442\u043C\u0435\u043D\u044F\u0435\u0442 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u0432\u044B\u0437\u043E\u0432 \u0435\u0441\u043B\u0438 \u043D\u043E\u0432\u044B\u0439 \u0432\u044B\u0437\u043E\u0432 \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442 \u0434\u043E \u0438\u0441\u0442\u0435\u0447\u0435\u043D\u0438\u044F delay\n *\n * @param callback - \u0424\u0443\u043D\u043A\u0446\u0438\u044F \u0434\u043B\u044F debounce\n * @param delay - \u0417\u0430\u0434\u0435\u0440\u0436\u043A\u0430 \u0432 \u043C\u0438\u043B\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0430\u0445\n */\nexport function useDebouncedCallback<T extends (...args: any[]) => any>(\n callback: T,\n delay: number,\n): T {\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n return useCallback(\n ((...args: Parameters<T>) => {\n // \u041E\u0442\u043C\u0435\u043D\u044F\u0435\u043C \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u0442\u0430\u0439\u043C\u0435\u0440\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // \u0415\u0441\u043B\u0438 delay = 0, \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u043C \u0441\u0440\u0430\u0437\u0443\n if (delay <= 0) {\n callback(...args);\n return;\n }\n\n // \u0421\u043E\u0437\u0434\u0430\u0451\u043C \u043D\u043E\u0432\u044B\u0439 \u0442\u0430\u0439\u043C\u0435\u0440\n timeoutRef.current = setTimeout(() => {\n callback(...args);\n timeoutRef.current = null;\n }, delay);\n }) as T,\n [callback, delay],\n );\n}\n", "import type React from 'react';\nimport type { InputCustomFetchProps } from '../../model/types';\n\nimport { useCallback, useRef } from 'react';\n\nimport { isFetchProps } from '../utils';\n\n/**\n * \u0425\u0443\u043A \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0442\u044B \u0441 \u0437\u0430\u043F\u0440\u043E\u0441\u0430\u043C\u0438 \u0441 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C\u044E \u043E\u0442\u043C\u0435\u043D\u044B (abort)\n * \u041F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043A\u0430\u043A \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u0443\u044E \u0444\u0443\u043D\u043A\u0446\u0438\u044E \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438, \u0442\u0430\u043A \u0438 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0439 HTTP \u043A\u043B\u0438\u0435\u043D\u0442\n */\nexport function useFetchWithAbort<TOption, TValue>(\n props: InputCustomFetchProps<TOption, TValue>,\n): { fetchWithAbort: (searchQuery: string) => Promise<TOption[]>; abortControllerRef: React.MutableRefObject<AbortController | null> } {\n const abortControllerRef = useRef<AbortController | null>(null);\n\n const fetchWithAbort = useCallback(\n async (searchQuery: string): Promise<TOption[]> => {\n // \u041E\u0442\u043C\u0435\u043D\u044F\u0435\u043C \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u0437\u0430\u043F\u0440\u043E\u0441\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n\n // \u0421\u043E\u0437\u0434\u0430\u0451\u043C \u043D\u043E\u0432\u044B\u0439 AbortController\n abortControllerRef.current = new AbortController();\n\n try {\n if (isFetchProps(props)) {\n // \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0439 HTTP \u043A\u043B\u0438\u0435\u043D\u0442\n const {\n fetchEndpoint,\n fetchMethod = 'POST',\n fetchHeaders = {},\n fetchQueryBuilder,\n fetchBodyBuilder,\n responseTransformer,\n } = props;\n\n let url = fetchEndpoint;\n\n // \u0414\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u043C query \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u0434\u043B\u044F GET\n if (fetchQueryBuilder && fetchMethod === 'GET') {\n const queryParams = fetchQueryBuilder(searchQuery);\n const searchParams = new URLSearchParams(queryParams);\n url = `${fetchEndpoint}?${searchParams.toString()}`;\n }\n\n const fetchOptions: RequestInit = {\n method: fetchMethod,\n headers: {\n 'Content-Type': 'application/json',\n ...fetchHeaders,\n },\n signal: abortControllerRef.current.signal,\n };\n\n if (fetchBodyBuilder && fetchMethod === 'POST') {\n fetchOptions.body = JSON.stringify(fetchBodyBuilder(searchQuery));\n }\n\n const response = await fetch(url, fetchOptions);\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data = await response.json();\n return responseTransformer(data);\n }\n else {\n // \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u0443\u044E \u0444\u0443\u043D\u043A\u0446\u0438\u044E\n const { getListItems } = props;\n return await getListItems(searchQuery);\n }\n }\n catch (error) {\n if ((error as Error).name === 'AbortError') {\n // \u0417\u0430\u043F\u0440\u043E\u0441 \u0431\u044B\u043B \u043E\u0442\u043C\u0435\u043D\u0451\u043D, \u044D\u0442\u043E \u043D\u043E\u0440\u043C\u0430\u043B\u044C\u043D\u043E\n return [];\n }\n console.error('Fetch error:', error);\n throw error;\n }\n },\n [props],\n );\n\n return { fetchWithAbort, abortControllerRef };\n}\n", "import type { InputCustomFetchProps } from '../model/types';\nimport { compare, getIsOnlyAnObject } from '../../../Functions/utils';\n\n/**\n * \u0421\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0441 \u0443\u0447\u0435\u0442\u043E\u043C \u0438\u0445 \u0442\u0438\u043F\u043E\u0432\n */\nexport function compareValues(val1: any, val2: any): boolean {\n return (\n typeof val1 === typeof val2\n && (getIsOnlyAnObject(val1) ? compare(val1, val2) : val1 === val2)\n );\n}\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0447\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0432\u0430\u043B\u0438\u0434\u043D\u044B\u043C \u0447\u0438\u0441\u043B\u043E\u043C (\u043D\u0435 NaN, \u043D\u0435 null, \u043D\u0435 undefined)\n */\nexport function getIsValidNumber(value: any): boolean {\n return Boolean(value) && typeof value === 'number' && !Number.isNaN(value);\n}\n\n/**\n * Type guard \u0434\u043B\u044F \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0442\u0438\u043F\u0430 \u043F\u0440\u043E\u043F\u0441\u043E\u0432 (\u0441 fetchEndpoint \u0438\u043B\u0438 \u0441 getListItems)\n */\nexport function isFetchProps<TOption, TValue>(\n props: InputCustomFetchProps<TOption, TValue>,\n): props is import('../model/types').InputCustomFetchPropsWithFetch<TOption, TValue> {\n return 'fetchEndpoint' in props;\n}\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", "(function () {\n if (Element.prototype.__customEventListenerPatched) return;\n Element.prototype.__customEventListenerPatched = true;\n\n Element.prototype._addEventListener = Element.prototype.addEventListener;\n Element.prototype.addEventListener = function (a, b, c) {\n if (c == undefined) c = false;\n this._addEventListener(a, b, c);\n if (!this.eventListenerList) this.eventListenerList = {};\n if (!this.eventListenerList[a]) this.eventListenerList[a] = [];\n //this.removeEventListener(a,b,c); // TODO - handle duplicates..\n this.eventListenerList[a].push({ listener: b, useCapture: c });\n };\n\n Element.prototype.getEventListeners = function (a) {\n if (!this.eventListenerList) this.eventListenerList = {};\n if (a == undefined) return this.eventListenerList;\n return this.eventListenerList[a];\n };\n Element.prototype.clearEventListeners = function (a) {\n if (!this.eventListenerList) this.eventListenerList = {};\n if (a == undefined) {\n for (const x in this.getEventListeners()) this.clearEventListeners(x);\n return;\n }\n const el = this.getEventListeners(a);\n if (el == undefined) return;\n for (let i = el.length - 1; i >= 0; --i) {\n const ev = el[i];\n this.removeEventListener(a, ev.listener, ev.useCapture);\n }\n };\n\n Element.prototype._removeEventListener =\n Element.prototype.removeEventListener;\n Element.prototype.removeEventListener = function (a, b, c) {\n if (c == undefined) c = false;\n this._removeEventListener(a, b, c);\n if (!this.eventListenerList) this.eventListenerList = {};\n if (!this.eventListenerList[a]) this.eventListenerList[a] = [];\n\n // Find the event in the list\n for (let i = 0; i < this.eventListenerList[a].length; i++) {\n if (\n this.eventListenerList[a][i].listener == b &&\n this.eventListenerList[a][i].useCapture == c\n ) {\n // Hmm..\n this.eventListenerList[a].splice(i, 1);\n break;\n }\n }\n if (this.eventListenerList[a].length == 0) delete this.eventListenerList[a];\n };\n})();\n\n/**\n * \u0414\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u043A \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0443\n * @param {HTMLElement} element - DOM \u044D\u043B\u0435\u043C\u0435\u043D\u0442\n * @param {string} eventName - \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\n * @param {Function} handler - \u0424\u0443\u043D\u043A\u0446\u0438\u044F-\u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\n */\nexport function addEventListener(element, eventName, handler) {\n if (element && element.addEventListener) {\n element.addEventListener(eventName, handler);\n }\n}\n\n/**\n * \u0423\u0434\u0430\u043B\u044F\u0435\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u0441 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\n * @param {HTMLElement} element - DOM \u044D\u043B\u0435\u043C\u0435\u043D\u0442\n * @param {string} eventName - \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\n * @param {Function} handler - \u0424\u0443\u043D\u043A\u0446\u0438\u044F-\u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A\n */\nexport function removeEventListener(element, eventName, handler) {\n if (element && element.removeEventListener) {\n element.removeEventListener(eventName, handler);\n }\n}\n\n/**\n * \u0421\u043E\u0437\u0434\u0430\u0435\u0442 \u0438 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u043E\u0435 \u0441\u043E\u0431\u044B\u0442\u0438\u0435\n * @param {HTMLElement} element - DOM \u044D\u043B\u0435\u043C\u0435\u043D\u0442\n * @param {string} eventName - \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\n * @param {Object} detail - \u0414\u0430\u043D\u043D\u044B\u0435 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\n */\nexport function dispatchCustomEvent(element, eventName, detail = {}) {\n if (element) {\n const event = new CustomEvent(eventName, { detail });\n element.dispatchEvent(event);\n }\n}\n\n// \u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u0443\u0435\u043C \u043E\u0431\u044A\u0435\u043A\u0442 \u0441\u043E \u0432\u0441\u0435\u043C\u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u044F\u043C\u0438 \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0442\u043D\u043E\u0439 \u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C\u043E\u0441\u0442\u0438\nexport default {\n addEventListener,\n removeEventListener,\n dispatchCustomEvent\n};\n", "import moment from \"moment\";\n\n/**\n * @constant {Object} DATETIME_FORMATS\n * @description \u0412\u0441\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435 \u0444\u043E\u0440\u043C\u0430\u0442\u044B \u0434\u0430\u0442 \u0438 \u0432\u0440\u0435\u043C\u0435\u043D\u0438.\n */\nexport const DATETIME_FORMATS = Object.freeze({\n // \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 \u0444\u043E\u0440\u043C\u0430\u0442\u044B\n DATE_FORMAT: \"YYYY-MM-DD\", // \u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u0434\u0430\u0442\u044B\n DATE_WITHOUT_SEPARATORS: \"MMDDYYYY\", // \u0411\u0435\u0437 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u0435\u0439\n VALIDATION_DATE_FORMAT: \"MM/DD/YYYY\", // \u0414\u043B\u044F \u0432\u0430\u043B\u0438\u0434\u0430\u0446\u0438\u0438\n INPUT_DATE_FORMAT: \"MM.DD.YYYY\", // \u0424\u043E\u0440\u043C\u0430\u0442 \u0434\u043B\u044F \u0432\u0432\u043E\u0434\u0430\n INPUT_TIME_FORMAT: \"YYYY-MM-DD HH:mm:SS\", // \u0412\u0432\u043E\u0434 \u0432\u0440\u0435\u043C\u0435\u043D\u0438\n TIME_FORMAT_WSPACE: \"YYYY-MM-DD HH:mm:SS\", // \u0412\u0440\u0435\u043C\u044F \u0441 \u043F\u0440\u043E\u0431\u0435\u043B\u043E\u043C\n TIME_FORMAT: \"YYYY-MM-DDTHH:mm:SS\", // \u0412\u0440\u0435\u043C\u044F \u0441 T (ISO \u0444\u043E\u0440\u043C\u0430\u0442)\n DATE_FORMAT_WITH_SLASH: \"MM/DD/YYYY\", // \u0414\u0430\u0442\u0430 \u0441 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u0435\u043C /\n\n // \u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0444\u043E\u0440\u043C\u0430\u0442\u044B\n DATE_WITH_DASHES: \"MM-DD-YYYY\", // \u0414\u0430\u0442\u0430 \u0441 \u0434\u0435\u0444\u0438\u0441\u0430\u043C\u0438\n DATE_WITH_DOTS: \"DD.MM.YYYY\", // \u0414\u0430\u0442\u0430 \u0441 \u0442\u043E\u0447\u043A\u0430\u043C\u0438\n DATE_WITH_COMMA: \"DD,MM,YYYY\", // \u0414\u0430\u0442\u0430 \u0441 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438\n FULL_DATE_TIME: \"YYYY-MM-DD HH:mm:ss\", // \u041F\u043E\u043B\u043D\u0430\u044F \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F\n ISO_DATE_TIME: \"YYYY-MM-DDTHH:mm:ss.SSSZ\", // ISO \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442 \u0441 \u043C\u0438\u043B\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0430\u043C\u0438\n LOCALIZED_DATE: \"MMMM DD, YYYY\", // \u041B\u043E\u043A\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u0441 \u043F\u043E\u043B\u043D\u044B\u043C \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435\u043C \u043C\u0435\u0441\u044F\u0446\u0430\n SHORT_DATE: \"MM/DD/YY\", // \u041A\u0440\u0430\u0442\u043A\u0430\u044F \u0434\u0430\u0442\u0430\n SHORT_DATE_WITH_TIME: \"MM/DD/YY HH:mm\", // \u041A\u0440\u0430\u0442\u043A\u0430\u044F \u0434\u0430\u0442\u0430 \u0441 \u0432\u0440\u0435\u043C\u0435\u043D\u0435\u043C\n TIME_24H: \"HH:mm\", // \u0412\u0440\u0435\u043C\u044F \u0432 24-\u0447\u0430\u0441\u043E\u0432\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435\n TIME_12H: \"hh:mm A\", // \u0412\u0440\u0435\u043C\u044F \u0432 12-\u0447\u0430\u0441\u043E\u0432\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435\n TIME_12H_WITH_SECONDS: \"hh:mm:ss A\", // \u0412\u0440\u0435\u043C\u044F \u0432 12-\u0447\u0430\u0441\u043E\u0432\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \u0441 \u0441\u0435\u043A\u0443\u043D\u0434\u0430\u043C\u0438\n TIME_24H_WITH_SECONDS: \"HH:mm:ss\", // \u0412\u0440\u0435\u043C\u044F \u0432 24-\u0447\u0430\u0441\u043E\u0432\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \u0441 \u0441\u0435\u043A\u0443\u043D\u0434\u0430\u043C\u0438\n MONTH_DAY: \"MM/DD\", // \u0422\u043E\u043B\u044C\u043A\u043E \u043C\u0435\u0441\u044F\u0446 \u0438 \u0434\u0435\u043D\u044C\n YEAR_MONTH_DAY: \"YYYY/MM/DD\", // \u0413\u043E\u0434/\u041C\u0435\u0441\u044F\u0446/\u0414\u0435\u043D\u044C\n});\n\nconst formatMap = Object.freeze({\n [DATETIME_FORMATS.DATE_FORMAT]: \"YYYY-MM-DD\", // \u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u0434\u0430\u0442\u044B\n [DATETIME_FORMATS.DATE_WITHOUT_SEPARATORS]: \"MMDDYYYY\", // \u0411\u0435\u0437 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u0435\u0439\n [DATETIME_FORMATS.VALIDATION_DATE_FORMAT]: \"MM/DD/YYYY\", // \u0414\u043B\u044F \u0432\u0430\u043B\u0438\u0434\u0430\u0446\u0438\u0438\n [DATETIME_FORMATS.INPUT_DATE_FORMAT]: \"MM.DD.YYYY\", // \u0424\u043E\u0440\u043C\u0430\u0442 \u0434\u043B\u044F \u0432\u0432\u043E\u0434\u0430\n [DATETIME_FORMATS.INPUT_TIME_FORMAT]: \"YYYY-MM-DD HH:mm:SS\", // \u0412\u0432\u043E\u0434 \u0432\u0440\u0435\u043C\u0435\u043D\u0438\n [DATETIME_FORMATS.TIME_FORMAT_WSPACE]: \"YYYY-MM-DD HH:mm:SS\", // \u0412\u0440\u0435\u043C\u044F \u0441 \u043F\u0440\u043E\u0431\u0435\u043B\u043E\u043C\n [DATETIME_FORMATS.TIME_FORMAT]: \"YYYY-MM-DDTHH:mm:SS\", // \u0412\u0440\u0435\u043C\u044F \u0441 T (ISO \u0444\u043E\u0440\u043C\u0430\u0442)\n [DATETIME_FORMATS.DATE_FORMAT_WITH_SLASH]: \"MM/DD/YYYY\", // \u0414\u0430\u0442\u0430 \u0441 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u0435\u043C /\n [DATETIME_FORMATS.DATE_WITH_DASHES]: \"MM-DD-YYYY\", // \u0414\u0430\u0442\u0430 \u0441 \u0434\u0435\u0444\u0438\u0441\u0430\u043C\u0438\n [DATETIME_FORMATS.DATE_WITH_DOTS]: \"DD.MM.YYYY\", // \u0414\u0430\u0442\u0430 \u0441 \u0442\u043E\u0447\u043A\u0430\u043C\u0438\n [DATETIME_FORMATS.DATE_WITH_COMMA]: \"DD,MM,YYYY\", // \u0414\u0430\u0442\u0430 \u0441 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438\n [DATETIME_FORMATS.FULL_DATE_TIME]: \"YYYY-MM-DD HH:mm:ss\", // \u041F\u043E\u043B\u043D\u0430\u044F \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F\n [DATETIME_FORMATS.ISO_DATE_TIME]: \"YYYY-MM-DDTHH:mm:ss.SSSZ\", // ISO \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442 \u0441 \u043C\u0438\u043B\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0430\u043C\u0438\n [DATETIME_FORMATS.LOCALIZED_DATE]: \"MMMM DD, YYYY\", // \u041B\u043E\u043A\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u0441 \u043F\u043E\u043B\u043D\u044B\u043C \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435\u043C \u043C\u0435\u0441\u044F\u0446\u0430\n [DATETIME_FORMATS.SHORT_DATE]: \"MM/DD/YY\", // \u041A\u0440\u0430\u0442\u043A\u0430\u044F \u0434\u0430\u0442\u0430\n [DATETIME_FORMATS.SHORT_DATE_WITH_TIME]: \"MM/DD/YY HH:mm\", // \u041A\u0440\u0430\u0442\u043A\u0430\u044F \u0434\u0430\u0442\u0430 \u0441 \u0432\u0440\u0435\u043C\u0435\u043D\u0435\u043C\n [DATETIME_FORMATS.TIME_24H]: \"HH:mm\", // \u0412\u0440\u0435\u043C\u044F \u0432 24-\u0447\u0430\u0441\u043E\u0432\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435\n [DATETIME_FORMATS.TIME_12H]: \"hh:mm A\", // \u0412\u0440\u0435\u043C\u044F \u0432 12-\u0447\u0430\u0441\u043E\u0432\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435\n [DATETIME_FORMATS.TIME_12H_WITH_SECONDS]: \"hh:mm:ss A\", // \u0412\u0440\u0435\u043C\u044F \u0432 12-\u0447\u0430\u0441\u043E\u0432\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \u0441 \u0441\u0435\u043A\u0443\u043D\u0434\u0430\u043C\u0438\n [DATETIME_FORMATS.TIME_24H_WITH_SECONDS]: \"HH:mm:ss\", // \u0412\u0440\u0435\u043C\u044F \u0432 24-\u0447\u0430\u0441\u043E\u0432\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \u0441 \u0441\u0435\u043A\u0443\u043D\u0434\u0430\u043C\u0438\n [DATETIME_FORMATS.MONTH_DAY]: \"MM/DD\", // \u0422\u043E\u043B\u044C\u043A\u043E \u043C\u0435\u0441\u044F\u0446 \u0438 \u0434\u0435\u043D\u044C\n [DATETIME_FORMATS.YEAR_MONTH_DAY]: \"YYYY/MM/DD\", // \u0413\u043E\u0434/\u041C\u0435\u0441\u044F\u0446/\u0414\u0435\u043D\u044C\n});\n\n/**\n * @constant {Object} DATE_UNITS\n * @description \u0415\u0434\u0438\u043D\u0438\u0446\u044B \u0432\u0440\u0435\u043C\u0435\u043D\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u044B \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0442\u044B \u0441 \u0434\u0430\u0442\u0430\u043C\u0438.\n */\nexport const DATE_UNITS = Object.freeze({\n YEARS: Object.freeze({\n YEARS: \"years\",\n YEAR: \"year\",\n Y: \"y\",\n TEMPLATE: \"YYYY\",\n }),\n\n MONTHS: Object.freeze({\n MONTHS: \"months\",\n MONTH: \"month\",\n MON: \"M\",\n TEMPLATE: \"MM\",\n }),\n\n DAYS: Object.freeze({\n DAYS: \"days\",\n DAY: \"day\",\n D: \"d\",\n TEMPLATE: \"DD\",\n }),\n\n HOURS: Object.freeze({\n HOURS: \"hours\",\n HOUR: \"hour\",\n H: \"h\",\n TEMPLATE: \"HH\",\n }),\n\n WEEKS: Object.freeze({\n WEEKS: \"weeks\",\n WEEK: \"week\",\n W: \"w\",\n }),\n\n QUARTERS: Object.freeze({\n QUARTERS: \"quarters\",\n QUARTER: \"quarter\",\n Q: \"Q\",\n }),\n\n MINUTES: Object.freeze({\n MINUTES: \"minutes\",\n MINUTE: \"minute\",\n MIN: \"m\",\n }),\n\n SECONDS: Object.freeze({\n SECONDS: \"seconds\",\n SECOND: \"second\",\n S: \"s\",\n }),\n\n MILLISECONDS: Object.freeze({\n MILLISECONDS: \"milliseconds\",\n MILLISECOND: \"millisecond\",\n MS: \"ms\",\n }),\n});\n\n/**\n * \u0424\u0443\u043D\u043A\u0446\u0438\u044F \u0434\u043B\u044F \u043F\u0430\u0440\u0441\u0438\u043D\u0433\u0430 \u0438 \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u0442\u0440\u043E\u043A\u0438 \u0441 \u0434\u0430\u0442\u043E\u0439 \u0432 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442.\n *\n * @param {string} value - \u0421\u0442\u0440\u043E\u043A\u0430 \u0441 \u0434\u0430\u0442\u043E\u0439, \u043A\u043E\u0442\u043E\u0440\u0443\u044E \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0440\u0430\u0441\u043F\u0430\u0440\u0441\u0438\u0442\u044C \u0438 \u043E\u0442\u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C.\n * @param {string} [outputFormat=DATETIME_FORMATS.INPUT_DATE_FORMAT] - \u0424\u043E\u0440\u043C\u0430\u0442, \u0432 \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0431\u0443\u0434\u0435\u0442 \u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0430 \u0434\u0430\u0442\u0430.\n * \u0415\u0441\u043B\u0438 \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0444\u043E\u0440\u043C\u0430\u0442 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E `MM.DD.YYYY`.\n *\n * @returns {string} - \u041E\u0442\u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0430\u044F \u0434\u0430\u0442\u0430 \u0432 \u0441\u0442\u0440\u043E\u043A\u043E\u0432\u043E\u043C \u0432\u0438\u0434\u0435, \u0438\u043B\u0438 \u0438\u0441\u0445\u043E\u0434\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430, \u0435\u0441\u043B\u0438 \u0434\u0430\u0442\u0430 \u043D\u0435 \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u0430.\n *\n * @throws {Error} - \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u0430\u0442\u044B \u043D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E (\u043D\u0435 \u0441\u0442\u0440\u043E\u043A\u0430 \u0438\u043B\u0438 \u043F\u0443\u0441\u0442\u043E\u0435).\n */\nexport function parseAndFormatDate(\n value,\n outputFormat = DATETIME_FORMATS.INPUT_DATE_FORMAT,\n) {\n if (!value || typeof value !== \"string\") return value;\n\n for (let format in formatMap) {\n const parsedDate = moment(value, formatMap[format], true);\n if (parsedDate.isValid()) {\n return parsedDate.format(outputFormat);\n }\n }\n\n return value;\n}\n", "import { getSafelyValue } from \"./../fieldValueFormatters\";\n\nconst DEFAULT_CODE = \"en\";\n\nexport default function createTranslator({ ...langCatalogs }) {\n const loc = {\n ...langCatalogs,\n };\n\n let code = window.localStorage.getItem(\"lng\");\n if (!code)\n code = window.navigator\n ? window.navigator.language.split(\"-\")[0]\n : DEFAULT_CODE;\n if (!loc[code]) code = DEFAULT_CODE;\n\n return function (text, values) {\n const safelyValues = values ?? {};\n const safelyText = getSafelyValue(text);\n let translatedText =\n loc[code] && loc[code][safelyText] ? loc[code][safelyText] : safelyText;\n\n if (Object?.keys(safelyValues)?.length) {\n for (const key in values) {\n const regex = new RegExp(`%${key}%`, \"g\");\n translatedText = translatedText?.replace(regex, values[key]);\n }\n }\n\n return translatedText;\n };\n}\n", "import React, { useEffect, useState } from \"react\";\n\nimport ReactDOM from \"react-dom\";\n\nconst Portal = ({ children, parentSelector }) => {\n const [container] = useState(() => document.createElement(\"div\"));\n useEffect(() => {\n let parent;\n\n if (parentSelector) parent = document.querySelector(parentSelector);\n else parent = document.body;\n parent?.appendChild(container);\n\n return () => {\n parent?.removeChild(container);\n };\n }, []);\n\n return ReactDOM.createPortal(children, container);\n};\n\nexport default React.memo(Portal);\n", "import { useEffect } from \"react\";\n\nconst useBodyScrollLock = (isScrollBodyLocked) => {\n useEffect(() => {\n if (isScrollBodyLocked) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"auto\";\n }\n\n return () => {\n document.body.style.overflow = \"auto\";\n };\n }, [isScrollBodyLocked]);\n};\n\nexport default useBodyScrollLock;\n", "import { createRef, useEffect } from \"react\";\n\nexport default function useFieldsFocus({ form, setForm }) {\n const isFormAsObject = Boolean(\n typeof form === \"object\" && !Array.isArray(form),\n );\n\n const getField = (key) => {\n if (isFormAsObject) {\n return (\n form?.[key] ?? Object.values(form)?.find((field) => field.key === key)\n );\n } else {\n return form?.find((field) => field.key === key);\n }\n };\n\n const getErroredFields = () => {\n if (isFormAsObject) {\n return Object.values(form)?.filter((field) => field.error);\n } else {\n return form?.filter((f) => f?.error);\n }\n };\n\n const addRefsToFields = () => {\n if (isFormAsObject) {\n setForm((form) => {\n return Object.keys(form)?.reduce((result, key) => {\n const field = form[key];\n return {\n ...result,\n [key]: {\n ...field,\n ref: createRef(),\n wrapperRef: createRef(),\n },\n };\n }, {});\n });\n } else {\n setForm((form) => {\n return form?.map((field) => {\n field.ref = createRef();\n field.wrapperRef = createRef();\n\n return field;\n });\n });\n }\n };\n\n const toggleFieldFocus = ({ field, action = \"focus\" }) => {\n if (!field || !field?.ref) return null;\n\n setTimeout(() => {\n field.ref.current\n ?.querySelector(field?.focusSelector || \"input\")\n ?.[action]();\n }, 50);\n };\n\n const setFocusTo = (key) => {\n const field = getField(key);\n if (!field) return false;\n\n toggleFieldFocus({ field });\n };\n const setFocusToErroredField = () => {\n const field = getErroredFields()?.[0];\n if (!field) return false;\n\n toggleFieldFocus({ field });\n };\n\n useEffect(() => {\n addRefsToFields();\n }, [form?.length]);\n\n return {\n setFocusTo,\n setFocusToErroredField,\n };\n}\n", "// eslint-disable-next-line no-unused-vars\nimport { createRef, useEffect, useState } from \"react\";\n\nimport ArrayWithObjects from \"./form-drivers/ArrayWithObjects\";\nimport ObjectWithIterableObjects from \"./form-drivers/ObjectWithIterableObjects\";\nimport ObjectWithNamedKeyObjects from \"./form-drivers/ObjectWithNamedKeyObjects\";\nimport General from \"./functions/General\";\nimport RenderFields from \"./functions/RenderFields\";\n\nconst DefaultFocusControllerProps = {\n setAutoFocus: true,\n onlyEmptyFieldAutoFocus: false,\n};\n\nexport default function useFormTools({\n form,\n setForm,\n FormType,\n FormFields,\n FormDataDriverName = \"ArrayWithObjects\" ||\n \"ObjectWithIterableObjects\" ||\n \"ObjectWithNamedKeyObjects\",\n FormDataDriver = null,\n FocusControllerProps = DefaultFocusControllerProps,\n goToNextFieldOnEnterPressed = true,\n} = {}) {\n FocusControllerProps = {\n ...DefaultFocusControllerProps,\n ...FocusControllerProps,\n };\n\n const FormDataDrivers = {\n ArrayWithObjects: {\n handlers: ArrayWithObjects,\n default: true,\n },\n ObjectWithIterableObjects: {\n handlers: ObjectWithIterableObjects,\n },\n ObjectWithNamedKeyObjects: {\n handlers: ObjectWithNamedKeyObjects,\n },\n };\n\n const getFormDataDriver = (name) => {\n return (\n FormDataDriver ||\n FormDataDrivers[name]?.handlers ||\n Object.values(FormDataDrivers).find((df) => df.default === true)\n ?.handlers ||\n (() => ({}))\n );\n };\n const getFormDataDriverInstance = (name, ...args) => {\n return getFormDataDriver(name)(...args);\n };\n\n const { getFieldClassName, updateFormField } = General();\n\n const {\n getFieldData,\n getFormField,\n setFormFields,\n setFormField,\n getFormFieldsAsArray,\n getFormFieldsKeys,\n removeAllFormFields,\n removeFormField,\n removeFormFields,\n } = getFormDataDriverInstance(FormDataDriverName, {\n form,\n setForm,\n FormFields,\n });\n\n ///////////////////////////////////////////////////////////////\n //--- OnChange Observer ---//--- START ---//\n const [onChangeObservers, setOnChangeObservers] = useState({});\n const addOnChangeObserver = (key, cb) => {\n let observerId = null;\n\n setOnChangeObservers((state) => {\n //Set Default Value\n if (!state[key]) state[key] = {};\n\n observerId = state[key].length;\n\n state[key][observerId] = cb;\n\n return state;\n });\n\n return observerId;\n };\n const removeOnChangeObserver = (key, id) => {\n setOnChangeObservers((state) => {\n //Set Default Value\n if (!state[key]) return state;\n\n state[key] = Object.keys(state)\n .filter((cbId) => cbId !== id)\n .map((cbId) => state[key][cbId]);\n\n return state;\n });\n };\n const onChangeObserver = (key, value) => {\n if (!onChangeObservers[key] || typeof onChangeObservers[key] !== \"object\")\n return;\n\n const Observers = onChangeObservers[key];\n\n Object.values(Observers).map((cb) => {\n cb({ value, form });\n return null;\n });\n };\n const onFieldChange = (key, value) => {\n if (value === getFormField(key)?.value) return false;\n\n onChangeObserver(key, value);\n setFormField(\n (field) => ({\n ...field,\n error: \"\",\n value,\n }),\n key,\n );\n };\n //--- OnChange Observer ---//--- END ---//\n\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n\n //--- Form Submit Blocker ---//--- START ---//\n const [formSubmitBlockers, setFormSubmitBlockers] = useState([]);\n const toggleFormSubmitBlock = (key, value) => {\n setFormSubmitBlockers((state) =>\n state.includes(key) || !value\n ? [...state.filter((k) => k !== key)]\n : [...state, key],\n );\n };\n const clearFormSubmitBlockers = () => setFormSubmitBlockers([]);\n //--- Form Submit Blocker ---//--- END ---//\n\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n\n //--- Property Observer Blocker ---//--- START ---//\n // const [propertyObservers, setPropertyObservers] = useState({});\n // function addPropertyObserver () {\n // };\n //--- Property Observer Blocker ---//--- END ---//\n\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n\n //--- Render Fields Controller ---//--- START ---//\n const [isFormFieldsAdded, setIsFormFieldsAdded] = useState(false);\n const [renderFormFields, setRenderFormFieldsState] = useState([]);\n const setRenderFormFields = (data) => {\n setIsFormFieldsAdded(true);\n // eslint-disable-next-line no-use-before-define\n removeRenderFields(renderFormFields);\n // eslint-disable-next-line no-use-before-define\n resetIsInitFocused();\n setRenderFormFieldsState(data);\n };\n const addRenderFields = (fields) => {\n setRenderFormFieldsState((state) => [...state, ...fields]);\n };\n const removeRenderFields = (fields) => {\n setRenderFormFieldsState((state) =>\n state.filter((field) => !fields.includes(field)),\n );\n };\n\n const [isFormRendered, setIsFormRendered] = useState(false);\n const submitIsFormRendered = () => setIsFormRendered(true);\n const resetIsFormRendered = () => setIsFormRendered(false);\n\n const onEnterDown = async (e) => {\n if (!goToNextFieldOnEnterPressed) return false;\n\n const focusable = document.querySelectorAll(\n 'a, button, input, [tabindex]:not([tabindex=\"-1\"])',\n );\n const currentIndex = await new Promise((resolve) => {\n focusable.forEach((node, i) => {\n if (node === e.target) resolve(i);\n });\n });\n\n if (!currentIndex) return false;\n\n const nextIndex = currentIndex + 1;\n\n if (nextIndex >= focusable.length) return false;\n\n const nextItem = focusable[nextIndex];\n\n nextItem.focus();\n };\n\n const onKeyDown = (...args) => {\n const event = args.reduce((e, item) => {\n if (item?.nativeEvent instanceof KeyboardEvent) return item;\n return e;\n }, null);\n\n if (!event) return false;\n\n const { keyCode } = event;\n\n switch (keyCode) {\n //OnEnterDown\n case 13:\n onEnterDown(event);\n break;\n\n default:\n break;\n }\n };\n\n //On Type Change\n useEffect(() => {\n resetIsFormRendered();\n }, [FormType]);\n\n //On Render Fields Change\n useEffect(() => {\n if (isFormFieldsAdded) resetIsFormRendered(false);\n\n //Add Form Fields\n if (renderFormFields.length !== 0) {\n setFormFields((fields) => {\n return renderFormFields.reduce((result, key) => {\n const fieldData = getFieldData(key);\n const field = getFormField(key) ? getFormField(key) : fieldData;\n\n if (\n !field?.className ||\n field?.className?.indexOf(getFieldClassName(key, FormType)) === -1\n ) {\n field.className = `${field?.className} ${getFieldClassName(key, FormType)}`;\n }\n\n if (typeof fieldData?.label === \"object\") {\n field.label = fieldData.label[FormType] || fieldData.label.default;\n }\n\n field.ref = createRef();\n field.wrapperRef = createRef();\n\n field.isValueChangedByUser = false;\n\n if (goToNextFieldOnEnterPressed) {\n const onKeyDownProp = field.onKeyDown || (() => {});\n field.onKeyDown = (...args) => {\n onKeyDown(...args);\n onKeyDownProp(...args);\n };\n }\n\n //Is Field Value Changed By USER\n // eslint-disable-next-line no-use-before-define\n addOnFieldRenderedObserver(\n key,\n () => {\n const element = getFormField(key)?.ref?.current?.querySelector(\n field?.focusSelector || \"input\",\n );\n const handler = () =>\n setFormField({ isValueChangedByUser: true }, key);\n\n element?.addEventListener(\"paste\", handler, { once: true });\n element?.addEventListener(\"keypress\", handler, { once: true });\n },\n true,\n );\n\n return updateFormField(result, field, key);\n }, fields);\n });\n }\n }, [renderFormFields]);\n\n const [onFormRenderObservers, setOnFormRenderObservers] = useState([]);\n const addOnFormRenderObserver = (cb, { once = false } = {}) => {\n setOnFormRenderObservers((state) => [\n ...state,\n { cb, once, isWorkedOut: false },\n ]);\n };\n // eslint-disable-next-line no-unused-vars\n const updateOnFormRenderObserver = (key, data) => {\n setOnFormRenderObservers((state) => {\n const copy = [...state];\n copy[key] = { ...state[key], ...data };\n\n return copy;\n });\n };\n const removeOnFormRenderObserver = (key) => {\n setOnFormRenderObservers((state) =>\n state.slice().filter((v, i) => i !== key),\n );\n };\n const onFormRenderWorker = () => {\n // eslint-disable-next-line default-param-last\n onFormRenderObservers.map(\n ({ once, isWorkedOut, cb = () => {} } = {}, key) => {\n if (once && isWorkedOut) return null;\n\n cb(form);\n if (once) removeOnFormRenderObserver(key);\n else updateOnFormRenderObserver(key, { isWorkedOut: true });\n return null;\n },\n );\n };\n\n //On Form Rendered\n useEffect(() => {\n if (!isFormRendered && onFormRenderObservers.length) {\n const formFieldsKeys = getFormFieldsKeys(form);\n const isAllFieldsRendered = renderFormFields.reduce((result, key) => {\n if (!formFieldsKeys.includes(key)) result = false;\n\n return result;\n }, true);\n\n if (isAllFieldsRendered) {\n submitIsFormRendered(true);\n onFormRenderWorker();\n }\n }\n }, [form, renderFormFields, onFormRenderObservers]);\n //--- Render Fields Controller ---//--- END ---//\n\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n\n //--- HIGHTLIGHT LABELS IF FIELD WITH ERROR ---//--- START ---//\n const hightliteErrorLabels = () => {\n const fields = getFormFieldsAsArray();\n\n const filtered = fields?.reduce((result, field) => {\n if (field?.errorLabelHightlite) {\n // eslint-disable-next-line no-use-before-define\n result.push({\n ...field,\n className: getFieldClassName(field?.key, FormType),\n });\n }\n\n return result;\n }, []);\n\n filtered?.map((field) => {\n const formField = document.querySelector(`.${field?.className}`);\n\n if (!formField) return null;\n\n formField.classList.remove(\"errorLabelHightlite\");\n\n if (field?.error) {\n formField.classList.add(\"errorLabelHightlite\");\n }\n\n return null;\n });\n };\n useEffect(() => {\n hightliteErrorLabels();\n }, [form]);\n //--- HIGHTLIGHT LABELS IF FIELD WITH ERROR ---//--- END ---//\n\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n\n //--- Fields Focus Controller ---//--- START ---//\n const [isInitFocused, setIsInitFocused] = useState(false);\n const [autoFocusedField, setAutoFocusedField] = useState(null);\n\n const setFirstFieldInitFocused = () => setIsInitFocused(true);\n const resetIsInitFocused = () => setIsInitFocused(false);\n\n const toggleFieldFocus = (\n { key, cb = () => {}, form: argForm, field },\n action = \"focus\",\n ) => {\n if (!key && !field) return null;\n\n if (!argForm) argForm = form;\n\n const formField = field || getFormField(key, argForm);\n\n if (!formField || !formField.ref) {\n return false;\n }\n\n if (\n action === \"focus\" &&\n FocusControllerProps.onlyEmptyFieldAutoFocus &&\n Boolean(formField?.value)\n )\n return null;\n\n setTimeout(() => {\n formField.ref.current\n ?.querySelector(formField?.focusSelector || \"input\")\n ?.[action]();\n cb();\n }, 50);\n };\n\n const setFieldFocus = ({ key, cb = () => {}, form: argForm, field }) =>\n toggleFieldFocus({ key, cb, form: argForm, field }, \"focus\");\n const setFieldBlur = ({ key, cb = () => {}, form: argForm, field }) =>\n toggleFieldFocus({ key, cb, form: argForm, field }, \"blur\");\n\n const setFirstFieldFocus = () => {\n let field = null;\n\n for (let i = 0; i < renderFormFields.length && !field; ++i) {\n const key = renderFormFields[i];\n const tmpField = getFormField(key);\n if (tmpField && !tmpField?.disabled) field = tmpField;\n }\n\n if (!field) return false;\n\n if (FocusControllerProps.onlyEmptyFieldAutoFocus && Boolean(field?.value)) {\n setFirstFieldInitFocused();\n return false;\n }\n\n setAutoFocusedField(field.key);\n\n const callback = () => {\n setFormField({ value: field.value }, field.key);\n setFirstFieldInitFocused();\n };\n\n setTimeout(() => setFieldFocus({ key: field.key, cb: callback, form }), 50);\n };\n\n const [onFieldFocusCallbacks, setOnFieldFocusCallbacks] = useState({});\n const addOnFieldFocusCallback = (key, cb) => {\n setOnFieldFocusCallbacks((state) => {\n const stateCopy = { ...state };\n\n if (!state[key]) stateCopy[key] = [];\n\n stateCopy[key].push(cb);\n\n return stateCopy;\n });\n };\n const callOnFieldFocusCallbacks = (key) => {\n if (!Array.isArray(onFieldFocusCallbacks[key])) return null;\n\n onFieldFocusCallbacks[key]?.map((cb) => cb());\n };\n\n const [focusOnRenderFields, setFocusOnRenderFields] = useState([]);\n const addFocusFieldOnRender = (key, cb) => {\n setFocusOnRenderFields((state) => [...state, key]);\n\n if (cb) addOnFieldFocusCallback(key, cb);\n };\n const removeFocusFieldOnRender = (key) => {\n setFocusOnRenderFields((state) => state.filter((field) => field !== key));\n };\n\n useEffect(() => {\n if (\n FocusControllerProps.setAutoFocus &&\n !isInitFocused &&\n !autoFocusedField &&\n isFormRendered\n )\n setFirstFieldFocus();\n\n if (focusOnRenderFields.length) {\n getFormFieldsKeys(form)?.map((key) => {\n if (\n focusOnRenderFields.includes(key) &&\n getFormField(key)?.value?.length === 0\n ) {\n const cb = () => {\n removeFocusFieldOnRender(key);\n callOnFieldFocusCallbacks(key);\n };\n\n setFieldFocus({ key, form, cb });\n }\n return null;\n });\n }\n }, [form, focusOnRenderFields, isInitFocused, isFormRendered]);\n\n useEffect(() => {\n setAutoFocusedField(null);\n }, [isInitFocused]);\n\n useEffect(() => {\n resetIsInitFocused();\n }, [FormType]);\n\n //Remove Focus From Autocomplete field !!! TODO\n // useEffect(() => {\n // if (!autoFocusedField) return null;\n // const field = getFormField(autoFocusedField);\n\n // if (field?.value !== '' && !field?.isValueChangedByUser) {\n // setFieldBlur({key: autoFocusedField, form});\n // }\n // }, [autoFocusedField, form]);\n //--- Fields Focus Controller ---//--- END ---//\n\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n\n //--- OnFieldRendered Observer ---//--- START ---//\n const [onFieldRenderedObservers, setOnFieldRenderedObservers] = useState({});\n const [isFieldObserversReset, setIsFieldObserversReset] = useState(false);\n\n const resetOnFieldRenderObserversWorkedOut = () => {\n if (!isFieldObserversReset && renderFormFields.length) {\n renderFormFields.map((key) => {\n setFormField({ isOnRenderObserversWorkedOut: false }, key);\n return key;\n });\n setIsFieldObserversReset(true);\n }\n };\n const addOnFieldRenderedObserver = (key, cb, isOnceCallable = true) => {\n let observerId = null;\n\n setOnFieldRenderedObservers((state) => {\n //Set Default Value\n if (!state[key]) state[key] = {};\n\n observerId = Object.keys(state[key]).length || 0;\n\n state[key][observerId] = {\n f: cb,\n isOnceCallable,\n };\n\n return state;\n });\n\n return observerId;\n };\n const updateOnFieldRenderedObserver = (key, id, data) => {\n setOnFieldRenderedObservers((state) => {\n //Set Default Value\n if (!state[key]) return state;\n\n state[key][id] = {\n ...state[key][id],\n ...data,\n };\n\n return state;\n });\n };\n const removeOnFieldRenderedObserver = (key, id) => {\n setOnFieldRenderedObservers((state) => {\n //Set Default Value\n if (!state[key]) return state;\n\n state[key] = Object.keys(state)\n .filter((cbId) => cbId !== id)\n .map((cbId) => state[key][cbId]);\n\n return state;\n });\n };\n const onFieldRenderedObserver = (key, data) => {\n if (\n !onFieldRenderedObservers[key] ||\n typeof onFieldRenderedObservers[key] !== \"object\"\n )\n return;\n\n const Observers = onFieldRenderedObservers[key];\n const FilteredObservers = Object.values(Observers).filter(\n (observer) => !observer?.isObserverWorkedOut,\n );\n\n if (FilteredObservers.length === 0) return null;\n\n setFormField({ isOnRenderObserversWorkedOut: true }, key);\n\n FilteredObservers.map(({ f, isOnceCallable }, id) => {\n f(data);\n if (isOnceCallable)\n updateOnFieldRenderedObserver(key, id, { isObserverWorkedOut: true });\n return null;\n });\n };\n const onRenderObserverWorker = () => {\n return getFormFieldsKeys(form)?.map((key) => {\n //OnFieldRendered\n const fieldData = getFormField(key);\n if (!fieldData?.isOnRenderObserversWorkedOut) {\n onFieldRenderedObserver(key, fieldData);\n return { key, isWorkedOut: true };\n }\n\n return { key, isWorkedOut: false };\n });\n };\n\n useEffect(() => {\n resetOnFieldRenderObserversWorkedOut();\n onRenderObserverWorker();\n }, [form]);\n\n useEffect(() => {\n setIsFieldObserversReset(false);\n }, [FormType]);\n //--- OnFieldRendered Observer ---//--- END ---//\n\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n\n //Detect What Changed || TRY TO DO\n // const compare = async (prev, current) => {\n // if (!prev) return current;\n\n // return new Promise((resolve) => {\n // Object.keys(current).reduce((result, key, i, arr) => {\n // //If PROPERTY is NOT EXISTS BEFORE\n // if ([null, undefined].includes(prev[key])) {\n // result[key] = current[key];\n // }\n // //If PROPERTY is AN OBJECT\n // else if (typeof current[key] === 'object') {\n // //If PROPERTY is EXISTS BEFORE\n // const innerCompare = compare(prev[key], current[key]);\n // // //If SOMETHING CHANGED\n // if (innerCompare?.length) result[key] = innerCompare;\n // }\n // //If PROPERTY is AN SIMPLE VALUE and PROPERTY CHANGED\n // else if (prev[key] !== current[key]) {\n // result[key] = current[key];\n // }\n\n // if (i === arr.length-1) {\n // resolve(result);\n // }\n\n // return result;\n // }, {});\n // });\n // };\n\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n\n //--- WindowScrollController ---//--- START ---//\n const scrollToField = ({ key = null, field = null, form: argForm }) => {\n if (!key && !field) return false;\n if (!argForm) argForm = form;\n\n if (!field) field = getFormField(key, argForm);\n\n const wrapperRef = field?.wrapperRef || field?.ref;\n // eslint-disable-next-line no-unsafe-optional-chaining\n const { top: topOffset } = wrapperRef?.current?.getBoundingClientRect();\n const scrollTop =\n Math.abs(Math.abs(topOffset) - Math.abs(window.scrollY)) - 16;\n window.scrollTo({ top: scrollTop });\n };\n\n //--- WindowScrollController ---//--- END ---//\n\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n\n const addErrorsToForm = (errors, argForm = form) => {\n if (!argForm) argForm = form;\n\n setFormFields((fields) => {\n return errors.reduce(\n (fields, { message: error, propertyPath: errKey }) => {\n return updateFormField(fields, { error }, errKey);\n },\n fields,\n );\n });\n };\n\n return {\n FormDataDrivers,\n\n //OnChangeObserver\n addOnChangeObserver,\n removeOnChangeObserver,\n onChangeObservers,\n\n //OnChangeHandler\n onFieldChange,\n\n //Form Submit Blocker\n toggleFormSubmitBlock,\n clearFormSubmitBlockers,\n isFormSubmitBlocked: Boolean(formSubmitBlockers.length),\n\n //Property Observers\n // addPropertyObserver,\n\n //Render Fields\n renderFormFields,\n setRenderFormFields,\n addRenderFields,\n removeRenderFields,\n\n getFieldClassName,\n\n //Field Focus Controller\n isInitFocused,\n setFirstFieldInitFocused,\n resetIsInitFocused,\n setFieldFocus,\n setFieldBlur,\n setFirstFieldFocus,\n autoFocusedField,\n\n addFocusFieldOnRender,\n removeFocusFieldOnRender,\n\n //Field Render Controller\n addOnFieldRenderedObserver,\n removeOnFieldRenderedObserver,\n onFieldRenderedObservers,\n\n updateFormField,\n addOnFormRenderObserver,\n submitIsFormRendered,\n resetIsFormRendered,\n renderFields: ({\n form: argForm = form,\n fields: argFields = renderFormFields,\n cols: argCols = 1,\n RenderFieldComponent,\n }) =>\n RenderFields({\n form: argForm,\n fields: argFields,\n cols: argCols,\n RenderFieldComponent,\n onFieldChange,\n FormDataDriver: getFormDataDriver(FormDataDriverName),\n }),\n\n scrollToField,\n\n getFieldData,\n getFormField,\n setFormFields,\n setFormField: (data, key) => setFormField(data, key),\n getFormFieldsAsArray,\n getFormFieldsKeys,\n removeAllFormFields,\n removeFormField,\n removeFormFields,\n addErrorsToForm,\n };\n}\n", "export default function General({ form, FormFields = [] } = {}) {\n const joinData = (...args) => {\n const [mainArg] = args;\n const MainArgProto = Array.isArray(mainArg)\n ? \"Array\"\n : typeof mainArg === \"object\"\n ? \"Object\"\n : undefined;\n const template = Array.isArray(mainArg)\n ? []\n : typeof mainArg === \"object\"\n ? {}\n : null;\n\n if (!template) return undefined;\n\n return args.reduce((result, item) => {\n if (MainArgProto === \"Array\") {\n if (Array.isArray(item)) {\n return [...result, ...item];\n } else {\n return [...result, item];\n }\n } else if (MainArgProto === \"Object\") {\n return { ...result, ...item };\n } else {\n return template;\n }\n }, template);\n };\n const getFieldData = (key) => {\n if (Array.isArray(FormFields)) {\n if (FormFields[key]) {\n return { ...FormFields[key] };\n } else {\n return { ...FormFields.find((f) => f.key === key) };\n }\n } else if (typeof FormFields === \"object\") {\n return (\n { ...FormFields[key] } || {\n ...Object.values(FormFields).find((f) => f.key === key),\n }\n );\n } else {\n return undefined;\n }\n };\n const getFormFields = (argForm = form) => {\n return argForm?.fields || argForm;\n };\n const getFormFieldsAsArray = (fields) => {\n if (Array.isArray(fields)) return fields;\n\n if (typeof fields === \"object\") {\n return Object.values(fields);\n }\n\n return fields;\n };\n const getFormFieldsKeys = (fields = getFormFields()) => {\n if (Array.isArray(fields)) return fields.map(({ key }) => key);\n\n if (typeof fields === \"object\") {\n return Object.values(fields).map(({ key }) => key);\n }\n\n return fields;\n };\n const popFormField = (fields, key) => {\n const result = { item: undefined, itemIndex: undefined };\n\n if (Array.isArray(fields)) {\n result.item = fields?.find((f) => f.key === key);\n result.itemIndex = result.item\n ? fields.findIndex((f) => f.key === key)\n : fields.length;\n } else if (typeof fields === \"object\") {\n result.item =\n fields[key] || Object.values(fields).find((f) => f.key === key);\n result.itemIndex = result.item\n ? fields[key]\n ? key\n : Object.values(fields).findIndex((f) => f.key === key)\n : key;\n }\n\n return result;\n };\n const updateFormField = (fields, data, key) => {\n const isFunction = typeof data === \"function\";\n //KEY is NULLable\n if (!key) {\n return data.key\n ? Object.values(fields).reduce((result, field, i) => {\n const index = fields[field.key] ? field.key : i;\n\n return {\n ...result,\n [index]:\n data.key === field.key\n ? isFunction\n ? data(field)\n : data\n : field,\n };\n }, {})\n : {\n ...fields,\n [fields.length || 0]: isFunction ? data({}) : data,\n };\n }\n\n const { item: field = data, itemIndex } = popFormField(fields, key);\n\n fields[itemIndex] = isFunction ? data(field || {}) : { ...field, ...data };\n\n return fields;\n };\n\n const getFieldClassName = (key, type) => {\n return `form-${type}_field-${key}`;\n };\n\n return {\n joinData,\n getFieldData,\n popFormField,\n updateFormField,\n getFormFields,\n getFormFieldsAsArray,\n getFieldClassName,\n getFormFieldsKeys,\n };\n}\n", "import General from \"../functions/General\";\n\nexport default function ArrayWithObjects({ form, setForm, FormFields }) {\n const {\n joinData,\n getFieldData,\n updateFormField,\n getFormFields,\n getFormFieldsAsArray,\n getFormFieldsKeys,\n } = General({\n FormFields,\n });\n\n const getFormField = (key, argForm = form) => {\n return getFormFields(argForm)?.find((f) => f.key === key);\n };\n const setFormFields = (data) => {\n const isFunction = typeof data === \"function\";\n setForm((state) => (isFunction ? data(state) : data));\n };\n const setFormField = (data, key = null) =>\n setFormFields((fields) => updateFormField(fields, data, key));\n\n const removeAllFormFields = () => setFormFields([]);\n\n return {\n joinData,\n getFieldData,\n getFormFields,\n getFormField,\n setFormFields,\n setFormField,\n getFormFieldsAsArray: (fields) =>\n getFormFieldsAsArray(fields || getFormFields()),\n getFormFieldsKeys: (fields) => getFormFieldsKeys(fields || getFormFields()),\n removeAllFormFields,\n };\n}\n", "export default function ObjectWithIterableObjects({\n form,\n setForm,\n FormFields,\n}) {\n const joinData = (...args) => {\n const [mainArg] = args;\n const MainArgProto = Array.isArray(mainArg)\n ? \"Array\"\n : typeof mainArg === \"object\"\n ? \"Object\"\n : undefined;\n const template = Array.isArray(mainArg)\n ? []\n : typeof mainArg === \"object\"\n ? {}\n : null;\n\n if (!template) return undefined;\n\n return args.reduce((result, item) => {\n if (MainArgProto === \"Array\") {\n if (Array.isArray(item)) {\n return [...result, ...item];\n } else {\n return [...result, item];\n }\n } else if (MainArgProto === \"Object\") {\n return { ...result, ...item };\n } else {\n return template;\n }\n }, template);\n };\n\n const getFieldData = (key) => {\n if (Array.isArray(FormFields)) {\n return FormFields[key] || FormFields.find((f) => f.key === key);\n } else if (typeof FormFields === \"object\") {\n return (\n FormFields[key] || Object.values(FormFields).find((f) => f.key === key)\n );\n } else {\n return undefined;\n }\n };\n const getFormFields = () => {\n return form.fields || form;\n };\n const getFormField = (key) => {\n // eslint-disable-next-line no-undef\n if (FormProto === \"Array\") {\n return getFormFields().find((field) => field.key === key);\n // eslint-disable-next-line no-undef\n } else if (FormProto === \"Object\") {\n return (\n Object.values(getFormFields()).find((field) => field.key === key) ||\n Object.keys(getFormFields()).reduce((result, field) => {\n if (field === key) result = getFormFields()[field];\n return result;\n }, {})\n );\n } else {\n return undefined;\n }\n };\n const setFormFields = (data) => {\n const isFunction = typeof data === \"function\";\n\n setForm((state) => {\n if (state.fields) {\n return {\n ...state,\n fields: isFunction ? data(state.fields) : data,\n };\n } else {\n return isFunction ? data(state) : data;\n }\n });\n };\n const setFormField = (data, key = null) => {\n const isFunction = typeof data === \"function\";\n\n setFormFields((fields) => {\n const pop = (fields, key) => {\n const result = { fields, item: undefined };\n\n result.item = fields[key] || fields.find((f) => f.key === key);\n\n if (!result.item) return result;\n\n if (Array.isArray(fields)) {\n const index = parseInt(key, 10);\n if (!isNaN(index)) {\n result.fields.splice(key, 1);\n } else {\n result.fields = result.fields.filter((f) => f.key !== key);\n }\n } else if (typeof fields === \"object\") {\n result.fields = Object.values(fields).reduce(\n (object, { key: fKey }) => {\n if (key !== fKey) {\n object[key] = fields[key];\n }\n return object;\n },\n {},\n );\n }\n\n return result;\n };\n const update = (fields) => {\n //KEY is NULLable\n if (!key) {\n return data.key\n ? Object.values(fields).reduce((result, field, i) => {\n const index = fields[field.key] ? field.key : i;\n\n return {\n ...result,\n [index]:\n data.key === field.key\n ? isFunction\n ? data(field)\n : data\n : field,\n };\n }, {})\n : {\n ...fields,\n [fields.length || 0]: isFunction ? data({}) : data,\n };\n }\n\n const { fields: filtered, item: field } = pop(fields, key);\n\n const updatedField = isFunction\n ? data(field || {})\n : { ...field, ...data };\n return joinData(\n filtered,\n fields[key] ? { [key]: updatedField } : updatedField,\n );\n };\n\n return update(fields);\n });\n };\n\n return {\n joinData,\n getFieldData,\n getFormFields,\n getFormField,\n setFormFields,\n setFormField,\n };\n}\n", "import General from \"../functions/General\";\n\nconst noop = () => {};\n\nexport default function ObjectWithNamedKeyObjects({\n form,\n setForm = noop,\n FormFields,\n} = {}) {\n const {\n joinData,\n getFieldData,\n updateFormField,\n getFormFields,\n getFormFieldsAsArray,\n getFormFieldsKeys,\n } = General({\n FormFields,\n });\n\n const getFormField = (key, argForm = form) => {\n return (\n Object.values(getFormFields(argForm))?.find(\n (field) => field?.key === key,\n ) ||\n Object.keys(getFormFields(argForm))?.reduce((result, field) => {\n if (field === key) result = getFormFields(argForm)[field];\n return result;\n }, null)\n );\n };\n const setFormFields = (data) => {\n const isFunction = typeof data === \"function\";\n\n setForm((state) => {\n if (state.fields) {\n return {\n ...state,\n fields: isFunction ? data(state.fields) : data,\n };\n } else {\n return isFunction ? data(state) : data;\n }\n });\n };\n const setFormField = (data, key = null) =>\n setFormFields((fields) => updateFormField(fields, data, key));\n\n const removeAllFormFields = () => setFormFields({});\n const removeFormField = (key) =>\n setFormFields((state) =>\n Object.keys(state)\n .filter((fKey) => fKey !== key)\n .reduce((obj, key) => ({ ...obj, [key]: state[key] }), {}),\n );\n const removeFormFields = ([...keys]) =>\n setFormFields((state) =>\n Object.keys(state)\n .filter((fKey) => !keys.includes(fKey))\n .reduce((obj, key) => ({ ...obj, [key]: state[key] }), {}),\n );\n\n return {\n joinData,\n getFieldData,\n getFormField,\n setFormFields,\n setFormField,\n getFormFields: () => getFormFields(form),\n getFormFieldsAsArray: () => getFormFieldsAsArray(getFormFields(form)),\n getFormFieldsKeys: () => getFormFieldsKeys(getFormFields(form)),\n removeAllFormFields,\n removeFormField,\n removeFormFields,\n };\n}\n", "const defaultRenderFieldComponent = () => {\n // eslint-disable-next-line no-console\n console.error(\"RenderFields: RenderFieldComponent Property is not recieved!\");\n return null;\n};\n\nconst defaultFormDataDriver = () => {\n // eslint-disable-next-line no-console\n console.error(\"RenderFields: FormDataDriver Property is not recieved!\");\n return null;\n};\n\nconst defaultOnFieldChange = () => {\n // eslint-disable-next-line no-console\n console.warn(\n \"RenderFields: Be careful, onFieldChange handler is not recieved!\",\n );\n return null;\n};\n\nconst defaultOnFieldBlur = () => {\n // eslint-disable-next-line no-console\n console.warn(\n \"RenderFields: Be careful, defaultOnFieldBlur handler is not recieved!\",\n );\n return null;\n};\n\nexport default function RenderFields({\n form,\n fields,\n cols = 1,\n FormDataDriver = defaultFormDataDriver,\n RenderFieldComponent = defaultRenderFieldComponent,\n onFieldChange = defaultOnFieldChange,\n onFieldBlur = defaultOnFieldBlur,\n} = {}) {\n const maxColumns = 6;\n const maxWidth = 12;\n\n const { getFormField } = FormDataDriver({ form });\n\n const getColumnsQty = () => {\n return cols > maxColumns ? maxColumns : cols;\n };\n\n const renderFormField = (key) => {\n try {\n const field = { ...getFormField(key), key };\n const { wrapperRef } = field;\n\n return (\n <div\n key={`render-field-wrapper-${key}`}\n id={`render-field-wrapper-${key}`}\n ref={\n wrapperRef\n ? typeof wrapperRef === \"function\"\n ? (node) => wrapperRef(node, key)\n : wrapperRef\n : null\n }\n >\n <RenderFieldComponent\n key={key}\n field={field}\n onChange={(value) => onFieldChange(key, value)}\n onBlur={(...args) => onFieldBlur(...args)}\n />\n </div>\n );\n } catch (e) {\n return null;\n }\n };\n\n const renderSingleColumn = () => {\n return fields.map(renderFormField);\n };\n const renderSplitColumns = () => {\n const fieldsLen = fields?.length || 0;\n const columnsQty =\n getColumnsQty() > fieldsLen ? fieldsLen : getColumnsQty();\n\n if (!columnsQty) return null;\n\n const parts = new Array(columnsQty).fill([]).map((v, i) => {\n const startIndex = (fieldsLen / columnsQty) * i;\n const endIndex = startIndex + fieldsLen / columnsQty;\n\n return fields.slice(startIndex, endIndex);\n });\n\n return (\n <div className=\"row\">\n {parts.map((part, i) => (\n <div\n key={`render-fields-row-${i}`}\n className={`col-12 col-lg-${parseInt(maxWidth / columnsQty, 10)}`}\n >\n {part.map(renderFormField)}\n </div>\n ))}\n </div>\n );\n };\n\n const render = cols === 1 ? renderSingleColumn : renderSplitColumns;\n\n return render();\n}\n", "import React, { useEffect, useState } from \"react\";\n\nimport { KEYBOARD_SERVICE_KEYS } from \"../Constants/index.constants\";\n\nexport const useInputHighlightError = ({\n value,\n blinkTime,\n isUseErrorsBlink,\n}) => {\n const DEFAULT_BLINK_TIME = 100;\n const [isToHighlightError, setIsToHighlightError] = useState(false);\n const [isAttemptToChange, setIsAttemptToChange] = useState(false);\n const [prevValue, setPreviousValue] = useState(value);\n\n function hasHighlightError(e) {\n const changedValue = `${value ?? \"\"}`;\n const previousValue = `${prevValue ?? \"\"}`;\n\n const short =\n previousValue.length <= changedValue.length\n ? previousValue\n : changedValue;\n const long =\n previousValue.length > changedValue.length ? previousValue : 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 = 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 useEffect(() => {\n if (isUseErrorsBlink && isAttemptToChange) {\n setIsAttemptToChange(null);\n setIsToHighlightError(true);\n setTimeout(() => {\n setIsToHighlightError(false);\n }, blinkTime || DEFAULT_BLINK_TIME);\n }\n }, [isAttemptToChange]);\n\n return {\n isToHighlightError,\n setPreviousValue,\n setIsToHighlightError,\n hasHighlightError,\n };\n};\n\nexport default useInputHighlightError;\n", "import { useState } from \"react\";\n\nconst useLocalStorage = (key, initialValue) => {\n const [storedValue, setStoredValue] = useState(() => {\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialValue;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log(error);\n return initialValue;\n }\n });\n\n const setValue = (value) => {\n try {\n const valueToStore =\n value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log(error);\n }\n };\n\n return [storedValue, setValue];\n};\nexport default useLocalStorage;\n", "import { useEffect, useState } from \"react\";\n\nexport default function useLocationParams() {\n const [params, setParams] = useState({});\n\n useEffect(() => {\n setParams((state) => {\n const arr = window.location.search?.replace(\"?\", \"\").split(\"&\");\n\n return {\n ...state,\n ...arr.reduce((obj, item) => {\n const keyVal = item.split(\"=\");\n const key = keyVal[0];\n const value = decodeURIComponent(keyVal[1]);\n\n return {\n ...obj,\n [key]: value,\n };\n }, {}),\n };\n });\n }, [window.location.search]);\n\n return params;\n}\n", "import { useSyncExternalStore } from \"react\";\n\nfunction subscribe(callback) {\n const observer = new ResizeObserver(() => callback());\n observer.observe(document.documentElement);\n return () => observer.disconnect();\n}\n\nconst useMediaQuery = (query) => {\n return useSyncExternalStore(\n subscribe,\n () => window.matchMedia(query).matches,\n () => false,\n );\n};\n\nexport default useMediaQuery;\n", "import { useEffect, useState } from \"react\";\n\nexport const useMetaInfo = () => {\n const [browser, setBrowser] = useState(\"Other\");\n const [device, setDevice] = useState(\"desktop\");\n const [isiOS, setIsiOS] = useState(false);\n const [chromeVersion, setChromeVersion] = useState(null);\n const [iOSVersion, setiOSVersion] = useState(null);\n\n useEffect(() => {\n const userAgent = navigator.userAgent;\n\n if (userAgent.indexOf(\"Chrome\") !== -1) {\n setBrowser(\"Chrome\");\n\n // \u0418\u0437\u0432\u043B\u0435\u0447\u0435\u043D\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 Chrome\n const version = userAgent.match(/Chrom(e|ium)\\/([0-9\\.]+)/)[2];\n setChromeVersion(version);\n } else if (userAgent.indexOf(\"Safari\") !== -1) setBrowser(\"Safari\");\n\n const iOSV = (\n (userAgent.match(/(CPU|iPhone).*OS (\\d+_?\\d*)|CPU like Mac OS X/i) ||\n [])[2] || \"0\"\n ).replace(\"_\", \".\");\n const iOSVersion = parseFloat(iOSV);\n\n setIsiOS(!isNaN(iOSVersion));\n if (!isNaN(iOSVersion)) {\n setiOSVersion(iOSV); // \u0417\u0430\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u043C \u0432\u0435\u0440\u0441\u0438\u044E iOS\n }\n\n if (\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n userAgent,\n )\n )\n setDevice(\"mobile\");\n }, []);\n\n return { browser, device, isiOS, chromeVersion, iOSVersion }; // \u0412\u043E\u0437\u0432\u0440\u0430\u0442 \u0432\u0435\u0440\u0441\u0438\u0439 Chrome \u0438 iOS\n};\n\nexport default useMetaInfo;\n", "import { useEffect } from \"react\";\n\nexport default function useMouseUpOutside(ref, setOut, open) {\n function handleMouseUpOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n setOut(open);\n }\n }\n\n useEffect(() => {\n document.addEventListener(\"mouseup\", handleMouseUpOutside);\n return () => {\n document.removeEventListener(\"mouseup\", handleMouseUpOutside);\n };\n }, [ref]);\n}\n", "import { useEffect, useState } from \"react\";\n\nconst useOnlineStatus = () => {\n function getOnlineStatus() {\n return typeof navigator !== \"undefined\" &&\n typeof navigator.onLine === \"boolean\"\n ? navigator.onLine\n : true;\n }\n const [onlineStatus, setOnlineStatus] = useState(getOnlineStatus());\n\n const goOnline = () => setOnlineStatus(true);\n\n const goOffline = () => setOnlineStatus(false);\n\n useEffect(() => {\n window.addEventListener(\"online\", goOnline);\n window.addEventListener(\"offline\", goOffline);\n\n return () => {\n window.removeEventListener(\"online\", goOnline);\n window.removeEventListener(\"offline\", goOffline);\n };\n }, []);\n\n return onlineStatus;\n};\n\nexport default useOnlineStatus;\n", "import React, { useState } from \"react\";\n\nimport cn from \"classnames\";\n\nexport default function usePasswordChecker({ label = \"Password must:\" } = {}) {\n const [checkRules, setCheckRules] = useState([]);\n const addCheckRule = (data) => setCheckRules((state) => [...state, data]);\n const handleCheckRule = (type, props = {}, value = \"\") => {\n const { min, max } = props;\n\n switch (type) {\n case \"len\":\n if (min && value.length < min) return false;\n if (max && value.length > max) return false;\n return true;\n\n case \"lowerCaseContains\": {\n const toUpperCase = value.slice().toUpperCase().split(\"\");\n const original = value.slice().split(\"\");\n\n return original.reduce((isMatch, char, i) => {\n if (char !== toUpperCase[i]) isMatch = true;\n\n return isMatch;\n }, false);\n }\n\n case \"upperCaseContains\": {\n const toLowerCase = value.slice().toLowerCase().split(\"\");\n const original = value.slice().split(\"\");\n\n return original.reduce((isMatch, char, i) => {\n if (char !== toLowerCase[i]) isMatch = true;\n\n return isMatch;\n }, false);\n }\n\n case \"numberContains\": {\n const original = value.slice().split(\"\");\n return original.reduce((isMatch, char) => {\n if (Number.isInteger(parseInt(char, 10))) isMatch = true;\n\n return isMatch;\n }, false);\n }\n\n case \"specialContains\": {\n const original = value.slice().split(\"\");\n return original.reduce((isMatch, char) => {\n if (!Number.isInteger(parseInt(char, 10)) && !char.match(/[a-z]/i))\n isMatch = true;\n\n return isMatch;\n }, false);\n }\n\n default:\n return false;\n }\n };\n const testCheckRules = (value) => {\n let result = true;\n\n setCheckRules((state) => {\n const rules = [...state];\n return rules.map((rule) => {\n const isMatch = handleCheckRule(rule.type, rule.props, value);\n if (!isMatch) result = false;\n\n return { ...rule, isMatch };\n });\n });\n\n return result;\n };\n\n const renderPasswordChecker = () => {\n return (\n <div className=\"password-checker\">\n <div className=\"password-checker__header\">\n <label className=\"password-checker__header-label\"> {label} </label>{\" \"}\n </div>{\" \"}\n <div className=\"password-checker__body\">\n {\" \"}\n {checkRules.map(({ icon, text, isMatch, key }) => (\n <div\n key={key}\n className={cn(\"password-checker__body-item\", {\n \"password-checker__body-item--match\":\n isMatch && isMatch !== null,\n \"password-checker__body-item--dont-match\":\n !isMatch && isMatch !== null,\n })}\n >\n <div className=\"password-checker__body-item__icon\"> {icon} </div>{\" \"}\n <div className=\"password-checker__body-item__text\"> {text} </div>{\" \"}\n </div>\n ))}{\" \"}\n </div>{\" \"}\n </div>\n );\n };\n\n return {\n addCheckRule,\n testCheckRules,\n renderPasswordChecker,\n };\n}\n", "import { useEffect, useRef } from \"react\";\n\nfunction usePrevious(value) {\n const ref = useRef();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nexport default usePrevious;\n", "import { useEffect, useRef, useState } from \"react\";\n\nconst useScrollTo = (reference) => {\n const ref = useRef(reference);\n const [shouldScrollTo, setShouldScrollTo] = useState(false);\n\n useEffect(() => {\n if (ref?.current && shouldScrollTo) {\n ref?.current?.scrollIntoView?.({ behavior: \"smooth\" });\n setShouldScrollTo(false);\n }\n }, [shouldScrollTo]);\n\n return [ref, setShouldScrollTo];\n};\n\nexport default useScrollTo;\n", "/**\n * IntelicoKit \u2014 Public subpath: \"intelicokit/icons\"\n * Custom icon components (Molecular/CustomIcons)\n */\n\nexport * from './Molecular/CustomIcons/index';\n", "import type { ReactElement } from 'react';\n\nimport type { IHeaderProps } from './Header.interface';\nimport cn from 'classnames';\nimport { useRef, useState } from 'react';\n\nimport { Bell, ChevronRight, Power } from 'react-feather';\n\nimport Hint from '../../UI/Hint/Hint';\nimport './Header.scss';\n\nfunction Header({\n className,\n name = 'John',\n surname = 'Silver',\n status = 'admin',\n img = '',\n hintLabel = 'Help',\n hintText = 'Hint text',\n}: IHeaderProps): ReactElement {\n const [isOpen, setIsOpen] = useState(false);\n\n const userMenu = useRef(null);\n\n const handle = {\n toggleMenu: () => {\n if (!isOpen) setIsOpen(!isOpen);\n },\n closeMenu: () => {\n setTimeout(() => setIsOpen(false), 50);\n },\n logout: () => {\n handle.toggleMenu();\n },\n };\n\n return (\n <header className={cn('header', className)}>\n <div className=\"df\">\n <Hint\n side=\"bottom\"\n hint={hintText}\n className=\"header__hint\"\n label={hintLabel}\n />\n </div>\n\n <div className=\"j6 user-menu\">\n <div onClick={() => {}} className=\"header--bell\">\n <Bell className=\"header--bell-icon\" />\n <div className=\"header--bell-notification-icon\" />\n </div>\n\n <div className=\"header--user-ava\">\n {img && <img src={img} alt=\"user-avatar\" />}\n </div>\n\n <div className=\"dfc mr10\">\n <span className=\"header--user-name\">\n {name}\n {' '}\n {surname}\n </span>\n <span className=\"header--user-status\">{status}</span>\n </div>\n\n <ChevronRight\n onClick={handle.toggleMenu}\n data-testid=\"accordion--title-chevron\"\n className={cn('accordion--title-chevron', {\n 'accordion--title-chevron-open': isOpen,\n })}\n />\n {isOpen && (\n <div className=\"user-menu__dropdown\" ref={userMenu}>\n <div className=\"user-menu__item\" onClick={handle.logout}>\n <Power className=\"mr10\" />\n {' '}\n Logout\n </div>\n </div>\n )}\n </div>\n </header>\n );\n}\n\nexport default Header;\n", "/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DD.DD.DDDD',\n * @param maskPatternPlaceholder: 'MM.DD.YYYY',\n * @param usePatternPlaceholder: true,\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param autocomplete: 'bday',\n * @param focusSelector: 'input',\n */\nconst DATE_PRESET = {\n type: \"inputMask\",\n maskPattern: \"DD.DD.DDDD\",\n maskPatternPlaceholder: \"MM.DD.YYYY\",\n usePatternPlaceholder: true,\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n autocomplete: \"bday\",\n focusSelector: \"input\",\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param focusSelector: 'input',\n * @param autocomplete: 'postal-code',\n * @param rules: 'fieldZip'\n */\nconst ZIP_PRESET = {\n type: \"inputMask\",\n focusSelector: \"input\",\n maskPattern: \"DDDDD\",\n maskPlaceholder: \"X\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n autocomplete: \"postal-code\",\n rules: \"fieldZip\",\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDDDDDDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param focusSelector: 'input',\n */\nconst SSN_PRESET = {\n type: \"inputMask\",\n maskPattern: \"DDDDDDDDD\",\n maskPlaceholder: \"X\",\n focusSelector: \"input\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDD-DDD-DDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param focusSelector: 'input',\n * @param autocomplete: 'tel-national',\n */\nconst MOBILE_PHONE_PRESET = {\n type: \"inputMask\",\n // maskPattern: 'DDD-DDD-DDDD',\n maskPattern: \"(DDD) DDD-DDDD\",\n maskPlaceholder: \"X\",\n focusSelector: \"input\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n autocomplete: \"tel-national\",\n};\n\n/**\n * @param type: 'inputMask3',\n * @param maskPattern: 'DDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n */\nconst SHORT_SSN_PRESET = {\n type: \"inputMask3\",\n maskPattern: \"DDDD\",\n maskPlaceholder: \"X\",\n focusSelector: \"input\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDDDDDDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n */\nconst ABA_PRESET = {\n type: \"inputMask\",\n maskPattern: \"DDDDDDDDD\",\n maskPlaceholder: \"X\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'MM/YY',\n * @param maskPatternPlaceholder: 'MM/YY',\n * @param usePatternPlaceholder: true,\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param focusSelector: 'input',\n */\nconst CC_EXPIRATION_DATE = {\n type: \"inputMask\",\n maskPattern: \"MM/YY\",\n maskPatternPlaceholder: \"MM/YY\",\n usePatternPlaceholder: true,\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n focusSelector: \"input\",\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDDDDDDDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n */\nconst BANK_ACCOUNT = {\n type: \"inputMask\",\n maskPattern: \"DDDDDDDDDD\",\n maskPlaceholder: \"X\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n};\n\nexport const MASK_PRESETS = {\n BANK_ACCOUNT,\n CC_EXPIRATION_DATE,\n DATE_PRESET,\n ZIP_PRESET,\n SSN_PRESET,\n MOBILE_PHONE_PRESET,\n SHORT_SSN_PRESET,\n ABA_PRESET,\n};\n", "import { getSafelyValue } from \"../fieldValueFormatters\";\n\nexport const NAME_SYMBOLS_EXCLUDER = {\n /**\n * @name fieldChangesMiddleware\n * @description \u041E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442 \u0432\u0445\u043E\u0434\u044F\u0449\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443, \u0443\u0434\u0430\u043B\u044F\u0435\u0442 \u0432\u0441\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u044E\u0442\u0441\u044F\n * \u0430\u043B\u0444\u0430\u0432\u0438\u0442\u043D\u044B\u043C\u0438, \u0434\u0435\u0444\u0438\u0441\u0430\u043C\u0438, \u0430\u043F\u043E\u0441\u0442\u0440\u043E\u0444\u0430\u043C\u0438 \u0438\u043B\u0438 \u043F\u0440\u043E\u0431\u0435\u043B\u0430\u043C\u0438. \u041D\u0435 \u0434\u0430\u0435\u0442 \u0432\u0432\u0435\u0441\u0442\u0438 \u0434\u0443\u0431\u043B\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0434\u0435\u0444\u0438\u0441\u0430 \u0438\u043B\u0438 \u0430\u043F\u043E\u0441\u0442\u0440\u043E\u0444\u0430.\n * \u0420\u0435\u0436\u0435\u0442 \u0441\u043F\u0435\u0446\u0441\u0438\u043C\u0432\u043E\u043B\u044B, \u0435\u0441\u043B\u0438 \u043F\u043E\u0441\u043B\u0435 \u043D\u0438\u0445 \u043D\u0435 \u0438\u0434\u0435\u0442 \u0431\u0443\u043A\u0432\u0430.\n *\n * @param {string} value - \u0412\u0445\u043E\u0434\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438.\n * @returns {string} - \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430.\n */\n fieldChangesMiddleware: (value) => {\n // remove invalid characters\n const invalidCharacters = new RegExp(/[^a-zA-Z-\\s']/g);\n // handle any two '-' or ''' should not be side by side\n const sideBySideHyphenOrApostrophe = new RegExp(/['-]{2,}/g);\n // replace sequence of spaces with single space\n const multipleSpaces = new RegExp(/\\s{2,}/g);\n // remove '-' or ''' if they are followed by a space\n const beforeSpace = new RegExp(/['-](?=\\s)/g);\n\n const sanitizedValue = getSafelyValue(value)\n .replace(invalidCharacters, \"\")\n .replace(sideBySideHyphenOrApostrophe, \"\")\n .replace(multipleSpaces, \" \")\n .replace(beforeSpace, \"\");\n\n return sanitizedValue;\n },\n blurTrim: {\n trimStart: true,\n trimEnd: true,\n characters: [\"-\", \"'\", \" \"],\n },\n};\n\nexport const ONLY_STRING_AND_DASH = {\n /**\n * @name fieldChangesMiddleware\n * @description \u041E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442 \u0432\u0445\u043E\u0434\u043D\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443, \u0443\u0434\u0430\u043B\u044F\u0435\u0442 \u0432\u0441\u0435 \u043D\u0435\u0430\u043B\u0444\u0430\u0432\u0438\u0442\u043D\u044B\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B, \u0437\u0430\u043C\u0435\u043D\u044F\u0435\u0442 \u0434\u0432\u043E\u0439\u043D\u044B\u0435 \u0434\u0435\u0444\u0438\u0441\u044B \u043D\u0430 \u043E\u0434\u0438\u043D\u0430\u0440\u043D\u044B\u0435\n * \u0438 \u0443\u0434\u0430\u043B\u044F\u0435\u0442 \u0432\u0441\u0435 \u0434\u0435\u0444\u0438\u0441\u044B \u0432 \u043D\u0430\u0447\u0430\u043B\u0435 \u0438\u043B\u0438 \u043A\u043E\u043D\u0446\u0435 \u0441\u0442\u0440\u043E\u043A\u0438.\n * @param {string} value - \u0432\u0445\u043E\u0434\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438\n * @returns {string} \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430\n */\n fieldChangesMiddleware: (value) => {\n const nonAlphabeticAndNotSingleDash = new RegExp(/[^a-zA-Z-]|--/gi);\n const consecutiveDashes = new RegExp(/-+/g);\n\n const sanitizedInput = getSafelyValue(value);\n\n return sanitizedInput\n .replace(nonAlphabeticAndNotSingleDash, \"\")\n .replace(consecutiveDashes, \"-\");\n },\n};\nexport const INPUT_PRESETS = {\n NAME_SYMBOLS_EXCLUDER,\n ONLY_STRING_AND_DASH,\n};\n", "import React, { useEffect, useState } from \"react\";\n\nimport cn from \"classnames\";\nimport { ArrowDown, ArrowUp, ChevronDown, Tag } from \"react-feather\";\n\nimport MonoAccordion from \"../MonoAccordion/MonoAccordion\";\n\nimport \"./AccordionTable.scss\";\n\nconst AccordionTable = ({\n className,\n header,\n items,\n onChange,\n testId,\n onSort = () => {},\n sortParams,\n}) => {\n const [accordions, setAccordions] = useState(items);\n\n const sortedColClassName = (item) =>\n cn(\n \"accordion-table__header-item\",\n item.className,\n {\n \"accordion-table--sorted-col\":\n sortParams && sortParams.key === item.key,\n },\n { \"accordion-table__header-item-sortable\": !item.noSort },\n );\n\n const handle = {\n accordionChange: (key, e) => {\n const newArr = accordions?.map((item) => {\n if (item.key === key) {\n return {\n ...item,\n isOpen: !item.isOpen,\n };\n }\n return item;\n });\n const isArrowSvg = e?.target?.tagName === \"svg\";\n const isAccordionElement =\n e.target.className?.includes?.(\"accordion-table\");\n if (isAccordionElement || isArrowSvg) {\n onChange(newArr);\n setAccordions(newArr);\n }\n },\n\n setSort: (key) => {\n let newSorting;\n if (key !== sortParams.key) newSorting = { key: key, direction: \"DESC\" };\n else {\n newSorting = {\n key,\n direction: sortParams.direction === \"ASC\" ? \"DESC\" : \"ASC\",\n };\n }\n onSort(newSorting);\n },\n };\n\n const getHeaderItem = (key) => {\n return header?.find((item) => item.key === key);\n };\n\n const renderTd = (tr) => {\n return Object.entries(tr)?.map(([key, value]) => {\n return key === \"promoDetails\" || key === \"disclosure\" ? null : (\n <div\n key={key}\n style={{ flexBasis: `${getHeaderItem(key)?.width}%` }}\n className={cn(\n \"accordion-table__td\",\n `accordion-table__td--${key}`,\n getHeaderItem(key)?.className,\n )}\n >\n <p\n className=\"accordion-table__statistics-td-value\"\n title={typeof value !== \"object\" ? value : value.value}\n >\n {typeof value !== \"object\" ? value : value.value}\n </p>\n </div>\n );\n });\n };\n\n const renderTr = (rows) => {\n return rows?.map((row, index) => {\n return (\n <div\n key={index}\n className={cn(\n \"accordion-table__tr\",\n {\n \"accordion-table__tr-with-promo\":\n row.promoDetails || row.cols?.promoDetails,\n },\n row.className,\n )}\n >\n <div className=\"df w100\">{renderTd(row.cols || row)}</div>\n {row.promoDetails || row.cols?.promoDetails ? (\n <div className=\"accordion-table__tr-promo-wrapper\">\n <div className=\"accordion-table__tr-promo\">\n <Tag className=\"tr-promo-icon\" width={16} height={16} />\n <span className=\"tr-promo-label\">PROMOTION</span>\n {row.promoDetails || row.cols?.promoDetails}\n </div>\n </div>\n ) : null}\n\n {row.disclosure || row.cols?.disclosure ? (\n <div className=\"accordion-table__tr-promo-wrapper\">\n <div className=\"accordion-table__tr-promo accordion-table__tr-promo-disclosure\">\n {row.disclosure || row.cols?.disclosure}\n </div>\n </div>\n ) : null}\n </div>\n );\n });\n };\n\n const defineAccordionTitle = (row) => {\n return (\n <div\n onClick={(e) => handle.accordionChange(row.key, e)}\n className=\"accordion-table__accordion-label-box\"\n >\n <div className=\"accordion-table__accordion-label-wrapper j4\">\n <ChevronDown\n width={8}\n height={4}\n className={cn(\"accordion-label-box__icon\", {\n \"accordion-label-box__icon--open\": row.isOpen,\n })}\n />\n <span className=\"accordion-label-box__label\">{row.label}</span>\n {row.statistics && (\n <div className={cn(\"accordion-table__tr\", row.className)}>\n {Object.entries(row.statistics).map(([key, value]) => {\n return (\n <div\n key={key}\n style={{ width: `${getHeaderItem(key)?.width}%` }}\n className={cn(\n \"accordion-table__statistics-td\",\n getHeaderItem(key)?.className,\n )}\n >\n <div className=\"accordion-table__statistics-td-value-wrapper\">\n {key === \"status\" ? (\n <div className=\"accordion-table__statistics-td-value\">\n {value}\n </div>\n ) : (\n <p\n className=\"accordion-table__statistics-td-value\"\n title={value}\n >\n {value}\n </p>\n )}\n </div>\n </div>\n );\n })}\n </div>\n )}\n </div>\n\n {row.titleContent}\n </div>\n );\n };\n\n useEffect(() => {\n setAccordions(items);\n }, [items]);\n\n return (\n <div className={cn(\"accordion-table\", className)}>\n <div className=\"accordion-table__header\">\n {header?.map((item) => {\n return (\n <div\n style={{ flexBasis: `${item.width}%` }}\n key={item.key}\n className={sortedColClassName(item)}\n onClick={() => !item.noSort && handle.setSort(item.key)}\n >\n {sortParams &&\n item.key === sortParams.key &&\n sortParams.key !== \"actions\" &&\n (sortParams.direction === \"DESC\" ? (\n <ArrowDown size={16} />\n ) : (\n <ArrowUp size={16} />\n ))}\n\n {item.label}\n </div>\n );\n })}\n </div>\n\n <div className=\"accordion-table__body\">\n {accordions?.map((accordion) => {\n return (\n <MonoAccordion\n testId={testId}\n key={accordion.key}\n onClick={(e) => handle.accordionChange(accordion.key, e)}\n isOpen={accordion.isOpen}\n className={cn(\n \"accordion-table__body-accordion\",\n {\n \"accordion-table__body-accordion--closed\": !accordion.isOpen,\n },\n accordion.className,\n )}\n titleJSX={defineAccordionTitle(accordion)}\n >\n {accordion.children ?? renderTr(accordion.rows)}\n </MonoAccordion>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default AccordionTable;\n", "import type { IAdvancedTagsItemProps, IAdvancedTagsProps } from './AdvancedTags.interface';\n\nimport cn from 'classnames';\n\nimport React, { useState } from 'react';\nimport Tag from '../Tag/Tag';\nimport AdvTag from './AdvTag';\n\nconst AdvancedTags: React.FC<IAdvancedTagsProps> = ({\n items,\n noItemsTagLabel,\n className,\n testId = 'advanced-tag-test',\n toTop = true,\n}) => {\n const [showedItems, setShowedItems] = useState<IAdvancedTagsItemProps[]>(items.slice(0, 2));\n\n const [showMore, setShowMore] = useState<boolean>(true);\n\n const onShowMoreClick = (): void => {\n setShowedItems(showMore ? items : items.slice(0, 2));\n setShowMore(!showMore);\n };\n\n if ((!items || !items.length) && noItemsTagLabel) {\n return (\n <Tag\n label={noItemsTagLabel?.toString()}\n className={cn(className, 'tag-warn')}\n />\n );\n }\n\n if ((!items || !items.length) && !noItemsTagLabel) return null;\n\n return (\n <div data-testid={testId} className={cn(className, 'j4 wrap')}>\n {showedItems.map((item, index) => {\n if (!item) return null;\n return (\n <AdvTag\n toTop={toTop}\n key={index}\n item={item}\n testId={`${testId}-item-${index}`}\n />\n )\n })}\n\n {items.length >= 3 && (\n <span\n data-testid={`${testId}-showMore`}\n onClick={onShowMoreClick}\n className=\"advanced-tags advanced-tags--showMore\"\n >\n {showMore ? `+${items.length - showedItems.length}` : '...'}\n </span>\n )}\n </div>\n );\n};\n\nexport default AdvancedTags;\n", "import type { MouseEvent } from 'react';\nimport type { IAdvTagProps } from './AdvancedTags.interface';\n\nimport cn from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { AlertTriangle } from 'react-feather';\n\nimport './AdvancedTags.scss';\n\nconst AdvTag: React.FC<IAdvTagProps> = ({\n item,\n className,\n testId = 'adv-tag',\n toTop = true,\n}) => {\n const {\n labelLeft,\n labelRight,\n active = 0,\n pause = 0,\n merchants,\n warnLeft,\n warnLeftMsg,\n warnRightMsg,\n isEntityAndCounter = false,\n entityAndCounter = {\n nullCounterMessage: '',\n title: '',\n counter: null,\n },\n type,\n } = item;\n\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [clickedWarning, setClickedWarning] = useState<string>('');\n const hintRef = useRef<HTMLDivElement>(null);\n\n const activeNumberClass = cn('strong', {\n 'color--pause': active === 0,\n 'color--green-haze': active > 0,\n });\n\n const pauseNumberClass = cn('strong', {\n 'color--pause': pause === 0,\n 'color--light-red': pause > 0,\n });\n\n const isEmptyEntitys\n = (isEntityAndCounter\n && (!entityAndCounter?.counter || entityAndCounter.counter === 0))\n || (!isEntityAndCounter && (warnLeft || !merchants));\n\n const advancedTagClass = cn('advanced-tags', {\n 'advanced-tags--error': isEmptyEntitys,\n }, className);\n\n const onWarningClick = (warn: string): void => {\n setIsOpen(true);\n setClickedWarning(warn);\n };\n\n const handleClickOutside = (event: MouseEvent | Event): void => {\n if (hintRef.current && !hintRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener('click', handleClickOutside, true);\n return () => {\n document.removeEventListener('click', handleClickOutside, true);\n };\n }, []);\n\n if (!item) return null;\n\n const renderClassicTag = (): JSX.Element => (\n <div data-testid={testId} className={advancedTagClass} ref={hintRef}>\n {warnLeft && (\n <div\n data-testid={`${testId}-left`}\n className=\"advanced-tags--warning-icon-wrapper\"\n onMouseEnter={() => onWarningClick('warnLeft')}\n onMouseLeave={() => setIsOpen(false)}\n >\n <AlertTriangle\n width={16}\n height={16}\n className=\"advanced-tags--warning-icon mr5\"\n />\n </div>\n )}\n\n {labelLeft && <span className=\"mr5\">{labelLeft}</span>}\n {labelRight && <span>{labelRight}</span>}\n\n {type !== 'simple' && <span className=\"ml5 mr5\">|</span>}\n {type !== 'simple' && (\n <div className=\"df\">\n <span className={activeNumberClass}>{active}</span>\n <span className=\"strong color--pause\">/</span>\n <span className={pauseNumberClass}>{pause}</span>\n </div>\n )}\n\n {type !== 'simple' && <span className=\"ml5 mr5\">|</span>}\n\n {merchants\n ? (\n <span>{merchants}</span>\n )\n : (\n type !== 'simple' && (\n <div\n data-testid={`${testId}-right`}\n className=\"advanced-tags--warning-icon-wrapper\"\n onMouseEnter={() => onWarningClick('warnRight')}\n onMouseLeave={() => setIsOpen(false)}\n >\n <AlertTriangle\n width={16}\n height={16}\n className=\"advanced-tags--warning-icon\"\n />\n </div>\n )\n )}\n\n {isOpen && warnLeftMsg && clickedWarning === 'warnLeft' && (\n <span\n className={cn(\n 'advanced-tags__warn-text advanced-tags__warn-text--warnLeft',\n { 'advanced-tags__warn-text--warnLeft--to-top': toTop },\n )}\n >\n {warnLeftMsg}\n </span>\n )}\n\n {isOpen && warnRightMsg && clickedWarning === 'warnRight' && (\n <span\n className={cn(\n 'advanced-tags__warn-text',\n 'advanced-tags__warn-text--warnRight',\n { 'advanced-tags__warn-text--warnRight--to-top': toTop },\n )}\n >\n {warnRightMsg}\n </span>\n )}\n </div>\n );\n\n const renderWithEntityAndCounterTag = (): JSX.Element => {\n const isNullcounter = entityAndCounter?.counter?.toString() === '0';\n\n return (\n <div data-testid={testId} className={advancedTagClass} ref={hintRef}>\n {isNullcounter && (\n <div\n data-testid={`${testId}-left`}\n className=\"advanced-tags--warning-icon-wrapper\"\n onMouseEnter={() => onWarningClick('warnLeft')}\n onMouseLeave={() => setIsOpen(false)}\n >\n <AlertTriangle\n width={16}\n height={16}\n className=\"advanced-tags--warning-icon mr5\"\n />\n </div>\n )}\n\n {isOpen\n && entityAndCounter?.nullCounterMessage\n && clickedWarning === 'warnLeft' && (\n <span\n className={cn(\n 'advanced-tags__warn-text advanced-tags__warn-text--warnLeft',\n { 'advanced-tags__warn-text--warnLeft--to-top': toTop },\n )}\n >\n {entityAndCounter.nullCounterMessage}\n </span>\n )}\n\n {entityAndCounter?.title && (\n <span className=\"mr5\">{entityAndCounter.title}</span>\n )}\n\n <div\n className={cn('advanced-tags__counter', {\n 'advanced-tags__counter--null': isNullcounter,\n 'advanced-tags__counter--bold': !isNullcounter,\n })}\n >\n {entityAndCounter?.counter}\n </div>\n </div>\n );\n };\n\n return !isEntityAndCounter ? renderClassicTag() : renderWithEntityAndCounterTag();\n};\n\nexport default AdvTag;\n", "import AdvancedTags from './AdvancedTags';\nimport AdvTag from './AdvTag';\n\nexport default AdvancedTags;\n\nexport { AdvTag };\n\nexport type { IAdvancedTagsItemProps, IAdvancedTagsProps, IAdvTagProps } from './AdvancedTags.interface';\n", "import type { IAlertProps } from './Alert.interface';\nimport Alert from './Alert';\n\nexport type { IAlertProps };\nexport default Alert;\n", "// global\nimport type { CSSProperties, ReactElement } from 'react';\n\nimport type { IBoxProps } from './Box.interface';\nimport cn from 'classnames';\n\n// styles\nimport './Box.scss';\n\nconst directionVariants = {\n column: 'column',\n row: 'row',\n};\n\nconst sizes = {\n none: 'none',\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'l',\n xl: 'xl',\n};\n\nfunction Box({\n children,\n paddingVariant = sizes.m,\n radiiVariant = sizes.s,\n direction = directionVariants.column,\n className,\n ...restProps\n}: IBoxProps): ReactElement {\n const styles: CSSProperties = {\n flexDirection: direction as 'row' | 'row-reverse' | 'column' | 'column-reverse',\n };\n return (\n <div\n style={styles}\n data-testid=\"box\"\n className={cn(\n 'box',\n `box--padding-${paddingVariant}`,\n `box--radii-${radiiVariant}`,\n className,\n {\n 'df': direction === directionVariants.row,\n 'dfc-jc': direction === directionVariants.column,\n },\n )}\n {...restProps}\n >\n {children}\n </div>\n );\n}\n\nexport default Box;\n", "import React, { useEffect, useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport \"./CircleProgressBar.scss\";\n\nconst CircleProgressBar = ({\n amount,\n totalAmount,\n isReverseType,\n children,\n className,\n colors,\n isInnerLine,\n radius = 59,\n strokeWidth = 2,\n innerLineStrokeWidth = 2,\n testId = \"circle-progress-bar\",\n}) => {\n const circumference = Math.round(2 * Math.PI * radius);\n const amountProgress =\n amount < totalAmount ? Math.round((amount / totalAmount) * 100) : 100; //%\n const defaultColors = {\n start: \"#6b81dd\",\n finish: \"#f06d8d\",\n meter: \"#ffcad6\",\n };\n\n const [strokeDashoffset, setStrokeDashoffset] = useState(isReverseType ? String(0) : circumference);\n\n useEffect(() => {\n setStrokeDashoffset(circumference - (circumference * amountProgress) / 100);\n }, [amountProgress]);\n\n return (\n <div\n data-testid={testId}\n className={cn(\"limit-progress-bar\", { \"limit-progress-bar--reverse\": isReverseType }, className)}\n >\n <svg\n className=\"limit-progress-bar__progress\"\n width=\"124\"\n height=\"124\"\n viewBox=\"0 0 124 124\"\n >\n <defs>\n {isReverseType ? (\n <linearGradient\n id=\"limit-progress-bar-linear-gradient-reverse\"\n x1=\"0\"\n y1=\"1\"\n x2=\"0\"\n y2=\"0\"\n >\n <stop\n offset=\"0\"\n stopColor={colors.finish || defaultColors.finish}\n />\n <stop\n offset=\"1\"\n stopColor={colors.start || defaultColors.start}\n />\n </linearGradient>\n ) : (\n <linearGradient\n id=\"limit-progress-bar-linear-gradient\"\n x1=\"0\"\n y1=\"1\"\n x2=\"0\"\n y2=\"0\"\n >\n <stop\n offset=\"0\"\n stopColor={colors.start || defaultColors.start}\n />\n <stop\n offset=\"1\"\n stopColor={colors.finish || defaultColors.finish}\n />\n </linearGradient>\n )}\n </defs>\n <circle\n className=\"limit-progress-bar__meter\"\n cx={radius}\n cy={radius}\n r={radius}\n stroke={!isInnerLine ? \"\" : colors.meter || defaultColors.meter}\n strokeWidth={String(innerLineStrokeWidth)}\n />\n <circle\n className=\"limit-progress-bar__value\"\n cx={radius}\n cy={radius}\n r={radius}\n strokeWidth={String(strokeWidth)}\n stroke={`url(#limit-progress-bar-linear-gradient${isReverseType ? \"-reverse\" : \"\"})`}\n style={{\n strokeDasharray: circumference,\n strokeDashoffset,\n }}\n />\n </svg>\n <div className=\"limit-progress-bar__content\">{children}</div>\n </div>\n );\n};\n\nexport default CircleProgressBar;\n", "import type { IDateTimeProps } from './DateTime.interface';\nimport cn from 'classnames';\nimport moment from 'moment-timezone';\nimport React, { useMemo } from 'react';\nimport './DateTime.scss';\n\nconst RC = 'date-time';\n\nconst DEFAULT_DATE_FORMAT = 'DD.MM.YYYY';\nconst DEFAULT_TIME_FORMAT = 'HH:mm:ss';\n\nconst DateTime: React.FC<IDateTimeProps> = ({\n className,\n value,\n valueFormat,\n dateFormat: inputDateFormat,\n timeFormat: inputTimeFormat,\n isNoDate,\n isNoTime,\n testId = 'date-time',\n}) => {\n const dateFormat = inputDateFormat ?? DEFAULT_DATE_FORMAT;\n const timeFormat = inputTimeFormat ?? DEFAULT_TIME_FORMAT;\n\n const date = useMemo(() => {\n return (valueFormat ? moment(value, valueFormat) : moment(value)).format(\n dateFormat,\n );\n }, [value, valueFormat, dateFormat]);\n\n const time = useMemo(() => {\n return (valueFormat ? moment(value, valueFormat) : moment(value)).format(\n timeFormat,\n );\n }, [value, valueFormat, timeFormat]);\n\n return (\n <div data-testid={testId} className={cn(RC, className)}>\n {!isNoDate && (\n <span data-testid={`${testId}-date`} className={`${RC}__date`}>\n {date}\n </span>\n )}\n {!isNoTime && (\n <span\n data-testid={`${testId}-time`}\n className={cn(`${RC}__time`, {\n [`${RC}_color--pause`]: !isNoDate,\n })}\n >\n {time}\n </span>\n )}\n </div>\n );\n};\n\nexport default DateTime;\n", "import type { ReactNode } from 'react';\nimport cn from 'classnames';\nimport React, { useState } from 'react';\nimport { ChevronDown, ChevronUp } from 'react-feather';\nimport './DebugContainer.scss';\n\nexport interface DebugContainerProps {\n data?: Record<string, any>;\n children?: ReactNode;\n className?: string;\n}\n\nconst defaultData: Record<string, any> = {};\nconst DebugContainer: React.FC<DebugContainerProps> = ({ data = defaultData, children, className }) => {\n const [isVisible, setIsVisible] = useState<boolean>(true);\n\n const renderData = (): JSX.Element => (\n <pre>\n {'{\\n'}\n {Object.keys(data).map(key => ` ${key}: ${String(data[key])},\\n`)}\n {'}'}\n </pre>\n );\n\n return (\n <div className={cn('debug-container', className)} data-testid=\"debug-container\">\n {isVisible && (\n <div className=\"debug-container__body\">\n <h5>Debug:</h5>\n {data && Object.keys(data).length > 0 && (\n <div className=\"debug-container__body-row\" data-testid=\"debug-data\">{renderData()}</div>\n )}\n {children && (\n <div className=\"debug-container__body-row\" data-testid=\"debug-children\">{children}</div>\n )}\n </div>\n )}\n <div\n className=\"debug-container__toggler\"\n onClick={() => setIsVisible(v => !v)}\n data-testid=\"debug-toggler\"\n >\n {isVisible ? <ChevronUp /> : <ChevronDown />}\n </div>\n </div>\n );\n};\n\nexport default DebugContainer;\n", "import { useState } from 'react';\nimport DebugContainer from './DebugContainer';\n\nexport interface UseDebugContainer {\n debugData: Record<string, any>;\n setDebugData: React.Dispatch<React.SetStateAction<Record<string, any>>>;\n renderDebugContainer: JSX.Element;\n}\n\nfunction useDebugContainer(): UseDebugContainer {\n const [data, setData] = useState<Record<string, any>>({});\n\n return {\n debugData: data,\n setDebugData: setData,\n renderDebugContainer: <DebugContainer data={data} />,\n };\n}\n\nexport default useDebugContainer;\n", "import type { IDoubleStringProps } from './DoubleString.interface';\n\nimport cn from 'classnames';\nimport moment from 'moment';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { Eye, EyeOff } from 'react-feather';\n\nimport './DoubleString.scss';\n\nconst RC = 'double-string';\n\nconst DoubleString: React.FC<IDoubleStringProps> = ({\n value,\n description,\n subDescription,\n valuePostfix,\n className,\n testId = 'double-string',\n isFormatValueToDate,\n isUseOnClick,\n dateFormatSettings: {\n parseFormat = 'MM.DD.YYYY',\n displayFormat = 'MM.DD.YYYY',\n } = {},\n revert = false,\n noTitle,\n isUseHideMode = false,\n isShowHiddenValueAvailable = false,\n}) => {\n const [isValueHidden, setIsValueHidden] = useState(isUseHideMode);\n\n const computedValue = isFormatValueToDate ? moment(value, parseFormat).format(displayFormat) : value;\n\n const valueRef = useRef<HTMLParagraphElement | null>(null); ;\n const descriptionRef = useRef<HTMLParagraphElement | null>(null);\n\n const [elemsWidth, setElemsWidth] = useState({\n valueWidth: 0,\n descriptionWidth: 0,\n });\n const [isOnClickON, setIsOnClickON] = useState(false);\n\n const handle = {\n click: () => {\n setIsOnClickON(!isOnClickON);\n },\n };\n\n useEffect(() => {\n const valueWidth = valueRef?.current?.clientWidth ?? 0;\n const descriptionWidth = descriptionRef?.current?.clientWidth ?? 0;\n\n setElemsWidth({ valueWidth, descriptionWidth });\n }, [descriptionRef, valueRef]);\n\n return (\n <div data-testid={testId} className={cn(RC, className)}>\n <p\n onClick={() => handle.click()}\n ref={valueRef}\n className={cn(\n `${RC}__value`,\n {\n 'double-string--value-opened': isOnClickON && isUseOnClick,\n },\n { pointer: isUseOnClick },\n )}\n title={!noTitle && elemsWidth.valueWidth > 99 ? computedValue : ''}\n >\n {!revert\n ? (\n <>\n {isUseHideMode ? <span>{!isValueHidden ? computedValue : '*********'}</span> : computedValue}\n {isUseHideMode && isShowHiddenValueAvailable && isValueHidden && <Eye data-testid=\"double-string-eye\" className={`${RC}__hide-mode-icon`} onClick={() => setIsValueHidden(false)} />}\n {isUseHideMode && isShowHiddenValueAvailable && !isValueHidden && <EyeOff data-testid=\"double-string-eyeoff\" className={`${RC}__hide-mode-icon`} onClick={() => setIsValueHidden(true)} />}\n {valuePostfix && (\n <span className={cn(`${RC}__value-postfix`)}>{valuePostfix}</span>\n )}\n </>\n )\n : (\n description\n )}\n </p>\n\n <p\n ref={descriptionRef}\n className={cn(`${RC}__description`)}\n title={!noTitle && elemsWidth.descriptionWidth > 99 ? computedValue : ''}\n >\n {!revert\n ? (\n description\n )\n : (\n <>\n {computedValue}\n {valuePostfix && (\n <span className={cn(`${RC}__value-postfix`)}>{valuePostfix}</span>\n )}\n </>\n )}\n </p>\n {subDescription && (\n <p className={cn(`${RC}__sub-description`)}>\n {subDescription}\n </p>\n )}\n </div>\n );\n};\n\nexport default DoubleString;\n", "import type { IDoubleStringProps } from './DoubleString.interface';\nimport DoubleString from './DoubleString';\n\nexport type { IDoubleStringProps };\nexport default DoubleString;\n", "import type { IHintProps } from './Hint.interface';\nimport Hint from './Hint';\n\nexport default Hint;\nexport type { IHintProps };\n", "import type { IModalHOCProps } from './Modal.interface';\n\nimport cn from 'classnames';\nimport React, { useEffect, useLayoutEffect, useMemo, useRef } from 'react';\n\nimport useHandleKeyPress from '../../../Functions/useKeyPress/useHandleKeyPress';\nimport { EVENTS } from './partials/_constants';\nimport { getOnKeyPress, getWithEventManagementStructure } from './partials/_utils';\n\nimport './Modal.scss';\n\nconst ModalHOC: React.FC<IModalHOCProps> = ({\n id,\n zIndex = 100,\n isOpen,\n closeModal,\n closeBtnDisable,\n\n children,\n className,\n size,\n testId = 'modal',\n\n withEventManagement = false, // ! \u041F\u043E\u043B\u043D\u043E\u0441\u0442\u044C\u044E \u043F\u0440\u043E\u0438\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044F \u0435\u0441\u043B\u0438 \u0432 \u043C\u043E\u0434\u0430\u043B\u043A\u0443 \u041D\u0415 \u043F\u0440\u043E\u043A\u0438\u043D\u0443\u0442 id\n\n // ? isClosingByEsc \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u044F\u0432\u043D\u044B\u043C \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435\u043C/\u0437\u0430\u043F\u0440\u0435\u0442\u043E\u043C \u043D\u0430 \u0440\u0430\u0431\u043E\u0442\u0443 \u0444-\u043B\u0430,\n // ? \u0432 \u0442\u043E \u0432\u0440\u0435\u043C\u044F \u043A\u0430\u043A withEventManagement \u043B\u0438\u0448\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0441\u043F\u043E\u0441\u043E\u0431\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438 \u044D\u0442\u043E\u0433\u043E \u0444-\u043B\u0430\n isClosingByEsc: isClosingByEscOuter = true,\n closeOnEsc,\n}) => {\n const modalRef = useRef(null);\n const closeModalRef = useRef(closeModal);\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 isClosingByEsc = closeOnEsc === false\n ? false\n : isClosingByEscOuter;\n\n const withEventManagementStructure = getWithEventManagementStructure(id, withEventManagement);\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 handleClose: () => void = useMemo(() => () => closeModalRef.current?.(), []);\n\n useHandleKeyPress({\n escCallback: isClosingByEsc && typeof closeModal === 'function' ? handleClose : undefined,\n withEventManagementStructure,\n });\n\n useLayoutEffect(() => {\n closeModalRef.current = closeBtnDisable ? undefined : closeModal;\n }, [closeModal, closeBtnDisable]);\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 // ? 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, onClose: handleClose }); // \u0432 ModalHOC onSubmit \u043D\u0435 \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\n\n if (withEventManagementStructure.isWithSubmitAndCloseManagement && !!onKeyPress) {\n // if () document.addEventListener(EVENTS.iGotAnEnterKeyPress.name, onKeyPress); // \u0432 ModalHOC onSubmit \u043D\u0435 \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\n if (isClosingByEsc) document.addEventListener(EVENTS.iGotAnEscKeyPress.name, onKeyPress);\n }\n\n return () => {\n if (withEventManagementStructure.isWithSubmitAndCloseManagement && !!onKeyPress) {\n // if () document.removeEventListener(EVENTS.iGotAnEnterKeyPress.name, onKeyPress); // \u0432 ModalHOC onSubmit \u043D\u0435 \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\n if (isClosingByEsc) document.removeEventListener(EVENTS.iGotAnEscKeyPress.name, onKeyPress);\n }\n }\n }, []);\n\n if (!isOpen) return null;\n return (\n <div id={`${id}`} style={{ zIndex }} data-testid={testId} className=\"modal-box j5\" role=\"presentation\">\n <div className=\"modal-overlay\" onClick={handleClose} role=\"presentation\" aria-hidden=\"true\" />\n <div\n ref={modalRef}\n style={{ width: size }}\n className={cn(className, 'modal')}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={testId}\n tabIndex={-1}\n >\n {children}\n </div>\n </div>\n );\n};\n\nexport default ModalHOC;\n", "import Modal from './Modal';\nimport ModalHOC from './ModalHOC';\nimport { EVENTS } from './partials/_constants';\nimport { dispatchEventForModalManagement } from './partials/_utils';\n\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0442\u0438\u043F\u043E\u0432\nexport type { IModalFooterProps, IModalHOCProps, IModalProps, IModalTitleProps } from './Modal.interface';\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0442\u043E\u0432\nexport { Modal, ModalHOC };\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 partials\nexport { default as ModalFooter } from './partials/ModalFooter';\nexport { default as ModalTitle } from './partials/ModalTitle';\nexport { default as useMobileModal } from './partials/useMobileModal';\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\nexport { EVENTS };\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u043D\u0443\u0436\u043D\u044B\u0445 \u0441\u043D\u0430\u0440\u0443\u0436\u0438 \u043C\u0435\u0442\u043E\u0434\u043E\u0432\nexport { dispatchEventForModalManagement };\n// ? \u0426\u0435\u043B\u0435\u0432\u043E\u0439 \u0434\u0435\u0444\u043E\u043B\u0442\u043D\u044B\u0439 \u044D\u043A\u0441\u043F\u043E\u0440\u0442\nexport default Modal;\n", "import MonoAccordion from './MonoAccordion';\n\nexport default MonoAccordion;\nexport type { IMonoAccordionProps } from './MonoAccordion.interface';\n", "import type { IPageTitleProps } from './PageTitle.interface';\nimport cn from 'classnames';\nimport React from 'react';\n\nimport { Home } from 'react-feather';\n\nimport './PageTitle.scss';\n\nconst RC = 'page-title';\n\nconst PageTitle: React.FC<IPageTitleProps> = ({ title, pages, children, testId = RC }) => (\n <div data-testid={testId} className={RC} role=\"region\" aria-label={title}>\n <div className={`${RC}__wrap`}>\n <h1 className={`${RC}__title`}>{title}</h1>\n {pages.length > 0 && (\n <nav className={`${RC}__pages`} aria-label=\"Breadcrumb\">\n <ol className={`${RC}__list`}>\n <li>\n <a className={`${RC}__link`} href=\"/\" aria-label=\"Home page\">\n <Home aria-hidden=\"true\" />\n </a>\n </li>\n\n {pages.map(({ name, path }, index) => (\n <li key={path}>\n <span className={`${RC}__delimiter`} aria-hidden=\"true\">\n /\n </span>\n {pages.length - 1 === index\n ? (\n <span className={cn(`${RC}__link`, `${RC}__link_last`)} aria-current=\"page\">\n {name}\n </span>\n )\n : (\n <a className={`${RC}__link`} href={path}>\n {name}\n </a>\n )}\n </li>\n ))}\n </ol>\n </nav>\n )}\n </div>\n {children}\n </div>\n);\n\nexport default PageTitle;\n", "import PageTitle from './PageTitle';\n\nexport default PageTitle;\nexport type { IPageTitleProps, PageItem } from './PageTitle.interface';\n", "import type { IPriceProps } from './Price.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport { formatToPriceWithCurrency } from '../../../Functions/fieldValueFormatters';\n\nconst CN = 'price';\n\nconst Price: React.FC<IPriceProps> = ({ value, currencyCode, isSymbolAfter, className, testId = CN }) => {\n if (value === undefined || value === null) return null;\n return (\n <div\n data-testid={testId}\n className={cn(CN, className)}\n role=\"contentinfo\"\n aria-label={`Price: ${formatToPriceWithCurrency(value, currencyCode, isSymbolAfter ? 'after' : 'before')}`}\n >\n {formatToPriceWithCurrency(value, currencyCode, isSymbolAfter ? 'after' : 'before')}\n </div>\n );\n};\n\nexport default Price;\n", "import Price from './Price';\n\nexport default Price;\nexport type { IPriceProps } from './Price.interface';\n", "import type { IPriceRangeProps } from './PriceRange.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport { formatToPriceWithUSD } from '../../../Functions/fieldValueFormatters';\n\nconst CN = 'price-range';\n\nconst PriceRange: React.FC<IPriceRangeProps> = ({ from, to, mode, testId = CN }) => {\n return (\n <div data-testid={testId} className={cn(CN, 'j4')} role=\"region\" aria-label=\"Price range\">\n {mode === 'simple'\n ? (\n <span aria-live=\"polite\">\n {from}\n {' - '}\n {to}\n </span>\n )\n : (\n <span aria-live=\"polite\">\n {formatToPriceWithUSD(from?.toString())}\n {' - '}\n {formatToPriceWithUSD(to?.toString())}\n </span>\n )}\n </div>\n );\n};\n\nexport default PriceRange;\n", "import PriceRange from './PriceRange';\n\nexport default PriceRange;\nexport type { IPriceRangeProps } from './PriceRange.interface';\n", "import type { IProgressLineProps } from './ProgressLine.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport { addBitDepthPoints } from '../../../Functions/utils';\n\nimport './ProgressLine.scss';\n\nconst CN = 'progress-line';\nconst ProgressLine: React.FC<IProgressLineProps> = ({\n label = '',\n labelAlign = 'left',\n renderValue = false,\n renderValueInPercents = false,\n valueMeasurement = '',\n valueHorizontalPosition = 'right',\n valueVerticalPosition = 'center',\n symbolsAfterComma = 0,\n minValue = 0,\n maxValue = 100,\n value = 0,\n showExtremums = false,\n extremumsPosition = 'top',\n variant = 'info',\n useVariantLabelColor = true,\n isShowLine = true,\n className,\n testId = CN,\n}) => {\n const getFilledLineWidth = (): string => {\n if (value > maxValue) value = maxValue;\n return `${(((value - minValue) * 100) / (maxValue - minValue)).toFixed(symbolsAfterComma)}%`;\n };\n\n const renderLabel = (): JSX.Element | null => {\n if (!label) return null;\n return <div className={`progress-line__wrapper__label align-${labelAlign}`}>{label}</div>;\n };\n\n const renderProgressValue = (): JSX.Element | null => {\n if (!renderValue) return null;\n return (\n <div className=\"progress-line__wrapper__value\" aria-live=\"polite\">\n {renderValueInPercents\n ? getFilledLineWidth()\n : `${addBitDepthPoints(String(value))} ${valueMeasurement}`}\n </div>\n );\n };\n\n const renderExtremums = (): JSX.Element | null => {\n if (!showExtremums) return null;\n return (\n <div aria-hidden=\"true\" className={`progress-line__wrapper__extremums position-${extremumsPosition}`}>\n <div className=\"progress-line__wrapper__extremums--min\">\n {renderValueInPercents ? '0 %' : `${minValue} ${valueMeasurement}`}\n </div>\n <div className=\"progress-line__wrapper__extremums--max\">\n {renderValueInPercents ? '100 %' : `${maxValue} ${valueMeasurement}`}\n </div>\n </div>\n );\n };\n\n const renderFilledLine = (): JSX.Element => {\n return (\n <div\n className=\"progress-line__wrapper__line--filled\"\n role=\"progressbar\"\n aria-label={`Progress: ${value} out of ${maxValue}`}\n aria-valuenow={value}\n aria-valuemin={minValue}\n aria-valuemax={maxValue}\n style={{ width: getFilledLineWidth() }}\n >\n </div>\n );\n };\n\n const renderLine = (): JSX.Element => {\n return (\n <div className=\"progress-line__wrapper__line\">\n {renderExtremums()}\n {renderFilledLine()}\n </div>\n );\n };\n\n return (\n <div className={cn(CN, className)} data-testid={testId} role=\"region\" aria-label=\"Progress line\">\n {renderLabel()}\n <div\n className={`progress-line__wrapper variant-${\n useVariantLabelColor && variant\n } value-${valueVerticalPosition}-${valueHorizontalPosition} ${className}`}\n >\n {renderProgressValue()}\n {isShowLine && renderLine()}\n </div>\n </div>\n );\n};\n\nexport default ProgressLine;\n", "import ProgressLine from './ProgressLine';\n\nexport default ProgressLine;\nexport type { IProgressLineProps } from './ProgressLine.interface';\n", "import Status from './Status';\n\nexport default Status;\nexport type { IStatusProps } from './Status.interface';\n", "import React from \"react\";\n\nimport cn from \"classnames\";\n\nimport TdHeader from \"./Partials/TdHeader\";\nimport TdRow from \"./Partials/TdRow\";\n\nimport \"./Table.scss\";\n\nconst Table = ({\n rows,\n onChange,\n className,\n header,\n onActionClick,\n testId = \"table\",\n}) => {\n const handleArrayChange = (value, index) => {\n rows[index] = value;\n onChange({ header: [...header], rows: [...rows] });\n };\n\n return (\n <div\n data-testid={testId}\n className={cn(\"simple-table\", {\n [`simple-table--${className}`]: className,\n })}\n >\n <table>\n <thead>\n <tr>\n {header?.map((item) => (\n <TdHeader item={item} key={item.key} />\n ))}\n </tr>\n </thead>\n <tbody>\n {rows && rows?.length ? (\n rows?.map((row, index) => (\n <TdRow\n onActionClick={onActionClick}\n rowIndex={index}\n key={typeof row.id === \"object\" ? row.id.value : row.id}\n item={row}\n header={header}\n onChange={(value) => handleArrayChange(value, index)}\n />\n ))\n ) : (\n <tr>\n <td className=\"row--not-found\" colSpan={header?.length}>\n Not set\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n );\n};\n\nexport default Table;\n", "import React from \"react\";\n\nimport cn from \"classnames\";\n\nimport Langs from \"../../../../Langs\";\n\nimport \"../Table.scss\";\n\nconst TdHeader = ({ item, testId = \"td-header\" }) => {\n const txt = Langs[global.lng];\n\n switch (item.type) {\n case \"double\":\n return (\n <th data-testid={testId}>\n <div className=\"j46\">\n <div className=\"\">{txt.labels[item.left] || item.left}</div>\n <div className=\"\">{txt.labels[item.right] || item.right}</div>\n </div>\n </th>\n );\n default:\n return (\n <th data-testid={testId} className={cn(item.className)}>\n <div className={cn({ df: item.button })}>\n <div className=\"mr5\">{txt.labels[item.label] || item.label}</div>\n {item.button && (\n <div className=\"cards-table__btn\">\n {txt.buttons[item.button] || item.button}\n </div>\n )}\n </div>\n </th>\n );\n }\n};\n\nexport default TdHeader;\n", "import React, { useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport { handleObjectChange } from \"../../../../Functions/utils\";\nimport Modal from \"../../Modal/Modal\";\nimport TdRange from \"../TdTypes/TdRange\";\n\nimport TdCell from \"./TdCell\";\n\nimport \"../Table.scss\";\n\nconst TdRow = ({\n item,\n onChange,\n rowIndex,\n cardStatus,\n range,\n type,\n rowSpan,\n colSpan,\n cardLength,\n changePriority,\n getAdviceWeight,\n onActionClick,\n isDeleted,\n testId = \"td-row\",\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleChange = handleObjectChange(item, () => onChange({ ...item }));\n\n return (\n <>\n <tr data-testid={testId}>\n {type && rowSpan && (\n <td className=\"rel\" rowSpan={rowSpan + 1}>\n <span\n className={cn(\n type && `cards-table__score cards-table__score-${cardStatus}`,\n )}\n >\n <TdRange item={range} />\n </span>\n </td>\n )}\n\n {Object.entries(item).map(([key, value]) =>\n key === \"id\" || key === \"isDeleted\" ? null : (\n <td\n key={key}\n className={cn(\"cards-table__body-item\", {\n \"cards-table__accordion\": value.type === \"accordion\",\n })}\n >\n <TdCell\n onActionClick={onActionClick}\n changePriority={changePriority}\n cardLength={cardLength}\n rowIndex={rowIndex}\n rowItem={item}\n type={key}\n item={value}\n onChange={(newValue) => handleChange(newValue, key)}\n getAdviceWeight={getAdviceWeight}\n isDeleted={isDeleted}\n />\n </td>\n ),\n )}\n </tr>\n\n {type && colSpan ? (\n <tr>\n <td />\n <td colSpan={colSpan}>\n <span\n className=\"cards-table__title-select-lender-btn\"\n onClick={() => setIsOpen(true)}\n >\n Select Lender\n </span>\n\n <Modal\n closeModal={() => setIsOpen(false)}\n isOpen={isOpen}\n title=\"Choose Lender\"\n size=\"420\"\n >\n test\n </Modal>\n </td>\n </tr>\n ) : null}\n </>\n );\n};\n\nexport default TdRow;\n", "const TdRange = ({ item }) => {\n if (!item) return false;\n\n return (\n <div>\n <span>{item.from}</span>\n <span> - </span>\n <span>{item.to}</span>\n </div>\n );\n};\n\nexport default TdRange;\n", "import React, { useState } from \"react\";\n\nimport AccordionItem from \"../../Accordion/AccordionItem\";\nimport AdvancedTags from \"../../AdvancedTag/AdvancedTags\";\nimport Status from \"../../Status/Status\";\nimport Tag from \"../../Tag/Tag\";\nimport Table from \"../Table\";\nimport { TdActions } from \"../TdTypes/TdActions\";\nimport TdPriority from \"../TdTypes/TdPriority\";\nimport TdWeight from \"../TdTypes/TdWeight\";\n\nimport \"../Table.scss\";\n\nconst TdCell = ({\n type,\n item,\n rowIndex,\n onChange,\n cardLength,\n changePriority,\n getAdviceWeight,\n onActionClick,\n rowItem,\n isDeleted,\n}) => {\n const [isAccordionOpen, setIsAccordionOpen] = useState(item.isOpen);\n\n const percent =\n item.type === \"weight\" && getAdviceWeight(isDeleted ? 0 : item.value);\n\n switch (type) {\n case \"accordion\":\n return (\n <AccordionItem\n className={item.itemClassName}\n item={item}\n isOpen={isAccordionOpen}\n onClick={(e) => setIsAccordionOpen(e)}\n >\n <Table rows={item.rows} className=\"accordion--table\" />\n </AccordionItem>\n );\n case \"actions\":\n return (\n <TdActions\n rowItem={rowItem}\n actions={item}\n onChange={onChange}\n onActionClick={onActionClick}\n />\n );\n case \"advancedTags\":\n return <AdvancedTags items={item} />;\n case \"link\":\n return <a href={item.link}>{item.label}</a>;\n case \"priority\":\n return (\n <TdPriority\n rowIndex={rowIndex}\n cardLength={cardLength}\n onClick={changePriority}\n />\n );\n case \"status\":\n return (\n <Status\n className={item.className}\n label={item.label}\n status={item.status}\n />\n );\n case \"tags\":\n return item.map((tag, index) => <Tag key={index} label={tag.label} />);\n case \"weight\":\n return (\n <TdWeight\n value={item.value}\n percent={percent}\n onChange={(value) => onChange({ ...item, value })}\n />\n );\n default:\n return <span className={item.className}>{item.value}</span>;\n }\n};\n\nexport default TdCell;\n", "import type { AccordionLinkComponent, IAccordionItemProps } from './Accordion.interface';\nimport cn from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\nimport * as Icons from 'react-feather';\n\nimport Status from '../Status';\n\nimport './Accordion.scss';\n\n/**\n * \u0414\u0435\u0444\u043E\u043B\u0442\u043D\u0430\u044F \u0441\u0441\u044B\u043B\u043A\u0430 menu-\u043F\u0443\u043D\u043A\u0442\u043E\u0432 \u2014 \u043E\u0431\u044B\u0447\u043D\u044B\u0439 <a href> \u0411\u0415\u0417 react-router-dom.\n * AccordionItem \u043E\u0431\u044F\u0437\u0430\u043D \u043E\u0441\u0442\u0430\u0432\u0430\u0442\u044C\u0441\u044F router-free: \u0435\u0433\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 Table -> TdCell\n * \u0438\u0437 subpath \"ui\". SPA-\u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 Accordion (subpath \"router-ui\"),\n * \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044F \u0441\u044E\u0434\u0430 NavLink \u0447\u0435\u0440\u0435\u0437 prop linkComponent.\n */\nconst DefaultLink: AccordionLinkComponent = ({ to, className, children }) => (\n <a href={to} className={className}>\n {children}\n </a>\n);\n\nconst AccordionItem: React.FC<IAccordionItemProps> = ({\n item,\n onClick,\n isOpen,\n className,\n children,\n noChevron,\n linkComponent: LinkComponent = DefaultLink,\n testId = 'accordion-item',\n}) => {\n const Icon = Icons[item.icon as keyof typeof Icons];\n const [maxHeight, setMaxHeight] = useState<number>(0);\n const ref = useRef<HTMLDivElement>(null);\n\n const getItemsHeight = (): number => {\n let itemHeight = 0;\n ref.current?.childNodes.forEach((el) => {\n itemHeight += (el as HTMLElement).offsetHeight;\n });\n\n return itemHeight + 20;\n };\n\n useEffect(() => {\n setMaxHeight(isOpen ? getItemsHeight() : 0);\n }, [isOpen]);\n\n const calculateStatusCount = (): {\n active: number;\n pause: number;\n } | undefined => {\n return item?.rows?.reduce(\n (acc, row) => {\n const result = row.cols.reduce(\n (accum, col) => ({\n active: accum.active + (col.status === 'active' ? 1 : 0),\n pause: accum.pause + (col.status === 'pause' ? 1 : 0),\n }),\n { active: 0, pause: 0 },\n );\n\n return {\n active: acc.active + result.active,\n pause: acc.pause + result.pause,\n };\n },\n { active: 0, pause: 0 },\n );\n };\n\n return (\n <div\n data-testid={testId}\n className={cn('accordion--item', className)}\n role=\"region\"\n aria-labelledby={`accordion-title-${item.title}`}\n >\n <div\n className={cn('accordion--title-box', {\n 'accordion--title-open': isOpen,\n })}\n onClick={() => onClick(!isOpen)}\n id={`accordion-title-${item.title}`}\n role=\"button\"\n aria-expanded={isOpen}\n aria-controls={`accordion-content-${item.title}`}\n tabIndex={0}\n >\n <div className=\"j4 no-wrap\">\n {item?.icon && <Icon className={cn('mr5', item?.className)} aria-hidden=\"true\" />}\n <span className=\"accordion--title\">{item.title || 'Menu Chapter'}</span>\n </div>\n\n <div className=\"j6 accordion-title__right-box\">\n {item.status && (\n <div className=\"mr5\">\n <Status\n type={item?.status.type}\n value={item?.status.value}\n status={item?.status.status}\n active={calculateStatusCount()?.active}\n pause={calculateStatusCount()?.pause}\n />\n </div>\n )}\n\n {!noChevron && (\n <Icons.ChevronRight\n aria-hidden=\"true\"\n className={cn('accordion--title-chevron', {\n 'accordion--title-chevron-open': isOpen,\n })}\n />\n )}\n </div>\n </div>\n\n <div\n ref={ref}\n style={{ maxHeight }}\n className={cn('accordion--content', {\n 'accordion--content-is-open': isOpen,\n })}\n id={`accordion-content-${item.title}`}\n role=\"region\"\n aria-labelledby={`accordion-title-${item.title}`}\n >\n {item.children\n ? item.children.map((el) => {\n return (\n <LinkComponent to={el.link} key={el.id} className=\"accordion--content-item accordion--menu-link\">\n {el?.title || 'Menu item'}\n </LinkComponent>\n );\n })\n : children}\n </div>\n </div>\n );\n};\n\nexport default AccordionItem;\n", "import React, { useState } from \"react\";\n\nimport * as Icons from \"react-feather\";\n\nimport Switcher from \"../../../FormElements/Switcher/Switcher\";\n\nimport \"./TdTypes.scss\";\n\nexport const TdActions = ({ actions, onChange, onActionClick, rowItem }) => {\n if (!actions) return false;\n\n const [state, setState] = useState(actions);\n\n const handleArrayChange = (value, index, prop) => {\n state[index][prop] = value;\n setState([...state]);\n onChange(state);\n };\n\n return (\n <div className=\"j6\">\n {actions?.map((action, index) => {\n switch (action.type) {\n case \"download\":\n return (\n <div\n key={index}\n className=\"td-actions--item td-actions--download\"\n onClick={() => {}}\n >\n <Icons.Download />\n </div>\n );\n case \"edit\":\n return (\n <div\n key={index}\n className=\"td-actions--item td-actions--edit\"\n onClick={() => {}}\n >\n <Icons.Edit3 />\n </div>\n );\n case \"delete\":\n return (\n <div\n key={index}\n className=\"td-actions--item td-actions--delete\"\n onClick={() => onActionClick(\"delete\", rowItem)}\n >\n <Icons.Trash2 />\n </div>\n );\n case \"undo\":\n return (\n <div\n key={index}\n className=\"td-actions--item td-actions--undo\"\n onClick={() => onActionClick(\"undo\", rowItem)}\n >\n <Icons.RotateCcw />\n </div>\n );\n case \"switcher\":\n return (\n <div key={index} className=\"df\">\n <Switcher\n label={action.label || null}\n isActive={action?.value}\n onChange={(e) => handleArrayChange(e, index, \"value\")}\n />\n </div>\n );\n default:\n return null;\n }\n })}\n </div>\n );\n};\n", "import React from \"react\";\n\nimport cn from \"classnames\";\nimport { ArrowDown, ArrowUp } from \"react-feather\";\n\nimport \"../Table.scss\";\n\nconst TdPriority = ({ onClick, rowIndex, cardLength }) => {\n return (\n <div className=\"cards-table__priority\">\n <span className=\"mr5\">{rowIndex + 1}</span>\n <div className=\"df\">\n <ArrowDown\n onClick={() => onClick(rowIndex)}\n className={cn(\"table--icon\", {\n disabled: rowIndex + 1 === cardLength,\n })}\n />\n <ArrowUp\n onClick={() => onClick(rowIndex, true)}\n className={cn(\"table--icon\", { disabled: rowIndex === 0 })}\n />\n </div>\n </div>\n );\n};\n\nexport default TdPriority;\n", "import { useEffect, useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport { useOutsideToggle } from \"../../../../Functions/utils\";\nimport { KEY_CODE } from \"../../Modal/Modal\";\n\nimport \"../Table.scss\";\n\nconst TdWeight = ({ value, percent, onChange, className }) => {\n const [state, setState] = useState(value);\n const {\n isToggled: isEdited,\n toggleOff: unsetIsEdited,\n toggleOn: setIsEdited,\n } = useOutsideToggle(false);\n\n useEffect(() => {\n setState(value);\n }, [value, isEdited]);\n\n const handleKeyUp = ({ keyCode, target }) => {\n if (keyCode === KEY_CODE.ENTER) {\n const newValue = Number(target.value) || 1;\n onChange(newValue);\n unsetIsEdited();\n }\n };\n\n return (\n <>\n {isEdited ? (\n <Input\n value={state}\n onChange={(e) => setState(e)}\n onBlur={unsetIsEdited}\n onKeyUp={handleKeyUp}\n autoFocus\n />\n ) : (\n <div className={cn(\"td-weight\", className)} onClick={setIsEdited}>\n <span>{value}</span>\n <span className=\"ml2 color--grey-gull\">\n ({percent}\n %)\n </span>\n </div>\n )}\n </>\n );\n};\n\nexport default TdWeight;\n", "import Tag from './Tag';\n\nexport default Tag;\nexport type { ITagProps } from './Tag.interface';\n", "import type { ReactNode } from 'react';\nimport type { IUserBoxProps } from './UserBox.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\nimport { getColorById } from '../../../Functions/utils';\n\nimport Label from '../../FormElements/Label/Label';\nimport Button from '../Button/Button';\n\nimport './UserBox.scss';\n\nconst UserBox: React.FC<IUserBoxProps> = ({\n name = 'Username',\n role,\n id,\n onClick,\n isModal,\n className,\n colors,\n testId = 'userbox',\n}) => {\n const getNameFirstLetter = name.charAt(0).toUpperCase();\n\n const renderUser = (): ReactNode => {\n if (isModal) {\n return (\n <>\n <div style={{ backgroundColor: getColorById(id, colors) }} className=\"td-user-box__avatar\">\n {getNameFirstLetter}\n </div>\n <div className=\"td-user-box__user-data\">\n <Button className=\"p0 no-shadow\" onClick={onClick} label={name} variant=\"link\" />\n {role && <span>{role}</span>}\n </div>\n </>\n );\n }\n else {\n return (\n <>\n <div style={{ backgroundColor: getColorById(id) }} className=\"td-user-box__avatar\">\n {getNameFirstLetter}\n </div>\n <div className=\"td-user-box__user-data\">\n <Label label={name} />\n {role && <span aria-label={`User role: ${role}`}>{role}</span>}\n </div>\n </>\n );\n }\n };\n\n return (\n <div\n data-testid={testId}\n className={cn('td-user-box', className)}\n role=\"region\"\n aria-label={`User box for ${name}`}\n >\n {renderUser()}\n </div>\n );\n};\n\nexport default UserBox;\n", "import UserBox from './UserBox';\n\nexport default UserBox;\nexport type { IUserBoxProps } from './UserBox.interface';\n", "import type { IStepWrapperProps } from '../../WizardStepper.interface';\nimport classNames from 'classnames';\n\nimport React from 'react';\nimport Box from '../../../Box/Box';\nimport { alternativeIconSet } from '../icons';\nimport StepRow from '../StepRow/StepRow';\n\nimport './StepWrapper.scss';\n\nconst StepWrapper: React.FC<IStepWrapperProps> = ({\n steps,\n customIcons,\n variant = 'default',\n className,\n testId = 'step-wrapper',\n}) => {\n if (!steps?.length) return <div data-testid=\"empty-state\">No steps available</div>;\n\n const renderStepRow = (step: IStepWrapperProps['steps'][number]): JSX.Element => {\n const { key, ...stepProps } = step;\n return (\n <StepRow\n key={key}\n {...stepProps}\n customIcons={customIcons || alternativeIconSet}\n />\n );\n };\n\n switch (variant) {\n case 'ghost':\n return (\n <Box\n className={classNames('step-wrapper', 'step-wrapper-ghost', className)}\n data-testid={testId}\n >\n {steps?.map(renderStepRow)}\n </Box>\n );\n case 'cardActive':\n return (\n <div\n className={classNames('step-wrapper', 'step-wrapper-card-active', className)}\n data-testid={testId}\n >\n {steps?.map(renderStepRow)}\n </div>\n );\n default:\n return (\n <div\n className={classNames('step-wrapper', className)}\n data-testid={testId}\n >\n {steps?.map(renderStepRow)}\n </div>\n );\n }\n};\n\nexport default StepWrapper;\n", "import React from 'react';\n\nconst DoneIcon: React.FC<React.SVGProps<SVGSVGElement>> = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"20\" height=\"20\" rx=\"10\" fill=\"#69A457\" />\n <mask id=\"mask0_54394_4001\" style={{ maskType: 'alpha' }} maskUnits=\"userSpaceOnUse\" x=\"2\" y=\"2\" width=\"16\" height=\"16\">\n <path d=\"M14.5 7L9 12.5L6 9.5\" stroke=\"black\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </mask>\n <g mask=\"url(#mask0_54394_4001)\">\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" fill=\"white\" />\n </g>\n </svg>\n)\n\nconst TodoIcon: React.FC<React.SVGProps<SVGSVGElement>> = () => {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_54394_4448)\">\n <circle cx=\"10\" cy=\"10\" r=\"7\" fill=\"white\" stroke=\"#B3B8CB\" strokeWidth=\"2\" />\n </g>\n <defs>\n <clipPath id=\"clip0_54394_4448\">\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(2 2)\" />\n </clipPath>\n </defs>\n </svg>\n\n );\n};\n\nconst ActiveIcon: React.FC<React.SVGProps<SVGSVGElement>> = () => {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"20\" height=\"20\" rx=\"10\" fill=\"#E8F9E5\" />\n ii\n <mask id=\"mask0_54394_1459\" style={{ maskType: 'alpha' }} maskUnits=\"userSpaceOnUse\" x=\"2\" y=\"2\" width=\"16\" height=\"16\">\n <circle cx=\"10\" cy=\"10\" r=\"4\" fill=\"#171D33\" />\n </mask>\n <g mask=\"url(#mask0_54394_1459)\">\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" fill=\"#171D33\" />\n </g>\n </svg>\n\n );\n};\n\nexport const alternativeIconSet: {\n defaultIcon: React.ReactElement;\n doneIcon: React.ReactElement;\n activeIcon: React.ReactElement;\n} = {\n defaultIcon: <TodoIcon />,\n doneIcon: <DoneIcon />,\n activeIcon: <ActiveIcon />,\n};\n", "import type { IStepRowProps } from '../../WizardStepper.interface';\nimport cn from 'classnames';\nimport React from 'react';\nimport Status from '../../../Status/Status';\nimport { WIZARD_STEP_VARIANTS } from '../../constructor';\nimport StateIcon from '../StateIcon';\nimport './StepRow.scss';\n\nconst RC = 'step-row';\n\nconst { DEFAULT, ACTIVE, DONE } = WIZARD_STEP_VARIANTS;\n\nconst StepRow: React.FC<IStepRowProps> = ({\n label,\n description,\n className,\n isOptional,\n isFinished,\n isActive,\n titleSlot,\n contentSlot,\n customIcons,\n}) => {\n const title = label;\n\n const rowVariant = (() => {\n if (isActive) return ACTIVE;\n if (isFinished) return DONE;\n return DEFAULT;\n })();\n\n const alternaviteIconFromProps = (() => {\n if (isActive) return customIcons?.activeIcon;\n if (isFinished) return customIcons?.doneIcon;\n return customIcons?.defaultIcon;\n })();\n\n const CorrectIcon: React.FC = () => {\n if (!customIcons || Object?.values(customIcons)?.every(icon => !icon)) {\n return <StateIcon variant={rowVariant} />;\n }\n\n return alternaviteIconFromProps as React.ReactElement<any, any> || null;\n };\n\n return (\n <div key={label} className={cn(RC, `${RC}--${rowVariant}`, className)}>\n <div className={cn(`${RC}__state-point`, `${RC}__state-point--${rowVariant}`)}>\n <CorrectIcon />\n </div>\n\n <div className={`${RC}__content`}>\n <div className={`${RC}__title`}>\n <div className={`${RC}__title-left`}>\n <div className={cn(`${RC}__title-text`, { 'text-muted': rowVariant === DEFAULT })}>\n {title}\n </div>\n {isOptional && <Status label=\"Optional\" status=\"draft\" />}\n </div>\n\n {titleSlot && (\n <div className={`${RC}__title-right`}>\n {titleSlot}\n </div>\n )}\n </div>\n\n {description && <div className={`${RC}__description`}>{description}</div>}\n {contentSlot && <div className={`${RC}__body`}>{contentSlot}</div>}\n </div>\n </div>\n );\n};\n\nexport default StepRow;\n", "import React from 'react';\nimport Status from '../Status/Status';\nexport const WIZARD_STEP_VARIANTS = Object.freeze({\n DEFAULT: 'default',\n DONE: 'done',\n ACTIVE: 'active',\n});\n\nconst JSXMockComponent = () => {\n const arr = [\n { title: 'Requested Amont', value: '$15,000' },\n { title: 'Repayment Amount', value: '$15,001' },\n { title: 'Repayment Date', value: '12/12/2021' },\n ]\n\n const textStyles = {\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '20px',\n letterSpacing: '0.2px'\n };\n\n return arr.map(row => {\n return <div style={{ display: 'flex', justifyContent: 'space-between', maxWidth: '250px'}}>\n <span style={textStyles}>{row.title}</span>\n <span style={textStyles}>{row.value}</span>\n </div>\n });\n}\n\nexport const mockData = [\n {\n key: 'businessInfo',\n label: 'Provide Business Info',\n description: 'This information will help us to evaluate your application',\n isFinished: true,\n },\n {\n key: 'principal',\n label: 'Add Principal Information',\n description: 'A principal is essentially another name for a company owner. At some corporations, the principal is also the founder, CEO, or even the chief investor',\n isFinished: true,\n isOptional: true,\n },\n {\n key: 'coOwners',\n label: 'Add Co-Owners',\n description: '{merchantName} will receive that amount from {lenderNmae}',\n isActive: true,\n titleSlot: <span className='custom-title-slot'>$15,001</span>,\n contentSlot: <JSXMockComponent />,\n },\n {\n key: 'bankAccount',\n label: 'Add a Bank Account',\n description: 'Your bank account information will be used to securely and automatically transfer the funds',\n titleSlot: <Status label=\"Some JSX\" status=\"draft\" />,\n },\n {\n key: 'documents',\n label: 'Upload Documents',\n description: 'Please upload the required documents',\n },\n {\n key: 'review',\n label: 'Review & Submit',\n description: 'Please review the information and submit your application',\n },\n {\n key: 'success',\n label: 'Success',\n description: 'Your application has been submitted successfully',\n },\n {\n key: 'failure',\n label: 'Failure',\n description: 'Your application has been failed',\n },\n {\n key: 'pending',\n label: 'Pending',\n description: 'Your application is under review',\n },\n]\n", "import type { IStateIconProps } from '../../WizardStepper.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\nimport { WIZARD_STEP_VARIANTS } from '../../constructor';\n\nimport './StateIcon.scss';\n\nconst DefaultPoint: React.FC = () => {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <circle cx=\"8\" cy=\"8\" r=\"4\" />\n </svg>\n );\n};\n\nconst DonePoint: React.FC = () => {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M12.5 5L7 10.5L4 7.5\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n};\n\nconst RC = 'state-icon';\n\nconst { ACTIVE, DEFAULT, DONE } = WIZARD_STEP_VARIANTS;\n\nexport const StateIcon: React.FC<IStateIconProps> = ({ variant = DEFAULT, className }) => {\n const computedState = variant === ACTIVE || variant === DONE ? variant : DEFAULT;\n\n const Inner = {\n [DEFAULT]: <DefaultPoint />,\n [ACTIVE]: <DefaultPoint />,\n [DONE]: <DonePoint />,\n };\n\n return <div className={cn(RC, `${RC}--${computedState}`, className)}>{Inner[computedState]}</div>;\n};\n", "import { StateIcon } from './StateIcon';\n\nexport default StateIcon;\n", "import StepWrapper from './StepWrapper';\n\nexport default StepWrapper;\n", "import StepWrapper from './StepWrapper';\n\nexport default StepWrapper;\n", "import WizardStepper from './ui';\n\nexport default WizardStepper;\nexport type { IStateIconProps, IStepRowProps, IStepWrapperProps } from './WizardStepper.interface';\n", "/**\n * @name isArray\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isArray \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C.\n * @example\n * const result = isArray([]);\n * console.log(result); // true\n * @example\n * const result = isArray({});\n * console.log(result); // false\n */\nconst isArray = (value: unknown): value is unknown[] => Array.isArray(value);\n\n/**\n * @name isObject\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isObject \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isObject({});\n * console.log(result); // true\n * @example\n * const result = isObject([]);\n * console.log(result); // false\n */\nfunction isObject(value: unknown): value is object {\n return typeof value === 'object' && value !== null && !isArray(value)\n}\n\n/**\n * @name isNumber\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isNumber \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0447\u0438\u0441\u043B\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isNumber(1);\n * console.log(result); // true\n */\nconst isNumber = (value: unknown): value is number => typeof value === 'number';\n\n/**\n * @name isString\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isString \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0441\u0442\u0440\u043E\u043A\u043E\u0439.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isString('string');\n * console.log(result); // true\n */\nconst isString = (value: unknown): value is string => typeof value === 'string';\n\n/**\n * @name isBoolean\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isBoolean \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0431\u0443\u043B\u0435\u0432\u044B\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isBoolean(true);\n * console.log(result); // true\n */\nconst isBoolean = (value: unknown): value is boolean => typeof value === 'boolean';\n\n/**\n * @name isFunction\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isFunction \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u0435\u0439.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isFunction(() => {});\n * console.log(result); // true\n * @example\n * const result = isFunction('string');\n * console.log(result); // false\n * @example\n * const result = isFunction(1);\n * console.log(result); // false\n */\nconst isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n/**\n * @name isInstanceOf\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isInstanceOf \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C \u043A\u043B\u0430\u0441\u0441\u0430.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param classType - \u043A\u043B\u0430\u0441\u0441 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * class TestClass {}\n * const result = isInstanceOf(new TestClass(), TestClass);\n * console.log(result); // true\n */\nconst isInstanceOf = <T>(value: unknown, classType: new () => T): value is T => value instanceof classType;\n\n/**\n * @name isEnumValue\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isEnumValue \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum.\n * @param enumObject - enum \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * enum Colors {\n * Red = 'red',\n * Green = 'green',\n * Blue = 'blue',\n * }\n * const result = isEnumValue(Colors, 'red');\n * console.log(result); // true\n * @returns true - \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum, false - \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum\n */\nfunction isEnumValue<T extends string | number>(enumObject: Record<string, T>, value: unknown): value is T {\n return Object.values(enumObject).includes(value as T)\n}\n\n/**\n * @name isNullOrUndefined\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isNullOrUndefined \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F null \u0438\u043B\u0438 undefined.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isNullOrUndefined(null) // true\n * isNullOrUndefined(undefined) // true\n * isNullOrUndefined(1) // false\n */\nfunction isNullOrUndefined(value: unknown): value is null | undefined {\n return value === null || value === undefined\n}\n\n/**\n * @name isTruthy\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isTruthy \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F true.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isTruthy(true) // true\n * isTruthy(1) // true\n * isTruthy(Infinity) // true\n * isTruthy(-Infinity) // true\n * isTruthy(Symbol()) // true\n * isTruthy('some string') // true\n * isTruthy({}) // true\n * isTruthy([]) // true\n * isTruthy(Symbol('some description')) // true\n * isTruthy(() => {}) // true\n * isTruthy(function() {}) // true\n * isTruthy(class {}) // true\n * isTruthy(0) // false\n * isTruthy('') // false\n * isTruthy(null) // false\n * isTruthy(undefined) // false\n * isTruthy(NaN) // false\n * isTruthy(false) // false\n */\nconst isTruthy = (value: unknown): value is boolean | number | string | object => !!value;\n\n/**\n * @name isEmptyObject\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isEmptyObject \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0443\u0441\u0442\u044B\u043C \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isEmptyObject({}) // true\n * isEmptyObject({ a: 1 }) // false\n */\nconst isEmptyObject = (value: unknown): value is object => isObject(value) && Object.keys(value).length === 0;\n\n/**\n * @name isTypedArray\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isTypedArray \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param type - \u0442\u0438\u043F \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isTypedArray([1, 2, 3], Number) // true\n * isTypedArray([1, 2, 3], String) // false\n */\nfunction isTypedArray<T>(value: unknown, type: new (...args: any[]) => T): value is T[] {\n return isArray(value) && value.every(item => item instanceof type)\n}\n\n/**\n * @name isArrayWithLength\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isArrayWithLength \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0439 \u0434\u043B\u0438\u043D\u044B.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param length - \u0434\u043B\u0438\u043D\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n * @example\n * isArrayWithLength([1, 2, 3], 3) // true\n * isArrayWithLength([1, 2, 3], 2) // false\n */\nfunction isArrayWithLength(value: unknown, length: number): value is unknown[] {\n return isArray(value) && value.length === length\n}\n\n/**\n * @name isEmptyArray\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isEmptyArray \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0443\u0441\u0442\u044B\u043C \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isEmptyArray([]) // true\n * isEmptyArray([1]) // false\n */\nconst isEmptyArray = (value: unknown): value is [] => Array.isArray(value) && value.length === 0;\n\n/**\n * @name isTypeOrNull\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isTypeOrNull \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C \u043A\u043B\u0430\u0441\u0441\u0430 \u0438\u043B\u0438 null.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param type - \u043A\u043B\u0430\u0441\u0441 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isTypeOrNull(null, SomeClass) // true\n * isTypeOrNull(new SomeClass(), SomeClass) // true\n */\nfunction isTypeOrNull<T>(value: unknown, type: new (...args: any[]) => T): value is T | null {\n return value === null || value instanceof type\n}\n\nconst nonNullable = <T>(value: T): value is NonNullable<T> => value !== null && value !== undefined;\n\n/**\n * @name isDate\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isDate \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C Date.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isDate(new Date()) // true\n * isDate('2023-01-01') // false\n */\nconst isDate = (value: unknown): value is Date => value instanceof Date;\n\n/**\n * @name isPromise\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isPromise \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F Promise.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isPromise(Promise.resolve()) // true\n * isPromise({ then: () => {} }) // false\n */\nconst isPromise = (value: unknown): value is Promise<unknown> => value instanceof Promise;\n\n/**\n * @name isRegExp\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isRegExp \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u044B\u043C \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isRegExp(/test/) // true\n * isRegExp('test') // false\n */\nconst isRegExp = (value: unknown): value is RegExp => value instanceof RegExp;\n\n/**\n * @name isPrimitive\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isPrimitive \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isPrimitive(42) // true\n * isPrimitive('test') // true\n * isPrimitive(true) // true\n * isPrimitive(null) // true\n * isPrimitive(undefined) // true\n * isPrimitive({}) // false\n */\nfunction isPrimitive(value: unknown): value is string | number | boolean | null | undefined {\n return value === null || value === undefined || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean'\n}\n\n/**\n * @name isError\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isError \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C \u043E\u0448\u0438\u0431\u043A\u0438.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isError(new Error()) // true\n * isError({ message: 'error' }) // false\n */\nconst isError = (value: unknown): value is Error => value instanceof Error;\n\n/**\n * @name isSymbol\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isSymbol \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isSymbol(Symbol()) // true\n * isSymbol('symbol') // false\n */\nconst isSymbol = (value: unknown): value is symbol => typeof value === 'symbol';\n\n/**\n * @name isMap\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isMap \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C Map.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isMap(new Map()) // true\n * isMap({}) // false\n */\nconst isMap = (value: unknown): value is Map<unknown, unknown> => value instanceof Map;\n\n/**\n * @name isSet\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isSet \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C Set.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isSet(new Set()) // true\n * isSet([]) // false\n */\nconst isSet = (value: unknown): value is Set<unknown> => value instanceof Set;\n\n/**\n * @name isReactElement\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isReactElement \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isReactElement(<div>Test</div>) // true\n * isReactElement('div') // false\n */\nfunction isReactElement(value: unknown): value is React.ReactElement {\n return isObject(value) && 'type' in value && 'props' in value && '$$typeof' in value;\n}\n\n/**\n * @name isReactComponent\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isReactComponent \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const MyComponent = () => <div>Test</div>;\n * isReactComponent(MyComponent) // true\n * isReactComponent('div') // false\n */\nfunction isReactComponent(value: unknown): value is React.ComponentType {\n return isFunction(value) || (isObject(value) && 'render' in value);\n}\n\n/**\n * @name isComponentType\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isComponentType \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0442\u0438\u043F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430, \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param componentType - \u0442\u0438\u043F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const MyComponent = () => <div>Test</div>;\n * isComponentType(<MyComponent />, MyComponent) // true\n */\nfunction isComponentType<T extends React.ComponentType>(value: unknown, componentType: T): value is React.ReactElement<React.ComponentProps<T>> {\n return isReactElement(value) && value.type === componentType;\n}\n\n/**\n * @name isReactEvent\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isReactEvent \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u0441\u043E\u0431\u044B\u0442\u0438\u0435\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const handleClick = (e) => {\n * if (isReactEvent(e)) {\n * e.preventDefault();\n * }\n * };\n */\nfunction isReactEvent(value: unknown): value is React.SyntheticEvent {\n return isObject(value) && 'nativeEvent' in value && 'currentTarget' in value && 'target' in value;\n}\n\n/**\n * @name isRef\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isRef \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u0440\u0435\u0444\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const ref = useRef(null);\n * isRef(ref) // true\n */\nfunction isRef(value: unknown): value is React.RefObject<unknown> {\n return isObject(value) && 'current' in value;\n}\n\n/**\n * @name isContext\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isContext \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const MyContext = React.createContext(null);\n * isContext(MyContext) // true\n */\nfunction isContext(value: unknown): value is React.Context<unknown> {\n return isObject(value) && 'Provider' in value && 'Consumer' in value;\n}\n\n/**\n * @name isType\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isType \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0442\u0438\u043F, \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u043C\u0443 \u0442\u0438\u043F\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param type - \u0442\u0438\u043F \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * interface User {\n * name: string;\n * age: number;\n * }\n *\n * const user = { name: \"John\", age: 30 };\n * const isUser = isType<User>(user,);\n * console.log(isUser); // true\n *\n * const notUser = \"John\";\n * console.log(isType<User>(notUser)); // false\n */\nfunction isType<T>(value: unknown): value is T {\n const type = typeof value;\n return (\n type === 'string'\n || type === 'number'\n || type === 'boolean'\n || type === 'object'\n || type === 'function'\n || type === 'undefined'\n || type === 'symbol'\n || type === 'bigint'\n );\n}\n\nconst typesGuards = {\n isArray,\n isObject,\n isNumber,\n isString,\n isBoolean,\n isFunction,\n isInstanceOf,\n isEnumValue,\n isNullOrUndefined,\n isTruthy,\n isEmptyObject,\n isEmptyArray,\n isTypedArray,\n isArrayWithLength,\n isTypeOrNull,\n nonNullable,\n isDate,\n isPromise,\n isRegExp,\n isPrimitive,\n isError,\n isSymbol,\n isMap,\n isSet,\n isReactElement,\n isReactComponent,\n isComponentType,\n isReactEvent,\n isRef,\n isContext,\n isType,\n};\n\nexport default typesGuards;\n", "import typesGuards from './typeGuards';\n\n/**\n * @name assertArray\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertArray \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C\n * @example\n * assertArray([]); // OK\n * assertArray({}); // TypeError: Expected value to be an array\n */\nfunction assertArray(value: unknown, message?: string): asserts value is unknown[] {\n if (!Array.isArray(value)) {\n throw new TypeError(message || 'Expected value to be an array');\n }\n}\n\n/**\n * @name assertObject\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertObject \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C\n * @example\n * assertObject({}); // OK\n * assertObject([]); // TypeError: Expected value to be an object\n */\nfunction assertObject(value: unknown, message?: string): asserts value is object {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new TypeError(message || 'Expected value to be an object');\n }\n}\n\n/**\n * @name assertNumber\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertNumber \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0447\u0438\u0441\u043B\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \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\n * @example\n * assertNumber(1); // OK\n * assertNumber('1'); // TypeError: Expected value to be a number\n */\nfunction assertNumber(value: unknown, message?: string): asserts value is number {\n if (typeof value !== 'number') {\n throw new TypeError(message || 'Expected value to be a number');\n }\n}\n\n/**\n * @name assertString\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertString \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0441\u0442\u0440\u043E\u043A\u043E\u0439. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0441\u0442\u0440\u043E\u043A\u043E\u0439\n * @example\n * assertString('text'); // OK\n * assertString(1); // TypeError: Expected value to be a string\n */\nfunction assertString(value: unknown, message?: string): asserts value is string {\n if (typeof value !== 'string') {\n throw new TypeError(message || 'Expected value to be a string');\n }\n}\n\n/**\n * @name assertBoolean\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertBoolean \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0431\u0443\u043B\u0435\u0432\u044B\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0431\u0443\u043B\u0435\u0432\u044B\u043C\n * @example\n * assertBoolean(true); // OK\n * assertBoolean('true'); // TypeError: Expected value to be a boolean\n */\nfunction assertBoolean(value: unknown, message?: string): asserts value is boolean {\n if (typeof value !== 'boolean') {\n throw new TypeError(message || 'Expected value to be a boolean');\n }\n}\n\n/**\n * @name assertFunction\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertFunction \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0444\u0443\u043D\u043A\u0446\u0438\u0435\u0439. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u0435\u0439\n * @example\n * assertFunction(() => {}); // OK\n * assertFunction('function'); // TypeError: Expected value to be a function\n */\nfunction assertFunction(value: unknown, message?: string): asserts value is (...args: any[]) => any {\n if (typeof value !== 'function') {\n throw new TypeError(message || 'Expected value to be a function');\n }\n}\n\n/**\n * @name assertInstanceOf\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertInstanceOf \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C \u043A\u043B\u0430\u0441\u0441\u0430. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param classType - \u043A\u043B\u0430\u0441\u0441 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C \u043A\u043B\u0430\u0441\u0441\u0430\n * @example\n * class TestClass {}\n * assertInstanceOf(new TestClass(), TestClass); // OK\n * assertInstanceOf({}, TestClass); // TypeError: Expected value to be an instance of TestClass\n */\nfunction assertInstanceOf<T>(value: unknown, classType: new () => T, message?: string): asserts value is T {\n if (!(value instanceof classType)) {\n throw new TypeError(message || `Expected value to be an instance of ${classType.name}`);\n }\n}\n\n/**\n * @name assertEnumValue\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertEnumValue \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param enumObject - enum \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum\n * @example\n * enum Colors { Red = 'red', Green = 'green', Blue = 'blue' }\n * assertEnumValue(Colors, 'red'); // OK\n * assertEnumValue(Colors, 'yellow'); // TypeError: Expected value to be one of: red, green, blue\n */\nfunction assertEnumValue<T extends string | number>(\n enumObject: Record<string, T>,\n value: unknown,\n message?: string,\n): asserts value is T {\n if (!Object.values(enumObject).includes(value as T)) {\n throw new TypeError(\n message || `Expected value to be one of: ${Object.values(enumObject).join(', ')}`,\n );\n }\n}\n\n/**\n * @name assertReactElement\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertReactElement \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 React \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u043C\n * @example\n * assertReactElement(<div>Test</div>); // OK\n * assertReactElement('div'); // TypeError: Expected value to be a React element\n */\nfunction assertReactElement(value: unknown, message?: string): asserts value is React.ReactElement {\n if (!(typesGuards.isObject(value) && 'type' in value && 'props' in value && '$$typeof' in value)) {\n throw new TypeError(message || 'Expected value to be a React element');\n }\n}\n\n/**\n * @name assertReactComponent\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertReactComponent \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 React \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u043C\n * @example\n * const MyComponent = () => <div>Test</div>;\n * assertReactComponent(MyComponent); // OK\n * assertReactComponent('div'); // TypeError: Expected value to be a React component\n */\nfunction assertReactComponent(value: unknown, message?: string): asserts value is React.ComponentType {\n if (!(typeof value === 'function' || (typesGuards.isObject(value) && 'render' in value))) {\n throw new TypeError(message || 'Expected value to be a React component');\n }\n}\n\n/**\n * @name assertNonNullable\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertNonNullable \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 null \u0438 \u043D\u0435 undefined. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 null \u0438\u043B\u0438 undefined\n * @example\n * assertNonNullable('text'); // OK\n * assertNonNullable(null); // TypeError: Expected value to be non-nullable\n */\nfunction assertNonNullable<T>(value: T, message?: string): asserts value is NonNullable<T> {\n if (value === null || value === undefined) {\n throw new TypeError(message || 'Expected value to be non-nullable');\n }\n}\n\n/**\n * @name assertTruthy\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertTruthy \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F truthy. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F truthy\n * @example\n * assertTruthy('text'); // OK\n * assertTruthy(''); // TypeError: Expected value to be truthy\n */\nfunction assertTruthy(value: unknown, message?: string): asserts value is boolean | number | string | object {\n if (!value) {\n throw new TypeError(message || 'Expected value to be truthy');\n }\n}\n\n/**\n * @name assertFalsy\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertFalsy \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F falsy. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F falsy\n * @example\n * assertFalsy(''); // OK\n * assertFalsy('text'); // TypeError: Expected value to be falsy\n */\nfunction assertFalsy(value: unknown, message?: string): asserts value is false | 0 | '' | null | undefined {\n if (value) {\n throw new TypeError(message || 'Expected value to be falsy');\n }\n}\n\n/**\n * @name assertDefined\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertDefined \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 undefined. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 undefined\n * @example\n * assertDefined('text'); // OK\n * assertDefined(undefined); // TypeError: Expected value to be defined\n */\nfunction assertDefined<T>(value: T, message?: string): asserts value is Exclude<T, undefined> {\n if (value === undefined) {\n throw new TypeError(message || 'Expected value to be defined');\n }\n}\n\n/**\n * @name assertNotEmptyString\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertNotEmptyString \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u043D\u0435 \u043F\u0443\u0441\u0442\u0430\u044F. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0441\u0442\u0440\u043E\u043A\u0430 \u043F\u0443\u0441\u0442\u0430\u044F\n * @example\n * assertNotEmptyString('text'); // OK\n * assertNotEmptyString(''); // TypeError: Expected string to be not empty\n */\nfunction assertNotEmptyString(value: string, message?: string): asserts value is string {\n if (value === '') {\n throw new TypeError(message || 'Expected string to be not empty');\n }\n}\n\n/**\n * @name assertPositiveNumber\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertPositiveNumber \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0447\u0438\u0441\u043B\u043E \u043F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0435. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0447\u0438\u0441\u043B\u043E \u043D\u0435 \u043F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0435\n * @example\n * assertPositiveNumber(1); // OK\n * assertPositiveNumber(-1); // TypeError: Expected number to be positive\n */\nfunction assertPositiveNumber(value: number, message?: string): asserts value is number {\n if (value <= 0) {\n throw new TypeError(message || 'Expected number to be positive');\n }\n}\n\n/**\n * @name assertNegativeNumber\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertNegativeNumber \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0447\u0438\u0441\u043B\u043E \u043E\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0447\u0438\u0441\u043B\u043E \u043D\u0435 \u043E\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435\n * @example\n * assertNegativeNumber(-1); // OK\n * assertNegativeNumber(1); // TypeError: Expected number to be negative\n */\nfunction assertNegativeNumber(value: number, message?: string): asserts value is number {\n if (value >= 0) {\n throw new TypeError(message || 'Expected number to be negative');\n }\n}\n\n/**\n * @name assertArrayNotEmpty\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertArrayNotEmpty \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u043C\u0430\u0441\u0441\u0438\u0432 \u043D\u0435 \u043F\u0443\u0441\u0442\u043E\u0439. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u043C\u0430\u0441\u0441\u0438\u0432 \u043F\u0443\u0441\u0442\u043E\u0439\n * @example\n * assertArrayNotEmpty([1]); // OK\n * assertArrayNotEmpty([]); // TypeError: Expected array to be not empty\n */\nfunction assertArrayNotEmpty<T>(value: T[], message?: string): asserts value is [T, ...T[]] {\n if (value.length === 0) {\n throw new TypeError(message || 'Expected array to be not empty');\n }\n}\n\nconst assertions = {\n assertArray,\n assertObject,\n assertNumber,\n assertString,\n assertBoolean,\n assertFunction,\n assertInstanceOf,\n assertEnumValue,\n assertReactElement,\n assertReactComponent,\n assertNonNullable,\n assertTruthy,\n assertFalsy,\n assertDefined,\n assertNotEmptyString,\n assertPositiveNumber,\n assertNegativeNumber,\n assertArrayNotEmpty,\n};\n\nexport default assertions;\n", "import { clone } from '../utils';\nimport typesGuards from './typeGuards';\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043E\u043A\u0443, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u0435\u043F\u0443\u0441\u0442\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u043E\u0439\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443 \u0438\u043B\u0438 \u043F\u0443\u0441\u0442\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nfunction stringValue(value: string): string {\n if (typeof value === 'string' && value !== '') return value;\n return '';\n}\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043E\u0431\u044A\u0435\u043A\u0442, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u0435\u043F\u0443\u0441\u0442\u044B\u043C \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041A\u043E\u043F\u0438\u044E \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0433\u043E \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0438\u043B\u0438 \u043F\u0443\u0441\u0442\u043E\u0439 \u043E\u0431\u044A\u0435\u043A\u0442, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nfunction objectValue<T extends object>(value: T): T {\n if (typeof value === 'object' && value !== null && Object.keys(value).length > 0) {\n return clone(value) as T;\n }\n return {} as T;\n}\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0438\u0441\u043B\u043E, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0432\u0430\u043B\u0438\u0434\u043D\u044B\u043C \u0447\u0438\u0441\u043B\u043E\u043C\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E \u0438\u043B\u0438 0, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nfunction numberValue(value: number): number {\n if (!Number.isNaN(value) && typeof value === 'number') return value;\n return 0;\n}\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043C\u0430\u0441\u0441\u0438\u0432, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041A\u043E\u043F\u0438\u044E \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0433\u043E \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u043B\u0438 \u043F\u0443\u0441\u0442\u043E\u0439 \u043C\u0430\u0441\u0441\u0438\u0432, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nconst arrayValue = <T>(value: T[]): T[] => (Array.isArray(value) ? clone(value) : []);\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0443\u043B\u0435\u0432\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F boolean\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438\u043B\u0438 false, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nfunction booleanValue(value: boolean): boolean {\n if (typesGuards.isBoolean(value)) {\n return value;\n }\n return false;\n}\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435, \u0435\u0441\u043B\u0438 \u043E\u043D\u043E \u043D\u0435 \u0440\u0430\u0432\u043D\u043E null \u0438\u043B\u0438 undefined\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @param defaultValue - \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E\n * @returns \u041F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E\n */\nfunction notNullValue<T>(value: T, defaultValue: T): T {\n return value !== null && value !== undefined ? value : defaultValue;\n}\n\nconst safeValue = {\n booleanValue,\n stringValue,\n objectValue,\n numberValue,\n arrayValue,\n notNullValue,\n};\n\nexport default safeValue;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["ActionAlert_default", "AdvancedStatus_default", "Alert_default", "CheckboxInput_default", "CheckboxesLine_default", "DoubleString_default", "Dropdown_default", "FormattedRawSSN_default", "Hint_default", "Input_default", "InputColor_default", "Datepicker_default", "InputLink_default", "InputWithAction_default", "InputsRow_default", "Label_default", "Modal_default", "MonoAccordion_default", "PageTitle_default", "Price_default", "PriceRange_default", "ProgressLine_default", "RadioInput_default", "RangeInputs_default", "RangeList_default", "Spinner_default", "Status_default", "Switcher_default", "SwitcherHide_default", "SwitcherRadio_default", "SwitcherRange_default", "Tag_default", "Text_default", "TieredCheckboxes_default", "TimeRange_default", "UserBox_default", "UserContacts_default", "clone", "getIsOnlyAnObject", "getResponseClone", "omitKeys", "removeEventListener", "useIsMobile_default", "RESPONSE_AS_OBJECT_ALWAYS_VALUE", "AbortableFetch", "AbortableFetch_default", "AbortableFetch_default", "import_classnames", "cn", "import_jsx_runtime", "cn", "ActionAlert_default", "import_classnames", "import_classnames", "import_jsx_runtime", "cn", "import_classnames", "import_jsx_runtime", "RC", "cn", "import_jsx_runtime", "RC", "cn", "AdvancedStatus_default", "import_classnames", "import_react", "import_jsx_runtime", "moment", "isError", "classNames", "cn", "InputMask", "React", "import_classnames", "import_classnames", "import_jsx_runtime", "RC", "cn", "import_jsx_runtime", "RC", "cn", "CheckboxesLine_default", "CheckboxInput_default", "import_classnames", "import_moment", "import_react", "import_jsx_runtime", "moment", "classNames", "cn", "import_classnames", "import_moment", "import_react", "import_classnames", "import_react", "import_react_feather", "import_react", "getIsOnlyAnObject", "isNumber", "clone", "getResponseClone", "moment", "omitKeys", "sizes", "getIsOnlyAnObject", "value", "isNumber", "import_classnames", "import_react", "import_classnames", "import_jsx_runtime", "CN", "cn", "import_react", "import_react", "import_react", "value", "getIsOnlyAnObject", "import_react", "import_jsx_runtime", "Input", "cn", "import_classnames", "import_jsx_runtime", "RC", "cn", "import_react", "import_jsx_runtime", "import_react", "import_react", "useIsMobile_default", "text", "useIsMobile_default", "value", "import_jsx_runtime", "RC", "getListContainer", "getListContainerWrapper", "getParentNode", "getPreparedOptionLabel", "getSortedOptions", "value", "id", "isOpen", "cn", "scrollTop", "scrollHeight", "import_classnames", "import_classnames", "import_react", "import_react_dom", "import_react_feather", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "Button", "import_jsx_runtime", "import_jsx_runtime", "Check", "import_jsx_runtime", "Check2", "import_jsx_runtime", "ChevronDown", "import_jsx_runtime", "import_jsx_runtime", "ChevronLeft", "import_jsx_runtime", "ChevronRight", "import_jsx_runtime", "ChevronUp", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "X", "getParentNode", "import_jsx_runtime", "timer", "className", "cn", "import_jsx_runtime", "RC", "cn", "import_jsx_runtime", "compare", "moment", "cn", "Dropdown_default", "import_classnames", "import_react", "import_react_dom", "import_react_feather", "import_react", "import_jsx_runtime", "RC", "getParentNode", "getListContainer", "text", "cn", "import_classnames", "import_react", "import_classnames", "import_react", "import_jsx_runtime", "RC", "cn", "import_classnames", "import_react", "import_jsx_runtime", "RC", "cn", "import_jsx_runtime", "RC", "cn", "import_classnames", "import_react", "import_react", "import_classnames", "import_react_feather", "import_jsx_runtime", "cn", "import_classnames", "import_react_feather", "import_jsx_runtime", "value", "cn", "import_jsx_runtime", "RC", "MAX_FILE_SIZE", "clone", "files", "id", "cn", "import_classnames", "import_react", "import_react_feather", "import_classnames", "import_react", "import_react_feather", "import_jsx_runtime", "cn", "import_jsx_runtime", "MAX_FILE_SIZE", "clone", "cn", "import_react", "import_react_feather", "mask", "import_classnames", "import_react", "import_react_feather", "import_jsx_runtime", "isError", "innerValue", "value", "isSpecialSymbol", "id", "className", "cn", "import_jsx_runtime", "value", "FormattedRawSSN_default", "Input_default", "import_classnames", "import_moment_timezone", "import_react", "import_react_input_mask", "import_react", "import_jsx_runtime", "moment", "value", "cn", "InputMask", "import_classnames", "import_react", "import_jsx_runtime", "cn", "InputColor_default", "import_classnames", "import_react", "import_jsx_runtime", "attrsOfNativeInputDefault", "CN", "cn", "import_classnames", "import_moment_timezone", "import_jsx_runtime", "RC", "date", "moment", "cn", "value", "import_classnames", "import_moment_timezone", "import_react", "import_react", "import_classnames", "import_moment_timezone", "import_classnames", "import_react", "import_jsx_runtime", "Arrow", "cn", "import_jsx_runtime", "moment", "classNames", "cn", "import_moment_timezone", "import_react", "moment", "useClickOutside", "interval", "import_jsx_runtime", "padTime", "Datepicker", "compare", "moment", "setInterval", "cn", "Datepicker_default", "import_classnames", "import_moment_timezone", "import_react", "import_react_dom", "import_react", "import_classnames", "import_react", "import_react", "import_react", "getIsOnlyAnObject", "getIsOnlyAnObject", "ev", "import_classnames", "import_react", "import_jsx_runtime", "cn", "import_classnames", "import_react", "import_react_feather", "import_jsx_runtime", "cn", "import_react", "import_jsx_runtime", "scrollTop", "import_jsx_runtime", "getIsOnlyAnObject", "cn", "import_classnames", "import_jsx_runtime", "cn", "Check2", "import_jsx_runtime", "cn", "moment", "Datepicker_default", "import_classnames", "import_moment_timezone", "import_react", "import_jsx_runtime", "moment", "useClickOutside", "cn", "getParentNode", "React", "import_classnames", "import_react", "import_react_feather", "import_jsx_runtime", "cn", "InputLink_default", "import_react", "import_react_feather", "import_jsx_runtime", "uuid", "InputsRow_default", "import_classnames", "import_react", "import_jsx_runtime", "RC", "cn", "React", "InputWithAction_default", "import_classnames", "import_jsx_runtime", "CN", "cn", "Label_default", "import_moment", "import_react", "import_react_feather", "import_jsx_runtime", "moment", "value", "date", "touchType", "e", "import_react", "import_jsx_runtime", "import_react", "import_classnames", "import_react_feather", "import_jsx_runtime", "DEFAULT_BLINK_TIME", "inputValue", "cn", "import_classnames", "import_react", "import_jsx_runtime", "value", "cn", "import_classnames", "import_classnames", "import_jsx_runtime", "RC", "cn", "import_jsx_runtime", "cn", "RadioInput_default", "import_classnames", "import_react", "import_jsx_runtime", "classNames", "React", "import_classnames", "import_react", "import_jsx_runtime", "RC", "cn", "RangeInputs_default", "import_classnames", "import_react", "import_classnames", "import_react_feather", "import_jsx_runtime", "RC", "cn", "import_jsx_runtime", "RC", "cn", "RangeList_default", "import_classnames", "import_react", "import_react_feather", "import_jsx_runtime", "value", "ranges", "id", "result", "triggers", "className", "trackWidth", "cn", "import_react", "import_classnames", "import_react_feather", "import_jsx_runtime", "debounce", "value", "renderTrack", "cn", "import_classnames", "import_jsx_runtime", "RC", "cn", "Switcher_default", "import_classnames", "import_jsx_runtime", "RC", "cn", "value", "import_classnames", "import_jsx_runtime", "RC", "cn", "SwitcherHide_default", "import_classnames", "import_jsx_runtime", "import_react", "RC", "cn", "SwitcherRadio_default", "import_jsx_runtime", "RC", "SwitcherRange_default", "import_classnames", "import_jsx_runtime", "RC", "cn", "import_classnames", "import_react", "import_classnames", "import_react", "import_react_dom", "import_react_feather", "import_classnames", "import_react", "import_react_dom", "import_react_feather", "Spinner_default", "import_jsx_runtime", "CN", "defaultOnClick", "x", "y", "height", "width", "cn", "Spinner_default", "import_classnames", "import_react", "import_react_feather", "import_jsx_runtime", "result", "cn", "import_jsx_runtime", "RC", "MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH", "editingOption", "label", "acc", "item", "options", "getParentNode", "getListContainer", "getListContainerWrapper", "className", "cn", "getTotalOptions", "title", "isOpen", "import_classnames", "import_react", "import_jsx_runtime", "RC", "getIsOnlyAnObject", "cn", "import_jsx_runtime", "RC", "cn", "import_classnames", "import_jsx_runtime", "RC", "cn", "import_react", "import_jsx_runtime", "value", "import_classnames", "import_jsx_runtime", "RC", "cn", "Text_default", "import_classnames", "import_react", "import_classnames", "import_react", "import_classnames", "import_jsx_runtime", "RC", "cn", "import_jsx_runtime", "RC", "cn", "disabled", "import_jsx_runtime", "import_react", "RC", "cn", "TieredCheckboxes_default", "import_classnames", "import_moment", "import_react", "import_react", "useToggle", "import_jsx_runtime", "CN", "moment", "cn", "Label_default", "TimeRange_default", "import_classnames", "import_react", "import_jsx_runtime", "RC", "cn", "UserContacts_default", "import_react", "import_classnames", "import_react", "import_classnames", "import_jsx_runtime", "RC", "getIsOnlyAnObject", "cn", "import_jsx_runtime", "RC", "cn", "import_react", "import_classnames", "import_jsx_runtime", "RC", "cn", "import_react", "import_classnames", "import_jsx_runtime", "RC", "cn", "import_react", "import_classnames", "import_react", "settings", "getIsOnlyAnObject", "clone", "field", "getIsOnlyAnObject", "import_jsx_runtime", "RC", "React", "clone", "onChange", "getIsOnlyAnObject", "cn", "import_classnames", "import_react", "import_react_feather", "import_jsx_runtime", "RC", "getIsOnlyAnObject", "throttle", "innerValue", "value", "label", "isObject", "cn", "renderListItem", "import_classnames", "import_react", "import_react_feather", "import_react", "import_react", "compareValues", "getIsOnlyAnObject", "getIsValidNumber", "import_jsx_runtime", "RC", "DEFAULT_HINT_MESSAGE", "noop", "getIsValidNumber", "compareValues", "cn", "import_classnames", "import_react", "import_react_feather", "import_jsx_runtime", "cn", "removeEventListener", "import_moment", "moment", "import_react", "import_react_dom", "ReactDOM", "React", "import_react", "import_react", "form", "import_react", "isFunction", "field", "isFunction", "isFunction", "fields", "key", "field", "noop", "isFunction", "key", "import_jsx_runtime", "fields", "import_react", "DEFAULT_BLINK_TIME", "import_react", "import_react", "import_react", "import_react", "iOSVersion", "import_react", "import_react", "import_react", "import_classnames", "import_jsx_runtime", "cn", "import_react", "import_react", "Button", "Check", "Check2", "ChevronDown", "ChevronLeft", "ChevronRight", "ChevronUp", "X", "import_classnames", "import_react", "import_react_feather", "import_jsx_runtime", "cn", "import_react", "import_classnames", "import_react_feather", "import_jsx_runtime", "cn", "import_classnames", "import_react", "import_classnames", "import_react", "import_react_feather", "import_jsx_runtime", "cn", "import_jsx_runtime", "cn", "Alert_default", "import_classnames", "import_jsx_runtime", "cn", "import_react", "import_classnames", "import_jsx_runtime", "cn", "import_classnames", "import_moment_timezone", "import_react", "import_jsx_runtime", "RC", "moment", "cn", "import_classnames", "import_react", "import_react_feather", "import_jsx_runtime", "cn", "import_react", "import_jsx_runtime", "import_classnames", "import_moment", "import_react", "import_react_feather", "import_jsx_runtime", "RC", "moment", "cn", "DoubleString_default", "Hint_default", "import_classnames", "import_react", "import_jsx_runtime", "cn", "Modal_default", "MonoAccordion_default", "import_classnames", "import_react_feather", "import_jsx_runtime", "RC", "cn", "PageTitle_default", "import_classnames", "import_jsx_runtime", "CN", "cn", "Price_default", "import_classnames", "import_jsx_runtime", "CN", "cn", "PriceRange_default", "import_classnames", "import_jsx_runtime", "CN", "cn", "ProgressLine_default", "Status_default", "import_react", "import_classnames", "import_react", "import_classnames", "import_jsx_runtime", "cn", "import_react", "import_classnames", "import_jsx_runtime", "import_react", "import_classnames", "import_react", "import_jsx_runtime", "Icon", "cn", "Status_default", "import_react", "Icons", "import_jsx_runtime", "import_react", "import_classnames", "import_react_feather", "import_jsx_runtime", "cn", "import_react", "import_classnames", "import_jsx_runtime", "cn", "import_jsx_runtime", "import_jsx_runtime", "cn", "import_jsx_runtime", "cn", "Tag_default", "import_classnames", "import_jsx_runtime", "cn", "UserBox_default", "import_classnames", "import_jsx_runtime", "import_classnames", "import_react", "import_jsx_runtime", "import_classnames", "import_jsx_runtime", "RC", "cn", "import_jsx_runtime", "RC", "DEFAULT", "ACTIVE", "DONE", "cn", "import_jsx_runtime", "classNames", "StepWrapper_default", "StepWrapper_default", "clone"]
|
|
7
|
-
}
|