@true-engineering/true-react-common-ui-kit 4.0.0-alpha63 → 4.0.0-alpha65

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.
@@ -1 +1 @@
1
- {"version":3,"file":"true-react-common-ui-kit.js","sources":["../src/theme/common.ts","../src/theme/Provider.tsx","../src/hooks/use-mixed-styles.ts","../src/theme/helpers.ts","../src/hooks/use-did-mount-effect.ts","../src/helpers/popper-helpers.ts","../src/constants/phone-info.ts","../src/constants/mime-types.ts","../src/helpers/phone.ts","../src/helpers/misc.ts","../src/hooks/use-dropdown.ts","../src/hooks/use-latest-ref.ts","../src/hooks/use-intersection-ref.ts","../src/hooks/use-resize-ref.ts","../src/hooks/use-is-mounted.ts","../src/hooks/use-merge.ts","../src/hooks/use-merged-refs.ts","../src/hooks/use-on-click-outside.ts","../src/hooks/use-tweak-styles.ts","../src/components/Icon/icons/avatar.svg?raw","../src/components/Icon/icons/calendar.svg?raw","../src/components/Icon/icons/check.svg?raw","../src/components/Icon/icons/chevron-down-small.svg?raw","../src/components/Icon/icons/chevron-down.svg?raw","../src/components/Icon/icons/chevron-left.svg?raw","../src/components/Icon/icons/chevron-right.svg?raw","../src/components/Icon/icons/close-large.svg?raw","../src/components/Icon/icons/close-window.svg?raw","../src/components/Icon/icons/close.svg?raw","../src/components/Icon/icons/file-excel.svg?raw","../src/components/Icon/icons/file-image.svg?raw","../src/components/Icon/icons/file-other.svg?raw","../src/components/Icon/icons/file-pdf.svg?raw","../src/components/Icon/icons/file-word.svg?raw","../src/components/Icon/icons/file-xml.svg?raw","../src/components/Icon/icons/file-zip.svg?raw","../src/components/Icon/icons/filter.svg?raw","../src/components/Icon/icons/information.svg?raw","../src/components/Icon/icons/menu.svg?raw","../src/components/Icon/icons/minus.svg?raw","../src/components/Icon/icons/plus.svg?raw","../src/components/Icon/icons/search.svg?raw","../src/components/Icon/icons/status-error.svg?raw","../src/components/Icon/icons/status-info.svg?raw","../src/components/Icon/icons/status-not-ok.svg?raw","../src/components/Icon/icons/status-ok.svg?raw","../src/components/Icon/icons/status-warning.svg?raw","../src/components/Icon/icons/trash-can.svg?raw","../src/components/Icon/icons/index.ts","../src/components/Icon/Icon.styles.ts","../src/components/Icon/Icon.tsx","../src/components/Icon/snippet.tsx","../src/components/WithPopup/constants.ts","../src/components/WithPopup/helpers.ts","../src/components/WithPopup/WithPopup.styles.ts","../src/components/WithPopup/WithPopup.tsx","../src/components/List/components/ListItem/ListItem.styles.ts","../src/components/List/components/ListItem/ListItem.tsx","../src/components/List/List.styles.ts","../src/components/List/List.tsx","../src/components/AccountInfo/constants.ts","../src/components/AccountInfo/AccountInfo.styles.ts","../src/components/AccountInfo/AccountInfo.tsx","../src/components/AddButton/AddButton.styles.ts","../src/components/AddButton/AddButton.tsx","../src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.styles.ts","../src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.tsx","../src/components/ThemedPreloader/components/DefaultPreloader/DefaultPreloader.tsx","../src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.styles.ts","../src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.tsx","../src/components/ThemedPreloader/ThemedPreloader.styles.ts","../src/components/ThemedPreloader/ThemedPreloader.tsx","../src/components/Button/Button.styles.ts","../src/components/Button/Button.tsx","../src/components/Checkbox/Checkbox.styles.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/CloseButton/CloseButton.styles.ts","../src/components/CloseButton/CloseButton.tsx","../src/components/CssBaseline/CssBaseline.styles.ts","../src/components/CssBaseline/CssBaseline.tsx","../src/components/WithMessages/WithMessages.styles.ts","../src/components/WithMessages/WithMessages.tsx","../src/components/ControlWrapper/helpers.ts","../src/components/ControlWrapper/ControlWrapper.styles.ts","../src/components/ControlWrapper/ControlWrapper.tsx","../src/components/ControlWrapper/constants.ts","../src/components/Input/Input.styles.ts","../src/components/Input/InputBase.tsx","../src/components/Input/Input.tsx","../src/components/DateInput/constants.ts","../src/components/DateInput/DateInput.styles.ts","../src/components/DateInput/DateInput.tsx","../src/components/DatePicker/components/DatePickerBase/DatePickerBase.tsx","../src/components/SearchInput/SearchInput.styles.ts","../src/components/SearchInput/SearchInput.tsx","../src/components/ScrollIntoViewIfNeeded/constants.ts","../src/components/ScrollIntoViewIfNeeded/ScrollIntoViewIfNeeded.ts","../src/components/Select/constants.ts","../src/components/Select/components/SelectList/SelectList.styles.ts","../src/components/Select/components/SelectListItem/SelectListItem.styles.ts","../src/components/Select/components/SelectListItem/SelectListItem.tsx","../src/components/Select/components/SelectList/SelectList.tsx","../src/components/Select/helpers.ts","../src/components/Select/Select.styles.ts","../src/components/Select/Select.tsx","../src/components/DatePicker/components/DatePickerHeader/DatePickerHeader.styles.ts","../src/components/DatePicker/components/DatePickerHeader/DatePickerHeader.tsx","../src/components/DatePicker/components/PopperContainer/PopperContainer.tsx","../src/components/DatePicker/constants.ts","../src/components/DatePicker/helpers.ts","../src/components/DatePicker/DatePicker.styles.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/Description/constants.ts","../src/components/Description/Description.styles.ts","../src/components/Description/Description.tsx","../src/components/FileInput/helpers.ts","../src/components/FileInput/FileInput.styles.ts","../src/components/FileInput/FileInput.tsx","../src/components/IconButton/IconButton.styles.ts","../src/components/IconButton/IconButton.tsx","../src/components/Tooltip/Tooltip.styles.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/TextWithTooltip/TextWithTooltip.styles.ts","../src/components/TextWithTooltip/TextWithTooltip.tsx","../src/components/FileItem/constants.ts","../src/components/FileItem/helpers.ts","../src/components/FileItem/FileItem.styles.ts","../src/components/FileItem/FileItem.tsx","../src/components/FiltersPane/constants.ts","../src/components/FiltersPane/helpers.ts","../src/components/NumberInput/helpers.ts","../src/components/NumberInput/NumberInput.tsx","../src/components/FiltersPane/FiltersPane.styles.ts","../src/components/FiltersPane/components/FilterInterval/FilterInterval.styles.ts","../src/components/FiltersPane/components/FilterInterval/FilterInterval.tsx","../src/components/MultiSelectList/constants.ts","../src/components/MultiSelectList/helpers.ts","../src/components/MultiSelectList/MultiSelectList.styles.ts","../src/components/MultiSelectList/MultiSelectList.tsx","../src/components/FiltersPane/components/FilterMultiSelect/FilterMultiSelect.tsx","../src/components/FiltersPane/components/FilterSelect/FilterSelect.styles.ts","../src/components/FiltersPane/components/FilterSelect/FilterSelect.tsx","../src/components/FiltersPane/components/FilterWithDates/FilterWithDates.styles.ts","../src/components/FiltersPane/components/FilterWithDates/FilterWithDates.tsx","../src/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.styles.ts","../src/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.tsx","../src/components/FiltersPane/components/Filter/helpers.ts","../src/components/FiltersPane/components/Filter/Filter.tsx","../src/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.styles.ts","../src/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.tsx","../src/components/FiltersPane/components/FilterValueView/FilterValueView.styles.tsx","../src/components/FiltersPane/components/FilterValueView/FilterValueView.tsx","../src/components/FiltersPane/components/FilterWrapper/helpers.ts","../src/components/FiltersPane/components/FilterWrapper/FilterWrapper.styles.ts","../src/components/FiltersPane/components/FilterWrapper/FilterWrapper.tsx","../src/components/FiltersPane/FiltersPane.tsx","../src/components/Flag/customFlags/AB.svg?raw","../src/components/Flag/customFlags/OS.svg?raw","../src/components/Flag/customFlags/customFlags.ts","../src/components/Flag/Flag.styles.ts","../src/components/Flag/Flag.tsx","../src/components/FlexibleTable/constants.ts","../src/components/Skeleton/Skeleton.styles.ts","../src/components/Skeleton/Skeleton.tsx","../src/components/FlexibleTable/helpers.ts","../src/components/FlexibleTable/FlexibleTable.styles.ts","../src/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.styles.ts","../src/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.tsx","../src/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.styles.ts","../src/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.tsx","../src/components/FlexibleTable/FlexibleTable.tsx","../src/components/FloatDocActions/components/DocActions/DocActions.styles.ts","../src/components/FloatDocActions/components/DocActions/DocActions.tsx","../src/components/FloatDocActions/components/DocActions/constants.ts","../src/components/FloatDocActions/constants.ts","../src/components/FloatDocActions/FloatDocActions.styles.ts","../src/components/FloatDocActions/FloatDocActions.tsx","../src/components/IncrementInput/IncrementInput.styles.ts","../src/components/IncrementInput/IncrementInput.tsx","../src/components/Modal/Modal.styles.ts","../src/components/Modal/Modal.tsx","../src/components/MoreMenu/MoreMenu.styles.ts","../src/components/MoreMenu/MoreMenu.tsx","../src/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.styles.ts","../src/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.tsx","../src/components/MultiSelect/MultiSelect.styles.ts","../src/components/MultiSelect/MultiSelect.tsx","../src/components/Notification/Notification.styles.ts","../src/components/Notification/Notification.tsx","../src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.styles.ts","../src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.tsx","../src/components/PhoneInput/constants.ts","../src/components/PhoneInput/PhoneInput.styles.ts","../src/components/PhoneInput/PhoneInput.tsx","../src/components/RadioButton/RadioButton.styles.ts","../src/components/RadioButton/RadioButton.tsx","../src/components/Selector/Selector.styles.ts","../src/components/Selector/Selector.tsx","../src/components/SmartInput/constants.ts","../src/components/SmartInput/helpers.ts","../src/components/SmartInput/SmartInput.tsx","../src/components/Status/Status.styles.ts","../src/components/Status/Status.tsx","../src/components/Switch/Switch.styles.ts","../src/components/Switch/Switch.tsx","../src/components/TextArea/TextArea.styles.ts","../src/components/TextArea/TextArea.tsx","../src/components/TextButton/TextButton.styles.ts","../src/components/TextButton/TextButton.tsx","../src/components/TextWithInfo/TextWithInfo.styles.ts","../src/components/TextWithInfo/TextWithInfo.tsx","../src/components/Toaster/constants.ts","../src/components/Toaster/Toaster.styles.ts","../src/components/Toaster/Toaster.tsx","../src/components/NewMoreMenu/NewMoreMenu.styles.ts","../src/components/NewMoreMenu/NewMoreMenu.tsx","../src/components/WithTooltip/WithTooltip.styles.ts","../src/components/WithTooltip/WithTooltip.tsx"],"sourcesContent":["import { IUiKitHelpers, IUiKitTheme } from './types';\n\nexport const colors = {\n FONT_MAIN: '#222a37',\n FONT_MEDIUM: '#505f79',\n FONT_LABEL: '#7a869a',\n FONT_DISABLED: '#95a0b3',\n GREY_ACTIVE: '#95a0b3',\n BORDER_MAIN: '#d0d6e1',\n BORDER_LIGHT: '#dde3ed',\n GREY_HOVER: '#dde3ed',\n GREY_FOCUS: '#eceff5',\n GREY_DISABLED: '#eceff5',\n GREY_BACKGROUND: '#f6f8fc',\n CLASSIC_WHITE: '#ffffff',\n RED_ACTIVE: '#912e34',\n RED_HOVER: '#c13e45',\n RED_WARNING: '#f14d56',\n RED_WARNING_LIGHT: '#ff6261',\n RED_BACKGROUND: '#feedee',\n ORANGE_BACKGROUND: '#fff4e9',\n GREEN_BACKGROUND: '#f4f9e6',\n BLUE_BACKGROUND: '#ebf1ff',\n // временные константы пока не будет полной темизации\n GREEN_FOCUS: '#97ba1e',\n ORANGE_FOCUS: '#ff991f',\n} as const;\n\nexport const dimensions = {\n BORDER_RADIUS_LARGE: 16,\n BORDER_RADIUS_MEDIUM: 12,\n BORDER_RADIUS_STD: 8,\n BORDER_RADIUS_SMALL: 6,\n BORDER_RADIUS_EXTRA_SMALL: 4,\n\n CONTROL: {\n HEIGHT: 48,\n PADDING: 16,\n ICON_SIZE: 24,\n ICON_INNER_SIZE: 24,\n ICON_GAP: 8,\n },\n\n Z_INDEX: {\n CONTROL_INVALID: 1,\n CONTROL_FOCUS: 2,\n },\n} as const;\n\nexport const helpers = {\n withAngle: (angleSize = 6, position: 'left' | 'right' = 'left', distance = 100) => ({\n display: 'inline-block',\n position: 'relative',\n marginTop: angleSize * 2 - 1,\n boxShadow: '0 8px 20px 0 rgba(0, 0, 0, 0.04)',\n border: ['solid', 1, colors.BORDER_MAIN],\n borderRadius: dimensions.BORDER_RADIUS_EXTRA_SMALL,\n\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n top: -angleSize,\n left: position === 'left' && distance,\n right: position === 'right' && distance,\n width: 0,\n height: 0,\n borderLeft: [angleSize, 'solid', 'transparent'],\n borderRight: [angleSize, 'solid', 'transparent'],\n borderBottom: [angleSize, 'solid', colors.BORDER_MAIN],\n },\n\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n top: -angleSize + 1,\n left: position === 'left' && distance + 1,\n right: position === 'right' && distance + 1,\n width: 0,\n height: 0,\n borderLeft: [angleSize - 1, 'solid', 'transparent'],\n borderRight: [angleSize - 1, 'solid', 'transparent'],\n borderBottom: [angleSize - 1, 'solid', colors.CLASSIC_WHITE],\n },\n }),\n\n withScrollBar: {\n boxSizing: 'border-box',\n overflow: 'auto',\n\n // Chromium\n '@supports selector(::-webkit-scrollbar)': {\n '--webkit-scrollbar-width': '10px',\n '--webkit-scrollbar-height': '10px',\n\n '&::-webkit-scrollbar': {\n width: 'var(--webkit-scrollbar-width)',\n height: 'var(--webkit-scrollbar-height)',\n\n '&-thumb': {\n width: 6,\n minHeight: 30,\n border: [2, 'solid', 'transparent'],\n borderRadius: 5,\n backgroundColor: colors.BORDER_MAIN,\n backgroundClip: 'padding-box',\n\n '&:hover': {\n backgroundColor: colors.GREY_ACTIVE,\n },\n },\n\n '&-track-piece': {\n backgroundColor: 'transparent',\n },\n\n '&-corner': {\n backgroundColor: 'transparent',\n },\n },\n },\n\n // Firefox\n '@supports not selector(::-webkit-scrollbar)': {\n scrollbarWidth: 'thin',\n scrollbarColor: `${colors.BORDER_MAIN} transparent`,\n },\n },\n} satisfies IUiKitHelpers;\n\nexport const SLIDE_UP_ANIMATION_DURATION = 150;\nconst SLIDE_UP_POSITION_START = 15;\nconst SLIDE_UP_POSITION_END = 0;\n\nexport const animations = {\n defaultTransition: '0.25s ease-in-out',\n slideUp: {\n 'slide-up-enter': {\n opacity: 0,\n transform: `translateY(${SLIDE_UP_POSITION_START}px)`,\n },\n\n 'slide-up-enter-active': {\n opacity: 1,\n transform: `translateY(${SLIDE_UP_POSITION_END}px)`,\n transition: `${SLIDE_UP_ANIMATION_DURATION}ms ease-in-out`,\n transitionProperty: 'opacity, transform',\n },\n\n 'slide-up-exit-active': {\n opacity: 1,\n transform: `translateY(${SLIDE_UP_POSITION_END}px)`,\n },\n\n 'slide-up-exit': {\n opacity: 0,\n transform: `translateY(${SLIDE_UP_POSITION_START}px)`,\n transition: `${SLIDE_UP_ANIMATION_DURATION}ms ease-in-out`,\n transitionProperty: 'opacity, transform',\n },\n },\n};\n\nexport interface ICommonUiKitTheme extends IUiKitTheme {\n colors: typeof colors;\n dimensions: typeof dimensions;\n helpers: typeof helpers;\n animations: typeof animations;\n}\n\nexport const common: ICommonUiKitTheme = {\n animations,\n colors,\n dimensions,\n helpers,\n};\n","import { createContext, useContext } from 'react';\nimport { common } from './common';\nimport type { IUiKitTheme } from './types';\n\nexport const ThemeContext = createContext<IUiKitTheme>(common);\n\nexport const ThemeProvider = ThemeContext.Provider;\n\nexport const useTheme = (): IUiKitTheme => useContext(ThemeContext);\n","import { useMemo } from 'react';\nimport { isObject } from '@true-engineering/true-react-platform-helpers';\nimport type { IMixedStyles } from '../theme';\n\nexport const mixStyles = <T>(...tweakStyles: Array<IMixedStyles<T>>): Array<NonNullable<T>> =>\n tweakStyles.flat().filter(isObject) as Array<NonNullable<T>>;\n\nexport const useMixedStyles = <StyleSheet>(\n baseStyles?: IMixedStyles<StyleSheet>,\n tweakStyles?: IMixedStyles<StyleSheet>,\n): Array<NonNullable<StyleSheet>> =>\n useMemo(() => mixStyles(baseStyles, tweakStyles), [baseStyles, tweakStyles]);\n","import { useMemo } from 'react';\nimport { createUseStyles } from 'react-jss';\nimport {\n isArrayNotEmpty,\n isNotEmpty,\n isString,\n mergeStyles,\n} from '@true-engineering/true-react-platform-helpers';\nimport { mixStyles } from '../hooks/use-mixed-styles';\nimport { useTheme } from './Provider';\nimport { IComponentName, IStyles, IUseStyles } from './types';\n\nexport const useThemeComponentStyles = <T>(\n componentName?: IComponentName,\n): Partial<T> | undefined => {\n const { components } = useTheme();\n return isNotEmpty(componentName) ? (components?.[componentName] as never) : undefined;\n};\n\nconst isTweakStyle = (key: string): boolean => key.startsWith('tweak');\n\nconst areStylesNotEmpty = <T>(tweakStyles?: T): tweakStyles is NonNullable<T> =>\n isNotEmpty(tweakStyles) && !Object.keys(tweakStyles).every(isTweakStyle);\n\nconst checkStyles = (styles: IStyles<string>, componentName = 'LocalComponent'): void => {\n const invalidClasses = Object.keys(styles).filter(isTweakStyle);\n\n if (isArrayNotEmpty(invalidClasses)) {\n console.error(\n `${componentName}: Названия классов не должны начинаться со слова \"tweak\": ${invalidClasses}`,\n );\n }\n};\n\ntype TweakStylesCache = (styles: object[], idx?: number) => object | undefined;\nconst getTweakStylesCache = (): TweakStylesCache => {\n let mergedStyles: object | undefined;\n const cache = new WeakMap<object, TweakStylesCache>();\n\n const getNext = (next: object) => {\n if (!cache.has(next)) {\n cache.set(next, getTweakStylesCache());\n }\n\n return cache.get(next)!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\n };\n\n return (styles, idx = 0) => {\n const next = styles.at(idx);\n if (isNotEmpty(next)) {\n return getNext(next)(styles, idx + 1);\n }\n\n if (!isNotEmpty(mergedStyles)) {\n const [first, ...rest] = styles;\n mergedStyles = isArrayNotEmpty(rest) ? mergeStyles(first, ...rest) : first;\n }\n\n return mergedStyles;\n };\n};\n\nconst tweakStylesCache = getTweakStylesCache();\nconst useStyles = createUseStyles<string>((tweakStyles) => tweakStyles as never);\n\nexport const createThemedStyles: <C extends string>(\n ...args: [IStyles<C>] | [IComponentName, IStyles<C>]\n) => IUseStyles<C> = (first, second?) => {\n const componentName = isString(first) ? first : undefined;\n const styles = second! ?? first; // eslint-disable-line @typescript-eslint/no-non-null-assertion\n\n if (process.env.NODE_ENV !== 'production') {\n checkStyles(styles, componentName);\n }\n\n return ({ theme, tweakStyles = theme }) => {\n const themeStyles = useThemeComponentStyles<typeof styles>(componentName);\n\n const data = useMemo(() => {\n const resultStyles = mixStyles(styles, themeStyles, tweakStyles).filter(areStylesNotEmpty);\n return { theme: tweakStylesCache(resultStyles) };\n }, [themeStyles, tweakStyles]);\n\n return useStyles(data);\n };\n};\n","import { DependencyList, EffectCallback, useEffect, useRef } from 'react';\n\nexport const useDidMountEffect = (effect: EffectCallback, dependencies: DependencyList): void => {\n const isMountedRef = useRef(false);\n useEffect(() => {\n let unmount: ReturnType<EffectCallback>;\n if (isMountedRef.current) {\n unmount = effect();\n } else {\n isMountedRef.current = true;\n }\n return () => {\n if (unmount !== undefined) {\n unmount();\n }\n };\n }, dependencies);\n};\n","import { Modifier } from 'react-overlays/usePopper';\n\nexport const minWidthModifier: Partial<Modifier<any, any>> = {\n name: 'minWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: ({ state }) => {\n state.styles.popper.minWidth = `${state.rects.reference.width}px`;\n },\n effect: ({ state }) => {\n state.elements.popper.style.minWidth = `${\n (state.elements.reference as HTMLElement).offsetWidth\n }px`;\n },\n};\n","import type { IPhoneInfo } from '../components';\n\nexport const phoneInfo: IPhoneInfo[] = [\n {\n countryEn: 'Abkhazia',\n countryRu: 'Абхазия',\n countryCode: 'AB',\n phoneMask: '(999) 999-99-99',\n dialCode: '7',\n dialCodePriority: 1,\n fullCodes: ['7'],\n },\n {\n countryEn: 'Afghanistan',\n countryRu: 'Афганистан',\n countryCode: 'AF',\n dialCode: '93',\n fullCodes: ['93'],\n },\n {\n countryEn: 'Albania',\n countryRu: 'Албания',\n countryCode: 'AL',\n dialCode: '355',\n fullCodes: ['355'],\n },\n {\n countryEn: 'Algeria',\n countryRu: 'Алжир',\n countryCode: 'DZ',\n dialCode: '213',\n fullCodes: ['213'],\n },\n {\n countryEn: 'Andorra',\n countryRu: 'Андорра',\n countryCode: 'AD',\n dialCode: '376',\n fullCodes: ['376'],\n },\n {\n countryEn: 'Angola',\n countryRu: 'Ангола',\n countryCode: 'AO',\n dialCode: '244',\n fullCodes: ['244'],\n },\n {\n countryEn: 'Antigua and Barbuda',\n countryRu: 'Антигуа и Барбуда',\n countryCode: 'AG',\n dialCode: '1268',\n fullCodes: ['1268'],\n },\n {\n countryEn: 'Argentina',\n countryRu: 'Аргентина',\n countryCode: 'AR',\n dialCode: '54',\n phoneMask: '(99) 99999999',\n fullCodes: ['54'],\n },\n {\n countryEn: 'Armenia',\n countryRu: 'Армения',\n countryCode: 'AM',\n dialCode: '374',\n fullCodes: ['374'],\n },\n {\n countryEn: 'Aruba',\n countryRu: 'Аруба',\n countryCode: 'AW',\n dialCode: '297',\n fullCodes: ['297'],\n },\n {\n countryEn: 'Australia',\n countryRu: 'Австралия',\n countryCode: 'AU',\n dialCode: '61',\n phoneMask: '(99) 9999 9999',\n dialCodePriority: 0,\n areaCodes: ['2', '3', '4', '7', '8', '02', '03', '04', '07', '08'],\n fullCodes: ['612', '613', '614', '617', '618', '6102', '6103', '6104', '6107', '6108'],\n },\n {\n countryEn: 'Austria',\n countryRu: 'Австрия',\n countryCode: 'AT',\n dialCode: '43',\n fullCodes: ['43'],\n },\n {\n countryEn: 'Azerbaijan',\n countryRu: 'Азербайджан',\n countryCode: 'AZ',\n dialCode: '994',\n fullCodes: ['994'],\n },\n {\n countryEn: 'Bahamas',\n countryRu: 'Багамы',\n countryCode: 'BS',\n dialCode: '1242',\n fullCodes: ['1242'],\n },\n {\n countryEn: 'Bahrain',\n countryRu: 'Бахрейн',\n countryCode: 'BH',\n dialCode: '973',\n fullCodes: ['973'],\n },\n {\n countryEn: 'Bangladesh',\n countryRu: 'Бангладеш',\n countryCode: 'BD',\n dialCode: '880',\n fullCodes: ['880'],\n },\n {\n countryEn: 'Barbados',\n countryRu: 'Барбадос',\n countryCode: 'BB',\n dialCode: '1246',\n fullCodes: ['1246'],\n },\n {\n countryEn: 'Belarus',\n countryRu: 'Беларусь',\n countryCode: 'BY',\n dialCode: '375',\n phoneMask: '(99) 999 99 99',\n fullCodes: ['375'],\n },\n {\n countryEn: 'Belgium',\n countryRu: 'Бельгия',\n countryCode: 'BE',\n dialCode: '32',\n phoneMask: '999 99 99 99',\n fullCodes: ['32'],\n },\n {\n countryEn: 'Belize',\n countryRu: 'Белиз',\n countryCode: 'BZ',\n dialCode: '501',\n fullCodes: ['501'],\n },\n {\n countryEn: 'Benin',\n countryRu: 'Бенин',\n countryCode: 'BJ',\n dialCode: '229',\n fullCodes: ['229'],\n },\n {\n countryEn: 'Bhutan',\n countryRu: 'Бутан',\n countryCode: 'BT',\n dialCode: '975',\n fullCodes: ['975'],\n },\n {\n countryEn: 'Bolivia',\n countryRu: 'Боливия',\n countryCode: 'BO',\n dialCode: '591',\n fullCodes: ['591'],\n },\n {\n countryEn: 'Bosnia and Herzegovina',\n countryRu: 'Босния и Герцеговина',\n countryCode: 'BA',\n dialCode: '387',\n fullCodes: ['387'],\n },\n {\n countryEn: 'Botswana',\n countryRu: 'Ботсвана',\n countryCode: 'BW',\n dialCode: '267',\n fullCodes: ['267'],\n },\n {\n countryEn: 'Brazil',\n countryRu: 'Бразилия',\n countryCode: 'BR',\n dialCode: '55',\n phoneMask: '(99) 999999999',\n fullCodes: ['55'],\n },\n {\n countryEn: 'British Indian Ocean Territory',\n countryRu: 'Британская территория в Индийском океане',\n countryCode: 'IO',\n dialCode: '246',\n fullCodes: ['246'],\n },\n {\n countryEn: 'Brunei',\n countryRu: 'Бруней-Даруссалам',\n countryCode: 'BN',\n dialCode: '673',\n fullCodes: ['673'],\n },\n {\n countryEn: 'Bulgaria',\n countryRu: 'Болгария',\n countryCode: 'BG',\n dialCode: '359',\n fullCodes: ['359'],\n },\n {\n countryEn: 'Burkina Faso',\n countryRu: 'Буркина-Фасо',\n countryCode: 'BF',\n dialCode: '226',\n fullCodes: ['226'],\n },\n {\n countryEn: 'Burundi',\n countryRu: 'Бурунди',\n countryCode: 'BI',\n dialCode: '257',\n fullCodes: ['257'],\n },\n {\n countryEn: 'Cambodia',\n countryRu: 'Камбоджа',\n countryCode: 'KH',\n dialCode: '855',\n fullCodes: ['855'],\n },\n {\n countryEn: 'Cameroon',\n countryRu: 'Камерун',\n countryCode: 'CM',\n dialCode: '237',\n fullCodes: ['237'],\n },\n {\n countryEn: 'Canada',\n countryRu: 'Канада',\n countryCode: 'CA',\n dialCode: '1',\n phoneMask: '(999) 999-9999',\n dialCodePriority: 1,\n areaCodes: [\n '204',\n '226',\n '236',\n '249',\n '250',\n '289',\n '306',\n '343',\n '365',\n '387',\n '403',\n '416',\n '418',\n '431',\n '437',\n '438',\n '450',\n '506',\n '514',\n '519',\n '548',\n '579',\n '581',\n '587',\n '604',\n '613',\n '639',\n '647',\n '672',\n '705',\n '709',\n '742',\n '778',\n '780',\n '782',\n '807',\n '819',\n '825',\n '867',\n '873',\n '902',\n '905',\n ],\n fullCodes: [\n '1204',\n '1226',\n '1236',\n '1249',\n '1250',\n '1289',\n '1306',\n '1343',\n '1365',\n '1387',\n '1403',\n '1416',\n '1418',\n '1431',\n '1437',\n '1438',\n '1450',\n '1506',\n '1514',\n '1519',\n '1548',\n '1579',\n '1581',\n '1587',\n '1604',\n '1613',\n '1639',\n '1647',\n '1672',\n '1705',\n '1709',\n '1742',\n '1778',\n '1780',\n '1782',\n '1807',\n '1819',\n '1825',\n '1867',\n '1873',\n '1902',\n '1905',\n ],\n },\n {\n countryEn: 'Cape Verde',\n countryRu: 'Кабо-Верде',\n countryCode: 'CV',\n dialCode: '238',\n fullCodes: ['238'],\n },\n {\n countryEn: 'Caribbean Netherlands',\n countryRu: 'Бонайре, Саба и Синт-Эстатиус',\n countryCode: 'BQ',\n dialCode: '599',\n dialCodePriority: 1,\n fullCodes: ['599'],\n },\n {\n countryEn: 'Central African Republic',\n countryRu: 'Центрально-Африканская Республика',\n countryCode: 'CF',\n dialCode: '236',\n fullCodes: ['236'],\n },\n {\n countryEn: 'Chad',\n countryRu: 'Чад',\n countryCode: 'TD',\n dialCode: '235',\n fullCodes: ['235'],\n },\n {\n countryEn: 'Chile',\n countryRu: 'Чили',\n countryCode: 'CL',\n dialCode: '56',\n fullCodes: ['56'],\n },\n {\n countryEn: 'China',\n countryRu: 'Китай',\n countryCode: 'CN',\n dialCode: '86',\n phoneMask: '99-999999999',\n fullCodes: ['86'],\n },\n {\n countryEn: 'Colombia',\n countryRu: 'Колумбия',\n countryCode: 'CO',\n dialCode: '57',\n fullCodes: ['57'],\n },\n {\n countryEn: 'Comoros',\n countryRu: 'Коморы',\n countryCode: 'KM',\n dialCode: '269',\n fullCodes: ['269'],\n },\n {\n countryEn: 'DR Congo',\n countryRu: 'ДР Конго',\n countryCode: 'CD',\n dialCode: '243',\n fullCodes: ['243'],\n },\n {\n countryEn: 'Republic of the Congo',\n countryRu: 'Республика Конго',\n countryCode: 'CG',\n dialCode: '242',\n fullCodes: ['242'],\n },\n {\n countryEn: 'Costa Rica',\n countryRu: 'Коста-Рика',\n countryCode: 'CR',\n dialCode: '506',\n phoneMask: '9999-9999',\n fullCodes: ['506'],\n },\n {\n countryEn: 'Côte d’Ivoire',\n countryRu: 'Кот д’Ивуар',\n countryCode: 'CI',\n dialCode: '225',\n phoneMask: '99 99 99 99',\n fullCodes: ['225'],\n },\n {\n countryEn: 'Croatia',\n countryRu: 'Хорватия',\n countryCode: 'HR',\n dialCode: '385',\n fullCodes: ['385'],\n },\n {\n countryEn: 'Cuba',\n countryRu: 'Куба',\n countryCode: 'CU',\n dialCode: '53',\n fullCodes: ['53'],\n },\n {\n countryEn: 'Curaçao',\n countryRu: 'Кюрасао',\n countryCode: 'CW',\n dialCode: '599',\n dialCodePriority: 0,\n fullCodes: ['599'],\n },\n {\n countryEn: 'Cyprus',\n countryRu: 'Кипр',\n countryCode: 'CY',\n dialCode: '357',\n phoneMask: '99 999999',\n fullCodes: ['357'],\n },\n {\n countryEn: 'Czech Republic',\n countryRu: 'Чешская Республика',\n countryCode: 'CZ',\n dialCode: '420',\n fullCodes: ['420'],\n },\n {\n countryEn: 'Denmark',\n countryRu: 'Дания',\n countryCode: 'DK',\n dialCode: '45',\n phoneMask: '99 99 99 99',\n fullCodes: ['45'],\n },\n {\n countryEn: 'Djibouti',\n countryRu: 'Джибути',\n countryCode: 'DJ',\n dialCode: '253',\n fullCodes: ['253'],\n },\n {\n countryEn: 'Dominica',\n countryRu: 'Доминика',\n countryCode: 'DM',\n dialCode: '1767',\n fullCodes: ['1767'],\n },\n {\n countryEn: 'Dominican Republic',\n countryRu: 'Доминиканская Республика',\n countryCode: 'DO',\n dialCode: '1',\n dialCodePriority: 2,\n areaCodes: ['809', '829', '849'],\n fullCodes: ['1809', '1829', '1849'],\n },\n {\n countryEn: 'Ecuador',\n countryRu: 'Эквадор',\n countryCode: 'EC',\n dialCode: '593',\n fullCodes: ['593'],\n },\n {\n countryEn: 'Egypt',\n countryRu: 'Египет',\n countryCode: 'EG',\n dialCode: '20',\n fullCodes: ['20'],\n },\n {\n countryEn: 'El Salvador',\n countryRu: 'Эль-Сальвадор',\n countryCode: 'SV',\n dialCode: '503',\n phoneMask: '9999-9999',\n fullCodes: ['503'],\n },\n {\n countryEn: 'Equatorial Guinea',\n countryRu: 'Экваториальная Гвинея',\n countryCode: 'GQ',\n dialCode: '240',\n fullCodes: ['240'],\n },\n {\n countryEn: 'Eritrea',\n countryRu: 'Эритрея',\n countryCode: 'ER',\n dialCode: '291',\n fullCodes: ['291'],\n },\n {\n countryEn: 'Estonia',\n countryRu: 'Эстония',\n countryCode: 'EE',\n dialCode: '372',\n phoneMask: '9999 999999',\n fullCodes: ['372'],\n },\n {\n countryEn: 'Ethiopia',\n countryRu: 'Эфиопия',\n countryCode: 'ET',\n dialCode: '251',\n fullCodes: ['251'],\n },\n {\n countryEn: 'Fiji',\n countryRu: 'Фиджи',\n countryCode: 'FJ',\n dialCode: '679',\n fullCodes: ['679'],\n },\n {\n countryEn: 'Finland',\n countryRu: 'Финляндия',\n countryCode: 'FI',\n dialCode: '358',\n phoneMask: '99 999 99 99',\n fullCodes: ['358'],\n },\n {\n countryEn: 'France',\n countryRu: 'Франция',\n countryCode: 'FR',\n dialCode: '33',\n phoneMask: '9 99 99 99 99',\n fullCodes: ['33'],\n },\n {\n countryEn: 'French Guiana',\n countryRu: 'Французская Гвиана',\n countryCode: 'GF',\n dialCode: '594',\n fullCodes: ['594'],\n },\n {\n countryEn: 'French Polynesia',\n countryRu: 'Французская Полинезия',\n countryCode: 'PF',\n dialCode: '689',\n fullCodes: ['689'],\n },\n {\n countryEn: 'Gabon',\n countryRu: 'Габон',\n countryCode: 'GA',\n dialCode: '241',\n fullCodes: ['241'],\n },\n {\n countryEn: 'Gambia',\n countryRu: 'Гамбия',\n countryCode: 'GM',\n dialCode: '220',\n fullCodes: ['220'],\n },\n {\n countryEn: 'Georgia',\n countryRu: 'Грузия',\n countryCode: 'GE',\n dialCode: '995',\n fullCodes: ['995'],\n },\n {\n countryEn: 'Germany',\n countryRu: 'Германия',\n countryCode: 'DE',\n dialCode: '49',\n phoneMask: '9999 99999999',\n fullCodes: ['49'],\n },\n {\n countryEn: 'Ghana',\n countryRu: 'Гана',\n countryCode: 'GH',\n dialCode: '233',\n fullCodes: ['233'],\n },\n {\n countryEn: 'Greece',\n countryRu: 'Греция',\n countryCode: 'GR',\n dialCode: '30',\n fullCodes: ['30'],\n },\n {\n countryEn: 'Grenada',\n countryRu: 'Гренада',\n countryCode: 'GD',\n dialCode: '1473',\n fullCodes: ['1473'],\n },\n {\n countryEn: 'Guadeloupe',\n countryRu: 'Гваделупа',\n countryCode: 'GP',\n dialCode: '590',\n dialCodePriority: 0,\n fullCodes: ['590'],\n },\n {\n countryEn: 'Guam',\n countryRu: 'Гуам',\n countryCode: 'GU',\n dialCode: '1671',\n fullCodes: ['1671'],\n },\n {\n countryEn: 'Guatemala',\n countryRu: 'Гватемала',\n countryCode: 'GT',\n dialCode: '502',\n phoneMask: '9999-9999',\n fullCodes: ['502'],\n },\n {\n countryEn: 'Guinea',\n countryRu: 'Гвинея',\n countryCode: 'GN',\n dialCode: '224',\n fullCodes: ['224'],\n },\n {\n countryEn: 'Guinea-Bissau',\n countryRu: 'Гвинея-Бисау',\n countryCode: 'GW',\n dialCode: '245',\n fullCodes: ['245'],\n },\n {\n countryEn: 'Guyana',\n countryRu: 'Гайана',\n countryCode: 'GY',\n dialCode: '592',\n fullCodes: ['592'],\n },\n {\n countryEn: 'Haiti',\n countryRu: 'Гаити',\n countryCode: 'HT',\n dialCode: '509',\n phoneMask: '9999-9999',\n fullCodes: ['509'],\n },\n {\n countryEn: 'Honduras',\n countryRu: 'Гондурас',\n countryCode: 'HN',\n dialCode: '504',\n fullCodes: ['504'],\n },\n {\n countryEn: 'Hong Kong',\n countryRu: 'Гонконг',\n countryCode: 'HK',\n dialCode: '852',\n phoneMask: '9999 9999',\n fullCodes: ['852'],\n },\n {\n countryEn: 'Hungary',\n countryRu: 'Венгрия',\n countryCode: 'HU',\n dialCode: '36',\n fullCodes: ['36'],\n },\n {\n countryEn: 'Iceland',\n countryRu: 'Исландия',\n countryCode: 'IS',\n dialCode: '354',\n phoneMask: '999 9999',\n fullCodes: ['354'],\n },\n {\n countryEn: 'India',\n countryRu: 'Индия',\n countryCode: 'IN',\n dialCode: '91',\n phoneMask: '99999-99999',\n fullCodes: ['91'],\n },\n {\n countryEn: 'Indonesia',\n countryRu: 'Индонезия',\n countryCode: 'ID',\n dialCode: '62',\n fullCodes: ['62'],\n },\n {\n countryEn: 'Iran',\n countryRu: 'Иран',\n countryCode: 'IR',\n dialCode: '98',\n fullCodes: ['98'],\n },\n {\n countryEn: 'Iraq',\n countryRu: 'Ирак',\n countryCode: 'IQ',\n dialCode: '964',\n fullCodes: ['964'],\n },\n {\n countryEn: 'Ireland',\n countryRu: 'Ирландия',\n countryCode: 'IE',\n dialCode: '353',\n phoneMask: '99 9999999',\n fullCodes: ['353'],\n },\n {\n countryEn: 'Israel',\n countryRu: 'Израиль',\n countryCode: 'IL',\n dialCode: '972',\n phoneMask: '999 999 9999',\n fullCodes: ['972'],\n },\n {\n countryEn: 'Italy',\n countryRu: 'Италия',\n countryCode: 'IT',\n dialCode: '39',\n phoneMask: '999 9999999',\n dialCodePriority: 0,\n fullCodes: ['39'],\n },\n {\n countryEn: 'Jamaica',\n countryRu: 'Ямайка',\n countryCode: 'JM',\n dialCode: '1876',\n fullCodes: ['1876'],\n },\n {\n countryEn: 'Japan',\n countryRu: 'Япония',\n countryCode: 'JP',\n dialCode: '81',\n phoneMask: '99 9999 9999',\n fullCodes: ['81'],\n },\n {\n countryEn: 'Jordan',\n countryRu: 'Иордания',\n countryCode: 'JO',\n dialCode: '962',\n fullCodes: ['962'],\n },\n {\n countryEn: 'Kazakhstan',\n countryRu: 'Казахстан',\n countryCode: 'KZ',\n dialCode: '7',\n phoneMask: '(999) 999-99-99',\n dialCodePriority: 1,\n fullCodes: ['7'],\n },\n {\n countryEn: 'Kenya',\n countryRu: 'Кения',\n countryCode: 'KE',\n dialCode: '254',\n fullCodes: ['254'],\n },\n {\n countryEn: 'Kiribati',\n countryRu: 'Кирибати',\n countryCode: 'KI',\n dialCode: '686',\n fullCodes: ['686'],\n },\n {\n countryEn: 'Kosovo',\n countryRu: 'Косово',\n countryCode: 'XK',\n dialCode: '383',\n fullCodes: ['383'],\n },\n {\n countryEn: 'Kuwait',\n countryRu: 'Кувейт',\n countryCode: 'KW',\n dialCode: '965',\n fullCodes: ['965'],\n },\n {\n countryEn: 'Kyrgyzstan',\n countryRu: 'Киргизия',\n countryCode: 'KG',\n dialCode: '996',\n fullCodes: ['996'],\n },\n {\n countryEn: 'Laos',\n countryRu: 'Лаос',\n countryCode: 'LA',\n dialCode: '856',\n fullCodes: ['856'],\n },\n {\n countryEn: 'Latvia',\n countryRu: 'Латвия',\n countryCode: 'LV',\n dialCode: '371',\n fullCodes: ['371'],\n },\n {\n countryEn: 'Lebanon',\n countryRu: 'Ливан',\n countryCode: 'LB',\n dialCode: '961',\n fullCodes: ['961'],\n },\n {\n countryEn: 'Lesotho',\n countryRu: 'Лесото',\n countryCode: 'LS',\n dialCode: '266',\n fullCodes: ['266'],\n },\n {\n countryEn: 'Liberia',\n countryRu: 'Либерия',\n countryCode: 'LR',\n dialCode: '231',\n fullCodes: ['231'],\n },\n {\n countryEn: 'Libya',\n countryRu: 'Ливийская Арабская Джамахирия',\n countryCode: 'LY',\n dialCode: '218',\n fullCodes: ['218'],\n },\n {\n countryEn: 'Liechtenstein',\n countryRu: 'Лихтенштейн',\n countryCode: 'LI',\n dialCode: '423',\n fullCodes: ['423'],\n },\n {\n countryEn: 'Lithuania',\n countryRu: 'Литва',\n countryCode: 'LT',\n dialCode: '370',\n fullCodes: ['370'],\n },\n {\n countryEn: 'Luxembourg',\n countryRu: 'Люксембург',\n countryCode: 'LU',\n dialCode: '352',\n fullCodes: ['352'],\n },\n {\n countryEn: 'Macau',\n countryRu: 'Макао',\n countryCode: 'MO',\n dialCode: '853',\n fullCodes: ['853'],\n },\n {\n countryEn: 'Macedonia',\n countryRu: 'Республика Македония',\n countryCode: 'MK',\n dialCode: '389',\n fullCodes: ['389'],\n },\n {\n countryEn: 'Madagascar',\n countryRu: 'Мадагаскар',\n countryCode: 'MG',\n dialCode: '261',\n fullCodes: ['261'],\n },\n {\n countryEn: 'Malawi',\n countryRu: 'Малави',\n countryCode: 'MW',\n dialCode: '265',\n fullCodes: ['265'],\n },\n {\n countryEn: 'Malaysia',\n countryRu: 'Малайзия',\n countryCode: 'MY',\n dialCode: '60',\n phoneMask: '99-9999-9999',\n fullCodes: ['60'],\n },\n {\n countryEn: 'Maldives',\n countryRu: 'Мальдивы',\n countryCode: 'MV',\n dialCode: '960',\n fullCodes: ['960'],\n },\n {\n countryEn: 'Mali',\n countryRu: 'Мали',\n countryCode: 'ML',\n dialCode: '223',\n fullCodes: ['223'],\n },\n {\n countryEn: 'Malta',\n countryRu: 'Мальта',\n countryCode: 'MT',\n dialCode: '356',\n fullCodes: ['356'],\n },\n {\n countryEn: 'Marshall Islands',\n countryRu: 'Маршалловы острова',\n countryCode: 'MH',\n dialCode: '692',\n fullCodes: ['692'],\n },\n {\n countryEn: 'Martinique',\n countryRu: 'Мартиника',\n countryCode: 'MQ',\n dialCode: '596',\n fullCodes: ['596'],\n },\n {\n countryEn: 'Mauritania',\n countryRu: 'Мавритания',\n countryCode: 'MR',\n dialCode: '222',\n fullCodes: ['222'],\n },\n {\n countryEn: 'Mauritius',\n countryRu: 'Маврикий',\n countryCode: 'MU',\n dialCode: '230',\n fullCodes: ['230'],\n },\n {\n countryEn: 'Mexico',\n countryRu: 'Мексика',\n countryCode: 'MX',\n dialCode: '52',\n phoneMask: '999 999 9999',\n dialCodePriority: 0,\n areaCodes: ['55', '81', '33', '656', '664', '998', '774', '229'],\n fullCodes: ['5255', '5281', '5233', '52656', '52664', '52998', '52774', '52229'],\n },\n {\n countryEn: 'Micronesia',\n countryRu: 'Микронезия, Федеративные Штаты',\n countryCode: 'FM',\n dialCode: '691',\n fullCodes: ['691'],\n },\n {\n countryEn: 'Moldova',\n countryRu: 'Молдова, Республика',\n countryCode: 'MD',\n dialCode: '373',\n phoneMask: '(99) 99-99-99',\n fullCodes: ['373'],\n },\n {\n countryEn: 'Monaco',\n countryRu: 'Монако',\n countryCode: 'MC',\n dialCode: '377',\n fullCodes: ['377'],\n },\n {\n countryEn: 'Mongolia',\n countryRu: 'Монголия',\n countryCode: 'MN',\n dialCode: '976',\n fullCodes: ['976'],\n },\n {\n countryEn: 'Montenegro',\n countryRu: 'Черногория',\n countryCode: 'ME',\n dialCode: '382',\n fullCodes: ['382'],\n },\n {\n countryEn: 'Morocco',\n countryRu: 'Марокко',\n countryCode: 'MA',\n dialCode: '212',\n fullCodes: ['212'],\n },\n {\n countryEn: 'Mozambique',\n countryRu: 'Мозамбик',\n countryCode: 'MZ',\n dialCode: '258',\n fullCodes: ['258'],\n },\n {\n countryEn: 'Myanmar',\n countryRu: 'Мьянма',\n countryCode: 'MM',\n dialCode: '95',\n fullCodes: ['95'],\n },\n {\n countryEn: 'Namibia',\n countryRu: 'Намибия',\n countryCode: 'NA',\n dialCode: '264',\n fullCodes: ['264'],\n },\n {\n countryEn: 'Nauru',\n countryRu: 'Науру',\n countryCode: 'NR',\n dialCode: '674',\n fullCodes: ['674'],\n },\n {\n countryEn: 'Nepal',\n countryRu: 'Непал',\n countryCode: 'NP',\n dialCode: '977',\n fullCodes: ['977'],\n },\n {\n countryEn: 'Netherlands',\n countryRu: 'Нидерланды',\n countryCode: 'NL',\n dialCode: '31',\n phoneMask: '99 99999999',\n fullCodes: ['31'],\n },\n {\n countryEn: 'New Caledonia',\n countryRu: 'Новая Каледония',\n countryCode: 'NC',\n dialCode: '687',\n fullCodes: ['687'],\n },\n {\n countryEn: 'New Zealand',\n countryRu: 'Новая Зеландия',\n countryCode: 'NZ',\n dialCode: '64',\n phoneMask: '999-999-9999',\n fullCodes: ['64'],\n },\n {\n countryEn: 'Nicaragua',\n countryRu: 'Никарагуа',\n countryCode: 'NI',\n dialCode: '505',\n fullCodes: ['505'],\n },\n {\n countryEn: 'Niger',\n countryRu: 'Нигер',\n countryCode: 'NE',\n dialCode: '227',\n fullCodes: ['227'],\n },\n {\n countryEn: 'Nigeria',\n countryRu: 'Нигерия',\n countryCode: 'NG',\n dialCode: '234',\n fullCodes: ['234'],\n },\n {\n countryEn: 'North Korea',\n countryRu: 'Северная Корея',\n countryCode: 'KP',\n dialCode: '850',\n fullCodes: ['850'],\n },\n {\n countryEn: 'Norway',\n countryRu: 'Норвегия',\n countryCode: 'NO',\n dialCode: '47',\n phoneMask: '999 99 999',\n fullCodes: ['47'],\n },\n {\n countryEn: 'Oman',\n countryRu: 'Оман',\n countryCode: 'OM',\n dialCode: '968',\n fullCodes: ['968'],\n },\n {\n countryEn: 'Pakistan',\n countryRu: 'Пакистан',\n countryCode: 'PK',\n dialCode: '92',\n phoneMask: '999-9999999',\n fullCodes: ['92'],\n },\n {\n countryEn: 'Palau',\n countryRu: 'Палау',\n countryCode: 'PW',\n dialCode: '680',\n fullCodes: ['680'],\n },\n {\n countryEn: 'Palestine',\n countryRu: 'Палестинская территория',\n countryCode: 'PS',\n dialCode: '970',\n fullCodes: ['970'],\n },\n {\n countryEn: 'Panama',\n countryRu: 'Панама',\n countryCode: 'PA',\n dialCode: '507',\n fullCodes: ['507'],\n },\n {\n countryEn: 'Papua New Guinea',\n countryRu: 'Папуа-Новая Гвинея',\n countryCode: 'PG',\n dialCode: '675',\n fullCodes: ['675'],\n },\n {\n countryEn: 'Paraguay',\n countryRu: 'Парагвай',\n countryCode: 'PY',\n dialCode: '595',\n fullCodes: ['595'],\n },\n {\n countryEn: 'Peru',\n countryRu: 'Перу',\n countryCode: 'PE',\n dialCode: '51',\n fullCodes: ['51'],\n },\n {\n countryEn: 'Philippines',\n countryRu: 'Филиппины',\n countryCode: 'PH',\n dialCode: '63',\n phoneMask: '9999 9999999',\n fullCodes: ['63'],\n },\n {\n countryEn: 'Poland',\n countryRu: 'Польша',\n countryCode: 'PL',\n dialCode: '48',\n phoneMask: '999-999-999',\n fullCodes: ['48'],\n },\n {\n countryEn: 'Portugal',\n countryRu: 'Португалия',\n countryCode: 'PT',\n dialCode: '351',\n fullCodes: ['351'],\n },\n {\n countryEn: 'Puerto Rico',\n countryRu: 'Пуэрто-Рико',\n countryCode: 'PR',\n dialCode: '1',\n dialCodePriority: 3,\n areaCodes: ['787', '939'],\n fullCodes: ['1787', '1939'],\n },\n {\n countryEn: 'Qatar',\n countryRu: 'Катар',\n countryCode: 'QA',\n dialCode: '974',\n fullCodes: ['974'],\n },\n {\n countryEn: 'Réunion',\n countryRu: 'Реюньон',\n countryCode: 'RE',\n dialCode: '262',\n fullCodes: ['262'],\n },\n {\n countryEn: 'Romania',\n countryRu: 'Румыния',\n countryCode: 'RO',\n dialCode: '40',\n fullCodes: ['40'],\n },\n {\n countryEn: 'Russia',\n countryRu: 'Россия',\n countryCode: 'RU',\n dialCode: '7',\n phoneMask: '(999) 999-99-99',\n dialCodePriority: 0,\n fullCodes: ['7'],\n },\n {\n countryEn: 'Rwanda',\n countryRu: 'Руанда',\n countryCode: 'RW',\n dialCode: '250',\n fullCodes: ['250'],\n },\n {\n countryEn: 'Saint Kitts and Nevis',\n countryRu: 'Сент-Китс и Невис',\n countryCode: 'KN',\n dialCode: '1869',\n fullCodes: ['1869'],\n },\n {\n countryEn: 'Saint Lucia',\n countryRu: 'Сент-Люсия',\n countryCode: 'LC',\n dialCode: '1758',\n fullCodes: ['1758'],\n },\n {\n countryEn: 'Saint Vincent and the Grenadines',\n countryRu: 'Сент-Винсент и Гренадины',\n countryCode: 'VC',\n dialCode: '1784',\n fullCodes: ['1784'],\n },\n {\n countryEn: 'Samoa',\n countryRu: 'Самоа',\n countryCode: 'WS',\n dialCode: '685',\n fullCodes: ['685'],\n },\n {\n countryEn: 'San Marino',\n countryRu: 'Сан-Марино',\n countryCode: 'SM',\n dialCode: '378',\n fullCodes: ['378'],\n },\n {\n countryEn: 'São Tomé and Príncipe',\n countryRu: 'Сан-Томе и Принсипи',\n countryCode: 'ST',\n dialCode: '239',\n fullCodes: ['239'],\n },\n {\n countryEn: 'Saudi Arabia',\n countryRu: 'Саудовская Аравия',\n countryCode: 'SA',\n dialCode: '966',\n fullCodes: ['966'],\n },\n {\n countryEn: 'Senegal',\n countryRu: 'Сенегал',\n countryCode: 'SN',\n dialCode: '221',\n fullCodes: ['221'],\n },\n {\n countryEn: 'Serbia',\n countryRu: 'Сербия',\n countryCode: 'RS',\n dialCode: '381',\n fullCodes: ['381'],\n },\n {\n countryEn: 'Seychelles',\n countryRu: 'Сейшелы',\n countryCode: 'SC',\n dialCode: '248',\n fullCodes: ['248'],\n },\n {\n countryEn: 'Sierra Leone',\n countryRu: 'Сьерра-Леоне',\n countryCode: 'SL',\n dialCode: '232',\n fullCodes: ['232'],\n },\n {\n countryEn: 'Singapore',\n countryRu: 'Сингапур',\n countryCode: 'SG',\n dialCode: '65',\n phoneMask: '9999-9999',\n fullCodes: ['65'],\n },\n {\n countryEn: 'Slovakia',\n countryRu: 'Словакия',\n countryCode: 'SK',\n dialCode: '421',\n fullCodes: ['421'],\n },\n {\n countryEn: 'Slovenia',\n countryRu: 'Словения',\n countryCode: 'SI',\n dialCode: '386',\n fullCodes: ['386'],\n },\n {\n countryEn: 'Solomon Islands',\n countryRu: 'Соломоновы острова',\n countryCode: 'SB',\n dialCode: '677',\n fullCodes: ['677'],\n },\n {\n countryEn: 'Somalia',\n countryRu: 'Сомали',\n countryCode: 'SO',\n dialCode: '252',\n fullCodes: ['252'],\n },\n {\n countryEn: 'South Africa',\n countryRu: 'Южная Африка',\n countryCode: 'ZA',\n dialCode: '27',\n fullCodes: ['27'],\n },\n {\n countryEn: 'South Korea',\n countryRu: 'Южная Корея',\n countryCode: 'KR',\n dialCode: '82',\n phoneMask: '999 9999 9999',\n fullCodes: ['82'],\n },\n {\n countryCode: 'OS',\n countryEn: 'South Ossetia',\n countryRu: 'Южная Осетия',\n phoneMask: '(999) 999-99-99',\n dialCode: '7',\n dialCodePriority: 1,\n fullCodes: ['7'],\n },\n {\n countryEn: 'South Sudan',\n countryRu: 'Южный Судан',\n countryCode: 'SS',\n dialCode: '211',\n fullCodes: ['211'],\n },\n {\n countryEn: 'Spain',\n countryRu: 'Испания',\n countryCode: 'ES',\n dialCode: '34',\n phoneMask: '999 999 999',\n fullCodes: ['34'],\n },\n {\n countryEn: 'Sri Lanka',\n countryRu: 'Шри-Ланка',\n countryCode: 'LK',\n dialCode: '94',\n fullCodes: ['94'],\n },\n {\n countryEn: 'Sudan',\n countryRu: 'Судан',\n countryCode: 'SD',\n dialCode: '249',\n fullCodes: ['249'],\n },\n {\n countryEn: 'Suriname',\n countryRu: 'Суринам',\n countryCode: 'SR',\n dialCode: '597',\n fullCodes: ['597'],\n },\n {\n countryEn: 'Swaziland',\n countryRu: 'Свазиленд',\n countryCode: 'SZ',\n dialCode: '268',\n fullCodes: ['268'],\n },\n {\n countryEn: 'Sweden',\n countryRu: 'Швеция',\n countryCode: 'SE',\n dialCode: '46',\n phoneMask: '(999) 999-999',\n fullCodes: ['46'],\n },\n {\n countryEn: 'Switzerland',\n countryRu: 'Швейцария',\n countryCode: 'CH',\n dialCode: '41',\n phoneMask: '99 999 99 99',\n fullCodes: ['41'],\n },\n {\n countryEn: 'Syria',\n countryRu: 'Сирийская Арабская Республика',\n countryCode: 'SY',\n dialCode: '963',\n fullCodes: ['963'],\n },\n {\n countryEn: 'Taiwan',\n countryRu: 'Тайвань',\n countryCode: 'TW',\n dialCode: '886',\n fullCodes: ['886'],\n },\n {\n countryEn: 'Tajikistan',\n countryRu: 'Таджикистан',\n countryCode: 'TJ',\n dialCode: '992',\n fullCodes: ['992'],\n },\n {\n countryEn: 'Tanzania',\n countryRu: 'Танзания',\n countryCode: 'TZ',\n dialCode: '255',\n fullCodes: ['255'],\n },\n {\n countryEn: 'Thailand',\n countryRu: 'Таиланд',\n countryCode: 'TH',\n dialCode: '66',\n fullCodes: ['66'],\n },\n {\n countryEn: 'Timor-Leste',\n countryRu: 'Тимор-Лесте',\n countryCode: 'TL',\n dialCode: '670',\n fullCodes: ['670'],\n },\n {\n countryEn: 'Togo',\n countryRu: 'Того',\n countryCode: 'TG',\n dialCode: '228',\n fullCodes: ['228'],\n },\n {\n countryEn: 'Tonga',\n countryRu: 'Тонга',\n countryCode: 'TO',\n dialCode: '676',\n fullCodes: ['676'],\n },\n {\n countryEn: 'Trinidad and Tobago',\n countryRu: 'Тринидад и Тобаго',\n countryCode: 'TT',\n dialCode: '1868',\n fullCodes: ['1868'],\n },\n {\n countryEn: 'Tunisia',\n countryRu: 'Тунис',\n countryCode: 'TN',\n dialCode: '216',\n fullCodes: ['216'],\n },\n {\n countryEn: 'Turkey',\n countryRu: 'Турция',\n countryCode: 'TR',\n dialCode: '90',\n phoneMask: '999 999 99 99',\n fullCodes: ['90'],\n },\n {\n countryEn: 'Turkmenistan',\n countryRu: 'Туркмения',\n countryCode: 'TM',\n dialCode: '993',\n fullCodes: ['993'],\n },\n {\n countryEn: 'Tuvalu',\n countryRu: 'Тувалу',\n countryCode: 'TV',\n dialCode: '688',\n fullCodes: ['688'],\n },\n {\n countryEn: 'Uganda',\n countryRu: 'Уганда',\n countryCode: 'UG',\n dialCode: '256',\n fullCodes: ['256'],\n },\n {\n countryEn: 'Ukraine',\n countryRu: 'Украина',\n countryCode: 'UA',\n dialCode: '380',\n phoneMask: '(99) 999 99 99',\n fullCodes: ['380'],\n },\n {\n countryEn: 'United Arab Emirates',\n countryRu: 'Объединенные Арабские Эмираты',\n countryCode: 'AE',\n dialCode: '971',\n fullCodes: ['971'],\n },\n {\n countryEn: 'United Kingdom',\n countryRu: 'Соединенное Королевство',\n countryCode: 'GB',\n dialCode: '44',\n phoneMask: '9999 999999',\n fullCodes: ['44'],\n },\n {\n countryEn: 'United States',\n countryRu: 'Соединенные Штаты',\n countryCode: 'US',\n dialCode: '1',\n phoneMask: '(999) 999-9999',\n dialCodePriority: 0,\n areaCodes: [\n '907',\n '205',\n '251',\n '256',\n '334',\n '479',\n '501',\n '870',\n '480',\n '520',\n '602',\n '623',\n '928',\n '209',\n '213',\n '310',\n '323',\n '408',\n '415',\n '510',\n '530',\n '559',\n '562',\n '619',\n '626',\n '650',\n '661',\n '707',\n '714',\n '760',\n '805',\n '818',\n '831',\n '858',\n '909',\n '916',\n '925',\n '949',\n '951',\n '303',\n '719',\n '970',\n '203',\n '860',\n '202',\n '302',\n '239',\n '305',\n '321',\n '352',\n '386',\n '407',\n '561',\n '727',\n '772',\n '813',\n '850',\n '863',\n '904',\n '941',\n '954',\n '229',\n '404',\n '478',\n '706',\n '770',\n '912',\n '808',\n '319',\n '515',\n '563',\n '641',\n '712',\n '208',\n '217',\n '309',\n '312',\n '618',\n '630',\n '708',\n '773',\n '815',\n '847',\n '219',\n '260',\n '317',\n '574',\n '765',\n '812',\n '316',\n '620',\n '785',\n '913',\n '270',\n '502',\n '606',\n '859',\n '225',\n '318',\n '337',\n '504',\n '985',\n '413',\n '508',\n '617',\n '781',\n '978',\n '301',\n '410',\n '207',\n '231',\n '248',\n '269',\n '313',\n '517',\n '586',\n '616',\n '734',\n '810',\n '906',\n '989',\n '218',\n '320',\n '507',\n '612',\n '651',\n '763',\n '952',\n '314',\n '417',\n '573',\n '636',\n '660',\n '816',\n '228',\n '601',\n '662',\n '406',\n '252',\n '336',\n '704',\n '828',\n '910',\n '919',\n '701',\n '308',\n '402',\n '603',\n '201',\n '609',\n '732',\n '856',\n '908',\n '973',\n '505',\n '575',\n '702',\n '775',\n '212',\n '315',\n '516',\n '518',\n '585',\n '607',\n '631',\n '716',\n '718',\n '845',\n '914',\n '216',\n '330',\n '419',\n '440',\n '513',\n '614',\n '740',\n '937',\n '405',\n '580',\n '918',\n '503',\n '541',\n '215',\n '412',\n '570',\n '610',\n '717',\n '724',\n '814',\n '401',\n '803',\n '843',\n '864',\n '605',\n '423',\n '615',\n '731',\n '865',\n '901',\n '931',\n '210',\n '214',\n '254',\n '281',\n '325',\n '361',\n '409',\n '432',\n '512',\n '713',\n '806',\n '817',\n '830',\n '903',\n '915',\n '936',\n '940',\n '956',\n '972',\n '979',\n '435',\n '801',\n '276',\n '434',\n '540',\n '703',\n '757',\n '804',\n '802',\n '206',\n '253',\n '360',\n '425',\n '509',\n '262',\n '414',\n '608',\n '715',\n '920',\n '304',\n '307',\n ],\n fullCodes: [\n '1907',\n '1205',\n '1251',\n '1256',\n '1334',\n '1479',\n '1501',\n '1870',\n '1480',\n '1520',\n '1602',\n '1623',\n '1928',\n '1209',\n '1213',\n '1310',\n '1323',\n '1408',\n '1415',\n '1510',\n '1530',\n '1559',\n '1562',\n '1619',\n '1626',\n '1650',\n '1661',\n '1707',\n '1714',\n '1760',\n '1805',\n '1818',\n '1831',\n '1858',\n '1909',\n '1916',\n '1925',\n '1949',\n '1951',\n '1303',\n '1719',\n '1970',\n '1203',\n '1860',\n '1202',\n '1302',\n '1239',\n '1305',\n '1321',\n '1352',\n '1386',\n '1407',\n '1561',\n '1727',\n '1772',\n '1813',\n '1850',\n '1863',\n '1904',\n '1941',\n '1954',\n '1229',\n '1404',\n '1478',\n '1706',\n '1770',\n '1912',\n '1808',\n '1319',\n '1515',\n '1563',\n '1641',\n '1712',\n '1208',\n '1217',\n '1309',\n '1312',\n '1618',\n '1630',\n '1708',\n '1773',\n '1815',\n '1847',\n '1219',\n '1260',\n '1317',\n '1574',\n '1765',\n '1812',\n '1316',\n '1620',\n '1785',\n '1913',\n '1270',\n '1502',\n '1606',\n '1859',\n '1225',\n '1318',\n '1337',\n '1504',\n '1985',\n '1413',\n '1508',\n '1617',\n '1781',\n '1978',\n '1301',\n '1410',\n '1207',\n '1231',\n '1248',\n '1269',\n '1313',\n '1517',\n '1586',\n '1616',\n '1734',\n '1810',\n '1906',\n '1989',\n '1218',\n '1320',\n '1507',\n '1612',\n '1651',\n '1763',\n '1952',\n '1314',\n '1417',\n '1573',\n '1636',\n '1660',\n '1816',\n '1228',\n '1601',\n '1662',\n '1406',\n '1252',\n '1336',\n '1704',\n '1828',\n '1910',\n '1919',\n '1701',\n '1308',\n '1402',\n '1603',\n '1201',\n '1609',\n '1732',\n '1856',\n '1908',\n '1973',\n '1505',\n '1575',\n '1702',\n '1775',\n '1212',\n '1315',\n '1516',\n '1518',\n '1585',\n '1607',\n '1631',\n '1716',\n '1718',\n '1845',\n '1914',\n '1216',\n '1330',\n '1419',\n '1440',\n '1513',\n '1614',\n '1740',\n '1937',\n '1405',\n '1580',\n '1918',\n '1503',\n '1541',\n '1215',\n '1412',\n '1570',\n '1610',\n '1717',\n '1724',\n '1814',\n '1401',\n '1803',\n '1843',\n '1864',\n '1605',\n '1423',\n '1615',\n '1731',\n '1865',\n '1901',\n '1931',\n '1210',\n '1214',\n '1254',\n '1281',\n '1325',\n '1361',\n '1409',\n '1432',\n '1512',\n '1713',\n '1806',\n '1817',\n '1830',\n '1903',\n '1915',\n '1936',\n '1940',\n '1956',\n '1972',\n '1979',\n '1435',\n '1801',\n '1276',\n '1434',\n '1540',\n '1703',\n '1757',\n '1804',\n '1802',\n '1206',\n '1253',\n '1360',\n '1425',\n '1509',\n '1262',\n '1414',\n '1608',\n '1715',\n '1920',\n '1304',\n '1307',\n ],\n },\n {\n countryEn: 'Uruguay',\n countryRu: 'Уругвай',\n countryCode: 'UY',\n dialCode: '598',\n fullCodes: ['598'],\n },\n {\n countryEn: 'Uzbekistan',\n countryRu: 'Узбекистан',\n countryCode: 'UZ',\n dialCode: '998',\n fullCodes: ['998'],\n },\n {\n countryEn: 'Vanuatu',\n countryRu: 'Вануату',\n countryCode: 'VU',\n dialCode: '678',\n fullCodes: ['678'],\n },\n {\n countryEn: 'Vatican City',\n countryRu: 'Ватикан',\n countryCode: 'VA',\n dialCode: '39',\n phoneMask: '99 9999 9999',\n dialCodePriority: 1,\n fullCodes: ['39'],\n },\n {\n countryEn: 'Venezuela',\n countryRu: 'Венесуэла',\n countryCode: 'VE',\n dialCode: '58',\n fullCodes: ['58'],\n },\n {\n countryEn: 'Vietnam',\n countryRu: 'Вьетнам',\n countryCode: 'VN',\n dialCode: '84',\n fullCodes: ['84'],\n },\n {\n countryEn: 'Yemen',\n countryRu: 'Йемен',\n countryCode: 'YE',\n dialCode: '967',\n fullCodes: ['967'],\n },\n {\n countryEn: 'Zambia',\n countryRu: 'Замбия',\n countryCode: 'ZM',\n dialCode: '260',\n fullCodes: ['260'],\n },\n {\n countryEn: 'Zimbabwe',\n countryRu: 'Зимбабве',\n countryCode: 'ZW',\n dialCode: '263',\n fullCodes: ['263'],\n },\n];\n","export const mimeTypes = {\n aac: 'audio/aac',\n abw: 'application/x-abiword',\n arc: 'application/x-freearc',\n avi: 'video/x-msvideo',\n azw: 'application/vnd.amazon.ebook',\n bin: 'application/octet-stream',\n bmp: 'image/bmp',\n bz: 'application/x-bzip',\n bz2: 'application/x-bzip2',\n csh: 'application/x-csh',\n css: 'text/css',\n csv: 'text/csv',\n doc: 'application/msword',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n eot: 'application/vnd.ms-fontobject',\n epub: 'application/epub+zip',\n gz: 'application/gzip',\n gif: 'image/gif',\n htm: 'text/html',\n html: 'text/html',\n ico: 'image/vnd.microsoft.icon',\n ics: 'text/calendar',\n jar: 'application/java-archive',\n jpeg: 'image/jpeg',\n jpg: 'image/jpeg',\n js: 'text/javascript',\n json: 'application/json',\n jsonld: 'application/ld+json',\n mid: '.midi',\n mjs: 'text/javascript',\n mp3: 'audio/mpeg',\n mpeg: 'video/mpeg',\n mpkg: 'application/vnd.apple.installer+xml',\n odp: 'application/vnd.oasis.opendocument.presentation',\n ods: 'application/vnd.oasis.opendocument.spreadsheet',\n odt: 'application/vnd.oasis.opendocument.text',\n oga: 'audio/ogg',\n ogv: 'video/ogg',\n ogx: 'application/ogg',\n opus: 'audio/opus',\n otf: 'font/otf',\n png: 'image/png',\n pdf: 'application/pdf',\n php: 'application/php',\n ppt: 'application/vnd.ms-powerpoint',\n pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n rar: 'application/vnd.rar',\n rtf: 'application/rtf',\n sh: 'application/x-sh',\n svg: 'image/svg+xml',\n swf: 'application/x-shockwave-flash',\n tar: 'application/x-tar',\n tif: 'image/tiff',\n tiff: 'image/tiff',\n ts: 'video/mp2t',\n ttf: 'font/ttf',\n txt: 'text/plain',\n vsd: 'application/vnd.visio',\n wav: 'audio/wav',\n weba: 'audio/webm',\n webm: 'video/webm',\n webp: 'image/webp',\n woff: 'font/woff',\n woff2: 'font/woff2',\n xhtml: 'application/xhtml+xml',\n xls: 'application/vnd.ms-excel',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n xml: 'XML',\n xul: 'application/vnd.mozilla.xul+xml',\n zip: 'application/zip',\n '3gp': 'video/3gpp',\n '3g2': 'video/3gpp2',\n '7z': 'application/x-7z-compressed',\n} as const;\n\nexport type IMimeType = keyof typeof mimeTypes;\n","import { isNotEmpty, isStringEmpty } from '@true-engineering/true-react-platform-helpers';\nimport type { IPhoneInfo, IPhoneValue } from '../components';\nimport { phoneInfo } from '../constants';\n\nexport const findCountryByCode = (\n countryCode?: string,\n countriesList = phoneInfo,\n): IPhoneInfo | undefined =>\n isNotEmpty(countryCode)\n ? countriesList.find((info) => info.countryCode === countryCode)\n : undefined;\n\nexport const findCountryIndexByCode = (countryCode?: string, countriesList = phoneInfo): number =>\n isNotEmpty(countryCode)\n ? countriesList.findIndex((info) => info.countryCode === countryCode)\n : -1;\n\nexport const getCountryTextByLocale = (country: IPhoneInfo, locale: string): string =>\n locale.toLowerCase() === 'ru' ? country.countryRu : country.countryEn;\n\n/**\n * Мутирует countriesList!\n */\nexport const sortCountriesByLocale = (countriesList: IPhoneInfo[], locale: string): IPhoneInfo[] =>\n countriesList.sort((countryA, countryB) =>\n getCountryTextByLocale(countryA, locale).localeCompare(\n getCountryTextByLocale(countryB, locale),\n ),\n );\n\nexport const checkSearchStringInCountry = (country: IPhoneInfo, searchString: string): boolean => {\n const checkValue = searchString.toLowerCase().trim().replace('+', '');\n\n const possibleValues = [\n country.countryRu,\n country.countryEn,\n ...country.countryRu.split(' '),\n ...country.countryEn.split(' '),\n country.dialCode,\n ].map((part) => part.toLowerCase());\n\n return possibleValues.some((v) => v.startsWith(checkValue));\n};\n\nexport const getFullPhone = (phone?: IPhoneValue): string =>\n (phone?.dialCode ?? '') + (phone?.phoneNumber ?? '');\n\nexport const getCountryCodeFromPhone = (phoneWithCode: string): string | undefined => {\n if (isStringEmpty(phoneWithCode)) {\n return;\n }\n\n // ищем страны, для которых phoneWithCode начинается с fullCode (dialCode + areaCode)\n const matchedCountries = phoneInfo.filter((info) =>\n info.fullCodes.some((fullCode) => phoneWithCode.startsWith(fullCode)),\n );\n\n // если нашлась всего одна — ок, выдаём её\n if (matchedCountries.length === 1) {\n return matchedCountries[0].countryCode;\n }\n\n // если нашлось несколько, выбираем страну с наименьшим dialCodePriority (0 — самая приоритетная)\n const highestPriorityCountries = phoneInfo\n .filter((info) => phoneWithCode.startsWith(info.dialCode))\n .sort((a, b) => (a.dialCodePriority ?? 1000) - (b.dialCodePriority ?? 1000));\n\n return highestPriorityCountries.at(0)?.countryCode;\n};\n\nexport const getPhoneObjFromString = (fullPhone: string, countryCode?: string): IPhoneValue => {\n const newCountryCode = countryCode ?? getCountryCodeFromPhone(fullPhone);\n const dialCode = findCountryByCode(newCountryCode)?.dialCode;\n const phoneNumber = fullPhone.slice(dialCode?.length);\n\n return { dialCode, phoneNumber, countryCode: newCountryCode };\n};\n\nexport const DEFAULT_PHONE_MASK = '+ 9 999 999 999 999 99';\n\nexport const getPhoneMask = (countryCode?: string): string => {\n let mask = DEFAULT_PHONE_MASK;\n if (isNotEmpty(countryCode)) {\n const countrySettings = findCountryByCode(countryCode);\n\n if (countrySettings !== undefined) {\n const dialCodeLength = countrySettings.dialCode.length;\n const areaAndPhoneMask =\n countrySettings.phoneMask ?? mask.substring(2, mask.length - dialCodeLength);\n mask = `+ ${'9'.repeat(dialCodeLength)} ${areaAndPhoneMask}`;\n }\n }\n\n return mask;\n};\n","import { ComponentType, memo } from 'react';\nimport {\n isNotEmpty,\n isString,\n isStringNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { IDataAttributes } from '../types';\n\nexport { default as rgba } from 'hex-to-rgba';\n\n/** @deprecated Используйте `toKebabCase` из `true-react-platform-helpers` */\nexport const transformToKebab = (string: string): string => {\n let result = '';\n string.split('').forEach((char) => {\n if (char.toLowerCase() === char) {\n result += char;\n } else {\n result += `-${char.toLowerCase()}`;\n }\n });\n\n return result;\n};\n\nexport const getParentNode = (element: Element | ShadowRoot | Document): Element =>\n element.nodeName === 'HTML' || element === document\n ? (element as Element)\n : (element.parentNode as Element) ?? (element as ShadowRoot).host;\n\nexport const hasExactParent = (element: Element, parent: Element): boolean => {\n if (element === parent) {\n return true; // Found the exact parent\n }\n\n const parentNode = getParentNode(element);\n\n if (parentNode === element) {\n return false; // Reached the top-level HTML element or Shadow DOM host\n }\n\n return hasExactParent(parentNode, parent);\n};\n\nexport const getStyleComputedProperty = (element: Element): Partial<CSSStyleDeclaration> =>\n element.nodeType !== 1 ? {} : getComputedStyle(element, null);\n\nexport const getScrollParent = (element: Element | Document): Element => {\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return (element as Element).ownerDocument.body;\n case '#document':\n return (element as Document).body;\n }\n\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element as Element) ?? {};\n if (/(auto|scroll|overlay)/.test((overflow ?? '') + (overflowY ?? '') + (overflowX ?? ''))) {\n return element as Element;\n }\n return getScrollParent(getParentNode(element as Element));\n};\n\nexport const isElementOffScreen = (element: HTMLElement, input?: HTMLElement): boolean => {\n const el = element;\n const scrollParent = getScrollParent(element);\n\n const { scrollHeight: scrollHeightWithElement } = scrollParent;\n el.hidden = true;\n const { scrollHeight: scrollHeightWithoutElement } = scrollParent;\n el.hidden = false;\n\n const isOffscreen = scrollHeightWithElement !== scrollHeightWithoutElement;\n\n if (isOffscreen && input !== undefined) {\n const elRect = el.getBoundingClientRect();\n const scrollParentRect = scrollParent.getBoundingClientRect();\n const topOffset = elRect.top - scrollParentRect.top;\n if (input.clientHeight + el.clientHeight > topOffset) {\n return false;\n }\n }\n\n return isOffscreen;\n};\n\nexport const getNumberInRange = (value: number, min = -Infinity, max = Infinity): number =>\n Math.min(max, Math.max(min, value));\n\nconst DEFAULT_THOUSANDS_SEPARATOR = '\\u2009';\n\nexport const formatStringNumber = (\n val?: string,\n separator = DEFAULT_THOUSANDS_SEPARATOR,\n): string => {\n if (val === undefined) {\n return '';\n }\n const parts = val.split('.');\n\n parts[0] = parts[0]\n // убрать лидирующие нули\n .replace(/^0+(?=\\d)/, '')\n // проставить сепараторы тысяч\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\n return (parts[1] ?? '').length > 0 ? parts.join('.') : parts[0];\n};\n\nexport const formatNumber = (val?: number, separator = DEFAULT_THOUSANDS_SEPARATOR): string => {\n if (val === undefined || isNaN(val)) {\n return '';\n }\n return formatStringNumber(String(val), separator);\n};\n\nexport const removeStringFormat = (val?: string): string =>\n (val ?? '').replace(',', '.').replace(/\\s/g, '');\n\nexport const stringToNumber = (val?: string): number | undefined => {\n const trimmed = removeStringFormat(val);\n if (trimmed === '') {\n return undefined;\n }\n const num = Number(trimmed);\n return isNaN(num) ? undefined : num;\n};\n\nexport const setCaretPosition = (elem: HTMLInputElement, caretPos: number | null): void => {\n if (caretPos === null || elem === null) {\n return;\n }\n if (elem.selectionStart) {\n elem.focus();\n elem.setSelectionRange(caretPos, caretPos);\n } else {\n elem.focus();\n }\n};\n\nexport const isSpaceChar = (char?: string): boolean =>\n char !== undefined && char.match(/\\s/) !== null;\n\nexport const getNumberLength = (n?: number): number =>\n n === undefined || isNaN(n) ? 0 : n.toString().length;\n\nexport const trimStringToMaxLength = (val: string, maxLength: number): string =>\n val.length > maxLength ? val.slice(0, maxLength) : val;\n\n/** @deprecated Используйте `addDataAttributes` из `true-react-platform-helpers` */\nexport const addDataAttributes = (data: IDataAttributes = {}): IDataAttributes =>\n Object.fromEntries(\n Object.entries(data).map(([key, value]) =>\n (isString(value) && isStringNotEmpty(value)) || isNotEmpty(value)\n ? [`data-${transformToKebab(key)}`, value]\n : [],\n ),\n );\n\nexport const excludeStorybookParams = (params: string[]): RegExp =>\n new RegExp(`^(on.*|${['tweakStyles', 'data', ...params].join('|')})$`);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const genericMemo = memo as <T extends ComponentType<any>>(\n ...args: Parameters<typeof memo<T>>\n) => T;\n","import { DependencyList, useEffect } from 'react';\nimport usePopper, { VirtualElement } from 'react-overlays/usePopper';\nimport { getScrollParent, minWidthModifier } from '../helpers';\nimport { IDropdownWithPopperOptions } from '../types';\n\nexport const useDropdown = ({\n isOpen,\n onDropdownClose,\n referenceElement,\n dropdownElement,\n options,\n dependenciesForPositionUpdating = [],\n}: {\n isOpen: boolean;\n referenceElement: VirtualElement | null | undefined;\n dropdownElement: HTMLElement | null | undefined;\n options?: IDropdownWithPopperOptions;\n dependenciesForPositionUpdating?: DependencyList;\n onDropdownClose: (event: Event) => void;\n}): ReturnType<typeof usePopper> | undefined => {\n const {\n shouldUsePopper = false,\n shouldRenderInBody = false,\n shouldHideOnScroll = false,\n scrollParent = 'document',\n canBeFlipped = false,\n modifiers = [],\n placement = 'bottom-start',\n flipOptions,\n } = options ?? {};\n\n useEffect(() => {\n if (!shouldHideOnScroll || !isOpen) {\n return;\n }\n\n const scrollParentEl =\n scrollParent === 'auto'\n ? getScrollParent(referenceElement as Element)\n : scrollParent === 'document'\n ? document\n : scrollParent;\n scrollParentEl.addEventListener('scroll', onDropdownClose);\n\n return () => {\n scrollParentEl.removeEventListener('scroll', onDropdownClose);\n };\n }, [shouldHideOnScroll, isOpen]);\n\n let popperData: ReturnType<typeof usePopper> | undefined;\n if (shouldUsePopper) {\n // TODO: Вытащить хук из под условия???\n // eslint-disable-next-line react-hooks/rules-of-hooks\n popperData = usePopper(referenceElement, dropdownElement, {\n enabled: isOpen,\n placement,\n modifiers: [\n ...(shouldRenderInBody ? [minWidthModifier] : []),\n {\n name: 'offset',\n options: {\n offset: [0, 6],\n },\n },\n {\n name: 'flip',\n options: {\n fallbackPlacements: canBeFlipped ? ['bottom-start', 'top-start'] : ['bottom-start'],\n ...flipOptions,\n },\n },\n ...modifiers,\n ],\n });\n }\n\n useEffect(() => {\n if (dependenciesForPositionUpdating.length !== 0) {\n popperData?.update();\n }\n }, dependenciesForPositionUpdating);\n\n return popperData;\n};\n","import { MutableRefObject, useLayoutEffect, useRef } from 'react';\n\nexport const useLatestRef = <T>(value: T): MutableRefObject<T> => {\n const ref = useRef(value);\n\n useLayoutEffect(() => {\n ref.current = value;\n });\n\n return ref;\n};\n","import { RefCallback, useEffect, useMemo } from 'react';\nimport { isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { useLatestRef } from './use-latest-ref';\n\nexport interface IInsertionRefOptions {\n /** @default false */\n isDisabled?: boolean;\n onIntersection?: VoidFunction;\n onIntersectionEnd?: VoidFunction;\n observerOptions?: IntersectionObserverInit;\n}\n\nexport const useIntersectionRef = ({\n observerOptions,\n ...options\n}: IInsertionRefOptions): RefCallback<Element> => {\n const optionsRef = useLatestRef(options);\n\n const { ref, disconnect } = useMemo(() => {\n const observer = new IntersectionObserver(([{ isIntersecting }]) => {\n const { current } = optionsRef;\n if (current?.isDisabled) {\n return;\n }\n if (isIntersecting) {\n current?.onIntersection?.();\n } else {\n current?.onIntersectionEnd?.();\n }\n }, observerOptions);\n\n const observerRef: RefCallback<Element> = (node) => {\n observer.disconnect();\n if (isNotEmpty(node)) {\n observer.observe(node);\n }\n };\n\n return {\n ref: observerRef,\n disconnect: () => observer.disconnect(),\n };\n }, [optionsRef, observerOptions]);\n\n useEffect(() => disconnect, [disconnect]);\n\n return ref;\n};\n","import { RefCallback, useMemo, useEffect } from 'react';\nimport { isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { useLatestRef } from './use-latest-ref';\n\nexport interface IResizeRefOptions {\n /** @default false */\n isDisabled?: boolean;\n onChange: (entry: ResizeObserverEntry) => void;\n}\n\nexport const useResizeRef = (options: IResizeRefOptions): RefCallback<Element> => {\n const optionsRef = useLatestRef(options);\n\n const { ref, disconnect } = useMemo(() => {\n const observer = new ResizeObserver(([entry]) => {\n const { current } = optionsRef;\n if (!current.isDisabled) {\n current?.onChange(entry);\n }\n });\n\n const observerRef: RefCallback<Element> = (node) => {\n observer.disconnect();\n if (isNotEmpty(node)) {\n observer.observe(node);\n }\n };\n\n return { ref: observerRef, disconnect: () => observer.disconnect() };\n }, [optionsRef]);\n\n useEffect(() => disconnect, [disconnect]);\n\n return ref;\n};\n","import { useCallback, useEffect, useRef } from 'react';\n\nexport const useIsMounted = (): (() => boolean) => {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return useCallback(() => isMounted.current, []);\n};\n","import { useMemo } from 'react';\nimport { isNotEmpty, mergeStyles } from '@true-engineering/true-react-platform-helpers';\n\nexport const useMerge = <T>(one?: T, two?: T): T | undefined =>\n useMemo(\n () => (isNotEmpty(one) && isNotEmpty(two) ? mergeStyles(one, two) : one ?? two),\n [one, two],\n );\n","import { useMemo } from 'react';\nimport { mergeRefs } from '@true-engineering/true-react-platform-helpers';\n\nexport const useMergedRefs: typeof mergeRefs = (refs) => useMemo(() => mergeRefs(refs), refs);\n","import { RefObject, useEffect } from 'react';\nimport { isEmpty, isFunction, isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { useLatestRef } from './use-latest-ref';\n\nexport const checkElementParentsClassNames = (element: HTMLElement, className: string): boolean => {\n if (element.classList.contains(className)) {\n return true;\n }\n\n if (element === document.body) {\n return false;\n }\n\n if (element.parentElement) {\n return checkElementParentsClassNames(element.parentElement, className);\n }\n\n return false;\n};\n\nexport const isElementOneOfParents = (element: HTMLElement, elToSearch: HTMLElement): boolean => {\n if (element === elToSearch) {\n return true;\n }\n\n if (element === document.body) {\n return false;\n }\n\n if (element.parentElement) {\n return isElementOneOfParents(element.parentElement, elToSearch);\n }\n\n return false;\n};\n\nexport function useOnClickOutsideWithRef<Elem extends HTMLElement, IgnoreElem extends HTMLElement>(\n refOrGetter: RefObject<Elem | null> | (() => Elem | null | undefined) | undefined,\n handler: (event: MouseEvent | TouchEvent) => void,\n ignoreRef?: RefObject<IgnoreElem>,\n): void {\n useOnClickOutside(refOrGetter, handler, undefined, ignoreRef);\n}\n\nexport function useOnClickOutside<Elem extends HTMLElement, IgnoreElem extends HTMLElement>(\n refOrGetter: RefObject<Elem | null> | (() => Elem | null | undefined) | undefined,\n handler: (event: MouseEvent | TouchEvent) => void,\n ignoreClassName?: string,\n ignoreRef?: RefObject<IgnoreElem>,\n): void {\n const optionsRef = useLatestRef({ refOrGetter, ignoreRef, ignoreClassName, handler });\n\n useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent) => {\n const options = optionsRef.current;\n\n const elem = isFunction(options.refOrGetter)\n ? options.refOrGetter()\n : options.refOrGetter?.current;\n const ignoreElem = options.ignoreRef?.current;\n const target = event.target as HTMLElement;\n\n if (\n isEmpty(elem) ||\n // Do nothing if clicking ref's element or descendent elements\n elem.contains(target) ||\n (isNotEmpty(options.ignoreClassName) &&\n checkElementParentsClassNames(target, options.ignoreClassName)) ||\n (isNotEmpty(ignoreElem) && isElementOneOfParents(target, ignoreElem))\n ) {\n return;\n }\n\n options.handler(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [optionsRef]);\n}\n","import { useMemo } from 'react';\nimport { IMaybeArray } from '@true-engineering/true-react-platform-helpers';\nimport { IComponentName, IMixedStyles, useThemeComponentStyles } from '../theme';\nimport { mixStyles } from './use-mixed-styles';\n\n// TODO: Можно усилить типы\nexport const useTweakStyles = <StyleSheet, ClassName extends keyof StyleSheet & `tweak${string}`>({\n innerStyles,\n tweakStyles,\n className,\n currentComponentName,\n}: {\n /**\n * Это tweakStyles, определенные в родительском компоненте\n * (например, стили для Input, определенные в стилях компонента Select)\n */\n innerStyles?: IMixedStyles<StyleSheet[ClassName]>;\n /**\n * Пропса tweakStyles из родительского компонента\n * (это уже непосредственно ISelectProps.tweakStyles)\n */\n tweakStyles?: IMaybeArray<StyleSheet>;\n /**\n * Класс для переопределения tweakStyles из-вне. (Например, 'tweakInput')\n */\n className: ClassName;\n /**\n * Название компонента который вызывает useTweakStyles\n */\n currentComponentName?: IComponentName;\n}): Array<NonNullable<StyleSheet[ClassName]>> => {\n const themeStyles = useThemeComponentStyles<StyleSheet>(currentComponentName);\n\n return useMemo(\n () =>\n mixStyles(\n innerStyles,\n mixStyles(themeStyles, tweakStyles).map((style) => style[className]),\n ),\n [innerStyles, className, themeStyles, tweakStyles],\n );\n};\n","export default \" <svg\\n width=\\\"100%\\\"\\n height=\\\"100%\\\"\\n viewBox=\\\"0 0 32 32\\\"\\n fill=\\\"none\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n >\\n <circle opacity=\\\"0.5\\\" cx=\\\"16\\\" cy=\\\"16\\\" r=\\\"16\\\" fill=\\\"#DDE3ED\\\" />\\n <mask\\n id=\\\"mask0_0_12744\\\"\\n style=\\\"mask-type: 'alpha';\\\"\\n maskUnits=\\\"userSpaceOnUse\\\"\\n x=\\\"0\\\"\\n y=\\\"0\\\"\\n width=\\\"32\\\"\\n height=\\\"32\\\"\\n >\\n <circle cx=\\\"16\\\" cy=\\\"16\\\" r=\\\"16\\\" fill=\\\"white\\\" />\\n </mask>\\n <g mask=\\\"url(#mask0_0_12744)\\\">\\n <circle cx=\\\"16\\\" cy=\\\"29\\\" r=\\\"13\\\" fill=\\\"url(#paint0_linear_0_12744)\\\" />\\n <mask\\n id=\\\"mask1_0_12744\\\"\\n style=\\\"mask-type: 'alpha';\\\"\\n maskUnits=\\\"userSpaceOnUse\\\"\\n x=\\\"3\\\"\\n y=\\\"16\\\"\\n width=\\\"26\\\"\\n height=\\\"26\\\"\\n >\\n <circle cx=\\\"16\\\" cy=\\\"29\\\" r=\\\"13\\\" fill=\\\"white\\\" />\\n </mask>\\n <g mask=\\\"url(#mask1_0_12744)\\\">\\n <ellipse\\n cx=\\\"16\\\"\\n cy=\\\"17.5\\\"\\n rx=\\\"6\\\"\\n ry=\\\"7.5\\\"\\n fill=\\\"#505F79\\\"\\n fill-opacity=\\\"0.204983\\\"\\n />\\n </g>\\n </g>\\n <ellipse cx=\\\"16\\\" cy=\\\"13\\\" rx=\\\"6\\\" ry=\\\"7\\\" fill=\\\"white\\\" />\\n <defs>\\n <linearGradient\\n id=\\\"paint0_linear_0_12744\\\"\\n x1=\\\"13.347\\\"\\n y1=\\\"46.279\\\"\\n x2=\\\"33.5318\\\"\\n y2=\\\"30.8088\\\"\\n gradientUnits=\\\"userSpaceOnUse\\\"\\n >\\n <stop stop-color=\\\"#ABD229\\\" />\\n <stop offset=\\\"1\\\" stop-color=\\\"#9CD03F\\\" />\\n </linearGradient>\\n </defs>\\n </svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M6 12h3V9H6v3zm-2 4V7h12l.002 9H4zM16 4h-1V3c0-.552-.448-1-1-1s-1 .448-1 1v1H7V3c0-.552-.448-1-1-1s-1 .448-1 1v1H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"m7.5 13.086 7.793-7.793a1 1 0 1 1 1.414 1.414l-8.5 8.5a1 1 0 0 1-1.414 0l-3.5-3.5a1 1 0 1 1 1.414-1.414L7.5 13.086Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 16 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M8.24512 8.84751L11.038 6.05461C11.4285 5.66409 12.0617 5.66409 12.4522 6.05461C12.8427 6.44514 12.8427 7.0783 12.4522 7.46883L8.95222 10.9688C8.5617 11.3593 7.92853 11.3593 7.53801 10.9688L4.03801 7.46883C3.64749 7.0783 3.64749 6.44514 4.03801 6.05461C4.42853 5.66409 5.0617 5.66409 5.45222 6.05461L8.24512 8.84751Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M10.0029 11.6053L5.71004 7.31242C5.31951 6.9219 4.68635 6.9219 4.29582 7.31242C3.9053 7.70295 3.9053 8.33611 4.29582 8.72664L9.29582 13.7266C9.68635 14.1172 10.3195 14.1172 10.71 13.7266L15.71 8.72664C16.1006 8.33611 16.1006 7.70295 15.71 7.31242C15.3195 6.9219 14.6863 6.9219 14.2958 7.31242L10.0029 11.6053Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M8.41421 10L12.7071 5.70711C13.0976 5.31658 13.0976 4.68342 12.7071 4.29289C12.3166 3.90237 11.6834 3.90237 11.2929 4.29289L6.29289 9.29289C5.90237 9.68342 5.90237 10.3166 6.29289 10.7071L11.2929 15.7071C11.6834 16.0976 12.3166 16.0976 12.7071 15.7071C13.0976 15.3166 13.0976 14.6834 12.7071 14.2929L8.41421 10Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M11.5858 10L7.29289 5.70711C6.90237 5.31658 6.90237 4.68342 7.29289 4.29289C7.68342 3.90237 8.31658 3.90237 8.70711 4.29289L13.7071 9.29289C14.0976 9.68342 14.0976 10.3166 13.7071 10.7071L8.70711 15.7071C8.31658 16.0976 7.68342 16.0976 7.29289 15.7071C6.90237 15.3166 6.90237 14.6834 7.29289 14.2929L11.5858 10Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M6.102 4.709c-.446-.36-1.055-.373-1.415-.012-.39.39-.342 1.072.108 1.523l3.783 3.782-3.783 3.782-.096.108c-.36.446-.373 1.055-.012 1.415.39.391 1.072.342 1.523-.108l3.782-3.783 3.782 3.783.108.097c.446.358 1.055.372 1.415.011.39-.39.342-1.072-.108-1.523l-3.783-3.782L15.19 6.22l.097-.108c.358-.446.372-1.055.011-1.415-.39-.39-1.072-.342-1.523.108L9.992 8.588 6.21 4.805l-.108-.096Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"currentColor\\\" d=\\\"M4.5 4.5l11 11m0-11l-11 11\\\" stroke-width=\\\"2\\\" stroke-linejoin=\\\"round\\\" stroke-linecap=\\\"round\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M11.985 10l2.407-2.293c.41-.39.41-1.023 0-1.414-.41-.39-1.074-.39-1.485 0L10.5 8.586 8.093 6.293c-.411-.39-1.075-.39-1.485 0-.41.391-.41 1.023 0 1.414L9.015 10l-2.407 2.293c-.41.391-.41 1.023 0 1.414.205.195.473.293.742.293s.538-.098.743-.293l2.407-2.293 2.407 2.293c.205.195.474.293.743.293s.537-.098.742-.293c.41-.391.41-1.023 0-1.414L11.985 10z\\\"></path></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\">\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"#21A366\\\"/>\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"url(#paint0_linear_0_16081)\\\" style=\\\"mix-blend-mode:overlay\\\"/>\\n <path d=\\\"M8.00342 14.5244L10.0728 11.3062L12.1357 14.5244H14.4019L11.2217 9.73828L14.1162 5.21875H11.939L10.1108 8.2085L8.24463 5.21875H6.04834L8.93018 9.66846L5.75 14.5244H8.00342Z\\\" fill=\\\"white\\\"/>\\n <defs>\\n <linearGradient id=\\\"paint0_linear_0_16081\\\" x1=\\\"-9.95187\\\" y1=\\\"9.95187\\\" x2=\\\"9.95187\\\" y2=\\\"29.8556\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"white\\\" stop-opacity=\\\"0.245559\\\"/>\\n <stop offset=\\\"1\\\" stop-opacity=\\\"0.498578\\\"/>\\n </linearGradient>\\n </defs>\\n</svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\">\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"#FF991F\\\"/>\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"url(#paint0_linear_0_16103)\\\" style=\\\"mix-blend-mode:overlay\\\"/>\\n <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.90113 15C3.09595 15 2.62093 14.097 3.07709 13.4335L6.67606 8.19861C7.07341 7.62064 7.9268 7.62065 8.32414 8.19861L13.0001 15H3.90113Z\\\" fill=\\\"white\\\"/>\\n <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.53962 15L12.7076 10.2481C13.1034 9.65434 13.9758 9.65434 14.3717 10.2481L16.5031 13.4453C16.9462 14.1099 16.4698 15 15.6711 15H9.53962Z\\\" fill=\\\"white\\\"/>\\n <path d=\\\"M16.0001 5.5C16.0001 6.32843 15.3285 7 14.5001 7C13.6717 7 13.0001 6.32843 13.0001 5.5C13.0001 4.67157 13.6717 4 14.5001 4C15.3285 4 16.0001 4.67157 16.0001 5.5Z\\\" fill=\\\"white\\\"/>\\n <defs>\\n <linearGradient id=\\\"paint0_linear_0_16103\\\" x1=\\\"-9.95187\\\" y1=\\\"9.95187\\\" x2=\\\"9.95187\\\" y2=\\\"29.8556\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"white\\\" stop-opacity=\\\"0.245559\\\"/>\\n <stop offset=\\\"1\\\" stop-opacity=\\\"0.498578\\\"/>\\n </linearGradient>\\n </defs>\\n</svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\">\\n <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M18 6.60751L11.392 -0.000488281L5 0.000113437C3.34315 0.000113437 2 1.34326 2 3.00011V17.0001C2 18.657 3.34315 20.0001 5 20.0001H15C16.6569 20.0001 18 18.657 18 17.0001V6.60751ZM17 8.00011L10 1.00011V6.00011C10 7.10468 10.8954 8.00011 12 8.00011H17Z\\\" fill=\\\"#AABFFC\\\"/>\\n <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M18 6.60751L11.392 -0.000488281L5 0.000113437C3.34315 0.000113437 2 1.34326 2 3.00011V17.0001C2 18.657 3.34315 20.0001 5 20.0001H15C16.6569 20.0001 18 18.657 18 17.0001V6.60751ZM17 8.00011L10 1.00011V6.00011C10 7.10468 10.8954 8.00011 12 8.00011H17Z\\\" fill=\\\"url(#paint0_linear_0_16113)\\\" style=\\\"mix-blend-mode:overlay\\\"/>\\n <defs>\\n <linearGradient id=\\\"paint0_linear_0_16113\\\" x1=\\\"-5.9615\\\" y1=\\\"9.95168\\\" x2=\\\"13.4572\\\" y2=\\\"25.4862\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"white\\\" stop-opacity=\\\"0.245559\\\"/>\\n <stop offset=\\\"1\\\" stop-opacity=\\\"0.498578\\\"/>\\n </linearGradient>\\n </defs>\\n</svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\">\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"#FF5630\\\"/>\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"url(#paint0_linear_0_16087)\\\" style=\\\"mix-blend-mode:overlay\\\"/>\\n <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4.55535 13.6488V11.0388H4.92535C5.65535 11.0388 5.93535 10.9988 6.27535 10.8688C6.97535 10.5988 7.36535 9.92876 7.36535 8.99876C7.36535 8.21876 7.07535 7.57876 6.57535 7.25876C6.27535 7.06876 5.82535 6.97876 5.09535 6.97876H2.98535V13.6488H4.55535ZM4.84535 9.90876H4.54535V8.10876H4.84535C5.51535 8.10876 5.75535 8.34876 5.75535 9.02876C5.75535 9.66876 5.51535 9.90876 4.84535 9.90876ZM11.6393 13.4388C11.2793 13.5988 10.9993 13.6488 10.4393 13.6488H8.21935V6.97876H10.2593C11.2393 6.97876 11.7193 7.11876 12.1093 7.52876C12.5993 8.02876 12.7693 8.71876 12.7693 10.1388C12.7693 10.9388 12.7093 11.6788 12.6093 12.1588C12.4893 12.7388 12.1193 13.2188 11.6393 13.4388ZM10.0793 12.5188H9.79935V8.10876H10.0193C10.9713 8.10876 11.1466 8.35839 11.1586 9.95112L11.1593 10.1488C11.1593 12.2088 11.0193 12.5188 10.0793 12.5188ZM15.3333 10.8188V13.6488H13.7533V6.97876H17.6033V8.23876H15.3333V9.58876H17.4433V10.8188H15.3333Z\\\" fill=\\\"white\\\"/>\\n <defs>\\n <linearGradient id=\\\"paint0_linear_0_16087\\\" x1=\\\"-9.95187\\\" y1=\\\"9.95187\\\" x2=\\\"9.95187\\\" y2=\\\"29.8556\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"white\\\" stop-opacity=\\\"0.245559\\\"/>\\n <stop offset=\\\"1\\\" stop-opacity=\\\"0.498578\\\"/>\\n </linearGradient>\\n </defs>\\n</svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\">\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"#2C7CD3\\\"/>\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"url(#paint0_linear_0_16075)\\\" style=\\\"mix-blend-mode:overlay\\\"/>\\n <path d=\\\"M8.0542 14.9946L9.90137 8.0376L11.7549 14.9946H13.748L16.0078 5.68896H14.1162L12.688 12.189L11.0566 5.68896H8.82227L7.12109 12.0811L5.71826 5.68896H3.79492L6.0166 14.9946H8.0542Z\\\" fill=\\\"white\\\"/>\\n <defs>\\n <linearGradient id=\\\"paint0_linear_0_16075\\\" x1=\\\"-9.95187\\\" y1=\\\"9.95187\\\" x2=\\\"9.95187\\\" y2=\\\"29.8556\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"white\\\" stop-opacity=\\\"0.245559\\\"/>\\n <stop offset=\\\"1\\\" stop-opacity=\\\"0.498578\\\"/>\\n </linearGradient>\\n </defs>\\n</svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\">\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"#FF991F\\\"/>\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"url(#paint0_linear_2163_24057)\\\" style=\\\"mix-blend-mode:overlay\\\"/>\\n <path d=\\\"M1.97561 5.99658L3.56111 9.43008L1.84961 13.0001H3.66611L4.21211 11.6771C4.40111 11.0996 4.45361 10.8791 4.49561 10.6166H4.52711C4.54811 10.8686 4.61111 11.1101 4.77911 11.5826L5.34611 13.0001H7.20461L5.49311 9.44058L7.07861 5.99658H5.28311L4.86311 7.06758C4.85261 7.08858 4.83161 7.16208 4.80011 7.25658C4.75811 7.44558 4.70561 7.63458 4.65311 7.82358C4.60061 8.02308 4.57961 8.10708 4.56911 8.23308H4.52711C4.49561 8.02308 4.43261 7.78158 4.27511 7.23558L3.82361 5.99658H1.97561Z\\\" fill=\\\"white\\\"/>\\n <path d=\\\"M7.53437 5.99658V13.0001H9.05687V9.78708L9.02537 9.34608L8.98337 8.41158C8.98337 8.33808 8.96237 8.00208 8.92037 7.47708H8.98337C9.05687 7.90758 9.10937 8.21208 9.18287 8.53758C9.24587 8.87358 9.34037 9.28308 9.44537 9.77658L10.1804 13.0001H11.3984L12.1544 9.59808C12.2909 8.98908 12.5324 7.79208 12.5744 7.47708H12.6374C12.6059 7.80258 12.5849 8.01258 12.5744 8.22258L12.5534 8.98908C12.5429 9.25158 12.5324 9.52458 12.5219 9.80808V13.0001H14.0444V5.99658H11.6714L11.2409 8.10708C11.0834 8.74758 10.8419 10.3751 10.8419 10.8161L10.7999 10.8266C10.7894 10.2911 10.5269 8.61108 10.3274 7.85508L9.92837 5.99658H7.53437Z\\\" fill=\\\"white\\\"/>\\n <path d=\\\"M14.8685 5.99658V13.0001H18.89V11.6666H16.5275V5.99658H14.8685Z\\\" fill=\\\"white\\\"/>\\n <defs>\\n <linearGradient id=\\\"paint0_linear_2163_24057\\\" x1=\\\"-9.95187\\\" y1=\\\"9.95187\\\" x2=\\\"9.95187\\\" y2=\\\"29.8556\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"white\\\" stop-opacity=\\\"0.245559\\\"/>\\n <stop offset=\\\"1\\\" stop-opacity=\\\"0.498578\\\"/>\\n </linearGradient>\\n </defs>\\n</svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\">\\n <g clip-path=\\\"url(#clip0_922_22603)\\\">\\n <path d=\\\"M16 0H4C1.79086 0 0 1.79086 0 4V16C0 18.2091 1.79086 20 4 20H16C18.2091 20 20 18.2091 20 16V4C20 1.79086 18.2091 0 16 0Z\\\" fill=\\\"#A1D237\\\"/>\\n <path d=\\\"M16 0H4C1.79086 0 0 1.79086 0 4V16C0 18.2091 1.79086 20 4 20H16C18.2091 20 20 18.2091 20 16V4C20 1.79086 18.2091 0 16 0Z\\\" fill=\\\"url(#paint0_linear_922_22603)\\\" style=\\\"mix-blend-mode:overlay\\\"/>\\n <path d=\\\"M8.32086 14V12.6807H6.32086C5.92513 12.6807 5.72193 12.6927 5.58289 12.7166C5.64706 12.6207 5.68984 12.5367 5.73262 12.4528C5.7861 12.3568 5.83957 12.2609 5.89305 12.1529L8.28877 7.22339V6H4.17112V7.31934H6.20321C6.39572 7.31934 6.59893 7.30735 6.69519 7.29535C6.58824 7.47526 6.49198 7.65517 6.41711 7.81109L4 12.8246V14H8.32086ZM10.4813 14V6H9.03743V14H10.4813ZM12.9519 14V10.8096H13.4439C14.2139 10.8096 14.5241 10.7616 14.877 10.6057C15.5936 10.2699 16 9.47826 16 8.38681C16 7.45127 15.6898 6.69565 15.1444 6.32384C14.8342 6.09595 14.3743 6 13.6364 6H11.508V14H12.9519ZM13.4118 9.6102H12.9519V7.1994H13.3797C13.7219 7.1994 13.9679 7.24738 14.107 7.34333C14.385 7.53523 14.5241 7.87106 14.5241 8.38681C14.5241 8.91454 14.4064 9.25037 14.1497 9.44228C13.9893 9.57421 13.8075 9.6102 13.4118 9.6102Z\\\" fill=\\\"white\\\"/>\\n </g>\\n <defs>\\n <linearGradient id=\\\"paint0_linear_922_22603\\\" x1=\\\"-9.95187\\\" y1=\\\"9.95187\\\" x2=\\\"9.95187\\\" y2=\\\"29.8556\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"white\\\" stop-opacity=\\\"0.245559\\\"/>\\n <stop offset=\\\"1\\\" stop-opacity=\\\"0.498578\\\"/>\\n </linearGradient>\\n <clipPath id=\\\"clip0_922_22603\\\">\\n <rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\"/>\\n </clipPath>\\n </defs>\\n</svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M12 11c1.306 0 2.417.834 2.829 2H17c.552 0 1 .448 1 1s-.448 1-1 1h-2.17c-.412 1.165-1.524 2-2.83 2s-2.418-.835-2.83-2H3c-.552 0-1-.448-1-1s.448-1 1-1h6.171c.412-1.166 1.523-2 2.829-2zM5 3c1.306 0 2.417.834 2.829 2H17c.552 0 1 .448 1 1s-.448 1-1 1H7.83C7.417 8.165 6.305 9 5 9 3.343 9 2 7.657 2 6s1.343-3 3-3z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M10 8c-.552 0-1-.448-1-1s.448-1 1-1 1 .448 1 1-.448 1-1 1zm0 8c3.307 0 6-2.693 6-6 0-3.308-2.693-6-6-6-3.308 0-6 2.692-6 6 0 3.307 2.692 6 6 6zm0-14c2.122 0 4.157.843 5.657 2.343S18 7.878 18 10s-.843 4.157-2.343 5.657S12.122 18 10 18s-4.157-.843-5.657-2.343S2 12.122 2 10c0-4.418 3.582-8 8-8zm0 12c-.552 0-1-.448-1-1v-3c0-.552.448-1 1-1s1 .448 1 1v3c0 .552-.448 1-1 1z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"1 1 16 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M5.08154 9.02148C5.08154 8.77083 5.16211 8.55778 5.32324 8.38232C5.48438 8.20687 5.70817 8.11914 5.99463 8.11914C6.28109 8.11914 6.50667 8.20687 6.67139 8.38232C6.8361 8.55778 6.91846 8.77083 6.91846 9.02148C6.91846 9.27214 6.8361 9.47803 6.67139 9.63916C6.50667 9.80029 6.28109 9.88086 5.99463 9.88086C5.70817 9.88086 5.48438 9.80029 5.32324 9.63916C5.16211 9.47803 5.08154 9.27214 5.08154 9.02148ZM8.08154 9.02148C8.08154 8.77083 8.16211 8.55778 8.32324 8.38232C8.48438 8.20687 8.70817 8.11914 8.99463 8.11914C9.28109 8.11914 9.50667 8.20687 9.67139 8.38232C9.8361 8.55778 9.91846 8.77083 9.91846 9.02148C9.91846 9.27214 9.8361 9.47803 9.67139 9.63916C9.50667 9.80029 9.28109 9.88086 8.99463 9.88086C8.70817 9.88086 8.48438 9.80029 8.32324 9.63916C8.16211 9.47803 8.08154 9.27214 8.08154 9.02148ZM11.0815 9.02148C11.0815 8.77083 11.1621 8.55778 11.3232 8.38232C11.4844 8.20687 11.7082 8.11914 11.9946 8.11914C12.2811 8.11914 12.5067 8.20687 12.6714 8.38232C12.8361 8.55778 12.9185 8.77083 12.9185 9.02148C12.9185 9.27214 12.8361 9.47803 12.6714 9.63916C12.5067 9.80029 12.2811 9.88086 11.9946 9.88086C11.7082 9.88086 11.4844 9.80029 11.3232 9.63916C11.1621 9.47803 11.0815 9.27214 11.0815 9.02148Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M16 11H4a1 1 0 1 1 0-2h12a1 1 0 1 1 0 2Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M16 11h-5v5a1 1 0 1 1-2 0v-5H4a1 1 0 1 1 0-2h5V4a1 1 0 0 1 2 0v5h5a1 1 0 1 1 0 2Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M9 2c3.866 0 7 3.134 7 7 0 1.7-.606 3.259-1.614 4.472l2.589 2.59c.39.39.39 1.023 0 1.414-.39.39-1.024.39-1.414 0l-2.662-2.661C11.785 15.563 10.443 16 9 16c-3.866 0-7-3.134-7-7s3.134-7 7-7zm0 2C6.239 4 4 6.239 4 9s2.239 5 5 5 5-2.239 5-5-2.239-5-5-5z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#FFF\\\" stroke=\\\"none\\\" d=\\\"M14 11H6c-.552 0-1-.448-1-1s.448-1 1-1h8c.552 0 1 .448 1 1s-.448 1-1 1z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#FFF\\\" stroke=\\\"none\\\" d=\\\"M10 15c-.552 0-1-.448-1-1v-4c0-.552.448-1 1-1s1 .448 1 1v4c0 .552-.448 1-1 1zM10 7c-.552 0-1-.448-1-1s.448-1 1-1 1 .448 1 1-.448 1-1 1z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#FFF\\\" stroke=\\\"none\\\" d=\\\"M11.414 10l2.293-2.293c.391-.391.391-1.023 0-1.414-.39-.391-1.023-.391-1.414 0L10 8.586 7.707 6.293c-.39-.391-1.023-.391-1.414 0-.39.391-.39 1.023 0 1.414L8.586 10l-2.293 2.293c-.39.391-.39 1.023 0 1.414.195.195.451.293.707.293.256 0 .512-.098.707-.293L10 11.414l2.293 2.293c.195.195.451.293.707.293.256 0 .512-.098.707-.293.391-.391.391-1.023 0-1.414L11.414 10z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#FFF\\\" stroke=\\\"none\\\" d=\\\"M8.333 11.252l4.96-4.96c.39-.39 1.024-.39 1.414 0 .39.391.39 1.025 0 1.415L9.04 13.374c-.39.39-1.023.39-1.414 0L5.293 11.04c-.39-.39-.39-1.023 0-1.414.39-.39 1.024-.39 1.414 0l1.626 1.626z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#FFF\\\" stroke=\\\"none\\\" d=\\\"M10 5c-.552 0-1 .448-1 1v4c0 .552.448 1 1 1s1-.448 1-1V6c0-.552-.448-1-1-1zM10 13c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M16 6v10c0 1.105-.895 2-2 2H6c-1.105 0-2-.895-2-2V6h12zM8 8c-.552 0-1 .448-1 1v6c0 .552.448 1 1 1s1-.448 1-1V9c0-.552-.448-1-1-1zm4 0c-.552 0-1 .448-1 1v6c0 .552.448 1 1 1s1-.448 1-1V9c0-.552-.448-1-1-1zm0-6l1 1h3c.552 0 1 .448 1 1s-.448 1-1 1H4c-.552 0-1-.448-1-1s.448-1 1-1h3l1-1h4z\\\"></path></svg>\"","import type { ISvgIcon } from '../types';\nimport avatar from './avatar.svg?raw';\nimport calendar from './calendar.svg?raw';\nimport check from './check.svg?raw';\nimport chevronDownSmall from './chevron-down-small.svg?raw';\nimport chevronDown from './chevron-down.svg?raw';\nimport chevronLeft from './chevron-left.svg?raw';\nimport chevronRight from './chevron-right.svg?raw';\nimport closeLarge from './close-large.svg?raw';\nimport closeWindow from './close-window.svg?raw';\nimport close from './close.svg?raw';\nimport fileExcel from './file-excel.svg?raw';\nimport fileImage from './file-image.svg?raw';\nimport fileOther from './file-other.svg?raw';\nimport filePdf from './file-pdf.svg?raw';\nimport fileWord from './file-word.svg?raw';\nimport fileXml from './file-xml.svg?raw';\nimport fileZip from './file-zip.svg?raw';\nimport filter from './filter.svg?raw';\nimport information from './information.svg?raw';\nimport menu from './menu.svg?raw';\nimport minus from './minus.svg?raw';\nimport plus from './plus.svg?raw';\nimport search from './search.svg?raw';\nimport statusError from './status-error.svg?raw';\nimport statusInfo from './status-info.svg?raw';\nimport statusNotOk from './status-not-ok.svg?raw';\nimport statusOk from './status-ok.svg?raw';\nimport statusWarning from './status-warning.svg?raw';\nimport trashCan from './trash-can.svg?raw';\n\nexport const iconsMap = {\n avatar,\n calendar,\n check,\n 'chevron-down-small': chevronDownSmall,\n 'chevron-down': chevronDown,\n 'chevron-left': chevronLeft,\n 'chevron-right': chevronRight,\n 'close-large': closeLarge,\n 'close-window': closeWindow,\n close,\n 'file-excel': fileExcel,\n 'file-image': fileImage,\n 'file-other': fileOther,\n 'file-pdf': filePdf,\n 'file-word': fileWord,\n 'file-xml': fileXml,\n 'file-zip': fileZip,\n filter,\n information,\n menu,\n minus,\n plus,\n search,\n 'status-error': statusError,\n 'status-info': statusInfo,\n 'status-not-ok': statusNotOk,\n 'status-ok': statusOk,\n 'status-warning': statusWarning,\n 'trash-can': trashCan,\n} satisfies Record<string, ISvgIcon>;\n","import { createThemedStyles, ITweakStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('Icon', {\n root: {\n display: 'flex',\n alignItems: 'center',\n },\n});\n\nexport type IIconStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport { addDataAttributes, isEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { useTheme } from '../../theme';\nimport { ICommonProps } from '../../types';\nimport { iconsMap } from './icons';\nimport { IIconType } from './types';\nimport { IIconStyles, useStyles } from './Icon.styles';\n\nexport interface IIconProps extends ICommonProps<IIconStyles> {\n type: IIconType;\n}\n\nexport const Icon: FC<IIconProps> = ({ type, data, testId, tweakStyles }) => {\n const classes = useStyles({ theme: tweakStyles });\n const theme = useTheme();\n\n const icon = theme.icons?.[type] ?? iconsMap[type];\n\n if (isEmpty(icon)) {\n console.error(`Иконки ${type} не существует`);\n return null;\n }\n\n return (\n <div\n className={classes.root}\n {...addDataAttributes(data, testId)}\n dangerouslySetInnerHTML={{ __html: icon }}\n />\n );\n};\n","import { ReactNode } from 'react';\nimport { Icon } from './Icon';\nimport { IIcon } from './types';\n\nexport const renderIcon = (icon: IIcon): ReactNode =>\n typeof icon === 'string' ? <Icon type={icon} /> : icon;\n","export const DEFAULT_OFFSET = 6;\n\nexport const POPUP_EVENT_TYPES = ['hover', 'click'] as const;\n","import { Middleware, size } from '@floating-ui/react';\n\nexport const minWidthRelativeToTrigger: Middleware = size({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n minWidth: `${rects.reference.width}px`,\n });\n },\n});\n","import { createThemedStyles, ITweakStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('WithPopup', {\n trigger: {\n width: 'fit-content',\n },\n\n clickable: {\n cursor: 'pointer',\n },\n\n active: {},\n\n disabled: {\n cursor: 'auto',\n },\n\n popup: {\n zIndex: 5,\n outline: 'none',\n },\n\n arrow: {},\n\n animationEnd: {},\n\n animationStart: {},\n\n 'dropdown-initial': {\n extend: 'animationEnd',\n },\n\n 'dropdown-open': {\n extend: 'animationStart',\n },\n\n 'dropdown-close': {\n visibility: 'hidden',\n extend: 'animationEnd',\n },\n\n 'dropdown-unmounted': {\n extend: 'animationEnd',\n },\n});\n\nexport type IWithPopupStyles = ITweakStyles<typeof useStyles>;\n","import { FC, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport {\n applyAction,\n stopPropagation,\n addDataAttributes,\n} from '@true-engineering/true-react-platform-helpers';\nimport {\n autoUpdate,\n useFloating,\n useClick,\n useDismiss,\n useHover,\n useInteractions,\n Placement,\n Middleware,\n FloatingPortal,\n offset,\n flip,\n useTransitionStatus,\n OffsetOptions,\n UseHoverProps,\n safePolygon,\n useFocus,\n FloatingArrow,\n arrow,\n UseClickProps,\n UseFocusProps,\n UseDismissProps,\n UseTransitionStatusProps,\n} from '@floating-ui/react';\nimport { ICommonProps, IDataAttributes, IRenderNode } from '../../types';\nimport { DEFAULT_OFFSET } from './constants';\nimport { minWidthRelativeToTrigger } from './helpers';\nimport {\n IPopupArrowProps,\n IPopupEventType,\n IReferenceProps,\n IWithPopupChildrenProps,\n IWithPopupToggleEvent,\n IWithPopupTriggerProps,\n} from './types';\nimport { useStyles, IWithPopupStyles } from './WithPopup.styles';\n\nexport interface IWithPopupProps extends ICommonProps<IWithPopupStyles> {\n trigger: IRenderNode<IWithPopupTriggerProps>;\n children: IRenderNode<IWithPopupChildrenProps>;\n middlewares?: Middleware[];\n /** @default eventType === 'click' ? 'bottom-end' : 'top' */\n placement?: Placement;\n /** @default 'click' */\n eventType?: IPopupEventType;\n /**\n * @deprecated Используйте hoverOptions\n * @default 0\n */\n hoverDelay?: number;\n /** @default 6 */\n popupOffset?: OffsetOptions;\n arrowProps?: IPopupArrowProps;\n popupData?: IDataAttributes;\n /** @default true, if eventType === click */\n shouldStopPropagation?: boolean;\n /** @default false */\n shouldHideOnScroll?: boolean;\n /** @default true */\n shouldRenderInBody?: boolean;\n /** Должен ли WithPopup рендерить свой div-wrapper в качестве триггера\n * @default true, if eventType === hover */\n isTriggerWrapped?: boolean;\n /** @default true */\n canBeFlipped?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n shouldShowArrow?: boolean;\n /** Должна ли минимальная ширина попапа быть равна ширине триггера\n * @default false */\n isMinWidthSameAsTrigger?: boolean;\n hoverOptions?: UseHoverProps;\n clickOptions?: UseClickProps;\n focusOptions?: UseFocusProps;\n dismissOptions?: UseDismissProps;\n transitionOptions?: UseTransitionStatusProps;\n onToggle?: (isActive: boolean, event?: IWithPopupToggleEvent) => void;\n}\n\nexport const WithPopup: FC<IWithPopupProps> = ({\n trigger,\n children,\n middlewares = [],\n eventType = 'click',\n placement = eventType === 'click' ? 'bottom-end' : 'top',\n hoverDelay = 0,\n popupOffset = DEFAULT_OFFSET,\n arrowProps,\n popupData,\n shouldStopPropagation = eventType === 'click',\n shouldHideOnScroll = false,\n shouldRenderInBody = true,\n canBeFlipped = true,\n isTriggerWrapped = eventType === 'hover',\n isDisabled = false,\n shouldShowArrow = false,\n isMinWidthSameAsTrigger = false,\n hoverOptions,\n clickOptions,\n focusOptions,\n dismissOptions,\n transitionOptions,\n tweakStyles,\n data,\n testId,\n onToggle,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const [isOpen, setIsOpen] = useState(false);\n const isActive = isOpen && !isDisabled;\n\n const arrowRef = useRef<SVGSVGElement>(null);\n\n const handleToggle = (next: boolean, event?: IWithPopupToggleEvent) => {\n event?.stopPropagation();\n onToggle?.(next, event);\n setIsOpen(next);\n };\n\n const handleClose = (event?: IWithPopupToggleEvent) => {\n handleToggle(false, event);\n };\n\n const { refs, floatingStyles, context } = useFloating({\n open: isActive,\n middleware: [\n offset(popupOffset),\n canBeFlipped && flip({ fallbackAxisSideDirection: 'start' }),\n isMinWidthSameAsTrigger && minWidthRelativeToTrigger,\n ...middlewares,\n shouldShowArrow && arrow({ element: arrowRef }),\n ],\n whileElementsMounted: autoUpdate,\n placement,\n onOpenChange: handleToggle,\n });\n\n const hover = useHover(context, {\n enabled: eventType === 'hover',\n delay: { open: hoverDelay, close: 0 },\n handleClose: safePolygon(),\n ...hoverOptions,\n });\n\n const focus = useFocus(context, { enabled: eventType === 'hover', ...focusOptions });\n\n const click = useClick(context, { enabled: eventType === 'click', ...clickOptions });\n\n const dismiss = useDismiss(context, {\n enabled: eventType === 'click',\n ancestorScroll: shouldHideOnScroll,\n ...dismissOptions,\n });\n\n const { getFloatingProps, getReferenceProps } = useInteractions([hover, click, focus, dismiss]);\n\n const { isMounted, status } = useTransitionStatus(context, {\n duration: { close: 500 },\n ...transitionOptions,\n });\n\n const referenceProps: IReferenceProps = getReferenceProps({\n ref: refs.setReference,\n ...(shouldStopPropagation && {\n onClick: stopPropagation,\n }),\n });\n\n const triggerElement = applyAction(trigger, {\n referenceProps: !isTriggerWrapped ? referenceProps : undefined,\n triggerProps: {\n isActive,\n isDisabled,\n ...(!isTriggerWrapped && { data, testId, ...referenceProps }),\n },\n });\n\n return (\n <>\n {isTriggerWrapped ? (\n <div\n className={clsx(classes.trigger, {\n [classes.clickable]: eventType === 'click',\n [classes.disabled]: isDisabled,\n [classes.active]: isActive,\n })}\n {...referenceProps}\n {...addDataAttributes(data, testId)}\n >\n {triggerElement}\n </div>\n ) : (\n triggerElement\n )}\n {isMounted && (\n <FloatingPortal\n root={shouldRenderInBody ? document.body : (refs.reference.current as HTMLElement)}\n >\n <div\n ref={refs.setFloating}\n style={floatingStyles}\n className={classes.popup}\n {...getFloatingProps()}\n {...addDataAttributes(popupData, testId, 'popup')}\n >\n <div className={classes[`dropdown-${status}`]}>\n {shouldShowArrow && (\n <FloatingArrow\n {...arrowProps}\n ref={arrowRef}\n context={context}\n className={classes.arrow}\n />\n )}\n {applyAction(children, { floatingContext: context, onClose: handleClose })}\n </div>\n </div>\n </FloatingPortal>\n )}\n </>\n );\n};\n","import { animations, colors, createThemedStyles, ITweakStyles } from '../../../../theme';\nimport type { IListSizes as IListItemSizes } from '../../types';\n\nconst ITEM_HORIZONTAL_PADDING = 16;\nconst ICON_SIZE = 20;\nconst ICON_GAP = 12;\n\nexport const useStyles = createThemedStyles('ListItem', {\n root: {\n display: 'flex',\n alignItems: 'center',\n gap: ICON_GAP,\n boxSizing: 'border-box',\n fontSize: 16,\n whiteSpace: 'nowrap',\n minHeight: 40,\n padding: [0, ITEM_HORIZONTAL_PADDING],\n transition: animations.defaultTransition,\n transitionProperty: 'background-color',\n cursor: 'pointer',\n },\n\n default: {},\n\n destructive: {},\n\n focused: {},\n\n disabledItem: {\n cursor: 'default',\n },\n\n spacer: {\n height: 1,\n backgroundColor: colors.BORDER_LIGHT,\n },\n\n withIconGap: {\n paddingLeft: ITEM_HORIZONTAL_PADDING + ICON_SIZE + ICON_GAP,\n },\n\n icon: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n flexShrink: 0,\n },\n\n content: {\n flexGrow: 1,\n },\n\n chevron: {},\n});\n\nexport type IListItemStyles = ITweakStyles<typeof useStyles, IListItemSizes>;\n","import { FC, MouseEvent, KeyboardEvent, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport {\n addClickHandler,\n addDataAttributes,\n isArrayNotEmpty,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../../../types';\nimport { renderIcon, IIcon, Icon } from '../../../Icon';\nimport type { IListSize as IListItemSize } from '../../types';\nimport { useStyles, IListItemStyles } from './ListItem.styles';\n\nexport interface IListItemProps extends ICommonProps<IListItemStyles> {\n item: ReactNode;\n view?: 'default' | 'destructive';\n icon?: IIcon;\n nestedItems?: IListItemProps[];\n size?: IListItemSize;\n isFocused?: boolean;\n disabled?: boolean;\n shouldDrawSpacerAbove?: boolean;\n shouldDrawSpacerBelow?: boolean;\n withIconGap?: boolean;\n onClick?: (event: MouseEvent | KeyboardEvent) => void;\n}\n\nexport const ListItem: FC<IListItemProps> = ({\n icon,\n item,\n nestedItems,\n size,\n disabled: isDisabled,\n isFocused,\n shouldDrawSpacerAbove,\n shouldDrawSpacerBelow,\n testId,\n tweakStyles,\n view = 'default',\n withIconGap,\n data,\n onClick,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <>\n {shouldDrawSpacerAbove && <div className={classes.spacer} />}\n <div\n className={clsx(classes.root, classes[view], isNotEmpty(size) && classes[size], {\n [classes.disabledItem]: isDisabled,\n [classes.withIconGap]: withIconGap,\n [classes.focused]: isFocused,\n })}\n {...addClickHandler(onClick, !isDisabled)}\n {...addDataAttributes({ ...data, disabled: isDisabled ? true : undefined }, testId)}\n >\n {isReactNodeNotEmpty(icon) && <span className={classes.icon}>{renderIcon(icon)}</span>}\n <span className={classes.content}>{item}</span>\n {isArrayNotEmpty(nestedItems) && (\n <span className={clsx(classes.icon, classes.chevron)}>\n <Icon type=\"chevron-right\" />\n </span>\n )}\n </div>\n {shouldDrawSpacerBelow && <div className={classes.spacer} />}\n </>\n );\n};\n","import { colors, createThemedStyles, ITweakStyles } from '../../theme';\nimport { IWithPopupStyles } from '../WithPopup';\nimport { IListSizes } from './types';\n\nexport const useStyles = createThemedStyles('List', {\n root: {\n minWidth: 180,\n backgroundColor: colors.CLASSIC_WHITE,\n padding: [8, 0],\n listStyle: 'none',\n margin: 0,\n textAlign: 'left',\n },\n\n nestedItems: {\n marginTop: -8,\n paddingLeft: 4,\n },\n});\n\nexport const withPopupStyles: IWithPopupStyles = {\n trigger: {\n width: '100%',\n },\n};\n\nexport type IListStyles = ITweakStyles<typeof useStyles, IListSizes>;\n","import { FC, Fragment, KeyboardEvent, MouseEvent } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n getTestId,\n isArrayNotEmpty,\n isNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { WithPopup } from '../WithPopup';\nimport { IListItemProps, ListItem } from './components';\nimport { IListItem, IListSize } from './types';\nimport { useStyles, IListStyles, withPopupStyles } from './List.styles';\n\nexport interface IListProps extends ICommonProps<IListStyles> {\n items: IListItem[];\n size?: IListSize;\n onClick?: (event: MouseEvent | KeyboardEvent) => void;\n}\n\nexport const List: FC<IListProps> = ({ items, size, testId, data, tweakStyles, onClick }) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const handleItemClick = (\n event: MouseEvent | KeyboardEvent,\n { onClick: itemOnClick }: IListItem,\n ) => {\n if (isNotEmpty(itemOnClick)) {\n itemOnClick(event);\n onClick?.(event);\n }\n };\n\n const filteredItems = items.filter(({ isHidden }) => !isHidden);\n\n return (\n <div\n className={clsx(classes.root, isNotEmpty(size) && classes[size])}\n {...addDataAttributes(data, testId)}\n >\n {filteredItems.map((item, i) => {\n const itemProps: IListItemProps = {\n testId: getTestId(testId, `item-${i}`),\n size,\n ...item,\n shouldDrawSpacerAbove: item.shouldDrawSpacerAbove && i !== 0,\n shouldDrawSpacerBelow: item.shouldDrawSpacerBelow && i !== items.length - 1,\n onClick: (event) => handleItemClick(event, item),\n };\n\n return (\n <Fragment key={i}>\n {isArrayNotEmpty(item.nestedItems) ? (\n <WithPopup\n eventType=\"hover\"\n tweakStyles={withPopupStyles}\n placement=\"right-start\"\n popupOffset={0}\n shouldRenderInBody={false}\n trigger={({ triggerProps }) => (\n <ListItem {...itemProps} isFocused={triggerProps.isActive} />\n )}\n >\n <div className={classes.nestedItems}>\n <List items={item.nestedItems} size={size} onClick={onClick} />\n </div>\n </WithPopup>\n ) : (\n <ListItem {...itemProps} />\n )}\n </Fragment>\n );\n })}\n </div>\n );\n};\n","export const ANIMATION_TIMEOUT = 150; // такой же тайминг должен быть в стилях анимации\n","import { animations, createThemedStyles, ITweakStyles } from '../../theme';\nimport { IListStyles } from '../List';\n\nexport const useStyles = createThemedStyles('AccountInfo', {\n root: {\n display: 'flex',\n },\n\n account: {\n display: 'flex',\n position: 'relative',\n alignItems: 'center',\n cursor: 'pointer',\n },\n\n accountName: {\n margin: [0, 2, 0, 10],\n fontSize: 14,\n transition: animations.defaultTransition,\n transitionProperty: 'color',\n },\n\n accountNameOpened: {},\n\n accountChevron: {\n width: 16,\n height: 16,\n transition: animations.defaultTransition,\n transitionProperty: 'transform, color',\n },\n\n accountChevronOpened: {\n transform: 'rotate(180deg)',\n },\n\n accountMenu: {\n position: 'absolute',\n zIndex: 90,\n top: '100%',\n right: 0,\n marginTop: 8,\n },\n\n avatarIcon: {\n width: 32,\n height: 32,\n },\n\n ...animations.slideUp,\n});\n\nexport type IAccountInfoStyles = ITweakStyles<typeof useStyles, { tweakList: IListStyles }>;\n","import { FC, ReactNode, useRef, useState, MouseEvent } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { useOnClickOutsideWithRef, useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { IListProps, List } from '../List';\nimport { ANIMATION_TIMEOUT } from './constants';\nimport { useStyles, IAccountInfoStyles } from './AccountInfo.styles';\n\nexport interface IAccountInfoProps extends ICommonProps<IAccountInfoStyles> {\n /** @default `<Icon type='avatar' />` */\n avatar?: ReactNode;\n accountName: ReactNode;\n options: IListProps['items'];\n}\n\nexport const AccountInfo: FC<IAccountInfoProps> = ({\n data,\n testId,\n avatar,\n tweakStyles,\n accountName,\n options,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakListStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakList',\n currentComponentName: 'AccountInfo',\n });\n\n const nameRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n const toggleMenu = (event: MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n setIsMenuOpen((v) => !v);\n };\n\n useOnClickOutsideWithRef(dropdownRef, () => setIsMenuOpen(false), nameRef);\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n {avatar ?? (\n <div className={classes.avatarIcon}>\n <Icon type=\"avatar\" />\n </div>\n )}\n <div ref={nameRef} className={classes.account} onClick={toggleMenu}>\n <div className={clsx(classes.accountName, isMenuOpen && classes.accountNameOpened)}>\n {accountName}\n </div>\n <div className={clsx(classes.accountChevron, isMenuOpen && classes.accountChevronOpened)}>\n <Icon type=\"chevron-down-small\" />\n </div>\n <CSSTransition\n in={isMenuOpen}\n timeout={ANIMATION_TIMEOUT}\n unmountOnExit\n classNames={{\n enter: classes['slide-up-enter'],\n enterActive: classes['slide-up-enter-active'],\n exit: classes['slide-up-exit'],\n exitActive: classes['slide-up-exit-active'],\n }}\n >\n <div ref={dropdownRef} className={classes.accountMenu} onClick={toggleMenu}>\n <List items={options} tweakStyles={tweakListStyles} />\n </div>\n </CSSTransition>\n </div>\n </div>\n );\n};\n","import { createThemedStyles, ITweakStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('AddButton', {\n root: {\n display: 'flex',\n alignItems: 'center',\n padding: '0px 16px',\n height: 52,\n cursor: 'pointer',\n outline: 'none',\n transition: 'border-color 0.1s ease-in, background-color 0.1s ease-in',\n fontSize: 14,\n\n '&:hover': {\n transition: 'border-color 0.1s ease-in, background-color 0.1s ease-in',\n },\n },\n\n disabled: {\n cursor: 'default',\n },\n\n icon: {\n width: 20,\n display: 'inline-block',\n marginRight: 8,\n },\n\n fullWidth: {\n width: '100%',\n },\n});\n\nexport type IAddButtonStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { useStyles, IAddButtonStyles } from './AddButton.styles';\n\nexport interface IAddButtonProps extends ICommonProps<IAddButtonStyles> {\n text: string;\n /** @default 'button' */\n type?: 'submit' | 'button';\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isFullWidth?: boolean;\n onClick?: () => void | Promise<void>;\n}\n\n/** @deprecated Весьма сомнительный компонент */\nexport const AddButton: FC<IAddButtonProps> = ({\n text,\n type = 'button',\n isDisabled = false,\n onClick,\n isFullWidth = false,\n data,\n testId,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <button\n type={type}\n className={clsx(\n classes.root,\n isDisabled && classes.disabled,\n isFullWidth && classes.fullWidth,\n )}\n onClick={!isDisabled ? onClick : undefined}\n disabled={isDisabled}\n {...addDataAttributes(data, testId)}\n >\n <div className={classes.icon}>\n <Icon type=\"plus\" />\n </div>\n <div>{text}</div>\n </button>\n );\n};\n","import { createThemedStyles, ITweakStyles } from '../../../../theme';\n\nexport const useStyles = createThemedStyles('DotsPreloader', {\n root: {\n display: 'flex',\n gap: 4,\n '--dot-size': '8px',\n\n '&::before, &::after': {\n content: '\"\"',\n extend: 'fadedDot',\n },\n\n '&::before': {\n animationDelay: '0',\n },\n\n '&::after': {\n animationDelay: '360ms',\n },\n },\n\n /* ----------- 3 DOTS ---------- */\n\n '@keyframes FadedDots': {\n '0%': {\n opacity: 0.2,\n },\n '30%': {\n opacity: 1,\n },\n '100%': {\n opacity: 0.2,\n },\n },\n\n // используется в .dot и в before и after элементах root\n fadedDot: {\n display: 'block',\n animationDuration: 750,\n animationIterationCount: 'infinite',\n animationName: '$FadedDots',\n borderRadius: '50%',\n width: 'var(--dot-size)',\n height: 'var(--dot-size)',\n backgroundColor: 'currentColor',\n },\n\n dot: {\n extend: 'fadedDot',\n animationDelay: '180ms',\n },\n});\n\nexport type IDotsPreloaderStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport { ICommonProps } from '../../../../types';\nimport { useStyles, IDotsPreloaderStyles } from './DotsPreloader.styles';\n\nexport type IDotsPreloaderProps = Pick<ICommonProps<IDotsPreloaderStyles>, 'tweakStyles'>;\n\nexport const DotsPreloader: FC<IDotsPreloaderProps> = ({ tweakStyles }) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <div className={classes.root}>\n <span className={classes.dot} />\n </div>\n );\n};\n","import { FC } from 'react';\n\nexport const DefaultPreloader: FC = () => (\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <linearGradient x1=\"8.042%\" y1=\"0%\" x2=\"65.682%\" y2=\"23.865%\" id=\"a\">\n <stop stopColor=\"currentColor\" stopOpacity=\"0\" offset=\"0%\" />\n <stop stopColor=\"currentColor\" stopOpacity=\".631\" offset=\"63.146%\" />\n <stop stopColor=\"currentColor\" offset=\"100%\" />\n </linearGradient>\n </defs>\n <g transform=\"translate(2,2)\" fill=\"none\">\n <path d=\"M36 18c0-9.94-8.06-18-18-18\" stroke=\"url(#a)\" strokeWidth=\"3\">\n <animateTransform\n xmlns=\"http://www.w3.org/2000/svg\"\n attributeName=\"transform\"\n attributeType=\"XML\"\n type=\"rotate\"\n from=\"0 18 18\"\n to=\"360 18 18\"\n dur=\"1s\"\n begin=\"0s\"\n repeatCount=\"indefinite\"\n fill=\"freeze\"\n />\n </path>\n </g>\n </svg>\n);\n","import { createThemedStyles, ITweakStyles } from '../../../../theme';\n\nexport const useStyles = createThemedStyles('SvgPreloader', {\n root: {\n display: 'flex',\n width: '100%',\n height: '100%',\n },\n});\n\nexport type ISvgPreloaderStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport { useTheme } from '../../../../theme';\nimport { ICommonProps } from '../../../../types';\nimport { IPreloaderSvgType } from '../../types';\nimport { DefaultPreloader } from '../DefaultPreloader';\nimport { ISvgPreloaderStyles, useStyles } from './SvgPreloader.styles';\n\nexport interface ISvgPreloaderProps extends Pick<ICommonProps<ISvgPreloaderStyles>, 'tweakStyles'> {\n type: IPreloaderSvgType;\n}\n\nexport const SvgPreloader: FC<ISvgPreloaderProps> = ({ type = 'default', tweakStyles }) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const theme = useTheme();\n const PreloaderIcon = theme.preloaders?.[type] ?? DefaultPreloader;\n const isInlineSvg = typeof PreloaderIcon === 'string';\n\n return isInlineSvg ? (\n <div className={classes.root} dangerouslySetInnerHTML={{ __html: PreloaderIcon }} />\n ) : (\n <PreloaderIcon />\n );\n};\n","import { ITweakStyles, createThemedStyles } from '../../theme';\nimport { IDotsPreloaderStyles, ISvgPreloaderStyles } from './components';\n\nexport const useStyles = createThemedStyles('ThemedPreloader', {\n root: {\n display: 'flex',\n },\n\n dots: {},\n\n default: {},\n\n logo: {},\n\n currentColor: {\n color: 'currentColor',\n },\n});\n\nexport type IThemedPreloaderStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakDotsPreloader: IDotsPreloaderStyles;\n tweakSvgPreloader: ISvgPreloaderStyles;\n }\n>;\n","import { FC } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { SvgPreloader, DotsPreloader } from './components';\nimport { IPreloaderSvgType } from './types';\nimport { useStyles, IThemedPreloaderStyles } from './ThemedPreloader.styles';\n\nexport interface IThemedPreloaderProps extends ICommonProps<IThemedPreloaderStyles> {\n /** @default 'default' */\n type?: 'dots' | IPreloaderSvgType;\n /** @default false */\n useCurrentColor?: boolean;\n}\n\nexport const ThemedPreloader: FC<IThemedPreloaderProps> = ({\n type = 'default',\n useCurrentColor = false,\n data,\n testId,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakDotsPreloaderStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakDotsPreloader',\n currentComponentName: 'ThemedPreloader',\n });\n\n const tweakSvgPreloaderStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakSvgPreloader',\n currentComponentName: 'ThemedPreloader',\n });\n\n return (\n <div\n className={clsx(classes.root, classes[type], {\n [classes.currentColor]: useCurrentColor,\n })}\n {...addDataAttributes(data, testId)}\n >\n {type === 'dots' ? (\n <DotsPreloader tweakStyles={tweakDotsPreloaderStyles} />\n ) : (\n <SvgPreloader type={type} tweakStyles={tweakSvgPreloaderStyles} />\n )}\n </div>\n );\n};\n","import { animations, createThemedStyles, ITweakStyles } from '../../theme';\nimport { IThemedPreloaderStyles } from '../ThemedPreloader';\nimport { IButtonSize } from './types';\n\nexport const useStyles = createThemedStyles('Button', {\n root: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n outline: 'none',\n boxSizing: 'border-box',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color, color, box-shadow, border-color',\n maxWidth: '100%',\n border: [1, 'solid', 'transparent'],\n position: 'relative',\n boxShadow: 'none',\n\n '&[disabled]': {\n cursor: 'default',\n pointerEvents: 'none',\n },\n },\n\n primary: {},\n secondary: {},\n outline: {},\n warning: {},\n destructive: {},\n text: {},\n custom: {},\n\n children: {},\n\n icon: {\n width: 20,\n height: 20,\n flexShrink: 0,\n },\n\n iconFromLeft: {\n flexDirection: 'row',\n gap: 6,\n\n '& $icon': {\n marginLeft: -4,\n },\n },\n\n iconFromRight: {\n flexDirection: 'row-reverse',\n gap: 6,\n\n '& $icon': {\n marginRight: -4,\n },\n },\n\n onlyIcon: {},\n\n withIcon: {},\n\n s: {\n padding: [0, 12],\n height: 32,\n fontSize: 14,\n letterSpacing: 0.15,\n\n '&$onlyIcon': {\n padding: 0,\n width: 32,\n },\n\n '& $icon': {\n width: 16,\n height: 16,\n },\n\n '& $iconFromLeft': {\n gap: 4,\n },\n\n '& $iconFromRight': {\n gap: 4,\n },\n },\n\n m: {\n padding: [0, 12],\n height: 42,\n fontSize: 16,\n\n '& $iconFromLeft': {\n gap: 6,\n },\n\n '& $iconFromRight': {\n gap: 6,\n },\n\n '&$onlyIcon': {\n padding: 0,\n width: 42,\n },\n },\n\n l: {\n padding: [0, 16],\n height: 48,\n fontSize: 16,\n\n '& $iconFromLeft': {\n gap: 6,\n },\n\n '& $iconFromRight': {\n gap: 6,\n },\n\n '&$onlyIcon': {\n padding: 0,\n width: 48,\n },\n },\n\n xl: {\n padding: [0, 20],\n height: 56,\n fontSize: 16,\n\n '&$onlyIcon': {\n padding: 0,\n width: 56,\n },\n\n '& $iconFromLeft': {\n gap: 8,\n },\n\n '& $iconFromRight': {\n gap: 8,\n },\n },\n\n fullWidth: {\n minWidth: 'auto',\n width: '100%',\n },\n\n inline: {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n },\n\n active: {},\n\n content: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n },\n\n loader: {\n display: 'none',\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n },\n\n loading: {\n '& $content': {\n visibility: 'hidden',\n },\n\n '& $loader': {\n display: 'block',\n },\n },\n\n disabled: {},\n});\n\nconst dotsPreloaderStyles: IThemedPreloaderStyles = {\n tweakDotsPreloader: {\n fadedDot: {\n width: 6,\n height: 6,\n },\n },\n};\n\nexport const getPreloaderStyles = (size: IButtonSize): IThemedPreloaderStyles | undefined =>\n size === 's' || size === 'm' ? dotsPreloaderStyles : undefined;\n\nexport type IButtonStyles = ITweakStyles<\n typeof useStyles,\n { tweakPreloader: IThemedPreloaderStyles }\n>;\n","import { ReactNode, ButtonHTMLAttributes, MouseEvent, forwardRef } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps, IDomElementInteractions } from '../../types';\nimport { renderIcon, IIcon } from '../Icon';\nimport { ThemedPreloader, IThemedPreloaderProps } from '../ThemedPreloader';\nimport { IButtonSize, IButtonView } from './types';\nimport { useStyles, IButtonStyles, getPreloaderStyles } from './Button.styles';\n\nexport interface IButtonProps\n extends ICommonProps<IButtonStyles>,\n IDomElementInteractions<HTMLButtonElement> {\n children?: ReactNode;\n /** @default 'button' */\n type?: ButtonHTMLAttributes<unknown>['type'];\n /** @default 'l' */\n size?: IButtonSize;\n /** @default 'primary' */\n view?: IButtonView;\n /** @default false */\n shouldSkipTabNavigation?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isFullWidth?: boolean;\n /**\n * Нужно ли убирать скругление у кнопки слева\n * @default false\n */\n isInline?: boolean;\n /**\n * Нужно ли показать лоадер и заблокировать кнопку\n * @default false\n */\n isLoading?: boolean;\n /** @default false */\n isActive?: boolean;\n icon?: IIcon;\n /** @default 'left' */\n iconPosition?: 'left' | 'right';\n /** @default 'dots' */\n preloaderType?: IThemedPreloaderProps['type'];\n onClick?: (event: MouseEvent<HTMLButtonElement>) => void | Promise<void>;\n onMouseDown?: (event: MouseEvent<HTMLButtonElement>) => void | Promise<void>;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, IButtonProps>(function Button(\n {\n type = 'button',\n children,\n size = 'l',\n view = 'primary',\n isFullWidth = false,\n isInline = false,\n isDisabled = false,\n isActive = false,\n isLoading = false,\n shouldSkipTabNavigation = false,\n data,\n testId,\n tweakStyles,\n icon,\n iconPosition = 'left',\n preloaderType = 'dots',\n ...interactions\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakPreloaderStyles = useTweakStyles({\n innerStyles: getPreloaderStyles(size),\n tweakStyles,\n className: 'tweakPreloader',\n currentComponentName: 'Button',\n });\n\n const hasIcon = isReactNodeNotEmpty(icon);\n const hasChildren = isReactNodeNotEmpty(children);\n const hasNoAction = isDisabled || isLoading;\n\n return (\n <button\n ref={ref}\n type={type}\n className={clsx(classes.root, classes[size], classes[view], {\n [classes.disabled]: isDisabled,\n [classes.fullWidth]: isFullWidth,\n [classes.inline]: isInline,\n [classes.active]: isActive,\n [classes.loading]: isLoading,\n [classes.onlyIcon]: hasIcon && !hasChildren,\n })}\n tabIndex={shouldSkipTabNavigation ? -1 : undefined}\n disabled={hasNoAction}\n {...interactions}\n {...addDataAttributes(data, testId)}\n >\n <span\n className={clsx(classes.content, {\n [classes.iconFromRight]: hasChildren && hasIcon && iconPosition === 'right',\n [classes.iconFromLeft]: hasChildren && hasIcon && iconPosition === 'left',\n })}\n >\n {hasIcon && (\n <span className={classes.icon}>{isReactNodeNotEmpty(icon) && renderIcon(icon)}</span>\n )}\n {hasChildren && (\n <span className={clsx(classes.children, hasIcon && classes.withIcon)}>{children}</span>\n )}\n </span>\n\n {isLoading && (\n <span className={classes.loader}>\n <ThemedPreloader\n type={preloaderType}\n useCurrentColor\n tweakStyles={tweakPreloaderStyles}\n />\n </span>\n )}\n </button>\n );\n});\n","import { createThemedStyles, ITweakStyles } from '../../theme';\nimport { ICheckboxSizes } from './types';\n\nexport const useStyles = createThemedStyles('Checkbox', {\n root: {\n position: 'relative',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: 14,\n width: 'fit-content',\n },\n\n checked: {},\n\n invalid: {},\n\n disabled: {\n cursor: 'default',\n pointerEvents: 'none',\n },\n\n input: {\n width: 1,\n height: 1,\n position: 'absolute',\n opacity: 0,\n },\n\n children: {\n display: 'flex',\n alignItems: 'center',\n },\n\n check: {\n width: 18,\n height: 18,\n borderRadius: 2,\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxSizing: 'border-box',\n },\n\n labelPositionLeft: {\n flexDirection: 'row-reverse',\n },\n});\n\nexport type ICheckboxStyles = ITweakStyles<typeof useStyles, ICheckboxSizes>;\n","import { ReactNode, ChangeEvent, KeyboardEvent } from 'react';\nimport clsx from 'clsx';\nimport {\n getSelectKeyHandler,\n isNotEmpty,\n isReactNodeNotEmpty,\n addDataAttributes,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { ICheckboxSize } from './types';\nimport { useStyles, ICheckboxStyles } from './Checkbox.styles';\n\nexport interface ICheckboxProps<V> extends ICommonProps<ICheckboxStyles> {\n value?: V;\n children?: ReactNode;\n size?: ICheckboxSize;\n /** @default false */\n isChecked?: boolean;\n /** @default false */\n isSemiChecked?: boolean;\n /** @default false */\n isInvalid?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isReadonly?: boolean;\n /** @default 'right' */\n labelPosition?: 'right' | 'left';\n onSelect?: (\n value: { value?: V; isSelected: boolean },\n event: ChangeEvent<HTMLInputElement> | KeyboardEvent,\n ) => void;\n}\n\nexport function Checkbox<V>({\n value,\n children,\n size,\n isChecked = false,\n isSemiChecked = false,\n isInvalid = false,\n isDisabled = false,\n isReadonly = false,\n labelPosition = 'right',\n data,\n testId,\n tweakStyles,\n onSelect,\n}: ICheckboxProps<V>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const hasAction = !isDisabled && !isReadonly;\n const isSelected = isChecked || isSemiChecked;\n\n const onToggle = (event: ChangeEvent<HTMLInputElement> | KeyboardEvent) =>\n onSelect?.({ value, isSelected: !isSelected }, event);\n\n return (\n <label\n className={clsx(classes.root, isNotEmpty(size) && classes[size], {\n [classes.checked]: isSelected,\n [classes.invalid]: isInvalid,\n [classes.disabled]: isDisabled,\n [classes.labelPositionLeft]: labelPosition === 'left',\n })}\n {...addDataAttributes(data, testId)}\n >\n <input\n className={classes.input}\n type=\"checkbox\"\n checked={isSelected}\n disabled={isDisabled}\n readOnly={isReadonly}\n {...(hasAction && {\n onChange: onToggle,\n onKeyDown: getSelectKeyHandler(onToggle),\n })}\n />\n <div className={classes.check}>\n {isSelected && <Icon type={isSemiChecked ? 'minus' : 'check'} />}\n </div>\n {isReactNodeNotEmpty(children) && <div className={classes.children}>{children}</div>}\n </label>\n );\n}\n","import { rgba } from '../../helpers';\nimport { animations, colors, createThemedStyles, ITweakStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('CloseButton', {\n root: {\n width: 40,\n height: 40,\n maxWidth: '100%',\n maxHeight: '100%',\n padding: 5,\n color: colors.FONT_MEDIUM,\n border: 0,\n borderRadius: '50%',\n appearance: 'none',\n backgroundColor: 'transparent',\n cursor: 'pointer',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color',\n\n '&:hover': {\n backgroundColor: rgba(colors.BORDER_MAIN, 0.5),\n },\n\n '&:focus': {\n backgroundColor: colors.GREY_FOCUS,\n },\n\n '&:active': {\n backgroundColor: rgba(colors.FONT_DISABLED, 0.5),\n },\n },\n});\n\nexport type ICloseButtonStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { ICloseButtonStyles, useStyles } from './CloseButton.styles';\n\nexport interface ICloseButtonProps extends ICommonProps<ICloseButtonStyles> {\n /** @default 'close' */\n icon?: 'close' | 'close-large' | 'close-window';\n onClose?: () => void;\n}\n\n/** @deprecated */\nexport const CloseButton: FC<ICloseButtonProps> = ({\n tweakStyles,\n testId,\n data,\n icon = 'close',\n onClose,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <button\n type=\"button\"\n className={classes.root}\n onClick={onClose}\n {...addDataAttributes(data, testId)}\n >\n <Icon type={icon} />\n </button>\n );\n};\n","import { colors, ITweakStyles, createThemedStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('CssBaseline', {\n '@global html, body': {\n fontFamily: 'Arial, sans-serif',\n color: colors.FONT_MAIN,\n padding: 0,\n margin: 0,\n },\n\n '@global': {},\n\n root: {},\n});\n\nexport type ICssBaselineStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { useStyles, ICssBaselineStyles } from './CssBaseline.styles';\n\nexport type ICssBaselineProps = ICommonProps<ICssBaselineStyles>;\n\nexport const CssBaseline: FC<ICssBaselineProps> = ({ data, testId, tweakStyles }) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return <div className={classes.root} {...addDataAttributes(data, testId)} />;\n};\n","import { createThemedStyles, ITweakStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('WithMessages', {\n withMessages: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n position: 'relative',\n },\n\n error: {\n color: 'red',\n },\n\n info: {\n color: 'gray',\n },\n\n horizontal: {\n display: 'flex',\n\n '& > *': {\n flexGrow: 1,\n\n '&:not(:first-child)': {\n marginLeft: -1,\n },\n },\n },\n\n vertical: {\n display: 'flex',\n flexDirection: 'column',\n\n '& > *:not(:first-child)': {\n marginTop: -1,\n },\n },\n\n message: {\n fontSize: 12,\n },\n\n children: {},\n});\n\nexport type IWithMessagesStyles = ITweakStyles<typeof useStyles>;\n","import { forwardRef, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n addDataTestId,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { IWithMessagesStyles, useStyles } from './WithMessages.styles';\n\nexport interface IWithMessagesProps extends ICommonProps<IWithMessagesStyles> {\n children: ReactNode;\n infoMessage?: ReactNode;\n errorMessage?: ReactNode;\n controlsDirection?: 'horizontal' | 'vertical';\n}\n\nexport const WithMessages = forwardRef<HTMLDivElement, IWithMessagesProps>(function WithMessages(\n { children, infoMessage, errorMessage, controlsDirection, tweakStyles, testId, data },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const shouldShowError = isReactNodeNotEmpty(errorMessage);\n const shouldShowInfo = isReactNodeNotEmpty(infoMessage) && !shouldShowError;\n\n return (\n <div\n ref={ref}\n className={classes.withMessages}\n data-invalid={shouldShowError ? true : undefined}\n {...addDataAttributes(data, testId)}\n >\n {isReactNodeNotEmpty(children) && (\n <div\n className={clsx(classes.children, {\n [classes.horizontal]: controlsDirection === 'horizontal',\n [classes.vertical]: controlsDirection === 'vertical',\n })}\n >\n {children}\n </div>\n )}\n {(shouldShowError || shouldShowInfo) && (\n <div className={classes.message}>\n {shouldShowError && (\n <div className={classes.error} {...addDataTestId(testId, 'error')}>\n {errorMessage}\n </div>\n )}\n {shouldShowInfo && (\n <div className={classes.info} {...addDataTestId(testId, 'info')}>\n {infoMessage}\n </div>\n )}\n </div>\n )}\n </div>\n );\n});\n","import { isObject } from '@true-engineering/true-react-platform-helpers';\nimport { IIcon } from '../Icon';\nimport { IControlWrapperIcon } from './types';\n\nexport const isControlWrapperIcon = (\n iconItem: IIcon | IControlWrapperIcon,\n): iconItem is IControlWrapperIcon => isObject(iconItem) && 'iconComponent' in iconItem;\n\nexport const convertToControlWrapperIcon = (\n iconItem: IIcon | IControlWrapperIcon,\n): IControlWrapperIcon => (isControlWrapperIcon(iconItem) ? iconItem : { iconComponent: iconItem });\n","import { animations, createThemedStyles, dimensions, ITweakStyles } from '../../theme';\nimport { IThemedPreloaderStyles } from '../ThemedPreloader';\nimport { IControlWrapperSizes } from './types';\n\nconst { CONTROL, Z_INDEX } = dimensions;\n\nexport const useStyles = createThemedStyles('ControlWrapper', {\n controlWrapper: {\n '--control-height': `${CONTROL.HEIGHT - 2}px`, // borders\n '--control-padding': `${CONTROL.PADDING}px`,\n '--icon-size': `${CONTROL.ICON_SIZE}px`,\n '--icon-inner-size': `${CONTROL.ICON_INNER_SIZE}px`,\n '--icon-gap': `${CONTROL.ICON_GAP}px`,\n display: 'flex',\n width: '100%',\n backgroundColor: 'white',\n position: 'relative',\n border: ['solid', 1, 'gray'],\n borderRadius: 8,\n boxSizing: 'border-box',\n zIndex: 0,\n },\n\n disabled: {},\n\n focused: {\n position: 'relative',\n zIndex: Z_INDEX.CONTROL_FOCUS,\n },\n\n invalid: {\n zIndex: Z_INDEX.CONTROL_INVALID,\n },\n\n withValue: {},\n\n loading: {},\n\n minContent: {\n width: 'min-content',\n },\n\n label: {\n position: 'absolute',\n pointerEvents: 'none',\n left: 'var(--control-padding)',\n top: 'calc(var(--control-height) / 2)',\n transformOrigin: 'top left',\n transform: 'translateY(-50%)',\n transition: animations.defaultTransition,\n transitionProperty: 'transform, color',\n fontSize: 16,\n zIndex: 1,\n },\n\n activeLabel: {},\n\n requiredLabel: {\n '&:after': {\n content: '\"\"',\n display: 'block',\n position: 'absolute',\n top: 0,\n right: -8,\n width: 6,\n height: 6,\n borderRadius: '50%',\n backgroundColor: 'orange',\n },\n },\n\n disabledLabel: {},\n\n wrapper: {\n display: 'flex',\n flexGrow: 1,\n minWidth: 0, // Нужно для селекта\n textAlign: 'left',\n },\n\n controls: {\n display: 'flex',\n marginLeft: 'auto',\n flexShrink: 0,\n },\n\n startControls: {\n paddingLeft: 'var(--control-padding)',\n },\n\n icon: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: 'var(--icon-size)',\n width: 'var(--icon-size)',\n height: '100%',\n flexShrink: 0,\n cursor: 'default',\n\n '&:last-child': {\n paddingRight: 6,\n },\n },\n\n iconInner: {\n width: 'var(--icon-inner-size)',\n },\n\n customIcon: {\n width: 'unset',\n\n '& $iconInner': {\n width: 'unset',\n },\n },\n\n startIcon: {},\n\n endIcon: {},\n\n activeIcon: {\n cursor: 'pointer',\n outline: 'none',\n },\n\n clearIcon: {\n '& $iconInner': {\n width: 'var(--icon-inner-size)',\n },\n },\n\n loader: {\n '& $iconInner': {\n width: 'var(--icon-inner-size)',\n },\n },\n\n withStartControls: {},\n\n /* groupPositions */\n 'placement-top': {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n 'placement-bottom': {\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n },\n\n 'placement-top-left': {\n borderTopRightRadius: 0,\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n 'placement-top-right': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n 'placement-bottom-left': {\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n 'placement-bottom-right': {\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n borderBottomLeftRadius: 0,\n },\n\n 'placement-left': {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n 'placement-right': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n },\n\n 'placement-middle': {\n borderRadius: 0,\n },\n});\n\nexport type IControlWrapperStyles = ITweakStyles<\n typeof useStyles,\n { tweakPreloader: IThemedPreloaderStyles } & IControlWrapperSizes\n>;\n","import { CSSProperties, FC, ReactNode, useCallback, useState } from 'react';\nimport clsx from 'clsx';\nimport {\n addClickHandler,\n addDataAttributes,\n addDataTestId,\n getArray,\n IMaybeArray,\n isArrayNotEmpty,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { IClickHandlerEvent, ICommonProps } from '../../types';\nimport { IIcon, renderIcon } from '../Icon';\nimport { ThemedPreloader } from '../ThemedPreloader';\nimport { convertToControlWrapperIcon } from './helpers';\nimport { IControlWrapperIcon, IControlWrapperSize, IGroupPlacement } from './types';\nimport { IControlWrapperStyles, useStyles } from './ControlWrapper.styles';\n\nexport interface IControlWrapperProps extends ICommonProps<IControlWrapperStyles> {\n children: ReactNode;\n label?: ReactNode;\n /** @deprecated */\n icon?: IMaybeArray<IIcon | IControlWrapperIcon>;\n startIcon?: IMaybeArray<IIcon | IControlWrapperIcon>;\n endIcon?: IMaybeArray<IIcon | IControlWrapperIcon>;\n size?: IControlWrapperSize;\n groupPlacement?: IGroupPlacement;\n /** @default false */\n isInvalid?: boolean;\n /** @default false */\n isFocused?: boolean;\n /** @default false */\n hasValue?: boolean;\n /** @default false */\n isRequired?: boolean;\n /** @default false */\n isFullWidth?: boolean;\n /** @default false */\n isLoading?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isActive?: boolean;\n onClear?: (event: IClickHandlerEvent) => void;\n}\n\nexport const ControlWrapper: FC<IControlWrapperProps> = ({\n label,\n icon,\n startIcon,\n endIcon = icon,\n groupPlacement,\n isInvalid,\n isFocused,\n isRequired,\n isLoading,\n isFullWidth,\n isActive,\n isDisabled,\n hasValue,\n size,\n testId,\n children,\n tweakStyles,\n data,\n onClear,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const [startControlsWidth, setStartControlsWidth] = useState<number>();\n\n const startIcons = getArray(startIcon).map(convertToControlWrapperIcon);\n const endIcons = getArray(endIcon).map(convertToControlWrapperIcon);\n\n const hasStartIcons = isArrayNotEmpty(startIcons);\n const hasEndIcons = !isLoading && isArrayNotEmpty(endIcons);\n const hasClearButton = !isDisabled && !isLoading && hasValue && isNotEmpty(onClear);\n const hasEndControls = hasEndIcons || hasClearButton || isLoading;\n\n const tweakPreloaderStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakPreloader',\n currentComponentName: 'ControlWrapper',\n });\n\n const startControlsRef = useCallback(\n (node: HTMLDivElement | null) => {\n setStartControlsWidth(node?.clientWidth);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [startIcon, size],\n );\n\n const renderIconControl = (\n { key, iconComponent, onClick, shouldResetSize = false }: IControlWrapperIcon,\n iconType: 'start' | 'end' | 'clear',\n index?: number,\n ) => (\n <div\n key={key ?? index}\n className={clsx(classes.icon, classes[`${iconType}Icon`], {\n [classes.activeIcon]: !isDisabled && isNotEmpty(onClick),\n [classes.customIcon]: shouldResetSize,\n })}\n {...addClickHandler(onClick, !isDisabled)}\n {...addDataTestId(testId, `${iconType}-icon`)}\n >\n <div className={classes.iconInner}>{renderIcon(iconComponent)}</div>\n </div>\n );\n\n return (\n <div\n className={clsx(\n classes.controlWrapper,\n isNotEmpty(groupPlacement) && classes[`placement-${groupPlacement}`],\n isNotEmpty(size) && classes[size],\n {\n [classes.invalid]: isInvalid,\n [classes.focused]: isFocused,\n [classes.withValue]: hasValue,\n [classes.disabled]: isDisabled,\n [classes.loading]: isLoading,\n [classes.minContent]: !isFullWidth,\n [classes.withStartControls]: hasStartIcons,\n },\n )}\n style={\n hasStartIcons\n ? ({ '--start-controls-width': `${startControlsWidth}px` } as CSSProperties)\n : undefined\n }\n {...addDataAttributes(data, testId)}\n >\n {isReactNodeNotEmpty(label) && (\n <div\n className={clsx(classes.label, {\n [classes.requiredLabel]: isRequired,\n [classes.disabledLabel]: isDisabled,\n [classes.activeLabel]: isFocused || hasValue || isActive,\n })}\n >\n {label}\n </div>\n )}\n <div className={classes.wrapper}>\n {hasStartIcons && (\n <div className={clsx(classes.controls, classes.startControls)} ref={startControlsRef}>\n {startIcons.map((iconProps, index) => renderIconControl(iconProps, 'start', index))}\n </div>\n )}\n\n {children}\n\n {hasEndControls && (\n <div className={classes.controls}>\n {hasClearButton &&\n renderIconControl({ iconComponent: 'close', onClick: onClear }, 'clear')}\n\n {hasEndIcons &&\n endIcons.map((iconProps, index) => renderIconControl(iconProps, 'end', index))}\n\n {isLoading && (\n <div\n className={clsx(classes.icon, classes.loader)}\n {...addDataTestId(testId, 'loading')}\n >\n <div className={classes.iconInner}>\n <ThemedPreloader tweakStyles={tweakPreloaderStyles} />\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n};\n","export const GROUP_PLACEMENTS = [\n 'left',\n 'right',\n 'middle',\n 'top',\n 'bottom',\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n] as const;\n","import { createThemedStyles, ITweakStyles } from '../../theme';\nimport { IControlWrapperStyles } from '../ControlWrapper';\nimport { IWithMessagesStyles } from '../WithMessages';\n\nconst PADDING_WITH_UNITS = 8;\n\nexport const useStyles = createThemedStyles('Input', {\n inputContent: {\n height: 'var(--control-height)',\n padding: [0, 'var(--control-padding)'],\n fontSize: 16,\n fontFamily: 'inherit',\n },\n\n input: {\n extend: 'inputContent',\n width: '100%',\n outline: 'none',\n outlineStyle: 'none',\n boxSizing: 'border-box',\n border: 'none',\n background: 'none',\n color: 'black',\n\n '&[readonly]': {\n cursor: 'default',\n },\n\n '&::placeholder': {\n opacity: 1,\n },\n\n '&::-webkit-date-and-time-value': {\n textAlign: 'left',\n },\n\n MozAppearance: 'textfield',\n '&::-webkit-inner-spin-button,&::-webkit-outer-spin-button,&::-webkit-calendar-picker-indicator':\n {\n display: 'none',\n WebkitAppearance: 'none',\n margin: 0,\n },\n },\n\n defaultWrapper: {\n display: 'flex',\n flexGrow: 1,\n },\n\n autoSizeWrapper: {\n position: 'relative',\n minWidth: 0,\n zIndex: 0,\n },\n\n autoSized: {\n position: 'absolute',\n top: 0,\n left: 0,\n height: '100%',\n },\n\n withUnits: {\n extend: 'autoSized',\n paddingRight: `calc(${PADDING_WITH_UNITS}px + var(--units-width) - 1px)`,\n\n '& + $fakeValue': {\n paddingRight: PADDING_WITH_UNITS,\n },\n },\n\n withLabel: {},\n\n withValue: {},\n\n fakeValue: {\n extend: 'inputContent',\n visibility: 'hidden',\n maxWidth: '100%',\n overflow: 'hidden',\n minWidth: 8,\n whiteSpace: 'nowrap',\n },\n\n units: {\n alignSelf: 'center',\n paddingRight: 'var(--control-padding)',\n },\n\n focusedInput: {},\n\n disabledInput: {},\n\n invalidInput: {},\n});\n\nexport type IInputStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakControlWrapper: IControlWrapperStyles;\n tweakWithMessages: IWithMessagesStyles;\n }\n>;\n","import {\n ChangeEvent,\n CSSProperties,\n FocusEvent,\n forwardRef,\n InputHTMLAttributes,\n MutableRefObject,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport InputMask, { Props as ReactInputMaskBaseProps } from 'react-input-mask';\nimport clsx from 'clsx';\nimport {\n addDataTestId,\n isArrayLikeNotEmpty,\n isNotEmpty,\n isReactNodeNotEmpty,\n isStringNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useMergedRefs, useTweakStyles } from '../../hooks';\nimport { IClickHandlerEvent, ICommonProps } from '../../types';\nimport { ControlWrapper, IControlWrapperProps } from '../ControlWrapper';\nimport { IChangeInputEvent } from './types';\nimport { IInputStyles, useStyles } from './Input.styles';\n\nexport interface IInputBaseProps\n extends ICommonProps<IInputStyles>,\n Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size' | 'className'>,\n Pick<\n IControlWrapperProps,\n | 'label'\n | 'icon'\n | 'endIcon'\n | 'startIcon'\n | 'size'\n | 'groupPlacement'\n | 'isInvalid'\n | 'isRequired'\n | 'isLoading'\n | 'isDisabled'\n >,\n Pick<\n Partial<ReactInputMaskBaseProps>,\n 'mask' | 'maskPlaceholder' | 'alwaysShowMask' | 'beforeMaskedStateChange'\n > {\n value?: string;\n units?: ReactNode;\n /** @default false */\n isReadonly?: boolean;\n /** @default false */\n isActive?: boolean;\n /** @default false */\n isClearable?: boolean;\n /** @default false */\n shouldFocusOnMount?: boolean;\n /** @default false */\n isAutoSized?: boolean;\n /** @default false */\n shouldAlwaysShowPlaceholder?: boolean;\n onChange: (value: string, event: IChangeInputEvent, eventType: 'change' | 'clear') => void;\n}\n\nexport const InputBase = forwardRef<HTMLInputElement, IInputBaseProps>(function InputBase(\n {\n value = '',\n placeholder,\n label,\n type = 'text',\n isDisabled,\n autoComplete,\n inputMode: initialInputMode,\n isReadonly,\n isInvalid,\n isActive,\n isClearable,\n isAutoSized,\n name,\n tweakStyles,\n maxLength,\n shouldFocusOnMount,\n units,\n testId,\n tabIndex,\n shouldAlwaysShowPlaceholder,\n onChange,\n onPaste,\n onFocus,\n onBlur,\n onKeyDown,\n // Пропсы react-input-mask\n mask,\n maskPlaceholder,\n alwaysShowMask,\n beforeMaskedStateChange,\n // Пропсы ControlWrapper\n data,\n groupPlacement,\n startIcon,\n icon,\n endIcon = icon,\n isLoading,\n isRequired,\n size,\n children,\n ...inputProps\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakControlWrapperStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakControlWrapper',\n currentComponentName: 'Input',\n });\n\n const [isFocused, setFocused] = useState(false);\n const [unitsWidth, setUnitsWidth] = useState<number>();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const mergedRef = useMergedRefs([ref, inputRef]);\n\n // Try to guess input-mode if possible\n const inputMode: IInputBaseProps['inputMode'] =\n initialInputMode ??\n (['email', 'tel', 'url'].includes(type) ? (type as 'email' | 'tel' | 'url') : undefined);\n\n const hasFocus = isFocused || isActive;\n const hasValue = isArrayLikeNotEmpty(value);\n const hasUnits = isReactNodeNotEmpty(units);\n const hasPlaceholder =\n (!isReactNodeNotEmpty(label) || hasFocus || shouldAlwaysShowPlaceholder) &&\n isStringNotEmpty(placeholder);\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange(event.currentTarget.value, event, 'change');\n };\n\n const handleFocus = (event: FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n onFocus?.(event);\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n onBlur?.(event);\n };\n\n // для SmartInput нужен event, иначе onChange не вызовется\n const handleInputClear = async (event: IClickHandlerEvent) => {\n // await не убирать (важно для порядка выполнения (сначала onChange, затем focus)\n await onChange('', event, 'clear');\n inputRef.current?.focus();\n };\n\n const unitsRef = useCallback(\n (node: HTMLDivElement | null) => {\n setUnitsWidth(node?.clientWidth);\n },\n [units],\n );\n\n const props: InputHTMLAttributes<HTMLInputElement> = {\n className: clsx(classes.input, {\n [classes.withUnits]: hasUnits,\n [classes.withValue]: hasValue,\n [classes.withLabel]: isReactNodeNotEmpty(label),\n [classes.autoSized]: isAutoSized,\n [classes.focusedInput]: isFocused,\n [classes.disabledInput]: isDisabled,\n [classes.invalidInput]: isInvalid,\n }),\n style:\n hasUnits && hasValue ? ({ '--units-width': `${unitsWidth}px` } as CSSProperties) : undefined,\n value,\n type,\n autoComplete,\n inputMode,\n disabled: isDisabled,\n placeholder: hasPlaceholder ? placeholder : undefined,\n name,\n maxLength,\n readOnly: isReadonly,\n tabIndex,\n onKeyDown,\n onPaste,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onChange: handleChange,\n ...addDataTestId(testId),\n ...inputProps,\n };\n\n useEffect(() => {\n // It works much better than autoFocus for mobile devices\n if (shouldFocusOnMount) {\n inputRef.current?.focus();\n }\n }, [shouldFocusOnMount]);\n\n return (\n <ControlWrapper\n label={label}\n isDisabled={isDisabled}\n isFocused={hasFocus}\n isActive={hasPlaceholder}\n isInvalid={isInvalid}\n hasValue={hasValue}\n isFullWidth={!isAutoSized}\n tweakStyles={tweakControlWrapperStyles}\n onClear={isClearable && hasValue ? handleInputClear : undefined}\n data={data}\n groupPlacement={groupPlacement}\n startIcon={startIcon}\n endIcon={endIcon}\n isLoading={isLoading}\n isRequired={isRequired}\n size={size}\n >\n <div\n className={clsx(classes.defaultWrapper, {\n [classes.autoSizeWrapper]: hasUnits || isAutoSized,\n })}\n >\n {isNotEmpty(mask) ? (\n <InputMask\n ref={mergedRef as unknown as MutableRefObject<InputMask>}\n mask={mask}\n maskPlaceholder={maskPlaceholder}\n alwaysShowMask={alwaysShowMask}\n beforeMaskedStateChange={beforeMaskedStateChange}\n {...props}\n />\n ) : (\n <input ref={mergedRef} {...props} />\n )}\n\n {(hasUnits || isAutoSized) && <div className={classes.fakeValue}>{value}</div>}\n {hasUnits && hasValue && (\n <div className={classes.units} ref={unitsRef}>\n {units}\n </div>\n )}\n </div>\n {children}\n </ControlWrapper>\n );\n});\n","import { forwardRef } from 'react';\nimport { getTestId } from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { IWithMessagesProps, WithMessages } from '../WithMessages';\nimport { IInputBaseProps, InputBase } from './InputBase';\n\nexport interface IInputProps\n extends IInputBaseProps,\n Pick<IWithMessagesProps, 'infoMessage' | 'errorMessage'> {}\n\nexport const Input = forwardRef<HTMLInputElement, IInputProps>(function Input(\n { infoMessage, errorMessage, isInvalid, testId, tweakStyles, ...inputProps },\n ref,\n) {\n const tweakWithMessagesStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakWithMessages',\n currentComponentName: 'Input',\n });\n\n return (\n <WithMessages\n errorMessage={errorMessage}\n infoMessage={infoMessage}\n testId={getTestId(testId, 'wrapper')}\n tweakStyles={tweakWithMessagesStyles}\n >\n <InputBase\n {...inputProps}\n ref={ref}\n testId={testId}\n tweakStyles={tweakStyles}\n isInvalid={isInvalid}\n />\n </WithMessages>\n );\n});\n","export const EMPTY_DATE_INPUT_VALUE = '__.__.____';\nexport const EMPTY_DATE_RANGE_INPUT_VALUE = `${EMPTY_DATE_INPUT_VALUE} - ${EMPTY_DATE_INPUT_VALUE}`;\n","import { createThemedStyles, ITweakStyles } from '../../theme';\nimport { IInputStyles } from '../Input';\n\nexport const useStyles = createThemedStyles('DateInput', {\n root: {\n width: '100%',\n height: '100%',\n cursor: 'pointer',\n position: 'relative',\n },\n});\n\nexport type IDateInputStyles = ITweakStyles<typeof useStyles, { tweakInput: IInputStyles }>;\n","import { ChangeEvent, forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { IChangeInputEvent, IInputProps, Input } from '../Input';\nimport { EMPTY_DATE_INPUT_VALUE, EMPTY_DATE_RANGE_INPUT_VALUE } from './constants';\nimport { IDateInputStyles, useStyles } from './DateInput.styles';\n\nexport interface IDateInputProps\n extends Omit<IInputProps, 'value' | 'beforeMaskedStateChange' | 'onChange' | 'tweakStyles'>,\n ICommonProps<IDateInputStyles> {\n date?: string;\n /** @default '' */\n startDate?: string;\n /** @default '' */\n endDate?: string;\n className?: string;\n /** @default false */\n isRange?: boolean;\n // react-datepicker ожидает event первым аргументом\n onChange?: (event: IChangeInputEvent, value: string) => void;\n}\n\nexport const DateInput = forwardRef<HTMLInputElement, IDateInputProps>(function DateInput(\n {\n date,\n startDate = '',\n endDate = '',\n mask,\n className,\n placeholder,\n data,\n isRange = false,\n tweakStyles,\n onClick,\n onChange,\n ...inputProps\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakInputStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakInput',\n currentComponentName: 'DateInput',\n });\n\n const beforeMaskedStateChange: IInputProps['beforeMaskedStateChange'] = ({ nextState }) => {\n // Если в инпуте отсутствует введенное значение, то выставляем\n // пустую строку для корректной работы react-datepicker\n if (\n nextState.value === EMPTY_DATE_INPUT_VALUE ||\n nextState.value === EMPTY_DATE_RANGE_INPUT_VALUE\n ) {\n return { value: '', selection: { start: 0, end: 0 } };\n }\n return nextState;\n };\n\n const handleChange: IInputProps['onChange'] = (value, event) => {\n // Событие click срабатывает только при нажатии на кнопку очистки\n if (event.type === 'click') {\n // react-datepicker ожидает пустую строку в event.target.value\n (event as ChangeEvent<HTMLInputElement>).target.value = '';\n }\n onChange?.(event, value);\n };\n\n return (\n <div className={clsx(classes.root, className)} {...addDataAttributes(data)} onClick={onClick}>\n <Input\n {...inputProps}\n ref={ref}\n value={isRange ? `${startDate}${endDate}` : date}\n mask={mask ?? (isRange ? '99.99.9999 - 99.99.9999' : '99.99.9999')}\n placeholder={\n placeholder ?? (isRange ? EMPTY_DATE_RANGE_INPUT_VALUE : EMPTY_DATE_INPUT_VALUE)\n }\n tweakStyles={tweakInputStyles}\n onChange={handleChange}\n beforeMaskedStateChange={beforeMaskedStateChange}\n />\n </div>\n );\n});\n","import ReactDatePicker, { DatePickerProps } from 'react-datepicker';\nimport { doNothing } from '@true-engineering/true-react-platform-helpers';\n\nexport class DatePickerBase extends ReactDatePicker {\n public handleClickOutside;\n\n constructor(props: DatePickerProps) {\n super(props);\n this.handleClickOutside = this.handleCalendarClickOutside;\n // Затираем дефолтный обработчик клика снаружи, чтобы обрабатывать его самим\n // (см. использование useOnClickOutside в DatePicker)\n this.handleCalendarClickOutside = doNothing;\n }\n}\n","import { IInputStyles } from '../Input';\n\nexport const inputStyles: IInputStyles = {\n tweakControlWrapper: {\n startControls: {\n position: 'absolute',\n left: 0,\n top: 0,\n height: '100%',\n pointerEvents: 'none',\n },\n\n controlWrapper: {\n borderColor: 'transparent',\n },\n },\n\n inputContent: {\n paddingLeft: 'calc(var(--start-controls-width) + var(--control-padding))',\n },\n};\n\nexport interface ISearchInputStyles {\n tweakInput?: IInputStyles;\n}\n","import { forwardRef } from 'react';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { IInputProps, Input } from '../Input';\nimport { inputStyles, ISearchInputStyles } from './SearchInput.styles';\n\nexport type ISearchInputProps = Omit<\n IInputProps,\n 'type' | 'label' | 'isInvalid' | 'errorMessage' | 'isActive' | 'tweakStyles' | 'startIcon'\n> &\n ICommonProps<ISearchInputStyles>;\n\nexport const SearchInput = forwardRef<HTMLInputElement, ISearchInputProps>(function SearchInput(\n { isClearable = true, tweakStyles, ...props },\n ref,\n) {\n const tweakInputStyles = useTweakStyles({\n innerStyles: inputStyles,\n tweakStyles,\n className: 'tweakInput',\n currentComponentName: 'SearchInput',\n });\n\n return (\n <Input\n ref={ref}\n startIcon=\"search\"\n isClearable={isClearable}\n tweakStyles={tweakInputStyles}\n {...props}\n />\n );\n});\n","import type { IScrollIntoViewIfNeededProps } from './ScrollIntoViewIfNeeded';\n\nexport const ScrollIntoViewIfNeededDefaultElementType = 'div';\n\nexport const ScrollIntoViewIfNeededDefaultProps: IScrollIntoViewIfNeededProps = {\n active: true,\n elementType: ScrollIntoViewIfNeededDefaultElementType,\n options: {\n behavior: 'smooth',\n scrollMode: 'if-needed',\n },\n};\n","import {\n createElement,\n createRef,\n DOMElement,\n HTMLProps,\n PureComponent,\n ReactNode,\n RefObject,\n} from 'react';\nimport scrollIntoViewIfNeeded, { StandardBehaviorOptions } from 'scroll-into-view-if-needed';\nimport {\n ScrollIntoViewIfNeededDefaultElementType,\n ScrollIntoViewIfNeededDefaultProps,\n} from './constants';\n\nexport interface IScrollIntoViewIfNeededProps extends HTMLProps<HTMLElement> {\n active?: boolean;\n children?: ReactNode;\n elementType?: string;\n options?: StandardBehaviorOptions;\n}\n\nexport class ScrollIntoViewIfNeeded extends PureComponent<IScrollIntoViewIfNeededProps> {\n public static defaultProps: IScrollIntoViewIfNeededProps = ScrollIntoViewIfNeededDefaultProps;\n\n node: RefObject<HTMLElement> = createRef();\n\n componentDidMount(): void {\n const { active } = this.props;\n if (active) {\n this.handleScrollIntoViewIfNeeded();\n }\n }\n\n componentDidUpdate({ active }: IScrollIntoViewIfNeededProps): void {\n const { active: isNowActive } = this.props;\n if (!active && isNowActive) {\n this.handleScrollIntoViewIfNeeded();\n }\n }\n\n handleScrollIntoViewIfNeeded = (): void => {\n const { options } = this.props;\n const { current: node } = this.node;\n\n if (node) {\n scrollIntoViewIfNeeded(node, options);\n }\n };\n\n render(): DOMElement<any, any> {\n const { active, elementType, children, options, ...wrapperProps } = this.props;\n\n return createElement(\n elementType ?? ScrollIntoViewIfNeededDefaultElementType,\n { ref: this.node, ...wrapperProps },\n children,\n );\n }\n}\n","export const DEFAULT_OPTION_INDEX = -2;\nexport const ALL_OPTION_INDEX = -1;\n","import { colors, createThemedStyles, dimensions, helpers, ITweakStyles } from '../../../../theme';\nimport { IControlWrapperSizes } from '../../../ControlWrapper';\n\nexport const ROW_HEIGHT = 40;\nexport const CONTAINER_PADDING = 10;\nexport const CELL_PADDING = [10, 20];\n\nexport const useStyles = createThemedStyles('SelectList', {\n root: {\n borderRadius: dimensions.BORDER_RADIUS_SMALL,\n boxShadow: '0 13px 74px -27px rgba(0, 0, 0, 0.11)',\n boxSizing: 'border-box',\n padding: [CONTAINER_PADDING, 0],\n fontSize: 16,\n overflow: 'hidden',\n },\n\n withListHeader: {\n paddingTop: 0,\n },\n\n withListFooter: {\n paddingBottom: 0,\n },\n\n listHeader: {},\n\n listFooter: {},\n\n list: {\n height: '100%',\n maxHeight: ROW_HEIGHT * 6,\n cursor: 'pointer',\n backgroundColor: colors.CLASSIC_WHITE,\n\n ...helpers.withScrollBar,\n },\n\n cell: {\n display: 'flex',\n cursor: 'pointer',\n minHeight: ROW_HEIGHT,\n width: 'auto',\n padding: CELL_PADDING,\n alignItems: 'center',\n boxSizing: 'border-box',\n fontSize: 14,\n },\n\n cellWithCheckbox: {\n padding: 0,\n },\n\n noMatchesLabel: {\n pointerEvents: 'none',\n },\n\n focused: {},\n\n active: {},\n\n disabled: {\n cursor: 'default',\n },\n\n loading: {\n cursor: 'default',\n pointerEvents: 'none',\n },\n\n defaultCell: {},\n});\n\nexport type ISelectListStyles = ITweakStyles<typeof useStyles, IControlWrapperSizes>;\n","import { ICheckboxStyles } from '../../../Checkbox';\nimport { CELL_PADDING } from '../SelectList/SelectList.styles';\n\nexport const checkboxStyles: ICheckboxStyles = {\n root: {\n padding: CELL_PADDING,\n width: '100%',\n },\n\n input: {\n // иначе будет фокуситься и энтер будет вызывать изменение нескольких опций\n display: 'none',\n },\n};\n","import {\n type ChangeEvent,\n type FC,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport clsx from 'clsx';\nimport { type Classes } from 'jss';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { IDataAttributesProps } from '../../../../types';\nimport { Checkbox } from '../../../Checkbox';\nimport { ScrollIntoViewIfNeeded } from '../../../ScrollIntoViewIfNeeded';\nimport { checkboxStyles } from './SelectListItem.styles';\n\nexport interface ISelectListItemProps extends IDataAttributesProps {\n index: number;\n isSemiChecked?: boolean;\n isDisabled?: boolean;\n isActive?: boolean;\n isFocused?: boolean;\n children: ReactNode;\n classes: Classes<'cellWithCheckbox' | 'cell' | 'focused' | 'active' | 'disabled'>; // TODO: !!!\n isMultiSelect?: boolean;\n onOptionSelect: (index: number, event: MouseEvent<HTMLElement>) => void;\n onToggleCheckbox: (\n index: number,\n isSelected: boolean,\n event: ChangeEvent<HTMLElement> | KeyboardEvent,\n ) => void;\n}\n\nexport const SelectListItem: FC<ISelectListItemProps> = ({\n classes,\n index,\n isSemiChecked,\n isDisabled,\n isActive,\n children,\n isFocused,\n isMultiSelect,\n data,\n onOptionSelect,\n onToggleCheckbox,\n}) => {\n const multiSelectContent = isMultiSelect && (\n <Checkbox\n isChecked={isActive || isSemiChecked}\n isSemiChecked={isSemiChecked}\n isDisabled={isDisabled}\n tweakStyles={checkboxStyles}\n onSelect={({ isSelected }, event) => onToggleCheckbox(index, isSelected, event)}\n >\n {children}\n </Checkbox>\n );\n\n return (\n <ScrollIntoViewIfNeeded\n active={isFocused}\n options={{ block: 'nearest' }}\n className={clsx(classes.cell, {\n [classes.cellWithCheckbox]: isMultiSelect,\n [classes.focused]: isFocused,\n [classes.active]: isActive && !isMultiSelect,\n [classes.disabled]: isDisabled,\n })}\n {...addDataAttributes({\n disabled: isDisabled,\n active: isActive,\n focused: isFocused,\n ...data,\n })}\n onClick={!isDisabled && !isMultiSelect ? (event) => onOptionSelect(index, event) : undefined}\n >\n {isMultiSelect ? multiSelectContent : children}\n </ScrollIntoViewIfNeeded>\n );\n};\n","import { type ReactNode, useMemo } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataTestId,\n getArray,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { type ICommonProps } from '../../../../types';\nimport { ScrollIntoViewIfNeeded } from '../../../ScrollIntoViewIfNeeded';\nimport type { ISelectProps } from '../../Select';\nimport { ALL_OPTION_INDEX, DEFAULT_OPTION_INDEX } from '../../constants';\nimport { type ISelectListItemProps, SelectListItem } from '../SelectListItem';\nimport { type ISelectListStyles, useStyles } from './SelectList.styles';\n\nexport interface ISelectListProps<Value>\n extends ICommonProps<ISelectListStyles>,\n Pick<ISelectListItemProps, 'onToggleCheckbox' | 'onOptionSelect' | 'isMultiSelect'> {\n options: Value[] | readonly Value[];\n size?: ISelectProps<Value>['size'];\n focusedIndex?: number;\n activeValue?: Value | Value[];\n noMatchesLabel?: string;\n isLoading?: boolean;\n loadingLabel?: ReactNode;\n defaultOptionLabel?: ReactNode;\n allOptionsLabel?: ReactNode;\n areAllOptionsSelected?: boolean;\n shouldScrollToList?: boolean;\n customListHeader?: ReactNode;\n customListFooter?: ReactNode;\n isOptionDisabled: (value: Value) => boolean;\n convertValueToString: (value: Value) => string | undefined;\n convertValueToReactNode?: (value: Value, isDisabled: boolean) => ReactNode;\n convertValueToId: (value: Value) => string | undefined;\n}\n\nexport function SelectList<Value>({\n options,\n focusedIndex,\n size,\n activeValue,\n defaultOptionLabel,\n noMatchesLabel = 'Совпадений не найдено',\n isLoading,\n loadingLabel = 'Загрузка...',\n tweakStyles,\n testId,\n shouldScrollToList = true,\n areAllOptionsSelected,\n customListHeader,\n customListFooter,\n isMultiSelect,\n isOptionDisabled,\n allOptionsLabel,\n onOptionSelect,\n onToggleCheckbox,\n convertValueToString,\n convertValueToReactNode = convertValueToString,\n convertValueToId,\n}: ISelectListProps<Value>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const isHeaderNotEmpty = isReactNodeNotEmpty(customListHeader);\n const isFooterNotEmpty = isReactNodeNotEmpty(customListFooter);\n\n const optionsDisableMap = useMemo(\n () => options.map(isOptionDisabled),\n [options, isOptionDisabled],\n );\n\n const listOptions = useMemo(\n () => options.map((option, index) => convertValueToReactNode(option, optionsDisableMap[index])),\n [options, convertValueToReactNode, optionsDisableMap],\n );\n\n const activeOptionsIds = useMemo(\n () => new Set((getArray(activeValue) as Value[]).map(convertValueToId)),\n [activeValue, convertValueToId],\n );\n\n return (\n <ScrollIntoViewIfNeeded\n active={shouldScrollToList && !isMultiSelect}\n className={clsx(classes.root, isNotEmpty(size) && classes[size], {\n [classes.withListHeader]: isHeaderNotEmpty,\n [classes.withListFooter]: isFooterNotEmpty,\n })}\n >\n {isHeaderNotEmpty && <div className={classes.listHeader}>{customListHeader}</div>}\n <div className={classes.list} {...addDataTestId(testId)} tabIndex={-1}>\n {isLoading ? (\n <div className={clsx(classes.cell, classes.loading)}>{loadingLabel}</div>\n ) : (\n <>\n {isReactNodeNotEmpty(defaultOptionLabel) && (\n <ScrollIntoViewIfNeeded\n active={focusedIndex === DEFAULT_OPTION_INDEX}\n options={{ block: 'nearest' }}\n className={clsx(\n classes.cell,\n classes.defaultCell,\n focusedIndex === DEFAULT_OPTION_INDEX && classes.focused,\n )}\n onClick={(event) => onOptionSelect(DEFAULT_OPTION_INDEX, event)}\n >\n {defaultOptionLabel}\n </ScrollIntoViewIfNeeded>\n )}\n {isReactNodeNotEmpty(allOptionsLabel) && (\n <SelectListItem\n classes={classes}\n index={ALL_OPTION_INDEX}\n isSemiChecked={activeOptionsIds.size > 0 && !areAllOptionsSelected}\n isActive={areAllOptionsSelected}\n isFocused={focusedIndex === ALL_OPTION_INDEX}\n isMultiSelect={isMultiSelect}\n onOptionSelect={onOptionSelect}\n onToggleCheckbox={onToggleCheckbox}\n >\n {allOptionsLabel}\n </SelectListItem>\n )}\n {listOptions.map((opt, i) => {\n const optionValue = options[i];\n const id = convertValueToId(optionValue);\n const isFocused = focusedIndex === i;\n const isActive = activeOptionsIds.has(id);\n // проверяем, что опция задизейблена\n const isDisabled = optionsDisableMap[i];\n\n return (\n <SelectListItem\n key={i}\n classes={classes}\n index={i}\n isDisabled={isDisabled}\n isActive={isActive}\n isFocused={isFocused}\n isMultiSelect={isMultiSelect}\n onOptionSelect={onOptionSelect}\n onToggleCheckbox={onToggleCheckbox}\n data={{ id }}\n >\n {opt}\n </SelectListItem>\n );\n })}\n {listOptions.length === 0 && (\n <div className={clsx(classes.cell, classes.noMatchesLabel)}>{noMatchesLabel}</div>\n )}\n </>\n )}\n </div>\n {isFooterNotEmpty && <div className={classes.listFooter}>{customListFooter}</div>}\n </ScrollIntoViewIfNeeded>\n );\n}\n","import { isNotEmpty } from '@true-engineering/true-react-platform-helpers';\n\nexport const defaultIsOptionDisabled = <Value>(option: Value): boolean =>\n typeof option === 'object' &&\n option !== null &&\n ((option as { isDisabled?: boolean })?.isDisabled ?? false);\n\nexport const defaultConvertFunction = (v: unknown): string | undefined =>\n v === undefined ? undefined : String(v);\n\nexport const defaultCompareFunction = <Value>(v1: Value, v2: Value): boolean => v1 === v2;\n\nexport const getDefaultConvertToIdFunction =\n <Value>(\n convertValueToString: (value: Value) => string | undefined,\n ): ((value: Value) => string | undefined) =>\n (value) =>\n isNotEmpty((value as { id: unknown })?.id)\n ? String((value as { id: unknown }).id)\n : convertValueToString(value);\n","import { mergeStyles } from '@true-engineering/true-react-platform-helpers';\nimport { animations, createThemedStyles, dimensions, type ITweakStyles } from '../../theme';\nimport { type IInputStyles } from '../Input';\nimport { type ISearchInputStyles } from '../SearchInput';\nimport { IWithMessagesStyles } from '../WithMessages';\nimport { type ISelectListStyles } from './components';\n\nconst { Z_INDEX } = dimensions;\n\nexport const useStyles = createThemedStyles('Select', {\n root: {\n width: '100%',\n position: 'relative',\n boxSizing: 'border-box',\n },\n\n inputWrapper: {\n width: '100%',\n cursor: 'text',\n },\n\n listWrapper: {\n left: -1,\n zIndex: 3,\n width: 'fit-content',\n minWidth: 'calc(100% + 1px)',\n },\n\n withoutPopper: {\n position: 'absolute',\n top: '100%',\n paddingTop: 4,\n },\n\n listWrapperInBody: {\n minWidth: 'auto',\n width: 'auto',\n maxWidth: 'min-content',\n },\n\n arrow: {\n width: 'var(--icon-inner-size, 20px)',\n height: 'var(--icon-inner-size, 20px)',\n cursor: 'pointer',\n transition: animations.defaultTransition,\n transitionProperty: 'transform',\n zIndex: Z_INDEX.CONTROL_FOCUS + 1,\n },\n\n activeArrow: {\n transform: 'rotate(180deg)',\n },\n\n disabled: {\n '& $arrow': {\n cursor: 'default',\n },\n },\n\n counter: {},\n});\n\nconst baseInputStyles: IInputStyles = {\n input: {\n '&[readonly]': {\n cursor: 'pointer',\n },\n },\n};\n\nconst readonlyInputBaseStyles: IInputStyles = {\n input: {\n cursor: 'pointer',\n },\n};\n\nexport const readonlyInputStyles = mergeStyles(baseInputStyles, readonlyInputBaseStyles);\nexport const readonlyMultiSelectStyles = mergeStyles(baseInputStyles, readonlyInputBaseStyles);\n\nexport const getInputStyles = ({\n hasReadonlyInput,\n isMultiSelect,\n}: {\n hasReadonlyInput: boolean;\n isMultiSelect?: boolean;\n}): IInputStyles => {\n if (hasReadonlyInput && isMultiSelect) {\n return readonlyMultiSelectStyles;\n }\n if (hasReadonlyInput && !isMultiSelect) {\n return readonlyInputStyles;\n }\n return baseInputStyles;\n};\n\nexport type ISelectStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakWithMessages: IWithMessagesStyles;\n tweakInput: IInputStyles;\n tweakSelectList: ISelectListStyles;\n tweakSearchInput: ISearchInputStyles;\n }\n>;\n","import {\n ChangeEvent,\n CSSProperties,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n Ref,\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Portal } from 'react-overlays';\nimport clsx from 'clsx';\nimport { debounce } from 'ts-debounce';\nimport {\n applyAction,\n createFilter,\n getArray,\n getTestId,\n isNotEmpty,\n isReactNodeNotEmpty,\n isStringNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { hasExactParent } from '../../helpers';\nimport { useDropdown, useIsMounted, useOnClickOutsideWithRef, useTweakStyles } from '../../hooks';\nimport { ICommonProps, IDropdownWithPopperOptions } from '../../types';\nimport { IIcon, renderIcon } from '../Icon';\nimport { IChangeInputEvent, IInputProps, InputBase } from '../Input';\nimport { ISearchInputProps, SearchInput } from '../SearchInput';\nimport { WithMessages } from '../WithMessages';\nimport { SelectList } from './components';\nimport { ALL_OPTION_INDEX, DEFAULT_OPTION_INDEX } from './constants';\nimport {\n defaultCompareFunction,\n defaultConvertFunction,\n defaultIsOptionDisabled,\n getDefaultConvertToIdFunction,\n} from './helpers';\nimport { IChangeSelectEvent, IMultipleSelectValue, ISelectFooter } from './types';\nimport { getInputStyles, ISelectStyles, useStyles } from './Select.styles';\n\nexport interface ISelectProps<Value>\n extends Omit<IInputProps, 'value' | 'onChange' | 'onBlur' | 'type' | 'tweakStyles'>,\n ICommonProps<ISelectStyles> {\n header?: ReactNode;\n footer?: ISelectFooter<Value>;\n defaultOptionLabel?: ReactNode;\n allOptionsLabel?: string;\n noMatchesLabel?: string;\n loadingLabel?: ReactNode;\n /** @default 'normal' */\n optionsMode?: 'search' | 'dynamic' | 'normal';\n /** @default 400 */\n debounceTime?: number;\n /** @default 0 */\n minSymbolsCountToOpenList?: number;\n dropdownOptions?: IDropdownWithPopperOptions;\n /** @default 'chevron-down' */\n dropdownIcon?: IIcon;\n options: Value[] | readonly Value[];\n value: Value | undefined;\n /** @default true */\n shouldScrollToList?: boolean;\n isMultiSelect?: false;\n searchInput?: {\n /** @default false */\n shouldRenderInList?: boolean;\n ref?: Ref<HTMLInputElement>;\n } & Pick<ISearchInputProps, 'placeholder' | 'shouldFocusOnMount'>;\n isOptionDisabled?: (option: Value) => boolean;\n onChange: (value: Value | undefined, event: IChangeSelectEvent) => void; // подумать как возвращать индекс\n onBlur?: (event: Event | SyntheticEvent) => void;\n onType?: (value: string) => Promise<void>;\n optionsFilter?: (options: Value[], query: string) => Value[];\n onOpen?: () => void;\n compareValuesOnChange?: (v1?: Value, v2?: Value) => boolean;\n /** @description Функция должна быть мемоизирована с целью избежания ререндера */\n convertValueToString?: (value: Value) => string | undefined;\n /** @description Функция должна быть мемоизирована с целью избежания ререндера */\n convertValueToReactNode?: (value: Value, isDisabled: boolean) => ReactNode;\n /** @description Функция должна быть мемоизирована с целью избежания ререндера */\n convertValueToId?: (value: Value) => string | undefined;\n}\n\nexport interface IMultipleSelectProps<Value>\n extends Omit<\n ISelectProps<Value>,\n 'value' | 'onChange' | 'compareValuesOnChange' | 'isMultiSelect'\n > {\n isMultiSelect: true;\n value: IMultipleSelectValue<Value> | undefined;\n onChange: (value: IMultipleSelectValue<Value> | undefined, event: IChangeSelectEvent) => void;\n compareValuesOnChange?: (\n v1?: IMultipleSelectValue<Value>,\n v2?: IMultipleSelectValue<Value>,\n ) => boolean;\n}\n\nexport function Select<Value>(\n props: ISelectProps<Value> | IMultipleSelectProps<Value>,\n): JSX.Element {\n const {\n options,\n isMultiSelect,\n value,\n header,\n footer,\n defaultOptionLabel,\n allOptionsLabel,\n debounceTime = 400,\n optionsMode = 'normal',\n noMatchesLabel,\n loadingLabel,\n tweakStyles,\n testId,\n isActive,\n isReadonly,\n isDisabled,\n dropdownOptions,\n minSymbolsCountToOpenList = 0,\n dropdownIcon = 'chevron-down',\n shouldScrollToList = true,\n searchInput,\n icon,\n endIcon = icon,\n onChange,\n onFocus,\n onBlur,\n onType,\n onOpen,\n isOptionDisabled = defaultIsOptionDisabled,\n compareValuesOnChange = defaultCompareFunction,\n convertValueToString = defaultConvertFunction,\n convertValueToId,\n convertValueToReactNode,\n optionsFilter,\n infoMessage,\n errorMessage,\n size,\n ...inputProps\n } = props;\n const classes = useStyles({ theme: tweakStyles });\n\n const { shouldRenderInList: shouldRenderSearchInputInList = false, ...searchInputProps } =\n searchInput ?? {};\n const hasSearchInputInList = optionsMode !== 'normal' && shouldRenderSearchInputInList;\n const hasReadonlyInput = isReadonly || optionsMode === 'normal' || shouldRenderSearchInputInList;\n\n const tweakWithMessagesStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakWithMessages',\n currentComponentName: 'Select',\n });\n\n const tweakInputStyles = useTweakStyles({\n innerStyles: getInputStyles({ hasReadonlyInput, isMultiSelect }),\n tweakStyles,\n className: 'tweakInput',\n currentComponentName: 'Select',\n });\n\n const tweakSearchInputStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakSearchInput',\n currentComponentName: 'Select',\n });\n\n const tweakSelectListStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakSelectList',\n currentComponentName: 'Select',\n });\n\n const isMounted = useIsMounted();\n const [isListOpen, setIsListOpen] = useState(false);\n const [areOptionsLoading, setAreOptionsLoading] = useState(false);\n const hasDefaultOption = isReactNodeNotEmpty(defaultOptionLabel);\n\n const [focusedListCellIndex, setFocusedListCellIndex] = useState(DEFAULT_OPTION_INDEX);\n const [searchValue, setSearchValue] = useState('');\n // если мы ввели что то в строку поиска - то этот булеан будет отключаться\n // вынесен отдельно, из-за проблем с дебаунсом при динамич. опциях\n const [shouldShowDefaultOption, setShouldShowDefaultOption] = useState(true);\n\n const root = useRef<HTMLDivElement>(null);\n const inputWrapper = useRef<HTMLDivElement>(null);\n const list = useRef<HTMLDivElement>(null);\n const input = useRef<HTMLInputElement>(null); // TODO ref снаружи?\n\n const strValue = isMultiSelect ? value?.[0] : value;\n const shouldShowAllOption =\n isMultiSelect && isStringNotEmpty(allOptionsLabel) && searchValue === '';\n\n const filteredOptions = useMemo(() => {\n if (optionsMode !== 'search') {\n return options as Value[];\n }\n\n const filter =\n optionsFilter ?? createFilter<Value>((option) => [convertValueToString(option) ?? '']);\n\n return filter(options as Value[], searchValue);\n }, [optionsFilter, options, convertValueToString, searchValue, optionsMode]);\n\n const availableOptions = useMemo(\n () => options.filter((option) => !isOptionDisabled(option)),\n [options, isOptionDisabled],\n );\n\n const areAllOptionsSelected = isMultiSelect && value?.length === availableOptions.length;\n const shouldShowMultiSelectCounter =\n isMultiSelect && isNotEmpty(value) && value.length > 1 && !areAllOptionsSelected;\n\n const optionsIndexesForNavigation = useMemo(() => {\n const result: number[] = [];\n if (shouldShowDefaultOption && hasDefaultOption) {\n result.push(DEFAULT_OPTION_INDEX);\n }\n if (shouldShowAllOption) {\n result.push(ALL_OPTION_INDEX);\n }\n return result.concat(\n filteredOptions.reduce((acc, cur, i) => {\n if (!isOptionDisabled(cur)) {\n acc.push(i);\n }\n return acc;\n }, [] as number[]),\n );\n }, [\n filteredOptions,\n hasDefaultOption,\n isOptionDisabled,\n shouldShowAllOption,\n shouldShowDefaultOption,\n ]);\n\n const stringValue = isNotEmpty(strValue) ? convertValueToString(strValue) : undefined;\n // Для мультиселекта пытаемся показать \"Все опции\" если выбраны все опции\n const showedStringValue =\n areAllOptionsSelected && isNotEmpty(allOptionsLabel) ? allOptionsLabel : stringValue;\n\n const convertToId = useCallback(\n (v: Value) => (convertValueToId ?? getDefaultConvertToIdFunction(convertValueToString))(v),\n [convertValueToId, convertValueToString],\n );\n\n const closeList = useCallback(() => {\n setIsListOpen(false);\n setSearchValue('');\n setShouldShowDefaultOption(true);\n }, [dropdownOptions?.shouldUsePopper]);\n\n const handleListClose = useCallback(\n (event: Event | SyntheticEvent) => {\n if (!isListOpen) {\n return;\n }\n\n closeList();\n onBlur?.(event);\n },\n [isListOpen, closeList, onBlur],\n );\n\n const handleListOpen = () => {\n if (!isReadonly && !isListOpen) {\n setIsListOpen(true);\n }\n };\n\n const handleFocus = (event: FocusEvent<HTMLInputElement>) => {\n onFocus?.(event);\n handleListOpen();\n };\n\n const handleOnClick = () => {\n handleListOpen();\n };\n\n const handleChange = useCallback(\n (newValue: Value | IMultipleSelectValue<Value> | undefined, event: IChangeSelectEvent) => {\n // Тут беда с типами, сорри\n if (!compareValuesOnChange(value as never, newValue as never)) {\n onChange(newValue as (Value & IMultipleSelectValue<Value>) | undefined, event);\n }\n },\n [value, compareValuesOnChange, onChange],\n );\n\n const handleOptionSelect = useCallback(\n (index: number, event: MouseEvent<HTMLElement> | KeyboardEvent) => {\n handleChange(index === DEFAULT_OPTION_INDEX ? undefined : filteredOptions[index], event);\n handleListClose(event);\n input.current?.blur();\n },\n [handleChange, handleListClose, filteredOptions],\n );\n\n // MultiSelect\n const handleToggleOptionCheckbox = useCallback(\n (index: number, isSelected: boolean, event: ChangeEvent<HTMLElement> | KeyboardEvent) => {\n if (!isMultiSelect) {\n return;\n }\n\n // Если выбрана не дефолтная опция, которая сетит андеф\n if (index === DEFAULT_OPTION_INDEX || (index === ALL_OPTION_INDEX && !isSelected)) {\n handleChange(undefined, event);\n return;\n }\n if (index === ALL_OPTION_INDEX && isSelected) {\n handleChange(availableOptions as IMultipleSelectValue<Value>, event);\n return;\n }\n const option = filteredOptions[index];\n handleChange(\n isSelected\n ? // Добавляем\n ([...(value ?? []), option] as IMultipleSelectValue<Value>)\n : // Убираем\n value?.filter((o) => convertToId(o) !== convertToId(option)),\n event,\n );\n },\n [isMultiSelect, filteredOptions, handleChange, value, availableOptions, convertToId],\n );\n\n const handleOnType = useCallback(\n async (v: string) => {\n if (onType === undefined) {\n return;\n }\n if (isMounted()) {\n setAreOptionsLoading(true);\n }\n await onType(v);\n if (isMounted()) {\n setAreOptionsLoading(false);\n }\n if (optionsMode === 'dynamic') {\n setShouldShowDefaultOption(v === '');\n }\n },\n [isMounted, onType, optionsMode],\n );\n\n const debounceHandleOnType = useMemo(\n () => debounce(handleOnType, debounceTime, { isImmediate: debounceTime === 0 }),\n [handleOnType, debounceTime],\n );\n\n const handleInputChange = (v: string, event: IChangeInputEvent) => {\n if (onType !== undefined) {\n debounceHandleOnType(v);\n }\n\n if (optionsMode !== 'dynamic') {\n setShouldShowDefaultOption(v === '');\n }\n\n if (v === '' && !hasSearchInputInList) {\n handleChange(undefined, event);\n }\n\n setSearchValue(v);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!isListOpen) {\n return;\n }\n\n event.stopPropagation();\n const curIndexInNavigation = optionsIndexesForNavigation.findIndex(\n (index) => index === focusedListCellIndex,\n );\n\n switch (event.code) {\n case 'Enter':\n case 'NumpadEnter': {\n let indexToSelect = focusedListCellIndex;\n\n // если осталась одна опция в списке,\n // то выбираем ее нажатием на enter\n if (indexToSelect === DEFAULT_OPTION_INDEX && filteredOptions.length === 1) {\n indexToSelect = 0;\n }\n\n if (isMultiSelect) {\n let isThisValueAlreadySelected: boolean | undefined;\n if (indexToSelect === ALL_OPTION_INDEX) {\n isThisValueAlreadySelected = areAllOptionsSelected;\n } else {\n // подумать над концептом реального фокуса на опциях, а не вот эти вот focusedCell\n const option = filteredOptions[indexToSelect];\n const valueIdToSelect = convertToId(option);\n isThisValueAlreadySelected =\n value?.some((opt) => convertToId(opt) === valueIdToSelect) ?? false;\n }\n handleToggleOptionCheckbox(indexToSelect, !isThisValueAlreadySelected, event);\n } else {\n handleOptionSelect(indexToSelect, event);\n }\n break;\n }\n\n case 'ArrowDown': {\n // чтобы убрать перемещение курсора в инпуте\n event.preventDefault();\n const targetIndexInNavigation =\n (curIndexInNavigation + 1) % optionsIndexesForNavigation.length;\n setFocusedListCellIndex(optionsIndexesForNavigation[targetIndexInNavigation]);\n break;\n }\n\n case 'ArrowUp': {\n // чтобы убрать перемещение курсора в инпуте\n event.preventDefault();\n const targetIndexInNavigation =\n (curIndexInNavigation - 1 + optionsIndexesForNavigation.length) %\n optionsIndexesForNavigation.length;\n setFocusedListCellIndex(optionsIndexesForNavigation[targetIndexInNavigation]);\n break;\n }\n }\n };\n\n const onArrowClick = () => {\n if (isListOpen) {\n input.current?.blur();\n closeList();\n } else {\n input.current?.focus();\n }\n };\n\n useOnClickOutsideWithRef(list, handleListClose, inputWrapper);\n\n const hasEnoughSymbolsToSearch = searchValue.trim().length >= minSymbolsCountToOpenList;\n\n const isOpen =\n // Пользователь пытается открыть лист\n isListOpen &&\n // Нам есть что показать:\n // Есть опции\n (filteredOptions.length > 0 ||\n // Дефолтная опция\n (defaultOptionLabel !== undefined && !hasEnoughSymbolsToSearch) ||\n // Текст \"Загрузка...\"\n inputProps.isLoading ||\n // Текст \"Совпадений не найдено\"\n noMatchesLabel !== undefined ||\n // У нас есть инпут с поиском внутри листа\n hasSearchInputInList) &&\n // Последняя проверка на случай, если мы че то ищем в опциях\n (optionsMode === 'normal' || hasEnoughSymbolsToSearch);\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n // Когда что-то блокирует открытие листа, но блур все равно должен сработать\n // например minSymbolsCount\n if (isListOpen && !isOpen) {\n handleListClose(event);\n return;\n }\n\n if (\n !isNotEmpty(event.relatedTarget) ||\n !isNotEmpty(list.current) ||\n !isNotEmpty(inputWrapper.current)\n ) {\n return;\n }\n\n const isActionInsideSelect =\n hasExactParent(event.relatedTarget, list.current) ||\n hasExactParent(event.relatedTarget, inputWrapper.current);\n\n // Ничего не делаем, если клик был внутри селекта\n if (!isActionInsideSelect) {\n handleListClose(event);\n }\n };\n\n // Эти значения ставятся в false по дефолту также в useDropdown\n const {\n shouldUsePopper = false,\n shouldRenderInBody = false,\n shouldHideOnScroll = false,\n } = dropdownOptions ?? {};\n\n const popperData = useDropdown({\n isOpen,\n onDropdownClose: handleListClose,\n referenceElement: inputWrapper.current,\n dropdownElement: list.current,\n options: dropdownOptions,\n dependenciesForPositionUpdating: [inputProps.isLoading, filteredOptions.length],\n });\n\n useEffect(() => {\n const focusedCellIndex = isNotEmpty(strValue)\n ? optionsIndexesForNavigation.find((index) => {\n const option = filteredOptions[index];\n return isNotEmpty(option) && convertToId(option) === convertToId(strValue);\n })\n : undefined;\n\n setFocusedListCellIndex(focusedCellIndex ?? optionsIndexesForNavigation[0]);\n }, [strValue, filteredOptions, optionsIndexesForNavigation, convertToId]);\n\n useEffect(() => {\n if (isOpen) {\n onOpen?.();\n }\n }, [isOpen]);\n\n const searchInputEl = hasSearchInputInList && (\n <SearchInput\n size={size}\n value={searchValue}\n onChange={handleInputChange}\n tweakStyles={tweakSearchInputStyles}\n placeholder=\"Поиск\"\n {...searchInputProps}\n />\n );\n\n // Т.к. используется для проверки на пустой элемент `isReactNodeNotEmpty` внутри `SelectList`, то\n // он пропускает React.Fragment\n const customHeader = (isReactNodeNotEmpty(searchInputEl) || isReactNodeNotEmpty(header)) && (\n <>\n {searchInputEl}\n {header}\n </>\n );\n\n const listEl = (\n <div\n className={clsx(classes.listWrapper, {\n [classes.withoutPopper]: !shouldUsePopper,\n [classes.listWrapperInBody]: shouldRenderInBody,\n })}\n ref={list}\n style={popperData?.styles.popper as CSSProperties}\n tabIndex={0}\n onBlur={handleBlur} // обработка для Tab из списка\n {...popperData?.attributes.popper}\n >\n {isOpen && (\n <SelectList\n options={filteredOptions}\n size={size}\n defaultOptionLabel={hasDefaultOption && shouldShowDefaultOption && defaultOptionLabel}\n allOptionsLabel={shouldShowAllOption && allOptionsLabel}\n areAllOptionsSelected={areAllOptionsSelected}\n customListHeader={customHeader}\n customListFooter={applyAction(footer, { filteredOptions })}\n noMatchesLabel={noMatchesLabel}\n focusedIndex={focusedListCellIndex}\n activeValue={value}\n isLoading={inputProps.isLoading}\n loadingLabel={loadingLabel}\n tweakStyles={tweakSelectListStyles}\n testId={getTestId(testId, 'list')}\n isMultiSelect={isMultiSelect}\n // скролл не работает с включеным поппером\n shouldScrollToList={shouldScrollToList && !shouldUsePopper && !shouldHideOnScroll}\n isOptionDisabled={isOptionDisabled}\n convertValueToString={convertValueToString}\n convertValueToReactNode={convertValueToReactNode}\n convertValueToId={convertToId}\n onOptionSelect={handleOptionSelect}\n onToggleCheckbox={handleToggleOptionCheckbox}\n />\n )}\n </div>\n );\n\n return (\n <WithMessages\n errorMessage={errorMessage}\n infoMessage={infoMessage}\n tweakStyles={tweakWithMessagesStyles}\n testId={getTestId(testId, 'wrapper')}\n >\n <div className={classes.root} onKeyDown={handleKeyDown} ref={root}>\n <div\n className={clsx(classes.inputWrapper, isDisabled && classes.disabled)}\n onClick={isDisabled || isReadonly ? undefined : handleOnClick}\n ref={inputWrapper}\n >\n <InputBase\n value={\n searchValue !== '' && !shouldRenderSearchInputInList ? searchValue : showedStringValue\n }\n size={size}\n onChange={handleInputChange}\n isActive={isListOpen || isActive}\n isReadonly={hasReadonlyInput}\n onFocus={handleFocus}\n onBlur={handleBlur}\n isDisabled={isDisabled}\n ref={input}\n isLoading={areOptionsLoading}\n tweakStyles={tweakInputStyles}\n testId={testId}\n icon={[\n isMultiSelect && shouldShowMultiSelectCounter\n ? {\n key: 'counter',\n iconComponent: (\n <div key=\"counter\" className={classes.counter}>\n (+{value.length - 1})\n </div>\n ),\n shouldResetSize: true,\n }\n : undefined,\n\n ...getArray(endIcon),\n\n <div\n key=\"arrow\"\n className={clsx(classes.arrow, isOpen && classes.activeArrow)}\n onClick={onArrowClick} // клик тут, потому что onClick в ControlWrapper добавляет tabIndex={0}\n >\n {renderIcon(dropdownIcon)}\n </div>,\n ].filter(isNotEmpty)}\n {...inputProps}\n />\n </div>\n {shouldUsePopper ? (\n <Portal container={shouldRenderInBody ? document.body : inputWrapper.current}>\n <>{listEl}</>\n </Portal>\n ) : (\n <>{isOpen && listEl}</>\n )}\n </div>\n </WithMessages>\n );\n}\n","import { createThemedStyles, ITweakStyles } from '../../../../theme';\nimport { ISelectStyles } from '../../../Select';\n\nexport const useStyles = createThemedStyles('DatePickerHeader', {\n btn: {\n width: 36,\n height: 36,\n padding: 8,\n boxSizing: 'border-box',\n border: 'none',\n outline: 'none',\n cursor: 'pointer',\n marginLeft: 8,\n },\n\n header: {\n margin: 6,\n display: 'flex',\n alignItems: 'center',\n },\n\n buttons: {\n flexShrink: 0,\n marginLeft: 'auto',\n },\n});\n\nexport const selectStyles: ISelectStyles = {\n tweakSelectList: {\n cell: {\n fontSize: 14,\n minHeight: 35,\n },\n },\n\n tweakInput: {\n tweakControlWrapper: {\n controlWrapper: {\n '--control-height': '35px',\n border: 'none',\n },\n },\n\n inputContent: {\n fontSize: 16,\n fontWeight: 'bold',\n },\n },\n};\n\nexport type IDatePickerHeaderStyles = ITweakStyles<\n typeof useStyles,\n { tweakSelect: ISelectStyles }\n>;\n","import { FC, useMemo } from 'react';\nimport { ReactDatePickerCustomHeaderProps as BaseProps } from 'react-datepicker';\nimport { getMonth, getYear } from 'date-fns';\nimport { useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Icon } from '../../../Icon';\nimport { Select } from '../../../Select';\nimport { IDatePickerHeaderStyles, selectStyles, useStyles } from './DatePickerHeader.styles';\n\nexport interface IDatePickerHeaderProps\n extends BaseProps,\n Pick<ICommonProps<IDatePickerHeaderStyles>, 'tweakStyles'> {\n months?: string[];\n}\n\nexport const DatePickerHeader: FC<IDatePickerHeaderProps> = ({\n date,\n months = [],\n tweakStyles,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n changeYear,\n changeMonth,\n decreaseMonth,\n increaseMonth,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakSelectStyles = useTweakStyles({\n innerStyles: selectStyles,\n tweakStyles,\n className: 'tweakSelect',\n currentComponentName: 'DatePickerHeader',\n });\n\n const years = useMemo(\n () => Array.from(Array(41)).map((_, i) => getYear(new Date()) - 30 + i),\n [],\n );\n\n return (\n <div className={classes.header}>\n <Select\n value={months[getMonth(date)]}\n options={months}\n dropdownIcon=\"chevron-down-small\"\n isAutoSized\n tweakStyles={tweakSelectStyles}\n onChange={(value) => changeMonth(months.indexOf(value as string))}\n />\n <Select\n value={getYear(date)}\n options={years}\n dropdownIcon=\"chevron-down-small\"\n isAutoSized\n tweakStyles={tweakSelectStyles}\n onChange={(value) => changeYear(value as number)}\n />\n\n <div className={classes.buttons}>\n <button\n type=\"button\"\n className={classes.btn}\n disabled={prevMonthButtonDisabled}\n onClick={decreaseMonth}\n >\n <Icon type=\"chevron-left\" />\n </button>\n\n <button\n type=\"button\"\n className={classes.btn}\n disabled={nextMonthButtonDisabled}\n onClick={increaseMonth}\n >\n <Icon type=\"chevron-right\" />\n </button>\n </div>\n </div>\n );\n};\n","import { FC, PropsWithChildren } from 'react';\nimport { FloatingPortal } from '@floating-ui/react';\n\nexport const PopperContainer: FC<PropsWithChildren> = (props) => (\n <FloatingPortal root={document.body} {...props} />\n);\n","import { enUS as enLocale, ru as ruLocale, type Locale } from 'date-fns/locale';\n\nexport const DEFAULT_DATE_FORMAT = 'dd.MM.yyyy';\n\nexport const OUTSIDE_CLICK_IGNORE_CLASS = 'react-datepicker-ignore-onclickoutside';\n\nexport const LocalesMap = {\n ru: ruLocale,\n en: enLocale,\n} satisfies Record<string, Locale>;\n\nexport type IDatePickerLocale = keyof typeof LocalesMap | Locale;\n","import { format, isSameDay, parse } from 'date-fns';\nimport {\n isEmpty,\n isNotEmpty,\n isStringNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { EMPTY_DATE_INPUT_VALUE } from '../DateInput';\n\nexport const getDateFormatter =\n (dateFormat: string) =>\n (date?: Date | null): string =>\n isNotEmpty(date) ? format(date, dateFormat) : '';\n\nexport const getDateValueParser =\n (dateFormat: string) =>\n (value: string): Date | null => {\n const inputValue = value === EMPTY_DATE_INPUT_VALUE ? '' : value;\n return isStringNotEmpty(inputValue) ? parse(value, dateFormat, new Date()) : null;\n };\n\nexport const areDatesEquals = (date1?: Date | null, date2?: Date | null): boolean =>\n (isEmpty(date1) && isEmpty(date2)) ||\n (isNotEmpty(date1) && isNotEmpty(date2) && isSameDay(date1, date2));\n","import { createThemedStyles, ITweakStyles } from '../../theme';\nimport { IDateInputStyles } from '../DateInput';\n\nexport const useStyles = createThemedStyles('DatePicker', {\n root: {\n width: '100%',\n height: '100%',\n },\n\n day: {},\n\n dayInner: {},\n\n datepicker: {},\n\n popper: {\n zIndex: 10,\n\n '&[data-placement^=\"bottom\"]': {\n paddingTop: 6,\n },\n\n '&[data-placement^=\"top\"]': {\n paddingBottom: 6,\n },\n\n '&[data-placement^=\"left\"]': {\n paddingRight: 6,\n },\n\n '&[data-placement^=\"right\"]': {\n paddingLeft: 6,\n },\n },\n});\n\nexport type IDatePickerStyles = ITweakStyles<\n typeof useStyles,\n { tweakDateInput: IDateInputStyles }\n>;\n","import {\n FC,\n FocusEvent,\n SyntheticEvent,\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type ReactDatePicker from 'react-datepicker';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport clsx from 'clsx';\nimport { isAfter, isBefore, isValid } from 'date-fns';\nimport {\n addDataAttributes,\n isEmpty,\n isNotEmpty,\n isString,\n isStringNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { offset } from '@floating-ui/react';\nimport { useMergedRefs, useOnClickOutside, useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { DateInput, EMPTY_DATE_INPUT_VALUE, IDateInputProps } from '../DateInput';\nimport { DatePickerBase, DatePickerHeader, PopperContainer } from './components';\nimport {\n DEFAULT_DATE_FORMAT,\n IDatePickerLocale,\n LocalesMap,\n OUTSIDE_CLICK_IGNORE_CLASS,\n} from './constants';\nimport { areDatesEquals, getDateFormatter, getDateValueParser } from './helpers';\nimport { IDatePickerBaseProps, IRange } from './types';\nimport { IDatePickerStyles, useStyles } from './DatePicker.styles';\n\nexport interface IDatePickerProps extends IDatePickerBaseProps, ICommonProps<IDatePickerStyles> {\n selectedDate?: Date | null;\n locale: IDatePickerLocale;\n months?: string[];\n /** @default 'dd.MM.yyyy' */\n dateFormat?: string;\n /** @default 1 */\n calendarStartDay?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n /** @default false */\n isRange?: boolean;\n /** @default false */\n isInline?: boolean;\n /** @default false */\n shouldRenderPopperInBody?: boolean;\n customInput?: FC<IDateInputProps>;\n onChangeDate?: (date: Date | null, event?: SyntheticEvent) => void;\n onChangeRange?: (date: IRange, event?: SyntheticEvent) => void;\n}\n\nexport const DatePicker = forwardRef<ReactDatePicker, IDatePickerProps>(function DatePicker(\n {\n data,\n selectedDate = null,\n minDate,\n maxDate,\n endDate = null,\n startDate = null,\n locale,\n months,\n calendarStartDay = 1,\n dateFormat = DEFAULT_DATE_FORMAT,\n monthsShown,\n placeholder,\n isRange = false,\n isInline = false,\n isDisabled,\n isClearable,\n strictParsing,\n fixedHeight,\n focusSelectedMonth,\n disabledKeyboardNavigation,\n shouldRenderPopperInBody = false,\n allowSameDay = false,\n shouldCloseOnSelect,\n showPreviousMonths,\n preventOpenOnFocus,\n popperModifiers = [],\n popperPlacement = 'bottom-start',\n todayButton,\n highlightDates,\n calendarContainer,\n dayClassName,\n customInput: CustomInput = DateInput,\n customInputRef,\n renderCustomHeader,\n filterDate,\n onYearChange,\n onMonthChange,\n onCalendarOpen,\n onCalendarClose,\n onChangeDate,\n onChangeRange,\n onBlur,\n onFocus,\n onKeyDown,\n tweakStyles,\n ...inputProps\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakDateInputStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakDateInput',\n currentComponentName: 'DatePicker',\n });\n\n const { formatDate, parseDateValue } = useMemo(\n () => ({\n formatDate: getDateFormatter(dateFormat),\n parseDateValue: getDateValueParser(dateFormat),\n }),\n [dateFormat],\n );\n\n const datePickerRef = useRef<DatePickerBase>();\n\n const componentRef = useMergedRefs([ref, datePickerRef]);\n\n const [isOpen, setIsOpen] = useState(false);\n\n const [dateValue, setDateValue] = useState(formatDate(selectedDate));\n\n const [start, setStart] = useState(startDate);\n const [startDateValue, setStartDateValue] = useState(formatDate(startDate));\n const [end, setEnd] = useState(endDate);\n const [endDateValue, setEndDateValue] = useState(formatDate(endDate));\n\n const hasDateInputValue = isRange\n ? isStringNotEmpty(startDateValue) || isStringNotEmpty(endDateValue)\n : isStringNotEmpty(dateValue);\n\n const dateInputProps: IDateInputProps = {\n ...inputProps,\n isRange,\n isDisabled,\n isClearable,\n isActive: isOpen,\n icon: isClearable && hasDateInputValue ? undefined : 'calendar',\n tweakStyles: tweakDateInputStyles,\n ...(isRange ? { startDate: startDateValue, endDate: endDateValue } : { date: dateValue }),\n };\n\n const handleChangeDate = (value: Date | null, event?: SyntheticEvent) => {\n onChangeDate?.(value, event);\n };\n\n const isDateInRange = (date: Date) =>\n (isEmpty(minDate) || isAfter(date, minDate)) && (isEmpty(maxDate) || isBefore(date, maxDate));\n\n // TODO: Если пропса allowSameDay равна true и введена только начальная дата, то\n // невозможно будет стереть значение в инпуте. Обойти это можно только если\n // полностью выбрать период, а затем уже очищать инпут (баг в react-datepicker. В этом\n // случае value равняется не [null, null], а [start, null])\n const handleChangeRange = (value: IRange, event?: SyntheticEvent) => {\n if (\n allowSameDay ||\n !areDatesEquals(value?.[0], startDate) ||\n !areDatesEquals(value?.[1], endDate)\n ) {\n setStart(value?.[0] ?? null);\n setEnd(value?.[1] ?? null);\n onChangeRange?.(value, event);\n }\n };\n\n // TODO: кажется это можно улучшить, т.к проблему пофиксили (https://github.com/Hacker0x01/react-datepicker/pull/5060)\n const handleChangeDateRangeInput = (value: string) => {\n const newStartDateValue = value.slice(0, 10);\n let newStart = parseDateValue(newStartDateValue);\n const newEndDateValue = value.slice(13);\n let newEnd = parseDateValue(newEndDateValue);\n\n if (\n (isNotEmpty(newStart) && !isValid(newStart)) ||\n (isNotEmpty(newStart) && !isDateInRange(newStart))\n ) {\n newStart = start;\n }\n\n if (\n (isNotEmpty(newEnd) && !isValid(newEnd)) ||\n (isNotEmpty(newEnd) && !isDateInRange(newEnd))\n ) {\n newEnd = end;\n }\n\n // Если оставить пустой начальную дату и заполненной конечную,\n // то ломается react-datepicker и в календарике ничего нельзя выбирать\n if (\n (isEmpty(newStart) && isValid(newEnd)) ||\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n (isValid(newStart) && isValid(newEnd) && isAfter(newStart!, newEnd!))\n ) {\n newStart = newEnd;\n newEnd = null;\n }\n\n setStartDateValue(newStartDateValue);\n setStart(newStart);\n setEndDateValue(newEndDateValue);\n setEnd(newEnd);\n };\n\n const handleDateInputBlur = (event: FocusEvent<HTMLInputElement>) => {\n onBlur?.(event);\n setDateValue(formatDate(selectedDate));\n };\n\n const setDateRangeValues = (startValue: Date | null = null, endValue: Date | null = null) => {\n let convertedStartDate = formatDate(startValue);\n const convertedEndDate = formatDate(endValue);\n if (convertedStartDate === '' && convertedEndDate !== '') {\n // Если выставлять пустую строку, то конечная дата перепрыгивает на место начальной\n convertedStartDate = EMPTY_DATE_INPUT_VALUE;\n }\n\n setStart(startValue);\n setStartDateValue(convertedStartDate);\n setEnd(endValue);\n setEndDateValue(convertedEndDate);\n };\n\n const handleDateRangeInputBlur = (event: FocusEvent<HTMLInputElement>) => {\n onBlur?.(event);\n handleChangeRange([start, end], event);\n setDateRangeValues(start, end);\n };\n\n const handleOpenCalendar = () => {\n setIsOpen(true);\n onCalendarOpen?.();\n };\n\n const handleCloseCalendar = () => {\n setIsOpen(false);\n if (isRange) {\n handleChangeRange([start, end]);\n setDateRangeValues(start, end);\n } else {\n setDateValue(formatDate(selectedDate));\n }\n onCalendarClose?.();\n };\n\n useEffect(() => {\n setDateValue(formatDate(selectedDate));\n setDateRangeValues(startDate, endDate);\n }, [selectedDate, startDate, endDate]);\n\n // Кастомный обработчик клика снаружи, чтобы можно было поставить фокус на Input при открытом календаре.\n // Проблема в том, что класс OUTSIDE_CLICK_IGNORE_CLASS висит контейнере Input'а. А react-datepicker\n // проверяет наличие класса непосредственно на элементе, который вызвал клик, но не на его родителях\n useOnClickOutside(\n () => datePickerRef.current?.calendar?.containerRef?.current,\n (event) => datePickerRef.current?.handleClickOutside(event as MouseEvent),\n OUTSIDE_CLICK_IGNORE_CLASS,\n );\n\n return (\n <div className={classes.root} {...addDataAttributes(data)}>\n <DatePickerBase\n ref={componentRef}\n minDate={minDate}\n maxDate={maxDate}\n locale={isString(locale) ? LocalesMap[locale] : locale}\n dateFormat={dateFormat}\n placeholderText={placeholder}\n calendarStartDay={calendarStartDay}\n inline={isInline}\n disabled={isDisabled}\n fixedHeight={fixedHeight}\n showPreviousMonths={showPreviousMonths}\n focusSelectedMonth={focusSelectedMonth}\n monthsShown={monthsShown}\n allowSameDay={allowSameDay}\n showPopperArrow={false}\n popperClassName={classes.popper}\n calendarClassName={classes.datepicker}\n dayClassName={(v) => clsx(classes.day, dayClassName?.(v))}\n disabledKeyboardNavigation={disabledKeyboardNavigation}\n popperContainer={shouldRenderPopperInBody ? PopperContainer : undefined}\n // Убираем дефолтный отступ в 10px из либы\n // https://github.com/Hacker0x01/react-datepicker/blob/db67a58de2b05d2681bdf0a4977b606095d514c4/src/with_floating.tsx#L58\n popperModifiers={[offset(-10), ...popperModifiers]}\n popperPlacement={popperPlacement}\n strictParsing={strictParsing}\n preventOpenOnFocus={preventOpenOnFocus}\n shouldCloseOnSelect={shouldCloseOnSelect}\n customInputRef={customInputRef}\n customInput={<CustomInput {...dateInputProps} />}\n renderDayContents={(day) => <div className={classes.dayInner}>{day}</div>}\n renderCustomHeader={\n renderCustomHeader ?? ((baseProps) => <DatePickerHeader {...baseProps} months={months} />)\n }\n todayButton={todayButton}\n highlightDates={highlightDates}\n calendarContainer={calendarContainer}\n filterDate={filterDate}\n onYearChange={onYearChange}\n onMonthChange={onMonthChange}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n onCalendarOpen={handleOpenCalendar}\n onCalendarClose={handleCloseCalendar}\n onChangeRaw={(_, value?: string) => {\n // Если передали value, значит этот обработчик вызвался после изменения значения в инпуте\n // (react-datepicker вызывает эту функцию также при клике на дату в календаре)\n if (value === undefined) {\n return;\n }\n if (isRange) {\n handleChangeDateRangeInput(value);\n } else {\n setDateValue(value);\n }\n }}\n {...(isRange\n ? {\n startDate: start,\n endDate: end,\n selected: start,\n selectsRange: true,\n onBlur: handleDateRangeInputBlur,\n onChange: handleChangeRange,\n }\n : {\n selected: selectedDate,\n onBlur: handleDateInputBlur,\n onChange: handleChangeDate,\n })}\n />\n </div>\n );\n});\n","export const LINK_REGEXP = /(http(s?):\\/\\/(.*))(\\s?)/;\n","import { colors, ITweakStyles, createThemedStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('Description', {\n root: {},\n\n button: {\n cursor: 'pointer',\n display: 'inline-block',\n color: colors.FONT_MEDIUM,\n marginTop: 18,\n textTransform: 'capitalize',\n borderBottom: [1, 'dashed', colors.FONT_MEDIUM],\n\n '&:hover': {\n color: colors.FONT_MAIN,\n },\n },\n\n link: {\n color: colors.FONT_MEDIUM,\n textDecoration: 'none',\n borderBottom: [1, 'dashed', colors.FONT_MEDIUM],\n\n '&:hover': {\n color: colors.FONT_MAIN,\n },\n },\n});\n\nexport type IDescriptionStyles = ITweakStyles<typeof useStyles>;\n","import { FC, useState } from 'react';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { LINK_REGEXP } from './constants';\nimport { useStyles, IDescriptionStyles } from './Description.styles';\n\nexport interface IDescriptionProps extends ICommonProps<IDescriptionStyles> {\n text: string;\n moreTitle?: string;\n lessTitle?: string;\n /** @default 150 */\n truncateIndex?: number;\n /** @default true */\n isAlwaysOpen?: boolean;\n}\n\nexport const Description: FC<IDescriptionProps> = ({\n text,\n moreTitle,\n lessTitle,\n truncateIndex = 150,\n isAlwaysOpen = true,\n testId,\n data,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const isTooShort = text.length < truncateIndex;\n const [isOpen, setIsOpen] = useState(isAlwaysOpen);\n const link = text.match(LINK_REGEXP);\n const linkText = link && link[0];\n const textWithNoLink = text.replace(LINK_REGEXP, '');\n\n const shortText = text.slice(0, text.slice(0, truncateIndex).lastIndexOf(' '));\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n {isAlwaysOpen || isOpen || isTooShort ? (\n <div>\n <span>{textWithNoLink} </span>\n {!!linkText && (\n <a className={classes.link} href={linkText} target=\"_blank\" rel=\"noopener noreferrer\">\n {linkText}\n </a>\n )}\n </div>\n ) : (\n <div>\n <span>{shortText}</span>\n </div>\n )}\n {isAlwaysOpen || isTooShort ? undefined : (\n <div className={classes.button} onClick={() => setIsOpen(!isOpen)}>\n {isOpen ? lessTitle : moreTitle}\n </div>\n )}\n </div>\n );\n};\n","import { SyntheticEvent } from 'react';\n\nexport const blockEvent = (event: SyntheticEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n};\n","import { ITweakStyles, animations, createThemedStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('FileInput', {\n root: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n },\n\n label: {\n position: 'relative',\n width: 'fit-content',\n fontSize: 16,\n marginBottom: 12,\n },\n\n requiredLabel: {\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n right: -8,\n top: 4,\n transform: 'translate(0, -50%)',\n width: 6,\n height: 6,\n borderRadius: '50%',\n },\n },\n\n description: {\n marginBottom: 8,\n fontSize: 12,\n },\n\n text: {\n padding: [16, 0],\n },\n\n inputWrapper: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n boxSizing: 'border-box',\n marginBottom: 8,\n transition: animations.defaultTransition,\n transitionProperty: 'background-color, color',\n },\n\n inputLabel: {\n position: 'absolute',\n inset: 0,\n cursor: 'pointer',\n\n '& input': {\n opacity: 0,\n width: 1,\n height: 1,\n zIndex: -1,\n },\n },\n\n dragged: {},\n\n active: {},\n\n disabled: {\n cursor: 'not-allowed',\n pointerEvents: 'none',\n },\n\n fileList: {\n display: 'flex',\n flexWrap: 'wrap',\n columnGap: 6,\n rowGap: 12,\n },\n});\n\nexport type IFileInputStyles = ITweakStyles<typeof useStyles>;\n","import {\n ReactNode,\n useState,\n InputHTMLAttributes,\n forwardRef,\n ChangeEventHandler,\n DragEventHandler,\n} from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n addDataTestId,\n isEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { blockEvent } from './helpers';\nimport { IFileInputStyles, useStyles } from './FileInput.styles';\n\nexport interface IFileInputProps extends ICommonProps<IFileInputStyles> {\n fileList?: ReactNode;\n label?: ReactNode;\n text: ReactNode;\n description?: ReactNode;\n /** @default false */\n isDragAndDropDisabled?: boolean;\n /** @default false */\n isRequired?: boolean;\n /** @default false */\n isReadOnly?: boolean;\n /** @default false */\n isMultipleDisabled?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isActive?: boolean;\n /** @default undefined */\n accept?: InputHTMLAttributes<HTMLInputElement>['accept'];\n onAdd?: (files: File[]) => void;\n}\n\nexport const FileInput = forwardRef<HTMLInputElement, IFileInputProps>(function FileInput(\n {\n fileList,\n label,\n text,\n description,\n isDragAndDropDisabled = false,\n isRequired = false,\n isReadOnly = false,\n isMultipleDisabled = false,\n isDisabled = false,\n isActive = false,\n accept,\n onAdd,\n testId,\n tweakStyles,\n data,\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const [isDragOver, setIsDragOver] = useState(false);\n\n const handleAdd = (files: FileList | null) => {\n if (isDisabled || isEmpty(files) || files?.length === 0) {\n return;\n }\n\n onAdd?.([...files]);\n };\n\n const handleDragStart: DragEventHandler<HTMLDivElement> = (event) => {\n blockEvent(event);\n setIsDragOver(true);\n };\n\n const handleDragStop: DragEventHandler<HTMLDivElement> = (event) => {\n blockEvent(event);\n setIsDragOver(false);\n };\n\n const handleDrop: DragEventHandler<HTMLDivElement> = (event) => {\n handleDragStop(event);\n\n handleAdd(event.dataTransfer.files);\n };\n\n const handleFileChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n handleAdd(event.target.files);\n };\n\n const dndHandlers =\n !isDragAndDropDisabled && !isDisabled\n ? {\n onDragOver: handleDragStart,\n onDragEnter: handleDragStart,\n onDragLeave: handleDragStop,\n onDrop: handleDrop,\n }\n : undefined;\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n {isReactNodeNotEmpty(label) && (\n <div className={clsx(classes.label, { [classes.requiredLabel]: isRequired })}>{label}</div>\n )}\n {!isReadOnly && (\n <div\n className={clsx(classes.inputWrapper, {\n [classes.dragged]: isDragOver,\n [classes.disabled]: isDisabled,\n [classes.active]: isActive,\n })}\n {...dndHandlers}\n >\n {isReactNodeNotEmpty(text) && <div className={classes.text}>{text}</div>}\n <label className={classes.inputLabel}>\n <input\n ref={ref}\n type=\"file\"\n value=\"\"\n onChange={handleFileChange}\n multiple={!isMultipleDisabled}\n disabled={isDisabled}\n accept={accept}\n {...addDataTestId(testId, 'input')}\n />\n </label>\n </div>\n )}\n\n {isReactNodeNotEmpty(description) && <div className={classes.description}>{description}</div>}\n\n <div className={classes.fileList}>{fileList}</div>\n </div>\n );\n});\n","import { ITweakStyles, animations, createThemedStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('IconButton', {\n root: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n outline: 'none',\n boxSizing: 'border-box',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color, color, border-color, opacity, visibility',\n border: 'none',\n position: 'relative',\n boxShadow: 'none',\n borderRadius: '50%',\n background: 'none',\n padding: 0,\n flexShrink: 0,\n\n '&:disabled': {\n extend: 'disabled',\n },\n\n '&:active': {\n extend: 'active',\n },\n\n width: 'var(--icon-button-size)',\n height: 'var(--icon-button-size)',\n '--icon-button-icon-size': '20px',\n },\n\n 'cancel-light': {},\n\n cancel: {},\n\n main: {},\n\n custom: {},\n\n active: {},\n\n disabled: {\n cursor: 'not-allowed',\n pointerEvents: 'none',\n },\n\n loading: {\n '& $loader': {\n display: 'block',\n },\n },\n\n icon: {\n display: 'flex',\n alignItems: 'center',\n width: 'var(--icon-button-icon-size)',\n height: 'var(--icon-button-icon-size)',\n },\n\n loader: {\n display: 'none',\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n\n width: 'var(--icon-button-icon-size)',\n height: 'var(--icon-button-icon-size)',\n },\n\n s: {\n '--icon-button-size': '24px',\n },\n\n m: {\n '--icon-button-size': '32px',\n },\n\n l: {\n '--icon-button-size': '40px',\n },\n});\n\nexport type IIconButtonStyles = ITweakStyles<typeof useStyles>;\n","import { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { renderIcon, IIcon } from '../Icon';\nimport { ThemedPreloader } from '../ThemedPreloader';\nimport { IIconButtonSize, IIconButtonView, IIconButtonHTMLBaseProps } from './types';\nimport { useStyles, IIconButtonStyles } from './IconButton.styles';\n\nexport interface IIconButtonProps\n extends IIconButtonHTMLBaseProps,\n ICommonProps<IIconButtonStyles> {\n icon: IIcon;\n /** @default 'm' */\n size?: IIconButtonSize;\n /** @default 'cancel-light' */\n view?: IIconButtonView;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isActive?: boolean;\n /** @default false */\n isLoading?: boolean;\n}\n\nexport const IconButton = forwardRef<HTMLButtonElement, IIconButtonProps>(function IconButton(\n {\n icon,\n size = 'm',\n view = 'cancel-light',\n isDisabled = false,\n isActive = false,\n isLoading = false,\n type = 'button',\n testId,\n tweakStyles,\n data,\n onClick,\n ...restProps\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const hasNoAction = isDisabled || isLoading;\n\n return (\n <button\n ref={ref}\n className={clsx(classes.root, classes[view], classes[size], {\n [classes.disabled]: isDisabled,\n [classes.active]: isActive,\n [classes.loading]: isLoading,\n })}\n type={type}\n disabled={isDisabled}\n onClick={hasNoAction ? undefined : onClick}\n {...restProps}\n {...addDataAttributes(data, testId)}\n >\n {isLoading ? (\n <span className={classes.loader}>\n <ThemedPreloader type=\"default\" useCurrentColor />\n </span>\n ) : (\n <span className={classes.icon}>{renderIcon(icon)}</span>\n )}\n </button>\n );\n});\n","import { rgba } from '../../helpers';\nimport { colors, createThemedStyles, dimensions, ITweakStyles } from '../../theme';\nimport { ITooltipSizes } from './types';\n\nexport const useStyles = createThemedStyles('Tooltip', {\n root: {\n display: 'inline-block',\n boxSizing: 'border-box',\n },\n\n tooltip: {\n fontSize: 14,\n padding: [18, 20],\n letterSpacing: 0.15,\n backgroundColor: colors.CLASSIC_WHITE,\n color: colors.FONT_MAIN,\n boxShadow: `0 0 1px ${rgba(colors.FONT_MAIN, 0.4)}, 0 -2px 6px ${rgba(\n colors.FONT_MAIN,\n 0.06,\n )}, 0 8px 32px -8px ${rgba(colors.FONT_MAIN, 0.3)}`,\n borderRadius: 12,\n lineHeight: 1.4,\n maxWidth: 320,\n },\n\n hint: {\n whiteSpace: 'nowrap',\n fontSize: 12,\n padding: [8, 12],\n borderRadius: dimensions.BORDER_RADIUS_SMALL,\n backgroundColor: colors.FONT_MEDIUM,\n color: colors.CLASSIC_WHITE,\n letterSpacing: 0.2,\n },\n\n custom: {},\n\n info: {},\n\n error: {\n '&$tooltip': {\n backgroundColor: colors.RED_WARNING,\n color: colors.CLASSIC_WHITE,\n },\n\n '&$hint': {\n backgroundColor: colors.RED_WARNING,\n },\n },\n});\n\nexport type ITooltipStyles = ITweakStyles<typeof useStyles, ITooltipSizes>;\n","import { FC, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes, isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { ITooltipSize } from './types';\nimport { useStyles, ITooltipStyles } from './Tooltip.styles';\n\nexport interface ITooltipProps extends ICommonProps<ITooltipStyles> {\n text: ReactNode;\n /** @default 'tooltip' */\n view?: 'tooltip' | 'hint' | 'custom';\n /** @default 'info' */\n type?: 'info' | 'error';\n /** @default 'undefined' */\n size?: ITooltipSize;\n}\n\nexport const Tooltip: FC<ITooltipProps> = ({\n text,\n view = 'tooltip',\n type = 'info',\n size,\n data,\n testId,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <div\n className={clsx(\n classes.root,\n classes[view],\n classes[type],\n isNotEmpty(size) && classes[size],\n )}\n {...addDataAttributes(data, testId)}\n >\n {text}\n </div>\n );\n};\n","import { ITweakStyles, createThemedStyles } from '../../theme';\nimport { ITooltipStyles } from '../Tooltip';\n\nexport const useStyles = createThemedStyles('TextWithTooltip', {\n root: {\n position: 'relative',\n },\n\n tooltip: {\n zIndex: 9999,\n },\n\n clickable: {\n cursor: 'pointer',\n },\n});\n\nexport type ITextWithTooltipStyles = ITweakStyles<\n typeof useStyles,\n { tweakTooltip: ITooltipStyles }\n>;\n","import { CSSProperties, FC, ReactNode, useEffect, useRef, useState } from 'react';\nimport { Portal } from 'react-overlays';\nimport usePopper, { Modifier, Placement } from 'react-overlays/usePopper';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { useOnClickOutsideWithRef, useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { ITooltipProps, Tooltip } from '../Tooltip';\nimport { ITextWithTooltipStyles, useStyles } from './TextWithTooltip.styles';\n\nexport interface ITextWithTooltipProps extends ICommonProps<ITextWithTooltipStyles> {\n children: ReactNode;\n tooltipText: ITooltipProps['text'];\n /** @default 'tooltip' */\n tooltipView?: ITooltipProps['view'];\n /** @default 'info' */\n tooltipType?: ITooltipProps['type'];\n /** @default 'top' */\n tooltipPosition?: Placement;\n /** @default [] */\n tooltipModifiers?: Array<Partial<Modifier<any, any>>>;\n tooltipOffsetOptions?: Record<string, unknown>;\n /** @default 'undefined' */\n tooltipSize?: ITooltipProps['size'];\n /** @default 'hover' */\n mouseEventType?: 'hover' | 'click';\n hoverDelay?: number;\n /** @default false */\n isDisabled?: boolean;\n /** @default true */\n shouldRenderInBody?: boolean;\n}\n\n/** @deprecated Используйте {@link import('../WithTooltip').WithTooltip WithTooltip} */\nexport const TextWithTooltip: FC<ITextWithTooltipProps> = ({\n children,\n tooltipText,\n tooltipPosition = 'top',\n tooltipView = 'tooltip',\n tooltipType = 'info',\n tooltipModifiers = [],\n tooltipOffsetOptions,\n tooltipSize,\n isDisabled = false,\n shouldRenderInBody = true,\n mouseEventType = 'hover',\n hoverDelay,\n testId,\n data,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakTooltipStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakTooltip',\n currentComponentName: 'TextWithTooltip',\n });\n\n const [isTooltipVisible, setIsTooltipVisible] = useState(false);\n const [tooltipTimeout, setTooltipTimeout] = useState<ReturnType<typeof setTimeout>>();\n\n const root = useRef<HTMLDivElement>(null);\n const tooltip = useRef<HTMLDivElement>(null);\n\n const hasDelay = hoverDelay !== undefined;\n\n const handleMouseEnter = () => {\n if (hasDelay) {\n const timeout = setTimeout(() => {\n setIsTooltipVisible(true);\n }, hoverDelay);\n\n setTooltipTimeout(timeout);\n } else {\n setIsTooltipVisible(true);\n }\n };\n\n const handleMouseLeave = () => {\n if (hasDelay) {\n clearTimeout(tooltipTimeout);\n }\n setIsTooltipVisible(false);\n };\n\n useEffect(() => () => clearTimeout(tooltipTimeout), []);\n\n const { styles: popperStyles, attributes } = usePopper(root.current, tooltip.current, {\n enabled: isTooltipVisible,\n placement: tooltipPosition,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 6],\n ...tooltipOffsetOptions,\n },\n },\n ...tooltipModifiers,\n ],\n });\n\n useOnClickOutsideWithRef(\n tooltip,\n () => {\n if (mouseEventType === 'click') {\n setIsTooltipVisible(false);\n }\n },\n root,\n );\n\n const props =\n mouseEventType === 'click'\n ? {\n onClick: () => setIsTooltipVisible(true),\n }\n : {\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n };\n\n const shouldShowTooltip = tooltipText !== undefined && tooltipText !== null && !isDisabled;\n\n return (\n <div\n className={clsx(\n classes.root,\n mouseEventType === 'click' && shouldShowTooltip && classes.clickable,\n )}\n {...(shouldShowTooltip ? props : undefined)}\n {...addDataAttributes(data, testId)}\n ref={root}\n >\n {shouldShowTooltip && (\n <Portal container={shouldRenderInBody ? document.body : root.current}>\n <div\n className={classes.tooltip}\n style={popperStyles.popper as CSSProperties}\n {...attributes.popper}\n ref={tooltip}\n >\n <Tooltip\n view={tooltipView}\n type={tooltipType}\n text={tooltipText}\n size={tooltipSize}\n tweakStyles={tweakTooltipStyles}\n />\n </div>\n </Portal>\n )}\n {children}\n </div>\n );\n};\n","import { mimeTypes } from '../../constants';\nimport { IIconType } from '../Icon';\n\nexport const FILE_ICON_DEFAULT: IIconType = 'file-other';\n\nexport const iconTypeMap: Record<string, IIconType> = {\n [mimeTypes.xls]: 'file-excel',\n [mimeTypes.xlsx]: 'file-excel',\n [mimeTypes.jpeg]: 'file-image',\n [mimeTypes.png]: 'file-image',\n [mimeTypes.pdf]: 'file-pdf',\n [mimeTypes.doc]: 'file-word',\n [mimeTypes.docx]: 'file-word',\n [mimeTypes.xml]: 'file-xml',\n [mimeTypes.zip]: 'file-zip',\n};\n\nexport const FILE_ITEM_SIZES = ['m', 'l'] as const;\n","import { isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { IMimeType, mimeTypes } from '../../constants';\nimport { IIconType } from '../Icon';\nimport { FILE_ICON_DEFAULT, iconTypeMap } from './constants';\nimport { IFileInfo } from './types';\n\nexport const getFileExtensionByFilename = (fileName: string): string | undefined => {\n const splitFileName = fileName.split('.');\n return splitFileName.length > 1 ? splitFileName.pop() : undefined;\n};\n\nexport const getMimeTypeByFilename = (fileName: string): string | undefined => {\n const ext = getFileExtensionByFilename(fileName);\n return isNotEmpty(ext) ? mimeTypes[ext as IMimeType] : undefined;\n};\n\nexport const getFileIcon = ({ type, name }: IFileInfo): IIconType => {\n if (isNotEmpty(type) && type in iconTypeMap) {\n return iconTypeMap[type];\n }\n\n const mimeType = getMimeTypeByFilename(name);\n if (isNotEmpty(mimeType) && mimeType in iconTypeMap) {\n return iconTypeMap[mimeType];\n }\n\n return FILE_ICON_DEFAULT;\n};\n","import { ITweakStyles, animations, createThemedStyles } from '../../theme';\nimport { IIconButtonStyles } from '../IconButton';\nimport { IThemedPreloaderStyles } from '../ThemedPreloader';\nimport { ITooltipStyles } from '../Tooltip';\n\nexport const useStyles = createThemedStyles('FileItem', {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 4,\n },\n\n fileItemWrapper: {\n display: 'flex',\n gap: 12,\n width: '100%',\n cursor: 'pointer',\n boxSizing: 'border-box',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color, color, box-shadow, border-color',\n },\n\n m: {\n '&$fileItemWrapper': {\n padding: [10, 10, 10, 12],\n },\n\n '--icon-size': '20px',\n },\n\n l: {\n '&$fileItemWrapper': {\n padding: [12, 16],\n },\n\n '--icon-size': '32px',\n },\n\n fileIcon: {\n maxWidth: 'var(--icon-size)',\n maxHeight: 'var(--icon-size)',\n },\n\n fileName: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontSize: 16,\n },\n\n fileNameContainer: {\n overflow: 'hidden',\n marginRight: 'auto',\n },\n\n preloader: {\n display: 'flex',\n margin: 6,\n },\n\n 'preloader-dots': {\n width: 26,\n marginTop: 12,\n },\n\n 'preloader-default': {\n width: 20,\n height: 20,\n },\n\n 'preloader-logo': {\n width: 20,\n height: 20,\n },\n\n metadata: {\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n fontSize: 12,\n },\n\n actions: {\n display: 'flex',\n flexShrink: 0,\n margin: -6,\n },\n\n fileSize: {},\n\n footer: {},\n\n error: {\n fontSize: 12,\n },\n\n info: {\n fontSize: 12,\n },\n\n disabled: {\n cursor: 'not-allowed',\n },\n});\n\nexport const themedPreloaderStyles: IThemedPreloaderStyles = {\n tweakDotsPreloader: {\n root: {\n gap: 4,\n '--dot-size': '6px',\n },\n },\n};\n\nexport type IFileItemStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakRemoveIconButton: IIconButtonStyles;\n tweakPreloader: IThemedPreloaderStyles;\n tweakTooltip: ITooltipStyles;\n }\n>;\n","import { FC, MouseEvent, KeyboardEvent, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { filesize } from 'filesize';\nimport {\n addClickHandler,\n addDataAttributes,\n isFunction,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { IIcon, renderIcon } from '../Icon';\nimport { IconButton } from '../IconButton';\nimport { TextWithTooltip } from '../TextWithTooltip';\nimport { IThemedPreloaderProps, ThemedPreloader } from '../ThemedPreloader';\nimport { getFileIcon } from './helpers';\nimport { IFileInfo, IFileItemSize } from './types';\nimport { IFileItemStyles, themedPreloaderStyles, useStyles } from './FileItem.styles';\n\nexport interface IFileItemProps extends ICommonProps<IFileItemStyles> {\n fileInfo: IFileInfo;\n icon?: IIcon;\n /** @default trash-can */\n removeIcon?: IIcon;\n metadata?: ReactNode;\n actions?: ReactNode;\n error?: ReactNode;\n info?: ReactNode;\n /** @default m */\n itemSize?: IFileItemSize;\n /** @default default */\n preloaderType?: IThemedPreloaderProps['type'];\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n areActionsDisabled?: boolean;\n /** @default false */\n isLoading?: boolean;\n /** @default false */\n shouldShowSize?: boolean;\n onClick?: (event: MouseEvent | KeyboardEvent) => void;\n onRemove?: (event: MouseEvent | KeyboardEvent) => void;\n}\n\nexport const FileItem: FC<IFileItemProps> = ({\n fileInfo,\n icon = getFileIcon(fileInfo),\n metadata,\n actions,\n error,\n info,\n isDisabled = false,\n areActionsDisabled = false,\n isLoading = false,\n shouldShowSize = false,\n itemSize = 'm',\n preloaderType = 'default',\n removeIcon = 'trash-can',\n onRemove,\n onClick,\n testId,\n data,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakIconButtonStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakRemoveIconButton',\n currentComponentName: 'FileItem',\n });\n\n const tweakPreloaderStyles = useTweakStyles({\n innerStyles: themedPreloaderStyles,\n tweakStyles,\n className: 'tweakPreloader',\n currentComponentName: 'FileItem',\n });\n\n const tweakTooltipStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakTooltip',\n currentComponentName: 'FileItem',\n });\n\n const handleClick = (event: MouseEvent | KeyboardEvent) => {\n event.stopPropagation();\n onClick?.(event);\n };\n\n const handleRemove = (event: MouseEvent | KeyboardEvent) => {\n event.stopPropagation();\n onRemove?.(event);\n };\n\n const { name, size } = fileInfo;\n const hasRemoveButton = isFunction(onRemove);\n\n return (\n <div className={classes.root}>\n <div\n className={clsx(classes.fileItemWrapper, classes[itemSize], {\n [classes.disabled]: isDisabled,\n })}\n {...addDataAttributes(data, testId)}\n {...addClickHandler(handleClick, !isDisabled)}\n >\n <div className={classes.fileIcon}>{renderIcon(icon)}</div>\n\n <div className={classes.fileNameContainer}>\n <TextWithTooltip tooltipText={name} tooltipView=\"hint\" tweakStyles={tweakTooltipStyles}>\n <div className={classes.fileName}>{name}</div>\n </TextWithTooltip>\n\n <div className={classes.metadata}>\n {metadata}\n {shouldShowSize && isNotEmpty(size) && (\n <div className={classes.fileSize}>{filesize(size)}</div>\n )}\n </div>\n </div>\n\n <div className={classes.actions}>\n {isLoading ? (\n <div className={clsx(classes.preloader, classes[`preloader-${preloaderType}`])}>\n <ThemedPreloader\n type={preloaderType}\n tweakStyles={tweakPreloaderStyles}\n useCurrentColor\n />\n </div>\n ) : (\n hasRemoveButton && (\n <IconButton\n icon={removeIcon}\n onClick={handleRemove}\n isDisabled={areActionsDisabled}\n tweakStyles={tweakIconButtonStyles}\n />\n )\n )}\n\n {actions}\n </div>\n </div>\n\n <div className={classes.footer}>\n {isReactNodeNotEmpty(error) && <div className={classes.error}>{error}</div>}\n\n {isReactNodeNotEmpty(info) && <div className={classes.info}>{info}</div>}\n </div>\n </div>\n );\n};\n","import { endOfMonth, endOfYear, startOfMonth, startOfYear, sub } from 'date-fns';\nimport type {\n IFilterLocale,\n IFilterLocaleKey,\n IPeriodGetter,\n ISelectLocale,\n ISelectLocaleKey,\n} from './types';\n\nexport const PERIODS = ['THIS_MONTH', 'LAST_MONTH', 'THIS_YEAR', 'LAST_YEAR', 'CUSTOM'] as const;\n\nexport const SelectLocales: Record<string, ISelectLocale> = {\n ru: {\n clear: 'Очистить',\n all: 'Все',\n chosen: 'Выбранные',\n nothingFound: 'Ничего не найдено',\n searchPlaceholder: 'Поиск',\n },\n\n en: {\n clear: 'Clear',\n all: 'All',\n chosen: 'Chosen',\n nothingFound: 'Nothing found',\n searchPlaceholder: 'Search',\n },\n};\n\nexport const FilterLocales: Record<string, IFilterLocale> = {\n ru: {\n clear: 'Очистить',\n all: 'Все',\n other: 'Остальные',\n chosen: 'Выбранные',\n nothingFound: 'Не найдено',\n from: 'От',\n to: 'До',\n back: 'Назад',\n searchPlaceholder: 'Поиск',\n displayedFields: 'Поля для поиска',\n months: [\n 'Январь',\n 'Февраль',\n 'Март',\n 'Апрель',\n 'Май',\n 'Июнь',\n 'Июль',\n 'Август',\n 'Сентябрь',\n 'Октябрь',\n 'Ноябрь',\n 'Декабрь',\n ],\n periods: {\n THIS_MONTH: 'Этот месяц',\n LAST_MONTH: 'Прошлый месяц',\n THIS_YEAR: 'Этот год',\n LAST_YEAR: 'Прошлый год',\n CUSTOM: 'Другой период',\n },\n },\n\n en: {\n clear: 'Clear',\n all: 'All',\n other: 'Others',\n chosen: 'Chosen',\n nothingFound: 'Nothing found',\n from: 'From',\n to: 'To',\n back: 'Back',\n searchPlaceholder: 'Search',\n displayedFields: 'Displayed fields',\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n periods: {\n THIS_MONTH: 'This month',\n LAST_MONTH: 'Previous month',\n THIS_YEAR: 'This year',\n LAST_YEAR: 'Previous year',\n CUSTOM: 'Custom',\n },\n },\n};\n\nexport const DEFAULT_LOCALE: IFilterLocaleKey = 'en';\n\nexport const DEFAULT_SELECT_LOCALE: ISelectLocaleKey = 'en';\n\nexport const DEFAULT_DATE_FORMAT = 'dd.MM.yyyy';\n\nexport const DEFAULT_PICKER_PROPS = {};\n\nexport const PERIODS_GETTERS: Record<string, IPeriodGetter> = {\n THIS_MONTH: () => {\n const today = new Date();\n return {\n from: startOfMonth(today),\n to: endOfMonth(today),\n };\n },\n LAST_MONTH: () => {\n const day = sub(new Date(), { months: 1 });\n return {\n from: startOfMonth(day),\n to: endOfMonth(day),\n };\n },\n THIS_YEAR: () => {\n const today = new Date();\n return {\n from: startOfYear(today),\n to: endOfYear(today),\n };\n },\n LAST_YEAR: () => {\n const day = sub(new Date(), { years: 1 });\n return {\n from: startOfYear(day),\n to: endOfYear(day),\n };\n },\n};\n","import { merge } from '@true-engineering/true-react-platform-helpers';\nimport { DEFAULT_LOCALE, DEFAULT_SELECT_LOCALE, FilterLocales, SelectLocales } from './constants';\nimport {\n type IFilterLocale,\n type IFilterLocaleKey,\n type IPartialFilterLocale,\n ISelectLocale,\n ISelectLocaleKey,\n} from './types';\n\nexport const getLocale = (\n key: IFilterLocaleKey = DEFAULT_LOCALE,\n custom?: IPartialFilterLocale,\n custom2?: IPartialFilterLocale,\n): IFilterLocale => merge(FilterLocales[key], custom, custom2);\n\nexport const getSelectLocale = (\n key: ISelectLocaleKey = DEFAULT_SELECT_LOCALE,\n custom?: Partial<ISelectLocale>,\n custom2?: Partial<ISelectLocale>,\n): ISelectLocale => merge(SelectLocales[key], custom, custom2);\n\nexport const sortValues = (arr: Array<number | undefined>): Array<number | undefined> =>\n arr.includes(undefined) ? arr : (arr as number[]).sort((a, b) => (a < b ? -1 : 1));\n\nexport const defaultConvertFunction = (val: unknown): string => String(val);\n","import { isStringNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { formatNumber, isSpaceChar } from '../../helpers';\nimport type { INumberInputProps } from './NumberInput';\n\nconst getPrevSpaces = (val: string, position: number): number =>\n val.slice(0, position).split('').filter(isSpaceChar).length;\n\nexport const getNewCaretPosition = (\n defaultPosition: number,\n oldValue: string,\n newValue: string,\n isDeleteForwardAction?: boolean,\n): number => {\n if (oldValue === newValue) {\n return isDeleteForwardAction ? defaultPosition + 1 : defaultPosition;\n }\n\n const isAdding = newValue.length > oldValue.length;\n const oldPrevSpaces = getPrevSpaces(oldValue, defaultPosition - (isAdding ? 1 : 0));\n const newPrevSpaces = getPrevSpaces(newValue, defaultPosition);\n const diff = newPrevSpaces - oldPrevSpaces;\n const res = defaultPosition + diff;\n if (res <= 0) {\n return 0;\n }\n return res - (isSpaceChar(newValue[res - 1]) ? 1 : 0);\n};\n\nexport const formatNumberWithDefault = (\n value: number | undefined,\n defaultValue?: number,\n): string => {\n const val = formatNumber(value);\n return isStringNotEmpty(val) ? val : formatNumber(defaultValue);\n};\n\nexport const constructRegExp = ({\n canBeFloat,\n canBeNegative,\n intPartPrecision,\n precision,\n}: Pick<\n INumberInputProps,\n 'canBeFloat' | 'canBeNegative' | 'intPartPrecision' | 'precision'\n>): string => {\n const basePart = `\\\\d{0,${intPartPrecision}}`;\n const floatPart = `(\\\\.\\\\d{0,${precision}})?`;\n const negativePart = '(\\\\-)?';\n\n return `^${canBeNegative ? negativePart : ''}${basePart}${canBeFloat ? floatPart : ''}$`;\n};\n\n// const testNewCaretPosition = () => {\n// console.log(getNewCaretPosition(1, '', '1') === 1);\n// console.log(getNewCaretPosition(2, '1', '12') === 2);\n// console.log(getNewCaretPosition(3, '12', '123') === 3);\n// console.log(getNewCaretPosition(4, '123', '1 234') === 5);\n// console.log(getNewCaretPosition(6, '1 234', '12 345') === 6);\n// console.log(getNewCaretPosition(2, '1 234', '10 234') === 2);\n// console.log(getNewCaretPosition(3, '1 234', '10 234') === 2);\n// console.log(getNewCaretPosition(1, '1 234', '21 234') === 1);\n// console.log(getNewCaretPosition(8, '123 456', '123 456.') === 8);\n// console.log(getNewCaretPosition(8, '123 456', '1 234 567') === 9);\n// console.log(getNewCaretPosition(5, '123 456', '1 230 456') === 5);\n// console.log(getNewCaretPosition(4, '123 456', '1 230 456') === 5);\n//\n// console.log(getNewCaretPosition(0, '1', '') === 0);\n// console.log(getNewCaretPosition(1, '12', '1') === 1);\n// console.log(getNewCaretPosition(2, '123', '12') === 2);\n// console.log(getNewCaretPosition(4, '1 234', '123') === 3);\n// console.log(getNewCaretPosition(5, '12 345', '1 234') === 5);\n// console.log(getNewCaretPosition(1, '10 234', '1 234') === 1);\n// console.log(getNewCaretPosition(2, '10 234', '10 234') === 2);\n// console.log(getNewCaretPosition(0, '21 234', '1 234') === 0);\n// console.log(getNewCaretPosition(7, '123 456.', '123 456') === 7);\n// console.log(getNewCaretPosition(8, '1 234 567', '123 456') === 7);\n// console.log(getNewCaretPosition(5, '1 230 456', '1 230 456') === 5);\n// console.log(getNewCaretPosition(4, '1 230 456', '123 456') === 3);\n//\n// console.log(getNewCaretPosition(6, '1 234 567', '123 467') === 5);\n// console.log(getNewCaretPosition(5, '1 234 567', '1 234') === 5);\n// };\n//\n// testNewCaretPosition();\n","import { FocusEvent, forwardRef, KeyboardEvent, useState } from 'react';\nimport { isStringNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport {\n formatNumber,\n formatStringNumber,\n getNumberInRange,\n removeStringFormat,\n setCaretPosition,\n stringToNumber,\n} from '../../helpers';\nimport { useDidMountEffect } from '../../hooks';\nimport { IChangeInputEvent, IInputProps, Input } from '../Input';\nimport { constructRegExp, formatNumberWithDefault, getNewCaretPosition } from './helpers';\n\nexport interface INumberInputProps extends Omit<IInputProps, 'value' | 'onChange' | 'type'> {\n value?: number;\n /** @default 3 */\n precision?: number;\n /** @default 7 */\n intPartPrecision?: number;\n defaultValue?: number;\n /** @default false */\n canBeFloat?: boolean;\n /** @default false */\n canBeNegative?: boolean;\n min?: number;\n max?: number;\n onChange: (value: number | undefined, event?: IChangeInputEvent) => void;\n}\n\nexport const NumberInput = forwardRef<HTMLInputElement, INumberInputProps>(function NumberInput(\n {\n value,\n canBeFloat = false,\n canBeNegative = false,\n defaultValue,\n precision = 3,\n intPartPrecision = 7,\n onChange,\n onBlur,\n min,\n max,\n ...props\n },\n ref,\n) {\n const [showedValue, setShowedValue] = useState(() =>\n formatNumberWithDefault(value, defaultValue),\n );\n\n // специальный костыль для обработки Delete - т.к. без него каретка будет работать неправильно при удалении пробелов\n const [isDeleteForwardAction, setIsDeleteForwardAction] = useState(false);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n setIsDeleteForwardAction(event.key === 'Delete');\n };\n\n const setShowedValueWithDefault = (v: string) => {\n setShowedValue(isStringNotEmpty(v) ? v : formatNumber(defaultValue));\n };\n\n const handleChange = async (inputValue: string, event: IChangeInputEvent): Promise<void> => {\n const oldValue = showedValue;\n const target = event.target as HTMLInputElement;\n const defaultCaretPos = target.selectionStart ?? 0;\n const numString = removeStringFormat(inputValue);\n\n if (numString === '') {\n onChange(undefined);\n // не убирать - ломается каретка\n setShowedValue('');\n return;\n }\n\n const numberRegexp = new RegExp(\n constructRegExp({\n precision,\n intPartPrecision,\n canBeNegative,\n canBeFloat,\n }),\n );\n\n if (!numberRegexp.test(numString)) {\n await setShowedValue(oldValue);\n setCaretPosition(target, defaultCaretPos - 1);\n return;\n }\n\n const hasDot = canBeFloat && /^[-]*[\\d\\s]*[.,]$/.test(inputValue);\n const formattedValue = formatStringNumber(numString);\n const newValue = hasDot ? `${formattedValue}.` : formattedValue;\n await setShowedValue(newValue);\n setCaretPosition(\n target,\n getNewCaretPosition(defaultCaretPos, oldValue, newValue, isDeleteForwardAction),\n );\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>): void => {\n const val = event.currentTarget.value;\n const num = stringToNumber(val);\n const newValue = num !== undefined ? getNumberInRange(num, min, max) : undefined;\n if (newValue !== value) {\n onChange(newValue);\n } else {\n setShowedValueWithDefault(formatNumber(value));\n }\n if (onBlur !== undefined) {\n onBlur(event);\n }\n };\n\n useDidMountEffect(() => {\n if (value !== undefined) {\n setShowedValueWithDefault(formatNumber(value));\n } else {\n setShowedValue(formatNumber(value));\n }\n }, [value]);\n\n return (\n <Input\n value={showedValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n ref={ref}\n {...props}\n />\n );\n});\n","import { colors, ITweakStyles, createThemedStyles, animations } from '../../theme';\nimport { IButtonStyles } from '../Button';\nimport type { IFilterWrapperStyles } from './components';\n\nexport const FILTER_HEIGHT = 36;\n\nexport const useStyles = createThemedStyles('FiltersPane', {\n root: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: 8,\n width: '100%',\n },\n\n settings: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 18,\n boxSizing: 'border-box',\n width: 40,\n height: FILTER_HEIGHT,\n cursor: 'pointer',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color',\n },\n\n settingsIcon: {\n width: 16,\n height: 16,\n },\n\n clear: {\n display: 'flex',\n alignItems: 'center',\n height: FILTER_HEIGHT,\n },\n\n filterWithClearButton: {\n display: 'flex',\n gap: 16,\n minWidth: 0,\n },\n});\n\nexport const clearButtonStyles: IButtonStyles = {\n s: {\n paddingLeft: 0,\n paddingRight: 0,\n minWidth: 'unset',\n },\n\n text: {\n background: 'none',\n color: colors.GREY_ACTIVE,\n\n '&:hover, &:focus': {\n color: colors.FONT_MEDIUM,\n },\n\n '&:active': {\n color: colors.FONT_MAIN,\n },\n\n '&:hover, &:focus, &:active': {\n background: 'none',\n borderColor: 'transparent',\n },\n },\n};\n\nexport const innerTextButtonStyles: IButtonStyles = {\n text: {\n color: colors.GREY_ACTIVE,\n\n '&:hover, &:focus': {\n color: colors.FONT_MEDIUM,\n },\n\n '&:active': {\n color: colors.FONT_MEDIUM,\n },\n },\n};\n\nexport type IFiltersPaneStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakClearButton: IButtonStyles;\n tweakFilterWrapper: IFilterWrapperStyles;\n }\n>;\n","import { colors, createThemedStyles, ITweakStyles } from '../../../../theme';\nimport { IButtonStyles } from '../../../Button';\nimport { IInputStyles } from '../../../Input';\nimport { innerTextButtonStyles } from '../../FiltersPane.styles';\n\nexport const useStyles = createThemedStyles('FilterInterval', {\n root: {\n padding: 8,\n background: colors.CLASSIC_WHITE,\n },\n\n inputWrapper: {\n padding: [4, 12],\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gap: 20,\n marginBottom: 12,\n },\n\n autosize: {\n minWidth: 120,\n height: 0,\n opacity: 0,\n paddingRight: 16,\n fontSize: 16,\n whiteSpace: 'pre',\n userSelect: 'none',\n pointerEvents: 'none',\n },\n\n clear: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n});\n\nexport const inputStyles: IInputStyles = {\n input: {\n minWidth: 120,\n },\n\n tweakControlWrapper: {\n icon: {\n padding: 0,\n width: 24,\n\n '&:last-child': {\n paddingRight: 0,\n },\n },\n },\n};\n\nexport const clearButtonStyles = structuredClone(innerTextButtonStyles);\n\nexport type IFilterIntervalStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakInput: IInputStyles;\n tweakClearButton: IButtonStyles;\n }\n>;\n","import { FC, useMemo } from 'react';\nimport { getTestId, addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Button } from '../../../Button';\nimport { NumberInput } from '../../../NumberInput';\nimport { getLocale, sortValues } from '../../helpers';\nimport { IFilterLocaleKey, IFilterNumberInputProps, IPartialFilterLocale } from '../../types';\nimport {\n clearButtonStyles,\n IFilterIntervalStyles,\n inputStyles,\n useStyles,\n} from './FilterInterval.styles';\n\nexport interface IFilterIntervalProps extends ICommonProps<IFilterIntervalStyles> {\n value?: Array<number | undefined>;\n onChange: (value?: Array<number | undefined>) => void;\n labelName: string;\n localeKey?: IFilterLocaleKey;\n locale?: IPartialFilterLocale;\n withFieldNameInLabel?: boolean;\n canBeFloat?: boolean;\n fromInput?: IFilterNumberInputProps;\n toInput?: IFilterNumberInputProps;\n}\n\nexport const FilterInterval: FC<IFilterIntervalProps> = ({\n data,\n tweakStyles,\n value,\n labelName,\n withFieldNameInLabel,\n localeKey,\n locale,\n canBeFloat,\n onChange,\n fromInput,\n toInput,\n testId,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);\n\n const handleClear = () => {\n onChange(undefined);\n };\n\n const handleFromChange = (v?: number) => {\n if (v === undefined && value?.[1] === undefined) {\n onChange(undefined);\n return;\n }\n onChange(sortValues([v, value?.[1]]));\n };\n\n const handleToChange = (v?: number) => {\n if (v === undefined && value?.[0] === undefined) {\n onChange(undefined);\n return;\n }\n onChange(sortValues([value?.[0], v]));\n };\n\n const tweakInputStyles = useTweakStyles({\n innerStyles: inputStyles,\n tweakStyles,\n className: 'tweakInput',\n currentComponentName: 'FilterInterval',\n });\n\n const tweakClearButtonStyles = useTweakStyles({\n innerStyles: clearButtonStyles,\n tweakStyles,\n className: 'tweakClearButton',\n currentComponentName: 'FilterInterval',\n });\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n <div className={classes.inputWrapper}>\n <div>\n <NumberInput\n onChange={handleFromChange}\n value={value?.[0]}\n label={\n withFieldNameInLabel\n ? `${labelName} ${translates.from.toLocaleLowerCase()}`\n : translates.from\n }\n canBeFloat={canBeFloat}\n isClearable\n tweakStyles={tweakInputStyles}\n testId={getTestId(testId, 'start')}\n {...fromInput}\n />\n {withFieldNameInLabel && (\n <div className={classes.autosize}>\n {labelName}&nbsp;{translates.from}\n </div>\n )}\n </div>\n <div>\n <NumberInput\n onChange={handleToChange}\n value={value?.[1]}\n label={\n withFieldNameInLabel\n ? `${labelName} ${translates.to.toLocaleLowerCase()}`\n : translates.to\n }\n canBeFloat={canBeFloat}\n isClearable\n tweakStyles={tweakInputStyles}\n testId={getTestId(testId, 'end')}\n {...toInput}\n />\n {withFieldNameInLabel && (\n <div className={classes.autosize}>\n {labelName}&nbsp;{translates.to}\n </div>\n )}\n </div>\n </div>\n <div className={classes.clear}>\n <Button\n onClick={handleClear}\n size=\"s\"\n view=\"text\"\n testId={getTestId(testId, 'clear-button')}\n tweakStyles={tweakClearButtonStyles}\n >\n {translates.clear}\n </Button>\n </div>\n </div>\n );\n};\n","import type { IMultiSelectLocale, IMultiSelectLocaleKey } from './types';\n\nexport const MultiSelectLocales: Record<string, IMultiSelectLocale> = {\n ru: {\n clear: 'Очистить',\n all: 'Все',\n chosen: 'Выбранные',\n nothingFound: 'Не найдено',\n searchPlaceholder: 'Поиск',\n },\n\n en: {\n clear: 'Clear',\n all: 'All',\n chosen: 'Chosen',\n nothingFound: 'Nothing found',\n searchPlaceholder: 'Search',\n },\n};\n\nexport const DEFAULT_LOCALE: IMultiSelectLocaleKey = 'en';\n","import { merge } from '@true-engineering/true-react-platform-helpers';\nimport { DEFAULT_LOCALE, MultiSelectLocales } from './constants';\nimport type { IMultiSelectLocale, IMultiSelectLocaleKey } from './types';\n\nexport const defaultConvertFunction = (val: unknown): string => String(val);\n\nexport const getLocale = (\n key: IMultiSelectLocaleKey = DEFAULT_LOCALE,\n custom?: Partial<IMultiSelectLocale>,\n custom2?: Partial<IMultiSelectLocale>,\n): IMultiSelectLocale => merge(MultiSelectLocales[key], custom, custom2);\n","import { colors, createThemedStyles, helpers, ITweakStyles } from '../../theme';\nimport { IButtonStyles } from '../Button';\nimport { ICheckboxStyles } from '../Checkbox';\nimport { ISearchInputStyles } from '../SearchInput';\n\nconst ITEM_HEIGHT = 40;\nconst TOP_GAP = 12;\n\nexport const useStyles = createThemedStyles('MultiSelectList', {\n root: {\n width: 220,\n background: colors.CLASSIC_WHITE,\n },\n\n list: {\n paddingTop: TOP_GAP,\n maxHeight: ITEM_HEIGHT * 5 + TOP_GAP,\n overscrollBehavior: 'contain',\n ...helpers.withScrollBar,\n },\n\n label: {\n boxSizing: 'border-box',\n fontSize: 14,\n padding: [12, 16],\n userSelect: 'none',\n display: 'flex',\n alignItems: 'center',\n color: colors.FONT_LABEL,\n },\n\n labelChosen: {\n fontWeight: 'bold',\n color: colors.FONT_MAIN,\n padding: [4, 16, 12],\n },\n\n withoutTopGap: {\n paddingTop: 0,\n },\n\n item: {\n boxSizing: 'border-box',\n padding: 0,\n maxWidth: '100%',\n fontSize: 14,\n },\n\n option: {\n display: 'inline-block',\n userSelect: 'none',\n maxWidth: '100%',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n\n panel: {\n display: 'flex',\n padding: [0, 6, 8],\n },\n\n clear: {\n marginLeft: 'auto',\n },\n\n selectedItem: {},\n\n preloader: {\n width: 80,\n height: ITEM_HEIGHT,\n margin: 'auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n dropdownInput: {\n borderBottom: [1, 'solid', colors.BORDER_MAIN],\n },\n\n nothingFound: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n padding: 16,\n fontSize: 14,\n },\n});\n\nexport const searchInputStyles: ISearchInputStyles = {\n tweakInput: {\n tweakControlWrapper: {\n controlWrapper: {\n '--control-height': '40px',\n backgroundColor: 'transparent',\n border: 'none',\n },\n },\n },\n};\n\nexport const checkboxStyles: ICheckboxStyles = {\n root: {\n padding: [11, 16],\n boxSizing: 'border-box',\n width: '100%',\n },\n\n children: {\n marginRight: 'auto',\n overflow: 'hidden',\n },\n};\n\nexport const clearButtonStyles: IButtonStyles = {\n text: {\n color: colors.GREY_ACTIVE,\n\n '&:hover, &:focus': {\n color: colors.FONT_MEDIUM,\n },\n\n '&:active': {\n color: colors.FONT_MEDIUM,\n },\n },\n};\n\nexport type IMultiSelectListStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakSearchInput: ISearchInputStyles;\n tweakCheckbox: ICheckboxStyles;\n tweakClearButton: IButtonStyles;\n }\n>;\n","import { useEffect, useState, useMemo, useRef, useCallback, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { debounce } from 'ts-debounce';\nimport {\n addDataAttributes,\n addDataTestId,\n getTestId,\n isArrayNotEmpty,\n isNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useIsMounted, useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { Button } from '../Button';\nimport { Checkbox, ICheckboxProps } from '../Checkbox';\nimport { SearchInput } from '../SearchInput';\nimport { ThemedPreloader } from '../ThemedPreloader';\nimport { DEFAULT_LOCALE, MultiSelectLocales } from './constants';\nimport { defaultConvertFunction, getLocale } from './helpers';\nimport { IMultiSelectListValues, IMultiSelectLocale, IMultiSelectLocaleKey } from './types';\nimport {\n useStyles,\n IMultiSelectListStyles,\n checkboxStyles,\n searchInputStyles,\n clearButtonStyles,\n} from './MultiSelectList.styles';\n\nexport interface IMultiSelectListProps<Value, Option> extends ICommonProps<IMultiSelectListStyles> {\n value?: Value;\n /** @default false */\n isSearchEnabled?: boolean;\n localeKey?: IMultiSelectLocaleKey;\n locale?: Partial<IMultiSelectLocale>;\n onClose?: () => void;\n onChange: (val?: Value) => void;\n options?: Option[];\n fetchOptions?: (val?: string, page?: number) => Promise<Option[]>;\n getValueView?: (val: Option) => ReactNode;\n getValueId?: (val: Option) => string;\n getValueString?: (val: Option) => string;\n /** @default по умолчанию значение совпадает с isSearchEnabled */\n isGroupingEnabled?: boolean;\n /** @default 'left' */\n checkboxPosition?: 'left' | 'right';\n pageSize?: number;\n searchMaxLength?: number;\n}\n\nexport function MultiSelectList<Value extends IMultiSelectListValues<Option>, Option = string>({\n value,\n tweakStyles,\n data,\n isSearchEnabled = false,\n localeKey = DEFAULT_LOCALE,\n locale = MultiSelectLocales[localeKey],\n onChange,\n onClose,\n options,\n fetchOptions,\n isGroupingEnabled = isSearchEnabled,\n getValueView = defaultConvertFunction,\n getValueId = defaultConvertFunction,\n getValueString = defaultConvertFunction,\n checkboxPosition = 'left',\n pageSize,\n searchMaxLength,\n testId,\n}: IMultiSelectListProps<Value, Option>): JSX.Element {\n const isMounted = useIsMounted();\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakCheckboxStyles = useTweakStyles({\n innerStyles: checkboxStyles,\n tweakStyles,\n className: 'tweakCheckbox',\n currentComponentName: 'MultiSelectList',\n });\n\n const tweakSearchInputStyles = useTweakStyles({\n innerStyles: searchInputStyles,\n tweakStyles,\n className: 'tweakSearchInput',\n currentComponentName: 'MultiSelectList',\n });\n\n const tweakClearButtonStyles = useTweakStyles({\n innerStyles: clearButtonStyles,\n tweakStyles,\n className: 'tweakClearButton',\n currentComponentName: 'MultiSelectList',\n });\n\n const [keyCursorOn, setKeyCursorOn] = useState(0);\n const [searchValue, setSearchValue] = useState('');\n // Опции, которые получаем с бека при изменении строки поиска\n const [allOptions, setAllOptions] = useState<Option[]>([]);\n\n const [isLoading, setIsLoading] = useState(false);\n const [isLoadingOptionsOnScroll, setLoadingOptionsOnScroll] = useState(false);\n\n const [activePage, setActivePage] = useState(0);\n const [isMaxPage, setIsMaxPage] = useState(false);\n\n const observer = useRef<IntersectionObserver>();\n\n const chosenValues = value?.include;\n\n const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);\n const chosenValuesIds = useMemo(() => chosenValues?.map(getValueId), [getValueId, chosenValues]);\n\n const unchosenOptions = useMemo(\n () => allOptions.filter((v) => !chosenValuesIds?.includes(getValueId(v))),\n [getValueId, allOptions, chosenValuesIds],\n );\n\n const handleSearchInputChange = useCallback(\n async (inputValue?: string) => {\n if (fetchOptions === undefined) {\n return;\n }\n setIsLoading(true);\n\n try {\n const response = await fetchOptions(inputValue?.trim() ?? '');\n if (isMounted() && response !== undefined) {\n setAllOptions(response);\n setActivePage(0);\n setIsMaxPage(\n response.length === 0 || (pageSize !== undefined && response.length < pageSize),\n );\n }\n } finally {\n if (isMounted()) {\n setIsLoading(false);\n }\n }\n },\n [fetchOptions, pageSize],\n );\n\n const changeSearchValue = useCallback(debounce(handleSearchInputChange), [\n handleSearchInputChange,\n ]);\n\n function handleOnChange(inputValue: string) {\n setSearchValue(inputValue);\n\n if (fetchOptions === undefined) {\n if (options !== undefined) {\n const lowerSearchValue = inputValue.toLowerCase();\n setAllOptions(\n options.filter((o) => getValueString(o).toLowerCase().includes(lowerSearchValue)),\n );\n }\n } else {\n setIsLoading(true);\n changeSearchValue(inputValue);\n }\n }\n\n const handleSelectValue = (val: Option[]) => {\n if (val.length === 0) {\n onChange(undefined);\n return;\n }\n\n onChange({\n include: val,\n } as Value);\n };\n\n const handleClear = () => {\n onChange(undefined);\n };\n\n const onSelect: ICheckboxProps<Option>['onSelect'] = ({ value: checkboxValue, isSelected }) => {\n if (isNotEmpty(checkboxValue)) {\n handleSelectValue(\n isSelected\n ? [...(chosenValues ?? []), checkboxValue]\n : chosenValues?.filter((v) => getValueId(v) !== getValueId(checkboxValue)) ?? [],\n );\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n // TODO: это все очень плохо работает\n if (event.code === 'Escape') {\n onChange(value);\n if (onClose) {\n onClose();\n }\n }\n if (event.code === 'ArrowDown') {\n if (keyCursorOn < unchosenOptions.length + (value?.include.length ?? 0) - 1) {\n setKeyCursorOn(keyCursorOn + 1);\n }\n }\n if (event.code === 'ArrowUp') {\n if (keyCursorOn >= 1) {\n setKeyCursorOn(keyCursorOn - 1);\n }\n }\n if (event.code === 'Enter') {\n if (\n unchosenOptions[keyCursorOn] === undefined &&\n (value === undefined || value.include.length === 0)\n ) {\n return;\n }\n if (value !== undefined) {\n if (keyCursorOn < value.include.length) {\n onChange({\n ...value,\n include:\n value.include.filter(\n (val) => getValueId(val) !== getValueId(value.include[keyCursorOn]),\n ) ?? [],\n });\n } else {\n onChange({\n ...value,\n include: [...value.include, unchosenOptions[keyCursorOn - value.include.length]],\n });\n }\n } else {\n onChange({\n include: [unchosenOptions[keyCursorOn]],\n } as Value);\n }\n }\n };\n\n const getIsValueChosen = (id: string) => chosenValues?.some((v) => getValueId(v) === id);\n\n const handleLoadItemsOnScroll = useCallback(\n async (inputValue?: string, page?: number) => {\n if (fetchOptions === undefined) {\n return;\n }\n\n setLoadingOptionsOnScroll(true);\n\n try {\n const response = await fetchOptions(inputValue ?? '', page ?? 0);\n if (isMounted()) {\n if (response.length > 0) {\n setAllOptions((prevState) => [...prevState, ...response]);\n }\n if (response.length === 0 || (pageSize !== undefined && response.length < pageSize)) {\n setIsMaxPage(true);\n }\n }\n } finally {\n if (isMounted()) {\n setLoadingOptionsOnScroll(false);\n }\n }\n },\n [fetchOptions, getValueId],\n );\n\n const initIntersectionObserver = useCallback(\n (node: HTMLDivElement) => {\n if (isLoadingOptionsOnScroll || isMaxPage) {\n return;\n }\n\n if (observer.current) {\n observer.current.disconnect();\n }\n\n observer.current = new IntersectionObserver(async (entries) => {\n if (entries[0].isIntersecting) {\n await handleLoadItemsOnScroll(searchValue, activePage + 1);\n if (isMounted()) {\n setActivePage((prevState) => prevState + 1);\n }\n }\n });\n\n if (node) {\n observer.current.observe(node);\n }\n },\n [activePage, handleLoadItemsOnScroll, isLoadingOptionsOnScroll, isMaxPage, searchValue],\n );\n\n useEffect(() => {\n if (fetchOptions === undefined) {\n setAllOptions(options ?? []);\n return;\n }\n\n const doFetchOptions = async () => {\n setIsLoading(true);\n\n try {\n const response = await fetchOptions('');\n if (response !== undefined && isMounted()) {\n if (response.length === 0 || (pageSize !== undefined && response.length < pageSize)) {\n setIsMaxPage(true);\n }\n setAllOptions(response);\n }\n } finally {\n if (isMounted()) {\n setIsLoading(false);\n }\n }\n };\n doFetchOptions();\n }, []);\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown, false);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown, false);\n };\n });\n\n const mainOptionsList = isGroupingEnabled ? unchosenOptions : allOptions;\n\n const hasSelectedOptionsGroup = isGroupingEnabled && isArrayNotEmpty(chosenValues);\n\n const shouldShowNothingFoundMessage = !isLoading && !isArrayNotEmpty(allOptions);\n\n const shouldShowAllOptionsLabel =\n hasSelectedOptionsGroup && (isArrayNotEmpty(unchosenOptions) || !isArrayNotEmpty(allOptions));\n\n const shouldShowPreloader = isLoading || isLoadingOptionsOnScroll;\n\n const shouldShowOptionsList =\n !isLoading && (isArrayNotEmpty(allOptions) || isArrayNotEmpty(chosenValues));\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n {isSearchEnabled && (\n <div className={classes.dropdownInput}>\n <SearchInput\n value={searchValue}\n placeholder={translates.searchPlaceholder}\n onChange={handleOnChange}\n tweakStyles={tweakSearchInputStyles}\n maxLength={searchMaxLength}\n testId={getTestId(testId, 'search')}\n shouldFocusOnMount\n />\n </div>\n )}\n {shouldShowOptionsList && (\n <div className={classes.list} {...addDataTestId(testId, 'list')}>\n {/* Выбранные */}\n {hasSelectedOptionsGroup && (\n <>\n <div\n className={clsx(\n classes.label,\n classes.labelChosen,\n !isSearchEnabled && classes.withoutTopGap,\n )}\n >\n {translates.chosen}\n </div>\n {chosenValues?.map((val) => {\n const id = getValueId(val);\n const view = getValueView(val);\n\n return (\n <div\n className={clsx(\n classes.item,\n // keyCursorOn === index && classes.selectedItem,\n )}\n key={id}\n >\n <Checkbox\n onSelect={onSelect}\n isChecked\n value={val}\n tweakStyles={tweakCheckboxStyles}\n labelPosition={checkboxPosition === 'left' ? 'right' : 'left'}\n data={{ id }}\n >\n <div className={classes.option} {...addDataAttributes({ option: id })}>\n {view}\n </div>\n </Checkbox>\n </div>\n );\n })}\n </>\n )}\n\n {!isLoading && (\n <>\n {/* Не выбранные (или все если нет группировки) */}\n {shouldShowAllOptionsLabel && <div className={classes.label}>{translates.all}</div>}\n\n {mainOptionsList.map((val, index) => {\n const id = getValueId(val);\n const view = getValueView(val);\n\n return (\n <div\n className={clsx(\n classes.item,\n // keyCursorOn === index + (value?.include.length ?? 0) &&\n // classes.selectedItem,\n )}\n ref={\n mainOptionsList.length - 1 === index ? initIntersectionObserver : undefined\n }\n key={id}\n >\n <Checkbox\n onSelect={onSelect}\n isChecked={getIsValueChosen(id)}\n value={val}\n tweakStyles={tweakCheckboxStyles}\n labelPosition={checkboxPosition === 'left' ? 'right' : 'left'}\n data={{ id }}\n >\n <div className={classes.option} {...addDataAttributes({ option: id })}>\n {view}\n </div>\n </Checkbox>\n </div>\n );\n })}\n </>\n )}\n </div>\n )}\n\n {/* Preloader */}\n {shouldShowPreloader && (\n <div className={classes.preloader}>\n <ThemedPreloader type=\"dots\" />\n </div>\n )}\n\n {/* Nothing found */}\n {shouldShowNothingFoundMessage && (\n <div className={classes.nothingFound}>{translates.nothingFound}</div>\n )}\n\n {/* Controls */}\n <div className={classes.panel}>\n <div className={classes.clear}>\n <Button\n onClick={handleClear}\n size=\"s\"\n view=\"text\"\n testId={getTestId(testId, 'clear-button')}\n tweakStyles={tweakClearButtonStyles}\n >\n {translates.clear}\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import { IMultiSelectListProps, MultiSelectList } from '../../../MultiSelectList';\nimport { IFilterMultiSelectValues } from '../../types';\n\nexport type IFilterMultiSelectProps<Value, Option = string> = IMultiSelectListProps<Value, Option>;\n\nexport function FilterMultiSelect<Value extends IFilterMultiSelectValues<Option>, Option = string>(\n props: IFilterMultiSelectProps<Value, Option>,\n): JSX.Element {\n return <MultiSelectList {...props} />;\n}\n","import { animations, colors, createThemedStyles, helpers, ITweakStyles } from '../../../../theme';\nimport { IButtonStyles } from '../../../Button';\nimport { ISearchInputStyles } from '../../../SearchInput';\nimport { innerTextButtonStyles } from '../../FiltersPane.styles';\n\nconst ITEM_HEIGHT = 40;\nconst LIST_GAP = 12;\n\nexport const useStyles = createThemedStyles('FilterSelect', {\n root: {\n width: 220,\n background: colors.CLASSIC_WHITE,\n },\n\n list: {\n paddingTop: LIST_GAP,\n padding: [LIST_GAP, 0],\n maxHeight: ITEM_HEIGHT * 5 + LIST_GAP * 2,\n overscrollBehavior: 'contain',\n ...helpers.withScrollBar,\n },\n\n label: {\n boxSizing: 'border-box',\n fontSize: 14,\n padding: [12, 16],\n userSelect: 'none',\n display: 'flex',\n alignItems: 'center',\n color: colors.FONT_LABEL,\n },\n\n labelChosen: {\n fontWeight: 'bold',\n color: colors.FONT_MAIN,\n padding: [4, 16, 12],\n },\n\n withoutTopGap: {\n paddingTop: 0,\n },\n\n withClearButton: {\n paddingBottom: 0,\n maxHeight: ITEM_HEIGHT * 5 + LIST_GAP,\n },\n\n item: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: [10, 16],\n maxWidth: '100%',\n cursor: 'pointer',\n fontSize: 14,\n minHeight: ITEM_HEIGHT,\n transition: animations.defaultTransition,\n transitionProperty: 'background-color',\n boxSizing: 'border-box',\n },\n\n option: {\n display: 'inline-block',\n userSelect: 'none',\n width: '100%',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n\n icon: {\n width: 20,\n height: 20,\n marginRight: 4,\n alignSelf: 'center',\n flexShrink: 0,\n },\n\n panel: {\n display: 'flex',\n padding: [0, 6, 8],\n gap: 8,\n },\n\n panelWithFooter: {\n borderTop: [1, 'solid', colors.BORDER_MAIN],\n padding: [8, 16],\n },\n\n footer: {\n wordBreak: 'break-word',\n alignSelf: 'center',\n },\n\n clear: {\n marginLeft: 'auto',\n alignSelf: 'center',\n },\n\n preloader: {\n width: 80,\n height: ITEM_HEIGHT,\n margin: 'auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n dropdownInput: {\n borderBottom: [1, 'solid', colors.BORDER_MAIN],\n },\n\n nothingFound: {\n display: 'flex',\n alignItems: 'center',\n textAlign: 'center',\n padding: 16,\n fontSize: 14,\n },\n});\n\nexport const searchInputStyles: ISearchInputStyles = {\n tweakInput: {\n tweakControlWrapper: {\n controlWrapper: {\n '--control-height': '40px',\n backgroundColor: 'transparent',\n border: 'none',\n },\n },\n },\n};\n\nexport const clearButtonStyles = structuredClone(innerTextButtonStyles);\n\nexport type IFilterSelectStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakSearchInput: ISearchInputStyles;\n tweakClearButton: IButtonStyles;\n }\n>;\n","import { ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport { debounce } from 'ts-debounce';\nimport {\n addDataTestId,\n getTestId,\n isReactNodeNotEmpty,\n addDataAttributes,\n isArrayNotEmpty,\n isNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useIsMounted, useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Button } from '../../../Button';\nimport { Icon } from '../../../Icon';\nimport { ScrollIntoViewIfNeeded } from '../../../ScrollIntoViewIfNeeded';\nimport { SearchInput } from '../../../SearchInput';\nimport { ThemedPreloader } from '../../../ThemedPreloader';\nimport { defaultConvertFunction, getSelectLocale } from '../../helpers';\nimport { IFilterLocaleKey, ISelectLocale } from '../../types';\nimport {\n useStyles,\n IFilterSelectStyles,\n searchInputStyles,\n clearButtonStyles,\n} from './FilterSelect.styles';\n\nexport interface IFilterSelectProps<Value> extends ICommonProps<IFilterSelectStyles> {\n value?: Value;\n onChange: (value?: Value) => void;\n onClose?: () => void;\n /**\n * @default false\n */\n isSearchEnabled?: boolean;\n /**\n * @default false\n */\n isGroupingEnabled?: boolean;\n localeKey?: IFilterLocaleKey;\n locale?: Partial<ISelectLocale>;\n options?: Value[];\n footer?: ReactNode;\n fetchOptions?: (value?: string, page?: number) => Promise<Value[]>;\n getValueString?: (value: Value) => string;\n getValueView?: (value: Value) => ReactNode;\n getValueId?: (value: Value) => string;\n /**\n * @default true\n */\n hasClearButton?: boolean;\n}\n\nexport function FilterSelect<Value>({\n data,\n tweakStyles,\n value,\n isSearchEnabled = false,\n isGroupingEnabled = false,\n localeKey,\n locale,\n onChange,\n onClose,\n options,\n fetchOptions,\n footer,\n getValueView = defaultConvertFunction,\n getValueId = defaultConvertFunction,\n getValueString = defaultConvertFunction,\n hasClearButton = true,\n testId,\n}: IFilterSelectProps<Value>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakSearchInputStyles = useTweakStyles({\n innerStyles: searchInputStyles,\n tweakStyles,\n className: 'tweakSearchInput',\n currentComponentName: 'FilterSelect',\n });\n\n const tweakClearButtonStyles = useTweakStyles({\n innerStyles: clearButtonStyles,\n tweakStyles,\n className: 'tweakClearButton',\n currentComponentName: 'FilterSelect',\n });\n\n const isMounted = useIsMounted();\n\n const translates = useMemo(() => getSelectLocale(localeKey, locale), [localeKey, locale]);\n\n const observer = useRef<IntersectionObserver>();\n\n const [searchValue, setSearchValue] = useState('');\n const [allOptions, setAllOptions] = useState<Value[]>([]);\n\n const [activePage, setActivePage] = useState(0);\n const [isMaxPage, setIsMaxPage] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isLoadingOptionsOnScroll, setLoadingOptionsOnScroll] = useState(false);\n\n const shouldShowPreloader = isLoading || isLoadingOptionsOnScroll;\n const hasFooter = isReactNodeNotEmpty(footer);\n\n const handleSearchInputChange = useCallback(\n async (inputValue?: string) => {\n if (fetchOptions === undefined) {\n return;\n }\n setIsLoading(true);\n\n try {\n const response = await fetchOptions(inputValue?.trim() ?? '');\n if (isMounted() && response !== undefined) {\n setAllOptions(response);\n setActivePage(0);\n setIsMaxPage(false);\n }\n } finally {\n if (isMounted()) {\n setIsLoading(false);\n }\n }\n },\n [fetchOptions],\n );\n\n const changeSearchValue = useMemo(\n () => debounce(handleSearchInputChange),\n [handleSearchInputChange],\n );\n\n const handleOnChange = (inputValue: string) => {\n setSearchValue(inputValue);\n if (fetchOptions === undefined) {\n if (options !== undefined) {\n const lowerSearchValue = inputValue.toLowerCase();\n setAllOptions(\n options.filter((o) => getValueString(o).toLowerCase().includes(lowerSearchValue)),\n );\n }\n } else {\n changeSearchValue(inputValue);\n }\n };\n\n const handleChange = (val?: Value) => {\n onChange(val);\n onClose?.();\n };\n\n const handleClear = () => {\n if (options !== undefined) {\n setAllOptions(options);\n }\n handleChange(undefined);\n setSearchValue('');\n };\n\n const handleLoadItemsOnScroll = useCallback(\n async (inputValue?: string, page?: number) => {\n if (fetchOptions === undefined) {\n return;\n }\n\n setLoadingOptionsOnScroll(true);\n\n try {\n const response = await fetchOptions(inputValue?.trim() ?? '', page ?? 0);\n\n if (isMounted()) {\n if (response.length > 0) {\n setAllOptions((prevState) => [...prevState, ...response]);\n } else {\n setIsMaxPage(true);\n }\n }\n } finally {\n if (isMounted()) {\n setLoadingOptionsOnScroll(false);\n }\n }\n },\n [fetchOptions],\n );\n\n const initIntersectionObserver = useCallback(\n (node: HTMLDivElement) => {\n if (isLoadingOptionsOnScroll || isMaxPage) {\n return;\n }\n\n if (observer.current) {\n observer.current.disconnect();\n }\n\n observer.current = new IntersectionObserver(async (entries) => {\n if (entries[0].isIntersecting) {\n await handleLoadItemsOnScroll(searchValue, activePage + 1);\n if (isMounted()) {\n setActivePage((prevState) => prevState + 1);\n }\n }\n });\n\n if (node) {\n observer.current.observe(node);\n }\n },\n [activePage, handleLoadItemsOnScroll, isLoadingOptionsOnScroll, isMaxPage, searchValue],\n );\n\n useEffect(() => {\n if (fetchOptions === undefined) {\n setAllOptions(options ?? []);\n return;\n }\n\n const doFetchOptions = async () => {\n setIsLoading(true);\n\n try {\n const response = await fetchOptions('');\n if (response !== undefined && isMounted()) {\n setAllOptions(response);\n }\n } finally {\n setIsLoading(false);\n }\n };\n doFetchOptions();\n }, []);\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n {isSearchEnabled && (\n <div className={classes.dropdownInput}>\n <SearchInput\n value={searchValue}\n placeholder={translates.searchPlaceholder}\n onChange={handleOnChange}\n tweakStyles={tweakSearchInputStyles}\n testId={getTestId(testId, 'search')}\n shouldFocusOnMount\n />\n </div>\n )}\n\n {!isLoading && (\n <>\n {isArrayNotEmpty(allOptions) && (\n <div\n className={clsx(classes.list, { [classes.withClearButton]: hasClearButton })}\n {...addDataTestId(testId, 'list')}\n >\n {isGroupingEnabled && isNotEmpty(value) && (\n <>\n <div\n className={clsx(classes.label, classes.labelChosen, {\n [classes.withoutTopGap]: !isSearchEnabled,\n })}\n >\n {translates.chosen}\n </div>\n <div className={classes.item} onClick={() => handleChange(undefined)}>\n <div className={classes.option}>{getValueView(value)}</div>\n <div className={classes.icon}>\n <Icon type=\"check\" />\n </div>\n </div>\n <div className={classes.label}>{translates.all}</div>\n </>\n )}\n {allOptions.map((item, index) => {\n const isActive = isNotEmpty(value) && getValueId(value) === getValueId(item);\n if (isGroupingEnabled && isActive) {\n return null;\n }\n const id = getValueId(item);\n const view = getValueView(item);\n\n const renderedItem = (\n <div\n key={id}\n className={classes.item}\n ref={\n allOptions.length - 1 === index && fetchOptions !== undefined\n ? initIntersectionObserver\n : undefined\n }\n onClick={() => handleChange(item)}\n >\n <div className={classes.option} {...addDataAttributes({ id, option: id })}>\n {view}\n </div>\n {isActive && (\n <div className={classes.icon}>\n <Icon type=\"check\" />\n </div>\n )}\n </div>\n );\n\n if (options !== undefined && searchValue === '') {\n return (\n <ScrollIntoViewIfNeeded key={id} active={isActive}>\n {renderedItem}\n </ScrollIntoViewIfNeeded>\n );\n } else {\n return renderedItem;\n }\n })}\n </div>\n )}\n\n {/* Preloader */}\n {shouldShowPreloader && (\n <div className={classes.preloader}>\n <ThemedPreloader type=\"dots\" />\n </div>\n )}\n\n {/* Nothing found */}\n {!isArrayNotEmpty(allOptions) && (\n <div className={classes.nothingFound}>{translates.nothingFound}</div>\n )}\n\n {/* Controls and footer */}\n {(hasClearButton || hasFooter) && (\n <div className={clsx(classes.panel, { [classes.panelWithFooter]: hasFooter })}>\n {hasFooter && <div className={classes.footer}>{footer}</div>}\n\n {hasClearButton && (\n <div className={classes.clear}>\n <Button\n onClick={handleClear}\n size=\"s\"\n view=\"text\"\n testId={getTestId(testId, 'clear-button')}\n tweakStyles={tweakClearButtonStyles}\n >\n {translates.clear}\n </Button>\n </div>\n )}\n </div>\n )}\n </>\n )}\n\n {isLoading && (\n <div className={classes.preloader}>\n <ThemedPreloader type=\"dots\" />\n </div>\n )}\n </div>\n );\n}\n","import { colors, createThemedStyles, ITweakStyles } from '../../../../theme';\nimport { IButtonStyles } from '../../../Button';\nimport { IDatePickerStyles } from '../../../DatePicker';\nimport { innerTextButtonStyles } from '../../FiltersPane.styles';\n\nexport const useStyles = createThemedStyles('FilterWithDates', {\n root: {\n width: 320,\n background: colors.CLASSIC_WHITE,\n position: 'relative',\n zIndex: 20,\n },\n\n container: {\n display: 'flex',\n gap: 20,\n padding: [8, 20],\n },\n\n containerItem: {\n width: '50%',\n height: 44,\n },\n\n btnRow: {\n display: 'flex',\n flexDirection: 'row-reverse',\n justifyContent: 'space-between',\n padding: 8,\n },\n\n datepicker: {},\n});\n\nexport const clearButtonStyles = structuredClone(innerTextButtonStyles);\n\nexport const backButtonStyles = innerTextButtonStyles;\n\nconst PICKER_TOP_MARGIN = 28;\nconst PICKER_WITH_BUTTONS_TOP_MARGIN = 56;\nconst START_PICKER_LEFT_MARGIN = -20;\nconst END_PICKER_LEFT_MARGIN = -170;\n\nexport const startDatePickerStyles: IDatePickerStyles = {\n popper: { marginTop: PICKER_TOP_MARGIN, marginLeft: START_PICKER_LEFT_MARGIN },\n};\n\nexport const startDatePickerWithButtonStyles: IDatePickerStyles = {\n popper: { marginTop: PICKER_WITH_BUTTONS_TOP_MARGIN, marginLeft: START_PICKER_LEFT_MARGIN },\n};\n\nexport const endDatePickerStyles: IDatePickerStyles = {\n popper: { marginTop: PICKER_TOP_MARGIN, marginLeft: END_PICKER_LEFT_MARGIN },\n};\n\nexport const endDatePickerWithButtonStyles: IDatePickerStyles = {\n popper: { marginTop: PICKER_WITH_BUTTONS_TOP_MARGIN, marginLeft: END_PICKER_LEFT_MARGIN },\n};\n\nexport type IFilterWithDatesStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakClearButton: IButtonStyles;\n tweakBackButton: IButtonStyles;\n tweakStartDatePicker: IDatePickerStyles;\n tweakEndDatePicker: IDatePickerStyles;\n }\n>;\n","import { FC, useMemo, useRef, useState } from 'react';\nimport { isAfter, isBefore } from 'date-fns';\nimport { enUS, ru } from 'date-fns/locale';\nimport {\n getTestId,\n isNotEmpty,\n addDataAttributes,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Button } from '../../../Button';\nimport { DatePicker } from '../../../DatePicker';\nimport { DEFAULT_PICKER_PROPS } from '../../constants';\nimport { getLocale } from '../../helpers';\nimport {\n IFilterLocaleKey,\n IFilterWithDateDatePickerProps,\n IFilterWithDatesValue,\n IPartialFilterLocale,\n} from '../../types';\nimport {\n backButtonStyles,\n clearButtonStyles,\n endDatePickerStyles,\n endDatePickerWithButtonStyles,\n IFilterWithDatesStyles,\n startDatePickerStyles,\n startDatePickerWithButtonStyles,\n useStyles,\n} from './FilterWithDates.styles';\n\nexport interface IFilterWithDatesProps extends ICommonProps<IFilterWithDatesStyles> {\n value?: IFilterWithDatesValue;\n localeKey?: IFilterLocaleKey;\n locale?: IPartialFilterLocale;\n isClearable?: boolean;\n startPickerProps?: IFilterWithDateDatePickerProps;\n endPickerProps?: IFilterWithDateDatePickerProps;\n onChange: (val: IFilterWithDatesValue) => void;\n onStartBtnSubmit?: () => void;\n onEndBtnSubmit: () => void;\n}\n\nexport const FilterWithDates: FC<IFilterWithDatesProps> = ({\n value,\n onChange,\n localeKey,\n locale,\n onStartBtnSubmit,\n onEndBtnSubmit,\n data,\n tweakStyles,\n testId,\n startPickerProps = DEFAULT_PICKER_PROPS,\n endPickerProps = DEFAULT_PICKER_PROPS,\n isClearable = true,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakClearButtonStyles = useTweakStyles({\n innerStyles: clearButtonStyles,\n tweakStyles,\n className: 'tweakClearButton',\n currentComponentName: 'FilterWithDates',\n });\n\n const tweakBackButtonStyles = useTweakStyles({\n innerStyles: backButtonStyles,\n tweakStyles,\n className: 'tweakBackButton',\n currentComponentName: 'FilterWithDates',\n });\n\n const hasButtonsRow = isClearable || isNotEmpty(onStartBtnSubmit);\n\n const tweakStartDatePickerStyles = useTweakStyles({\n innerStyles: hasButtonsRow ? startDatePickerWithButtonStyles : startDatePickerStyles,\n tweakStyles,\n className: 'tweakStartDatePicker',\n currentComponentName: 'FilterWithDates',\n });\n\n const tweakEndDatePickerStyles = useTweakStyles({\n innerStyles: hasButtonsRow ? endDatePickerWithButtonStyles : endDatePickerStyles,\n tweakStyles,\n className: 'tweakEndDatePicker',\n currentComponentName: 'FilterWithDates',\n });\n\n const [isOpenFrom, setOpenFrom] = useState(false);\n const [isOpenTo, setOpenTo] = useState(false);\n\n const ref = useRef<HTMLDivElement>(null);\n\n const dateLocale = localeKey === 'ru' ? ru : enUS;\n\n const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);\n\n const handleClear = () => {\n onEndBtnSubmit();\n };\n const isOpenCalendar = isOpenFrom || isOpenTo;\n\n const handleFromSelected = (val: Date | null) => {\n onChange({ from: val, to: value?.to ?? null });\n setOpenFrom(false);\n };\n\n const handleToSelected = (val: Date | null) => {\n onChange({ from: value?.from ?? null, to: val });\n setOpenTo(false);\n };\n\n const handleChangeFrom = (val: Date | null) => {\n // на самом деле ситуации когда надо переворачивать даты, произойти не может\n if (val !== null && value !== undefined && value.to !== null && isAfter(val, value.to)) {\n onChange({ from: value.to, to: val });\n } else {\n onChange({ from: val, to: value?.to ?? null });\n }\n };\n\n const handleChangeTo = (val: Date | null) => {\n // на самом деле ситуации когда надо переворачивать даты, произойти не может\n if (val !== null && value !== undefined && value.from !== null && isBefore(val, value.from)) {\n onChange({ from: val, to: value.from });\n } else {\n onChange({ from: value?.from ?? null, to: val });\n }\n };\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n <div className={classes.container}>\n <div className={classes.containerItem}>\n <DatePicker\n selectedDate={value?.from}\n maxDate={value?.to ?? undefined}\n label={translates.from}\n months={translates.months}\n locale={dateLocale}\n onChangeDate={handleChangeFrom}\n tweakStyles={tweakStartDatePickerStyles}\n testId={getTestId(testId, 'from')}\n isClearable={isClearable}\n {...startPickerProps}\n />\n </div>\n <div className={classes.containerItem}>\n <DatePicker\n selectedDate={value?.to}\n label={translates.to}\n months={translates.months}\n minDate={value?.from ?? undefined}\n locale={dateLocale}\n onChangeDate={handleChangeTo}\n tweakStyles={tweakEndDatePickerStyles}\n testId={getTestId(testId, 'to')}\n isClearable={isClearable}\n {...endPickerProps}\n />\n </div>\n </div>\n\n <div className={classes.btnRow}>\n {isClearable && (\n <div>\n <Button\n onClick={handleClear}\n size=\"s\"\n view=\"text\"\n testId={getTestId(testId, 'clear-button')}\n isFullWidth\n tweakStyles={tweakClearButtonStyles}\n >\n {translates.clear}\n </Button>\n </div>\n )}\n\n {onStartBtnSubmit && (\n <div>\n <Button\n onClick={onStartBtnSubmit}\n size=\"s\"\n view=\"text\"\n isFullWidth\n tweakStyles={tweakBackButtonStyles}\n >\n {translates.back}\n </Button>\n </div>\n )}\n </div>\n\n {isOpenCalendar && (\n <div ref={ref} className={classes.datepicker}>\n <DatePicker\n selectedDate={(isOpenFrom ? value?.from : value?.to) ?? null}\n label=\"\"\n locale={dateLocale}\n months={translates.months}\n isInline\n onChangeDate={isOpenFrom ? handleFromSelected : handleToSelected}\n />\n </div>\n )}\n </div>\n );\n};\n","import { createThemedStyles, ITweakStyles } from '../../../../theme';\nimport { IFilterSelectStyles } from '../FilterSelect';\n\nexport const useStyles = createThemedStyles('FilterWithPeriod', {\n root: {},\n\n main: {},\n\n picker: {},\n});\n\nexport const filterSelectStyles: IFilterSelectStyles = {\n list: {\n maxHeight: 'auto',\n },\n};\n\nexport type IFilterWithPeriodStyles = ITweakStyles<\n typeof useStyles,\n { tweakFilterSelect: IFilterSelectStyles }\n>;\n","import { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { getTestId } from '@true-engineering/true-react-platform-helpers';\nimport { useOnClickOutside, useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { PERIODS, PERIODS_GETTERS } from '../../constants';\nimport { getLocale } from '../../helpers';\nimport {\n IDatePeriod,\n IFilterLocaleKey,\n IPartialFilterLocale,\n IPeriod,\n IPeriodGetter,\n IPeriodsList,\n} from '../../types';\nimport { FilterSelect } from '../FilterSelect';\nimport { FilterWithDates } from '../FilterWithDates';\nimport { useStyles, IFilterWithPeriodStyles, filterSelectStyles } from './FilterWithPeriod.styles';\n\nexport interface IFilterWithPeriodProps extends ICommonProps<IFilterWithPeriodStyles> {\n value?: IPeriod;\n localeKey?: IFilterLocaleKey;\n locale?: IPartialFilterLocale;\n periods?: IPeriodsList;\n onChange: (period?: IPeriod) => void;\n onClose?: () => void;\n}\n\nexport const FilterWithPeriod: FC<IFilterWithPeriodProps> = ({\n value,\n localeKey,\n locale,\n onChange,\n onClose,\n periods,\n tweakStyles,\n testId,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);\n\n const [isPeriodPickerShown, setIsPeriodPickerShown] = useState(value?.periodType !== 'CUSTOM');\n\n const [isDatePickerShown, setIsDatePickerShown] = useState(value?.periodType === 'CUSTOM');\n\n const [period, setPeriod] = useState(value);\n\n const periodGetters = useMemo(() => {\n const result: Record<string, IPeriodGetter> = { ...PERIODS_GETTERS };\n periods?.forEach((p) => {\n if (Array.isArray(p)) {\n result[p[0]] = p[1];\n }\n });\n return result;\n }, [periods]);\n\n const periodsList = useMemo(() => {\n if (periods === undefined) {\n return [...PERIODS];\n }\n return periods.map((p) => (Array.isArray(p) ? p[0] : p));\n }, [periods]);\n\n const getPeriodTranslate = useCallback(\n (val: string) => translates.periods[val] ?? val,\n [translates.periods],\n );\n\n const handlePeriodChange = (periodType: string) => {\n let from = null;\n let to = null;\n\n if (periodType in periodGetters) {\n const newPeriod = periodGetters[periodType]();\n from = newPeriod.from;\n to = newPeriod.to;\n }\n\n const p = { from, to, periodType };\n setPeriod(p);\n\n if (periodType === 'CUSTOM') {\n setIsDatePickerShown(true);\n } else {\n if (onClose !== undefined) {\n onClose();\n }\n onChange({ ...p, label: getPeriodTranslate(periodType) });\n }\n\n setIsPeriodPickerShown(false);\n };\n\n const refPeriodPicker = useRef<HTMLDivElement>(null);\n const refDatePicker = useRef<HTMLDivElement>(null);\n\n const onPeriodChange = (val?: string) => {\n if (val !== undefined) {\n handlePeriodChange(val);\n } else {\n onChange(undefined);\n if (onClose !== undefined) {\n onClose();\n }\n }\n };\n\n const handleCustomDateChange = (val: IDatePeriod): void => {\n if (val.from || val.to) {\n onChange({\n ...val,\n periodType: 'CUSTOM',\n });\n } else {\n onChange(undefined);\n }\n };\n\n useOnClickOutside(refDatePicker, () => {\n if (!period?.from && !period?.to) {\n setPeriod(undefined);\n }\n setIsDatePickerShown(false);\n });\n\n useEffect(() => {\n setPeriod(value);\n }, [value, value?.from, value?.to, value?.periodType]);\n\n const tweakSelectStyles = useTweakStyles({\n innerStyles: filterSelectStyles,\n tweakStyles,\n className: 'tweakFilterSelect',\n currentComponentName: 'FilterWithPeriod',\n });\n\n return (\n <div className={classes.root}>\n {isPeriodPickerShown && (\n <div className={classes.main} ref={refPeriodPicker}>\n <FilterSelect\n options={periodsList}\n value={period?.periodType}\n onChange={onPeriodChange}\n localeKey={localeKey}\n locale={translates}\n tweakStyles={tweakSelectStyles}\n getValueView={getPeriodTranslate}\n testId={getTestId(testId, 'select')}\n />\n </div>\n )}\n {isDatePickerShown && (\n <div className={classes.picker} ref={refDatePicker}>\n <FilterWithDates\n onStartBtnSubmit={() => {\n setIsDatePickerShown(false);\n setIsPeriodPickerShown(true);\n }}\n onEndBtnSubmit={() => {\n onChange(undefined);\n setIsDatePickerShown(false);\n if (onClose !== undefined) {\n onClose();\n }\n }}\n value={period}\n onChange={handleCustomDateChange}\n localeKey={localeKey}\n locale={translates}\n testId={getTestId(testId, 'dates')}\n />\n </div>\n )}\n </div>\n );\n};\n","import { isEmpty, isString } from '@true-engineering/true-react-platform-helpers';\nimport { IDatePeriod, IFilterMultiSelectValues, IPeriod } from '../../types';\n\nconst isDateOrEmpty = (value: unknown): value is Date | null | undefined =>\n isEmpty(value) || value instanceof Date;\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const isDatePeriodValue = (value: any): value is IDatePeriod =>\n isDateOrEmpty(value?.from) && isDateOrEmpty(value?.to);\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const isPeriodValue = (value: any): value is IPeriod =>\n isString(value?.periodType) && isDatePeriodValue(value);\n\nexport const isMultiSelectValue = <T extends string>(\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n value: any,\n): value is IFilterMultiSelectValues<T> => Array.isArray(value?.include);\n","import { useMemo } from 'react';\nimport { getTestId } from '@true-engineering/true-react-platform-helpers';\nimport { getLocale } from '../../helpers';\nimport { FilterInterval } from '../FilterInterval';\nimport { FilterMultiSelect } from '../FilterMultiSelect';\nimport { FilterSelect } from '../FilterSelect';\nimport { FilterWithDates } from '../FilterWithDates';\nimport { FilterWithPeriod } from '../FilterWithPeriod';\nimport type { IFilterWrapperProps } from '../FilterWrapper';\nimport { isDatePeriodValue, isMultiSelectValue, isPeriodValue } from './helpers';\n\nexport interface IFilterProps<Values extends Record<string, unknown>, Key extends keyof Values>\n extends IFilterWrapperProps<Values, Key> {\n onChange: <V>(v: V) => void;\n onClose?: () => void;\n}\n\nexport function Filter<Values extends Record<string, unknown>, Key extends keyof Values>(\n props: IFilterProps<Values, Key>,\n): JSX.Element | null {\n const { filter, value, onChange, onClose, localeKey, locale, testId } = props;\n const translatesLocaleKey = filter.localeKey ?? localeKey;\n const translates = useMemo(\n () => getLocale(translatesLocaleKey, locale, filter.locale),\n [translatesLocaleKey, locale, filter.locale],\n );\n\n if (filter.type === 'select') {\n return (\n <FilterSelect\n value={value}\n onChange={onChange}\n onClose={onClose}\n localeKey={translatesLocaleKey}\n locale={translates}\n testId={getTestId(testId, 'select')}\n {...filter}\n />\n );\n }\n\n if (filter.type === 'dateRange') {\n const preparedValue = isPeriodValue(value) ? { ...value } : undefined;\n\n return (\n <FilterWithPeriod\n value={preparedValue}\n onChange={onChange}\n onClose={onClose}\n localeKey={translatesLocaleKey}\n locale={translates}\n testId={getTestId(testId, 'period')}\n {...filter}\n />\n );\n }\n\n if (filter.type === 'dateRangeWithoutPeriod') {\n const preparedValue = isDatePeriodValue(value) ? value : undefined;\n\n return (\n <FilterWithDates\n value={preparedValue}\n onChange={(v) => onChange({ ...v, periodType: 'CUSTOM' })}\n onEndBtnSubmit={() => onChange(undefined)}\n localeKey={translatesLocaleKey}\n locale={translates}\n testId={getTestId(testId, 'dates')}\n {...filter}\n />\n );\n }\n\n if (filter.type === 'multiSelect') {\n const preparedValue = isMultiSelectValue<any>(value) ? value : undefined;\n\n return (\n <FilterMultiSelect\n value={preparedValue}\n onChange={onChange}\n onClose={onClose}\n localeKey={translatesLocaleKey}\n locale={translates}\n testId={getTestId(testId, 'multiSelect')}\n {...filter}\n />\n );\n }\n\n if (filter.type === 'interval') {\n const preparedValue = Array.isArray(value) ? (value as number[]) : undefined;\n\n return (\n <FilterInterval\n value={preparedValue}\n onChange={onChange}\n localeKey={translatesLocaleKey}\n locale={translates}\n labelName={filter.name}\n testId={getTestId(testId, 'interval')}\n {...filter}\n />\n );\n }\n\n if (filter.type === 'custom' && filter.component) {\n const Component = filter.component;\n\n return <Component {...props} filter={filter} testId={getTestId(testId, 'dropdown')} />;\n }\n\n if (filter.type !== 'boolean') {\n console.warn(\n `%cДля фильтра ${filter.name} не задан тип или component`,\n 'background: red; color: black',\n );\n }\n\n return null;\n}\n","import { rgba } from '../../../../helpers';\nimport {\n animations,\n colors,\n createThemedStyles,\n dimensions,\n ITweakStyles,\n} from '../../../../theme';\nimport { ISearchInputStyles } from '../../../SearchInput';\nimport { ISelectStyles } from '../../../Select';\nimport { FILTER_HEIGHT } from '../../FiltersPane.styles';\n\nexport const useStyles = createThemedStyles('FiltersPaneSearch', {\n root: {\n display: 'flex',\n position: 'relative',\n backgroundColor: rgba(colors.BORDER_MAIN, 0.3),\n border: [1, 'transparent', 'solid'],\n borderRadius: 18,\n paddingRight: 8,\n transition: animations.defaultTransition,\n transitionProperty: 'background-color, border-color',\n },\n\n focused: {\n backgroundColor: colors.CLASSIC_WHITE,\n borderColor: colors.BORDER_MAIN,\n },\n\n disabled: {\n '& $selectBlock': {\n cursor: 'default',\n },\n },\n\n hasValue: {\n backgroundColor: colors.CLASSIC_WHITE,\n borderColor: colors.BORDER_MAIN,\n },\n\n selectWrapper: {\n position: 'relative',\n display: 'flex',\n flexShrink: 0,\n },\n\n selectBlock: {\n display: 'flex',\n alignItems: 'center',\n gap: 6,\n cursor: 'pointer',\n height: '100%',\n },\n\n selectLabel: {\n flexShrink: 0,\n fontSize: 14,\n userSelect: 'none',\n },\n\n chevronIcon: {\n flexShrink: 0,\n width: 20,\n height: 20,\n marginRight: 4,\n transition: 'transform .2s ease',\n opacity: 0.5,\n },\n\n open: {\n transform: 'rotate(180deg)',\n },\n\n dropdown: {\n position: 'absolute',\n top: FILTER_HEIGHT - 2,\n right: 0,\n zIndex: 20,\n minWidth: 200,\n marginTop: 6,\n borderRadius: dimensions.BORDER_RADIUS_SMALL,\n backgroundColor: colors.CLASSIC_WHITE,\n overflow: 'hidden',\n },\n\n dropdownInput: {\n borderBottom: [1, 'solid', colors.BORDER_MAIN],\n },\n\n active: {\n fontWeight: 'bold',\n },\n});\n\nexport const searchInputStyles: ISearchInputStyles = {\n tweakInput: {\n tweakControlWrapper: {\n controlWrapper: {\n '--control-height': `${FILTER_HEIGHT - 2}px`,\n backgroundColor: 'transparent',\n border: 'none',\n minWidth: 140,\n },\n\n focused: {\n backgroundColor: 'transparent',\n border: 'none',\n },\n },\n },\n};\n\nexport const selectStyles: ISelectStyles = {\n root: {\n borderRadius: 0,\n borderBottomLeftRadius: 6,\n borderBottomRightRadius: 6,\n boxShadow: 'none',\n width: '100%',\n },\n};\n\nexport type IFiltersPaneSearchStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakSearchInput: ISearchInputStyles;\n tweakSelect: ISelectStyles;\n }\n>;\n","import { ReactNode, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n addDataTestId,\n getTestId,\n isArrayLikeNotEmpty,\n isArrayNotEmpty,\n isNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useOnClickOutside, useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Icon } from '../../../Icon';\nimport { SearchInput } from '../../../SearchInput';\nimport { getLocale } from '../../helpers';\nimport { IFilterLocaleKey, IFiltersPaneSearchPayload, IPartialFilterLocale } from '../../types';\nimport { FilterSelect } from '../FilterSelect';\nimport {\n IFiltersPaneSearchStyles,\n searchInputStyles,\n selectStyles,\n useStyles,\n} from './FiltersPaneSearch.styles';\n\nexport interface IFiltersPaneSearchProps<Value> extends ICommonProps<IFiltersPaneSearchStyles> {\n field?: Value;\n fields?: Value[];\n value?: string;\n onChange: (v: IFiltersPaneSearchPayload<Value>) => void;\n localeKey?: IFilterLocaleKey;\n locale?: IPartialFilterLocale;\n maxLength?: number;\n getValueView?: (value: Value) => ReactNode;\n getValueId?: (value: Value) => string;\n getValueString?: (value: Value) => string;\n hasClearSelectButton?: boolean;\n isDisabled?: boolean;\n isSelectSearchEnabled?: boolean;\n isAutoSized?: boolean;\n}\n\nexport function FiltersPaneSearch<Value>({\n value,\n fields = [],\n field,\n onChange,\n localeKey,\n locale,\n getValueId,\n getValueView,\n getValueString,\n hasClearSelectButton,\n isDisabled = false,\n isSelectSearchEnabled = true,\n isAutoSized = false,\n maxLength,\n data,\n tweakStyles,\n testId,\n}: IFiltersPaneSearchProps<Value>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakSearchInputStyles = useTweakStyles({\n innerStyles: searchInputStyles,\n tweakStyles,\n className: 'tweakSearchInput',\n currentComponentName: 'FiltersPaneSearch',\n });\n\n const tweakSelectStyles = useTweakStyles({\n innerStyles: selectStyles,\n tweakStyles,\n className: 'tweakSelect',\n currentComponentName: 'FiltersPaneSearch',\n });\n\n const [isInputFocused, setIsInputFocused] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n\n const refRoot = useRef<HTMLDivElement | null>(null);\n\n const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);\n\n useOnClickOutside(refRoot, () => setIsOpen(false));\n\n const handleSearchChange = (v?: string) => {\n onChange({\n value: v,\n field,\n });\n };\n\n const handleFieldsChange = (v?: Value) => {\n onChange({\n value,\n field: v,\n });\n setIsOpen(false);\n };\n\n return (\n <div\n className={clsx(classes.root, {\n [classes.focused]: isInputFocused,\n [classes.disabled]: isDisabled,\n [classes.hasValue]: isArrayLikeNotEmpty(value),\n })}\n ref={refRoot}\n {...addDataAttributes(data, testId)}\n >\n <SearchInput\n value={value}\n onChange={handleSearchChange}\n placeholder={translates.searchPlaceholder}\n tweakStyles={tweakSearchInputStyles}\n onFocus={() => setIsInputFocused(true)}\n onBlur={() => setIsInputFocused(false)}\n testId={getTestId(testId, 'input')}\n maxLength={maxLength}\n isDisabled={isDisabled}\n isAutoSized={isAutoSized}\n />\n\n <div className={classes.selectWrapper}>\n {/* Select block */}\n {isArrayNotEmpty(fields) && (\n <div\n className={classes.selectBlock}\n onClick={!isDisabled ? () => setIsOpen(!isOpen) : undefined}\n {...addDataTestId(testId, 'select')}\n >\n <div className={clsx(classes.selectLabel, { [classes.active]: isNotEmpty(field) })}>\n {isNotEmpty(field) ? getValueView?.(field) : translates.displayedFields}\n </div>\n <div className={clsx(classes.chevronIcon, isOpen && classes.open)}>\n <Icon type=\"chevron-down\" />\n </div>\n </div>\n )}\n {/* Selector */}\n {isOpen && (\n <div className={classes.dropdown}>\n <FilterSelect\n tweakStyles={tweakSelectStyles}\n value={field}\n options={fields}\n getValueView={getValueView}\n getValueId={getValueId}\n getValueString={getValueString}\n localeKey={localeKey}\n locale={translates}\n onChange={handleFieldsChange}\n isSearchEnabled={isSelectSearchEnabled}\n hasClearButton={hasClearSelectButton}\n testId={getTestId(testId, 'dropdown')}\n />\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { createThemedStyles, ITweakStyles } from '../../../../theme';\n\nexport const useStyles = createThemedStyles('FilterValueView', {\n text: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n count: {\n whiteSpace: 'pre',\n },\n});\n\nexport type IFilterValueViewStyles = ITweakStyles<typeof useStyles>;\n","import { useMemo } from 'react';\nimport { format } from 'date-fns';\nimport { isEmpty, isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../../../types';\nimport { IMultiSelectListValues } from '../../../MultiSelectList';\nimport { DEFAULT_DATE_FORMAT } from '../../constants';\nimport { defaultConvertFunction, getLocale } from '../../helpers';\nimport { IDateRangeConfigItem, IFilterWithDatesValue, IPeriod } from '../../types';\nimport type { IFilterWrapperProps } from '../FilterWrapper';\nimport { IFilterValueViewStyles, useStyles } from './FilterValueView.styles';\n\nexport interface IFilterValueView<Values extends Record<string, unknown>, Key extends keyof Values>\n extends Omit<IFilterWrapperProps<Values, Key>, 'filtersPaneRef' | 'tweakStyles' | 'onChange'>,\n ICommonProps<IFilterValueViewStyles> {}\n\nexport function FilterValueView<Values extends Record<string, unknown>, Key extends keyof Values>({\n value,\n filter,\n locale,\n localeKey,\n tweakStyles,\n}: IFilterValueView<Values, Key>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const translatesLocaleKey = filter.localeKey ?? localeKey;\n const translates = useMemo(\n () => getLocale(translatesLocaleKey, locale, filter.locale),\n [translatesLocaleKey, locale, filter.locale],\n );\n\n if (isEmpty(value)) {\n return <></>;\n }\n\n if (isNotEmpty(filter.getSelectedValueView)) {\n return <span className={classes.text}>{filter.getSelectedValueView(value)}</span>;\n }\n\n const isMultiple = filter.type === 'custom' && filter.valueViewType === 'multiple';\n const isRange = filter.type === 'custom' && filter.valueViewType === 'range';\n const isDate = filter.type === 'dateRange' || filter.type === 'dateRangeWithoutPeriod';\n\n const displayValue = (v: unknown): string => {\n if (!isNotEmpty(v)) {\n return '';\n }\n\n if (v instanceof Date) {\n return format(\n v,\n (filter as IDateRangeConfigItem<IFilterWithDatesValue>).dateFormat || DEFAULT_DATE_FORMAT,\n );\n }\n\n if (typeof v === 'object' && 'value' in v && isNotEmpty(v.value)) {\n return String(v.value);\n }\n\n if (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean') {\n return String(v);\n }\n\n console.warn(\n `%c Ошибка конфигурации фильтра ${filter.name}. Невозможно отобразить значение фильтра. Задайте filterValueViewComponent или filterValueViewType.`,\n 'background: orange; color: black',\n );\n\n return '';\n };\n\n if (filter.type === 'select') {\n const getView = filter.getValueView ?? defaultConvertFunction;\n return <span className={classes.text}>{getView(value)}</span>;\n }\n\n if (filter.type === 'multiSelect') {\n const multiSelectValue = value as IMultiSelectListValues<any>;\n const getView = filter.getValueView ?? defaultConvertFunction;\n const { include } = multiSelectValue;\n\n return (\n <>\n {Array.isArray(include) && include.length > 0 && (\n <>\n <span className={classes.text}>{getView(include[0])}</span>\n <span className={classes.count}>\n {include.length > 1 && ` (+${include.length - 1})`}\n </span>\n </>\n )}\n </>\n );\n }\n\n if (filter.type === 'interval') {\n const intervalValue = value as unknown as number[];\n const intervalValueFrom = intervalValue[0];\n const intervalValueTo = intervalValue[1];\n\n const intervals: string[] = [];\n if (intervalValueFrom !== undefined) {\n intervals.push(`${translates.from.toLowerCase()} ${String(intervalValueFrom)}`);\n }\n if (intervalValueTo !== undefined) {\n intervals.push(`${translates.to.toLowerCase()} ${String(intervalValueTo)}`);\n }\n\n return <span className={classes.text}>{intervals.join(' ')}</span>;\n }\n\n if (isDate) {\n const { from, to, periodType, label } = value as unknown as IPeriod;\n const hasFrom = from !== undefined && from !== null;\n const hasTo = to !== undefined && to !== null;\n\n if (periodType !== 'CUSTOM') {\n return <span className={classes.text}>{displayValue(label)}</span>;\n }\n\n const range: string[] = [];\n if (hasFrom) {\n if (!hasTo) {\n range.push(translates.from.toLowerCase());\n }\n range.push(displayValue(from));\n }\n if (hasTo) {\n if (hasFrom) {\n range.push('—');\n } else {\n range.push(translates.to.toLowerCase());\n }\n range.push(displayValue(to));\n }\n\n return <span className={classes.text}>{range.join(' ')}</span>;\n }\n\n if (isMultiple) {\n const convertValue = filter.getSelectedValue ?? displayValue;\n\n return (\n <>\n {Array.isArray(value) && value.length > 0 && (\n <>\n <span className={classes.text}>{convertValue(value[0])}</span>\n <span className={classes.count}>{value.length > 1 && ` (+${value.length - 1})`}</span>\n </>\n )}\n </>\n );\n }\n\n if (isRange && Array.isArray(value)) {\n const rangeValue = value as unknown as number[];\n const rangeValueFrom = rangeValue[0];\n const rangeValueTo = rangeValue[1];\n\n const range: string[] = [];\n if (rangeValueFrom !== undefined) {\n range.push(`${translates.from.toLowerCase()} ${String(rangeValueFrom)}`);\n }\n if (rangeValueTo !== undefined) {\n range.push(`${translates.to.toLowerCase()} ${String(rangeValueTo)}`);\n }\n\n return <span className={classes.text}>{range.join(' ')}</span>;\n }\n\n return <span className={classes.text}>{displayValue(value)}</span>;\n}\n","import { isNotEmpty, isObject } from '@true-engineering/true-react-platform-helpers';\n\nexport const isContentNotEmpty = (value: unknown): boolean => {\n if (Array.isArray(value)) {\n return value.some(isContentNotEmpty);\n }\n if (isObject(value)) {\n return Object.values(value).some(isContentNotEmpty);\n }\n if (typeof value === 'boolean') {\n return value;\n }\n return isNotEmpty(value);\n};\n","import { animations, colors, createThemedStyles, ITweakStyles } from '../../../../theme';\nimport { IWithPopupStyles } from '../../../WithPopup';\nimport type { IFilterValueViewStyles } from '../FilterValueView';\nimport { FILTER_HEIGHT } from '../../FiltersPane.styles';\n\nexport const useStyles = createThemedStyles('FilterWrapper', {\n root: {\n position: 'relative',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color, border-color',\n border: [1, 'solid', colors.BORDER_MAIN],\n borderRadius: 18,\n boxSizing: 'border-box',\n height: FILTER_HEIGHT,\n minWidth: 0,\n },\n\n item: {\n display: 'flex',\n padding: [0, 8, 0, 16],\n cursor: 'pointer',\n },\n\n booleanItem: {\n padding: 0,\n },\n\n name: {\n fontSize: 14,\n lineHeight: '34px',\n whiteSpace: 'nowrap',\n },\n\n boolean: {\n padding: [0, 16],\n },\n\n noValue: {},\n\n openNoValue: {},\n\n openWithValue: {},\n\n disabled: {\n '& > $item': {\n cursor: 'default',\n },\n },\n\n withValue: {},\n\n iconContainer: {\n width: 20,\n height: 20,\n transition: 'transform .2s ease-in-out',\n alignSelf: 'center',\n marginLeft: 6,\n marginRight: 4,\n flexShrink: 0,\n },\n\n chevronIcon: {},\n\n clearIcon: {},\n\n open: {\n transform: 'rotate(180deg)',\n },\n\n dropdown: {\n position: 'absolute',\n zIndex: 20,\n marginTop: 6,\n border: [1, colors.BORDER_MAIN, 'solid'],\n },\n\n left: {\n left: 0,\n },\n\n right: {\n right: 0,\n },\n\n value: {\n alignSelf: 'center',\n fontSize: 14,\n lineHeight: '16px',\n margin: [0, 2, 0, 8],\n fontWeight: 'bold',\n display: 'flex',\n minWidth: 0,\n },\n});\n\nexport type IFilterWrapperStyles = ITweakStyles<\n typeof useStyles,\n { tweakWithPopup: IWithPopupStyles; tweakValueView: IFilterValueViewStyles }\n>;\n","import { MouseEventHandler } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n getTestId,\n isNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useMixedStyles, useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Icon } from '../../../Icon';\nimport { WithPopup } from '../../../WithPopup';\nimport { ConfigItem, IFilterLocaleKey, IPartialFilterLocale } from '../../types';\nimport { Filter } from '../Filter';\nimport { FilterValueView } from '../FilterValueView';\nimport { isContentNotEmpty } from './helpers';\nimport { useStyles, IFilterWrapperStyles } from './FilterWrapper.styles';\n\nexport interface IFilterWrapperProps<\n Values extends Record<string, unknown>,\n Key extends keyof Values,\n> extends ICommonProps<IFilterWrapperStyles> {\n filter: ConfigItem<Values[Key]>;\n value?: Values[Key];\n isDisabled?: boolean;\n localeKey?: IFilterLocaleKey;\n locale?: IPartialFilterLocale;\n onChange: <V>(value: V) => void;\n}\n\nexport function FilterWrapper<Values extends Record<string, unknown>, Key extends keyof Values>({\n filter,\n value,\n isDisabled,\n locale,\n localeKey,\n data,\n testId,\n tweakStyles: baseTweakStyles,\n onChange,\n}: IFilterWrapperProps<Values, Key>): JSX.Element {\n const tweakStyles = useMixedStyles(baseTweakStyles, filter.tweakWrapperStyles);\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakWithPopupStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakWithPopup',\n currentComponentName: 'FilterWrapper',\n });\n\n const tweakFilterValueViewStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakValueView',\n currentComponentName: 'FilterWrapper',\n });\n\n if (filter.isInline) {\n return (\n <Filter\n value={value}\n filter={filter}\n localeKey={localeKey}\n locale={locale}\n onChange={onChange}\n testId={testId}\n />\n );\n }\n\n const isBoolean = filter.type === 'boolean';\n\n const handleLabelClick = () => {\n if (isBoolean) {\n onChange(!value);\n }\n };\n const handleClearIconClick: MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n onChange(undefined);\n };\n\n const hasValue = isContentNotEmpty(value);\n const hasClearIcon = (filter.isClearable ?? false) && hasValue;\n\n return (\n <WithPopup\n placement=\"bottom-start\"\n canBeFlipped\n isDisabled={isBoolean || isDisabled}\n tweakStyles={tweakWithPopupStyles}\n trigger={({ triggerProps: { isActive }, referenceProps }) => (\n <div\n className={clsx(classes.root, {\n [classes.noValue]: !hasValue,\n [classes.openNoValue]: isActive && !hasValue,\n [classes.withValue]: !isActive && hasValue,\n [classes.openWithValue]: isActive && hasValue,\n [classes.boolean]: isBoolean,\n [classes.disabled]: isDisabled,\n })}\n {...addDataAttributes(data, testId)}\n {...referenceProps}\n >\n <div\n onClick={handleLabelClick}\n className={clsx(classes.item, { [classes.booleanItem]: isBoolean })}\n >\n <div className={classes.name}>{filter.name}</div>\n {!isBoolean && isNotEmpty(value) && (\n <div className={classes.value}>\n <FilterValueView\n value={value}\n filter={filter}\n locale={locale}\n localeKey={localeKey}\n testId={getTestId(testId, 'value')}\n tweakStyles={tweakFilterValueViewStyles}\n />\n </div>\n )}\n {!isBoolean && !hasClearIcon && (\n <div\n className={clsx(classes.iconContainer, classes.chevronIcon, {\n [classes.open]: isActive,\n })}\n >\n <Icon type=\"chevron-down\" />\n </div>\n )}\n {hasClearIcon && (\n <div\n className={clsx(classes.iconContainer, classes.clearIcon)}\n onClick={handleClearIconClick}\n >\n <Icon type=\"close-large\" />\n </div>\n )}\n </div>\n </div>\n )}\n >\n {({ onClose }) => (\n <Filter\n value={value}\n filter={filter}\n locale={locale}\n localeKey={localeKey}\n onClose={onClose}\n onChange={onChange}\n testId={testId}\n />\n )}\n </WithPopup>\n );\n}\n","import { useMemo } from 'react';\nimport {\n addDataAttributes,\n addDataTestId,\n getTestId,\n isNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { Button } from '../Button';\nimport { IIcon, renderIcon } from '../Icon';\nimport { FilterWrapper, IFiltersPaneSearchProps, FiltersPaneSearch } from './components';\nimport { getLocale } from './helpers';\nimport { ConfigType, IFilterLocaleKey, IPartialFilterLocale } from './types';\nimport { useStyles, IFiltersPaneStyles, clearButtonStyles } from './FiltersPane.styles';\n\nexport interface IFiltersPaneProps<Values extends Record<string, unknown>, Content = Values>\n extends ICommonProps<IFiltersPaneStyles> {\n filtersConfig: ConfigType<Values>;\n enabledFilters?: Array<keyof ConfigType<Values>>;\n /** @default {} */\n values?: Partial<Values>;\n search?: IFiltersPaneSearchProps<keyof Content>;\n localeKey?: IFilterLocaleKey;\n locale?: IPartialFilterLocale;\n /** @default false */\n isDisabled?: boolean;\n /** @default true */\n hasClearButton?: boolean;\n /** @default false */\n shouldRenderDataId?: boolean;\n /** @default 'filter' */\n settingsIcon?: IIcon;\n onChangeFilters: (values: Partial<Values>) => void;\n onSettingsButtonClick?: () => void;\n onClear?: () => void;\n}\n\nexport function FiltersPane<Values extends Record<string, unknown>, Content = Values>({\n data,\n tweakStyles,\n filtersConfig,\n enabledFilters,\n values = {} as Values,\n localeKey,\n locale,\n search,\n isDisabled = false,\n hasClearButton = true,\n shouldRenderDataId = false,\n settingsIcon = 'filter',\n testId,\n onChangeFilters,\n onSettingsButtonClick,\n onClear,\n}: IFiltersPaneProps<Values, Content>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakClearButtonStyles = useTweakStyles({\n innerStyles: clearButtonStyles,\n tweakStyles,\n className: 'tweakClearButton',\n currentComponentName: 'FiltersPane',\n });\n\n const tweakFilterWrapperStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakFilterWrapper',\n currentComponentName: 'FiltersPane',\n });\n\n const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);\n\n const filtersKeys = enabledFilters ?? Object.keys(filtersConfig);\n\n const handleClear = () => {\n if (isNotEmpty(onClear)) {\n onClear();\n return;\n }\n onChangeFilters({});\n if (search !== undefined) {\n search.onChange({});\n }\n };\n\n const shouldShowClearButton =\n hasClearButton &&\n (isNotEmpty(search) || filtersKeys.some((key) => isNotEmpty(filtersConfig[key])));\n\n const clearButton = (\n <div className={classes.clear}>\n <Button\n onClick={handleClear}\n size=\"s\"\n view=\"text\"\n isDisabled={isDisabled}\n testId={getTestId(testId, 'clear-button')}\n tweakStyles={tweakClearButtonStyles}\n >\n {translates.clear}\n </Button>\n </div>\n );\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n {/* Settings */}\n {onSettingsButtonClick !== undefined && (\n <div\n className={classes.settings}\n tabIndex={0}\n {...addDataTestId(testId, 'settings-button')}\n onClick={!isDisabled ? onSettingsButtonClick : undefined}\n >\n <div className={classes.settingsIcon}>{renderIcon(settingsIcon)}</div>\n </div>\n )}\n {/* Search */}\n {search !== undefined && (\n <FiltersPaneSearch\n {...search}\n locale={getLocale(search.localeKey ?? localeKey, search.locale, locale)}\n localeKey={search.localeKey ?? localeKey}\n isDisabled={search.isDisabled ?? isDisabled}\n testId={getTestId(testId, 'search')}\n />\n )}\n {/* Filters */}\n {filtersKeys.map((key, index) => {\n const isLast = index === filtersKeys.length - 1;\n const filterKey = String(key);\n const currentValue = values[filterKey];\n const filter = filtersConfig[filterKey];\n if (filter === undefined) {\n console.error(`enabledFilters содержит фильтр ${filterKey}, не описанный в конфиге`);\n if (isLast) {\n return clearButton;\n }\n return null;\n }\n\n const filterWrapper = (\n <FilterWrapper\n filter={filter}\n locale={locale}\n localeKey={localeKey}\n onChange={(value) => onChangeFilters({ ...values, [filterKey]: value })}\n value={currentValue}\n key={filterKey}\n isDisabled={isDisabled || filter?.requiredFilledFilters?.some((item) => !values[item])}\n tweakStyles={tweakFilterWrapperStyles}\n data={shouldRenderDataId ? { id: filterKey } : undefined}\n testId={getTestId(testId, `filter-${filterKey}`)}\n />\n );\n\n if (isLast) {\n return (\n <div className={classes.filterWithClearButton} key={filterKey}>\n {filterWrapper}\n {shouldShowClearButton && <>{clearButton}</>}\n </div>\n );\n }\n\n return filterWrapper;\n })}\n </div>\n );\n}\n","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 341.3\\\"><path fill=\\\"#FFF\\\" d=\\\"M0 0h512v341.3H0z\\\"/><g fill=\\\"#6DA544\\\"><path d=\\\"M0 0h512v48.8H0zM0 97.5h512v48.8H0zM0 195h512v48.8H0zM0 292.6h512v48.8H0z\\\"/></g><path fill=\\\"#D80027\\\" d=\\\"M0 0h256v146.3H0z\\\"/><path fill=\\\"#FFF\\\" d=\\\"m116.9 114.4-7.5-14.8V69.9L128 59l18.6 10.9v22.3l7.4-7.4 4.2 3-4.2 11.8-14.9 14.8z\\\"/><circle fill=\\\"#FFF\\\" cx=\\\"82\\\" cy=\\\"82.8\\\" r=\\\"5.4\\\"/><circle fill=\\\"#FFF\\\" cx=\\\"90.8\\\" cy=\\\"61.7\\\" r=\\\"5.4\\\"/><circle fill=\\\"#FFF\\\" cx=\\\"106.6\\\" cy=\\\"46.2\\\" r=\\\"5.4\\\"/><circle fill=\\\"#FFF\\\" cx=\\\"128\\\" cy=\\\"40.8\\\" r=\\\"5.4\\\"/><circle fill=\\\"#FFF\\\" cx=\\\"149.4\\\" cy=\\\"46.2\\\" r=\\\"5.4\\\"/><circle fill=\\\"#FFF\\\" cx=\\\"165.2\\\" cy=\\\"61.7\\\" r=\\\"5.4\\\"/><circle fill=\\\"#FFF\\\" cx=\\\"174\\\" cy=\\\"82.8\\\" r=\\\"5.4\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 450 300\\\"><path fill=\\\"#FFF\\\" d=\\\"M0 0h450v300H0z\\\"/><path fill=\\\"red\\\" d=\\\"M0 100h450v200H0z\\\"/><path fill=\\\"#FFDF00\\\" d=\\\"M0 200h450v100H0z\\\"/></svg>\"","import AB from './AB.svg?raw';\nimport OS from './OS.svg?raw';\n\nexport const customFlags = {\n /**\n * Абхазия\n */\n AB,\n /**\n * Южная осетия\n */\n OS,\n};\n","import { colors, ITweakStyles, createThemedStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('Flag', {\n root: {\n display: 'flex',\n width: '100%',\n height: '100%',\n boxSizing: 'border-box',\n // приходится хардкодить в компоненте, тк либа Flags выдает флаги с 2-3 пиксельным отступом снизу\n // если будет нужно, то можно вынести border на уровень пропсов\n border: [1, 'solid', colors.BORDER_MAIN],\n borderRadius: 2,\n },\n\n noFlag: {\n width: 20,\n color: colors.FONT_MEDIUM,\n },\n});\n\nexport type IFlagStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport { hasFlag } from 'country-flag-icons';\nimport * as Flags from 'country-flag-icons/react/3x2';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { customFlags } from './customFlags';\nimport { IFlagStyles, useStyles } from './Flag.styles';\n\nexport interface IFlagProps extends Pick<ICommonProps<IFlagStyles>, 'tweakStyles'> {\n /** @default '' */\n countryCode?: string;\n}\n\nexport const Flag: FC<IFlagProps> = ({ countryCode = '', tweakStyles }) => {\n const classes = useStyles({ theme: tweakStyles });\n const countryFlagKey = countryCode.toUpperCase();\n\n const hasFlagInLibrary = hasFlag(countryFlagKey);\n\n if (hasFlagInLibrary) {\n const FlagComponent = Flags[countryFlagKey as keyof typeof Flags];\n return (\n <div className={classes.root}>\n <FlagComponent />\n </div>\n );\n }\n\n const CustomFlag = customFlags[countryFlagKey as keyof typeof customFlags];\n\n if (CustomFlag !== undefined) {\n return <div className={classes.root} dangerouslySetInnerHTML={{ __html: CustomFlag }} />;\n }\n\n return (\n <div className={classes.noFlag}>\n <Icon type=\"minus\" />\n </div>\n );\n};\n","import { IFlexibleTableRenderElement, IFlexibleTableRenderMode } from './types';\n\nexport const DEFAULT_DATE_FORMAT = 'dd.MM.yyyy';\n\nexport const TableRenders = {\n table: { Root: 'table', Head: 'thead', Body: 'tbody', Row: 'tr', Header: 'th', Cell: 'td' },\n divs: { Root: 'div', Head: 'div', Body: 'div', Row: 'div', Header: 'div', Cell: 'div' },\n} satisfies Record<\n IFlexibleTableRenderMode,\n Record<IFlexibleTableRenderElement, keyof JSX.IntrinsicElements>\n>;\n","import { rgba } from '../../helpers';\nimport { colors, createThemedStyles, ITweakStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('Skeleton', {\n root: {\n display: 'flex',\n width: '100%',\n height: '100%',\n backgroundColor: rgba(colors.GREY_DISABLED, 0.8),\n position: 'relative',\n borderRadius: 4,\n overflow: 'hidden',\n '-webkit-mask-image': '-webkit-radial-gradient(white, black)',\n\n '&::after': {\n content: '\"\"',\n animation: '$skeleton 1.6s linear 0.5s infinite',\n background: `linear-gradient(90deg, transparent, ${rgba(\n colors.GREY_BACKGROUND,\n 0.65,\n )}, transparent)`,\n position: 'absolute',\n transform: 'translateX(-100%)',\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n },\n },\n\n '@keyframes skeleton': {\n '0%': {\n transform: 'translateX(-100%)',\n },\n\n '50%': {\n transform: 'translateX(100%)',\n },\n\n '100%': {\n transform: 'translateX(100%)',\n },\n },\n});\n\nexport type ISkeletonStyles = ITweakStyles<typeof useStyles>;\n","import { CSSProperties, FC } from 'react';\nimport { ICommonProps } from '../../types';\nimport { ISkeletonStyles, useStyles } from './Skeleton.styles';\n\nexport interface ISkeletonProps extends Pick<ICommonProps<ISkeletonStyles>, 'tweakStyles'> {\n height?: CSSProperties['height'];\n}\n\nexport const Skeleton: FC<ISkeletonProps> = ({ height, tweakStyles }) => {\n const classes = useStyles({ theme: tweakStyles });\n return <div className={classes.root} style={{ height }} />;\n};\n","import { format } from 'date-fns';\nimport { isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { DEFAULT_DATE_FORMAT } from './constants';\nimport { IFlexibleTableConfigType, IHeaderContent, ITableRow } from './types';\n\nexport const hasHorizontalScrollBar = (el: HTMLElement | null | undefined): boolean =>\n isNotEmpty(el) && el.scrollWidth !== el.clientWidth;\n\nexport const formatCellContent = <\n Values extends ITableRow,\n HeaderContent extends IHeaderContent<Values>,\n>(\n value: unknown,\n config?: IFlexibleTableConfigType<Values, HeaderContent>[keyof Values],\n): string =>\n value instanceof Date ? format(value, config?.dateFormat ?? DEFAULT_DATE_FORMAT) : String(value);\n","import { rgba } from '../../helpers';\nimport { colors, ITweakStyles, createThemedStyles, animations, helpers } from '../../theme';\nimport type { IFlexibleTableRowStyles } from './components';\n\nexport const STICKY_SHADOW_PADDING = 12;\n\nexport const useStyles = createThemedStyles('FlexibleTable', {\n flexibleTableWrapper: {},\n\n root: {\n width: '100%',\n position: 'relative',\n borderCollapse: 'separate',\n borderSpacing: 0,\n },\n\n scroll: {\n ...helpers.withScrollBar,\n /*\n Чтобы сделать таблицу на всю высоту проставьте\n height у родителя таблицы у себя в проекте.\n Например: height: calc(100vh -{высота шапки}px)\n */\n maxHeight: '100%',\n },\n\n head: {},\n\n body: {},\n\n loaderRow: {},\n\n loaderCell: {},\n\n loader: {\n position: 'sticky',\n left: 0,\n maxWidth: '100vw',\n height: 48,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n\n headerRow: {\n position: 'relative',\n verticalAlign: 'bottom',\n },\n\n header: {\n position: 'sticky',\n boxSizing: 'content-box',\n top: 0,\n zIndex: 10,\n fontSize: 12,\n fontWeight: 'normal',\n padding: [0, 7, 16, 7],\n },\n\n headerSticky: {\n zIndex: 20,\n left: 0,\n paddingLeft: 24,\n paddingRight: 12,\n\n '&::before': {\n content: '\"\"',\n display: 'block',\n width: '100%',\n height: '100%',\n position: 'absolute',\n left: 0,\n top: 0,\n background: 'transparent',\n pointerEvents: 'none',\n zIndex: 1,\n transition: animations.defaultTransition,\n transitionProperty: 'box-shadow',\n\n '[data-scrolled] &': {\n boxShadow: '4px 0 4px rgba(0, 0, 0, 0.05)',\n },\n },\n\n '&::after': {\n content: '\"\"',\n display: 'block',\n width: STICKY_SHADOW_PADDING,\n height: '100%',\n position: 'absolute',\n left: '100%',\n top: 0,\n background: `linear-gradient(90deg, ${colors.CLASSIC_WHITE}, ${rgba(\n colors.CLASSIC_WHITE,\n 0,\n )})`,\n zIndex: 0,\n },\n },\n\n /** @deprecated удалить вместе с isFirstColumnSticky */\n headerSecond: {\n paddingLeft: STICKY_SHADOW_PADDING,\n },\n\n nothingFoundRow: {},\n\n nothingFound: {},\n});\n\nexport type IFlexibleTableStyles = ITweakStyles<\n typeof useStyles,\n { tweakTableRow: IFlexibleTableRowStyles }\n>;\n","import { getTransition } from '@true-engineering/true-react-platform-helpers';\nimport { ITweakStyles, createThemedStyles } from '../../../../theme';\nimport { STICKY_SHADOW_PADDING } from '../../FlexibleTable.styles';\n\nexport const useStyles = createThemedStyles('FlexibleTableCell', {\n root: {\n position: 'relative',\n boxSizing: 'content-box',\n padding: [14, 7],\n fontSize: 14,\n lineHeight: 1.42,\n zIndex: 5,\n verticalAlign: 'top',\n },\n\n sticky: {\n zIndex: 19,\n paddingLeft: 24,\n paddingRight: 12,\n left: 0,\n ...getTransition(['box-shadow']),\n\n '[data-scrolled] &': {\n boxShadow: '4px 0 4px rgba(0, 0, 0, 0.05)',\n },\n },\n\n /** @deprecated удалить вместе с isFirstColumnSticky */\n second: {\n paddingLeft: STICKY_SHADOW_PADDING,\n },\n\n loading: {},\n\n skeleton: {\n height: 21,\n },\n\n clickable: {\n cursor: 'pointer',\n },\n});\n\nexport type IFlexibleTableCellStyles = ITweakStyles<typeof useStyles>;\n","import { ReactNode, useCallback } from 'react';\nimport clsx from 'clsx';\nimport {\n applyAction,\n isNotEmpty,\n addDataAttributes,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../../../types';\nimport { Skeleton } from '../../../Skeleton';\nimport { TableRenders } from '../../constants';\nimport { formatCellContent } from '../../helpers';\nimport {\n ITableRow,\n IValueComponentProps,\n IFlexibleTableConfigType,\n IFlexibleTableRenderMode,\n IHeaderContent,\n} from '../../types';\nimport { useStyles, IFlexibleTableCellStyles } from './FlexibleTableCell.styles';\n\nexport interface IFlexibleTableCellProps<\n Row extends ITableRow,\n HeaderContent extends IHeaderContent<Row>,\n> extends Pick<ICommonProps<IFlexibleTableCellStyles>, 'tweakStyles'>,\n Pick<\n IValueComponentProps<Row, unknown>,\n 'isFocusedRow' | 'isActiveRow' | 'isNestedComponentExpanded' | 'isRowNestedComponentExpanded'\n > {\n row: Row;\n columnName: keyof Row;\n updateNestedComponent: (component: ReactNode, cellKey: keyof Row) => void;\n config: IFlexibleTableConfigType<Row, HeaderContent>;\n renderMode: IFlexibleTableRenderMode;\n isSecond?: boolean;\n isSticky?: boolean;\n isLoading?: boolean;\n}\n\nexport function FlexibleTableCell<\n Row extends ITableRow,\n HeaderContent extends IHeaderContent<Row>,\n>({\n row,\n columnName,\n config,\n renderMode,\n isSecond,\n isSticky: isOldSticky,\n isLoading,\n updateNestedComponent,\n tweakStyles,\n ...valueComponentProps\n}: IFlexibleTableCellProps<Row, HeaderContent>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const value = row[columnName];\n\n const {\n component = formatCellContent(value, config[columnName]),\n width,\n maxWidth,\n minWidth,\n left,\n right,\n position,\n cellAlign,\n cellVerticalAlign,\n shouldRenderDataId,\n shouldRenderComponent = isNotEmpty,\n onCellClick,\n } = config[columnName] ?? {};\n\n const isSticky = isOldSticky || position === 'sticky';\n const isClickable = !isLoading && isNotEmpty(onCellClick);\n\n const cellComponentProps: IValueComponentProps<Row, Row[keyof Row]> = {\n ...valueComponentProps,\n onSetNestedComponent: useCallback(\n (node) => updateNestedComponent(node, columnName),\n [columnName, updateNestedComponent],\n ),\n value,\n row,\n };\n\n const Table = TableRenders[renderMode];\n\n return (\n <Table.Cell\n className={clsx(classes.root, {\n [classes.sticky]: isSticky,\n [classes.second]: isSecond,\n [classes.loading]: isLoading,\n [classes.clickable]: isClickable,\n })}\n style={{\n textAlign: cellAlign,\n position: isSticky ? 'sticky' : position,\n width,\n maxWidth,\n minWidth,\n right,\n left,\n verticalAlign: cellVerticalAlign,\n }}\n onClick={isClickable ? (event) => onCellClick?.(event, cellComponentProps) : undefined}\n {...addDataAttributes({ id: shouldRenderDataId ? columnName : undefined })}\n >\n {isLoading ? (\n <div className={classes.skeleton}>\n <Skeleton />\n </div>\n ) : (\n applyAction(shouldRenderComponent, value, row, columnName) &&\n applyAction(component, cellComponentProps)\n )}\n </Table.Cell>\n );\n}\n","import { ITweakStyles, createThemedStyles } from '../../../../theme';\nimport { IFlexibleTableCellStyles } from '../FlexibleTableCell';\n\nexport const useStyles = createThemedStyles('FlexibleTableRow', {\n root: {\n position: 'relative',\n },\n\n active: {},\n\n editable: {\n cursor: 'pointer',\n },\n\n clickable: {\n cursor: 'pointer',\n },\n\n nestedComponent: {},\n});\n\nexport type IFlexibleTableRowStyles = ITweakStyles<\n typeof useStyles,\n { tweakTableCell: IFlexibleTableCellStyles }\n>;\n","import { ReactNode, useState, MouseEvent, RefCallback, useCallback } from 'react';\nimport clsx from 'clsx';\nimport {\n isEmpty,\n isNotEmpty,\n addDataAttributes,\n} from '@true-engineering/true-react-platform-helpers';\nimport { genericMemo } from '../../../../helpers';\nimport { useTweakStyles } from '../../../../hooks';\nimport { IDataAttributes, ITweakStylesProps } from '../../../../types';\nimport { TableRenders } from '../../constants';\nimport {\n ITableRow,\n IFlexibleTableConfigType,\n IFlexibleTableRenderMode,\n INestedComponent,\n IHeaderContent,\n} from '../../types';\nimport { FlexibleTableCell } from '../FlexibleTableCell';\nimport { useStyles, IFlexibleTableRowStyles } from './FlexibleTableRow.styles';\n\nexport interface IFlexibleTableRowProps<\n Row extends ITableRow,\n HeaderContent extends IHeaderContent<Row>,\n UniqueField extends keyof Row,\n> extends ITweakStylesProps<IFlexibleTableRowStyles> {\n item: Row;\n uniqueField?: UniqueField;\n renderMode: IFlexibleTableRenderMode;\n /** @default false */\n isActive?: boolean;\n /** @default false */\n isFocusable?: boolean;\n /** @deprecated Use {@position}\n * @default false */\n isFirstColumnSticky?: boolean;\n /** @default false */\n isLoading?: boolean;\n config: IFlexibleTableConfigType<Row, HeaderContent>;\n columns: Array<keyof Row & string>;\n rowAttributes?: Array<keyof Row>;\n /** @default false */\n isExpandableRowComponentInitiallyOpen?: boolean;\n rowRef?: RefCallback<HTMLTableRowElement>;\n /** Возвращает React-элемент, который отрисуется под строкой при нажатии на неё */\n expandableRowComponent?: (item: Row, isOpen: boolean, close: () => void) => ReactNode;\n onRowHover?: (id?: Row[UniqueField]) => void;\n onRowClick?: (id: Row[UniqueField]) => void;\n}\n\nexport const FlexibleTableRow = genericMemo(function FlexibleTableRow<\n Row extends ITableRow,\n HeaderContent extends IHeaderContent<Row>,\n UniqueField extends keyof Row,\n>({\n item,\n config,\n columns,\n uniqueField,\n renderMode,\n isActive = false,\n isFocusable = false,\n isFirstColumnSticky = false,\n isLoading = false,\n rowAttributes,\n isExpandableRowComponentInitiallyOpen = false,\n rowRef,\n tweakStyles,\n expandableRowComponent,\n onRowHover,\n onRowClick,\n}: IFlexibleTableRowProps<Row, HeaderContent, UniqueField>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakTableCellStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakTableCell',\n currentComponentName: 'FlexibleTableRow',\n });\n\n const [isFocused, setFocused] = useState(false);\n const [nestedComponent, setNestedComponent] = useState<INestedComponent<keyof Row>>(() => ({\n isOpen: isExpandableRowComponentInitiallyOpen,\n }));\n\n const isEditable = !isLoading && (isNotEmpty(onRowClick) || isNotEmpty(onRowHover));\n const isClickable = !isLoading && (isNotEmpty(onRowClick) || isNotEmpty(expandableRowComponent));\n\n const { isOpen: isNestedComponentExpanded, cellKey: nestedComponentCellKey } = nestedComponent;\n\n // уникальная разработка, позволяющая прокидывать data-атрибуты в <tr>\n // например: rowAttributes={['id']} => <tr data-id=\"x\" />\n const rowData: IDataAttributes = Object.fromEntries(\n rowAttributes?.map((attribute) => [attribute, item[attribute]]) ?? [],\n );\n\n const handleMouseEnter = (event: MouseEvent) => {\n if (isNotEmpty(uniqueField) && isNotEmpty(onRowHover)) {\n event.stopPropagation();\n onRowHover(item[uniqueField]);\n }\n if (isFocusable) {\n setFocused(true);\n }\n };\n\n const handleMouseLeave = () => {\n onRowHover?.(undefined);\n if (isFocusable) {\n setFocused(false);\n }\n };\n\n const closeNestedComponent = () => {\n setNestedComponent({ isOpen: false });\n };\n\n const updateNestedComponent = useCallback((component: ReactNode, cellKey: keyof Row) => {\n if (isEmpty(component)) {\n closeNestedComponent();\n } else {\n setNestedComponent({ isOpen: true, component, cellKey });\n }\n }, []);\n\n const handleRowClick = () => {\n if (isNotEmpty(uniqueField)) {\n onRowClick?.(item[uniqueField]);\n }\n if (isEmpty(expandableRowComponent)) {\n return;\n }\n\n if (!isNestedComponentExpanded) {\n setNestedComponent({ isOpen: true });\n } else if (isEmpty(nestedComponentCellKey)) {\n closeNestedComponent();\n }\n };\n\n const Table = TableRenders[renderMode];\n\n return (\n <>\n <Table.Row\n ref={rowRef}\n className={clsx(classes.root, {\n [classes.active]: isActive,\n [classes.editable]: isEditable,\n [classes.clickable]: isClickable,\n })}\n {...(!isLoading && {\n onClick: handleRowClick,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n })}\n {...addDataAttributes({\n ...rowData,\n active: isActive ? true : undefined,\n editable: isEditable ? true : undefined,\n isExpandableComponentActive: isNestedComponentExpanded ? true : undefined,\n })}\n >\n {columns.map((key, i) => (\n <FlexibleTableCell\n key={key}\n isSticky={isFirstColumnSticky && i === 0}\n isSecond={isFirstColumnSticky && i === 1}\n isLoading={isLoading}\n row={item}\n config={config}\n columnName={key}\n tweakStyles={tweakTableCellStyles}\n renderMode={renderMode}\n isFocusedRow={isFocused}\n isActiveRow={isActive}\n isNestedComponentExpanded={isNestedComponentExpanded && nestedComponentCellKey === key}\n isRowNestedComponentExpanded={\n isNestedComponentExpanded && isEmpty(nestedComponentCellKey)\n }\n updateNestedComponent={updateNestedComponent}\n />\n ))}\n </Table.Row>\n\n {isNestedComponentExpanded && (\n <Table.Row className={classes.root}>\n <Table.Cell className={classes.nestedComponent} colSpan={columns.length}>\n {nestedComponent.component ??\n expandableRowComponent?.(item, true, closeNestedComponent)}\n </Table.Cell>\n </Table.Row>\n )}\n </>\n );\n});\n","import { ReactNode, RefObject, useCallback, useEffect, useMemo, useRef } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n applyAction,\n getTestId,\n indexMap,\n isArrayNotEmpty,\n isEmpty,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useIntersectionRef, useMergedRefs, useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { ThemedPreloader } from '../ThemedPreloader';\nimport { FlexibleTableRow, IFlexibleTableRowProps } from './components';\nimport { TableRenders } from './constants';\nimport { hasHorizontalScrollBar } from './helpers';\nimport {\n ITableRow,\n IFlexibleTableConfigType,\n IInfinityScrollConfig,\n IFlexibleTableRenderMode,\n IHeaderContent,\n} from './types';\nimport { useStyles, IFlexibleTableStyles } from './FlexibleTable.styles';\n\nexport interface IFlexibleTableProps<\n Row extends ITableRow,\n HeaderContent extends IHeaderContent<Row>,\n UniqueField extends keyof Row,\n> extends ICommonProps<IFlexibleTableStyles>,\n Pick<\n IFlexibleTableRowProps<Row, HeaderContent, UniqueField>,\n | 'uniqueField'\n | 'rowAttributes'\n | 'isFirstColumnSticky'\n | 'expandableRowComponent'\n | 'onRowClick'\n | 'onRowHover'\n | 'rowRef'\n > {\n content: Row[];\n /** @default 'table' */\n renderMode?: IFlexibleTableRenderMode;\n headerContent?: HeaderContent;\n config: IFlexibleTableConfigType<Row, HeaderContent>;\n enabledColumns?: Array<keyof Row & string>;\n /** Индексы строк, на которые навешивается класс `active` */\n activeRows?: number[];\n /** @default false */\n isLoading?: boolean;\n /** @default false */\n isHorizontallyScrollable?: boolean;\n /**\n * Добавляет строкам состояние `isFocused`, вызывает ререндер при наведении\n * @default false\n */\n isRowFocusable?: boolean;\n infinityScrollConfig?: IInfinityScrollConfig;\n onHeadClick?: (column: keyof Row) => void;\n refForScroll?: RefObject<HTMLDivElement>;\n nothingFoundContent?: ReactNode;\n /** @default true */\n shouldRenderHeader?: boolean;\n /** @default false */\n isExpandableRowComponentInitiallyOpen?: boolean | ((row: Row, index: number) => boolean);\n}\n\nexport function FlexibleTable<\n Row extends ITableRow,\n HeaderContent extends IHeaderContent<Row> = IHeaderContent<Row>,\n UniqueField extends keyof Row = keyof Row,\n>({\n content,\n headerContent,\n config,\n enabledColumns,\n activeRows,\n uniqueField,\n isLoading = false,\n isFirstColumnSticky = false,\n isHorizontallyScrollable = false,\n isRowFocusable = false,\n infinityScrollConfig: infinityScrollConfigDeprecated,\n renderMode = 'table',\n refForScroll,\n nothingFoundContent,\n data,\n testId,\n tweakStyles,\n shouldRenderHeader = true,\n onHeadClick,\n isExpandableRowComponentInitiallyOpen: isRowInitiallyOpen,\n ...restProps\n}: IFlexibleTableProps<Row, HeaderContent, UniqueField>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakTableRowStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakTableRow',\n currentComponentName: 'FlexibleTable',\n });\n\n const scrollRef = useRef<HTMLDivElement>(null);\n\n const columns = useMemo(() => enabledColumns ?? Object.keys(config), [enabledColumns, config]);\n\n const getTableRowProps = (\n item: Row,\n index: number,\n ): IFlexibleTableRowProps<Row, HeaderContent, UniqueField> => ({\n ...restProps,\n item,\n renderMode,\n config,\n columns,\n uniqueField,\n isLoading,\n isFirstColumnSticky,\n isFocusable: isRowFocusable,\n tweakStyles: tweakTableRowStyles,\n isExpandableRowComponentInitiallyOpen: applyAction(isRowInitiallyOpen, item, index),\n });\n\n const getDataScrollAttributeSetter = useCallback(\n (key: string, setter: (el: HTMLDivElement) => boolean) => (el?: HTMLDivElement) => {\n if (isHorizontallyScrollable && isNotEmpty(el) && setter(el)) {\n el.dataset[key] = 'true';\n } else {\n el?.removeAttribute(`data-${key}`);\n }\n },\n [isHorizontallyScrollable],\n );\n\n // Когда таблица имеет скроллбар - добавляем аттрибут scrollable\n const setHasScrollBarAttribute = useMemo(\n () => getDataScrollAttributeSetter('scrollable', hasHorizontalScrollBar),\n [getDataScrollAttributeSetter],\n );\n\n // Когда таблица проскроллена - добавляем аттрибут scrolled\n const setIsScrolledAttribute = useMemo(\n () => getDataScrollAttributeSetter('scrolled', (el) => el.scrollLeft > 0),\n [getDataScrollAttributeSetter],\n );\n\n const ref = useMergedRefs([\n refForScroll,\n scrollRef,\n setHasScrollBarAttribute,\n setIsScrolledAttribute,\n ]);\n\n const infinityScrollConfig = infinityScrollConfigDeprecated && {\n isLoading: infinityScrollConfigDeprecated.isLoading,\n onInfinityScroll: () =>\n infinityScrollConfigDeprecated.onInfinityScroll(\n (infinityScrollConfigDeprecated.activePage ?? 0) + 1,\n ),\n isEnabled:\n infinityScrollConfigDeprecated.isEnabled ?? !infinityScrollConfigDeprecated.isLastPage,\n };\n const intersectionRef = useIntersectionRef({\n isDisabled: !infinityScrollConfig?.isEnabled || infinityScrollConfig.isLoading,\n onIntersection: infinityScrollConfig?.onInfinityScroll,\n });\n\n const shouldShowNothingFound =\n isReactNodeNotEmpty(nothingFoundContent) &&\n !isArrayNotEmpty(content) &&\n !infinityScrollConfig?.isLoading &&\n !infinityScrollConfig?.isEnabled;\n\n useEffect(() => {\n const scrollContainer = scrollRef.current;\n if (isEmpty(scrollContainer) || !isHorizontallyScrollable) {\n return;\n }\n\n const scrollHandler = () => {\n setIsScrolledAttribute(scrollContainer);\n };\n\n const resizeHandler = () => {\n setHasScrollBarAttribute(scrollContainer);\n };\n\n scrollContainer.addEventListener('scroll', scrollHandler);\n window.addEventListener('resize', resizeHandler);\n\n return () => {\n scrollContainer.removeEventListener('scroll', scrollHandler);\n window.removeEventListener('resize', resizeHandler);\n };\n }, [scrollRef, isHorizontallyScrollable, setIsScrolledAttribute, setHasScrollBarAttribute]);\n\n const activeRowsSet = useMemo(() => new Set(activeRows), [activeRows]);\n\n const Table = TableRenders[renderMode];\n\n return (\n <div\n ref={ref}\n className={clsx(classes.flexibleTableWrapper, { [classes.scroll]: isHorizontallyScrollable })}\n >\n <Table.Root className={classes.root} {...addDataAttributes({ ...data, isLoading }, testId)}>\n {shouldRenderHeader && (\n <Table.Head className={classes.head}>\n <Table.Row className={classes.headerRow}>\n {columns.map((key, i) => {\n const {\n position,\n minWidth,\n width,\n maxWidth,\n titleAlign = 'left',\n right,\n left,\n title = '',\n shouldRenderDataId,\n } = config?.[key] ?? {};\n const isSticky = position === 'sticky' || (isFirstColumnSticky && i === 0);\n\n return (\n <Table.Header\n key={key}\n className={clsx(classes.header, {\n [classes.headerSticky]: isSticky,\n [classes.headerSecond]: isFirstColumnSticky && i === 1,\n })}\n style={{\n minWidth,\n width,\n maxWidth,\n textAlign: titleAlign,\n position: isSticky ? 'sticky' : position,\n right,\n left,\n }}\n onClick={isNotEmpty(onHeadClick) ? () => onHeadClick(key) : undefined}\n {...addDataAttributes({ id: shouldRenderDataId ? key : undefined })}\n >\n {applyAction(title, { value: headerContent?.[key] as HeaderContent[string] })}\n </Table.Header>\n );\n })}\n </Table.Row>\n </Table.Head>\n )}\n <Table.Body className={classes.body}>\n {isLoading ? (\n indexMap(6, (i) => <FlexibleTableRow {...getTableRowProps({} as Row, i)} key={i} />)\n ) : (\n <>\n {shouldShowNothingFound && (\n <Table.Row className={classes.nothingFoundRow}>\n <Table.Cell className={classes.nothingFound} colSpan={columns.length}>\n {nothingFoundContent}\n </Table.Cell>\n </Table.Row>\n )}\n\n {content.map((item, i) => (\n <FlexibleTableRow\n {...getTableRowProps(item, i)}\n isActive={activeRowsSet.has(i)}\n key={isNotEmpty(uniqueField) ? item[uniqueField] : i}\n />\n ))}\n\n {infinityScrollConfig?.isEnabled && (\n <Table.Row className={classes.loaderRow}>\n <Table.Cell className={classes.loaderCell} colSpan={columns.length}>\n <div ref={intersectionRef} className={classes.loader}>\n <ThemedPreloader type=\"dots\" testId={getTestId(testId, 'loader')} />\n </div>\n </Table.Cell>\n </Table.Row>\n )}\n </>\n )}\n </Table.Body>\n </Table.Root>\n </div>\n );\n}\n","import { createThemedStyles, ITweakStyles } from '../../../../theme';\nimport { ICheckboxStyles } from '../../../Checkbox';\n\nexport const useStyles = createThemedStyles('DocActions', {\n docActions: {\n display: 'grid',\n alignItems: 'center',\n gridTemplateColumns: 'max-content 1fr',\n },\n\n neutral: {},\n\n inverse: {},\n\n counterWrapper: {},\n\n title: {},\n\n actionsWrapper: {\n justifySelf: 'end',\n },\n});\n\nexport type IDocActionsStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakCheckbox: ICheckboxStyles;\n }\n>;\n","import { FC, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Checkbox, ICheckboxProps } from '../../../Checkbox';\nimport { IDocActionsView } from './types';\nimport { IDocActionsStyles, useStyles } from './DocActions.styles';\n\nexport interface IDocActionsProps\n extends Omit<ICheckboxProps<never>, 'tweakStyles'>,\n ICommonProps<IDocActionsStyles> {\n title: string;\n /** @default 'neutral' */\n view?: IDocActionsView;\n children: ReactNode;\n}\n\nexport const DocActions: FC<IDocActionsProps> = ({\n title,\n view = 'neutral',\n children,\n tweakStyles,\n ...checkBoxProps\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakCheckboxStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakCheckbox',\n currentComponentName: 'DocActions',\n });\n\n return (\n <div className={clsx(classes.docActions, classes[view])}>\n <div className={classes.counterWrapper}>\n <Checkbox tweakStyles={tweakCheckboxStyles} {...checkBoxProps}>\n <span className={classes.title}>{title}</span>\n </Checkbox>\n </div>\n <div className={classes.actionsWrapper}>{children}</div>\n </div>\n );\n};\n","export const DOC_ACTIONS_VIEWS = ['neutral', 'inverse'] as const;\n","export const DEFAULT_TIMEOUT = 150;\n","import { createUseStyles } from 'react-jss';\nimport { animations, ITweakStyles } from '../../theme';\nimport { IDocActionsStyles } from './components';\n\nexport const useStyles = createUseStyles({\n ...animations.slideUp,\n});\n\nexport type IFloatDocActionsStyles = ITweakStyles<\n typeof useStyles,\n { tweakDocActions: IDocActionsStyles }\n>;\n","import { FC } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { DocActions, IDocActionsProps } from './components';\nimport { DEFAULT_TIMEOUT } from './constants';\nimport { useStyles } from './FloatDocActions.styles';\n\nexport interface IFloatDocActionsProps extends IDocActionsProps {\n isOpen: boolean;\n}\n\nexport const FloatDocActions: FC<IFloatDocActionsProps> = ({\n isOpen,\n children,\n ...docActionsProps\n}) => {\n const classes = useStyles();\n\n return (\n <CSSTransition\n in={isOpen}\n timeout={DEFAULT_TIMEOUT}\n mountOnEnter\n unmountOnExit\n classNames={{\n enter: classes['slide-up-enter'],\n enterActive: classes['slide-up-enter-active'],\n exit: classes['slide-up-exit'],\n exitActive: classes['slide-up-exit-active'],\n }}\n >\n <DocActions {...docActionsProps}>{children}</DocActions>\n </CSSTransition>\n );\n};\n","import { animations, colors, createThemedStyles, dimensions, ITweakStyles } from '../../theme';\nimport { IInputStyles } from '../Input';\n\nexport const inputStyles: IInputStyles = {\n tweakControlWrapper: {\n controlWrapper: {\n '--increment-buttons-width': '36px',\n '--increment-buttons-gap': '1px',\n '--increment-buttons-margin': '1px',\n '--increment-button-icon-size': '16px',\n },\n },\n};\n\nexport const useStyles = createThemedStyles('IncrementInput', {\n buttons: {\n display: 'flex',\n flexDirection: 'column',\n height: 'calc(100% - var(--increment-buttons-margin) * 2)',\n margin: 'var(--increment-buttons-margin)',\n gap: 'var(--increment-buttons-gap)',\n flexShrink: 0,\n order: 1000, // сдвигаем кнопки на самый конец\n\n zIndex: dimensions.Z_INDEX.CONTROL_FOCUS + 1,\n },\n\n button: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 'var(--increment-buttons-width)',\n flexGrow: 1,\n\n cursor: 'pointer',\n border: 'none',\n outline: 'none',\n color: colors.FONT_MEDIUM,\n backgroundColor: colors.GREY_BACKGROUND,\n transition: animations.defaultTransition,\n transitionProperty: 'background-color, color',\n\n '&:hover, &:focus': {\n backgroundColor: colors.GREY_HOVER,\n },\n\n '&:active': {\n backgroundColor: colors.GREY_ACTIVE,\n },\n },\n\n disabledButton: {\n cursor: 'default',\n color: colors.FONT_DISABLED,\n backgroundColor: colors.CLASSIC_WHITE,\n\n '&:hover': {\n backgroundColor: colors.CLASSIC_WHITE,\n },\n },\n\n errorButton: {},\n\n icon: {\n width: 'var(--increment-button-icon-size)',\n height: 'var(--increment-button-icon-size)',\n },\n});\n\nexport type IIncrementInputStyles = ITweakStyles<typeof useStyles, { tweakInput: IInputStyles }>;\n","import { FC, useEffect } from 'react';\nimport clsx from 'clsx';\nimport { isNotEmpty, isNumberInteger } from '@true-engineering/true-react-platform-helpers';\nimport { getNumberInRange, getNumberLength } from '../../helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { INumberInputProps, NumberInput } from '../NumberInput';\nimport { useStyles, IIncrementInputStyles, inputStyles } from './IncrementInput.styles';\n\nexport interface IIncrementInputProps\n extends Omit<INumberInputProps, 'canBeFloat' | 'precision' | 'tweakStyles'>,\n ICommonProps<IIncrementInputStyles> {\n /** @default 1 */\n step?: number;\n}\n\nexport const IncrementInput: FC<IIncrementInputProps> = ({\n value,\n onChange,\n min,\n max,\n step = 1,\n intPartPrecision,\n tweakStyles,\n isDisabled,\n isReadonly,\n isInvalid,\n ...props\n}) => {\n const tweakInputStyles = useTweakStyles({\n innerStyles: inputStyles,\n tweakStyles,\n className: 'tweakInput',\n currentComponentName: 'IncrementInput',\n });\n\n const classes = useStyles({ theme: tweakStyles });\n\n const isEditDisabled = isDisabled || isReadonly;\n\n const isIncreaseDisabled =\n isEditDisabled ||\n (isNotEmpty(intPartPrecision) && getNumberLength((value ?? 0) + step) > intPartPrecision) ||\n (isNotEmpty(max) && isNotEmpty(value) && value >= max);\n\n const isDecreaseDisabled =\n isEditDisabled || (isNotEmpty(min) && isNotEmpty(value) && value <= min);\n\n const increment = (): void => {\n onChange(getNumberInRange((value ?? 0) + step, min, max));\n };\n\n const decrement = (): void => {\n onChange(getNumberInRange((value ?? 0) - step, min, max));\n };\n\n useEffect(() => {\n if (!isNumberInteger(step)) {\n console.error('Параметр step должен быть целым числом');\n }\n }, [step]);\n\n return (\n <NumberInput\n {...props}\n isInvalid={isInvalid}\n isDisabled={isDisabled}\n isReadonly={isReadonly}\n min={min}\n max={max}\n intPartPrecision={intPartPrecision}\n onChange={onChange}\n value={value}\n tweakStyles={tweakInputStyles}\n >\n <div className={classes.buttons}>\n <button\n className={clsx(classes.button, {\n [classes.disabledButton]: isIncreaseDisabled,\n [classes.errorButton]: isInvalid,\n })}\n type=\"button\"\n disabled={isIncreaseDisabled}\n onClick={increment}\n >\n <div className={classes.icon}>\n <Icon type=\"plus\" />\n </div>\n </button>\n\n <button\n className={clsx(classes.button, {\n [classes.disabledButton]: isDecreaseDisabled,\n [classes.errorButton]: isInvalid,\n })}\n type=\"button\"\n disabled={isDecreaseDisabled}\n onClick={decrement}\n >\n <div className={classes.icon}>\n <Icon type=\"minus\" />\n </div>\n </button>\n </div>\n </NumberInput>\n );\n};\n","import { rgba } from '../../helpers';\nimport { colors, dimensions, ITweakStyles, createThemedStyles } from '../../theme';\nimport { IIconButtonStyles } from '../IconButton';\n\nconst VERTICAL_OVERLAY_PADDING = 50;\n\nconst MODAL_HORIZONTAL_PADDING_L = 40;\nconst MODAL_HORIZONTAL_PADDING_M = 36;\nconst MODAL_HORIZONTAL_PADDING_S = 26;\n\nconst MODAL_CLOSE_BUTTON_SIZE = 40;\nconst MODAL_CLOSE_BUTTON_ICON_SIZE = 30;\n\nexport const useStyles = createThemedStyles('Modal', {\n root: {},\n\n fixedPosition: {\n position: 'fixed',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 999,\n overflowX: 'hidden',\n '-webkit-overflow-scrolling': 'touch',\n\n '& $innerOverlay': {\n display: 'flex',\n width: '100%',\n minHeight: '100%',\n boxSizing: 'border-box',\n },\n },\n\n innerOverlay: {},\n\n sideBar: {\n '& $modal': {\n borderRadius: 0,\n margin: 0,\n minHeight: '100%',\n },\n },\n\n 'position-static': {},\n\n 'position-left': {},\n\n 'position-right': {\n justifyContent: 'flex-end',\n },\n\n 'position-center': {\n padding: [VERTICAL_OVERLAY_PADDING, 30],\n },\n\n overlay: {\n backgroundColor: rgba(colors.BORDER_MAIN, 0.5),\n },\n\n modal: {\n backgroundColor: colors.CLASSIC_WHITE,\n borderRadius: dimensions.BORDER_RADIUS_LARGE,\n boxShadow: `0 8px 32px -8px ${rgba(colors.FONT_MAIN, 0.24)}, 0 -2px 6px 0 ${rgba(\n colors.FONT_MAIN,\n 0.04,\n )}, 0 0 1px 0 ${rgba(colors.FONT_MAIN, 0.15)}`,\n margin: 'auto',\n position: 'relative',\n // do not override this\n maxWidth: '100%',\n },\n\n title: {\n fontSize: 28,\n lineHeight: 1.3,\n marginTop: 0,\n },\n\n titleWithCloseButton: {\n paddingRight: 32,\n },\n\n close: {\n position: 'absolute',\n },\n\n content: {},\n\n footer: {\n display: 'flex',\n gap: 12,\n },\n\n stickyFooterWrapper: {\n position: 'sticky',\n bottom: 0,\n marginTop: 'auto',\n zIndex: 1,\n },\n\n stickyFooter: {\n borderTop: [1, 'solid', colors.BORDER_LIGHT],\n padding: [16, 40],\n borderBottomLeftRadius: dimensions.BORDER_RADIUS_LARGE,\n borderBottomRightRadius: dimensions.BORDER_RADIUS_LARGE,\n backgroundColor: colors.CLASSIC_WHITE,\n },\n\n 'buttons-left': {\n justifyContent: 'flex-start',\n },\n\n 'buttons-center': {\n justifyContent: 'center',\n },\n\n 'buttons-right': {\n justifyContent: 'flex-end',\n },\n\n withoutFooter: {},\n\n withStickyFooter: {\n display: 'flex',\n flexDirection: 'column',\n\n '& $content': {\n position: 'relative',\n zIndex: 1,\n },\n },\n\n footerWrapper: {},\n\n l: {\n '& $modal': {\n padding: [36, MODAL_HORIZONTAL_PADDING_L],\n fontSize: 16,\n width: 560,\n\n '&$withStickyFooter': {\n paddingBottom: 0,\n },\n },\n\n '& $withoutFooter': {\n paddingBottom: 54,\n },\n\n '& $title': {\n fontSize: 28,\n marginBottom: 32,\n },\n\n '& $close': {\n right: 27,\n top: 22,\n },\n\n '& $footerWrapper': {\n paddingTop: 40,\n },\n\n '& $stickyFooter': {\n paddingLeft: MODAL_HORIZONTAL_PADDING_L,\n paddingRight: MODAL_HORIZONTAL_PADDING_L,\n marginLeft: -MODAL_HORIZONTAL_PADDING_L,\n marginRight: -MODAL_HORIZONTAL_PADDING_L,\n },\n },\n\n m: {\n '& $modal': {\n padding: [32, MODAL_HORIZONTAL_PADDING_M],\n width: 480,\n\n '&$withStickyFooter': {\n paddingBottom: 0,\n },\n },\n\n '& $withoutFooter': {\n paddingBottom: 48,\n },\n\n '& $title': {\n fontSize: 24,\n marginBottom: 28,\n },\n\n '& $close': {\n right: 23,\n top: 18,\n },\n\n '& $footerWrapper': {\n paddingTop: 36,\n },\n\n '& $stickyFooter': {\n paddingLeft: MODAL_HORIZONTAL_PADDING_M,\n paddingRight: MODAL_HORIZONTAL_PADDING_M,\n marginLeft: -MODAL_HORIZONTAL_PADDING_M,\n marginRight: -MODAL_HORIZONTAL_PADDING_M,\n },\n },\n\n s: {\n '& $modal': {\n padding: [24, MODAL_HORIZONTAL_PADDING_S],\n fontSize: 14,\n width: 360,\n\n '&$withStickyFooter': {\n paddingBottom: 0,\n },\n },\n\n '& $withoutFooter': {\n paddingBottom: 40,\n },\n\n '& $title': {\n fontSize: 20,\n marginBottom: 15,\n },\n\n '& $close': {\n right: 14,\n top: 11,\n },\n\n '& $footerWrapper': {\n paddingTop: 28,\n },\n\n '& $stickyFooter': {\n paddingLeft: MODAL_HORIZONTAL_PADDING_S,\n paddingRight: MODAL_HORIZONTAL_PADDING_S,\n marginLeft: -MODAL_HORIZONTAL_PADDING_S,\n marginRight: -MODAL_HORIZONTAL_PADDING_S,\n },\n },\n\n modalWrapper: {\n display: 'flex',\n width: '100%',\n },\n\n // TODO: вынести анимацию ?\n /* ----------- SHOW / HIDE ANIMATION ----------- */\n animationEnd: {\n '& $modal': {\n opacity: 0,\n },\n\n '& $position-center $modal': {\n transform: 'translateY(35px)',\n },\n\n '& $position-right $modal': {\n transform: 'translateX(35px)',\n },\n\n '& $position-left $modal': {\n transform: 'translateX(-35px)',\n },\n\n '& $overlay': {\n opacity: 0,\n },\n },\n\n animationStart: {\n '& $modal': {\n opacity: 1,\n transition: '0.15s ease',\n transitionProperty: 'transform, opacity',\n },\n\n '& $position-center $modal': {\n transform: 'translateY(0)',\n },\n\n '& $position-right $modal': {\n transform: 'translateX(0)',\n },\n\n '& $position-left $modal': {\n transform: 'translateX(0)',\n },\n\n '& $overlay': {\n opacity: 1,\n transition: 'opacity 0.2s ease',\n },\n },\n\n 'modal-enter': { extend: 'animationEnd' },\n 'modal-enter-active': { extend: 'animationStart' },\n 'modal-exit': { extend: 'animationStart' },\n 'modal-exit-active': { extend: 'animationEnd' },\n});\n\nexport const closeButtonStyles: IIconButtonStyles = {\n m: {\n width: MODAL_CLOSE_BUTTON_SIZE,\n height: MODAL_CLOSE_BUTTON_SIZE,\n },\n\n icon: {\n width: MODAL_CLOSE_BUTTON_ICON_SIZE,\n height: MODAL_CLOSE_BUTTON_ICON_SIZE,\n },\n};\n\nexport type IModalStyles = ITweakStyles<typeof useStyles, { tweakCloseButton: IIconButtonStyles }>;\n","import { FC, ReactNode, MouseEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport { RemoveScroll } from 'react-remove-scroll';\nimport { CSSTransition } from 'react-transition-group';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n getTestId,\n isArrayNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { IconButton } from '../IconButton';\nimport { IModalPosition, IModalTransitionProps } from './types';\nimport { useStyles, IModalStyles, closeButtonStyles } from './Modal.styles';\n\nexport interface IModalProps extends ICommonProps<IModalStyles>, IModalTransitionProps {\n title?: ReactNode;\n /** @default 'l' */\n size?: 'l' | 'm' | 's';\n /** @default false */\n isFooterSticky?: boolean;\n footer?: ReactNode;\n /** @deprecated use {@link footer} */\n buttons?: ReactNode[];\n /** @default 'right' */\n buttonsAlign?: 'left' | 'center' | 'right';\n children?: ReactNode | ReactNode[];\n /** @default 'center' */\n position?: IModalPosition;\n /** @default true */\n hasCloseButton?: boolean;\n /** @default true */\n hasOverlay?: boolean;\n /** @default true */\n shouldCloseOnOverlayClick?: boolean;\n /** @default true */\n shouldCloseOnEsc?: boolean;\n /** @default true */\n shouldBlockScroll?: boolean;\n /** @default false */\n isOpen?: boolean;\n zIndex?: number;\n onClose?: () => void;\n}\n\nexport const Modal: FC<IModalProps> = ({\n data,\n tweakStyles,\n title,\n size = 'l',\n isFooterSticky = false,\n footer,\n buttons,\n buttonsAlign = 'right',\n hasCloseButton = true,\n hasOverlay = true,\n isOpen = false,\n position = 'center',\n children,\n zIndex,\n testId,\n shouldCloseOnOverlayClick = true,\n shouldCloseOnEsc = true,\n shouldBlockScroll = true,\n timeout = 150,\n unmountOnExit = true,\n onClose,\n ...restProps\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakCloseButtonStyles = useTweakStyles({\n innerStyles: closeButtonStyles,\n tweakStyles,\n className: 'tweakCloseButton',\n currentComponentName: 'Modal',\n });\n\n const [isClickOnOverlay, setIsClickOnOverlay] = useState(false);\n\n const isModalOpen = restProps.in ?? isOpen;\n const hasFooter = isReactNodeNotEmpty(footer) || isArrayNotEmpty(buttons);\n const overlay = useRef<HTMLDivElement>(null);\n\n // Клик на оверлее обрабатываем через связку onMouseDown и onMouseUp, т.к. клик\n // создает ложные срабатывания (баг при старте клика на модалке и отпусканием мышки уже на оверлее)\n const handleOutsideMouseDown = (event: MouseEvent) => {\n if (onClose !== undefined && event.target === overlay.current) {\n setIsClickOnOverlay(true);\n }\n };\n\n const handleOutsideMouseUp = (event: MouseEvent) => {\n if (onClose === undefined) {\n return;\n }\n if (event.target === overlay.current && isClickOnOverlay) {\n onClose();\n }\n setIsClickOnOverlay(false);\n };\n\n const handleEscClose = useCallback(\n (event: KeyboardEvent) => {\n if (event.code === 'Escape' && onClose !== undefined) {\n onClose();\n }\n },\n [onClose],\n );\n\n useEffect(() => {\n if (!shouldCloseOnEsc || onClose === undefined || !isModalOpen) {\n return () => null;\n }\n\n document.addEventListener('keydown', handleEscClose);\n return () => document.removeEventListener('keydown', handleEscClose);\n }, [shouldCloseOnEsc, onClose, isModalOpen, handleEscClose]);\n\n return (\n <CSSTransition\n in={isModalOpen}\n timeout={timeout}\n unmountOnExit={unmountOnExit}\n classNames={{\n enter: classes['modal-enter'],\n enterActive: classes['modal-enter-active'],\n exit: classes['modal-exit'],\n exitActive: classes['modal-exit-active'],\n }}\n {...restProps}\n >\n <div className={classes.modalWrapper}>\n <RemoveScroll enabled={shouldBlockScroll} forwardProps>\n <div\n className={clsx(classes.root, classes[size], {\n [classes.overlay]: position !== 'static' && hasOverlay,\n [classes.sideBar]: position === 'left' || position === 'right',\n [classes.fixedPosition]: position !== 'static',\n })}\n style={{ zIndex }}\n {...addDataAttributes(data, testId)}\n >\n <div\n ref={overlay}\n className={clsx(classes.innerOverlay, classes[`position-${position}`])}\n onMouseDown={shouldCloseOnOverlayClick ? handleOutsideMouseDown : undefined}\n onMouseUp={shouldCloseOnOverlayClick ? handleOutsideMouseUp : undefined}\n >\n <div\n className={clsx(classes.modal, {\n [classes.withoutFooter]: !hasFooter,\n [classes.withStickyFooter]: isFooterSticky,\n })}\n >\n {hasCloseButton && (\n <div className={classes.close}>\n <IconButton\n testId={getTestId(testId, 'close-button')}\n tweakStyles={tweakCloseButtonStyles}\n view=\"cancel-light\"\n icon=\"close\"\n onClick={onClose}\n />\n </div>\n )}\n {isReactNodeNotEmpty(title) && (\n <h3\n className={clsx(classes.title, {\n [classes.titleWithCloseButton]: hasCloseButton,\n })}\n >\n {title}\n </h3>\n )}\n {isReactNodeNotEmpty(children) && <div className={classes.content}>{children}</div>}\n {hasFooter && (\n <div\n className={clsx(classes.footerWrapper, {\n [classes.stickyFooterWrapper]: isFooterSticky,\n })}\n >\n <div\n className={clsx(classes.footer, classes[`buttons-${buttonsAlign}`], {\n [classes.stickyFooter]: isFooterSticky,\n })}\n >\n {isReactNodeNotEmpty(footer) ? footer : buttons}\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n </RemoveScroll>\n </div>\n </CSSTransition>\n );\n};\n","import { rgba } from '../../helpers';\nimport { colors, ITweakStyles, createThemedStyles, animations } from '../../theme';\nimport { IListStyles } from '../List';\n\nexport const useStyles = createThemedStyles('MoreMenu', {\n root: {\n position: 'relative',\n },\n\n hasCircle: {},\n\n button: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n backgroundColor: 'transparent',\n color: colors.FONT_MEDIUM,\n padding: 0,\n borderRadius: '50%',\n border: 'none',\n cursor: 'pointer',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color',\n\n '&$hasCircle': {\n backgroundColor: rgba(colors.GREY_HOVER, 0.5),\n },\n\n '&:hover': {\n backgroundColor: rgba(colors.BORDER_MAIN, 0.5),\n },\n\n '&:focus': {\n backgroundColor: rgba(colors.FONT_DISABLED, 0.2),\n },\n\n '&:active, &$active': {\n backgroundColor: rgba(colors.FONT_DISABLED, 0.5),\n },\n\n '&$disabled': {\n backgroundColor: rgba(colors.GREY_FOCUS, 0.5),\n color: colors.BORDER_MAIN,\n },\n },\n\n icon: {\n width: 30,\n height: 30,\n },\n\n active: {},\n\n disabled: {\n cursor: 'default',\n },\n\n menu: {\n position: 'absolute',\n zIndex: 5,\n top: '100%',\n right: 0,\n marginTop: 6,\n },\n});\n\nexport type IMoreMenuStyles = ITweakStyles<typeof useStyles, { tweakList: IListStyles }>;\n","import { FC, MouseEvent, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes, getTestId } from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles, useOnClickOutsideWithRef } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { IListItem, List } from '../List';\nimport { useStyles, IMoreMenuStyles } from './MoreMenu.styles';\n\nexport interface IMoreMenuProps extends ICommonProps<IMoreMenuStyles> {\n items: IListItem[];\n /** @default false */\n isDisabled?: boolean;\n /** @default true */\n hasDefaultStateBackground?: boolean;\n onMenuOpen?: () => void;\n onMenuClose?: () => void;\n}\n\n/** @deprecated Используйте {@link import('../NewMoreMenu').NewMoreMenu NewMoreMenu} */\nexport const MoreMenu: FC<IMoreMenuProps> = ({\n items,\n isDisabled = false,\n hasDefaultStateBackground = true,\n data,\n testId,\n tweakStyles,\n onMenuOpen,\n onMenuClose,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakListStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakList',\n currentComponentName: 'MoreMenu',\n });\n\n const [isMenuShown, setIsMenuShown] = useState(false);\n const list = useRef<HTMLDivElement>(null);\n const button = useRef<HTMLButtonElement>(null);\n\n const isButtonDisabled = isDisabled || items.length === 0;\n\n const toggleMenu = (event: MouseEvent) => {\n const isShown = !isMenuShown;\n event.stopPropagation();\n setIsMenuShown(isShown);\n if (isShown) {\n onMenuOpen?.();\n } else {\n onMenuClose?.();\n }\n };\n\n const handleCloseMenu = () => {\n setIsMenuShown(false);\n onMenuClose?.();\n };\n\n useOnClickOutsideWithRef(list, handleCloseMenu, button);\n\n return (\n <div className={classes.root}>\n <button\n ref={button}\n className={clsx(classes.button, {\n [classes.hasCircle]: hasDefaultStateBackground,\n [classes.disabled]: isButtonDisabled,\n [classes.active]: isMenuShown,\n })}\n onClick={!isButtonDisabled ? toggleMenu : undefined}\n {...addDataAttributes(data, testId)}\n >\n <div className={classes.icon}>\n <Icon type=\"menu\" />\n </div>\n </button>\n {isMenuShown && !isButtonDisabled && (\n <div className={classes.menu} ref={list}>\n <List\n items={items}\n testId={getTestId(testId, 'list')}\n tweakStyles={tweakListStyles}\n onClick={handleCloseMenu}\n />\n </div>\n )}\n </div>\n );\n};\n","import { ITweakStyles, createThemedStyles } from '../../../../theme';\n\nexport const useStyles = createThemedStyles('MultiSelectInput', {\n root: {\n display: 'flex',\n justifyContent: 'center',\n flexDirection: 'column',\n height: '100%',\n padding: [0, 12],\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n\n placeholder: {\n fontSize: 16,\n userSelect: 'none',\n },\n\n placeholderSmall: {\n fontSize: 12,\n marginBottom: 2,\n position: 'relative',\n },\n\n values: {\n width: '100%',\n },\n\n value: {\n width: 'calc(100% - 64px)',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n\n amount: {\n boxSizing: 'border-box',\n position: 'absolute',\n top: 'calc(50% - 11px)',\n right: 44,\n height: 22,\n minWidth: 22,\n fontSize: 14,\n lineHeight: '16px',\n textAlign: 'center',\n padding: [2, 4],\n },\n\n indicator: {\n position: 'absolute',\n top: 0,\n right: 0,\n height: '100%',\n width: 36,\n borderRadius: 6,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n arrow: {\n width: 20,\n height: 20,\n transition: 'transform .2s ease',\n },\n\n arrowUp: {\n transform: 'rotate(180deg)',\n },\n\n indicatorDisabled: {},\n});\n\nexport type IMultiSelectInputStyles = ITweakStyles<typeof useStyles>;\n","import { ReactElement } from 'react';\nimport clsx from 'clsx';\nimport { ICommonProps } from '../../../../types';\nimport { Icon } from '../../../Icon';\nimport { IMultiSelectListValues } from '../../../MultiSelectList';\nimport { useStyles, IMultiSelectInputStyles } from './MultiSelectInput.styles';\n\nexport interface IMultiSelectInputProps<Value>\n extends Pick<ICommonProps<IMultiSelectInputStyles>, 'tweakStyles'> {\n value?: IMultiSelectListValues<Value>;\n isOpen: boolean;\n isDisabled: boolean;\n placeholder: string;\n onToggle: (state: boolean) => void;\n}\n\nexport function MultiSelectInput<Value>({\n value: v,\n isOpen,\n isDisabled = false,\n placeholder = '',\n tweakStyles,\n onToggle,\n}: IMultiSelectInputProps<Value>): ReactElement | null {\n const classes = useStyles({ theme: tweakStyles });\n\n const value = v?.include;\n\n return (\n <div className={classes.root} onClick={() => !isDisabled && onToggle(!isOpen)}>\n {/* Placeholder */}\n {(value === undefined || (value && value.length === 0)) && (\n <div className={classes.placeholder}>{placeholder}</div>\n )}\n {/* Selected options */}\n {value !== undefined && value.length > 0 && (\n <>\n <div className={clsx(classes.placeholder, classes.placeholderSmall)}>{placeholder}</div>\n <div className={classes.values}>\n <div className={classes.value}>{value.join(', ')}</div>\n <div className={classes.amount}>{value.length}</div>\n </div>\n </>\n )}\n {/* Chevron */}\n <div className={clsx(classes.indicator, isDisabled && classes.indicatorDisabled)}>\n <div className={clsx(classes.arrow, isOpen && classes.arrowUp)}>\n <Icon type=\"chevron-down\" />\n </div>\n </div>\n </div>\n );\n}\n","import { ITweakStyles, createThemedStyles } from '../../theme';\nimport { IMultiSelectListStyles } from '../MultiSelectList';\n\nexport const useStyles = createThemedStyles('MultiSelect', {\n root: {\n position: 'relative',\n boxSizing: 'border-box',\n height: '100%',\n width: '100%',\n cursor: 'pointer',\n fontSize: 16,\n },\n\n required: {\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n left: -12,\n top: '50%',\n transform: 'translate(0, -50%)',\n width: 6,\n height: 6,\n borderRadius: '50%',\n },\n },\n\n disabled: {\n cursor: 'default',\n },\n\n listContainer: {\n position: 'absolute',\n top: 'calc(100% + 4px)',\n left: -1,\n right: -1,\n zIndex: 2,\n },\n\n invalid: {},\n\n open: {},\n\n full: {},\n\n left: {},\n\n right: {},\n});\n\nexport const multiSelectListStyles: IMultiSelectListStyles = {\n root: {\n width: '100%',\n },\n};\n\nexport type IMultiSelectStyles = ITweakStyles<\n typeof useStyles,\n { tweakMultiSelectList: IMultiSelectListStyles }\n>;\n","import { useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { useOnClickOutside, useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport {\n MultiSelectList,\n IMultiSelectListValues,\n IMultiSelectLocale,\n IMultiSelectLocaleKey,\n} from '../MultiSelectList';\nimport { MultiSelectInput } from './components';\nimport { IHorizontalCornerConnection } from './types';\nimport { useStyles, IMultiSelectStyles, multiSelectListStyles } from './MultiSelect.styles';\n\nexport interface IMultiSelectProps<Value = string> extends ICommonProps<IMultiSelectStyles> {\n value?: IMultiSelectListValues<Value>;\n /** @default 'full' */\n corners?: IHorizontalCornerConnection;\n /** @default false */\n isInvalid?: boolean;\n /** @default false */\n isRequired?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default '' */\n placeholder?: string;\n localeKey?: IMultiSelectLocaleKey;\n locale?: IMultiSelectLocale;\n onChange: (value?: IMultiSelectListValues<Value>) => void;\n fetchOptions: (value?: string, page?: number) => Promise<Value[]>;\n}\n\nexport function MultiSelect<Value = string>({\n value,\n corners = 'full',\n isInvalid = false,\n isRequired = false,\n isDisabled = false,\n placeholder = '',\n localeKey,\n locale,\n testId,\n data,\n onChange,\n fetchOptions,\n tweakStyles,\n}: IMultiSelectProps<Value>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakMultiSelectListStyles = useTweakStyles({\n innerStyles: multiSelectListStyles,\n tweakStyles,\n className: 'tweakMultiSelectList',\n currentComponentName: 'MultiSelect',\n });\n\n const [isOpen, setIsOpen] = useState(false);\n\n const ref = useRef(null);\n\n const handleOnClose = () => {\n setIsOpen(false);\n };\n\n useOnClickOutside(ref, handleOnClose, classes.root);\n\n return (\n <div\n className={clsx(\n classes.root,\n classes[corners],\n isOpen && classes.open,\n isInvalid && !isDisabled && classes.invalid,\n isRequired && classes.required,\n isDisabled && classes.disabled,\n )}\n {...addDataAttributes(data, testId)}\n >\n {/* Input */}\n <MultiSelectInput\n value={value}\n isOpen={isOpen}\n isDisabled={isDisabled}\n placeholder={placeholder}\n onToggle={(state) => setIsOpen(state)}\n />\n {/* Dropdown */}\n {isOpen && (\n <div className={classes.listContainer} ref={ref}>\n <MultiSelectList\n tweakStyles={tweakMultiSelectListStyles}\n value={value}\n localeKey={localeKey}\n locale={locale}\n fetchOptions={fetchOptions}\n onChange={onChange}\n onClose={handleOnClose}\n />\n </div>\n )}\n </div>\n );\n}\n","import { ITweakStyles, createThemedStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('Notification', {\n root: {\n display: 'flex',\n },\n\n inline: {\n width: 'fit-content',\n },\n\n icon: {\n width: 20,\n height: 20,\n marginRight: 16,\n flexShrink: 0,\n },\n\n body: {\n flexGrow: 1,\n },\n\n title: {\n display: 'block',\n fontWeight: 'bold',\n },\n\n text: {\n display: 'block',\n },\n\n content: {},\n\n s: {},\n\n m: {},\n\n l: {},\n\n withText: {},\n\n withTitle: {},\n\n error: {},\n\n info: {},\n\n warning: {},\n\n ok: {},\n\n 'not-ok': {},\n\n custom: {},\n});\n\nexport type INotificationStyles = ITweakStyles<typeof useStyles>;\n","import { FC, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n addDataTestId,\n isReactNodeNotEmpty,\n isStringNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { Icon, IIcon, renderIcon } from '../Icon';\nimport { INotificationType } from './types';\nimport { useStyles, INotificationStyles } from './Notification.styles';\n\nexport interface INotificationProps extends ICommonProps<INotificationStyles> {\n type: INotificationType;\n /** @default true */\n isFullWidth?: boolean;\n text?: string;\n title?: string;\n /** @default 's' */\n size?: 's' | 'm' | 'l';\n icon?: IIcon;\n children?: ReactNode;\n}\n\nexport const Notification: FC<INotificationProps> = ({\n children,\n type,\n isFullWidth = true,\n text,\n title,\n testId,\n size = 's',\n data,\n icon,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const hasText = isStringNotEmpty(text);\n const hasTitle = isStringNotEmpty(title);\n const isDefaultType = type !== 'custom';\n const hasIcon = isReactNodeNotEmpty(icon) || isDefaultType;\n\n return (\n <div\n className={clsx(classes.root, classes[size], classes[type], {\n [classes.inline]: !isFullWidth,\n [classes.withTitle]: hasTitle,\n [classes.withText]: hasText,\n })}\n {...addDataAttributes(data, testId)}\n >\n {hasIcon && (\n <div className={classes.icon}>\n {isReactNodeNotEmpty(icon)\n ? renderIcon(icon)\n : isDefaultType && <Icon type={`status-${type}`} />}\n </div>\n )}\n <div className={classes.body}>\n {hasTitle && (\n <span className={classes.title} {...addDataTestId(testId, 'title')}>\n {title}\n </span>\n )}\n {hasText && (\n <span className={classes.text} {...addDataTestId(testId, 'text')}>\n {text}\n </span>\n )}\n {isReactNodeNotEmpty(children) && <div className={classes.content}>{children}</div>}\n </div>\n </div>\n );\n};\n","import { colors, createThemedStyles, dimensions, helpers, ITweakStyles } from '../../../../theme';\nimport { IInputStyles } from '../../../Input';\n\nconst ROW_HEIGHT = 40;\nconst LIST_PADDING = 10;\n\nexport const useStyles = createThemedStyles('PhoneInputCountryList', {\n root: {\n borderRadius: dimensions.BORDER_RADIUS_SMALL,\n backgroundColor: colors.CLASSIC_WHITE,\n border: [1, 'solid', colors.BORDER_MAIN],\n boxShadow: '1px 2px 10px rgba(0, 0, 0, 0.25)',\n overflow: 'hidden',\n },\n\n searchContainer: {\n width: '100%',\n height: dimensions.CONTROL.HEIGHT,\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n padding: [0, 8, 0, 16],\n borderBottom: [1, 'solid', colors.BORDER_MAIN],\n },\n\n icon: {\n width: 20,\n height: 20,\n },\n\n searchIcon: {\n extend: 'icon',\n color: colors.FONT_LABEL,\n flexShrink: 0,\n },\n\n flagList: {\n maxHeight: ROW_HEIGHT * 6 + 2 * LIST_PADDING,\n padding: [LIST_PADDING, 0],\n ...helpers.withScrollBar,\n },\n\n listItem: {\n height: ROW_HEIGHT,\n padding: [12, 16],\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n fontSize: 14,\n lineHeight: '20px',\n letterSpacing: 0.15,\n whiteSpace: 'nowrap',\n boxSizing: 'border-box',\n },\n\n selectedCountry: {\n backgroundColor: colors.GREY_BACKGROUND,\n },\n\n activeCountry: {\n backgroundColor: colors.GREY_FOCUS,\n },\n\n flag: {\n width: 22,\n height: 16,\n flexShrink: 0,\n },\n\n countryName: {\n color: colors.FONT_MAIN,\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n margin: [0, 8, 0, 12],\n },\n\n dialCode: {\n color: colors.GREY_ACTIVE,\n },\n\n emptyResult: {\n color: colors.FONT_LABEL,\n padding: [6, 16],\n },\n});\n\nexport const inputStyles: IInputStyles = {\n tweakControlWrapper: {\n controlWrapper: {\n border: 'none',\n height: 'calc(var(--control-height) - 2px)',\n },\n },\n\n input: {\n fontSize: 14,\n lineHeight: '20px',\n letterSpacing: 0.15,\n },\n};\n\nexport type IPhoneInputCountryListStyles = ITweakStyles<\n typeof useStyles,\n { tweakInput: IInputStyles }\n>;\n","import { FC, useEffect, useMemo, useState } from 'react';\nimport clsx from 'clsx';\nimport { phoneInfo } from '../../../../constants';\nimport {\n checkSearchStringInCountry,\n findCountryIndexByCode,\n getCountryTextByLocale,\n sortCountriesByLocale,\n} from '../../../../helpers';\nimport { useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Flag } from '../../../Flag';\nimport { Icon } from '../../../Icon';\nimport { IChangeInputEvent, Input } from '../../../Input';\nimport { ScrollIntoViewIfNeeded } from '../../../ScrollIntoViewIfNeeded';\nimport { IPhoneInfo } from '../../types';\nimport {\n inputStyles,\n IPhoneInputCountryListStyles,\n useStyles,\n} from './PhoneInputCountryList.styles';\n\nexport interface IPhoneInputCountryListProps\n extends Pick<ICommonProps<IPhoneInputCountryListStyles>, 'tweakStyles'> {\n selectedCountryCode?: string;\n locale: string;\n placeholder: string;\n noMatchesLabel: string;\n closeList: () => void;\n onChange: (country: IPhoneInfo, event: IChangeInputEvent | KeyboardEvent) => void;\n}\n\nexport const PhoneInputCountryList: FC<IPhoneInputCountryListProps> = ({\n locale,\n placeholder,\n selectedCountryCode,\n closeList,\n noMatchesLabel,\n onChange,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakInputStyles = useTweakStyles({\n innerStyles: inputStyles,\n tweakStyles,\n className: 'tweakInput',\n currentComponentName: 'PhoneInputCountryList',\n });\n\n const sortedCountries = useMemo(() => sortCountriesByLocale(phoneInfo, locale), [locale]);\n\n const selectedCountryIdx = findCountryIndexByCode(selectedCountryCode, sortedCountries);\n\n const [searchValue, setSearchValue] = useState('');\n const [countriesList, setCountriesList] = useState(sortedCountries);\n const [keyCursorOn, setKeyCursorOn] = useState(\n selectedCountryIdx !== -1 ? selectedCountryIdx : 0,\n );\n\n const handleSearchChange = (newSearchValue: string) => {\n const newCountriesList = sortedCountries.filter((country) =>\n checkSearchStringInCountry(country, newSearchValue),\n );\n\n const defaultKeyCursorOn = newCountriesList.length > 0 ? 0 : -1;\n const newSelectedCountryIdx = findCountryIndexByCode(selectedCountryCode, newCountriesList);\n\n setCountriesList(newCountriesList);\n setSearchValue(newSearchValue);\n setKeyCursorOn(newSelectedCountryIdx !== -1 ? newSelectedCountryIdx : defaultKeyCursorOn);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const lastListItemIdx = countriesList.length - 1;\n\n if (event.code === 'Escape' || event.code === 'Tab') {\n closeList();\n }\n\n if (event.code === 'ArrowDown' && lastListItemIdx !== -1) {\n // чтобы убрать перемещение курсора в инпуте\n event.preventDefault();\n setKeyCursorOn(keyCursorOn < lastListItemIdx ? keyCursorOn + 1 : 0);\n }\n\n if (event.code === 'ArrowUp' && lastListItemIdx !== -1) {\n // чтобы убрать перемещение курсора в инпуте\n event.preventDefault();\n setKeyCursorOn(keyCursorOn > 0 ? keyCursorOn - 1 : lastListItemIdx);\n }\n\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n if (countriesList.length === 0) {\n closeList();\n } else if (keyCursorOn >= 0) {\n onChange(countriesList[keyCursorOn], event);\n }\n }\n };\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown, false);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown, false);\n };\n });\n\n return (\n <div className={classes.root}>\n <div className={classes.searchContainer}>\n <div className={classes.searchIcon}>\n <Icon type=\"search\" />\n </div>\n <Input\n value={searchValue}\n placeholder={placeholder}\n onChange={handleSearchChange}\n tweakStyles={tweakInputStyles}\n isClearable\n shouldFocusOnMount\n />\n </div>\n <div className={classes.flagList}>\n {countriesList.map((country, index) => (\n <ScrollIntoViewIfNeeded\n key={country.countryCode}\n active={keyCursorOn === index}\n options={{ block: 'nearest' }}\n >\n <div\n className={clsx(classes.listItem, {\n [classes.activeCountry]: selectedCountryIdx === index,\n [classes.selectedCountry]: keyCursorOn === index,\n })}\n onMouseEnter={() => setKeyCursorOn(index)}\n onClick={(e) => onChange(country, e)}\n >\n <div className={classes.flag}>\n <Flag countryCode={country.countryCode} />\n </div>\n <div className={classes.countryName}>{getCountryTextByLocale(country, locale)}</div>\n <div className={classes.dialCode}>{`+${country.dialCode}`}</div>\n </div>\n </ScrollIntoViewIfNeeded>\n ))}\n {countriesList.length === 0 && <div className={classes.emptyResult}>{noMatchesLabel}</div>}\n </div>\n </div>\n );\n};\n","import { IPhoneValue } from './types';\n\nexport const DEFAULT_VALUE: IPhoneValue = { phoneNumber: '', dialCode: '' };\n","import { colors, createThemedStyles, dimensions, ITweakStyles } from '../../theme';\nimport { IInputStyles } from '../Input';\nimport { IPhoneInputCountryListStyles } from './components';\n\nconst COUNTRY_SELECT_WIDTH = 80;\n\nexport const useStyles = createThemedStyles('PhoneInput', {\n root: {\n width: '100%',\n position: 'relative',\n boxSizing: 'border-box',\n zIndex: 0,\n },\n\n countrySelectContainer: {\n position: 'absolute',\n left: 1,\n top: 1,\n width: COUNTRY_SELECT_WIDTH,\n height: dimensions.CONTROL.HEIGHT - 2,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: ['solid', 1, colors.BORDER_MAIN],\n transition: 'border-color 0.2s ease-in',\n cursor: 'pointer',\n zIndex: dimensions.Z_INDEX.CONTROL_FOCUS + 1,\n },\n\n disabledCountrySelect: {\n cursor: 'default',\n },\n\n flag: {\n width: 22,\n height: 16,\n },\n\n arrow: {\n width: 20,\n color: colors.GREY_ACTIVE,\n marginLeft: 8,\n transition: 'transform .2s ease',\n },\n\n up: {\n transform: 'rotate(180deg)',\n },\n\n invalidArrow: {\n color: colors.RED_WARNING,\n },\n\n focusedBorder: {},\n\n invalidBorder: {\n borderColor: colors.RED_WARNING,\n },\n\n inputContainer: {\n position: 'relative',\n flex: 1,\n },\n\n flagListContainer: {\n position: 'absolute',\n width: '100%',\n top: dimensions.CONTROL.HEIGHT + 6,\n left: -1,\n zIndex: 3,\n },\n});\n\nexport const inputStyles: IInputStyles = {\n tweakControlWrapper: {\n controlWrapper: {\n paddingLeft: COUNTRY_SELECT_WIDTH,\n },\n\n label: {\n marginLeft: COUNTRY_SELECT_WIDTH,\n },\n },\n};\n\nexport type IPhoneInputStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakInput: IInputStyles;\n tweakCountryList: IPhoneInputCountryListStyles;\n }\n>;\n","import { FC, FocusEvent, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes, getTestId } from '@true-engineering/true-react-platform-helpers';\nimport {\n findCountryByCode,\n getCountryCodeFromPhone,\n getFullPhone,\n getPhoneMask,\n getPhoneObjFromString,\n} from '../../helpers';\nimport { useOnClickOutsideWithRef, useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { Flag } from '../Flag';\nimport { Icon } from '../Icon';\nimport { IChangeInputEvent, IInputProps, Input } from '../Input';\nimport { PhoneInputCountryList } from './components';\nimport { DEFAULT_VALUE } from './constants';\nimport { IChangePhoneInputEvent, IPhoneInfo, IPhoneValue } from './types';\nimport { inputStyles, IPhoneInputStyles, useStyles } from './PhoneInput.styles';\n\nexport interface IPhoneInputProps\n extends Omit<\n IInputProps,\n 'value' | 'onChange' | 'type' | 'mask' | 'units' | 'placeholder' | 'tweakStyles'\n >,\n ICommonProps<IPhoneInputStyles> {\n /** @default 'ru' */\n locale?: string;\n /** @default 'Поиск' */\n codeSearchPlaceholder?: string;\n /** @default 'Ничего не найдено' */\n noMatchesLabel?: string;\n /** @default { phoneNumber: '', dialCode: '' } */\n value?: IPhoneValue;\n onChange: (phone: IPhoneValue, event: IChangePhoneInputEvent) => void;\n}\n\nexport const PhoneInput: FC<IPhoneInputProps> = ({\n locale = 'ru',\n value = DEFAULT_VALUE,\n onChange,\n data,\n testId,\n isDisabled,\n isInvalid,\n isActive,\n tweakStyles,\n codeSearchPlaceholder = 'Поиск',\n noMatchesLabel = 'Ничего не найдено',\n ...inputProps\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakInputStyles = useTweakStyles({\n innerStyles: inputStyles,\n tweakStyles,\n className: 'tweakInput',\n currentComponentName: 'PhoneInput',\n });\n\n const tweakCountryListStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakCountryList',\n currentComponentName: 'PhoneInput',\n });\n\n const [isListOpen, setIsListOpen] = useState(false);\n const [isFocused, setFocused] = useState(false);\n\n const list = useRef<HTMLDivElement>(null);\n const inputWrapper = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const phoneWithCode = getFullPhone(value);\n\n const countryCode = useMemo(\n () => value?.countryCode ?? getCountryCodeFromPhone(phoneWithCode),\n [phoneWithCode, value?.countryCode],\n );\n\n const handleClose = () => {\n setIsListOpen(false);\n };\n\n const handleChange = (inputValue: string, event: IChangeInputEvent) => {\n // if (event.type === 'change') - нужно из-за InputMask\n // Помимо change, еще могут приходить focus и blur, когда input пустой и тогда происходят неприятные сайд-эффекты\n if (event.type === 'change') {\n const newValue = inputValue.replace(/[^0-9]/g, '');\n let selectedCountryCode = countryCode;\n\n const selectedCountry = findCountryByCode(countryCode);\n\n // Проверяем введенный номер на соответствие с selectedCountry\n // Если не соответствует, то пытаемся найти countryCode, для которой\n // данный номер будет валидным (функция getPhoneObjFromString)\n if (selectedCountry !== undefined) {\n // Сначала проверяем, что введенный телефон удовлетворяет одному\n // из fullCode для выбранной страны\n const isSomeFullCodeValid = selectedCountry.fullCodes.some((fullCode) => {\n if (newValue.length >= fullCode.length) {\n return newValue.startsWith(fullCode);\n } else {\n return fullCode.startsWith(newValue);\n }\n });\n\n // После проверяем, что введенный телефон удовлетворяет dialCode для выбранной страны\n const isDialCodeValid = newValue.startsWith(selectedCountry.dialCode);\n\n if (!isSomeFullCodeValid || !isDialCodeValid) {\n selectedCountryCode = undefined;\n }\n }\n\n onChange(getPhoneObjFromString(newValue, selectedCountryCode), event);\n }\n };\n\n const handleSelect = (newPhoneInfo: IPhoneInfo, event: IChangePhoneInputEvent) => {\n if (newPhoneInfo.countryCode !== countryCode) {\n onChange(\n {\n phoneNumber:\n newPhoneInfo.dialCode !== value.dialCode\n ? ''\n : getPhoneObjFromString(phoneWithCode).phoneNumber,\n dialCode: newPhoneInfo.dialCode,\n countryCode: newPhoneInfo.countryCode,\n },\n event,\n );\n }\n handleClose();\n\n const input = inputRef?.current;\n if (input !== null) {\n input.focus();\n }\n };\n\n const handleFocus = (event: FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n if (inputProps.onFocus !== undefined) {\n inputProps?.onFocus(event);\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n if (inputProps.onBlur !== undefined) {\n inputProps?.onBlur(event);\n }\n };\n\n useOnClickOutsideWithRef(list, handleClose, inputWrapper);\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n <div\n className={clsx(classes.countrySelectContainer, {\n [classes.disabledCountrySelect]: isDisabled,\n [classes.invalidBorder]: isInvalid,\n [classes.focusedBorder]: isActive || isListOpen || isFocused,\n })}\n ref={inputWrapper}\n onClick={!isDisabled ? () => setIsListOpen(!isListOpen) : undefined}\n >\n <div className={classes.flag}>\n <Flag countryCode={countryCode} />\n </div>\n <div\n className={clsx(classes.arrow, {\n [classes.up]: isListOpen,\n [classes.invalidArrow]: isInvalid,\n })}\n >\n <Icon type=\"chevron-down\" />\n </div>\n </div>\n\n <Input\n value={phoneWithCode}\n mask={getPhoneMask(countryCode)}\n // alwaysShowMask={false}\n ref={inputRef}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isActive={isListOpen || isActive}\n testId={getTestId(testId, 'input')}\n tweakStyles={tweakInputStyles}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...inputProps}\n />\n\n {isListOpen && (\n <div className={classes.flagListContainer} ref={list}>\n <PhoneInputCountryList\n selectedCountryCode={countryCode}\n placeholder={codeSearchPlaceholder}\n locale={locale}\n tweakStyles={tweakCountryListStyles}\n noMatchesLabel={noMatchesLabel}\n onChange={handleSelect}\n closeList={handleClose}\n />\n </div>\n )}\n </div>\n );\n};\n","import { ITweakStyles, createThemedStyles } from '../../theme';\nimport { IRadioButtonSizes } from './types';\n\nexport const useStyles = createThemedStyles('RadioButton', {\n input: {\n appearance: 'none',\n cursor: 'pointer',\n borderRadius: '50%',\n width: 18,\n height: 18,\n outline: 'none',\n transition: '0.1s all ease-in-out',\n margin: 0,\n border: [1, 'solid', '#000'],\n\n '&:checked': {\n border: [5, 'solid', '#000'],\n },\n },\n\n label: {\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n },\n\n content: {\n marginLeft: 8,\n },\n\n isDisabled: {\n cursor: 'default',\n },\n\n isInvalid: {},\n});\n\nexport type IRadioButtonStyles = ITweakStyles<typeof useStyles, IRadioButtonSizes>;\n","import { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport {\n isNotEmpty,\n isReactNodeNotEmpty,\n addDataAttributes,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { IRadioButtonSize } from './types';\nimport { useStyles, IRadioButtonStyles } from './RadioButton.styles';\n\nexport interface IRadioButtonProps<Value extends string> extends ICommonProps<IRadioButtonStyles> {\n children?: ReactNode;\n value: Value;\n groupName: string;\n size?: IRadioButtonSize;\n isChecked?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isInvalid?: boolean;\n onChange: (value: Value) => void | Promise<void>;\n}\n\nexport function RadioButton<Value extends string>({\n children,\n value,\n groupName,\n size,\n isChecked,\n isDisabled = false,\n isInvalid = false,\n data,\n testId,\n tweakStyles,\n onChange,\n}: IRadioButtonProps<Value>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <label\n className={clsx(classes.label, isNotEmpty(size) && classes[size], {\n [classes.isDisabled]: isDisabled,\n })}\n htmlFor={`${groupName}--${value}`}\n {...addDataAttributes(data, testId)}\n >\n <input\n id={`${groupName}--${value}`}\n type=\"radio\"\n value={value}\n name={groupName}\n checked={isChecked}\n disabled={isDisabled}\n onChange={(event) => onChange(event.target.value as Value)}\n className={clsx(classes.input, {\n [classes.isDisabled]: isDisabled,\n [classes.isInvalid]: isInvalid,\n })}\n />\n {isReactNodeNotEmpty(children) && <span className={classes.content}>{children}</span>}\n </label>\n );\n}\n","import { CSSProperties } from 'react';\nimport { isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { colors, dimensions, ITweakStyles, createThemedStyles, animations } from '../../theme';\n\nconst SELECTOR_TOTAL_GAP = 4;\nconst SELECTOR_BORDER_WIDTH = 1;\nexport const SELECTOR_GAP = SELECTOR_TOTAL_GAP - SELECTOR_BORDER_WIDTH;\n\nexport const getSelectorLineStyle = (activeElementData?: {\n clientWidth: number;\n offsetLeft: number;\n}): CSSProperties | undefined =>\n isNotEmpty(activeElementData)\n ? {\n width: activeElementData.clientWidth - SELECTOR_GAP * 2,\n transform: `translateX(${activeElementData.offsetLeft}px)`,\n }\n : undefined;\n\nexport const useStyles = createThemedStyles('Selector', {\n root: {\n display: 'flex',\n alignItems: 'center',\n listStyle: 'none',\n position: 'relative',\n },\n\n required: {\n '&::before': {\n top: '50%',\n left: -12,\n width: 6,\n height: 6,\n content: '\"\"',\n position: 'absolute',\n transform: 'translate(0, -50%)',\n borderRadius: '50%',\n backgroundColor: colors.ORANGE_FOCUS,\n },\n },\n\n invalid: {},\n\n optionWrapper: {\n height: '100%',\n },\n\n option: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n appearance: 'none',\n borderRadius: 0,\n padding: 0,\n border: 'none',\n cursor: 'pointer',\n width: '100%',\n },\n\n active: {\n cursor: 'default',\n },\n\n disabled: {\n cursor: 'default',\n\n '& $optionText': {\n color: colors.FONT_LABEL,\n },\n },\n\n optionIcon: {\n width: 20,\n height: 20,\n },\n\n optionText: {},\n\n iconFromRight: {\n '& $option': {\n flexDirection: 'row-reverse',\n },\n },\n\n s: {},\n\n m: {},\n\n l: {},\n\n line: {},\n\n selector: {\n display: 'grid',\n gridAutoFlow: 'column',\n gridAutoColumns: '1fr',\n borderRadius: dimensions.BORDER_RADIUS_SMALL,\n backgroundColor: colors.BORDER_LIGHT,\n width: 'fit-content',\n position: 'relative',\n border: ['solid', SELECTOR_BORDER_WIDTH, 'transparent'],\n\n '& $line': {\n content: '\"\"',\n position: 'absolute',\n left: SELECTOR_GAP,\n height: `calc(100% - ${SELECTOR_GAP * 2}px)`,\n backgroundColor: colors.CLASSIC_WHITE,\n borderRadius: dimensions.BORDER_RADIUS_SMALL,\n transition: animations.defaultTransition,\n transitionProperty: 'transform, width',\n },\n\n '&$invalid': {\n borderColor: colors.RED_WARNING,\n },\n\n '& $option': {\n gap: 6,\n position: 'relative',\n zIndex: 1,\n height: '100%',\n color: colors.FONT_MEDIUM,\n fontSize: 16,\n transition: animations.defaultTransition,\n transitionProperty: 'color',\n background: 'none',\n\n '&$s': {\n padding: [4, 8],\n fontSize: 10,\n lineHeight: '14px',\n },\n\n '&$m': {\n padding: [14, 18],\n },\n\n '&$l': {\n padding: [16, 24],\n },\n\n '&:hover, &:focus': {\n color: colors.FONT_MAIN,\n },\n\n '&$active': {\n color: colors.FONT_MAIN,\n },\n },\n },\n\n autoWidth: {\n '&$selector': {\n gridAutoColumns: 'auto',\n\n '& $line': {\n width: 'unset',\n transform: 'unset',\n },\n },\n },\n});\n\nexport type ISelectorStyles = ITweakStyles<typeof useStyles>;\n","import { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataTestId,\n addDataAttributes,\n hasDuplicates,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { renderIcon } from '../Icon';\nimport { ISelectorOption, ISelectorValue } from './types';\nimport { getSelectorLineStyle, ISelectorStyles, useStyles } from './Selector.styles';\n\nexport interface ISelectorProps<V extends ISelectorValue> extends ICommonProps<ISelectorStyles> {\n options: Array<ISelectorOption<V>>;\n value?: V;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isRequired?: boolean;\n /** @default false */\n isInvalid?: boolean;\n /** @default true */\n hasSameOptionsWidth?: boolean;\n /** @default 'left' */\n iconPosition?: 'left' | 'right';\n /** @default 'l' */\n size?: 's' | 'm' | 'l';\n onChange: (value: V) => void;\n}\n\nexport function Selector<V extends ISelectorValue>({\n options,\n value,\n isDisabled = false,\n isRequired = false,\n isInvalid = false,\n hasSameOptionsWidth = true,\n iconPosition = 'left',\n size = 'l',\n testId,\n data,\n tweakStyles,\n onChange,\n}: ISelectorProps<V>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n const optionsValues = options.map((opt) => opt.value);\n\n const [elementsData, setElementsData] = useState<HTMLElement[]>([]);\n const listRef = useRef<HTMLDivElement>(null);\n\n if (hasDuplicates(optionsValues)) {\n console.error('Selector: Значения options.value должны быть уникальными');\n }\n\n useEffect(() => {\n const listEl = listRef.current;\n if (listEl === null) {\n return;\n }\n\n setElementsData([...listEl.querySelectorAll<HTMLElement>(`.${classes.optionWrapper}`)]);\n }, [options, size]);\n\n const activeElementData = isNotEmpty(value)\n ? elementsData[optionsValues.indexOf(value)]\n : undefined;\n\n return (\n <div\n className={clsx(classes.root, classes.selector, {\n [classes.iconFromRight]: iconPosition === 'right',\n [classes.invalid]: isInvalid,\n [classes.required]: isRequired,\n [classes.autoWidth]: hasSameOptionsWidth,\n })}\n ref={listRef}\n {...addDataAttributes(data, testId)}\n >\n {isNotEmpty(activeElementData) && (\n <div className={classes.line} style={getSelectorLineStyle(activeElementData)} />\n )}\n\n {options.map((option) => {\n const optionId = option.value.toString();\n const isDisabledOption = option.isDisabled ?? isDisabled;\n const isActiveOption = option.value === value;\n\n return (\n <div key={optionId} className={classes.optionWrapper}>\n <button\n type=\"button\"\n className={clsx(classes.option, classes[size], {\n [classes.active]: isActiveOption,\n [classes.disabled]: isDisabledOption,\n })}\n disabled={isDisabledOption}\n onClick={!isDisabledOption ? () => onChange(option.value) : undefined}\n {...addDataTestId(testId, optionId)}\n >\n {isReactNodeNotEmpty(option.icon) && (\n <div className={classes.optionIcon}>{renderIcon(option.icon)}</div>\n )}\n <div className={classes.optionText}>{option.label}</div>\n </button>\n </div>\n );\n })}\n </div>\n );\n}\n","import { ICharactersMap } from './types';\n\nexport const SMART_INPUT_REGEX_MAP = {\n default: /./i,\n agencyName: /^[a-zA-Z\\s0-9-]*$/i,\n surname: /^[a-zA-Z\\s-]*$/i,\n name: /^[a-zA-Z\\s-.`']*$/i,\n surnameRuEn: /^[a-zA-Zа-яА-Я\\s-]*$/i,\n nameRuEn: /^[a-zA-Zа-яА-Я\\s-.`']*$/i,\n email: /^[a-zA-Z0-9@_\\-.+']*$/i,\n digits: /^[0-9]*$/i,\n docNumber: /^[a-zA-Z0-9]*$/i,\n benefitCert: /^[a-zA-Z0-9/]*$/i,\n};\n\nexport const CharactersMap: ICharactersMap = {\n й: 'q',\n ц: 'w',\n у: 'e',\n к: 'r',\n е: 't',\n н: 'y',\n г: 'u',\n ш: 'i',\n щ: 'o',\n з: 'p',\n х: '[',\n ъ: ']',\n ф: 'a',\n ы: 's',\n в: 'd',\n а: 'f',\n п: 'g',\n р: 'h',\n о: 'j',\n л: 'k',\n д: 'l',\n ж: ';',\n э: \"'\",\n я: 'z',\n ч: 'x',\n с: 'c',\n м: 'v',\n и: 'b',\n т: 'n',\n ь: 'm',\n б: ',',\n ю: '.',\n ё: '`',\n};\n\nexport const EmailCharactersMap: ICharactersMap = {\n ...CharactersMap,\n '\"': '@',\n};\n\nexport const TransliterationMap: ICharactersMap = {\n й: 'i',\n ц: 'ts',\n у: 'u',\n к: 'k',\n е: 'e',\n н: 'n',\n г: 'g',\n ш: 'sh',\n щ: 'shch',\n з: 'z',\n х: 'h',\n ъ: 'ie',\n ф: 'f',\n ы: 'y',\n в: 'v',\n а: 'a',\n п: 'p',\n р: 'r',\n о: 'o',\n л: 'l',\n д: 'd',\n ж: 'zh',\n э: 'e',\n я: 'ia',\n ч: 'ch',\n с: 's',\n м: 'm',\n и: 'i',\n т: 't',\n ь: '',\n б: 'b',\n ю: 'iu',\n ё: 'e',\n};\n","import { ICharactersMap } from './types';\n\nexport const mapSymbols = (\n str: string,\n regex: RegExp,\n charactersMap: ICharactersMap,\n isTransliterationEnabled: boolean,\n): string =>\n str\n .split('')\n .map((symbol) => {\n if (regex.test(symbol)) {\n return symbol;\n }\n if (!isTransliterationEnabled) {\n return '';\n }\n\n const mappedSymbol = charactersMap[symbol.toLowerCase()] ?? symbol;\n\n const isUpperCase = symbol.toUpperCase() === symbol;\n const result = isUpperCase ? mappedSymbol.toUpperCase() : mappedSymbol;\n\n return regex.test(result) ? result : '';\n })\n .join('');\n","import { ClipboardEvent, forwardRef, useRef } from 'react';\nimport { isEmpty, isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { useMergedRefs } from '../../hooks';\nimport { IChangeInputEvent, IInputProps, Input } from '../Input';\nimport {\n CharactersMap,\n EmailCharactersMap,\n SMART_INPUT_REGEX_MAP,\n TransliterationMap,\n} from './constants';\nimport { mapSymbols } from './helpers';\nimport { IInputRawValue, ISmartType } from './types';\n\nexport interface ISmartInputProps extends Omit<IInputProps, 'onChange'> {\n /** @default 'default' */\n smartType?: ISmartType;\n regExp?: RegExp;\n /** @default false */\n isUpperCase?: boolean;\n /** @default true */\n isTransliterationEnabled?: boolean;\n onChange: (\n value: string,\n rawValue: IInputRawValue,\n event?: IChangeInputEvent | ClipboardEvent<HTMLInputElement>,\n ) => void;\n}\n\nexport const SmartInput = forwardRef<HTMLInputElement, ISmartInputProps>(function SmartInput(\n {\n value = '',\n smartType = 'default',\n regExp,\n maxLength,\n isUpperCase = false,\n isTransliterationEnabled = true,\n onChange,\n ...rest\n },\n ref,\n) {\n const inputRef = useRef<HTMLInputElement>(null);\n const mergedRef = useMergedRefs([ref, inputRef]);\n\n const regex = regExp || SMART_INPUT_REGEX_MAP[smartType];\n\n const getUpperCaseIfNeeded = (str: string) => (isUpperCase ? str.toUpperCase() : str);\n\n const updateCaretPosition = (position: number | null, newValue: string) => {\n const input = inputRef.current;\n if (isNotEmpty(input) && input.type !== 'email') {\n // Нужно для того, чтобы после ререндера позиция каретки не сбросилась\n input.value = newValue;\n input.setSelectionRange(position, position);\n }\n };\n\n const handleChange = async (str: string, event: IChangeInputEvent) => {\n const isValid = regex.test(str);\n\n const charactersMap = smartType === 'email' ? EmailCharactersMap : CharactersMap;\n const newValue = getUpperCaseIfNeeded(\n isValid ? str : mapSymbols(str, regex, charactersMap, isTransliterationEnabled),\n );\n\n onChange(newValue, { rawValue: str, isValid }, event);\n\n const input = inputRef.current;\n if (isNotEmpty(input)) {\n const start = input.selectionStart;\n updateCaretPosition(isEmpty(start) || newValue !== value ? start : start - 1, newValue);\n }\n };\n\n const handlePaste = async (event: ClipboardEvent<HTMLInputElement>) => {\n event.preventDefault();\n\n const str = event.clipboardData.getData('text/plain').split('').join('');\n\n const input = event.currentTarget;\n const selectionStart = input.selectionStart ?? 0;\n const selectionEnd = input.selectionEnd ?? 0;\n\n const isValid = regex.test(str);\n\n let mappedValue = isValid\n ? str\n : mapSymbols(str, regex, TransliterationMap, isTransliterationEnabled);\n\n const newValueLength = mappedValue.length + value.length - (selectionEnd - selectionStart);\n\n if (isNotEmpty(maxLength) && maxLength >= 0 && newValueLength > maxLength) {\n mappedValue = mappedValue.substring(0, mappedValue.length - (newValueLength - maxLength));\n }\n\n const newValue = getUpperCaseIfNeeded(\n `${value.substring(0, selectionStart)}${mappedValue}${value.substring(selectionEnd)}`,\n );\n\n onChange(newValue, { rawValue: str, isValid }, event);\n updateCaretPosition(selectionStart + mappedValue.length, newValue);\n };\n\n return (\n <Input\n {...rest}\n ref={mergedRef}\n value={value}\n maxLength={maxLength}\n onPaste={handlePaste}\n onChange={handleChange}\n />\n );\n});\n","import { colors, createThemedStyles, ITweakStyles } from '../../theme';\nimport { IStatusColors } from './types';\n\nexport const useStyles = createThemedStyles('Status', {\n root: {\n display: 'inline-flex',\n verticalAlign: 'middle',\n color: 'var(--status-color)',\n backgroundColor: 'var(--status-background)',\n width: 'max-content',\n alignItems: 'center',\n\n '& > *': {\n flexShrink: 0,\n },\n },\n\n icon: {\n '& > div': {\n display: 'inline-block',\n },\n },\n\n iconLeft: {\n order: -1,\n },\n\n text: {},\n\n badge: {\n color: colors.CLASSIC_WHITE,\n backgroundColor: 'var(--status-color)',\n },\n\n xs: {\n padding: [2, 4],\n gap: 4,\n borderRadius: 2,\n\n fontSize: 12,\n lineHeight: '16px',\n letterSpacing: 0.24,\n fontWeight: 'bold',\n\n '& $icon': {\n width: 16,\n height: 16,\n },\n\n '& $badge': {\n padding: [0, 2],\n marginRight: -1,\n borderRadius: 4,\n },\n },\n\n s: {\n padding: [3, 8, 5, 8],\n gap: 4,\n borderRadius: 6,\n\n fontSize: 13,\n lineHeight: '16px',\n letterSpacing: 0.2,\n fontWeight: 'bold',\n\n '& $text': {},\n\n '& $icon': {\n width: 16,\n height: 16,\n },\n\n '& $badge': {\n padding: [0, 4, 2, 4],\n margin: [0, -4, -2, 0],\n borderRadius: 4,\n },\n },\n\n m: {\n padding: [7, 12],\n gap: 4,\n borderRadius: 6,\n\n fontSize: 15,\n lineHeight: '18px',\n letterSpacing: 0.15,\n fontWeight: 'bold',\n\n '& $text': {},\n\n '& $icon': {\n width: 18,\n height: 18,\n },\n\n '& $badge': {\n padding: [2, 4],\n margin: [-2, -7, -2, 0],\n borderRadius: 4,\n },\n },\n\n custom: {},\n});\n\nexport type IStatusStyles = ITweakStyles<typeof useStyles, IStatusColors>;\n","import { FC, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { IIcon, renderIcon } from '../Icon';\nimport { IStatusColor, IStatusSize } from './types';\nimport { useStyles, IStatusStyles } from './Status.styles';\n\nexport interface IStatusProps extends ICommonProps<IStatusStyles> {\n children: ReactNode;\n color: IStatusColor;\n icon?: IIcon;\n /** @default 's' */\n size?: IStatusSize;\n /** @default 'right' */\n iconPosition?: 'left' | 'right';\n badge?: ReactNode;\n}\n\nexport const Status: FC<IStatusProps> = ({\n children,\n color,\n size = 's',\n icon,\n iconPosition = 'right',\n badge,\n tweakStyles,\n testId,\n data,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <span\n className={clsx(classes.root, classes[size], classes[color])}\n {...addDataAttributes(data, testId)}\n >\n {isReactNodeNotEmpty(children) && <span className={classes.text}>{children}</span>}\n {isReactNodeNotEmpty(icon) && (\n <span className={clsx(classes.icon, iconPosition === 'left' && classes.iconLeft)}>\n {renderIcon(icon)}\n </span>\n )}\n {isReactNodeNotEmpty(badge) && <span className={classes.badge}>{badge}</span>}\n </span>\n );\n};\n","import { ITweakStyles, animations, createThemedStyles } from '../../theme';\nimport { ISwitchSizes } from './types';\n\nexport const useStyles = createThemedStyles('Switch', {\n root: {\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n\n '--switch-width': '36px',\n '--switch-height': '20px',\n '--switch-toggle-width': '16px',\n '--switch-toggle-height': '16px',\n '--switch-toggle-padding': 'calc((var(--switch-height) - var(--switch-toggle-height)) / 2)',\n '--switch-label-gap': '12px',\n },\n\n primary: {},\n\n secondary: {},\n\n invalid: {},\n\n disabled: {\n pointerEvents: 'none',\n cursor: 'default',\n },\n\n checked: {\n '& $switch::before': {\n left: 'calc(var(--switch-width) - var(--switch-toggle-width) - var(--switch-toggle-padding))',\n },\n },\n\n switch: {\n position: 'relative',\n flexShrink: 0,\n display: 'block',\n width: 'var(--switch-width)',\n height: 'var(--switch-height)',\n borderRadius: 'calc(infinity * 1px)',\n boxSizing: 'border-box',\n transition: animations.defaultTransition,\n transitionProperty: 'opacity, background-color',\n backgroundColor: '#333',\n\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n top: 'var(--switch-toggle-padding)',\n left: 'var(--switch-toggle-padding)',\n width: 'var(--switch-toggle-width)',\n height: 'var(--switch-toggle-height)',\n right: 'auto',\n display: 'block',\n backgroundColor: '#fff',\n borderRadius: 'calc(infinity * 1px)',\n zIndex: 1,\n transition: animations.defaultTransition,\n transitionProperty: 'left, background-color',\n },\n },\n\n input: {\n display: 'none',\n },\n\n label: {\n transition: animations.defaultTransition,\n transitionProperty: 'opacity, color',\n },\n\n labelLeft: {\n order: -1,\n marginRight: 'var(--switch-label-gap)',\n },\n\n labelRight: {\n marginLeft: 'var(--switch-label-gap)',\n },\n});\n\nexport type ISwitchStyles = ITweakStyles<typeof useStyles, ISwitchSizes>;\n","import { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n addDataTestId,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { ISwitchSize, ISwitchState } from './types';\nimport { useStyles, ISwitchStyles } from './Switch.styles';\n\nexport interface ISwitchProps<V extends string> extends ICommonProps<ISwitchStyles> {\n children?: ReactNode;\n value: V;\n /** @default false */\n isChecked: boolean | undefined;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isInvalid?: boolean;\n /** @default 'right' */\n labelPosition?: 'left' | 'right';\n /** @default 'primary' */\n color?: 'primary' | 'secondary';\n size?: ISwitchSize;\n onChange: (state: ISwitchState<V>) => void;\n}\n\nexport const Switch = <V extends string>({\n isDisabled = false,\n isChecked = false,\n isInvalid = false,\n value,\n children,\n labelPosition = 'right',\n color = 'primary',\n size,\n data,\n tweakStyles,\n testId,\n onChange,\n}: ISwitchProps<V>): JSX.Element => {\n const classes = useStyles({ theme: tweakStyles });\n\n const handleChange = () => onChange({ name: value, isEnabled: !isChecked });\n\n return (\n <label\n className={clsx(classes.root, classes[color], isNotEmpty(size) && classes[size], {\n [classes.disabled]: isDisabled,\n [classes.checked]: isChecked,\n [classes.invalid]: isInvalid,\n })}\n {...addDataAttributes(data, testId)}\n >\n <span className={classes.switch}>\n <input\n type=\"checkbox\"\n name={value}\n className={classes.input}\n onChange={isDisabled ? undefined : handleChange}\n checked={isChecked}\n disabled={isDisabled}\n {...addDataTestId(testId, 'input')}\n />\n </span>\n {isReactNodeNotEmpty(children) && (\n <span\n className={clsx(\n classes.label,\n classes[labelPosition === 'left' ? 'labelLeft' : 'labelRight'],\n )}\n >\n {children}\n </span>\n )}\n </label>\n );\n};\n","import { animations, createThemedStyles, helpers, ITweakStyles } from '../../theme';\nimport { IWithPrefix } from '../../types';\nimport { IControlWrapperSizes, IControlWrapperStyles } from '../ControlWrapper';\nimport { IWithMessagesStyles } from '../WithMessages';\nimport { ITextAreaCounterPositions } from './types';\n\nexport const useStyles = createThemedStyles('TextArea', {\n root: {\n width: '100%',\n },\n\n textarea: {\n ...helpers.withScrollBar,\n width: '100%',\n height: '100%',\n fontFamily: 'inherit',\n fontSize: 16,\n padding: [14, 0, 8, 'var(--control-padding)'],\n scrollPadding: '14px 0 8px var(--control-padding)',\n scrollbarGutter: 'stable',\n boxSizing: 'border-box',\n outline: 'none',\n outlineStyle: 'none',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color',\n border: 'none',\n resize: 'none',\n background: 'transparent',\n\n '&::placeholder': {\n opacity: 1,\n },\n\n MozAppearance: 'textfield',\n '&::-webkit-inner-spin-button,&::-webkit-outer-spin-button': {\n WebkitAppearance: 'none',\n margin: 0,\n },\n },\n\n wrapper: {\n width: '100%',\n },\n\n autoSized: {\n display: 'grid',\n gridTemplateRows: 'minmax(0, 100%)',\n\n '& > $textarea, &::after': {\n gridArea: '1 / 1',\n },\n\n '&::after': {\n extend: 'textarea',\n content: 'attr(data-value) \" \"', // Без пробела ломается!\n overflowWrap: 'break-word',\n whiteSpace: 'pre-wrap',\n visibility: 'hidden',\n },\n },\n\n symbolsCount: {\n textAlign: 'right',\n marginTop: 4,\n fontSize: 12,\n marginLeft: 'auto',\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n },\n\n symbolsCountError: {\n color: 'red',\n },\n\n symbolsCountActive: {},\n\n 'counter-default': {},\n\n withLabel: {},\n});\n\nexport type ITextAreaStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakWithMessages: IWithMessagesStyles;\n tweakControlWrapper: IControlWrapperStyles;\n } & IWithPrefix<ITextAreaCounterPositions, 'counter-'> &\n IControlWrapperSizes\n>;\n","import {\n ChangeEvent,\n CSSProperties,\n FocusEvent,\n FormEvent,\n forwardRef,\n TextareaHTMLAttributes,\n useState,\n} from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n getTestId,\n isArrayLikeNotEmpty,\n isNotEmpty,\n isReactNodeNotEmpty,\n isStringNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { ControlWrapper, IControlWrapperProps } from '../ControlWrapper';\nimport { IWithMessagesProps, WithMessages } from '../WithMessages';\nimport { ITextAreaCounterPosition } from './types';\nimport { ITextAreaStyles, useStyles } from './TextArea.styles';\n\nexport interface ITextAreaProps\n extends ICommonProps<ITextAreaStyles>,\n Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'onChange'>,\n Pick<\n IControlWrapperProps,\n 'label' | 'isInvalid' | 'isRequired' | 'isDisabled' | 'size' | 'groupPlacement'\n >,\n Pick<IWithMessagesProps, 'infoMessage' | 'errorMessage'> {\n value?: string;\n placeholder?: string;\n counterPosition?: ITextAreaCounterPosition;\n /** @default false */\n isActive?: boolean;\n /**\n * Должна ли высота и ширина textarea подстраиваться под содержимое\n * @default true\n */\n isAutoSized?: boolean;\n /** @default false */\n shouldFocusOnMount?: boolean;\n /** @default true */\n hasCounter?: boolean;\n /** @default false */\n shouldTrimAfterMaxLength?: boolean;\n /** @default false */\n shouldAlwaysShowPlaceholder?: boolean;\n onChange: (value: string, event?: FormEvent<HTMLTextAreaElement>) => void;\n}\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, ITextAreaProps>(function TextArea(\n {\n value = '',\n placeholder,\n name,\n counterPosition = 'default',\n shouldFocusOnMount,\n hasCounter = true,\n shouldTrimAfterMaxLength,\n isAutoSized = true,\n shouldAlwaysShowPlaceholder,\n isActive,\n maxLength,\n rows,\n data,\n testId,\n tweakStyles,\n onChange,\n onPaste,\n onFocus,\n onBlur,\n // Пропсы WithMessages\n infoMessage,\n errorMessage,\n // Пропсы ControlWrapper\n label,\n isDisabled,\n isInvalid,\n isRequired,\n size,\n groupPlacement,\n ...textAreaProps\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const shouldShowCounter = hasCounter && isNotEmpty(maxLength);\n const counterString = `${value.length} / ${maxLength}`;\n\n const tweakWithMessagesStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakWithMessages',\n currentComponentName: 'TextArea',\n });\n\n const tweakControlWrapperStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakControlWrapper',\n currentComponentName: 'TextArea',\n });\n\n const [isFocused, setFocused] = useState(false);\n\n const hasFocus = isFocused || isActive;\n const hasValue = isArrayLikeNotEmpty(value);\n const hasLabel = isReactNodeNotEmpty(label);\n const hasPlaceholder =\n (!hasLabel || hasFocus || shouldAlwaysShowPlaceholder) && isStringNotEmpty(placeholder);\n\n const handleChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n onChange(event.currentTarget.value, event);\n };\n\n const handleFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n setFocused(true);\n onFocus?.(event);\n };\n\n const handleBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n setFocused(false);\n onBlur?.(event);\n };\n\n return (\n <div\n className={clsx(classes.root, isNotEmpty(size) && classes[size])}\n style={{ '--counter-length': counterString.length } as CSSProperties}\n >\n <WithMessages\n errorMessage={errorMessage}\n infoMessage={infoMessage}\n tweakStyles={tweakWithMessagesStyles}\n testId={getTestId(testId, 'wrapper')}\n >\n <ControlWrapper\n label={label}\n tweakStyles={tweakControlWrapperStyles}\n isFocused={hasFocus}\n isDisabled={isDisabled}\n hasValue={hasValue}\n isInvalid={isInvalid}\n isRequired={isRequired}\n groupPlacement={groupPlacement}\n size={size}\n isFullWidth\n >\n <div\n className={clsx(classes.wrapper, {\n [classes.autoSized]: isAutoSized,\n [classes.withLabel]: hasLabel,\n })}\n // Не менять на addDataAttributes\n {...(isAutoSized && { 'data-value': value })}\n >\n <textarea\n ref={ref}\n className={classes.textarea}\n value={value}\n disabled={isDisabled}\n placeholder={hasPlaceholder ? placeholder : undefined}\n maxLength={shouldTrimAfterMaxLength ? maxLength : undefined}\n name={name}\n rows={rows}\n onPaste={onPaste}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n autoFocus={shouldFocusOnMount}\n {...addDataAttributes(data, testId)}\n {...textAreaProps}\n />\n {shouldShowCounter && (\n <span\n className={clsx(classes.symbolsCount, classes[`counter-${counterPosition}`], {\n [classes.symbolsCountError]: value.length > maxLength,\n [classes.symbolsCountActive]: hasFocus || hasValue,\n })}\n {...addDataAttributes({ counterPosition })}\n >\n {counterString}\n </span>\n )}\n </div>\n </ControlWrapper>\n </WithMessages>\n </div>\n );\n});\n","import { animations, createThemedStyles, ITweakStyles } from '../../theme';\nimport { IThemedPreloaderStyles } from '../ThemedPreloader';\n\nexport const useStyles = createThemedStyles('TextButton', {\n root: {\n display: 'flex',\n alignItems: 'center',\n height: 24,\n padding: 0,\n position: 'relative',\n background: 'transparent',\n border: 'none',\n borderRadius: 0,\n cursor: 'pointer',\n outline: 'none',\n transition: animations.defaultTransition,\n transitionProperty: 'color',\n\n '&[disabled]': {\n cursor: 'default',\n pointerEvents: 'none',\n },\n },\n\n xl: {\n fontSize: 16,\n\n '& $content': {\n gap: 14,\n },\n },\n\n l: {\n fontSize: 14,\n letterSpacing: '0.15px',\n\n '& $content': {\n gap: 10,\n\n '&$reverseContent': {\n gap: 6,\n },\n },\n },\n\n primary: {},\n\n secondary: {},\n\n custom: {},\n\n active: {},\n\n disabled: {},\n\n bold: {\n fontWeight: 'bold',\n },\n\n iconContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n circle: {\n width: 24,\n height: 24,\n borderRadius: '50%',\n transition: animations.defaultTransition,\n transitionProperty: ['background', 'color'],\n },\n\n icon: {\n width: 20,\n height: 20,\n },\n\n content: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n },\n\n reverseContent: {\n flexDirection: 'row-reverse',\n },\n\n loader: {\n display: 'none',\n height: 8,\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n },\n\n loading: {\n '& $content': {\n visibility: 'hidden',\n },\n\n '& $loader': {\n display: 'block',\n },\n },\n});\n\nexport const preloaderStyles: IThemedPreloaderStyles = {\n tweakDotsPreloader: {\n fadedDot: {\n width: 6,\n height: 6,\n },\n },\n\n logo: {\n width: 24,\n height: 24,\n },\n\n default: {\n width: 24,\n height: 24,\n },\n};\n\nexport type ITextButtonStyles = ITweakStyles<\n typeof useStyles,\n { tweakPreloader: IThemedPreloaderStyles }\n>;\n","import { forwardRef, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { IIcon, renderIcon } from '../Icon';\nimport { IThemedPreloaderProps, ThemedPreloader } from '../ThemedPreloader';\nimport { ITextButtonHTMLBaseProps, ITextButtonSize, ITextButtonView } from './types';\nimport { useStyles, ITextButtonStyles, preloaderStyles } from './TextButton.styles';\n\nexport interface ITextButtonProps\n extends ICommonProps<ITextButtonStyles>,\n ITextButtonHTMLBaseProps {\n /** @default 'undefined' */\n children?: ReactNode;\n /** @default 'undefined' */\n icon?: IIcon;\n /** @default 'primary' */\n view?: ITextButtonView;\n /** @default false */\n isBold?: boolean;\n /** @default false */\n hasCircleUnderIcon?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isLoading?: boolean;\n /** @default false */\n isActive?: boolean;\n /** @default 'l' */\n size?: ITextButtonSize;\n /** @default 'left' */\n iconPosition?: 'left' | 'right';\n /** @default 'dots' */\n preloaderType?: IThemedPreloaderProps['type'];\n}\n\nexport const TextButton = forwardRef<HTMLButtonElement, ITextButtonProps>(function TextButton(\n {\n children,\n icon,\n view = 'primary',\n isDisabled = false,\n isBold = false,\n isLoading = false,\n isActive = false,\n hasCircleUnderIcon = false,\n size = 'l',\n iconPosition = 'left',\n preloaderType = 'dots',\n type = 'button',\n testId,\n tweakStyles,\n data,\n onClick,\n ...restProps\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakPreloaderStyles = useTweakStyles({\n innerStyles: preloaderStyles,\n tweakStyles,\n className: 'tweakPreloader',\n currentComponentName: 'TextButton',\n });\n\n const hasNoAction = isDisabled || isLoading;\n\n return (\n <button\n ref={ref}\n type={type}\n className={clsx(classes.root, classes[size], classes[view], {\n [classes.bold]: isBold,\n [classes.loading]: isLoading,\n [classes.active]: isActive,\n [classes.disabled]: isDisabled,\n })}\n disabled={hasNoAction}\n onClick={!hasNoAction ? onClick : undefined}\n {...restProps}\n {...addDataAttributes(data, testId)}\n >\n <span className={clsx(classes.content, iconPosition === 'right' && classes.reverseContent)}>\n {isReactNodeNotEmpty(icon) && (\n <span className={clsx(classes.iconContainer, hasCircleUnderIcon && classes.circle)}>\n <span className={classes.icon}>{renderIcon(icon)}</span>\n </span>\n )}\n {children}\n </span>\n\n {isLoading && (\n <span className={classes.loader}>\n <ThemedPreloader\n type={preloaderType}\n useCurrentColor\n tweakStyles={tweakPreloaderStyles}\n />\n </span>\n )}\n </button>\n );\n});\n","import { colors, ITweakStyles, createThemedStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('TextWithInfo', {\n root: {\n display: 'inline-block',\n height: 40,\n padding: [0, 18],\n borderRadius: 20,\n boxSizing: 'border-box',\n color: colors.FONT_MEDIUM,\n\n '&:hover': {\n backgroundColor: colors.GREY_FOCUS,\n },\n },\n\n container: {\n display: 'flex',\n height: '100%',\n alignItems: 'center',\n },\n\n selected: {\n backgroundColor: colors.GREY_FOCUS,\n },\n\n text: {\n cursor: 'pointer',\n fontSize: 16,\n },\n\n info: {\n width: 20,\n marginLeft: 4,\n color: colors.FONT_DISABLED,\n cursor: 'pointer',\n borderRadius: '50%',\n\n '&:link': {\n color: colors.FONT_DISABLED,\n },\n\n '&:hover': {\n color: colors.CLASSIC_WHITE,\n backgroundColor: colors.FONT_DISABLED,\n },\n\n '&:visited': {\n color: colors.FONT_DISABLED,\n\n '&:hover': {\n color: colors.CLASSIC_WHITE,\n backgroundColor: colors.FONT_DISABLED,\n },\n },\n },\n});\n\nexport type ITextWithInfoStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { TextWithTooltip } from '../TextWithTooltip';\nimport { useStyles, ITextWithInfoStyles } from './TextWithInfo.styles';\n\nexport interface ITextWithInfoProps extends ICommonProps<ITextWithInfoStyles> {\n text: string;\n /** @default false */\n isSelected?: boolean;\n textTooltip?: string;\n info?: {\n infoTooltip?: string;\n link?: string;\n };\n onClick: () => void;\n}\n\nexport const TextWithInfo: FC<ITextWithInfoProps> = ({\n text,\n isSelected = false,\n info,\n textTooltip,\n onClick,\n testId,\n data,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <div\n className={clsx(classes.root, isSelected && classes.selected)}\n {...addDataAttributes(data, testId)}\n >\n <div className={classes.container}>\n <div className={classes.text} onClick={onClick}>\n {textTooltip !== undefined ? (\n <TextWithTooltip tooltipText={textTooltip}>{text}</TextWithTooltip>\n ) : (\n text\n )}\n </div>\n {info && (\n <a className={classes.info} href={info.link} target=\"_blank\" rel=\"noopener noreferrer\">\n {info.infoTooltip !== undefined ? (\n <TextWithTooltip tooltipText={info.infoTooltip}>\n <Icon type=\"information\" />\n </TextWithTooltip>\n ) : (\n <Icon type=\"information\" />\n )}\n </a>\n )}\n </div>\n </div>\n );\n};\n","export const DEFAULT_TIMEOUT = 7 * 1000; // 7 seconds\n","import { colors, ITweakStyles, createThemedStyles } from '../../theme';\nimport { IIconButtonStyles } from '../IconButton';\n\nexport const useStyles = createThemedStyles('Toaster', {\n root: {\n borderRadius: 8,\n position: 'relative',\n background: colors.CLASSIC_WHITE,\n padding: [20, 40, 20, 20],\n display: 'flex',\n },\n\n iconContainer: {\n width: 20,\n height: 20,\n flexShrink: 0,\n marginRight: 16,\n },\n\n error: {\n color: colors.RED_WARNING,\n },\n\n info: {},\n\n warning: {\n color: colors.ORANGE_FOCUS,\n },\n\n ok: {\n color: colors.GREEN_FOCUS,\n },\n\n 'not-ok': {\n color: colors.FONT_LABEL,\n },\n\n text: {},\n\n title: {},\n\n content: {\n '&:not(:first-child):not(:empty)': {\n marginTop: 16,\n },\n },\n\n close: {\n position: 'absolute',\n top: 12,\n right: 12,\n width: 32,\n height: 32,\n },\n});\n\nexport type IToasterStyles = ITweakStyles<\n typeof useStyles,\n { tweakCloseButton: IIconButtonStyles }\n>;\n","import { FC, ReactNode, useEffect } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n isEmpty,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { IconButton } from '../IconButton';\nimport { DEFAULT_TIMEOUT } from './constants';\nimport { IToasterType } from './types';\nimport { IToasterStyles, useStyles } from './Toaster.styles';\n\nexport interface IToasterProps extends ICommonProps<IToasterStyles> {\n /** @default 'error' */\n type?: IToasterType;\n title?: ReactNode;\n text?: ReactNode;\n children?: ReactNode;\n /**\n * Время автоматического закрытия тостера в миллисекундах\n * @default 7000\n */\n timeout?: number;\n /** @default false */\n hasCloseButton?: boolean;\n /** @default false */\n shouldCloseOnClick?: boolean;\n onClose?: () => void;\n onTimeEnd?: () => void;\n}\n\nexport const Toaster: FC<IToasterProps> = ({\n type = 'error',\n title,\n text,\n children,\n timeout = DEFAULT_TIMEOUT,\n hasCloseButton = false,\n shouldCloseOnClick = false,\n data,\n testId,\n tweakStyles,\n onClose,\n onTimeEnd,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakCloseButtonStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakCloseButton',\n currentComponentName: 'Toaster',\n });\n\n useEffect(() => {\n if (!Number.isFinite(timeout) || isEmpty(onTimeEnd)) {\n return;\n }\n\n const timeoutId = window.setTimeout(() => onTimeEnd(), timeout);\n\n return () => window.clearTimeout(timeoutId);\n }, []);\n\n return (\n <div\n className={classes.root}\n onClick={shouldCloseOnClick ? onClose : undefined}\n {...addDataAttributes(data, testId)}\n >\n <div className={clsx(classes.iconContainer, classes[type])}>\n <Icon type={`status-${type}`} />\n </div>\n <div>\n {isReactNodeNotEmpty(title) && <div className={classes.title}>{title}</div>}\n {isReactNodeNotEmpty(text) && <div className={classes.text}>{text}</div>}\n {isReactNodeNotEmpty(children) && <div className={classes.content}>{children}</div>}\n </div>\n {hasCloseButton && isNotEmpty(onClose) && (\n <div className={classes.close}>\n <IconButton\n view=\"cancel-light\"\n icon=\"close-window\"\n tweakStyles={tweakCloseButtonStyles}\n onClick={onClose}\n />\n </div>\n )}\n </div>\n );\n};\n","import { colors, ITweakStyles, createThemedStyles, animations } from '../../theme';\nimport { IListStyles } from '../List';\nimport { IWithPopupStyles } from '../WithPopup';\n\nexport const useStyles = createThemedStyles('NewMoreMenu', {\n hasCircle: {},\n\n button: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n backgroundColor: 'transparent',\n color: colors.FONT_MEDIUM,\n padding: 0,\n borderRadius: '50%',\n border: 'none',\n cursor: 'pointer',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color',\n },\n\n icon: {\n width: 30,\n height: 30,\n },\n\n active: {},\n\n disabled: {\n cursor: 'default',\n },\n});\n\nexport type INewMoreMenuStyles = ITweakStyles<\n typeof useStyles,\n { tweakList: IListStyles; tweakWithPopup: IWithPopupStyles }\n>;\n","import { FC } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes, isArrayEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps, IRenderNode } from '../../types';\nimport { Icon } from '../Icon';\nimport { IListItem, IListSize, List } from '../List';\nimport { IWithPopupProps, WithPopup } from '../WithPopup';\nimport { IWithPopupTriggerProps } from '../WithPopup/types';\nimport { useStyles, INewMoreMenuStyles } from './NewMoreMenu.styles';\n\nexport interface INewMoreMenuProps\n extends Pick<\n IWithPopupProps,\n | 'placement'\n | 'middlewares'\n | 'shouldHideOnScroll'\n | 'shouldRenderInBody'\n | 'canBeFlipped'\n | 'onToggle'\n >,\n ICommonProps<INewMoreMenuStyles> {\n items: IListItem[];\n renderTrigger?: IRenderNode<IWithPopupTriggerProps>;\n listSize?: IListSize;\n /** @default false */\n isDisabled?: boolean;\n /** @default true */\n hasDefaultStateBackground?: boolean;\n}\n\nexport const NewMoreMenu: FC<INewMoreMenuProps> = ({\n items,\n isDisabled = false,\n hasDefaultStateBackground = true,\n data,\n renderTrigger,\n listSize,\n testId,\n tweakStyles,\n ...rest\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakWithPopupStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakWithPopup',\n currentComponentName: 'NewMoreMenu',\n });\n\n const tweakListStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakList',\n currentComponentName: 'NewMoreMenu',\n });\n\n const defaultTrigger = ({ triggerProps, referenceProps }: IWithPopupTriggerProps) => (\n <button\n className={clsx(classes.button, {\n [classes.hasCircle]: hasDefaultStateBackground,\n [classes.disabled]: triggerProps.isDisabled,\n [classes.active]: triggerProps.isActive,\n })}\n disabled={triggerProps.isDisabled}\n {...addDataAttributes(data, testId)}\n {...referenceProps}\n >\n <div className={classes.icon}>\n <Icon type=\"menu\" />\n </div>\n </button>\n );\n\n return (\n <WithPopup\n isDisabled={isDisabled || isArrayEmpty(items)}\n tweakStyles={tweakWithPopupStyles}\n {...rest}\n trigger={renderTrigger ?? defaultTrigger}\n >\n {({ onClose }) => (\n <List items={items} size={listSize} tweakStyles={tweakListStyles} onClick={onClose} />\n )}\n </WithPopup>\n );\n};\n","import { ITooltipStyles } from '../Tooltip';\nimport { IWithPopupStyles } from '../WithPopup';\n\nexport const withPopupStyles: IWithPopupStyles = {\n popup: {\n zIndex: 9999,\n },\n};\n\nexport interface IWithTooltipStyles {\n tweakWithPopup?: IWithPopupStyles;\n tweakTooltip?: ITooltipStyles;\n}\n","import { FC } from 'react';\nimport { getTestId, isReactNodeNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { ITooltipProps, Tooltip } from '../Tooltip';\nimport { IWithPopupProps, WithPopup } from '../WithPopup';\nimport { IWithTooltipStyles, withPopupStyles } from './WithTooltip.styles';\n\nexport interface IWithTooltipProps\n extends Omit<\n IWithPopupProps,\n 'trigger' | 'children' | 'placement' | 'eventType' | 'isTriggerWrapped' | 'tweakStyles'\n >,\n ICommonProps<IWithTooltipStyles> {\n children: IWithPopupProps['trigger'];\n /** @default 'hover' */\n eventType?: IWithPopupProps['eventType'];\n /** @default 'top' */\n placement?: IWithPopupProps['placement'];\n tooltipText?: ITooltipProps['text'];\n /** @default 'tooltip' */\n tooltipView?: ITooltipProps['view'];\n /** @default 'info' */\n tooltipType?: ITooltipProps['type'];\n /** @default 'undefined' */\n tooltipSize?: ITooltipProps['size'];\n}\n\nexport const WithTooltip: FC<IWithTooltipProps> = ({\n children,\n eventType = 'hover',\n placement = 'top',\n tooltipText,\n tooltipView = 'tooltip',\n tooltipType = 'info',\n tooltipSize,\n isDisabled = false,\n popupData,\n tweakStyles,\n ...restProps\n}) => {\n const tweakWithPopupStyles = useTweakStyles({\n innerStyles: withPopupStyles,\n tweakStyles,\n className: 'tweakWithPopup',\n currentComponentName: 'WithTooltip',\n });\n\n const tweakTooltipStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakTooltip',\n currentComponentName: 'WithTooltip',\n });\n\n return (\n <WithPopup\n trigger={children}\n placement={placement}\n eventType={eventType}\n popupData={{ ...popupData, tooltipView }}\n isDisabled={isDisabled || !isReactNodeNotEmpty(tooltipText)}\n isTriggerWrapped\n tweakStyles={tweakWithPopupStyles}\n {...restProps}\n >\n <Tooltip\n view={tooltipView}\n type={tooltipType}\n text={tooltipText}\n size={tooltipSize}\n tweakStyles={tweakTooltipStyles}\n testId={getTestId(restProps.testId, 'tooltip')}\n />\n </WithPopup>\n );\n};\n"],"names":["useStyles","addDataAttributes","size","withPopupStyles","Fragment","avatar","Button","WithMessages","Z_INDEX","InputBase","Input","DateInput","inputStyles","SearchInput","ROW_HEIGHT","checkboxStyles","defaultConvertFunction","filter","selectStyles","DEFAULT_DATE_FORMAT","enLocale","DatePicker","FileInput","IconButton","DEFAULT_LOCALE","getLocale","NumberInput","clearButtonStyles","ITEM_HEIGHT","searchInputStyles","search","FlexibleTableRow","DEFAULT_TIMEOUT","SmartInput","isValid","TextArea","TextButton"],"mappings":"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AAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,M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"}
1
+ {"version":3,"file":"true-react-common-ui-kit.js","sources":["../src/theme/common.ts","../src/theme/Provider.tsx","../src/hooks/use-mixed-styles.ts","../src/theme/helpers.ts","../src/hooks/use-did-mount-effect.ts","../src/helpers/popper-helpers.ts","../src/constants/phone-info.ts","../src/constants/mime-types.ts","../src/helpers/phone.ts","../src/helpers/misc.ts","../src/hooks/use-dropdown.ts","../src/hooks/use-latest-ref.ts","../src/hooks/use-intersection-ref.ts","../src/hooks/use-resize-ref.ts","../src/hooks/use-is-mounted.ts","../src/hooks/use-merge.ts","../src/hooks/use-merged-refs.ts","../src/hooks/use-on-click-outside.ts","../src/hooks/use-tweak-styles.ts","../src/components/Icon/icons/avatar.svg?raw","../src/components/Icon/icons/calendar.svg?raw","../src/components/Icon/icons/check.svg?raw","../src/components/Icon/icons/chevron-down-small.svg?raw","../src/components/Icon/icons/chevron-down.svg?raw","../src/components/Icon/icons/chevron-left.svg?raw","../src/components/Icon/icons/chevron-right.svg?raw","../src/components/Icon/icons/close-large.svg?raw","../src/components/Icon/icons/close-window.svg?raw","../src/components/Icon/icons/close.svg?raw","../src/components/Icon/icons/file-excel.svg?raw","../src/components/Icon/icons/file-image.svg?raw","../src/components/Icon/icons/file-other.svg?raw","../src/components/Icon/icons/file-pdf.svg?raw","../src/components/Icon/icons/file-word.svg?raw","../src/components/Icon/icons/file-xml.svg?raw","../src/components/Icon/icons/file-zip.svg?raw","../src/components/Icon/icons/filter.svg?raw","../src/components/Icon/icons/information.svg?raw","../src/components/Icon/icons/menu.svg?raw","../src/components/Icon/icons/minus.svg?raw","../src/components/Icon/icons/plus.svg?raw","../src/components/Icon/icons/search.svg?raw","../src/components/Icon/icons/status-error.svg?raw","../src/components/Icon/icons/status-info.svg?raw","../src/components/Icon/icons/status-not-ok.svg?raw","../src/components/Icon/icons/status-ok.svg?raw","../src/components/Icon/icons/status-warning.svg?raw","../src/components/Icon/icons/trash-can.svg?raw","../src/components/Icon/icons/index.ts","../src/components/Icon/Icon.styles.ts","../src/components/Icon/Icon.tsx","../src/components/Icon/snippet.tsx","../src/components/WithPopup/constants.ts","../src/components/WithPopup/helpers.ts","../src/components/WithPopup/WithPopup.styles.ts","../src/components/WithPopup/WithPopup.tsx","../src/components/List/components/ListItem/ListItem.styles.ts","../src/components/List/components/ListItem/ListItem.tsx","../src/components/List/List.styles.ts","../src/components/List/List.tsx","../src/components/AccountInfo/constants.ts","../src/components/AccountInfo/AccountInfo.styles.ts","../src/components/AccountInfo/AccountInfo.tsx","../src/components/AddButton/AddButton.styles.ts","../src/components/AddButton/AddButton.tsx","../src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.styles.ts","../src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.tsx","../src/components/ThemedPreloader/components/DefaultPreloader/DefaultPreloader.tsx","../src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.styles.ts","../src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.tsx","../src/components/ThemedPreloader/ThemedPreloader.styles.ts","../src/components/ThemedPreloader/ThemedPreloader.tsx","../src/components/Button/Button.styles.ts","../src/components/Button/Button.tsx","../src/components/Checkbox/Checkbox.styles.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/CloseButton/CloseButton.styles.ts","../src/components/CloseButton/CloseButton.tsx","../src/components/CssBaseline/CssBaseline.styles.ts","../src/components/CssBaseline/CssBaseline.tsx","../src/components/WithMessages/WithMessages.styles.ts","../src/components/WithMessages/WithMessages.tsx","../src/components/ControlWrapper/helpers.ts","../src/components/ControlWrapper/ControlWrapper.styles.ts","../src/components/ControlWrapper/ControlWrapper.tsx","../src/components/ControlWrapper/constants.ts","../src/components/Input/Input.styles.ts","../src/components/Input/InputBase.tsx","../src/components/Input/Input.tsx","../src/components/DateInput/constants.ts","../src/components/DateInput/DateInput.styles.ts","../src/components/DateInput/DateInput.tsx","../src/components/DatePicker/components/DatePickerBase/DatePickerBase.tsx","../src/components/SearchInput/SearchInput.styles.ts","../src/components/SearchInput/SearchInput.tsx","../src/components/ScrollIntoViewIfNeeded/constants.ts","../src/components/ScrollIntoViewIfNeeded/ScrollIntoViewIfNeeded.ts","../src/components/Select/constants.ts","../src/components/Select/components/SelectList/SelectList.styles.ts","../src/components/Select/components/SelectListItem/SelectListItem.styles.ts","../src/components/Select/components/SelectListItem/SelectListItem.tsx","../src/components/Select/components/SelectList/SelectList.tsx","../src/components/Select/helpers.ts","../src/components/Select/Select.styles.ts","../src/components/Select/Select.tsx","../src/components/DatePicker/components/DatePickerHeader/DatePickerHeader.styles.ts","../src/components/DatePicker/components/DatePickerHeader/DatePickerHeader.tsx","../src/components/DatePicker/components/PopperContainer/PopperContainer.tsx","../src/components/DatePicker/constants.ts","../src/components/DatePicker/helpers.ts","../src/components/DatePicker/DatePicker.styles.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/Description/constants.ts","../src/components/Description/Description.styles.ts","../src/components/Description/Description.tsx","../src/components/FileInput/helpers.ts","../src/components/FileInput/FileInput.styles.ts","../src/components/FileInput/FileInput.tsx","../src/components/IconButton/IconButton.styles.ts","../src/components/IconButton/IconButton.tsx","../src/components/Tooltip/Tooltip.styles.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/TextWithTooltip/TextWithTooltip.styles.ts","../src/components/TextWithTooltip/TextWithTooltip.tsx","../src/components/FileItem/constants.ts","../src/components/FileItem/helpers.ts","../src/components/FileItem/FileItem.styles.ts","../src/components/FileItem/FileItem.tsx","../src/components/FiltersPane/constants.ts","../src/components/FiltersPane/helpers.ts","../src/components/NumberInput/helpers.ts","../src/components/NumberInput/NumberInput.tsx","../src/components/FiltersPane/FiltersPane.styles.ts","../src/components/FiltersPane/components/FilterInterval/FilterInterval.styles.ts","../src/components/FiltersPane/components/FilterInterval/FilterInterval.tsx","../src/components/MultiSelectList/constants.ts","../src/components/MultiSelectList/helpers.ts","../src/components/MultiSelectList/MultiSelectList.styles.ts","../src/components/MultiSelectList/MultiSelectList.tsx","../src/components/FiltersPane/components/FilterMultiSelect/FilterMultiSelect.tsx","../src/components/FiltersPane/components/FilterSelect/FilterSelect.styles.ts","../src/components/FiltersPane/components/FilterSelect/FilterSelect.tsx","../src/components/FiltersPane/components/FilterWithDates/FilterWithDates.styles.ts","../src/components/FiltersPane/components/FilterWithDates/FilterWithDates.tsx","../src/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.styles.ts","../src/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.tsx","../src/components/FiltersPane/components/Filter/helpers.ts","../src/components/FiltersPane/components/Filter/Filter.tsx","../src/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.styles.ts","../src/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.tsx","../src/components/FiltersPane/components/FilterValueView/FilterValueView.styles.tsx","../src/components/FiltersPane/components/FilterValueView/FilterValueView.tsx","../src/components/FiltersPane/components/FilterWrapper/helpers.ts","../src/components/FiltersPane/components/FilterWrapper/FilterWrapper.styles.ts","../src/components/FiltersPane/components/FilterWrapper/FilterWrapper.tsx","../src/components/FiltersPane/FiltersPane.tsx","../src/components/Flag/customFlags/AB.svg?raw","../src/components/Flag/customFlags/OS.svg?raw","../src/components/Flag/customFlags/customFlags.ts","../src/components/Flag/Flag.styles.ts","../src/components/Flag/Flag.tsx","../src/components/FlexibleTable/constants.ts","../src/components/Skeleton/Skeleton.styles.ts","../src/components/Skeleton/Skeleton.tsx","../src/components/FlexibleTable/helpers.ts","../src/components/FlexibleTable/FlexibleTable.styles.ts","../src/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.styles.ts","../src/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.tsx","../src/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.styles.ts","../src/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.tsx","../src/components/FlexibleTable/FlexibleTable.tsx","../src/components/FloatDocActions/components/DocActions/DocActions.styles.ts","../src/components/FloatDocActions/components/DocActions/DocActions.tsx","../src/components/FloatDocActions/components/DocActions/constants.ts","../src/components/FloatDocActions/constants.ts","../src/components/FloatDocActions/FloatDocActions.styles.ts","../src/components/FloatDocActions/FloatDocActions.tsx","../src/components/IncrementInput/IncrementInput.styles.ts","../src/components/IncrementInput/IncrementInput.tsx","../src/components/Modal/Modal.styles.ts","../src/components/Modal/Modal.tsx","../src/components/MoreMenu/MoreMenu.styles.ts","../src/components/MoreMenu/MoreMenu.tsx","../src/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.styles.ts","../src/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.tsx","../src/components/MultiSelect/MultiSelect.styles.ts","../src/components/MultiSelect/MultiSelect.tsx","../src/components/Notification/Notification.styles.ts","../src/components/Notification/Notification.tsx","../src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.styles.ts","../src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.tsx","../src/components/PhoneInput/constants.ts","../src/components/PhoneInput/PhoneInput.styles.ts","../src/components/PhoneInput/PhoneInput.tsx","../src/components/RadioButton/RadioButton.styles.ts","../src/components/RadioButton/RadioButton.tsx","../src/components/Selector/Selector.styles.ts","../src/components/Selector/Selector.tsx","../src/components/SmartInput/constants.ts","../src/components/SmartInput/helpers.ts","../src/components/SmartInput/SmartInput.tsx","../src/components/Status/Status.styles.ts","../src/components/Status/Status.tsx","../src/components/Switch/Switch.styles.ts","../src/components/Switch/Switch.tsx","../src/components/TextArea/TextArea.styles.ts","../src/components/TextArea/TextArea.tsx","../src/components/TextButton/TextButton.styles.ts","../src/components/TextButton/TextButton.tsx","../src/components/TextWithInfo/TextWithInfo.styles.ts","../src/components/TextWithInfo/TextWithInfo.tsx","../src/components/Toaster/constants.ts","../src/components/Toaster/Toaster.styles.ts","../src/components/Toaster/Toaster.tsx","../src/components/NewMoreMenu/NewMoreMenu.styles.ts","../src/components/NewMoreMenu/NewMoreMenu.tsx","../src/components/WithTooltip/WithTooltip.styles.ts","../src/components/WithTooltip/WithTooltip.tsx"],"sourcesContent":["import { IUiKitHelpers, IUiKitTheme } from './types';\n\nexport const colors = {\n FONT_MAIN: '#222a37',\n FONT_MEDIUM: '#505f79',\n FONT_LABEL: '#7a869a',\n FONT_DISABLED: '#95a0b3',\n GREY_ACTIVE: '#95a0b3',\n BORDER_MAIN: '#d0d6e1',\n BORDER_LIGHT: '#dde3ed',\n GREY_HOVER: '#dde3ed',\n GREY_FOCUS: '#eceff5',\n GREY_DISABLED: '#eceff5',\n GREY_BACKGROUND: '#f6f8fc',\n CLASSIC_WHITE: '#ffffff',\n RED_ACTIVE: '#912e34',\n RED_HOVER: '#c13e45',\n RED_WARNING: '#f14d56',\n RED_WARNING_LIGHT: '#ff6261',\n RED_BACKGROUND: '#feedee',\n ORANGE_BACKGROUND: '#fff4e9',\n GREEN_BACKGROUND: '#f4f9e6',\n BLUE_BACKGROUND: '#ebf1ff',\n // временные константы пока не будет полной темизации\n GREEN_FOCUS: '#97ba1e',\n ORANGE_FOCUS: '#ff991f',\n} as const;\n\nexport const dimensions = {\n BORDER_RADIUS_LARGE: 16,\n BORDER_RADIUS_MEDIUM: 12,\n BORDER_RADIUS_STD: 8,\n BORDER_RADIUS_SMALL: 6,\n BORDER_RADIUS_EXTRA_SMALL: 4,\n\n CONTROL: {\n HEIGHT: 48,\n PADDING: 16,\n ICON_SIZE: 24,\n ICON_INNER_SIZE: 24,\n ICON_GAP: 8,\n },\n\n Z_INDEX: {\n CONTROL_INVALID: 1,\n CONTROL_FOCUS: 2,\n },\n} as const;\n\nexport const helpers = {\n withAngle: (angleSize = 6, position: 'left' | 'right' = 'left', distance = 100) => ({\n display: 'inline-block',\n position: 'relative',\n marginTop: angleSize * 2 - 1,\n boxShadow: '0 8px 20px 0 rgba(0, 0, 0, 0.04)',\n border: ['solid', 1, colors.BORDER_MAIN],\n borderRadius: dimensions.BORDER_RADIUS_EXTRA_SMALL,\n\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n top: -angleSize,\n left: position === 'left' && distance,\n right: position === 'right' && distance,\n width: 0,\n height: 0,\n borderLeft: [angleSize, 'solid', 'transparent'],\n borderRight: [angleSize, 'solid', 'transparent'],\n borderBottom: [angleSize, 'solid', colors.BORDER_MAIN],\n },\n\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n top: -angleSize + 1,\n left: position === 'left' && distance + 1,\n right: position === 'right' && distance + 1,\n width: 0,\n height: 0,\n borderLeft: [angleSize - 1, 'solid', 'transparent'],\n borderRight: [angleSize - 1, 'solid', 'transparent'],\n borderBottom: [angleSize - 1, 'solid', colors.CLASSIC_WHITE],\n },\n }),\n\n withScrollBar: {\n boxSizing: 'border-box',\n overflow: 'auto',\n\n // Chromium\n '@supports selector(::-webkit-scrollbar)': {\n '--webkit-scrollbar-width': '10px',\n '--webkit-scrollbar-height': '10px',\n\n '&::-webkit-scrollbar': {\n width: 'var(--webkit-scrollbar-width)',\n height: 'var(--webkit-scrollbar-height)',\n\n '&-thumb': {\n width: 6,\n minHeight: 30,\n border: [2, 'solid', 'transparent'],\n borderRadius: 5,\n backgroundColor: colors.BORDER_MAIN,\n backgroundClip: 'padding-box',\n\n '&:hover': {\n backgroundColor: colors.GREY_ACTIVE,\n },\n },\n\n '&-track-piece': {\n backgroundColor: 'transparent',\n },\n\n '&-corner': {\n backgroundColor: 'transparent',\n },\n },\n },\n\n // Firefox\n '@supports not selector(::-webkit-scrollbar)': {\n scrollbarWidth: 'thin',\n scrollbarColor: `${colors.BORDER_MAIN} transparent`,\n },\n },\n} satisfies IUiKitHelpers;\n\nexport const SLIDE_UP_ANIMATION_DURATION = 150;\nconst SLIDE_UP_POSITION_START = 15;\nconst SLIDE_UP_POSITION_END = 0;\n\nexport const animations = {\n defaultTransition: '0.25s ease-in-out',\n slideUp: {\n 'slide-up-enter': {\n opacity: 0,\n transform: `translateY(${SLIDE_UP_POSITION_START}px)`,\n },\n\n 'slide-up-enter-active': {\n opacity: 1,\n transform: `translateY(${SLIDE_UP_POSITION_END}px)`,\n transition: `${SLIDE_UP_ANIMATION_DURATION}ms ease-in-out`,\n transitionProperty: 'opacity, transform',\n },\n\n 'slide-up-exit-active': {\n opacity: 1,\n transform: `translateY(${SLIDE_UP_POSITION_END}px)`,\n },\n\n 'slide-up-exit': {\n opacity: 0,\n transform: `translateY(${SLIDE_UP_POSITION_START}px)`,\n transition: `${SLIDE_UP_ANIMATION_DURATION}ms ease-in-out`,\n transitionProperty: 'opacity, transform',\n },\n },\n};\n\nexport interface ICommonUiKitTheme extends IUiKitTheme {\n colors: typeof colors;\n dimensions: typeof dimensions;\n helpers: typeof helpers;\n animations: typeof animations;\n}\n\nexport const common: ICommonUiKitTheme = {\n animations,\n colors,\n dimensions,\n helpers,\n};\n","import { createContext, useContext } from 'react';\nimport { common } from './common';\nimport type { IUiKitTheme } from './types';\n\nexport const ThemeContext = createContext<IUiKitTheme>(common);\n\nexport const ThemeProvider = ThemeContext.Provider;\n\nexport const useTheme = (): IUiKitTheme => useContext(ThemeContext);\n","import { useMemo } from 'react';\nimport { isObject } from '@true-engineering/true-react-platform-helpers';\nimport type { IMixedStyles } from '../theme';\n\nexport const mixStyles = <T>(...tweakStyles: Array<IMixedStyles<T>>): Array<NonNullable<T>> =>\n tweakStyles.flat().filter(isObject) as Array<NonNullable<T>>;\n\nexport const useMixedStyles = <StyleSheet>(\n baseStyles?: IMixedStyles<StyleSheet>,\n tweakStyles?: IMixedStyles<StyleSheet>,\n): Array<NonNullable<StyleSheet>> =>\n useMemo(() => mixStyles(baseStyles, tweakStyles), [baseStyles, tweakStyles]);\n","import { useMemo } from 'react';\nimport { createUseStyles } from 'react-jss';\nimport {\n isArrayNotEmpty,\n isNotEmpty,\n isString,\n mergeStyles,\n} from '@true-engineering/true-react-platform-helpers';\nimport { mixStyles } from '../hooks/use-mixed-styles';\nimport { useTheme } from './Provider';\nimport { IComponentName, IStyles, IUseStyles } from './types';\n\nexport const useThemeComponentStyles = <T>(\n componentName?: IComponentName,\n): Partial<T> | undefined => {\n const { components } = useTheme();\n return isNotEmpty(componentName) ? (components?.[componentName] as never) : undefined;\n};\n\nconst isTweakStyle = (key: string): boolean => key.startsWith('tweak');\n\nconst areStylesNotEmpty = <T>(tweakStyles?: T): tweakStyles is NonNullable<T> =>\n isNotEmpty(tweakStyles) && !Object.keys(tweakStyles).every(isTweakStyle);\n\nconst checkStyles = (styles: IStyles<string>, componentName = 'LocalComponent'): void => {\n const invalidClasses = Object.keys(styles).filter(isTweakStyle);\n\n if (isArrayNotEmpty(invalidClasses)) {\n console.error(\n `${componentName}: Названия классов не должны начинаться со слова \"tweak\": ${invalidClasses}`,\n );\n }\n};\n\ntype TweakStylesCache = (styles: object[], idx?: number) => object | undefined;\nconst getTweakStylesCache = (): TweakStylesCache => {\n let mergedStyles: object | undefined;\n const cache = new WeakMap<object, TweakStylesCache>();\n\n const getNext = (next: object) => {\n if (!cache.has(next)) {\n cache.set(next, getTweakStylesCache());\n }\n\n return cache.get(next)!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\n };\n\n return (styles, idx = 0) => {\n const next = styles.at(idx);\n if (isNotEmpty(next)) {\n return getNext(next)(styles, idx + 1);\n }\n\n if (!isNotEmpty(mergedStyles)) {\n const [first, ...rest] = styles;\n mergedStyles = isArrayNotEmpty(rest) ? mergeStyles(first, ...rest) : first;\n }\n\n return mergedStyles;\n };\n};\n\nconst tweakStylesCache = getTweakStylesCache();\nconst useStyles = createUseStyles<string>((tweakStyles) => tweakStyles as never);\n\nexport const createThemedStyles: <C extends string>(\n ...args: [IStyles<C>] | [IComponentName, IStyles<C>]\n) => IUseStyles<C> = (first, second?) => {\n const componentName = isString(first) ? first : undefined;\n const styles = second! ?? first; // eslint-disable-line @typescript-eslint/no-non-null-assertion\n\n if (process.env.NODE_ENV !== 'production') {\n checkStyles(styles, componentName);\n }\n\n return ({ theme, tweakStyles = theme }) => {\n const themeStyles = useThemeComponentStyles<typeof styles>(componentName);\n\n const data = useMemo(() => {\n const resultStyles = mixStyles(styles, themeStyles, tweakStyles).filter(areStylesNotEmpty);\n return { theme: tweakStylesCache(resultStyles) };\n }, [themeStyles, tweakStyles]);\n\n return useStyles(data);\n };\n};\n","import { DependencyList, EffectCallback, useEffect, useRef } from 'react';\n\nexport const useDidMountEffect = (effect: EffectCallback, dependencies: DependencyList): void => {\n const isMountedRef = useRef(false);\n useEffect(() => {\n let unmount: ReturnType<EffectCallback>;\n if (isMountedRef.current) {\n unmount = effect();\n } else {\n isMountedRef.current = true;\n }\n return () => {\n if (unmount !== undefined) {\n unmount();\n }\n };\n }, dependencies);\n};\n","import { Modifier } from 'react-overlays/usePopper';\n\nexport const minWidthModifier: Partial<Modifier<any, any>> = {\n name: 'minWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: ({ state }) => {\n state.styles.popper.minWidth = `${state.rects.reference.width}px`;\n },\n effect: ({ state }) => {\n state.elements.popper.style.minWidth = `${\n (state.elements.reference as HTMLElement).offsetWidth\n }px`;\n },\n};\n","import type { IPhoneInfo } from '../components';\n\nexport const phoneInfo: IPhoneInfo[] = [\n {\n countryEn: 'Abkhazia',\n countryRu: 'Абхазия',\n countryCode: 'AB',\n phoneMask: '(999) 999-99-99',\n dialCode: '7',\n dialCodePriority: 1,\n fullCodes: ['7'],\n },\n {\n countryEn: 'Afghanistan',\n countryRu: 'Афганистан',\n countryCode: 'AF',\n dialCode: '93',\n fullCodes: ['93'],\n },\n {\n countryEn: 'Albania',\n countryRu: 'Албания',\n countryCode: 'AL',\n dialCode: '355',\n fullCodes: ['355'],\n },\n {\n countryEn: 'Algeria',\n countryRu: 'Алжир',\n countryCode: 'DZ',\n dialCode: '213',\n fullCodes: ['213'],\n },\n {\n countryEn: 'Andorra',\n countryRu: 'Андорра',\n countryCode: 'AD',\n dialCode: '376',\n fullCodes: ['376'],\n },\n {\n countryEn: 'Angola',\n countryRu: 'Ангола',\n countryCode: 'AO',\n dialCode: '244',\n fullCodes: ['244'],\n },\n {\n countryEn: 'Antigua and Barbuda',\n countryRu: 'Антигуа и Барбуда',\n countryCode: 'AG',\n dialCode: '1268',\n fullCodes: ['1268'],\n },\n {\n countryEn: 'Argentina',\n countryRu: 'Аргентина',\n countryCode: 'AR',\n dialCode: '54',\n phoneMask: '(99) 99999999',\n fullCodes: ['54'],\n },\n {\n countryEn: 'Armenia',\n countryRu: 'Армения',\n countryCode: 'AM',\n dialCode: '374',\n fullCodes: ['374'],\n },\n {\n countryEn: 'Aruba',\n countryRu: 'Аруба',\n countryCode: 'AW',\n dialCode: '297',\n fullCodes: ['297'],\n },\n {\n countryEn: 'Australia',\n countryRu: 'Австралия',\n countryCode: 'AU',\n dialCode: '61',\n phoneMask: '(99) 9999 9999',\n dialCodePriority: 0,\n areaCodes: ['2', '3', '4', '7', '8', '02', '03', '04', '07', '08'],\n fullCodes: ['612', '613', '614', '617', '618', '6102', '6103', '6104', '6107', '6108'],\n },\n {\n countryEn: 'Austria',\n countryRu: 'Австрия',\n countryCode: 'AT',\n dialCode: '43',\n fullCodes: ['43'],\n },\n {\n countryEn: 'Azerbaijan',\n countryRu: 'Азербайджан',\n countryCode: 'AZ',\n dialCode: '994',\n fullCodes: ['994'],\n },\n {\n countryEn: 'Bahamas',\n countryRu: 'Багамы',\n countryCode: 'BS',\n dialCode: '1242',\n fullCodes: ['1242'],\n },\n {\n countryEn: 'Bahrain',\n countryRu: 'Бахрейн',\n countryCode: 'BH',\n dialCode: '973',\n fullCodes: ['973'],\n },\n {\n countryEn: 'Bangladesh',\n countryRu: 'Бангладеш',\n countryCode: 'BD',\n dialCode: '880',\n fullCodes: ['880'],\n },\n {\n countryEn: 'Barbados',\n countryRu: 'Барбадос',\n countryCode: 'BB',\n dialCode: '1246',\n fullCodes: ['1246'],\n },\n {\n countryEn: 'Belarus',\n countryRu: 'Беларусь',\n countryCode: 'BY',\n dialCode: '375',\n phoneMask: '(99) 999 99 99',\n fullCodes: ['375'],\n },\n {\n countryEn: 'Belgium',\n countryRu: 'Бельгия',\n countryCode: 'BE',\n dialCode: '32',\n phoneMask: '999 99 99 99',\n fullCodes: ['32'],\n },\n {\n countryEn: 'Belize',\n countryRu: 'Белиз',\n countryCode: 'BZ',\n dialCode: '501',\n fullCodes: ['501'],\n },\n {\n countryEn: 'Benin',\n countryRu: 'Бенин',\n countryCode: 'BJ',\n dialCode: '229',\n fullCodes: ['229'],\n },\n {\n countryEn: 'Bhutan',\n countryRu: 'Бутан',\n countryCode: 'BT',\n dialCode: '975',\n fullCodes: ['975'],\n },\n {\n countryEn: 'Bolivia',\n countryRu: 'Боливия',\n countryCode: 'BO',\n dialCode: '591',\n fullCodes: ['591'],\n },\n {\n countryEn: 'Bosnia and Herzegovina',\n countryRu: 'Босния и Герцеговина',\n countryCode: 'BA',\n dialCode: '387',\n fullCodes: ['387'],\n },\n {\n countryEn: 'Botswana',\n countryRu: 'Ботсвана',\n countryCode: 'BW',\n dialCode: '267',\n fullCodes: ['267'],\n },\n {\n countryEn: 'Brazil',\n countryRu: 'Бразилия',\n countryCode: 'BR',\n dialCode: '55',\n phoneMask: '(99) 999999999',\n fullCodes: ['55'],\n },\n {\n countryEn: 'British Indian Ocean Territory',\n countryRu: 'Британская территория в Индийском океане',\n countryCode: 'IO',\n dialCode: '246',\n fullCodes: ['246'],\n },\n {\n countryEn: 'Brunei',\n countryRu: 'Бруней-Даруссалам',\n countryCode: 'BN',\n dialCode: '673',\n fullCodes: ['673'],\n },\n {\n countryEn: 'Bulgaria',\n countryRu: 'Болгария',\n countryCode: 'BG',\n dialCode: '359',\n fullCodes: ['359'],\n },\n {\n countryEn: 'Burkina Faso',\n countryRu: 'Буркина-Фасо',\n countryCode: 'BF',\n dialCode: '226',\n fullCodes: ['226'],\n },\n {\n countryEn: 'Burundi',\n countryRu: 'Бурунди',\n countryCode: 'BI',\n dialCode: '257',\n fullCodes: ['257'],\n },\n {\n countryEn: 'Cambodia',\n countryRu: 'Камбоджа',\n countryCode: 'KH',\n dialCode: '855',\n fullCodes: ['855'],\n },\n {\n countryEn: 'Cameroon',\n countryRu: 'Камерун',\n countryCode: 'CM',\n dialCode: '237',\n fullCodes: ['237'],\n },\n {\n countryEn: 'Canada',\n countryRu: 'Канада',\n countryCode: 'CA',\n dialCode: '1',\n phoneMask: '(999) 999-9999',\n dialCodePriority: 1,\n areaCodes: [\n '204',\n '226',\n '236',\n '249',\n '250',\n '289',\n '306',\n '343',\n '365',\n '387',\n '403',\n '416',\n '418',\n '431',\n '437',\n '438',\n '450',\n '506',\n '514',\n '519',\n '548',\n '579',\n '581',\n '587',\n '604',\n '613',\n '639',\n '647',\n '672',\n '705',\n '709',\n '742',\n '778',\n '780',\n '782',\n '807',\n '819',\n '825',\n '867',\n '873',\n '902',\n '905',\n ],\n fullCodes: [\n '1204',\n '1226',\n '1236',\n '1249',\n '1250',\n '1289',\n '1306',\n '1343',\n '1365',\n '1387',\n '1403',\n '1416',\n '1418',\n '1431',\n '1437',\n '1438',\n '1450',\n '1506',\n '1514',\n '1519',\n '1548',\n '1579',\n '1581',\n '1587',\n '1604',\n '1613',\n '1639',\n '1647',\n '1672',\n '1705',\n '1709',\n '1742',\n '1778',\n '1780',\n '1782',\n '1807',\n '1819',\n '1825',\n '1867',\n '1873',\n '1902',\n '1905',\n ],\n },\n {\n countryEn: 'Cape Verde',\n countryRu: 'Кабо-Верде',\n countryCode: 'CV',\n dialCode: '238',\n fullCodes: ['238'],\n },\n {\n countryEn: 'Caribbean Netherlands',\n countryRu: 'Бонайре, Саба и Синт-Эстатиус',\n countryCode: 'BQ',\n dialCode: '599',\n dialCodePriority: 1,\n fullCodes: ['599'],\n },\n {\n countryEn: 'Central African Republic',\n countryRu: 'Центрально-Африканская Республика',\n countryCode: 'CF',\n dialCode: '236',\n fullCodes: ['236'],\n },\n {\n countryEn: 'Chad',\n countryRu: 'Чад',\n countryCode: 'TD',\n dialCode: '235',\n fullCodes: ['235'],\n },\n {\n countryEn: 'Chile',\n countryRu: 'Чили',\n countryCode: 'CL',\n dialCode: '56',\n fullCodes: ['56'],\n },\n {\n countryEn: 'China',\n countryRu: 'Китай',\n countryCode: 'CN',\n dialCode: '86',\n phoneMask: '99-999999999',\n fullCodes: ['86'],\n },\n {\n countryEn: 'Colombia',\n countryRu: 'Колумбия',\n countryCode: 'CO',\n dialCode: '57',\n fullCodes: ['57'],\n },\n {\n countryEn: 'Comoros',\n countryRu: 'Коморы',\n countryCode: 'KM',\n dialCode: '269',\n fullCodes: ['269'],\n },\n {\n countryEn: 'DR Congo',\n countryRu: 'ДР Конго',\n countryCode: 'CD',\n dialCode: '243',\n fullCodes: ['243'],\n },\n {\n countryEn: 'Republic of the Congo',\n countryRu: 'Республика Конго',\n countryCode: 'CG',\n dialCode: '242',\n fullCodes: ['242'],\n },\n {\n countryEn: 'Costa Rica',\n countryRu: 'Коста-Рика',\n countryCode: 'CR',\n dialCode: '506',\n phoneMask: '9999-9999',\n fullCodes: ['506'],\n },\n {\n countryEn: 'Côte d’Ivoire',\n countryRu: 'Кот д’Ивуар',\n countryCode: 'CI',\n dialCode: '225',\n phoneMask: '99 99 99 99',\n fullCodes: ['225'],\n },\n {\n countryEn: 'Croatia',\n countryRu: 'Хорватия',\n countryCode: 'HR',\n dialCode: '385',\n fullCodes: ['385'],\n },\n {\n countryEn: 'Cuba',\n countryRu: 'Куба',\n countryCode: 'CU',\n dialCode: '53',\n fullCodes: ['53'],\n },\n {\n countryEn: 'Curaçao',\n countryRu: 'Кюрасао',\n countryCode: 'CW',\n dialCode: '599',\n dialCodePriority: 0,\n fullCodes: ['599'],\n },\n {\n countryEn: 'Cyprus',\n countryRu: 'Кипр',\n countryCode: 'CY',\n dialCode: '357',\n phoneMask: '99 999999',\n fullCodes: ['357'],\n },\n {\n countryEn: 'Czech Republic',\n countryRu: 'Чешская Республика',\n countryCode: 'CZ',\n dialCode: '420',\n fullCodes: ['420'],\n },\n {\n countryEn: 'Denmark',\n countryRu: 'Дания',\n countryCode: 'DK',\n dialCode: '45',\n phoneMask: '99 99 99 99',\n fullCodes: ['45'],\n },\n {\n countryEn: 'Djibouti',\n countryRu: 'Джибути',\n countryCode: 'DJ',\n dialCode: '253',\n fullCodes: ['253'],\n },\n {\n countryEn: 'Dominica',\n countryRu: 'Доминика',\n countryCode: 'DM',\n dialCode: '1767',\n fullCodes: ['1767'],\n },\n {\n countryEn: 'Dominican Republic',\n countryRu: 'Доминиканская Республика',\n countryCode: 'DO',\n dialCode: '1',\n dialCodePriority: 2,\n areaCodes: ['809', '829', '849'],\n fullCodes: ['1809', '1829', '1849'],\n },\n {\n countryEn: 'Ecuador',\n countryRu: 'Эквадор',\n countryCode: 'EC',\n dialCode: '593',\n fullCodes: ['593'],\n },\n {\n countryEn: 'Egypt',\n countryRu: 'Египет',\n countryCode: 'EG',\n dialCode: '20',\n fullCodes: ['20'],\n },\n {\n countryEn: 'El Salvador',\n countryRu: 'Эль-Сальвадор',\n countryCode: 'SV',\n dialCode: '503',\n phoneMask: '9999-9999',\n fullCodes: ['503'],\n },\n {\n countryEn: 'Equatorial Guinea',\n countryRu: 'Экваториальная Гвинея',\n countryCode: 'GQ',\n dialCode: '240',\n fullCodes: ['240'],\n },\n {\n countryEn: 'Eritrea',\n countryRu: 'Эритрея',\n countryCode: 'ER',\n dialCode: '291',\n fullCodes: ['291'],\n },\n {\n countryEn: 'Estonia',\n countryRu: 'Эстония',\n countryCode: 'EE',\n dialCode: '372',\n phoneMask: '9999 999999',\n fullCodes: ['372'],\n },\n {\n countryEn: 'Ethiopia',\n countryRu: 'Эфиопия',\n countryCode: 'ET',\n dialCode: '251',\n fullCodes: ['251'],\n },\n {\n countryEn: 'Fiji',\n countryRu: 'Фиджи',\n countryCode: 'FJ',\n dialCode: '679',\n fullCodes: ['679'],\n },\n {\n countryEn: 'Finland',\n countryRu: 'Финляндия',\n countryCode: 'FI',\n dialCode: '358',\n phoneMask: '99 999 99 99',\n fullCodes: ['358'],\n },\n {\n countryEn: 'France',\n countryRu: 'Франция',\n countryCode: 'FR',\n dialCode: '33',\n phoneMask: '9 99 99 99 99',\n fullCodes: ['33'],\n },\n {\n countryEn: 'French Guiana',\n countryRu: 'Французская Гвиана',\n countryCode: 'GF',\n dialCode: '594',\n fullCodes: ['594'],\n },\n {\n countryEn: 'French Polynesia',\n countryRu: 'Французская Полинезия',\n countryCode: 'PF',\n dialCode: '689',\n fullCodes: ['689'],\n },\n {\n countryEn: 'Gabon',\n countryRu: 'Габон',\n countryCode: 'GA',\n dialCode: '241',\n fullCodes: ['241'],\n },\n {\n countryEn: 'Gambia',\n countryRu: 'Гамбия',\n countryCode: 'GM',\n dialCode: '220',\n fullCodes: ['220'],\n },\n {\n countryEn: 'Georgia',\n countryRu: 'Грузия',\n countryCode: 'GE',\n dialCode: '995',\n fullCodes: ['995'],\n },\n {\n countryEn: 'Germany',\n countryRu: 'Германия',\n countryCode: 'DE',\n dialCode: '49',\n phoneMask: '9999 99999999',\n fullCodes: ['49'],\n },\n {\n countryEn: 'Ghana',\n countryRu: 'Гана',\n countryCode: 'GH',\n dialCode: '233',\n fullCodes: ['233'],\n },\n {\n countryEn: 'Greece',\n countryRu: 'Греция',\n countryCode: 'GR',\n dialCode: '30',\n fullCodes: ['30'],\n },\n {\n countryEn: 'Grenada',\n countryRu: 'Гренада',\n countryCode: 'GD',\n dialCode: '1473',\n fullCodes: ['1473'],\n },\n {\n countryEn: 'Guadeloupe',\n countryRu: 'Гваделупа',\n countryCode: 'GP',\n dialCode: '590',\n dialCodePriority: 0,\n fullCodes: ['590'],\n },\n {\n countryEn: 'Guam',\n countryRu: 'Гуам',\n countryCode: 'GU',\n dialCode: '1671',\n fullCodes: ['1671'],\n },\n {\n countryEn: 'Guatemala',\n countryRu: 'Гватемала',\n countryCode: 'GT',\n dialCode: '502',\n phoneMask: '9999-9999',\n fullCodes: ['502'],\n },\n {\n countryEn: 'Guinea',\n countryRu: 'Гвинея',\n countryCode: 'GN',\n dialCode: '224',\n fullCodes: ['224'],\n },\n {\n countryEn: 'Guinea-Bissau',\n countryRu: 'Гвинея-Бисау',\n countryCode: 'GW',\n dialCode: '245',\n fullCodes: ['245'],\n },\n {\n countryEn: 'Guyana',\n countryRu: 'Гайана',\n countryCode: 'GY',\n dialCode: '592',\n fullCodes: ['592'],\n },\n {\n countryEn: 'Haiti',\n countryRu: 'Гаити',\n countryCode: 'HT',\n dialCode: '509',\n phoneMask: '9999-9999',\n fullCodes: ['509'],\n },\n {\n countryEn: 'Honduras',\n countryRu: 'Гондурас',\n countryCode: 'HN',\n dialCode: '504',\n fullCodes: ['504'],\n },\n {\n countryEn: 'Hong Kong',\n countryRu: 'Гонконг',\n countryCode: 'HK',\n dialCode: '852',\n phoneMask: '9999 9999',\n fullCodes: ['852'],\n },\n {\n countryEn: 'Hungary',\n countryRu: 'Венгрия',\n countryCode: 'HU',\n dialCode: '36',\n fullCodes: ['36'],\n },\n {\n countryEn: 'Iceland',\n countryRu: 'Исландия',\n countryCode: 'IS',\n dialCode: '354',\n phoneMask: '999 9999',\n fullCodes: ['354'],\n },\n {\n countryEn: 'India',\n countryRu: 'Индия',\n countryCode: 'IN',\n dialCode: '91',\n phoneMask: '99999-99999',\n fullCodes: ['91'],\n },\n {\n countryEn: 'Indonesia',\n countryRu: 'Индонезия',\n countryCode: 'ID',\n dialCode: '62',\n fullCodes: ['62'],\n },\n {\n countryEn: 'Iran',\n countryRu: 'Иран',\n countryCode: 'IR',\n dialCode: '98',\n fullCodes: ['98'],\n },\n {\n countryEn: 'Iraq',\n countryRu: 'Ирак',\n countryCode: 'IQ',\n dialCode: '964',\n fullCodes: ['964'],\n },\n {\n countryEn: 'Ireland',\n countryRu: 'Ирландия',\n countryCode: 'IE',\n dialCode: '353',\n phoneMask: '99 9999999',\n fullCodes: ['353'],\n },\n {\n countryEn: 'Israel',\n countryRu: 'Израиль',\n countryCode: 'IL',\n dialCode: '972',\n phoneMask: '999 999 9999',\n fullCodes: ['972'],\n },\n {\n countryEn: 'Italy',\n countryRu: 'Италия',\n countryCode: 'IT',\n dialCode: '39',\n phoneMask: '999 9999999',\n dialCodePriority: 0,\n fullCodes: ['39'],\n },\n {\n countryEn: 'Jamaica',\n countryRu: 'Ямайка',\n countryCode: 'JM',\n dialCode: '1876',\n fullCodes: ['1876'],\n },\n {\n countryEn: 'Japan',\n countryRu: 'Япония',\n countryCode: 'JP',\n dialCode: '81',\n phoneMask: '99 9999 9999',\n fullCodes: ['81'],\n },\n {\n countryEn: 'Jordan',\n countryRu: 'Иордания',\n countryCode: 'JO',\n dialCode: '962',\n fullCodes: ['962'],\n },\n {\n countryEn: 'Kazakhstan',\n countryRu: 'Казахстан',\n countryCode: 'KZ',\n dialCode: '7',\n phoneMask: '(999) 999-99-99',\n dialCodePriority: 1,\n fullCodes: ['7'],\n },\n {\n countryEn: 'Kenya',\n countryRu: 'Кения',\n countryCode: 'KE',\n dialCode: '254',\n fullCodes: ['254'],\n },\n {\n countryEn: 'Kiribati',\n countryRu: 'Кирибати',\n countryCode: 'KI',\n dialCode: '686',\n fullCodes: ['686'],\n },\n {\n countryEn: 'Kosovo',\n countryRu: 'Косово',\n countryCode: 'XK',\n dialCode: '383',\n fullCodes: ['383'],\n },\n {\n countryEn: 'Kuwait',\n countryRu: 'Кувейт',\n countryCode: 'KW',\n dialCode: '965',\n fullCodes: ['965'],\n },\n {\n countryEn: 'Kyrgyzstan',\n countryRu: 'Киргизия',\n countryCode: 'KG',\n dialCode: '996',\n fullCodes: ['996'],\n },\n {\n countryEn: 'Laos',\n countryRu: 'Лаос',\n countryCode: 'LA',\n dialCode: '856',\n fullCodes: ['856'],\n },\n {\n countryEn: 'Latvia',\n countryRu: 'Латвия',\n countryCode: 'LV',\n dialCode: '371',\n fullCodes: ['371'],\n },\n {\n countryEn: 'Lebanon',\n countryRu: 'Ливан',\n countryCode: 'LB',\n dialCode: '961',\n fullCodes: ['961'],\n },\n {\n countryEn: 'Lesotho',\n countryRu: 'Лесото',\n countryCode: 'LS',\n dialCode: '266',\n fullCodes: ['266'],\n },\n {\n countryEn: 'Liberia',\n countryRu: 'Либерия',\n countryCode: 'LR',\n dialCode: '231',\n fullCodes: ['231'],\n },\n {\n countryEn: 'Libya',\n countryRu: 'Ливийская Арабская Джамахирия',\n countryCode: 'LY',\n dialCode: '218',\n fullCodes: ['218'],\n },\n {\n countryEn: 'Liechtenstein',\n countryRu: 'Лихтенштейн',\n countryCode: 'LI',\n dialCode: '423',\n fullCodes: ['423'],\n },\n {\n countryEn: 'Lithuania',\n countryRu: 'Литва',\n countryCode: 'LT',\n dialCode: '370',\n fullCodes: ['370'],\n },\n {\n countryEn: 'Luxembourg',\n countryRu: 'Люксембург',\n countryCode: 'LU',\n dialCode: '352',\n fullCodes: ['352'],\n },\n {\n countryEn: 'Macau',\n countryRu: 'Макао',\n countryCode: 'MO',\n dialCode: '853',\n fullCodes: ['853'],\n },\n {\n countryEn: 'Macedonia',\n countryRu: 'Республика Македония',\n countryCode: 'MK',\n dialCode: '389',\n fullCodes: ['389'],\n },\n {\n countryEn: 'Madagascar',\n countryRu: 'Мадагаскар',\n countryCode: 'MG',\n dialCode: '261',\n fullCodes: ['261'],\n },\n {\n countryEn: 'Malawi',\n countryRu: 'Малави',\n countryCode: 'MW',\n dialCode: '265',\n fullCodes: ['265'],\n },\n {\n countryEn: 'Malaysia',\n countryRu: 'Малайзия',\n countryCode: 'MY',\n dialCode: '60',\n phoneMask: '99-9999-9999',\n fullCodes: ['60'],\n },\n {\n countryEn: 'Maldives',\n countryRu: 'Мальдивы',\n countryCode: 'MV',\n dialCode: '960',\n fullCodes: ['960'],\n },\n {\n countryEn: 'Mali',\n countryRu: 'Мали',\n countryCode: 'ML',\n dialCode: '223',\n fullCodes: ['223'],\n },\n {\n countryEn: 'Malta',\n countryRu: 'Мальта',\n countryCode: 'MT',\n dialCode: '356',\n fullCodes: ['356'],\n },\n {\n countryEn: 'Marshall Islands',\n countryRu: 'Маршалловы острова',\n countryCode: 'MH',\n dialCode: '692',\n fullCodes: ['692'],\n },\n {\n countryEn: 'Martinique',\n countryRu: 'Мартиника',\n countryCode: 'MQ',\n dialCode: '596',\n fullCodes: ['596'],\n },\n {\n countryEn: 'Mauritania',\n countryRu: 'Мавритания',\n countryCode: 'MR',\n dialCode: '222',\n fullCodes: ['222'],\n },\n {\n countryEn: 'Mauritius',\n countryRu: 'Маврикий',\n countryCode: 'MU',\n dialCode: '230',\n fullCodes: ['230'],\n },\n {\n countryEn: 'Mexico',\n countryRu: 'Мексика',\n countryCode: 'MX',\n dialCode: '52',\n phoneMask: '999 999 9999',\n dialCodePriority: 0,\n areaCodes: ['55', '81', '33', '656', '664', '998', '774', '229'],\n fullCodes: ['5255', '5281', '5233', '52656', '52664', '52998', '52774', '52229'],\n },\n {\n countryEn: 'Micronesia',\n countryRu: 'Микронезия, Федеративные Штаты',\n countryCode: 'FM',\n dialCode: '691',\n fullCodes: ['691'],\n },\n {\n countryEn: 'Moldova',\n countryRu: 'Молдова, Республика',\n countryCode: 'MD',\n dialCode: '373',\n phoneMask: '(99) 99-99-99',\n fullCodes: ['373'],\n },\n {\n countryEn: 'Monaco',\n countryRu: 'Монако',\n countryCode: 'MC',\n dialCode: '377',\n fullCodes: ['377'],\n },\n {\n countryEn: 'Mongolia',\n countryRu: 'Монголия',\n countryCode: 'MN',\n dialCode: '976',\n fullCodes: ['976'],\n },\n {\n countryEn: 'Montenegro',\n countryRu: 'Черногория',\n countryCode: 'ME',\n dialCode: '382',\n fullCodes: ['382'],\n },\n {\n countryEn: 'Morocco',\n countryRu: 'Марокко',\n countryCode: 'MA',\n dialCode: '212',\n fullCodes: ['212'],\n },\n {\n countryEn: 'Mozambique',\n countryRu: 'Мозамбик',\n countryCode: 'MZ',\n dialCode: '258',\n fullCodes: ['258'],\n },\n {\n countryEn: 'Myanmar',\n countryRu: 'Мьянма',\n countryCode: 'MM',\n dialCode: '95',\n fullCodes: ['95'],\n },\n {\n countryEn: 'Namibia',\n countryRu: 'Намибия',\n countryCode: 'NA',\n dialCode: '264',\n fullCodes: ['264'],\n },\n {\n countryEn: 'Nauru',\n countryRu: 'Науру',\n countryCode: 'NR',\n dialCode: '674',\n fullCodes: ['674'],\n },\n {\n countryEn: 'Nepal',\n countryRu: 'Непал',\n countryCode: 'NP',\n dialCode: '977',\n fullCodes: ['977'],\n },\n {\n countryEn: 'Netherlands',\n countryRu: 'Нидерланды',\n countryCode: 'NL',\n dialCode: '31',\n phoneMask: '99 99999999',\n fullCodes: ['31'],\n },\n {\n countryEn: 'New Caledonia',\n countryRu: 'Новая Каледония',\n countryCode: 'NC',\n dialCode: '687',\n fullCodes: ['687'],\n },\n {\n countryEn: 'New Zealand',\n countryRu: 'Новая Зеландия',\n countryCode: 'NZ',\n dialCode: '64',\n phoneMask: '999-999-9999',\n fullCodes: ['64'],\n },\n {\n countryEn: 'Nicaragua',\n countryRu: 'Никарагуа',\n countryCode: 'NI',\n dialCode: '505',\n fullCodes: ['505'],\n },\n {\n countryEn: 'Niger',\n countryRu: 'Нигер',\n countryCode: 'NE',\n dialCode: '227',\n fullCodes: ['227'],\n },\n {\n countryEn: 'Nigeria',\n countryRu: 'Нигерия',\n countryCode: 'NG',\n dialCode: '234',\n fullCodes: ['234'],\n },\n {\n countryEn: 'North Korea',\n countryRu: 'Северная Корея',\n countryCode: 'KP',\n dialCode: '850',\n fullCodes: ['850'],\n },\n {\n countryEn: 'Norway',\n countryRu: 'Норвегия',\n countryCode: 'NO',\n dialCode: '47',\n phoneMask: '999 99 999',\n fullCodes: ['47'],\n },\n {\n countryEn: 'Oman',\n countryRu: 'Оман',\n countryCode: 'OM',\n dialCode: '968',\n fullCodes: ['968'],\n },\n {\n countryEn: 'Pakistan',\n countryRu: 'Пакистан',\n countryCode: 'PK',\n dialCode: '92',\n phoneMask: '999-9999999',\n fullCodes: ['92'],\n },\n {\n countryEn: 'Palau',\n countryRu: 'Палау',\n countryCode: 'PW',\n dialCode: '680',\n fullCodes: ['680'],\n },\n {\n countryEn: 'Palestine',\n countryRu: 'Палестинская территория',\n countryCode: 'PS',\n dialCode: '970',\n fullCodes: ['970'],\n },\n {\n countryEn: 'Panama',\n countryRu: 'Панама',\n countryCode: 'PA',\n dialCode: '507',\n fullCodes: ['507'],\n },\n {\n countryEn: 'Papua New Guinea',\n countryRu: 'Папуа-Новая Гвинея',\n countryCode: 'PG',\n dialCode: '675',\n fullCodes: ['675'],\n },\n {\n countryEn: 'Paraguay',\n countryRu: 'Парагвай',\n countryCode: 'PY',\n dialCode: '595',\n fullCodes: ['595'],\n },\n {\n countryEn: 'Peru',\n countryRu: 'Перу',\n countryCode: 'PE',\n dialCode: '51',\n fullCodes: ['51'],\n },\n {\n countryEn: 'Philippines',\n countryRu: 'Филиппины',\n countryCode: 'PH',\n dialCode: '63',\n phoneMask: '9999 9999999',\n fullCodes: ['63'],\n },\n {\n countryEn: 'Poland',\n countryRu: 'Польша',\n countryCode: 'PL',\n dialCode: '48',\n phoneMask: '999-999-999',\n fullCodes: ['48'],\n },\n {\n countryEn: 'Portugal',\n countryRu: 'Португалия',\n countryCode: 'PT',\n dialCode: '351',\n fullCodes: ['351'],\n },\n {\n countryEn: 'Puerto Rico',\n countryRu: 'Пуэрто-Рико',\n countryCode: 'PR',\n dialCode: '1',\n dialCodePriority: 3,\n areaCodes: ['787', '939'],\n fullCodes: ['1787', '1939'],\n },\n {\n countryEn: 'Qatar',\n countryRu: 'Катар',\n countryCode: 'QA',\n dialCode: '974',\n fullCodes: ['974'],\n },\n {\n countryEn: 'Réunion',\n countryRu: 'Реюньон',\n countryCode: 'RE',\n dialCode: '262',\n fullCodes: ['262'],\n },\n {\n countryEn: 'Romania',\n countryRu: 'Румыния',\n countryCode: 'RO',\n dialCode: '40',\n fullCodes: ['40'],\n },\n {\n countryEn: 'Russia',\n countryRu: 'Россия',\n countryCode: 'RU',\n dialCode: '7',\n phoneMask: '(999) 999-99-99',\n dialCodePriority: 0,\n fullCodes: ['7'],\n },\n {\n countryEn: 'Rwanda',\n countryRu: 'Руанда',\n countryCode: 'RW',\n dialCode: '250',\n fullCodes: ['250'],\n },\n {\n countryEn: 'Saint Kitts and Nevis',\n countryRu: 'Сент-Китс и Невис',\n countryCode: 'KN',\n dialCode: '1869',\n fullCodes: ['1869'],\n },\n {\n countryEn: 'Saint Lucia',\n countryRu: 'Сент-Люсия',\n countryCode: 'LC',\n dialCode: '1758',\n fullCodes: ['1758'],\n },\n {\n countryEn: 'Saint Vincent and the Grenadines',\n countryRu: 'Сент-Винсент и Гренадины',\n countryCode: 'VC',\n dialCode: '1784',\n fullCodes: ['1784'],\n },\n {\n countryEn: 'Samoa',\n countryRu: 'Самоа',\n countryCode: 'WS',\n dialCode: '685',\n fullCodes: ['685'],\n },\n {\n countryEn: 'San Marino',\n countryRu: 'Сан-Марино',\n countryCode: 'SM',\n dialCode: '378',\n fullCodes: ['378'],\n },\n {\n countryEn: 'São Tomé and Príncipe',\n countryRu: 'Сан-Томе и Принсипи',\n countryCode: 'ST',\n dialCode: '239',\n fullCodes: ['239'],\n },\n {\n countryEn: 'Saudi Arabia',\n countryRu: 'Саудовская Аравия',\n countryCode: 'SA',\n dialCode: '966',\n fullCodes: ['966'],\n },\n {\n countryEn: 'Senegal',\n countryRu: 'Сенегал',\n countryCode: 'SN',\n dialCode: '221',\n fullCodes: ['221'],\n },\n {\n countryEn: 'Serbia',\n countryRu: 'Сербия',\n countryCode: 'RS',\n dialCode: '381',\n fullCodes: ['381'],\n },\n {\n countryEn: 'Seychelles',\n countryRu: 'Сейшелы',\n countryCode: 'SC',\n dialCode: '248',\n fullCodes: ['248'],\n },\n {\n countryEn: 'Sierra Leone',\n countryRu: 'Сьерра-Леоне',\n countryCode: 'SL',\n dialCode: '232',\n fullCodes: ['232'],\n },\n {\n countryEn: 'Singapore',\n countryRu: 'Сингапур',\n countryCode: 'SG',\n dialCode: '65',\n phoneMask: '9999-9999',\n fullCodes: ['65'],\n },\n {\n countryEn: 'Slovakia',\n countryRu: 'Словакия',\n countryCode: 'SK',\n dialCode: '421',\n fullCodes: ['421'],\n },\n {\n countryEn: 'Slovenia',\n countryRu: 'Словения',\n countryCode: 'SI',\n dialCode: '386',\n fullCodes: ['386'],\n },\n {\n countryEn: 'Solomon Islands',\n countryRu: 'Соломоновы острова',\n countryCode: 'SB',\n dialCode: '677',\n fullCodes: ['677'],\n },\n {\n countryEn: 'Somalia',\n countryRu: 'Сомали',\n countryCode: 'SO',\n dialCode: '252',\n fullCodes: ['252'],\n },\n {\n countryEn: 'South Africa',\n countryRu: 'Южная Африка',\n countryCode: 'ZA',\n dialCode: '27',\n fullCodes: ['27'],\n },\n {\n countryEn: 'South Korea',\n countryRu: 'Южная Корея',\n countryCode: 'KR',\n dialCode: '82',\n phoneMask: '999 9999 9999',\n fullCodes: ['82'],\n },\n {\n countryCode: 'OS',\n countryEn: 'South Ossetia',\n countryRu: 'Южная Осетия',\n phoneMask: '(999) 999-99-99',\n dialCode: '7',\n dialCodePriority: 1,\n fullCodes: ['7'],\n },\n {\n countryEn: 'South Sudan',\n countryRu: 'Южный Судан',\n countryCode: 'SS',\n dialCode: '211',\n fullCodes: ['211'],\n },\n {\n countryEn: 'Spain',\n countryRu: 'Испания',\n countryCode: 'ES',\n dialCode: '34',\n phoneMask: '999 999 999',\n fullCodes: ['34'],\n },\n {\n countryEn: 'Sri Lanka',\n countryRu: 'Шри-Ланка',\n countryCode: 'LK',\n dialCode: '94',\n fullCodes: ['94'],\n },\n {\n countryEn: 'Sudan',\n countryRu: 'Судан',\n countryCode: 'SD',\n dialCode: '249',\n fullCodes: ['249'],\n },\n {\n countryEn: 'Suriname',\n countryRu: 'Суринам',\n countryCode: 'SR',\n dialCode: '597',\n fullCodes: ['597'],\n },\n {\n countryEn: 'Swaziland',\n countryRu: 'Свазиленд',\n countryCode: 'SZ',\n dialCode: '268',\n fullCodes: ['268'],\n },\n {\n countryEn: 'Sweden',\n countryRu: 'Швеция',\n countryCode: 'SE',\n dialCode: '46',\n phoneMask: '(999) 999-999',\n fullCodes: ['46'],\n },\n {\n countryEn: 'Switzerland',\n countryRu: 'Швейцария',\n countryCode: 'CH',\n dialCode: '41',\n phoneMask: '99 999 99 99',\n fullCodes: ['41'],\n },\n {\n countryEn: 'Syria',\n countryRu: 'Сирийская Арабская Республика',\n countryCode: 'SY',\n dialCode: '963',\n fullCodes: ['963'],\n },\n {\n countryEn: 'Taiwan',\n countryRu: 'Тайвань',\n countryCode: 'TW',\n dialCode: '886',\n fullCodes: ['886'],\n },\n {\n countryEn: 'Tajikistan',\n countryRu: 'Таджикистан',\n countryCode: 'TJ',\n dialCode: '992',\n fullCodes: ['992'],\n },\n {\n countryEn: 'Tanzania',\n countryRu: 'Танзания',\n countryCode: 'TZ',\n dialCode: '255',\n fullCodes: ['255'],\n },\n {\n countryEn: 'Thailand',\n countryRu: 'Таиланд',\n countryCode: 'TH',\n dialCode: '66',\n fullCodes: ['66'],\n },\n {\n countryEn: 'Timor-Leste',\n countryRu: 'Тимор-Лесте',\n countryCode: 'TL',\n dialCode: '670',\n fullCodes: ['670'],\n },\n {\n countryEn: 'Togo',\n countryRu: 'Того',\n countryCode: 'TG',\n dialCode: '228',\n fullCodes: ['228'],\n },\n {\n countryEn: 'Tonga',\n countryRu: 'Тонга',\n countryCode: 'TO',\n dialCode: '676',\n fullCodes: ['676'],\n },\n {\n countryEn: 'Trinidad and Tobago',\n countryRu: 'Тринидад и Тобаго',\n countryCode: 'TT',\n dialCode: '1868',\n fullCodes: ['1868'],\n },\n {\n countryEn: 'Tunisia',\n countryRu: 'Тунис',\n countryCode: 'TN',\n dialCode: '216',\n fullCodes: ['216'],\n },\n {\n countryEn: 'Turkey',\n countryRu: 'Турция',\n countryCode: 'TR',\n dialCode: '90',\n phoneMask: '999 999 99 99',\n fullCodes: ['90'],\n },\n {\n countryEn: 'Turkmenistan',\n countryRu: 'Туркмения',\n countryCode: 'TM',\n dialCode: '993',\n fullCodes: ['993'],\n },\n {\n countryEn: 'Tuvalu',\n countryRu: 'Тувалу',\n countryCode: 'TV',\n dialCode: '688',\n fullCodes: ['688'],\n },\n {\n countryEn: 'Uganda',\n countryRu: 'Уганда',\n countryCode: 'UG',\n dialCode: '256',\n fullCodes: ['256'],\n },\n {\n countryEn: 'Ukraine',\n countryRu: 'Украина',\n countryCode: 'UA',\n dialCode: '380',\n phoneMask: '(99) 999 99 99',\n fullCodes: ['380'],\n },\n {\n countryEn: 'United Arab Emirates',\n countryRu: 'Объединенные Арабские Эмираты',\n countryCode: 'AE',\n dialCode: '971',\n fullCodes: ['971'],\n },\n {\n countryEn: 'United Kingdom',\n countryRu: 'Соединенное Королевство',\n countryCode: 'GB',\n dialCode: '44',\n phoneMask: '9999 999999',\n fullCodes: ['44'],\n },\n {\n countryEn: 'United States',\n countryRu: 'Соединенные Штаты',\n countryCode: 'US',\n dialCode: '1',\n phoneMask: '(999) 999-9999',\n dialCodePriority: 0,\n areaCodes: [\n '907',\n '205',\n '251',\n '256',\n '334',\n '479',\n '501',\n '870',\n '480',\n '520',\n '602',\n '623',\n '928',\n '209',\n '213',\n '310',\n '323',\n '408',\n '415',\n '510',\n '530',\n '559',\n '562',\n '619',\n '626',\n '650',\n '661',\n '707',\n '714',\n '760',\n '805',\n '818',\n '831',\n '858',\n '909',\n '916',\n '925',\n '949',\n '951',\n '303',\n '719',\n '970',\n '203',\n '860',\n '202',\n '302',\n '239',\n '305',\n '321',\n '352',\n '386',\n '407',\n '561',\n '727',\n '772',\n '813',\n '850',\n '863',\n '904',\n '941',\n '954',\n '229',\n '404',\n '478',\n '706',\n '770',\n '912',\n '808',\n '319',\n '515',\n '563',\n '641',\n '712',\n '208',\n '217',\n '309',\n '312',\n '618',\n '630',\n '708',\n '773',\n '815',\n '847',\n '219',\n '260',\n '317',\n '574',\n '765',\n '812',\n '316',\n '620',\n '785',\n '913',\n '270',\n '502',\n '606',\n '859',\n '225',\n '318',\n '337',\n '504',\n '985',\n '413',\n '508',\n '617',\n '781',\n '978',\n '301',\n '410',\n '207',\n '231',\n '248',\n '269',\n '313',\n '517',\n '586',\n '616',\n '734',\n '810',\n '906',\n '989',\n '218',\n '320',\n '507',\n '612',\n '651',\n '763',\n '952',\n '314',\n '417',\n '573',\n '636',\n '660',\n '816',\n '228',\n '601',\n '662',\n '406',\n '252',\n '336',\n '704',\n '828',\n '910',\n '919',\n '701',\n '308',\n '402',\n '603',\n '201',\n '609',\n '732',\n '856',\n '908',\n '973',\n '505',\n '575',\n '702',\n '775',\n '212',\n '315',\n '516',\n '518',\n '585',\n '607',\n '631',\n '716',\n '718',\n '845',\n '914',\n '216',\n '330',\n '419',\n '440',\n '513',\n '614',\n '740',\n '937',\n '405',\n '580',\n '918',\n '503',\n '541',\n '215',\n '412',\n '570',\n '610',\n '717',\n '724',\n '814',\n '401',\n '803',\n '843',\n '864',\n '605',\n '423',\n '615',\n '731',\n '865',\n '901',\n '931',\n '210',\n '214',\n '254',\n '281',\n '325',\n '361',\n '409',\n '432',\n '512',\n '713',\n '806',\n '817',\n '830',\n '903',\n '915',\n '936',\n '940',\n '956',\n '972',\n '979',\n '435',\n '801',\n '276',\n '434',\n '540',\n '703',\n '757',\n '804',\n '802',\n '206',\n '253',\n '360',\n '425',\n '509',\n '262',\n '414',\n '608',\n '715',\n '920',\n '304',\n '307',\n ],\n fullCodes: [\n '1907',\n '1205',\n '1251',\n '1256',\n '1334',\n '1479',\n '1501',\n '1870',\n '1480',\n '1520',\n '1602',\n '1623',\n '1928',\n '1209',\n '1213',\n '1310',\n '1323',\n '1408',\n '1415',\n '1510',\n '1530',\n '1559',\n '1562',\n '1619',\n '1626',\n '1650',\n '1661',\n '1707',\n '1714',\n '1760',\n '1805',\n '1818',\n '1831',\n '1858',\n '1909',\n '1916',\n '1925',\n '1949',\n '1951',\n '1303',\n '1719',\n '1970',\n '1203',\n '1860',\n '1202',\n '1302',\n '1239',\n '1305',\n '1321',\n '1352',\n '1386',\n '1407',\n '1561',\n '1727',\n '1772',\n '1813',\n '1850',\n '1863',\n '1904',\n '1941',\n '1954',\n '1229',\n '1404',\n '1478',\n '1706',\n '1770',\n '1912',\n '1808',\n '1319',\n '1515',\n '1563',\n '1641',\n '1712',\n '1208',\n '1217',\n '1309',\n '1312',\n '1618',\n '1630',\n '1708',\n '1773',\n '1815',\n '1847',\n '1219',\n '1260',\n '1317',\n '1574',\n '1765',\n '1812',\n '1316',\n '1620',\n '1785',\n '1913',\n '1270',\n '1502',\n '1606',\n '1859',\n '1225',\n '1318',\n '1337',\n '1504',\n '1985',\n '1413',\n '1508',\n '1617',\n '1781',\n '1978',\n '1301',\n '1410',\n '1207',\n '1231',\n '1248',\n '1269',\n '1313',\n '1517',\n '1586',\n '1616',\n '1734',\n '1810',\n '1906',\n '1989',\n '1218',\n '1320',\n '1507',\n '1612',\n '1651',\n '1763',\n '1952',\n '1314',\n '1417',\n '1573',\n '1636',\n '1660',\n '1816',\n '1228',\n '1601',\n '1662',\n '1406',\n '1252',\n '1336',\n '1704',\n '1828',\n '1910',\n '1919',\n '1701',\n '1308',\n '1402',\n '1603',\n '1201',\n '1609',\n '1732',\n '1856',\n '1908',\n '1973',\n '1505',\n '1575',\n '1702',\n '1775',\n '1212',\n '1315',\n '1516',\n '1518',\n '1585',\n '1607',\n '1631',\n '1716',\n '1718',\n '1845',\n '1914',\n '1216',\n '1330',\n '1419',\n '1440',\n '1513',\n '1614',\n '1740',\n '1937',\n '1405',\n '1580',\n '1918',\n '1503',\n '1541',\n '1215',\n '1412',\n '1570',\n '1610',\n '1717',\n '1724',\n '1814',\n '1401',\n '1803',\n '1843',\n '1864',\n '1605',\n '1423',\n '1615',\n '1731',\n '1865',\n '1901',\n '1931',\n '1210',\n '1214',\n '1254',\n '1281',\n '1325',\n '1361',\n '1409',\n '1432',\n '1512',\n '1713',\n '1806',\n '1817',\n '1830',\n '1903',\n '1915',\n '1936',\n '1940',\n '1956',\n '1972',\n '1979',\n '1435',\n '1801',\n '1276',\n '1434',\n '1540',\n '1703',\n '1757',\n '1804',\n '1802',\n '1206',\n '1253',\n '1360',\n '1425',\n '1509',\n '1262',\n '1414',\n '1608',\n '1715',\n '1920',\n '1304',\n '1307',\n ],\n },\n {\n countryEn: 'Uruguay',\n countryRu: 'Уругвай',\n countryCode: 'UY',\n dialCode: '598',\n fullCodes: ['598'],\n },\n {\n countryEn: 'Uzbekistan',\n countryRu: 'Узбекистан',\n countryCode: 'UZ',\n dialCode: '998',\n fullCodes: ['998'],\n },\n {\n countryEn: 'Vanuatu',\n countryRu: 'Вануату',\n countryCode: 'VU',\n dialCode: '678',\n fullCodes: ['678'],\n },\n {\n countryEn: 'Vatican City',\n countryRu: 'Ватикан',\n countryCode: 'VA',\n dialCode: '39',\n phoneMask: '99 9999 9999',\n dialCodePriority: 1,\n fullCodes: ['39'],\n },\n {\n countryEn: 'Venezuela',\n countryRu: 'Венесуэла',\n countryCode: 'VE',\n dialCode: '58',\n fullCodes: ['58'],\n },\n {\n countryEn: 'Vietnam',\n countryRu: 'Вьетнам',\n countryCode: 'VN',\n dialCode: '84',\n fullCodes: ['84'],\n },\n {\n countryEn: 'Yemen',\n countryRu: 'Йемен',\n countryCode: 'YE',\n dialCode: '967',\n fullCodes: ['967'],\n },\n {\n countryEn: 'Zambia',\n countryRu: 'Замбия',\n countryCode: 'ZM',\n dialCode: '260',\n fullCodes: ['260'],\n },\n {\n countryEn: 'Zimbabwe',\n countryRu: 'Зимбабве',\n countryCode: 'ZW',\n dialCode: '263',\n fullCodes: ['263'],\n },\n];\n","export const mimeTypes = {\n aac: 'audio/aac',\n abw: 'application/x-abiword',\n arc: 'application/x-freearc',\n avi: 'video/x-msvideo',\n azw: 'application/vnd.amazon.ebook',\n bin: 'application/octet-stream',\n bmp: 'image/bmp',\n bz: 'application/x-bzip',\n bz2: 'application/x-bzip2',\n csh: 'application/x-csh',\n css: 'text/css',\n csv: 'text/csv',\n doc: 'application/msword',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n eot: 'application/vnd.ms-fontobject',\n epub: 'application/epub+zip',\n gz: 'application/gzip',\n gif: 'image/gif',\n htm: 'text/html',\n html: 'text/html',\n ico: 'image/vnd.microsoft.icon',\n ics: 'text/calendar',\n jar: 'application/java-archive',\n jpeg: 'image/jpeg',\n jpg: 'image/jpeg',\n js: 'text/javascript',\n json: 'application/json',\n jsonld: 'application/ld+json',\n mid: '.midi',\n mjs: 'text/javascript',\n mp3: 'audio/mpeg',\n mpeg: 'video/mpeg',\n mpkg: 'application/vnd.apple.installer+xml',\n odp: 'application/vnd.oasis.opendocument.presentation',\n ods: 'application/vnd.oasis.opendocument.spreadsheet',\n odt: 'application/vnd.oasis.opendocument.text',\n oga: 'audio/ogg',\n ogv: 'video/ogg',\n ogx: 'application/ogg',\n opus: 'audio/opus',\n otf: 'font/otf',\n png: 'image/png',\n pdf: 'application/pdf',\n php: 'application/php',\n ppt: 'application/vnd.ms-powerpoint',\n pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n rar: 'application/vnd.rar',\n rtf: 'application/rtf',\n sh: 'application/x-sh',\n svg: 'image/svg+xml',\n swf: 'application/x-shockwave-flash',\n tar: 'application/x-tar',\n tif: 'image/tiff',\n tiff: 'image/tiff',\n ts: 'video/mp2t',\n ttf: 'font/ttf',\n txt: 'text/plain',\n vsd: 'application/vnd.visio',\n wav: 'audio/wav',\n weba: 'audio/webm',\n webm: 'video/webm',\n webp: 'image/webp',\n woff: 'font/woff',\n woff2: 'font/woff2',\n xhtml: 'application/xhtml+xml',\n xls: 'application/vnd.ms-excel',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n xml: 'XML',\n xul: 'application/vnd.mozilla.xul+xml',\n zip: 'application/zip',\n '3gp': 'video/3gpp',\n '3g2': 'video/3gpp2',\n '7z': 'application/x-7z-compressed',\n} as const;\n\nexport type IMimeType = keyof typeof mimeTypes;\n","import { isNotEmpty, isStringEmpty } from '@true-engineering/true-react-platform-helpers';\nimport type { IPhoneInfo, IPhoneValue } from '../components';\nimport { phoneInfo } from '../constants';\n\nexport const findCountryByCode = (\n countryCode?: string,\n countriesList = phoneInfo,\n): IPhoneInfo | undefined =>\n isNotEmpty(countryCode)\n ? countriesList.find((info) => info.countryCode === countryCode)\n : undefined;\n\nexport const findCountryIndexByCode = (countryCode?: string, countriesList = phoneInfo): number =>\n isNotEmpty(countryCode)\n ? countriesList.findIndex((info) => info.countryCode === countryCode)\n : -1;\n\nexport const getCountryTextByLocale = (country: IPhoneInfo, locale: string): string =>\n locale.toLowerCase() === 'ru' ? country.countryRu : country.countryEn;\n\n/**\n * Мутирует countriesList!\n */\nexport const sortCountriesByLocale = (countriesList: IPhoneInfo[], locale: string): IPhoneInfo[] =>\n countriesList.sort((countryA, countryB) =>\n getCountryTextByLocale(countryA, locale).localeCompare(\n getCountryTextByLocale(countryB, locale),\n ),\n );\n\nexport const checkSearchStringInCountry = (country: IPhoneInfo, searchString: string): boolean => {\n const checkValue = searchString.toLowerCase().trim().replace('+', '');\n\n const possibleValues = [\n country.countryRu,\n country.countryEn,\n ...country.countryRu.split(' '),\n ...country.countryEn.split(' '),\n country.dialCode,\n ].map((part) => part.toLowerCase());\n\n return possibleValues.some((v) => v.startsWith(checkValue));\n};\n\nexport const getFullPhone = (phone?: IPhoneValue): string =>\n (phone?.dialCode ?? '') + (phone?.phoneNumber ?? '');\n\nexport const getCountryCodeFromPhone = (phoneWithCode: string): string | undefined => {\n if (isStringEmpty(phoneWithCode)) {\n return;\n }\n\n // ищем страны, для которых phoneWithCode начинается с fullCode (dialCode + areaCode)\n const matchedCountries = phoneInfo.filter((info) =>\n info.fullCodes.some((fullCode) => phoneWithCode.startsWith(fullCode)),\n );\n\n // если нашлась всего одна — ок, выдаём её\n if (matchedCountries.length === 1) {\n return matchedCountries[0].countryCode;\n }\n\n // если нашлось несколько, выбираем страну с наименьшим dialCodePriority (0 — самая приоритетная)\n const highestPriorityCountries = phoneInfo\n .filter((info) => phoneWithCode.startsWith(info.dialCode))\n .sort((a, b) => (a.dialCodePriority ?? 1000) - (b.dialCodePriority ?? 1000));\n\n return highestPriorityCountries.at(0)?.countryCode;\n};\n\nexport const getPhoneObjFromString = (fullPhone: string, countryCode?: string): IPhoneValue => {\n const newCountryCode = countryCode ?? getCountryCodeFromPhone(fullPhone);\n const dialCode = findCountryByCode(newCountryCode)?.dialCode;\n const phoneNumber = fullPhone.slice(dialCode?.length);\n\n return { dialCode, phoneNumber, countryCode: newCountryCode };\n};\n\nexport const DEFAULT_PHONE_MASK = '+ 9 999 999 999 999 99';\n\nexport const getPhoneMask = (countryCode?: string): string => {\n let mask = DEFAULT_PHONE_MASK;\n if (isNotEmpty(countryCode)) {\n const countrySettings = findCountryByCode(countryCode);\n\n if (countrySettings !== undefined) {\n const dialCodeLength = countrySettings.dialCode.length;\n const areaAndPhoneMask =\n countrySettings.phoneMask ?? mask.substring(2, mask.length - dialCodeLength);\n mask = `+ ${'9'.repeat(dialCodeLength)} ${areaAndPhoneMask}`;\n }\n }\n\n return mask;\n};\n","import { ComponentType, memo } from 'react';\nimport {\n isNotEmpty,\n isString,\n isStringNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { IDataAttributes } from '../types';\n\nexport { default as rgba } from 'hex-to-rgba';\n\n/** @deprecated Используйте `toKebabCase` из `true-react-platform-helpers` */\nexport const transformToKebab = (string: string): string => {\n let result = '';\n string.split('').forEach((char) => {\n if (char.toLowerCase() === char) {\n result += char;\n } else {\n result += `-${char.toLowerCase()}`;\n }\n });\n\n return result;\n};\n\nexport const getParentNode = (element: Element | ShadowRoot | Document): Element =>\n element.nodeName === 'HTML' || element === document\n ? (element as Element)\n : (element.parentNode as Element) ?? (element as ShadowRoot).host;\n\nexport const hasExactParent = (element: Element, parent: Element): boolean => {\n if (element === parent) {\n return true; // Found the exact parent\n }\n\n const parentNode = getParentNode(element);\n\n if (parentNode === element) {\n return false; // Reached the top-level HTML element or Shadow DOM host\n }\n\n return hasExactParent(parentNode, parent);\n};\n\nexport const getStyleComputedProperty = (element: Element): Partial<CSSStyleDeclaration> =>\n element.nodeType !== 1 ? {} : getComputedStyle(element, null);\n\nexport const getScrollParent = (element: Element | Document): Element => {\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return (element as Element).ownerDocument.body;\n case '#document':\n return (element as Document).body;\n }\n\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element as Element) ?? {};\n if (/(auto|scroll|overlay)/.test((overflow ?? '') + (overflowY ?? '') + (overflowX ?? ''))) {\n return element as Element;\n }\n return getScrollParent(getParentNode(element as Element));\n};\n\nexport const isElementOffScreen = (element: HTMLElement, input?: HTMLElement): boolean => {\n const el = element;\n const scrollParent = getScrollParent(element);\n\n const { scrollHeight: scrollHeightWithElement } = scrollParent;\n el.hidden = true;\n const { scrollHeight: scrollHeightWithoutElement } = scrollParent;\n el.hidden = false;\n\n const isOffscreen = scrollHeightWithElement !== scrollHeightWithoutElement;\n\n if (isOffscreen && input !== undefined) {\n const elRect = el.getBoundingClientRect();\n const scrollParentRect = scrollParent.getBoundingClientRect();\n const topOffset = elRect.top - scrollParentRect.top;\n if (input.clientHeight + el.clientHeight > topOffset) {\n return false;\n }\n }\n\n return isOffscreen;\n};\n\nexport const getNumberInRange = (value: number, min = -Infinity, max = Infinity): number =>\n Math.min(max, Math.max(min, value));\n\nconst DEFAULT_THOUSANDS_SEPARATOR = '\\u2009';\n\nexport const formatStringNumber = (\n val?: string,\n separator = DEFAULT_THOUSANDS_SEPARATOR,\n): string => {\n if (val === undefined) {\n return '';\n }\n const parts = val.split('.');\n\n parts[0] = parts[0]\n // убрать лидирующие нули\n .replace(/^0+(?=\\d)/, '')\n // проставить сепараторы тысяч\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\n return (parts[1] ?? '').length > 0 ? parts.join('.') : parts[0];\n};\n\nexport const formatNumber = (val?: number, separator = DEFAULT_THOUSANDS_SEPARATOR): string => {\n if (val === undefined || isNaN(val)) {\n return '';\n }\n return formatStringNumber(String(val), separator);\n};\n\nexport const removeStringFormat = (val?: string): string =>\n (val ?? '').replace(',', '.').replace(/\\s/g, '');\n\nexport const stringToNumber = (val?: string): number | undefined => {\n const trimmed = removeStringFormat(val);\n if (trimmed === '') {\n return undefined;\n }\n const num = Number(trimmed);\n return isNaN(num) ? undefined : num;\n};\n\nexport const setCaretPosition = (elem: HTMLInputElement, caretPos: number | null): void => {\n if (caretPos === null || elem === null) {\n return;\n }\n if (elem.selectionStart) {\n elem.focus();\n elem.setSelectionRange(caretPos, caretPos);\n } else {\n elem.focus();\n }\n};\n\nexport const isSpaceChar = (char?: string): boolean =>\n char !== undefined && char.match(/\\s/) !== null;\n\nexport const getNumberLength = (n?: number): number =>\n n === undefined || isNaN(n) ? 0 : n.toString().length;\n\nexport const trimStringToMaxLength = (val: string, maxLength: number): string =>\n val.length > maxLength ? val.slice(0, maxLength) : val;\n\n/** @deprecated Используйте `addDataAttributes` из `true-react-platform-helpers` */\nexport const addDataAttributes = (data: IDataAttributes = {}): IDataAttributes =>\n Object.fromEntries(\n Object.entries(data).map(([key, value]) =>\n (isString(value) && isStringNotEmpty(value)) || isNotEmpty(value)\n ? [`data-${transformToKebab(key)}`, value]\n : [],\n ),\n );\n\nexport const excludeStorybookParams = (params: string[]): RegExp =>\n new RegExp(`^(on.*|${['tweakStyles', 'data', ...params].join('|')})$`);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const genericMemo = memo as <T extends ComponentType<any>>(\n ...args: Parameters<typeof memo<T>>\n) => T;\n","import { DependencyList, useEffect } from 'react';\nimport usePopper, { VirtualElement } from 'react-overlays/usePopper';\nimport { getScrollParent, minWidthModifier } from '../helpers';\nimport { IDropdownWithPopperOptions } from '../types';\n\nexport const useDropdown = ({\n isOpen,\n onDropdownClose,\n referenceElement,\n dropdownElement,\n options,\n dependenciesForPositionUpdating = [],\n}: {\n isOpen: boolean;\n referenceElement: VirtualElement | null | undefined;\n dropdownElement: HTMLElement | null | undefined;\n options?: IDropdownWithPopperOptions;\n dependenciesForPositionUpdating?: DependencyList;\n onDropdownClose: (event: Event) => void;\n}): ReturnType<typeof usePopper> | undefined => {\n const {\n shouldUsePopper = false,\n shouldRenderInBody = false,\n shouldHideOnScroll = false,\n scrollParent = 'document',\n canBeFlipped = false,\n modifiers = [],\n placement = 'bottom-start',\n flipOptions,\n } = options ?? {};\n\n useEffect(() => {\n if (!shouldHideOnScroll || !isOpen) {\n return;\n }\n\n const scrollParentEl =\n scrollParent === 'auto'\n ? getScrollParent(referenceElement as Element)\n : scrollParent === 'document'\n ? document\n : scrollParent;\n scrollParentEl.addEventListener('scroll', onDropdownClose);\n\n return () => {\n scrollParentEl.removeEventListener('scroll', onDropdownClose);\n };\n }, [shouldHideOnScroll, isOpen]);\n\n let popperData: ReturnType<typeof usePopper> | undefined;\n if (shouldUsePopper) {\n // TODO: Вытащить хук из под условия???\n // eslint-disable-next-line react-hooks/rules-of-hooks\n popperData = usePopper(referenceElement, dropdownElement, {\n enabled: isOpen,\n placement,\n modifiers: [\n ...(shouldRenderInBody ? [minWidthModifier] : []),\n {\n name: 'offset',\n options: {\n offset: [0, 6],\n },\n },\n {\n name: 'flip',\n options: {\n fallbackPlacements: canBeFlipped ? ['bottom-start', 'top-start'] : ['bottom-start'],\n ...flipOptions,\n },\n },\n ...modifiers,\n ],\n });\n }\n\n useEffect(() => {\n if (dependenciesForPositionUpdating.length !== 0) {\n popperData?.update();\n }\n }, dependenciesForPositionUpdating);\n\n return popperData;\n};\n","import { MutableRefObject, useLayoutEffect, useRef } from 'react';\n\nexport const useLatestRef = <T>(value: T): MutableRefObject<T> => {\n const ref = useRef(value);\n\n useLayoutEffect(() => {\n ref.current = value;\n });\n\n return ref;\n};\n","import { RefCallback, useEffect, useMemo } from 'react';\nimport { isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { useLatestRef } from './use-latest-ref';\n\nexport interface IInsertionRefOptions {\n /** @default false */\n isDisabled?: boolean;\n onIntersection?: VoidFunction;\n onIntersectionEnd?: VoidFunction;\n observerOptions?: IntersectionObserverInit;\n}\n\nexport const useIntersectionRef = ({\n observerOptions,\n ...options\n}: IInsertionRefOptions): RefCallback<Element> => {\n const optionsRef = useLatestRef(options);\n\n const { ref, disconnect } = useMemo(() => {\n const observer = new IntersectionObserver(([{ isIntersecting }]) => {\n const { current } = optionsRef;\n if (current?.isDisabled) {\n return;\n }\n if (isIntersecting) {\n current?.onIntersection?.();\n } else {\n current?.onIntersectionEnd?.();\n }\n }, observerOptions);\n\n const observerRef: RefCallback<Element> = (node) => {\n observer.disconnect();\n if (isNotEmpty(node)) {\n observer.observe(node);\n }\n };\n\n return {\n ref: observerRef,\n disconnect: () => observer.disconnect(),\n };\n }, [optionsRef, observerOptions]);\n\n useEffect(() => disconnect, [disconnect]);\n\n return ref;\n};\n","import { RefCallback, useMemo, useEffect } from 'react';\nimport { isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { useLatestRef } from './use-latest-ref';\n\nexport interface IResizeRefOptions {\n /** @default false */\n isDisabled?: boolean;\n onChange?: (entry: ResizeObserverEntry) => void;\n onTargetChange?: (target: Element) => void;\n}\n\nexport const useResizeRef = (options: IResizeRefOptions): RefCallback<Element> => {\n const optionsRef = useLatestRef(options);\n\n const { ref, disconnect } = useMemo(() => {\n const observer = new ResizeObserver(([entry]) => {\n const { current } = optionsRef;\n if (!current.isDisabled) {\n current.onChange?.(entry);\n current.onTargetChange?.(entry.target);\n }\n });\n\n const observerRef: RefCallback<Element> = (node) => {\n observer.disconnect();\n if (!isNotEmpty(node)) {\n return;\n }\n\n observer.observe(node);\n if (!optionsRef.current.isDisabled) {\n optionsRef.current.onTargetChange?.(node);\n }\n };\n\n return { ref: observerRef, disconnect: () => observer.disconnect() };\n }, [optionsRef]);\n\n useEffect(() => disconnect, [disconnect]);\n\n return ref;\n};\n","import { useCallback, useEffect, useRef } from 'react';\n\nexport const useIsMounted = (): (() => boolean) => {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return useCallback(() => isMounted.current, []);\n};\n","import { useMemo } from 'react';\nimport { isNotEmpty, mergeStyles } from '@true-engineering/true-react-platform-helpers';\n\nexport const useMerge = <T>(one?: T, two?: T): T | undefined =>\n useMemo(\n () => (isNotEmpty(one) && isNotEmpty(two) ? mergeStyles(one, two) : one ?? two),\n [one, two],\n );\n","import { useMemo } from 'react';\nimport { mergeRefs } from '@true-engineering/true-react-platform-helpers';\n\nexport const useMergedRefs: typeof mergeRefs = (refs) => useMemo(() => mergeRefs(refs), refs);\n","import { RefObject, useEffect } from 'react';\nimport { isEmpty, isFunction, isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { useLatestRef } from './use-latest-ref';\n\nexport const checkElementParentsClassNames = (element: HTMLElement, className: string): boolean => {\n if (element.classList.contains(className)) {\n return true;\n }\n\n if (element === document.body) {\n return false;\n }\n\n if (element.parentElement) {\n return checkElementParentsClassNames(element.parentElement, className);\n }\n\n return false;\n};\n\nexport const isElementOneOfParents = (element: HTMLElement, elToSearch: HTMLElement): boolean => {\n if (element === elToSearch) {\n return true;\n }\n\n if (element === document.body) {\n return false;\n }\n\n if (element.parentElement) {\n return isElementOneOfParents(element.parentElement, elToSearch);\n }\n\n return false;\n};\n\nexport function useOnClickOutsideWithRef<Elem extends HTMLElement, IgnoreElem extends HTMLElement>(\n refOrGetter: RefObject<Elem | null> | (() => Elem | null | undefined) | undefined,\n handler: (event: MouseEvent | TouchEvent) => void,\n ignoreRef?: RefObject<IgnoreElem>,\n): void {\n useOnClickOutside(refOrGetter, handler, undefined, ignoreRef);\n}\n\nexport function useOnClickOutside<Elem extends HTMLElement, IgnoreElem extends HTMLElement>(\n refOrGetter: RefObject<Elem | null> | (() => Elem | null | undefined) | undefined,\n handler: (event: MouseEvent | TouchEvent) => void,\n ignoreClassName?: string,\n ignoreRef?: RefObject<IgnoreElem>,\n): void {\n const optionsRef = useLatestRef({ refOrGetter, ignoreRef, ignoreClassName, handler });\n\n useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent) => {\n const options = optionsRef.current;\n\n const elem = isFunction(options.refOrGetter)\n ? options.refOrGetter()\n : options.refOrGetter?.current;\n const ignoreElem = options.ignoreRef?.current;\n const target = event.target as HTMLElement;\n\n if (\n isEmpty(elem) ||\n // Do nothing if clicking ref's element or descendent elements\n elem.contains(target) ||\n (isNotEmpty(options.ignoreClassName) &&\n checkElementParentsClassNames(target, options.ignoreClassName)) ||\n (isNotEmpty(ignoreElem) && isElementOneOfParents(target, ignoreElem))\n ) {\n return;\n }\n\n options.handler(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [optionsRef]);\n}\n","import { useMemo } from 'react';\nimport { IMaybeArray } from '@true-engineering/true-react-platform-helpers';\nimport { IComponentName, IMixedStyles, useThemeComponentStyles } from '../theme';\nimport { mixStyles } from './use-mixed-styles';\n\n// TODO: Можно усилить типы\nexport const useTweakStyles = <StyleSheet, ClassName extends keyof StyleSheet & `tweak${string}`>({\n innerStyles,\n tweakStyles,\n className,\n currentComponentName,\n}: {\n /**\n * Это tweakStyles, определенные в родительском компоненте\n * (например, стили для Input, определенные в стилях компонента Select)\n */\n innerStyles?: IMixedStyles<StyleSheet[ClassName]>;\n /**\n * Пропса tweakStyles из родительского компонента\n * (это уже непосредственно ISelectProps.tweakStyles)\n */\n tweakStyles?: IMaybeArray<StyleSheet>;\n /**\n * Класс для переопределения tweakStyles из-вне. (Например, 'tweakInput')\n */\n className: ClassName;\n /**\n * Название компонента который вызывает useTweakStyles\n */\n currentComponentName?: IComponentName;\n}): Array<NonNullable<StyleSheet[ClassName]>> => {\n const themeStyles = useThemeComponentStyles<StyleSheet>(currentComponentName);\n\n return useMemo(\n () =>\n mixStyles(\n innerStyles,\n mixStyles(themeStyles, tweakStyles).map((style) => style[className]),\n ),\n [innerStyles, className, themeStyles, tweakStyles],\n );\n};\n","export default \" <svg\\n width=\\\"100%\\\"\\n height=\\\"100%\\\"\\n viewBox=\\\"0 0 32 32\\\"\\n fill=\\\"none\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n >\\n <circle opacity=\\\"0.5\\\" cx=\\\"16\\\" cy=\\\"16\\\" r=\\\"16\\\" fill=\\\"#DDE3ED\\\" />\\n <mask\\n id=\\\"mask0_0_12744\\\"\\n style=\\\"mask-type: 'alpha';\\\"\\n maskUnits=\\\"userSpaceOnUse\\\"\\n x=\\\"0\\\"\\n y=\\\"0\\\"\\n width=\\\"32\\\"\\n height=\\\"32\\\"\\n >\\n <circle cx=\\\"16\\\" cy=\\\"16\\\" r=\\\"16\\\" fill=\\\"white\\\" />\\n </mask>\\n <g mask=\\\"url(#mask0_0_12744)\\\">\\n <circle cx=\\\"16\\\" cy=\\\"29\\\" r=\\\"13\\\" fill=\\\"url(#paint0_linear_0_12744)\\\" />\\n <mask\\n id=\\\"mask1_0_12744\\\"\\n style=\\\"mask-type: 'alpha';\\\"\\n maskUnits=\\\"userSpaceOnUse\\\"\\n x=\\\"3\\\"\\n y=\\\"16\\\"\\n width=\\\"26\\\"\\n height=\\\"26\\\"\\n >\\n <circle cx=\\\"16\\\" cy=\\\"29\\\" r=\\\"13\\\" fill=\\\"white\\\" />\\n </mask>\\n <g mask=\\\"url(#mask1_0_12744)\\\">\\n <ellipse\\n cx=\\\"16\\\"\\n cy=\\\"17.5\\\"\\n rx=\\\"6\\\"\\n ry=\\\"7.5\\\"\\n fill=\\\"#505F79\\\"\\n fill-opacity=\\\"0.204983\\\"\\n />\\n </g>\\n </g>\\n <ellipse cx=\\\"16\\\" cy=\\\"13\\\" rx=\\\"6\\\" ry=\\\"7\\\" fill=\\\"white\\\" />\\n <defs>\\n <linearGradient\\n id=\\\"paint0_linear_0_12744\\\"\\n x1=\\\"13.347\\\"\\n y1=\\\"46.279\\\"\\n x2=\\\"33.5318\\\"\\n y2=\\\"30.8088\\\"\\n gradientUnits=\\\"userSpaceOnUse\\\"\\n >\\n <stop stop-color=\\\"#ABD229\\\" />\\n <stop offset=\\\"1\\\" stop-color=\\\"#9CD03F\\\" />\\n </linearGradient>\\n </defs>\\n </svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M6 12h3V9H6v3zm-2 4V7h12l.002 9H4zM16 4h-1V3c0-.552-.448-1-1-1s-1 .448-1 1v1H7V3c0-.552-.448-1-1-1s-1 .448-1 1v1H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"m7.5 13.086 7.793-7.793a1 1 0 1 1 1.414 1.414l-8.5 8.5a1 1 0 0 1-1.414 0l-3.5-3.5a1 1 0 1 1 1.414-1.414L7.5 13.086Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 16 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M8.24512 8.84751L11.038 6.05461C11.4285 5.66409 12.0617 5.66409 12.4522 6.05461C12.8427 6.44514 12.8427 7.0783 12.4522 7.46883L8.95222 10.9688C8.5617 11.3593 7.92853 11.3593 7.53801 10.9688L4.03801 7.46883C3.64749 7.0783 3.64749 6.44514 4.03801 6.05461C4.42853 5.66409 5.0617 5.66409 5.45222 6.05461L8.24512 8.84751Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M10.0029 11.6053L5.71004 7.31242C5.31951 6.9219 4.68635 6.9219 4.29582 7.31242C3.9053 7.70295 3.9053 8.33611 4.29582 8.72664L9.29582 13.7266C9.68635 14.1172 10.3195 14.1172 10.71 13.7266L15.71 8.72664C16.1006 8.33611 16.1006 7.70295 15.71 7.31242C15.3195 6.9219 14.6863 6.9219 14.2958 7.31242L10.0029 11.6053Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M8.41421 10L12.7071 5.70711C13.0976 5.31658 13.0976 4.68342 12.7071 4.29289C12.3166 3.90237 11.6834 3.90237 11.2929 4.29289L6.29289 9.29289C5.90237 9.68342 5.90237 10.3166 6.29289 10.7071L11.2929 15.7071C11.6834 16.0976 12.3166 16.0976 12.7071 15.7071C13.0976 15.3166 13.0976 14.6834 12.7071 14.2929L8.41421 10Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M11.5858 10L7.29289 5.70711C6.90237 5.31658 6.90237 4.68342 7.29289 4.29289C7.68342 3.90237 8.31658 3.90237 8.70711 4.29289L13.7071 9.29289C14.0976 9.68342 14.0976 10.3166 13.7071 10.7071L8.70711 15.7071C8.31658 16.0976 7.68342 16.0976 7.29289 15.7071C6.90237 15.3166 6.90237 14.6834 7.29289 14.2929L11.5858 10Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M6.102 4.709c-.446-.36-1.055-.373-1.415-.012-.39.39-.342 1.072.108 1.523l3.783 3.782-3.783 3.782-.096.108c-.36.446-.373 1.055-.012 1.415.39.391 1.072.342 1.523-.108l3.782-3.783 3.782 3.783.108.097c.446.358 1.055.372 1.415.011.39-.39.342-1.072-.108-1.523l-3.783-3.782L15.19 6.22l.097-.108c.358-.446.372-1.055.011-1.415-.39-.39-1.072-.342-1.523.108L9.992 8.588 6.21 4.805l-.108-.096Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"currentColor\\\" d=\\\"M4.5 4.5l11 11m0-11l-11 11\\\" stroke-width=\\\"2\\\" stroke-linejoin=\\\"round\\\" stroke-linecap=\\\"round\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M11.985 10l2.407-2.293c.41-.39.41-1.023 0-1.414-.41-.39-1.074-.39-1.485 0L10.5 8.586 8.093 6.293c-.411-.39-1.075-.39-1.485 0-.41.391-.41 1.023 0 1.414L9.015 10l-2.407 2.293c-.41.391-.41 1.023 0 1.414.205.195.473.293.742.293s.538-.098.743-.293l2.407-2.293 2.407 2.293c.205.195.474.293.743.293s.537-.098.742-.293c.41-.391.41-1.023 0-1.414L11.985 10z\\\"></path></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\">\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"#21A366\\\"/>\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"url(#paint0_linear_0_16081)\\\" style=\\\"mix-blend-mode:overlay\\\"/>\\n <path d=\\\"M8.00342 14.5244L10.0728 11.3062L12.1357 14.5244H14.4019L11.2217 9.73828L14.1162 5.21875H11.939L10.1108 8.2085L8.24463 5.21875H6.04834L8.93018 9.66846L5.75 14.5244H8.00342Z\\\" fill=\\\"white\\\"/>\\n <defs>\\n <linearGradient id=\\\"paint0_linear_0_16081\\\" x1=\\\"-9.95187\\\" y1=\\\"9.95187\\\" x2=\\\"9.95187\\\" y2=\\\"29.8556\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"white\\\" stop-opacity=\\\"0.245559\\\"/>\\n <stop offset=\\\"1\\\" stop-opacity=\\\"0.498578\\\"/>\\n </linearGradient>\\n </defs>\\n</svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\">\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"#FF991F\\\"/>\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"url(#paint0_linear_0_16103)\\\" style=\\\"mix-blend-mode:overlay\\\"/>\\n <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.90113 15C3.09595 15 2.62093 14.097 3.07709 13.4335L6.67606 8.19861C7.07341 7.62064 7.9268 7.62065 8.32414 8.19861L13.0001 15H3.90113Z\\\" fill=\\\"white\\\"/>\\n <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.53962 15L12.7076 10.2481C13.1034 9.65434 13.9758 9.65434 14.3717 10.2481L16.5031 13.4453C16.9462 14.1099 16.4698 15 15.6711 15H9.53962Z\\\" fill=\\\"white\\\"/>\\n <path d=\\\"M16.0001 5.5C16.0001 6.32843 15.3285 7 14.5001 7C13.6717 7 13.0001 6.32843 13.0001 5.5C13.0001 4.67157 13.6717 4 14.5001 4C15.3285 4 16.0001 4.67157 16.0001 5.5Z\\\" fill=\\\"white\\\"/>\\n <defs>\\n <linearGradient id=\\\"paint0_linear_0_16103\\\" x1=\\\"-9.95187\\\" y1=\\\"9.95187\\\" x2=\\\"9.95187\\\" y2=\\\"29.8556\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"white\\\" stop-opacity=\\\"0.245559\\\"/>\\n <stop offset=\\\"1\\\" stop-opacity=\\\"0.498578\\\"/>\\n </linearGradient>\\n </defs>\\n</svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\">\\n <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M18 6.60751L11.392 -0.000488281L5 0.000113437C3.34315 0.000113437 2 1.34326 2 3.00011V17.0001C2 18.657 3.34315 20.0001 5 20.0001H15C16.6569 20.0001 18 18.657 18 17.0001V6.60751ZM17 8.00011L10 1.00011V6.00011C10 7.10468 10.8954 8.00011 12 8.00011H17Z\\\" fill=\\\"#AABFFC\\\"/>\\n <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M18 6.60751L11.392 -0.000488281L5 0.000113437C3.34315 0.000113437 2 1.34326 2 3.00011V17.0001C2 18.657 3.34315 20.0001 5 20.0001H15C16.6569 20.0001 18 18.657 18 17.0001V6.60751ZM17 8.00011L10 1.00011V6.00011C10 7.10468 10.8954 8.00011 12 8.00011H17Z\\\" fill=\\\"url(#paint0_linear_0_16113)\\\" style=\\\"mix-blend-mode:overlay\\\"/>\\n <defs>\\n <linearGradient id=\\\"paint0_linear_0_16113\\\" x1=\\\"-5.9615\\\" y1=\\\"9.95168\\\" x2=\\\"13.4572\\\" y2=\\\"25.4862\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"white\\\" stop-opacity=\\\"0.245559\\\"/>\\n <stop offset=\\\"1\\\" stop-opacity=\\\"0.498578\\\"/>\\n </linearGradient>\\n </defs>\\n</svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\">\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"#FF5630\\\"/>\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"url(#paint0_linear_0_16087)\\\" style=\\\"mix-blend-mode:overlay\\\"/>\\n <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4.55535 13.6488V11.0388H4.92535C5.65535 11.0388 5.93535 10.9988 6.27535 10.8688C6.97535 10.5988 7.36535 9.92876 7.36535 8.99876C7.36535 8.21876 7.07535 7.57876 6.57535 7.25876C6.27535 7.06876 5.82535 6.97876 5.09535 6.97876H2.98535V13.6488H4.55535ZM4.84535 9.90876H4.54535V8.10876H4.84535C5.51535 8.10876 5.75535 8.34876 5.75535 9.02876C5.75535 9.66876 5.51535 9.90876 4.84535 9.90876ZM11.6393 13.4388C11.2793 13.5988 10.9993 13.6488 10.4393 13.6488H8.21935V6.97876H10.2593C11.2393 6.97876 11.7193 7.11876 12.1093 7.52876C12.5993 8.02876 12.7693 8.71876 12.7693 10.1388C12.7693 10.9388 12.7093 11.6788 12.6093 12.1588C12.4893 12.7388 12.1193 13.2188 11.6393 13.4388ZM10.0793 12.5188H9.79935V8.10876H10.0193C10.9713 8.10876 11.1466 8.35839 11.1586 9.95112L11.1593 10.1488C11.1593 12.2088 11.0193 12.5188 10.0793 12.5188ZM15.3333 10.8188V13.6488H13.7533V6.97876H17.6033V8.23876H15.3333V9.58876H17.4433V10.8188H15.3333Z\\\" fill=\\\"white\\\"/>\\n <defs>\\n <linearGradient id=\\\"paint0_linear_0_16087\\\" x1=\\\"-9.95187\\\" y1=\\\"9.95187\\\" x2=\\\"9.95187\\\" y2=\\\"29.8556\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"white\\\" stop-opacity=\\\"0.245559\\\"/>\\n <stop offset=\\\"1\\\" stop-opacity=\\\"0.498578\\\"/>\\n </linearGradient>\\n </defs>\\n</svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\">\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"#2C7CD3\\\"/>\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"url(#paint0_linear_0_16075)\\\" style=\\\"mix-blend-mode:overlay\\\"/>\\n <path d=\\\"M8.0542 14.9946L9.90137 8.0376L11.7549 14.9946H13.748L16.0078 5.68896H14.1162L12.688 12.189L11.0566 5.68896H8.82227L7.12109 12.0811L5.71826 5.68896H3.79492L6.0166 14.9946H8.0542Z\\\" fill=\\\"white\\\"/>\\n <defs>\\n <linearGradient id=\\\"paint0_linear_0_16075\\\" x1=\\\"-9.95187\\\" y1=\\\"9.95187\\\" x2=\\\"9.95187\\\" y2=\\\"29.8556\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"white\\\" stop-opacity=\\\"0.245559\\\"/>\\n <stop offset=\\\"1\\\" stop-opacity=\\\"0.498578\\\"/>\\n </linearGradient>\\n </defs>\\n</svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\">\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"#FF991F\\\"/>\\n <rect width=\\\"20\\\" height=\\\"20\\\" rx=\\\"4\\\" fill=\\\"url(#paint0_linear_2163_24057)\\\" style=\\\"mix-blend-mode:overlay\\\"/>\\n <path d=\\\"M1.97561 5.99658L3.56111 9.43008L1.84961 13.0001H3.66611L4.21211 11.6771C4.40111 11.0996 4.45361 10.8791 4.49561 10.6166H4.52711C4.54811 10.8686 4.61111 11.1101 4.77911 11.5826L5.34611 13.0001H7.20461L5.49311 9.44058L7.07861 5.99658H5.28311L4.86311 7.06758C4.85261 7.08858 4.83161 7.16208 4.80011 7.25658C4.75811 7.44558 4.70561 7.63458 4.65311 7.82358C4.60061 8.02308 4.57961 8.10708 4.56911 8.23308H4.52711C4.49561 8.02308 4.43261 7.78158 4.27511 7.23558L3.82361 5.99658H1.97561Z\\\" fill=\\\"white\\\"/>\\n <path d=\\\"M7.53437 5.99658V13.0001H9.05687V9.78708L9.02537 9.34608L8.98337 8.41158C8.98337 8.33808 8.96237 8.00208 8.92037 7.47708H8.98337C9.05687 7.90758 9.10937 8.21208 9.18287 8.53758C9.24587 8.87358 9.34037 9.28308 9.44537 9.77658L10.1804 13.0001H11.3984L12.1544 9.59808C12.2909 8.98908 12.5324 7.79208 12.5744 7.47708H12.6374C12.6059 7.80258 12.5849 8.01258 12.5744 8.22258L12.5534 8.98908C12.5429 9.25158 12.5324 9.52458 12.5219 9.80808V13.0001H14.0444V5.99658H11.6714L11.2409 8.10708C11.0834 8.74758 10.8419 10.3751 10.8419 10.8161L10.7999 10.8266C10.7894 10.2911 10.5269 8.61108 10.3274 7.85508L9.92837 5.99658H7.53437Z\\\" fill=\\\"white\\\"/>\\n <path d=\\\"M14.8685 5.99658V13.0001H18.89V11.6666H16.5275V5.99658H14.8685Z\\\" fill=\\\"white\\\"/>\\n <defs>\\n <linearGradient id=\\\"paint0_linear_2163_24057\\\" x1=\\\"-9.95187\\\" y1=\\\"9.95187\\\" x2=\\\"9.95187\\\" y2=\\\"29.8556\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"white\\\" stop-opacity=\\\"0.245559\\\"/>\\n <stop offset=\\\"1\\\" stop-opacity=\\\"0.498578\\\"/>\\n </linearGradient>\\n </defs>\\n</svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\">\\n <g clip-path=\\\"url(#clip0_922_22603)\\\">\\n <path d=\\\"M16 0H4C1.79086 0 0 1.79086 0 4V16C0 18.2091 1.79086 20 4 20H16C18.2091 20 20 18.2091 20 16V4C20 1.79086 18.2091 0 16 0Z\\\" fill=\\\"#A1D237\\\"/>\\n <path d=\\\"M16 0H4C1.79086 0 0 1.79086 0 4V16C0 18.2091 1.79086 20 4 20H16C18.2091 20 20 18.2091 20 16V4C20 1.79086 18.2091 0 16 0Z\\\" fill=\\\"url(#paint0_linear_922_22603)\\\" style=\\\"mix-blend-mode:overlay\\\"/>\\n <path d=\\\"M8.32086 14V12.6807H6.32086C5.92513 12.6807 5.72193 12.6927 5.58289 12.7166C5.64706 12.6207 5.68984 12.5367 5.73262 12.4528C5.7861 12.3568 5.83957 12.2609 5.89305 12.1529L8.28877 7.22339V6H4.17112V7.31934H6.20321C6.39572 7.31934 6.59893 7.30735 6.69519 7.29535C6.58824 7.47526 6.49198 7.65517 6.41711 7.81109L4 12.8246V14H8.32086ZM10.4813 14V6H9.03743V14H10.4813ZM12.9519 14V10.8096H13.4439C14.2139 10.8096 14.5241 10.7616 14.877 10.6057C15.5936 10.2699 16 9.47826 16 8.38681C16 7.45127 15.6898 6.69565 15.1444 6.32384C14.8342 6.09595 14.3743 6 13.6364 6H11.508V14H12.9519ZM13.4118 9.6102H12.9519V7.1994H13.3797C13.7219 7.1994 13.9679 7.24738 14.107 7.34333C14.385 7.53523 14.5241 7.87106 14.5241 8.38681C14.5241 8.91454 14.4064 9.25037 14.1497 9.44228C13.9893 9.57421 13.8075 9.6102 13.4118 9.6102Z\\\" fill=\\\"white\\\"/>\\n </g>\\n <defs>\\n <linearGradient id=\\\"paint0_linear_922_22603\\\" x1=\\\"-9.95187\\\" y1=\\\"9.95187\\\" x2=\\\"9.95187\\\" y2=\\\"29.8556\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n <stop stop-color=\\\"white\\\" stop-opacity=\\\"0.245559\\\"/>\\n <stop offset=\\\"1\\\" stop-opacity=\\\"0.498578\\\"/>\\n </linearGradient>\\n <clipPath id=\\\"clip0_922_22603\\\">\\n <rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\"/>\\n </clipPath>\\n </defs>\\n</svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M12 11c1.306 0 2.417.834 2.829 2H17c.552 0 1 .448 1 1s-.448 1-1 1h-2.17c-.412 1.165-1.524 2-2.83 2s-2.418-.835-2.83-2H3c-.552 0-1-.448-1-1s.448-1 1-1h6.171c.412-1.166 1.523-2 2.829-2zM5 3c1.306 0 2.417.834 2.829 2H17c.552 0 1 .448 1 1s-.448 1-1 1H7.83C7.417 8.165 6.305 9 5 9 3.343 9 2 7.657 2 6s1.343-3 3-3z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M10 8c-.552 0-1-.448-1-1s.448-1 1-1 1 .448 1 1-.448 1-1 1zm0 8c3.307 0 6-2.693 6-6 0-3.308-2.693-6-6-6-3.308 0-6 2.692-6 6 0 3.307 2.692 6 6 6zm0-14c2.122 0 4.157.843 5.657 2.343S18 7.878 18 10s-.843 4.157-2.343 5.657S12.122 18 10 18s-4.157-.843-5.657-2.343S2 12.122 2 10c0-4.418 3.582-8 8-8zm0 12c-.552 0-1-.448-1-1v-3c0-.552.448-1 1-1s1 .448 1 1v3c0 .552-.448 1-1 1z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"1 1 16 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M5.08154 9.02148C5.08154 8.77083 5.16211 8.55778 5.32324 8.38232C5.48438 8.20687 5.70817 8.11914 5.99463 8.11914C6.28109 8.11914 6.50667 8.20687 6.67139 8.38232C6.8361 8.55778 6.91846 8.77083 6.91846 9.02148C6.91846 9.27214 6.8361 9.47803 6.67139 9.63916C6.50667 9.80029 6.28109 9.88086 5.99463 9.88086C5.70817 9.88086 5.48438 9.80029 5.32324 9.63916C5.16211 9.47803 5.08154 9.27214 5.08154 9.02148ZM8.08154 9.02148C8.08154 8.77083 8.16211 8.55778 8.32324 8.38232C8.48438 8.20687 8.70817 8.11914 8.99463 8.11914C9.28109 8.11914 9.50667 8.20687 9.67139 8.38232C9.8361 8.55778 9.91846 8.77083 9.91846 9.02148C9.91846 9.27214 9.8361 9.47803 9.67139 9.63916C9.50667 9.80029 9.28109 9.88086 8.99463 9.88086C8.70817 9.88086 8.48438 9.80029 8.32324 9.63916C8.16211 9.47803 8.08154 9.27214 8.08154 9.02148ZM11.0815 9.02148C11.0815 8.77083 11.1621 8.55778 11.3232 8.38232C11.4844 8.20687 11.7082 8.11914 11.9946 8.11914C12.2811 8.11914 12.5067 8.20687 12.6714 8.38232C12.8361 8.55778 12.9185 8.77083 12.9185 9.02148C12.9185 9.27214 12.8361 9.47803 12.6714 9.63916C12.5067 9.80029 12.2811 9.88086 11.9946 9.88086C11.7082 9.88086 11.4844 9.80029 11.3232 9.63916C11.1621 9.47803 11.0815 9.27214 11.0815 9.02148Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M16 11H4a1 1 0 1 1 0-2h12a1 1 0 1 1 0 2Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M16 11h-5v5a1 1 0 1 1-2 0v-5H4a1 1 0 1 1 0-2h5V4a1 1 0 0 1 2 0v5h5a1 1 0 1 1 0 2Z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M9 2c3.866 0 7 3.134 7 7 0 1.7-.606 3.259-1.614 4.472l2.589 2.59c.39.39.39 1.023 0 1.414-.39.39-1.024.39-1.414 0l-2.662-2.661C11.785 15.563 10.443 16 9 16c-3.866 0-7-3.134-7-7s3.134-7 7-7zm0 2C6.239 4 4 6.239 4 9s2.239 5 5 5 5-2.239 5-5-2.239-5-5-5z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#FFF\\\" stroke=\\\"none\\\" d=\\\"M14 11H6c-.552 0-1-.448-1-1s.448-1 1-1h8c.552 0 1 .448 1 1s-.448 1-1 1z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#FFF\\\" stroke=\\\"none\\\" d=\\\"M10 15c-.552 0-1-.448-1-1v-4c0-.552.448-1 1-1s1 .448 1 1v4c0 .552-.448 1-1 1zM10 7c-.552 0-1-.448-1-1s.448-1 1-1 1 .448 1 1-.448 1-1 1z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#FFF\\\" stroke=\\\"none\\\" d=\\\"M11.414 10l2.293-2.293c.391-.391.391-1.023 0-1.414-.39-.391-1.023-.391-1.414 0L10 8.586 7.707 6.293c-.39-.391-1.023-.391-1.414 0-.39.391-.39 1.023 0 1.414L8.586 10l-2.293 2.293c-.39.391-.39 1.023 0 1.414.195.195.451.293.707.293.256 0 .512-.098.707-.293L10 11.414l2.293 2.293c.195.195.451.293.707.293.256 0 .512-.098.707-.293.391-.391.391-1.023 0-1.414L11.414 10z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#FFF\\\" stroke=\\\"none\\\" d=\\\"M8.333 11.252l4.96-4.96c.39-.39 1.024-.39 1.414 0 .39.391.39 1.025 0 1.415L9.04 13.374c-.39.39-1.023.39-1.414 0L5.293 11.04c-.39-.39-.39-1.023 0-1.414.39-.39 1.024-.39 1.414 0l1.626 1.626z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#FFF\\\" stroke=\\\"none\\\" d=\\\"M10 5c-.552 0-1 .448-1 1v4c0 .552.448 1 1 1s1-.448 1-1V6c0-.552-.448-1-1-1zM10 13c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1z\\\"></path></svg>\"","export default \"<svg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M16 6v10c0 1.105-.895 2-2 2H6c-1.105 0-2-.895-2-2V6h12zM8 8c-.552 0-1 .448-1 1v6c0 .552.448 1 1 1s1-.448 1-1V9c0-.552-.448-1-1-1zm4 0c-.552 0-1 .448-1 1v6c0 .552.448 1 1 1s1-.448 1-1V9c0-.552-.448-1-1-1zm0-6l1 1h3c.552 0 1 .448 1 1s-.448 1-1 1H4c-.552 0-1-.448-1-1s.448-1 1-1h3l1-1h4z\\\"></path></svg>\"","import type { ISvgIcon } from '../types';\nimport avatar from './avatar.svg?raw';\nimport calendar from './calendar.svg?raw';\nimport check from './check.svg?raw';\nimport chevronDownSmall from './chevron-down-small.svg?raw';\nimport chevronDown from './chevron-down.svg?raw';\nimport chevronLeft from './chevron-left.svg?raw';\nimport chevronRight from './chevron-right.svg?raw';\nimport closeLarge from './close-large.svg?raw';\nimport closeWindow from './close-window.svg?raw';\nimport close from './close.svg?raw';\nimport fileExcel from './file-excel.svg?raw';\nimport fileImage from './file-image.svg?raw';\nimport fileOther from './file-other.svg?raw';\nimport filePdf from './file-pdf.svg?raw';\nimport fileWord from './file-word.svg?raw';\nimport fileXml from './file-xml.svg?raw';\nimport fileZip from './file-zip.svg?raw';\nimport filter from './filter.svg?raw';\nimport information from './information.svg?raw';\nimport menu from './menu.svg?raw';\nimport minus from './minus.svg?raw';\nimport plus from './plus.svg?raw';\nimport search from './search.svg?raw';\nimport statusError from './status-error.svg?raw';\nimport statusInfo from './status-info.svg?raw';\nimport statusNotOk from './status-not-ok.svg?raw';\nimport statusOk from './status-ok.svg?raw';\nimport statusWarning from './status-warning.svg?raw';\nimport trashCan from './trash-can.svg?raw';\n\nexport const iconsMap = {\n avatar,\n calendar,\n check,\n 'chevron-down-small': chevronDownSmall,\n 'chevron-down': chevronDown,\n 'chevron-left': chevronLeft,\n 'chevron-right': chevronRight,\n 'close-large': closeLarge,\n 'close-window': closeWindow,\n close,\n 'file-excel': fileExcel,\n 'file-image': fileImage,\n 'file-other': fileOther,\n 'file-pdf': filePdf,\n 'file-word': fileWord,\n 'file-xml': fileXml,\n 'file-zip': fileZip,\n filter,\n information,\n menu,\n minus,\n plus,\n search,\n 'status-error': statusError,\n 'status-info': statusInfo,\n 'status-not-ok': statusNotOk,\n 'status-ok': statusOk,\n 'status-warning': statusWarning,\n 'trash-can': trashCan,\n} satisfies Record<string, ISvgIcon>;\n","import { createThemedStyles, ITweakStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('Icon', {\n root: {\n display: 'flex',\n alignItems: 'center',\n },\n});\n\nexport type IIconStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport { addDataAttributes, isEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { useTheme } from '../../theme';\nimport { ICommonProps } from '../../types';\nimport { iconsMap } from './icons';\nimport { IIconType } from './types';\nimport { IIconStyles, useStyles } from './Icon.styles';\n\nexport interface IIconProps extends ICommonProps<IIconStyles> {\n type: IIconType;\n}\n\nexport const Icon: FC<IIconProps> = ({ type, data, testId, tweakStyles }) => {\n const classes = useStyles({ theme: tweakStyles });\n const theme = useTheme();\n\n const icon = theme.icons?.[type] ?? iconsMap[type];\n\n if (isEmpty(icon)) {\n console.error(`Иконки ${type} не существует`);\n return null;\n }\n\n return (\n <div\n className={classes.root}\n {...addDataAttributes(data, testId)}\n dangerouslySetInnerHTML={{ __html: icon }}\n />\n );\n};\n","import { ReactNode } from 'react';\nimport { Icon } from './Icon';\nimport { IIcon } from './types';\n\nexport const renderIcon = (icon: IIcon): ReactNode =>\n typeof icon === 'string' ? <Icon type={icon} /> : icon;\n","export const DEFAULT_OFFSET = 6;\n\nexport const POPUP_EVENT_TYPES = ['hover', 'click'] as const;\n","import { Middleware, size } from '@floating-ui/react';\n\nexport const minWidthRelativeToTrigger: Middleware = size({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n minWidth: `${rects.reference.width}px`,\n });\n },\n});\n","import { createThemedStyles, ITweakStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('WithPopup', {\n trigger: {\n width: 'fit-content',\n },\n\n clickable: {\n cursor: 'pointer',\n },\n\n active: {},\n\n disabled: {\n cursor: 'auto',\n },\n\n popup: {\n zIndex: 5,\n outline: 'none',\n },\n\n arrow: {},\n\n animationEnd: {},\n\n animationStart: {},\n\n 'dropdown-initial': {\n extend: 'animationEnd',\n },\n\n 'dropdown-open': {\n extend: 'animationStart',\n },\n\n 'dropdown-close': {\n visibility: 'hidden',\n extend: 'animationEnd',\n },\n\n 'dropdown-unmounted': {\n extend: 'animationEnd',\n },\n});\n\nexport type IWithPopupStyles = ITweakStyles<typeof useStyles>;\n","import { FC, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport {\n applyAction,\n stopPropagation,\n addDataAttributes,\n} from '@true-engineering/true-react-platform-helpers';\nimport {\n autoUpdate,\n useFloating,\n useClick,\n useDismiss,\n useHover,\n useInteractions,\n Placement,\n Middleware,\n FloatingPortal,\n offset,\n flip,\n useTransitionStatus,\n OffsetOptions,\n UseHoverProps,\n safePolygon,\n useFocus,\n FloatingArrow,\n arrow,\n UseClickProps,\n UseFocusProps,\n UseDismissProps,\n UseTransitionStatusProps,\n} from '@floating-ui/react';\nimport { ICommonProps, IDataAttributes, IRenderNode } from '../../types';\nimport { DEFAULT_OFFSET } from './constants';\nimport { minWidthRelativeToTrigger } from './helpers';\nimport {\n IPopupArrowProps,\n IPopupEventType,\n IReferenceProps,\n IWithPopupChildrenProps,\n IWithPopupToggleEvent,\n IWithPopupTriggerProps,\n} from './types';\nimport { useStyles, IWithPopupStyles } from './WithPopup.styles';\n\nexport interface IWithPopupProps extends ICommonProps<IWithPopupStyles> {\n trigger: IRenderNode<IWithPopupTriggerProps>;\n children: IRenderNode<IWithPopupChildrenProps>;\n middlewares?: Middleware[];\n /** @default eventType === 'click' ? 'bottom-end' : 'top' */\n placement?: Placement;\n /** @default 'click' */\n eventType?: IPopupEventType;\n /**\n * @deprecated Используйте hoverOptions\n * @default 0\n */\n hoverDelay?: number;\n /** @default 6 */\n popupOffset?: OffsetOptions;\n arrowProps?: IPopupArrowProps;\n popupData?: IDataAttributes;\n /** @default true, if eventType === click */\n shouldStopPropagation?: boolean;\n /** @default false */\n shouldHideOnScroll?: boolean;\n /** @default true */\n shouldRenderInBody?: boolean;\n /** Должен ли WithPopup рендерить свой div-wrapper в качестве триггера\n * @default true, if eventType === hover */\n isTriggerWrapped?: boolean;\n /** @default true */\n canBeFlipped?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n shouldShowArrow?: boolean;\n /** Должна ли минимальная ширина попапа быть равна ширине триггера\n * @default false */\n isMinWidthSameAsTrigger?: boolean;\n hoverOptions?: UseHoverProps;\n clickOptions?: UseClickProps;\n focusOptions?: UseFocusProps;\n dismissOptions?: UseDismissProps;\n transitionOptions?: UseTransitionStatusProps;\n onToggle?: (isActive: boolean, event?: IWithPopupToggleEvent) => void;\n}\n\nexport const WithPopup: FC<IWithPopupProps> = ({\n trigger,\n children,\n middlewares = [],\n eventType = 'click',\n placement = eventType === 'click' ? 'bottom-end' : 'top',\n hoverDelay = 0,\n popupOffset = DEFAULT_OFFSET,\n arrowProps,\n popupData,\n shouldStopPropagation = eventType === 'click',\n shouldHideOnScroll = false,\n shouldRenderInBody = true,\n canBeFlipped = true,\n isTriggerWrapped = eventType === 'hover',\n isDisabled = false,\n shouldShowArrow = false,\n isMinWidthSameAsTrigger = false,\n hoverOptions,\n clickOptions,\n focusOptions,\n dismissOptions,\n transitionOptions,\n tweakStyles,\n data,\n testId,\n onToggle,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const [isOpen, setIsOpen] = useState(false);\n const isActive = isOpen && !isDisabled;\n\n const arrowRef = useRef<SVGSVGElement>(null);\n\n const handleToggle = (next: boolean, event?: IWithPopupToggleEvent) => {\n event?.stopPropagation();\n onToggle?.(next, event);\n setIsOpen(next);\n };\n\n const handleClose = (event?: IWithPopupToggleEvent) => {\n handleToggle(false, event);\n };\n\n const { refs, floatingStyles, context } = useFloating({\n open: isActive,\n middleware: [\n offset(popupOffset),\n canBeFlipped && flip({ fallbackAxisSideDirection: 'start' }),\n isMinWidthSameAsTrigger && minWidthRelativeToTrigger,\n ...middlewares,\n shouldShowArrow && arrow({ element: arrowRef }),\n ],\n whileElementsMounted: autoUpdate,\n placement,\n onOpenChange: handleToggle,\n });\n\n const hover = useHover(context, {\n enabled: eventType === 'hover',\n delay: { open: hoverDelay, close: 0 },\n handleClose: safePolygon(),\n ...hoverOptions,\n });\n\n const focus = useFocus(context, { enabled: eventType === 'hover', ...focusOptions });\n\n const click = useClick(context, { enabled: eventType === 'click', ...clickOptions });\n\n const dismiss = useDismiss(context, {\n enabled: eventType === 'click',\n ancestorScroll: shouldHideOnScroll,\n ...dismissOptions,\n });\n\n const { getFloatingProps, getReferenceProps } = useInteractions([hover, click, focus, dismiss]);\n\n const { isMounted, status } = useTransitionStatus(context, {\n duration: { close: 500 },\n ...transitionOptions,\n });\n\n const referenceProps: IReferenceProps = getReferenceProps({\n ref: refs.setReference,\n ...(shouldStopPropagation && {\n onClick: stopPropagation,\n }),\n });\n\n const triggerElement = applyAction(trigger, {\n referenceProps: !isTriggerWrapped ? referenceProps : undefined,\n triggerProps: {\n isActive,\n isDisabled,\n ...(!isTriggerWrapped && { data, testId, ...referenceProps }),\n },\n });\n\n return (\n <>\n {isTriggerWrapped ? (\n <div\n className={clsx(classes.trigger, {\n [classes.clickable]: eventType === 'click',\n [classes.disabled]: isDisabled,\n [classes.active]: isActive,\n })}\n {...referenceProps}\n {...addDataAttributes(data, testId)}\n >\n {triggerElement}\n </div>\n ) : (\n triggerElement\n )}\n {isMounted && (\n <FloatingPortal\n root={shouldRenderInBody ? document.body : (refs.reference.current as HTMLElement)}\n >\n <div\n ref={refs.setFloating}\n style={floatingStyles}\n className={classes.popup}\n {...getFloatingProps()}\n {...addDataAttributes(popupData, testId, 'popup')}\n >\n <div className={classes[`dropdown-${status}`]}>\n {shouldShowArrow && (\n <FloatingArrow\n {...arrowProps}\n ref={arrowRef}\n context={context}\n className={classes.arrow}\n />\n )}\n {applyAction(children, { floatingContext: context, onClose: handleClose })}\n </div>\n </div>\n </FloatingPortal>\n )}\n </>\n );\n};\n","import { animations, colors, createThemedStyles, ITweakStyles } from '../../../../theme';\nimport type { IListSizes as IListItemSizes } from '../../types';\n\nconst ITEM_HORIZONTAL_PADDING = 16;\nconst ICON_SIZE = 20;\nconst ICON_GAP = 12;\n\nexport const useStyles = createThemedStyles('ListItem', {\n root: {\n display: 'flex',\n alignItems: 'center',\n gap: ICON_GAP,\n boxSizing: 'border-box',\n fontSize: 16,\n whiteSpace: 'nowrap',\n minHeight: 40,\n padding: [0, ITEM_HORIZONTAL_PADDING],\n transition: animations.defaultTransition,\n transitionProperty: 'background-color',\n cursor: 'pointer',\n },\n\n default: {},\n\n destructive: {},\n\n focused: {},\n\n disabledItem: {\n cursor: 'default',\n },\n\n spacer: {\n height: 1,\n backgroundColor: colors.BORDER_LIGHT,\n },\n\n withIconGap: {\n paddingLeft: ITEM_HORIZONTAL_PADDING + ICON_SIZE + ICON_GAP,\n },\n\n icon: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n flexShrink: 0,\n },\n\n content: {\n flexGrow: 1,\n },\n\n chevron: {},\n});\n\nexport type IListItemStyles = ITweakStyles<typeof useStyles, IListItemSizes>;\n","import { FC, MouseEvent, KeyboardEvent, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport {\n addClickHandler,\n addDataAttributes,\n isArrayNotEmpty,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../../../types';\nimport { renderIcon, IIcon, Icon } from '../../../Icon';\nimport type { IListSize as IListItemSize } from '../../types';\nimport { useStyles, IListItemStyles } from './ListItem.styles';\n\nexport interface IListItemProps extends ICommonProps<IListItemStyles> {\n item: ReactNode;\n view?: 'default' | 'destructive';\n icon?: IIcon;\n nestedItems?: IListItemProps[];\n size?: IListItemSize;\n isFocused?: boolean;\n disabled?: boolean;\n shouldDrawSpacerAbove?: boolean;\n shouldDrawSpacerBelow?: boolean;\n withIconGap?: boolean;\n onClick?: (event: MouseEvent | KeyboardEvent) => void;\n}\n\nexport const ListItem: FC<IListItemProps> = ({\n icon,\n item,\n nestedItems,\n size,\n disabled: isDisabled,\n isFocused,\n shouldDrawSpacerAbove,\n shouldDrawSpacerBelow,\n testId,\n tweakStyles,\n view = 'default',\n withIconGap,\n data,\n onClick,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <>\n {shouldDrawSpacerAbove && <div className={classes.spacer} />}\n <div\n className={clsx(classes.root, classes[view], isNotEmpty(size) && classes[size], {\n [classes.disabledItem]: isDisabled,\n [classes.withIconGap]: withIconGap,\n [classes.focused]: isFocused,\n })}\n {...addClickHandler(onClick, !isDisabled)}\n {...addDataAttributes({ ...data, disabled: isDisabled ? true : undefined }, testId)}\n >\n {isReactNodeNotEmpty(icon) && <span className={classes.icon}>{renderIcon(icon)}</span>}\n <span className={classes.content}>{item}</span>\n {isArrayNotEmpty(nestedItems) && (\n <span className={clsx(classes.icon, classes.chevron)}>\n <Icon type=\"chevron-right\" />\n </span>\n )}\n </div>\n {shouldDrawSpacerBelow && <div className={classes.spacer} />}\n </>\n );\n};\n","import { colors, createThemedStyles, ITweakStyles } from '../../theme';\nimport { IWithPopupStyles } from '../WithPopup';\nimport { IListSizes } from './types';\n\nexport const useStyles = createThemedStyles('List', {\n root: {\n minWidth: 180,\n backgroundColor: colors.CLASSIC_WHITE,\n padding: [8, 0],\n listStyle: 'none',\n margin: 0,\n textAlign: 'left',\n },\n\n nestedItems: {\n marginTop: -8,\n paddingLeft: 4,\n },\n});\n\nexport const withPopupStyles: IWithPopupStyles = {\n trigger: {\n width: '100%',\n },\n};\n\nexport type IListStyles = ITweakStyles<typeof useStyles, IListSizes>;\n","import { FC, Fragment, KeyboardEvent, MouseEvent } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n getTestId,\n isArrayNotEmpty,\n isNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { WithPopup } from '../WithPopup';\nimport { IListItemProps, ListItem } from './components';\nimport { IListItem, IListSize } from './types';\nimport { useStyles, IListStyles, withPopupStyles } from './List.styles';\n\nexport interface IListProps extends ICommonProps<IListStyles> {\n items: IListItem[];\n size?: IListSize;\n onClick?: (event: MouseEvent | KeyboardEvent) => void;\n}\n\nexport const List: FC<IListProps> = ({ items, size, testId, data, tweakStyles, onClick }) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const handleItemClick = (\n event: MouseEvent | KeyboardEvent,\n { onClick: itemOnClick }: IListItem,\n ) => {\n if (isNotEmpty(itemOnClick)) {\n itemOnClick(event);\n onClick?.(event);\n }\n };\n\n const filteredItems = items.filter(({ isHidden }) => !isHidden);\n\n return (\n <div\n className={clsx(classes.root, isNotEmpty(size) && classes[size])}\n {...addDataAttributes(data, testId)}\n >\n {filteredItems.map((item, i) => {\n const itemProps: IListItemProps = {\n testId: getTestId(testId, `item-${i}`),\n size,\n ...item,\n shouldDrawSpacerAbove: item.shouldDrawSpacerAbove && i !== 0,\n shouldDrawSpacerBelow: item.shouldDrawSpacerBelow && i !== items.length - 1,\n onClick: (event) => handleItemClick(event, item),\n };\n\n return (\n <Fragment key={i}>\n {isArrayNotEmpty(item.nestedItems) ? (\n <WithPopup\n eventType=\"hover\"\n tweakStyles={withPopupStyles}\n placement=\"right-start\"\n popupOffset={0}\n shouldRenderInBody={false}\n trigger={({ triggerProps }) => (\n <ListItem {...itemProps} isFocused={triggerProps.isActive} />\n )}\n >\n <div className={classes.nestedItems}>\n <List items={item.nestedItems} size={size} onClick={onClick} />\n </div>\n </WithPopup>\n ) : (\n <ListItem {...itemProps} />\n )}\n </Fragment>\n );\n })}\n </div>\n );\n};\n","export const ANIMATION_TIMEOUT = 150; // такой же тайминг должен быть в стилях анимации\n","import { animations, createThemedStyles, ITweakStyles } from '../../theme';\nimport { IListStyles } from '../List';\n\nexport const useStyles = createThemedStyles('AccountInfo', {\n root: {\n display: 'flex',\n },\n\n account: {\n display: 'flex',\n position: 'relative',\n alignItems: 'center',\n cursor: 'pointer',\n },\n\n accountName: {\n margin: [0, 2, 0, 10],\n fontSize: 14,\n transition: animations.defaultTransition,\n transitionProperty: 'color',\n },\n\n accountNameOpened: {},\n\n accountChevron: {\n width: 16,\n height: 16,\n transition: animations.defaultTransition,\n transitionProperty: 'transform, color',\n },\n\n accountChevronOpened: {\n transform: 'rotate(180deg)',\n },\n\n accountMenu: {\n position: 'absolute',\n zIndex: 90,\n top: '100%',\n right: 0,\n marginTop: 8,\n },\n\n avatarIcon: {\n width: 32,\n height: 32,\n },\n\n ...animations.slideUp,\n});\n\nexport type IAccountInfoStyles = ITweakStyles<typeof useStyles, { tweakList: IListStyles }>;\n","import { FC, ReactNode, useRef, useState, MouseEvent } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { useOnClickOutsideWithRef, useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { IListProps, List } from '../List';\nimport { ANIMATION_TIMEOUT } from './constants';\nimport { useStyles, IAccountInfoStyles } from './AccountInfo.styles';\n\nexport interface IAccountInfoProps extends ICommonProps<IAccountInfoStyles> {\n /** @default `<Icon type='avatar' />` */\n avatar?: ReactNode;\n accountName: ReactNode;\n options: IListProps['items'];\n}\n\nexport const AccountInfo: FC<IAccountInfoProps> = ({\n data,\n testId,\n avatar,\n tweakStyles,\n accountName,\n options,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakListStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakList',\n currentComponentName: 'AccountInfo',\n });\n\n const nameRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n const toggleMenu = (event: MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n setIsMenuOpen((v) => !v);\n };\n\n useOnClickOutsideWithRef(dropdownRef, () => setIsMenuOpen(false), nameRef);\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n {avatar ?? (\n <div className={classes.avatarIcon}>\n <Icon type=\"avatar\" />\n </div>\n )}\n <div ref={nameRef} className={classes.account} onClick={toggleMenu}>\n <div className={clsx(classes.accountName, isMenuOpen && classes.accountNameOpened)}>\n {accountName}\n </div>\n <div className={clsx(classes.accountChevron, isMenuOpen && classes.accountChevronOpened)}>\n <Icon type=\"chevron-down-small\" />\n </div>\n <CSSTransition\n in={isMenuOpen}\n timeout={ANIMATION_TIMEOUT}\n unmountOnExit\n classNames={{\n enter: classes['slide-up-enter'],\n enterActive: classes['slide-up-enter-active'],\n exit: classes['slide-up-exit'],\n exitActive: classes['slide-up-exit-active'],\n }}\n >\n <div ref={dropdownRef} className={classes.accountMenu} onClick={toggleMenu}>\n <List items={options} tweakStyles={tweakListStyles} />\n </div>\n </CSSTransition>\n </div>\n </div>\n );\n};\n","import { createThemedStyles, ITweakStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('AddButton', {\n root: {\n display: 'flex',\n alignItems: 'center',\n padding: '0px 16px',\n height: 52,\n cursor: 'pointer',\n outline: 'none',\n transition: 'border-color 0.1s ease-in, background-color 0.1s ease-in',\n fontSize: 14,\n\n '&:hover': {\n transition: 'border-color 0.1s ease-in, background-color 0.1s ease-in',\n },\n },\n\n disabled: {\n cursor: 'default',\n },\n\n icon: {\n width: 20,\n display: 'inline-block',\n marginRight: 8,\n },\n\n fullWidth: {\n width: '100%',\n },\n});\n\nexport type IAddButtonStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { useStyles, IAddButtonStyles } from './AddButton.styles';\n\nexport interface IAddButtonProps extends ICommonProps<IAddButtonStyles> {\n text: string;\n /** @default 'button' */\n type?: 'submit' | 'button';\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isFullWidth?: boolean;\n onClick?: () => void | Promise<void>;\n}\n\n/** @deprecated Весьма сомнительный компонент */\nexport const AddButton: FC<IAddButtonProps> = ({\n text,\n type = 'button',\n isDisabled = false,\n onClick,\n isFullWidth = false,\n data,\n testId,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <button\n type={type}\n className={clsx(\n classes.root,\n isDisabled && classes.disabled,\n isFullWidth && classes.fullWidth,\n )}\n onClick={!isDisabled ? onClick : undefined}\n disabled={isDisabled}\n {...addDataAttributes(data, testId)}\n >\n <div className={classes.icon}>\n <Icon type=\"plus\" />\n </div>\n <div>{text}</div>\n </button>\n );\n};\n","import { createThemedStyles, ITweakStyles } from '../../../../theme';\n\nexport const useStyles = createThemedStyles('DotsPreloader', {\n root: {\n display: 'flex',\n gap: 4,\n '--dot-size': '8px',\n\n '&::before, &::after': {\n content: '\"\"',\n extend: 'fadedDot',\n },\n\n '&::before': {\n animationDelay: '0',\n },\n\n '&::after': {\n animationDelay: '360ms',\n },\n },\n\n /* ----------- 3 DOTS ---------- */\n\n '@keyframes FadedDots': {\n '0%': {\n opacity: 0.2,\n },\n '30%': {\n opacity: 1,\n },\n '100%': {\n opacity: 0.2,\n },\n },\n\n // используется в .dot и в before и after элементах root\n fadedDot: {\n display: 'block',\n animationDuration: 750,\n animationIterationCount: 'infinite',\n animationName: '$FadedDots',\n borderRadius: '50%',\n width: 'var(--dot-size)',\n height: 'var(--dot-size)',\n backgroundColor: 'currentColor',\n },\n\n dot: {\n extend: 'fadedDot',\n animationDelay: '180ms',\n },\n});\n\nexport type IDotsPreloaderStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport { ICommonProps } from '../../../../types';\nimport { useStyles, IDotsPreloaderStyles } from './DotsPreloader.styles';\n\nexport type IDotsPreloaderProps = Pick<ICommonProps<IDotsPreloaderStyles>, 'tweakStyles'>;\n\nexport const DotsPreloader: FC<IDotsPreloaderProps> = ({ tweakStyles }) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <div className={classes.root}>\n <span className={classes.dot} />\n </div>\n );\n};\n","import { FC } from 'react';\n\nexport const DefaultPreloader: FC = () => (\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <linearGradient x1=\"8.042%\" y1=\"0%\" x2=\"65.682%\" y2=\"23.865%\" id=\"a\">\n <stop stopColor=\"currentColor\" stopOpacity=\"0\" offset=\"0%\" />\n <stop stopColor=\"currentColor\" stopOpacity=\".631\" offset=\"63.146%\" />\n <stop stopColor=\"currentColor\" offset=\"100%\" />\n </linearGradient>\n </defs>\n <g transform=\"translate(2,2)\" fill=\"none\">\n <path d=\"M36 18c0-9.94-8.06-18-18-18\" stroke=\"url(#a)\" strokeWidth=\"3\">\n <animateTransform\n xmlns=\"http://www.w3.org/2000/svg\"\n attributeName=\"transform\"\n attributeType=\"XML\"\n type=\"rotate\"\n from=\"0 18 18\"\n to=\"360 18 18\"\n dur=\"1s\"\n begin=\"0s\"\n repeatCount=\"indefinite\"\n fill=\"freeze\"\n />\n </path>\n </g>\n </svg>\n);\n","import { createThemedStyles, ITweakStyles } from '../../../../theme';\n\nexport const useStyles = createThemedStyles('SvgPreloader', {\n root: {\n display: 'flex',\n width: '100%',\n height: '100%',\n },\n});\n\nexport type ISvgPreloaderStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport { useTheme } from '../../../../theme';\nimport { ICommonProps } from '../../../../types';\nimport { IPreloaderSvgType } from '../../types';\nimport { DefaultPreloader } from '../DefaultPreloader';\nimport { ISvgPreloaderStyles, useStyles } from './SvgPreloader.styles';\n\nexport interface ISvgPreloaderProps extends Pick<ICommonProps<ISvgPreloaderStyles>, 'tweakStyles'> {\n type: IPreloaderSvgType;\n}\n\nexport const SvgPreloader: FC<ISvgPreloaderProps> = ({ type = 'default', tweakStyles }) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const theme = useTheme();\n const PreloaderIcon = theme.preloaders?.[type] ?? DefaultPreloader;\n const isInlineSvg = typeof PreloaderIcon === 'string';\n\n return isInlineSvg ? (\n <div className={classes.root} dangerouslySetInnerHTML={{ __html: PreloaderIcon }} />\n ) : (\n <PreloaderIcon />\n );\n};\n","import { ITweakStyles, createThemedStyles } from '../../theme';\nimport { IDotsPreloaderStyles, ISvgPreloaderStyles } from './components';\n\nexport const useStyles = createThemedStyles('ThemedPreloader', {\n root: {\n display: 'flex',\n },\n\n dots: {},\n\n default: {},\n\n logo: {},\n\n currentColor: {\n color: 'currentColor',\n },\n});\n\nexport type IThemedPreloaderStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakDotsPreloader: IDotsPreloaderStyles;\n tweakSvgPreloader: ISvgPreloaderStyles;\n }\n>;\n","import { FC } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { SvgPreloader, DotsPreloader } from './components';\nimport { IPreloaderSvgType } from './types';\nimport { useStyles, IThemedPreloaderStyles } from './ThemedPreloader.styles';\n\nexport interface IThemedPreloaderProps extends ICommonProps<IThemedPreloaderStyles> {\n /** @default 'default' */\n type?: 'dots' | IPreloaderSvgType;\n /** @default false */\n useCurrentColor?: boolean;\n}\n\nexport const ThemedPreloader: FC<IThemedPreloaderProps> = ({\n type = 'default',\n useCurrentColor = false,\n data,\n testId,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakDotsPreloaderStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakDotsPreloader',\n currentComponentName: 'ThemedPreloader',\n });\n\n const tweakSvgPreloaderStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakSvgPreloader',\n currentComponentName: 'ThemedPreloader',\n });\n\n return (\n <div\n className={clsx(classes.root, classes[type], {\n [classes.currentColor]: useCurrentColor,\n })}\n {...addDataAttributes(data, testId)}\n >\n {type === 'dots' ? (\n <DotsPreloader tweakStyles={tweakDotsPreloaderStyles} />\n ) : (\n <SvgPreloader type={type} tweakStyles={tweakSvgPreloaderStyles} />\n )}\n </div>\n );\n};\n","import { animations, createThemedStyles, ITweakStyles } from '../../theme';\nimport { IThemedPreloaderStyles } from '../ThemedPreloader';\nimport { IButtonSize } from './types';\n\nexport const useStyles = createThemedStyles('Button', {\n root: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n outline: 'none',\n boxSizing: 'border-box',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color, color, box-shadow, border-color',\n maxWidth: '100%',\n border: [1, 'solid', 'transparent'],\n position: 'relative',\n boxShadow: 'none',\n\n '&[disabled]': {\n cursor: 'default',\n pointerEvents: 'none',\n },\n },\n\n primary: {},\n secondary: {},\n outline: {},\n warning: {},\n destructive: {},\n text: {},\n custom: {},\n\n children: {},\n\n icon: {\n width: 20,\n height: 20,\n flexShrink: 0,\n },\n\n iconFromLeft: {\n flexDirection: 'row',\n gap: 6,\n\n '& $icon': {\n marginLeft: -4,\n },\n },\n\n iconFromRight: {\n flexDirection: 'row-reverse',\n gap: 6,\n\n '& $icon': {\n marginRight: -4,\n },\n },\n\n onlyIcon: {},\n\n withIcon: {},\n\n s: {\n padding: [0, 12],\n height: 32,\n fontSize: 14,\n letterSpacing: 0.15,\n\n '&$onlyIcon': {\n padding: 0,\n width: 32,\n },\n\n '& $icon': {\n width: 16,\n height: 16,\n },\n\n '& $iconFromLeft': {\n gap: 4,\n },\n\n '& $iconFromRight': {\n gap: 4,\n },\n },\n\n m: {\n padding: [0, 12],\n height: 42,\n fontSize: 16,\n\n '& $iconFromLeft': {\n gap: 6,\n },\n\n '& $iconFromRight': {\n gap: 6,\n },\n\n '&$onlyIcon': {\n padding: 0,\n width: 42,\n },\n },\n\n l: {\n padding: [0, 16],\n height: 48,\n fontSize: 16,\n\n '& $iconFromLeft': {\n gap: 6,\n },\n\n '& $iconFromRight': {\n gap: 6,\n },\n\n '&$onlyIcon': {\n padding: 0,\n width: 48,\n },\n },\n\n xl: {\n padding: [0, 20],\n height: 56,\n fontSize: 16,\n\n '&$onlyIcon': {\n padding: 0,\n width: 56,\n },\n\n '& $iconFromLeft': {\n gap: 8,\n },\n\n '& $iconFromRight': {\n gap: 8,\n },\n },\n\n fullWidth: {\n minWidth: 'auto',\n width: '100%',\n },\n\n inline: {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n },\n\n active: {},\n\n content: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n },\n\n loader: {\n display: 'none',\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n },\n\n loading: {\n '& $content': {\n visibility: 'hidden',\n },\n\n '& $loader': {\n display: 'block',\n },\n },\n\n disabled: {},\n});\n\nconst dotsPreloaderStyles: IThemedPreloaderStyles = {\n tweakDotsPreloader: {\n fadedDot: {\n width: 6,\n height: 6,\n },\n },\n};\n\nexport const getPreloaderStyles = (size: IButtonSize): IThemedPreloaderStyles | undefined =>\n size === 's' || size === 'm' ? dotsPreloaderStyles : undefined;\n\nexport type IButtonStyles = ITweakStyles<\n typeof useStyles,\n { tweakPreloader: IThemedPreloaderStyles }\n>;\n","import { ReactNode, ButtonHTMLAttributes, MouseEvent, forwardRef } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps, IDomElementInteractions } from '../../types';\nimport { renderIcon, IIcon } from '../Icon';\nimport { ThemedPreloader, IThemedPreloaderProps } from '../ThemedPreloader';\nimport { IButtonSize, IButtonView } from './types';\nimport { useStyles, IButtonStyles, getPreloaderStyles } from './Button.styles';\n\nexport interface IButtonProps\n extends ICommonProps<IButtonStyles>,\n IDomElementInteractions<HTMLButtonElement> {\n children?: ReactNode;\n /** @default 'button' */\n type?: ButtonHTMLAttributes<unknown>['type'];\n /** @default 'l' */\n size?: IButtonSize;\n /** @default 'primary' */\n view?: IButtonView;\n /** @default false */\n shouldSkipTabNavigation?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isFullWidth?: boolean;\n /**\n * Нужно ли убирать скругление у кнопки слева\n * @default false\n */\n isInline?: boolean;\n /**\n * Нужно ли показать лоадер и заблокировать кнопку\n * @default false\n */\n isLoading?: boolean;\n /** @default false */\n isActive?: boolean;\n icon?: IIcon;\n /** @default 'left' */\n iconPosition?: 'left' | 'right';\n /** @default 'dots' */\n preloaderType?: IThemedPreloaderProps['type'];\n onClick?: (event: MouseEvent<HTMLButtonElement>) => void | Promise<void>;\n onMouseDown?: (event: MouseEvent<HTMLButtonElement>) => void | Promise<void>;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, IButtonProps>(function Button(\n {\n type = 'button',\n children,\n size = 'l',\n view = 'primary',\n isFullWidth = false,\n isInline = false,\n isDisabled = false,\n isActive = false,\n isLoading = false,\n shouldSkipTabNavigation = false,\n data,\n testId,\n tweakStyles,\n icon,\n iconPosition = 'left',\n preloaderType = 'dots',\n ...interactions\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakPreloaderStyles = useTweakStyles({\n innerStyles: getPreloaderStyles(size),\n tweakStyles,\n className: 'tweakPreloader',\n currentComponentName: 'Button',\n });\n\n const hasIcon = isReactNodeNotEmpty(icon);\n const hasChildren = isReactNodeNotEmpty(children);\n const hasNoAction = isDisabled || isLoading;\n\n return (\n <button\n ref={ref}\n type={type}\n className={clsx(classes.root, classes[size], classes[view], {\n [classes.disabled]: isDisabled,\n [classes.fullWidth]: isFullWidth,\n [classes.inline]: isInline,\n [classes.active]: isActive,\n [classes.loading]: isLoading,\n [classes.onlyIcon]: hasIcon && !hasChildren,\n })}\n tabIndex={shouldSkipTabNavigation ? -1 : undefined}\n disabled={hasNoAction}\n {...interactions}\n {...addDataAttributes(data, testId)}\n >\n <span\n className={clsx(classes.content, {\n [classes.iconFromRight]: hasChildren && hasIcon && iconPosition === 'right',\n [classes.iconFromLeft]: hasChildren && hasIcon && iconPosition === 'left',\n })}\n >\n {hasIcon && (\n <span className={classes.icon}>{isReactNodeNotEmpty(icon) && renderIcon(icon)}</span>\n )}\n {hasChildren && (\n <span className={clsx(classes.children, hasIcon && classes.withIcon)}>{children}</span>\n )}\n </span>\n\n {isLoading && (\n <span className={classes.loader}>\n <ThemedPreloader\n type={preloaderType}\n useCurrentColor\n tweakStyles={tweakPreloaderStyles}\n />\n </span>\n )}\n </button>\n );\n});\n","import { createThemedStyles, ITweakStyles } from '../../theme';\nimport { ICheckboxSizes } from './types';\n\nexport const useStyles = createThemedStyles('Checkbox', {\n root: {\n position: 'relative',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: 14,\n width: 'fit-content',\n },\n\n checked: {},\n\n invalid: {},\n\n disabled: {\n cursor: 'default',\n pointerEvents: 'none',\n },\n\n input: {\n width: 1,\n height: 1,\n position: 'absolute',\n opacity: 0,\n },\n\n children: {\n display: 'flex',\n alignItems: 'center',\n },\n\n check: {\n width: 18,\n height: 18,\n borderRadius: 2,\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxSizing: 'border-box',\n },\n\n labelPositionLeft: {\n flexDirection: 'row-reverse',\n },\n});\n\nexport type ICheckboxStyles = ITweakStyles<typeof useStyles, ICheckboxSizes>;\n","import { ReactNode, ChangeEvent, KeyboardEvent } from 'react';\nimport clsx from 'clsx';\nimport {\n getSelectKeyHandler,\n isNotEmpty,\n isReactNodeNotEmpty,\n addDataAttributes,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { ICheckboxSize } from './types';\nimport { useStyles, ICheckboxStyles } from './Checkbox.styles';\n\nexport interface ICheckboxProps<V> extends ICommonProps<ICheckboxStyles> {\n value?: V;\n children?: ReactNode;\n size?: ICheckboxSize;\n /** @default false */\n isChecked?: boolean;\n /** @default false */\n isSemiChecked?: boolean;\n /** @default false */\n isInvalid?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isReadonly?: boolean;\n /** @default 'right' */\n labelPosition?: 'right' | 'left';\n onSelect?: (\n value: { value?: V; isSelected: boolean },\n event: ChangeEvent<HTMLInputElement> | KeyboardEvent,\n ) => void;\n}\n\nexport function Checkbox<V>({\n value,\n children,\n size,\n isChecked = false,\n isSemiChecked = false,\n isInvalid = false,\n isDisabled = false,\n isReadonly = false,\n labelPosition = 'right',\n data,\n testId,\n tweakStyles,\n onSelect,\n}: ICheckboxProps<V>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const hasAction = !isDisabled && !isReadonly;\n const isSelected = isChecked || isSemiChecked;\n\n const onToggle = (event: ChangeEvent<HTMLInputElement> | KeyboardEvent) =>\n onSelect?.({ value, isSelected: !isSelected }, event);\n\n return (\n <label\n className={clsx(classes.root, isNotEmpty(size) && classes[size], {\n [classes.checked]: isSelected,\n [classes.invalid]: isInvalid,\n [classes.disabled]: isDisabled,\n [classes.labelPositionLeft]: labelPosition === 'left',\n })}\n {...addDataAttributes(data, testId)}\n >\n <input\n className={classes.input}\n type=\"checkbox\"\n checked={isSelected}\n disabled={isDisabled}\n readOnly={isReadonly}\n {...(hasAction && {\n onChange: onToggle,\n onKeyDown: getSelectKeyHandler(onToggle),\n })}\n />\n <div className={classes.check}>\n {isSelected && <Icon type={isSemiChecked ? 'minus' : 'check'} />}\n </div>\n {isReactNodeNotEmpty(children) && <div className={classes.children}>{children}</div>}\n </label>\n );\n}\n","import { rgba } from '../../helpers';\nimport { animations, colors, createThemedStyles, ITweakStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('CloseButton', {\n root: {\n width: 40,\n height: 40,\n maxWidth: '100%',\n maxHeight: '100%',\n padding: 5,\n color: colors.FONT_MEDIUM,\n border: 0,\n borderRadius: '50%',\n appearance: 'none',\n backgroundColor: 'transparent',\n cursor: 'pointer',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color',\n\n '&:hover': {\n backgroundColor: rgba(colors.BORDER_MAIN, 0.5),\n },\n\n '&:focus': {\n backgroundColor: colors.GREY_FOCUS,\n },\n\n '&:active': {\n backgroundColor: rgba(colors.FONT_DISABLED, 0.5),\n },\n },\n});\n\nexport type ICloseButtonStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { ICloseButtonStyles, useStyles } from './CloseButton.styles';\n\nexport interface ICloseButtonProps extends ICommonProps<ICloseButtonStyles> {\n /** @default 'close' */\n icon?: 'close' | 'close-large' | 'close-window';\n onClose?: () => void;\n}\n\n/** @deprecated */\nexport const CloseButton: FC<ICloseButtonProps> = ({\n tweakStyles,\n testId,\n data,\n icon = 'close',\n onClose,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <button\n type=\"button\"\n className={classes.root}\n onClick={onClose}\n {...addDataAttributes(data, testId)}\n >\n <Icon type={icon} />\n </button>\n );\n};\n","import { colors, ITweakStyles, createThemedStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('CssBaseline', {\n '@global html, body': {\n fontFamily: 'Arial, sans-serif',\n color: colors.FONT_MAIN,\n padding: 0,\n margin: 0,\n },\n\n '@global': {},\n\n root: {},\n});\n\nexport type ICssBaselineStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { useStyles, ICssBaselineStyles } from './CssBaseline.styles';\n\nexport type ICssBaselineProps = ICommonProps<ICssBaselineStyles>;\n\nexport const CssBaseline: FC<ICssBaselineProps> = ({ data, testId, tweakStyles }) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return <div className={classes.root} {...addDataAttributes(data, testId)} />;\n};\n","import { createThemedStyles, ITweakStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('WithMessages', {\n withMessages: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n position: 'relative',\n },\n\n error: {\n color: 'red',\n },\n\n info: {\n color: 'gray',\n },\n\n horizontal: {\n display: 'flex',\n\n '& > *': {\n flexGrow: 1,\n\n '&:not(:first-child)': {\n marginLeft: -1,\n },\n },\n },\n\n vertical: {\n display: 'flex',\n flexDirection: 'column',\n\n '& > *:not(:first-child)': {\n marginTop: -1,\n },\n },\n\n message: {\n fontSize: 12,\n },\n\n children: {},\n});\n\nexport type IWithMessagesStyles = ITweakStyles<typeof useStyles>;\n","import { forwardRef, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n addDataTestId,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { IWithMessagesStyles, useStyles } from './WithMessages.styles';\n\nexport interface IWithMessagesProps extends ICommonProps<IWithMessagesStyles> {\n children: ReactNode;\n infoMessage?: ReactNode;\n errorMessage?: ReactNode;\n controlsDirection?: 'horizontal' | 'vertical';\n}\n\nexport const WithMessages = forwardRef<HTMLDivElement, IWithMessagesProps>(function WithMessages(\n { children, infoMessage, errorMessage, controlsDirection, tweakStyles, testId, data },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const shouldShowError = isReactNodeNotEmpty(errorMessage);\n const shouldShowInfo = isReactNodeNotEmpty(infoMessage) && !shouldShowError;\n\n return (\n <div\n ref={ref}\n className={classes.withMessages}\n data-invalid={shouldShowError ? true : undefined}\n {...addDataAttributes(data, testId)}\n >\n {isReactNodeNotEmpty(children) && (\n <div\n className={clsx(classes.children, {\n [classes.horizontal]: controlsDirection === 'horizontal',\n [classes.vertical]: controlsDirection === 'vertical',\n })}\n >\n {children}\n </div>\n )}\n {(shouldShowError || shouldShowInfo) && (\n <div className={classes.message}>\n {shouldShowError && (\n <div className={classes.error} {...addDataTestId(testId, 'error')}>\n {errorMessage}\n </div>\n )}\n {shouldShowInfo && (\n <div className={classes.info} {...addDataTestId(testId, 'info')}>\n {infoMessage}\n </div>\n )}\n </div>\n )}\n </div>\n );\n});\n","import { isObject } from '@true-engineering/true-react-platform-helpers';\nimport { IIcon } from '../Icon';\nimport { IControlWrapperIcon } from './types';\n\nexport const isControlWrapperIcon = (\n iconItem: IIcon | IControlWrapperIcon,\n): iconItem is IControlWrapperIcon => isObject(iconItem) && 'iconComponent' in iconItem;\n\nexport const convertToControlWrapperIcon = (\n iconItem: IIcon | IControlWrapperIcon,\n): IControlWrapperIcon => (isControlWrapperIcon(iconItem) ? iconItem : { iconComponent: iconItem });\n","import { animations, createThemedStyles, dimensions, ITweakStyles } from '../../theme';\nimport { IThemedPreloaderStyles } from '../ThemedPreloader';\nimport { IControlWrapperSizes } from './types';\n\nconst { CONTROL, Z_INDEX } = dimensions;\n\nexport const useStyles = createThemedStyles('ControlWrapper', {\n controlWrapper: {\n '--control-height': `${CONTROL.HEIGHT - 2}px`, // borders\n '--control-padding': `${CONTROL.PADDING}px`,\n '--icon-size': `${CONTROL.ICON_SIZE}px`,\n '--icon-inner-size': `${CONTROL.ICON_INNER_SIZE}px`,\n '--icon-gap': `${CONTROL.ICON_GAP}px`,\n display: 'flex',\n width: '100%',\n backgroundColor: 'white',\n position: 'relative',\n border: ['solid', 1, 'gray'],\n borderRadius: 8,\n boxSizing: 'border-box',\n zIndex: 0,\n },\n\n disabled: {},\n\n focused: {\n position: 'relative',\n zIndex: Z_INDEX.CONTROL_FOCUS,\n },\n\n invalid: {\n zIndex: Z_INDEX.CONTROL_INVALID,\n },\n\n withValue: {},\n\n loading: {},\n\n minContent: {\n width: 'min-content',\n },\n\n label: {\n position: 'absolute',\n pointerEvents: 'none',\n left: 'var(--control-padding)',\n top: 'calc(var(--control-height) / 2)',\n transformOrigin: 'top left',\n transform: 'translateY(-50%)',\n transition: animations.defaultTransition,\n transitionProperty: 'transform, color',\n fontSize: 16,\n zIndex: 1,\n },\n\n activeLabel: {},\n\n requiredLabel: {\n '&:after': {\n content: '\"\"',\n display: 'block',\n position: 'absolute',\n top: 0,\n right: -8,\n width: 6,\n height: 6,\n borderRadius: '50%',\n backgroundColor: 'orange',\n },\n },\n\n disabledLabel: {},\n\n wrapper: {\n display: 'flex',\n flexGrow: 1,\n minWidth: 0, // Нужно для селекта\n textAlign: 'left',\n },\n\n controls: {\n display: 'flex',\n marginLeft: 'auto',\n flexShrink: 0,\n },\n\n startControls: {\n paddingLeft: 'var(--control-padding)',\n },\n\n icon: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: 'var(--icon-size)',\n width: 'var(--icon-size)',\n height: '100%',\n flexShrink: 0,\n cursor: 'default',\n\n '&:last-child': {\n paddingRight: 6,\n },\n },\n\n iconInner: {\n width: 'var(--icon-inner-size)',\n },\n\n customIcon: {\n width: 'unset',\n\n '& $iconInner': {\n width: 'unset',\n },\n },\n\n startIcon: {},\n\n endIcon: {},\n\n activeIcon: {\n cursor: 'pointer',\n outline: 'none',\n },\n\n clearIcon: {\n '& $iconInner': {\n width: 'var(--icon-inner-size)',\n },\n },\n\n loader: {\n '& $iconInner': {\n width: 'var(--icon-inner-size)',\n },\n },\n\n withStartControls: {},\n\n /* groupPositions */\n 'placement-top': {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n 'placement-bottom': {\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n },\n\n 'placement-top-left': {\n borderTopRightRadius: 0,\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n 'placement-top-right': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n 'placement-bottom-left': {\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n 'placement-bottom-right': {\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n borderBottomLeftRadius: 0,\n },\n\n 'placement-left': {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n 'placement-right': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n },\n\n 'placement-middle': {\n borderRadius: 0,\n },\n});\n\nexport type IControlWrapperStyles = ITweakStyles<\n typeof useStyles,\n { tweakPreloader: IThemedPreloaderStyles } & IControlWrapperSizes\n>;\n","import { CSSProperties, FC, ReactNode, useState } from 'react';\nimport clsx from 'clsx';\nimport {\n addClickHandler,\n addDataAttributes,\n addDataTestId,\n getArray,\n IMaybeArray,\n isArrayNotEmpty,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useResizeRef, useTweakStyles } from '../../hooks';\nimport { IClickHandlerEvent, ICommonProps } from '../../types';\nimport { IIcon, renderIcon } from '../Icon';\nimport { ThemedPreloader } from '../ThemedPreloader';\nimport { convertToControlWrapperIcon } from './helpers';\nimport { IControlWrapperIcon, IControlWrapperSize, IGroupPlacement } from './types';\nimport { IControlWrapperStyles, useStyles } from './ControlWrapper.styles';\n\nexport interface IControlWrapperProps extends ICommonProps<IControlWrapperStyles> {\n children: ReactNode;\n label?: ReactNode;\n /** @deprecated */\n icon?: IMaybeArray<IIcon | IControlWrapperIcon>;\n startIcon?: IMaybeArray<IIcon | IControlWrapperIcon>;\n endIcon?: IMaybeArray<IIcon | IControlWrapperIcon>;\n size?: IControlWrapperSize;\n groupPlacement?: IGroupPlacement;\n /** @default false */\n isInvalid?: boolean;\n /** @default false */\n isFocused?: boolean;\n /** @default false */\n hasValue?: boolean;\n /** @default false */\n isRequired?: boolean;\n /** @default false */\n isFullWidth?: boolean;\n /** @default false */\n isLoading?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isActive?: boolean;\n onClear?: (event: IClickHandlerEvent) => void;\n}\n\nexport const ControlWrapper: FC<IControlWrapperProps> = ({\n label,\n icon,\n startIcon,\n endIcon = icon,\n groupPlacement,\n isInvalid,\n isFocused,\n isRequired,\n isLoading,\n isFullWidth,\n isActive,\n isDisabled,\n hasValue,\n size,\n testId,\n children,\n tweakStyles,\n data,\n onClear,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const [startControlsWidth, setStartControlsWidth] = useState<number>();\n\n const startIcons = getArray(startIcon).map(convertToControlWrapperIcon);\n const endIcons = getArray(endIcon).map(convertToControlWrapperIcon);\n\n const hasStartIcons = isArrayNotEmpty(startIcons);\n const hasEndIcons = !isLoading && isArrayNotEmpty(endIcons);\n const hasClearButton = !isDisabled && !isLoading && hasValue && isNotEmpty(onClear);\n const hasEndControls = hasEndIcons || hasClearButton || isLoading;\n\n const tweakPreloaderStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakPreloader',\n currentComponentName: 'ControlWrapper',\n });\n\n const startControlsRef = useResizeRef({\n onTargetChange: (target) => setStartControlsWidth(target.clientWidth),\n });\n\n const renderIconControl = (\n { key, iconComponent, onClick, shouldResetSize = false }: IControlWrapperIcon,\n iconType: 'start' | 'end' | 'clear',\n index?: number,\n ) => (\n <div\n key={key ?? index}\n className={clsx(classes.icon, classes[`${iconType}Icon`], {\n [classes.activeIcon]: !isDisabled && isNotEmpty(onClick),\n [classes.customIcon]: shouldResetSize,\n })}\n {...addClickHandler(onClick, !isDisabled)}\n {...addDataTestId(testId, `${iconType}-icon`)}\n >\n <div className={classes.iconInner}>{renderIcon(iconComponent)}</div>\n </div>\n );\n\n return (\n <div\n className={clsx(\n classes.controlWrapper,\n isNotEmpty(groupPlacement) && classes[`placement-${groupPlacement}`],\n isNotEmpty(size) && classes[size],\n {\n [classes.invalid]: isInvalid,\n [classes.focused]: isFocused,\n [classes.withValue]: hasValue,\n [classes.disabled]: isDisabled,\n [classes.loading]: isLoading,\n [classes.minContent]: !isFullWidth,\n [classes.withStartControls]: hasStartIcons,\n },\n )}\n style={\n hasStartIcons\n ? ({ '--start-controls-width': `${startControlsWidth}px` } as CSSProperties)\n : undefined\n }\n {...addDataAttributes(data, testId)}\n >\n {isReactNodeNotEmpty(label) && (\n <div\n className={clsx(classes.label, {\n [classes.requiredLabel]: isRequired,\n [classes.disabledLabel]: isDisabled,\n [classes.activeLabel]: isFocused || hasValue || isActive,\n })}\n >\n {label}\n </div>\n )}\n <div className={classes.wrapper}>\n {hasStartIcons && (\n <div className={clsx(classes.controls, classes.startControls)} ref={startControlsRef}>\n {startIcons.map((iconProps, index) => renderIconControl(iconProps, 'start', index))}\n </div>\n )}\n\n {children}\n\n {hasEndControls && (\n <div className={classes.controls}>\n {hasClearButton &&\n renderIconControl({ iconComponent: 'close', onClick: onClear }, 'clear')}\n\n {hasEndIcons &&\n endIcons.map((iconProps, index) => renderIconControl(iconProps, 'end', index))}\n\n {isLoading && (\n <div\n className={clsx(classes.icon, classes.loader)}\n {...addDataTestId(testId, 'loading')}\n >\n <div className={classes.iconInner}>\n <ThemedPreloader tweakStyles={tweakPreloaderStyles} />\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n};\n","export const GROUP_PLACEMENTS = [\n 'left',\n 'right',\n 'middle',\n 'top',\n 'bottom',\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n] as const;\n","import { createThemedStyles, ITweakStyles } from '../../theme';\nimport { IControlWrapperStyles } from '../ControlWrapper';\nimport { IWithMessagesStyles } from '../WithMessages';\n\nconst PADDING_WITH_UNITS = 8;\n\nexport const useStyles = createThemedStyles('Input', {\n inputContent: {\n height: 'var(--control-height)',\n padding: [0, 'var(--control-padding)'],\n fontSize: 16,\n fontFamily: 'inherit',\n },\n\n input: {\n extend: 'inputContent',\n width: '100%',\n outline: 'none',\n outlineStyle: 'none',\n boxSizing: 'border-box',\n border: 'none',\n background: 'none',\n color: 'black',\n\n '&[readonly]': {\n cursor: 'default',\n },\n\n '&::placeholder': {\n opacity: 1,\n },\n\n '&::-webkit-date-and-time-value': {\n textAlign: 'left',\n },\n\n MozAppearance: 'textfield',\n '&::-webkit-inner-spin-button,&::-webkit-outer-spin-button,&::-webkit-calendar-picker-indicator':\n {\n display: 'none',\n WebkitAppearance: 'none',\n margin: 0,\n },\n },\n\n defaultWrapper: {\n display: 'flex',\n flexGrow: 1,\n },\n\n autoSizeWrapper: {\n position: 'relative',\n minWidth: 0,\n zIndex: 0,\n },\n\n autoSized: {\n position: 'absolute',\n top: 0,\n left: 0,\n height: '100%',\n },\n\n withUnits: {\n extend: 'autoSized',\n paddingRight: `calc(${PADDING_WITH_UNITS}px + var(--units-width) - 1px)`,\n\n '& + $fakeValue': {\n paddingRight: PADDING_WITH_UNITS,\n },\n },\n\n withLabel: {},\n\n withValue: {},\n\n fakeValue: {\n extend: 'inputContent',\n visibility: 'hidden',\n maxWidth: '100%',\n overflow: 'hidden',\n minWidth: 8,\n whiteSpace: 'nowrap',\n },\n\n units: {\n alignSelf: 'center',\n paddingRight: 'var(--control-padding)',\n },\n\n focusedInput: {},\n\n disabledInput: {},\n\n invalidInput: {},\n});\n\nexport type IInputStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakControlWrapper: IControlWrapperStyles;\n tweakWithMessages: IWithMessagesStyles;\n }\n>;\n","import {\n ChangeEvent,\n CSSProperties,\n FocusEvent,\n forwardRef,\n InputHTMLAttributes,\n MutableRefObject,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport InputMask, { Props as ReactInputMaskBaseProps } from 'react-input-mask';\nimport clsx from 'clsx';\nimport {\n addDataTestId,\n isArrayLikeNotEmpty,\n isNotEmpty,\n isReactNodeNotEmpty,\n isStringNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useMergedRefs, useResizeRef, useTweakStyles } from '../../hooks';\nimport { IClickHandlerEvent, ICommonProps } from '../../types';\nimport { ControlWrapper, IControlWrapperProps } from '../ControlWrapper';\nimport { IChangeInputEvent } from './types';\nimport { IInputStyles, useStyles } from './Input.styles';\n\nexport interface IInputBaseProps\n extends ICommonProps<IInputStyles>,\n Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size' | 'className'>,\n Pick<\n IControlWrapperProps,\n | 'label'\n | 'icon'\n | 'endIcon'\n | 'startIcon'\n | 'size'\n | 'groupPlacement'\n | 'isInvalid'\n | 'isRequired'\n | 'isLoading'\n | 'isDisabled'\n >,\n Pick<\n Partial<ReactInputMaskBaseProps>,\n 'mask' | 'maskPlaceholder' | 'alwaysShowMask' | 'beforeMaskedStateChange'\n > {\n value?: string;\n units?: ReactNode;\n /** @default false */\n isReadonly?: boolean;\n /** @default false */\n isActive?: boolean;\n /** @default false */\n isClearable?: boolean;\n /** @default false */\n shouldFocusOnMount?: boolean;\n /** @default false */\n isAutoSized?: boolean;\n /** @default false */\n shouldAlwaysShowPlaceholder?: boolean;\n onChange: (value: string, event: IChangeInputEvent, eventType: 'change' | 'clear') => void;\n}\n\nexport const InputBase = forwardRef<HTMLInputElement, IInputBaseProps>(function InputBase(\n {\n value = '',\n placeholder,\n label,\n type = 'text',\n isDisabled,\n autoComplete,\n inputMode: initialInputMode,\n isReadonly,\n isInvalid,\n isActive,\n isClearable,\n isAutoSized,\n name,\n tweakStyles,\n maxLength,\n shouldFocusOnMount,\n units,\n testId,\n tabIndex,\n shouldAlwaysShowPlaceholder,\n onChange,\n onPaste,\n onFocus,\n onBlur,\n onKeyDown,\n // Пропсы react-input-mask\n mask,\n maskPlaceholder,\n alwaysShowMask,\n beforeMaskedStateChange,\n // Пропсы ControlWrapper\n data,\n groupPlacement,\n startIcon,\n icon,\n endIcon = icon,\n isLoading,\n isRequired,\n size,\n children,\n ...inputProps\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakControlWrapperStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakControlWrapper',\n currentComponentName: 'Input',\n });\n\n const [isFocused, setFocused] = useState(false);\n const [unitsWidth, setUnitsWidth] = useState<number>();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const mergedRef = useMergedRefs([ref, inputRef]);\n\n // Try to guess input-mode if possible\n const inputMode: IInputBaseProps['inputMode'] =\n initialInputMode ??\n (['email', 'tel', 'url'].includes(type) ? (type as 'email' | 'tel' | 'url') : undefined);\n\n const hasFocus = isFocused || isActive;\n const hasValue = isArrayLikeNotEmpty(value);\n const hasUnits = isReactNodeNotEmpty(units);\n const hasPlaceholder =\n (!isReactNodeNotEmpty(label) || hasFocus || shouldAlwaysShowPlaceholder) &&\n isStringNotEmpty(placeholder);\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange(event.currentTarget.value, event, 'change');\n };\n\n const handleFocus = (event: FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n onFocus?.(event);\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n onBlur?.(event);\n };\n\n // для SmartInput нужен event, иначе onChange не вызовется\n const handleInputClear = async (event: IClickHandlerEvent) => {\n // await не убирать (важно для порядка выполнения (сначала onChange, затем focus)\n await onChange('', event, 'clear');\n inputRef.current?.focus();\n };\n\n const unitsRef = useResizeRef({\n onTargetChange: (target) => setUnitsWidth(target.clientWidth),\n });\n\n const props: InputHTMLAttributes<HTMLInputElement> = {\n className: clsx(classes.input, {\n [classes.withUnits]: hasUnits,\n [classes.withValue]: hasValue,\n [classes.withLabel]: isReactNodeNotEmpty(label),\n [classes.autoSized]: isAutoSized,\n [classes.focusedInput]: isFocused,\n [classes.disabledInput]: isDisabled,\n [classes.invalidInput]: isInvalid,\n }),\n style:\n hasUnits && hasValue ? ({ '--units-width': `${unitsWidth}px` } as CSSProperties) : undefined,\n value,\n type,\n autoComplete,\n inputMode,\n disabled: isDisabled,\n placeholder: hasPlaceholder ? placeholder : undefined,\n name,\n maxLength,\n readOnly: isReadonly,\n tabIndex,\n onKeyDown,\n onPaste,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onChange: handleChange,\n ...addDataTestId(testId),\n ...inputProps,\n };\n\n useEffect(() => {\n // It works much better than autoFocus for mobile devices\n if (shouldFocusOnMount) {\n inputRef.current?.focus();\n }\n }, [shouldFocusOnMount]);\n\n return (\n <ControlWrapper\n label={label}\n isDisabled={isDisabled}\n isFocused={hasFocus}\n isActive={hasPlaceholder}\n isInvalid={isInvalid}\n hasValue={hasValue}\n isFullWidth={!isAutoSized}\n tweakStyles={tweakControlWrapperStyles}\n onClear={isClearable && hasValue ? handleInputClear : undefined}\n data={data}\n groupPlacement={groupPlacement}\n startIcon={startIcon}\n endIcon={endIcon}\n isLoading={isLoading}\n isRequired={isRequired}\n size={size}\n >\n <div\n className={clsx(classes.defaultWrapper, {\n [classes.autoSizeWrapper]: hasUnits || isAutoSized,\n })}\n >\n {isNotEmpty(mask) ? (\n <InputMask\n ref={mergedRef as unknown as MutableRefObject<InputMask>}\n mask={mask}\n maskPlaceholder={maskPlaceholder}\n alwaysShowMask={alwaysShowMask}\n beforeMaskedStateChange={beforeMaskedStateChange}\n {...props}\n />\n ) : (\n <input ref={mergedRef} {...props} />\n )}\n\n {(hasUnits || isAutoSized) && <div className={classes.fakeValue}>{value}</div>}\n {hasUnits && hasValue && (\n <div className={classes.units} ref={unitsRef}>\n {units}\n </div>\n )}\n </div>\n {children}\n </ControlWrapper>\n );\n});\n","import { forwardRef } from 'react';\nimport { getTestId } from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { IWithMessagesProps, WithMessages } from '../WithMessages';\nimport { IInputBaseProps, InputBase } from './InputBase';\n\nexport interface IInputProps\n extends IInputBaseProps,\n Pick<IWithMessagesProps, 'infoMessage' | 'errorMessage'> {}\n\nexport const Input = forwardRef<HTMLInputElement, IInputProps>(function Input(\n { infoMessage, errorMessage, isInvalid, testId, tweakStyles, ...inputProps },\n ref,\n) {\n const tweakWithMessagesStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakWithMessages',\n currentComponentName: 'Input',\n });\n\n return (\n <WithMessages\n errorMessage={errorMessage}\n infoMessage={infoMessage}\n testId={getTestId(testId, 'wrapper')}\n tweakStyles={tweakWithMessagesStyles}\n >\n <InputBase\n {...inputProps}\n ref={ref}\n testId={testId}\n tweakStyles={tweakStyles}\n isInvalid={isInvalid}\n />\n </WithMessages>\n );\n});\n","export const EMPTY_DATE_INPUT_VALUE = '__.__.____';\nexport const EMPTY_DATE_RANGE_INPUT_VALUE = `${EMPTY_DATE_INPUT_VALUE} - ${EMPTY_DATE_INPUT_VALUE}`;\n","import { createThemedStyles, ITweakStyles } from '../../theme';\nimport { IInputStyles } from '../Input';\n\nexport const useStyles = createThemedStyles('DateInput', {\n root: {\n width: '100%',\n height: '100%',\n cursor: 'pointer',\n position: 'relative',\n },\n});\n\nexport type IDateInputStyles = ITweakStyles<typeof useStyles, { tweakInput: IInputStyles }>;\n","import { ChangeEvent, forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { IChangeInputEvent, IInputProps, Input } from '../Input';\nimport { EMPTY_DATE_INPUT_VALUE, EMPTY_DATE_RANGE_INPUT_VALUE } from './constants';\nimport { IDateInputStyles, useStyles } from './DateInput.styles';\n\nexport interface IDateInputProps\n extends Omit<IInputProps, 'value' | 'beforeMaskedStateChange' | 'onChange' | 'tweakStyles'>,\n ICommonProps<IDateInputStyles> {\n date?: string;\n /** @default '' */\n startDate?: string;\n /** @default '' */\n endDate?: string;\n className?: string;\n /** @default false */\n isRange?: boolean;\n // react-datepicker ожидает event первым аргументом\n onChange?: (event: IChangeInputEvent, value: string) => void;\n}\n\nexport const DateInput = forwardRef<HTMLInputElement, IDateInputProps>(function DateInput(\n {\n date,\n startDate = '',\n endDate = '',\n mask,\n className,\n placeholder,\n data,\n isRange = false,\n tweakStyles,\n onClick,\n onChange,\n ...inputProps\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakInputStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakInput',\n currentComponentName: 'DateInput',\n });\n\n const beforeMaskedStateChange: IInputProps['beforeMaskedStateChange'] = ({ nextState }) => {\n // Если в инпуте отсутствует введенное значение, то выставляем\n // пустую строку для корректной работы react-datepicker\n if (\n nextState.value === EMPTY_DATE_INPUT_VALUE ||\n nextState.value === EMPTY_DATE_RANGE_INPUT_VALUE\n ) {\n return { value: '', selection: { start: 0, end: 0 } };\n }\n return nextState;\n };\n\n const handleChange: IInputProps['onChange'] = (value, event) => {\n // Событие click срабатывает только при нажатии на кнопку очистки\n if (event.type === 'click') {\n // react-datepicker ожидает пустую строку в event.target.value\n (event as ChangeEvent<HTMLInputElement>).target.value = '';\n }\n onChange?.(event, value);\n };\n\n return (\n <div className={clsx(classes.root, className)} {...addDataAttributes(data)} onClick={onClick}>\n <Input\n {...inputProps}\n ref={ref}\n value={isRange ? `${startDate}${endDate}` : date}\n mask={mask ?? (isRange ? '99.99.9999 - 99.99.9999' : '99.99.9999')}\n placeholder={\n placeholder ?? (isRange ? EMPTY_DATE_RANGE_INPUT_VALUE : EMPTY_DATE_INPUT_VALUE)\n }\n tweakStyles={tweakInputStyles}\n onChange={handleChange}\n beforeMaskedStateChange={beforeMaskedStateChange}\n />\n </div>\n );\n});\n","import ReactDatePicker, { DatePickerProps } from 'react-datepicker';\nimport { doNothing } from '@true-engineering/true-react-platform-helpers';\n\nexport class DatePickerBase extends ReactDatePicker {\n public handleClickOutside;\n\n constructor(props: DatePickerProps) {\n super(props);\n this.handleClickOutside = this.handleCalendarClickOutside;\n // Затираем дефолтный обработчик клика снаружи, чтобы обрабатывать его самим\n // (см. использование useOnClickOutside в DatePicker)\n this.handleCalendarClickOutside = doNothing;\n }\n}\n","import { IInputStyles } from '../Input';\n\nexport const inputStyles: IInputStyles = {\n tweakControlWrapper: {\n startControls: {\n position: 'absolute',\n left: 0,\n top: 0,\n height: '100%',\n pointerEvents: 'none',\n },\n\n controlWrapper: {\n borderColor: 'transparent',\n },\n },\n\n inputContent: {\n paddingLeft: 'calc(var(--start-controls-width) + var(--control-padding))',\n },\n};\n\nexport interface ISearchInputStyles {\n tweakInput?: IInputStyles;\n}\n","import { forwardRef } from 'react';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { IInputProps, Input } from '../Input';\nimport { inputStyles, ISearchInputStyles } from './SearchInput.styles';\n\nexport type ISearchInputProps = Omit<\n IInputProps,\n 'type' | 'label' | 'isInvalid' | 'errorMessage' | 'isActive' | 'tweakStyles' | 'startIcon'\n> &\n ICommonProps<ISearchInputStyles>;\n\nexport const SearchInput = forwardRef<HTMLInputElement, ISearchInputProps>(function SearchInput(\n { isClearable = true, tweakStyles, ...props },\n ref,\n) {\n const tweakInputStyles = useTweakStyles({\n innerStyles: inputStyles,\n tweakStyles,\n className: 'tweakInput',\n currentComponentName: 'SearchInput',\n });\n\n return (\n <Input\n ref={ref}\n startIcon=\"search\"\n isClearable={isClearable}\n tweakStyles={tweakInputStyles}\n {...props}\n />\n );\n});\n","import type { IScrollIntoViewIfNeededProps } from './ScrollIntoViewIfNeeded';\n\nexport const ScrollIntoViewIfNeededDefaultElementType = 'div';\n\nexport const ScrollIntoViewIfNeededDefaultProps: IScrollIntoViewIfNeededProps = {\n active: true,\n elementType: ScrollIntoViewIfNeededDefaultElementType,\n options: {\n behavior: 'smooth',\n scrollMode: 'if-needed',\n },\n};\n","import {\n createElement,\n createRef,\n DOMElement,\n HTMLProps,\n PureComponent,\n ReactNode,\n RefObject,\n} from 'react';\nimport scrollIntoViewIfNeeded, { StandardBehaviorOptions } from 'scroll-into-view-if-needed';\nimport {\n ScrollIntoViewIfNeededDefaultElementType,\n ScrollIntoViewIfNeededDefaultProps,\n} from './constants';\n\nexport interface IScrollIntoViewIfNeededProps extends HTMLProps<HTMLElement> {\n active?: boolean;\n children?: ReactNode;\n elementType?: string;\n options?: StandardBehaviorOptions;\n}\n\nexport class ScrollIntoViewIfNeeded extends PureComponent<IScrollIntoViewIfNeededProps> {\n public static defaultProps: IScrollIntoViewIfNeededProps = ScrollIntoViewIfNeededDefaultProps;\n\n node: RefObject<HTMLElement> = createRef();\n\n componentDidMount(): void {\n const { active } = this.props;\n if (active) {\n this.handleScrollIntoViewIfNeeded();\n }\n }\n\n componentDidUpdate({ active }: IScrollIntoViewIfNeededProps): void {\n const { active: isNowActive } = this.props;\n if (!active && isNowActive) {\n this.handleScrollIntoViewIfNeeded();\n }\n }\n\n handleScrollIntoViewIfNeeded = (): void => {\n const { options } = this.props;\n const { current: node } = this.node;\n\n if (node) {\n scrollIntoViewIfNeeded(node, options);\n }\n };\n\n render(): DOMElement<any, any> {\n const { active, elementType, children, options, ...wrapperProps } = this.props;\n\n return createElement(\n elementType ?? ScrollIntoViewIfNeededDefaultElementType,\n { ref: this.node, ...wrapperProps },\n children,\n );\n }\n}\n","export const DEFAULT_OPTION_INDEX = -2;\nexport const ALL_OPTION_INDEX = -1;\n","import { colors, createThemedStyles, dimensions, helpers, ITweakStyles } from '../../../../theme';\nimport { IControlWrapperSizes } from '../../../ControlWrapper';\n\nexport const ROW_HEIGHT = 40;\nexport const CONTAINER_PADDING = 10;\nexport const CELL_PADDING = [10, 20];\n\nexport const useStyles = createThemedStyles('SelectList', {\n root: {\n borderRadius: dimensions.BORDER_RADIUS_SMALL,\n boxShadow: '0 13px 74px -27px rgba(0, 0, 0, 0.11)',\n boxSizing: 'border-box',\n padding: [CONTAINER_PADDING, 0],\n fontSize: 16,\n overflow: 'hidden',\n },\n\n withListHeader: {\n paddingTop: 0,\n },\n\n withListFooter: {\n paddingBottom: 0,\n },\n\n listHeader: {},\n\n listFooter: {},\n\n list: {\n height: '100%',\n maxHeight: ROW_HEIGHT * 6,\n cursor: 'pointer',\n backgroundColor: colors.CLASSIC_WHITE,\n\n ...helpers.withScrollBar,\n },\n\n cell: {\n display: 'flex',\n cursor: 'pointer',\n minHeight: ROW_HEIGHT,\n width: 'auto',\n padding: CELL_PADDING,\n alignItems: 'center',\n boxSizing: 'border-box',\n fontSize: 14,\n },\n\n cellWithCheckbox: {\n padding: 0,\n },\n\n noMatchesLabel: {\n pointerEvents: 'none',\n },\n\n focused: {},\n\n active: {},\n\n disabled: {\n cursor: 'default',\n },\n\n loading: {\n cursor: 'default',\n pointerEvents: 'none',\n },\n\n defaultCell: {},\n});\n\nexport type ISelectListStyles = ITweakStyles<typeof useStyles, IControlWrapperSizes>;\n","import { ICheckboxStyles } from '../../../Checkbox';\nimport { CELL_PADDING } from '../SelectList/SelectList.styles';\n\nexport const checkboxStyles: ICheckboxStyles = {\n root: {\n padding: CELL_PADDING,\n width: '100%',\n },\n\n input: {\n // иначе будет фокуситься и энтер будет вызывать изменение нескольких опций\n display: 'none',\n },\n};\n","import {\n type ChangeEvent,\n type FC,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport clsx from 'clsx';\nimport { type Classes } from 'jss';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { IDataAttributesProps } from '../../../../types';\nimport { Checkbox } from '../../../Checkbox';\nimport { ScrollIntoViewIfNeeded } from '../../../ScrollIntoViewIfNeeded';\nimport { checkboxStyles } from './SelectListItem.styles';\n\nexport interface ISelectListItemProps extends IDataAttributesProps {\n index: number;\n isSemiChecked?: boolean;\n isDisabled?: boolean;\n isActive?: boolean;\n isFocused?: boolean;\n children: ReactNode;\n classes: Classes<'cellWithCheckbox' | 'cell' | 'focused' | 'active' | 'disabled'>; // TODO: !!!\n isMultiSelect?: boolean;\n onOptionSelect: (index: number, event: MouseEvent<HTMLElement>) => void;\n onToggleCheckbox: (\n index: number,\n isSelected: boolean,\n event: ChangeEvent<HTMLElement> | KeyboardEvent,\n ) => void;\n}\n\nexport const SelectListItem: FC<ISelectListItemProps> = ({\n classes,\n index,\n isSemiChecked,\n isDisabled,\n isActive,\n children,\n isFocused,\n isMultiSelect,\n data,\n onOptionSelect,\n onToggleCheckbox,\n}) => {\n const multiSelectContent = isMultiSelect && (\n <Checkbox\n isChecked={isActive || isSemiChecked}\n isSemiChecked={isSemiChecked}\n isDisabled={isDisabled}\n tweakStyles={checkboxStyles}\n onSelect={({ isSelected }, event) => onToggleCheckbox(index, isSelected, event)}\n >\n {children}\n </Checkbox>\n );\n\n return (\n <ScrollIntoViewIfNeeded\n active={isFocused}\n options={{ block: 'nearest' }}\n className={clsx(classes.cell, {\n [classes.cellWithCheckbox]: isMultiSelect,\n [classes.focused]: isFocused,\n [classes.active]: isActive && !isMultiSelect,\n [classes.disabled]: isDisabled,\n })}\n {...addDataAttributes({\n disabled: isDisabled,\n active: isActive,\n focused: isFocused,\n ...data,\n })}\n onClick={!isDisabled && !isMultiSelect ? (event) => onOptionSelect(index, event) : undefined}\n >\n {isMultiSelect ? multiSelectContent : children}\n </ScrollIntoViewIfNeeded>\n );\n};\n","import { type ReactNode, useMemo } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataTestId,\n getArray,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { type ICommonProps } from '../../../../types';\nimport { ScrollIntoViewIfNeeded } from '../../../ScrollIntoViewIfNeeded';\nimport type { ISelectProps } from '../../Select';\nimport { ALL_OPTION_INDEX, DEFAULT_OPTION_INDEX } from '../../constants';\nimport { type ISelectListItemProps, SelectListItem } from '../SelectListItem';\nimport { type ISelectListStyles, useStyles } from './SelectList.styles';\n\nexport interface ISelectListProps<Value>\n extends ICommonProps<ISelectListStyles>,\n Pick<ISelectListItemProps, 'onToggleCheckbox' | 'onOptionSelect' | 'isMultiSelect'> {\n options: Value[] | readonly Value[];\n size?: ISelectProps<Value>['size'];\n focusedIndex?: number;\n activeValue?: Value | Value[];\n noMatchesLabel?: string;\n isLoading?: boolean;\n loadingLabel?: ReactNode;\n defaultOptionLabel?: ReactNode;\n allOptionsLabel?: ReactNode;\n areAllOptionsSelected?: boolean;\n shouldScrollToList?: boolean;\n customListHeader?: ReactNode;\n customListFooter?: ReactNode;\n isOptionDisabled: (value: Value) => boolean;\n convertValueToString: (value: Value) => string | undefined;\n convertValueToReactNode?: (value: Value, isDisabled: boolean) => ReactNode;\n convertValueToId: (value: Value) => string | undefined;\n}\n\nexport function SelectList<Value>({\n options,\n focusedIndex,\n size,\n activeValue,\n defaultOptionLabel,\n noMatchesLabel = 'Совпадений не найдено',\n isLoading,\n loadingLabel = 'Загрузка...',\n tweakStyles,\n testId,\n shouldScrollToList = true,\n areAllOptionsSelected,\n customListHeader,\n customListFooter,\n isMultiSelect,\n isOptionDisabled,\n allOptionsLabel,\n onOptionSelect,\n onToggleCheckbox,\n convertValueToString,\n convertValueToReactNode = convertValueToString,\n convertValueToId,\n}: ISelectListProps<Value>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const isHeaderNotEmpty = isReactNodeNotEmpty(customListHeader);\n const isFooterNotEmpty = isReactNodeNotEmpty(customListFooter);\n\n const optionsDisableMap = useMemo(\n () => options.map(isOptionDisabled),\n [options, isOptionDisabled],\n );\n\n const listOptions = useMemo(\n () => options.map((option, index) => convertValueToReactNode(option, optionsDisableMap[index])),\n [options, convertValueToReactNode, optionsDisableMap],\n );\n\n const activeOptionsIds = useMemo(\n () => new Set((getArray(activeValue) as Value[]).map(convertValueToId)),\n [activeValue, convertValueToId],\n );\n\n return (\n <ScrollIntoViewIfNeeded\n active={shouldScrollToList && !isMultiSelect}\n className={clsx(classes.root, isNotEmpty(size) && classes[size], {\n [classes.withListHeader]: isHeaderNotEmpty,\n [classes.withListFooter]: isFooterNotEmpty,\n })}\n >\n {isHeaderNotEmpty && <div className={classes.listHeader}>{customListHeader}</div>}\n <div className={classes.list} {...addDataTestId(testId)} tabIndex={-1}>\n {isLoading ? (\n <div className={clsx(classes.cell, classes.loading)}>{loadingLabel}</div>\n ) : (\n <>\n {isReactNodeNotEmpty(defaultOptionLabel) && (\n <ScrollIntoViewIfNeeded\n active={focusedIndex === DEFAULT_OPTION_INDEX}\n options={{ block: 'nearest' }}\n className={clsx(\n classes.cell,\n classes.defaultCell,\n focusedIndex === DEFAULT_OPTION_INDEX && classes.focused,\n )}\n onClick={(event) => onOptionSelect(DEFAULT_OPTION_INDEX, event)}\n >\n {defaultOptionLabel}\n </ScrollIntoViewIfNeeded>\n )}\n {isReactNodeNotEmpty(allOptionsLabel) && (\n <SelectListItem\n classes={classes}\n index={ALL_OPTION_INDEX}\n isSemiChecked={activeOptionsIds.size > 0 && !areAllOptionsSelected}\n isActive={areAllOptionsSelected}\n isFocused={focusedIndex === ALL_OPTION_INDEX}\n isMultiSelect={isMultiSelect}\n onOptionSelect={onOptionSelect}\n onToggleCheckbox={onToggleCheckbox}\n >\n {allOptionsLabel}\n </SelectListItem>\n )}\n {listOptions.map((opt, i) => {\n const optionValue = options[i];\n const id = convertValueToId(optionValue);\n const isFocused = focusedIndex === i;\n const isActive = activeOptionsIds.has(id);\n // проверяем, что опция задизейблена\n const isDisabled = optionsDisableMap[i];\n\n return (\n <SelectListItem\n key={i}\n classes={classes}\n index={i}\n isDisabled={isDisabled}\n isActive={isActive}\n isFocused={isFocused}\n isMultiSelect={isMultiSelect}\n onOptionSelect={onOptionSelect}\n onToggleCheckbox={onToggleCheckbox}\n data={{ id }}\n >\n {opt}\n </SelectListItem>\n );\n })}\n {listOptions.length === 0 && (\n <div className={clsx(classes.cell, classes.noMatchesLabel)}>{noMatchesLabel}</div>\n )}\n </>\n )}\n </div>\n {isFooterNotEmpty && <div className={classes.listFooter}>{customListFooter}</div>}\n </ScrollIntoViewIfNeeded>\n );\n}\n","import { isNotEmpty } from '@true-engineering/true-react-platform-helpers';\n\nexport const defaultIsOptionDisabled = <Value>(option: Value): boolean =>\n typeof option === 'object' &&\n option !== null &&\n ((option as { isDisabled?: boolean })?.isDisabled ?? false);\n\nexport const defaultConvertFunction = (v: unknown): string | undefined =>\n v === undefined ? undefined : String(v);\n\nexport const defaultCompareFunction = <Value>(v1: Value, v2: Value): boolean => v1 === v2;\n\nexport const getDefaultConvertToIdFunction =\n <Value>(\n convertValueToString: (value: Value) => string | undefined,\n ): ((value: Value) => string | undefined) =>\n (value) =>\n isNotEmpty((value as { id: unknown })?.id)\n ? String((value as { id: unknown }).id)\n : convertValueToString(value);\n","import { mergeStyles } from '@true-engineering/true-react-platform-helpers';\nimport { animations, createThemedStyles, dimensions, type ITweakStyles } from '../../theme';\nimport { type IInputStyles } from '../Input';\nimport { type ISearchInputStyles } from '../SearchInput';\nimport { IWithMessagesStyles } from '../WithMessages';\nimport { type ISelectListStyles } from './components';\n\nconst { Z_INDEX } = dimensions;\n\nexport const useStyles = createThemedStyles('Select', {\n root: {\n width: '100%',\n position: 'relative',\n boxSizing: 'border-box',\n },\n\n inputWrapper: {\n width: '100%',\n cursor: 'text',\n },\n\n listWrapper: {\n left: -1,\n zIndex: 3,\n width: 'fit-content',\n minWidth: 'calc(100% + 1px)',\n },\n\n withoutPopper: {\n position: 'absolute',\n top: '100%',\n paddingTop: 4,\n },\n\n listWrapperInBody: {\n minWidth: 'auto',\n width: 'auto',\n maxWidth: 'min-content',\n },\n\n arrow: {\n width: 'var(--icon-inner-size, 20px)',\n height: 'var(--icon-inner-size, 20px)',\n cursor: 'pointer',\n transition: animations.defaultTransition,\n transitionProperty: 'transform',\n zIndex: Z_INDEX.CONTROL_FOCUS + 1,\n },\n\n activeArrow: {\n transform: 'rotate(180deg)',\n },\n\n disabled: {\n '& $arrow': {\n cursor: 'default',\n },\n },\n\n counter: {},\n});\n\nconst baseInputStyles: IInputStyles = {\n input: {\n '&[readonly]': {\n cursor: 'pointer',\n },\n },\n};\n\nconst readonlyInputBaseStyles: IInputStyles = {\n input: {\n cursor: 'pointer',\n },\n};\n\nexport const readonlyInputStyles = mergeStyles(baseInputStyles, readonlyInputBaseStyles);\nexport const readonlyMultiSelectStyles = mergeStyles(baseInputStyles, readonlyInputBaseStyles);\n\nexport const getInputStyles = ({\n hasReadonlyInput,\n isMultiSelect,\n}: {\n hasReadonlyInput: boolean;\n isMultiSelect?: boolean;\n}): IInputStyles => {\n if (hasReadonlyInput && isMultiSelect) {\n return readonlyMultiSelectStyles;\n }\n if (hasReadonlyInput && !isMultiSelect) {\n return readonlyInputStyles;\n }\n return baseInputStyles;\n};\n\nexport type ISelectStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakWithMessages: IWithMessagesStyles;\n tweakInput: IInputStyles;\n tweakSelectList: ISelectListStyles;\n tweakSearchInput: ISearchInputStyles;\n }\n>;\n","import {\n ChangeEvent,\n CSSProperties,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n Ref,\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Portal } from 'react-overlays';\nimport clsx from 'clsx';\nimport { debounce } from 'ts-debounce';\nimport {\n applyAction,\n createFilter,\n getArray,\n getTestId,\n isNotEmpty,\n isReactNodeNotEmpty,\n isStringNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { hasExactParent } from '../../helpers';\nimport { useDropdown, useIsMounted, useOnClickOutsideWithRef, useTweakStyles } from '../../hooks';\nimport { ICommonProps, IDropdownWithPopperOptions } from '../../types';\nimport { IIcon, renderIcon } from '../Icon';\nimport { IChangeInputEvent, IInputProps, InputBase } from '../Input';\nimport { ISearchInputProps, SearchInput } from '../SearchInput';\nimport { WithMessages } from '../WithMessages';\nimport { SelectList } from './components';\nimport { ALL_OPTION_INDEX, DEFAULT_OPTION_INDEX } from './constants';\nimport {\n defaultCompareFunction,\n defaultConvertFunction,\n defaultIsOptionDisabled,\n getDefaultConvertToIdFunction,\n} from './helpers';\nimport { IChangeSelectEvent, IMultipleSelectValue, ISelectFooter } from './types';\nimport { getInputStyles, ISelectStyles, useStyles } from './Select.styles';\n\nexport interface ISelectProps<Value>\n extends Omit<IInputProps, 'value' | 'onChange' | 'onBlur' | 'type' | 'tweakStyles'>,\n ICommonProps<ISelectStyles> {\n header?: ReactNode;\n footer?: ISelectFooter<Value>;\n defaultOptionLabel?: ReactNode;\n allOptionsLabel?: string;\n noMatchesLabel?: string;\n loadingLabel?: ReactNode;\n /** @default 'normal' */\n optionsMode?: 'search' | 'dynamic' | 'normal';\n /** @default 400 */\n debounceTime?: number;\n /** @default 0 */\n minSymbolsCountToOpenList?: number;\n dropdownOptions?: IDropdownWithPopperOptions;\n /** @default 'chevron-down' */\n dropdownIcon?: IIcon;\n options: Value[] | readonly Value[];\n value: Value | undefined;\n /** @default true */\n shouldScrollToList?: boolean;\n isMultiSelect?: false;\n searchInput?: {\n /** @default false */\n shouldRenderInList?: boolean;\n ref?: Ref<HTMLInputElement>;\n } & Pick<ISearchInputProps, 'placeholder' | 'shouldFocusOnMount'>;\n isOptionDisabled?: (option: Value) => boolean;\n onChange: (value: Value | undefined, event: IChangeSelectEvent) => void; // подумать как возвращать индекс\n onBlur?: (event: Event | SyntheticEvent) => void;\n onType?: (value: string) => Promise<void>;\n optionsFilter?: (options: Value[], query: string) => Value[];\n onOpen?: () => void;\n compareValuesOnChange?: (v1?: Value, v2?: Value) => boolean;\n /** @description Функция должна быть мемоизирована с целью избежания ререндера */\n convertValueToString?: (value: Value) => string | undefined;\n /** @description Функция должна быть мемоизирована с целью избежания ререндера */\n convertValueToReactNode?: (value: Value, isDisabled: boolean) => ReactNode;\n /** @description Функция должна быть мемоизирована с целью избежания ререндера */\n convertValueToId?: (value: Value) => string | undefined;\n}\n\nexport interface IMultipleSelectProps<Value>\n extends Omit<\n ISelectProps<Value>,\n 'value' | 'onChange' | 'compareValuesOnChange' | 'isMultiSelect'\n > {\n isMultiSelect: true;\n value: IMultipleSelectValue<Value> | undefined;\n onChange: (value: IMultipleSelectValue<Value> | undefined, event: IChangeSelectEvent) => void;\n compareValuesOnChange?: (\n v1?: IMultipleSelectValue<Value>,\n v2?: IMultipleSelectValue<Value>,\n ) => boolean;\n}\n\nexport function Select<Value>(\n props: ISelectProps<Value> | IMultipleSelectProps<Value>,\n): JSX.Element {\n const {\n options,\n isMultiSelect,\n value,\n header,\n footer,\n defaultOptionLabel,\n allOptionsLabel,\n debounceTime = 400,\n optionsMode = 'normal',\n noMatchesLabel,\n loadingLabel,\n tweakStyles,\n testId,\n isActive,\n isReadonly,\n isDisabled,\n dropdownOptions,\n minSymbolsCountToOpenList = 0,\n dropdownIcon = 'chevron-down',\n shouldScrollToList = true,\n searchInput,\n icon,\n endIcon = icon,\n onChange,\n onFocus,\n onBlur,\n onType,\n onOpen,\n isOptionDisabled = defaultIsOptionDisabled,\n compareValuesOnChange = defaultCompareFunction,\n convertValueToString = defaultConvertFunction,\n convertValueToId,\n convertValueToReactNode,\n optionsFilter,\n infoMessage,\n errorMessage,\n size,\n ...inputProps\n } = props;\n const classes = useStyles({ theme: tweakStyles });\n\n const { shouldRenderInList: shouldRenderSearchInputInList = false, ...searchInputProps } =\n searchInput ?? {};\n const hasSearchInputInList = optionsMode !== 'normal' && shouldRenderSearchInputInList;\n const hasReadonlyInput = isReadonly || optionsMode === 'normal' || shouldRenderSearchInputInList;\n\n const tweakWithMessagesStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakWithMessages',\n currentComponentName: 'Select',\n });\n\n const tweakInputStyles = useTweakStyles({\n innerStyles: getInputStyles({ hasReadonlyInput, isMultiSelect }),\n tweakStyles,\n className: 'tweakInput',\n currentComponentName: 'Select',\n });\n\n const tweakSearchInputStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakSearchInput',\n currentComponentName: 'Select',\n });\n\n const tweakSelectListStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakSelectList',\n currentComponentName: 'Select',\n });\n\n const isMounted = useIsMounted();\n const [isListOpen, setIsListOpen] = useState(false);\n const [areOptionsLoading, setAreOptionsLoading] = useState(false);\n const hasDefaultOption = isReactNodeNotEmpty(defaultOptionLabel);\n\n const [focusedListCellIndex, setFocusedListCellIndex] = useState(DEFAULT_OPTION_INDEX);\n const [searchValue, setSearchValue] = useState('');\n // если мы ввели что то в строку поиска - то этот булеан будет отключаться\n // вынесен отдельно, из-за проблем с дебаунсом при динамич. опциях\n const [shouldShowDefaultOption, setShouldShowDefaultOption] = useState(true);\n\n const root = useRef<HTMLDivElement>(null);\n const inputWrapper = useRef<HTMLDivElement>(null);\n const list = useRef<HTMLDivElement>(null);\n const input = useRef<HTMLInputElement>(null); // TODO ref снаружи?\n\n const strValue = isMultiSelect ? value?.[0] : value;\n const shouldShowAllOption =\n isMultiSelect && isStringNotEmpty(allOptionsLabel) && searchValue === '';\n\n const filteredOptions = useMemo(() => {\n if (optionsMode !== 'search') {\n return options as Value[];\n }\n\n const filter =\n optionsFilter ?? createFilter<Value>((option) => [convertValueToString(option) ?? '']);\n\n return filter(options as Value[], searchValue);\n }, [optionsFilter, options, convertValueToString, searchValue, optionsMode]);\n\n const availableOptions = useMemo(\n () => options.filter((option) => !isOptionDisabled(option)),\n [options, isOptionDisabled],\n );\n\n const areAllOptionsSelected = isMultiSelect && value?.length === availableOptions.length;\n const shouldShowMultiSelectCounter =\n isMultiSelect && isNotEmpty(value) && value.length > 1 && !areAllOptionsSelected;\n\n const optionsIndexesForNavigation = useMemo(() => {\n const result: number[] = [];\n if (shouldShowDefaultOption && hasDefaultOption) {\n result.push(DEFAULT_OPTION_INDEX);\n }\n if (shouldShowAllOption) {\n result.push(ALL_OPTION_INDEX);\n }\n return result.concat(\n filteredOptions.reduce((acc, cur, i) => {\n if (!isOptionDisabled(cur)) {\n acc.push(i);\n }\n return acc;\n }, [] as number[]),\n );\n }, [\n filteredOptions,\n hasDefaultOption,\n isOptionDisabled,\n shouldShowAllOption,\n shouldShowDefaultOption,\n ]);\n\n const stringValue = isNotEmpty(strValue) ? convertValueToString(strValue) : undefined;\n // Для мультиселекта пытаемся показать \"Все опции\" если выбраны все опции\n const showedStringValue =\n areAllOptionsSelected && isNotEmpty(allOptionsLabel) ? allOptionsLabel : stringValue;\n\n const convertToId = useCallback(\n (v: Value) => (convertValueToId ?? getDefaultConvertToIdFunction(convertValueToString))(v),\n [convertValueToId, convertValueToString],\n );\n\n const closeList = useCallback(() => {\n setIsListOpen(false);\n setSearchValue('');\n setShouldShowDefaultOption(true);\n }, [dropdownOptions?.shouldUsePopper]);\n\n const handleListClose = useCallback(\n (event: Event | SyntheticEvent) => {\n if (!isListOpen) {\n return;\n }\n\n closeList();\n onBlur?.(event);\n },\n [isListOpen, closeList, onBlur],\n );\n\n const handleListOpen = () => {\n if (!isReadonly && !isListOpen) {\n setIsListOpen(true);\n }\n };\n\n const handleFocus = (event: FocusEvent<HTMLInputElement>) => {\n onFocus?.(event);\n handleListOpen();\n };\n\n const handleOnClick = () => {\n handleListOpen();\n };\n\n const handleChange = useCallback(\n (newValue: Value | IMultipleSelectValue<Value> | undefined, event: IChangeSelectEvent) => {\n // Тут беда с типами, сорри\n if (!compareValuesOnChange(value as never, newValue as never)) {\n onChange(newValue as (Value & IMultipleSelectValue<Value>) | undefined, event);\n }\n },\n [value, compareValuesOnChange, onChange],\n );\n\n const handleOptionSelect = useCallback(\n (index: number, event: MouseEvent<HTMLElement> | KeyboardEvent) => {\n handleChange(index === DEFAULT_OPTION_INDEX ? undefined : filteredOptions[index], event);\n handleListClose(event);\n input.current?.blur();\n },\n [handleChange, handleListClose, filteredOptions],\n );\n\n // MultiSelect\n const handleToggleOptionCheckbox = useCallback(\n (index: number, isSelected: boolean, event: ChangeEvent<HTMLElement> | KeyboardEvent) => {\n if (!isMultiSelect) {\n return;\n }\n\n // Если выбрана не дефолтная опция, которая сетит андеф\n if (index === DEFAULT_OPTION_INDEX || (index === ALL_OPTION_INDEX && !isSelected)) {\n handleChange(undefined, event);\n return;\n }\n if (index === ALL_OPTION_INDEX && isSelected) {\n handleChange(availableOptions as IMultipleSelectValue<Value>, event);\n return;\n }\n const option = filteredOptions[index];\n handleChange(\n isSelected\n ? // Добавляем\n ([...(value ?? []), option] as IMultipleSelectValue<Value>)\n : // Убираем\n value?.filter((o) => convertToId(o) !== convertToId(option)),\n event,\n );\n },\n [isMultiSelect, filteredOptions, handleChange, value, availableOptions, convertToId],\n );\n\n const handleOnType = useCallback(\n async (v: string) => {\n if (onType === undefined) {\n return;\n }\n if (isMounted()) {\n setAreOptionsLoading(true);\n }\n await onType(v);\n if (isMounted()) {\n setAreOptionsLoading(false);\n }\n if (optionsMode === 'dynamic') {\n setShouldShowDefaultOption(v === '');\n }\n },\n [isMounted, onType, optionsMode],\n );\n\n const debounceHandleOnType = useMemo(\n () => debounce(handleOnType, debounceTime, { isImmediate: debounceTime === 0 }),\n [handleOnType, debounceTime],\n );\n\n const handleInputChange = (v: string, event: IChangeInputEvent) => {\n if (onType !== undefined) {\n debounceHandleOnType(v);\n }\n\n if (optionsMode !== 'dynamic') {\n setShouldShowDefaultOption(v === '');\n }\n\n if (v === '' && !hasSearchInputInList) {\n handleChange(undefined, event);\n }\n\n setSearchValue(v);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!isListOpen) {\n return;\n }\n\n event.stopPropagation();\n const curIndexInNavigation = optionsIndexesForNavigation.findIndex(\n (index) => index === focusedListCellIndex,\n );\n\n switch (event.code) {\n case 'Enter':\n case 'NumpadEnter': {\n let indexToSelect = focusedListCellIndex;\n\n // если осталась одна опция в списке,\n // то выбираем ее нажатием на enter\n if (indexToSelect === DEFAULT_OPTION_INDEX && filteredOptions.length === 1) {\n indexToSelect = 0;\n }\n\n if (isMultiSelect) {\n let isThisValueAlreadySelected: boolean | undefined;\n if (indexToSelect === ALL_OPTION_INDEX) {\n isThisValueAlreadySelected = areAllOptionsSelected;\n } else {\n // подумать над концептом реального фокуса на опциях, а не вот эти вот focusedCell\n const option = filteredOptions[indexToSelect];\n const valueIdToSelect = convertToId(option);\n isThisValueAlreadySelected =\n value?.some((opt) => convertToId(opt) === valueIdToSelect) ?? false;\n }\n handleToggleOptionCheckbox(indexToSelect, !isThisValueAlreadySelected, event);\n } else {\n handleOptionSelect(indexToSelect, event);\n }\n break;\n }\n\n case 'ArrowDown': {\n // чтобы убрать перемещение курсора в инпуте\n event.preventDefault();\n const targetIndexInNavigation =\n (curIndexInNavigation + 1) % optionsIndexesForNavigation.length;\n setFocusedListCellIndex(optionsIndexesForNavigation[targetIndexInNavigation]);\n break;\n }\n\n case 'ArrowUp': {\n // чтобы убрать перемещение курсора в инпуте\n event.preventDefault();\n const targetIndexInNavigation =\n (curIndexInNavigation - 1 + optionsIndexesForNavigation.length) %\n optionsIndexesForNavigation.length;\n setFocusedListCellIndex(optionsIndexesForNavigation[targetIndexInNavigation]);\n break;\n }\n }\n };\n\n const onArrowClick = () => {\n if (isListOpen) {\n input.current?.blur();\n closeList();\n } else {\n input.current?.focus();\n }\n };\n\n useOnClickOutsideWithRef(list, handleListClose, inputWrapper);\n\n const hasEnoughSymbolsToSearch = searchValue.trim().length >= minSymbolsCountToOpenList;\n\n const isOpen =\n // Пользователь пытается открыть лист\n isListOpen &&\n // Нам есть что показать:\n // Есть опции\n (filteredOptions.length > 0 ||\n // Дефолтная опция\n (defaultOptionLabel !== undefined && !hasEnoughSymbolsToSearch) ||\n // Текст \"Загрузка...\"\n inputProps.isLoading ||\n // Текст \"Совпадений не найдено\"\n noMatchesLabel !== undefined ||\n // У нас есть инпут с поиском внутри листа\n hasSearchInputInList) &&\n // Последняя проверка на случай, если мы че то ищем в опциях\n (optionsMode === 'normal' || hasEnoughSymbolsToSearch);\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n // Когда что-то блокирует открытие листа, но блур все равно должен сработать\n // например minSymbolsCount\n if (isListOpen && !isOpen) {\n handleListClose(event);\n return;\n }\n\n if (\n !isNotEmpty(event.relatedTarget) ||\n !isNotEmpty(list.current) ||\n !isNotEmpty(inputWrapper.current)\n ) {\n return;\n }\n\n const isActionInsideSelect =\n hasExactParent(event.relatedTarget, list.current) ||\n hasExactParent(event.relatedTarget, inputWrapper.current);\n\n // Ничего не делаем, если клик был внутри селекта\n if (!isActionInsideSelect) {\n handleListClose(event);\n }\n };\n\n // Эти значения ставятся в false по дефолту также в useDropdown\n const {\n shouldUsePopper = false,\n shouldRenderInBody = false,\n shouldHideOnScroll = false,\n } = dropdownOptions ?? {};\n\n const popperData = useDropdown({\n isOpen,\n onDropdownClose: handleListClose,\n referenceElement: inputWrapper.current,\n dropdownElement: list.current,\n options: dropdownOptions,\n dependenciesForPositionUpdating: [inputProps.isLoading, filteredOptions.length],\n });\n\n useEffect(() => {\n const focusedCellIndex = isNotEmpty(strValue)\n ? optionsIndexesForNavigation.find((index) => {\n const option = filteredOptions[index];\n return isNotEmpty(option) && convertToId(option) === convertToId(strValue);\n })\n : undefined;\n\n setFocusedListCellIndex(focusedCellIndex ?? optionsIndexesForNavigation[0]);\n }, [strValue, filteredOptions, optionsIndexesForNavigation, convertToId]);\n\n useEffect(() => {\n if (isOpen) {\n onOpen?.();\n }\n }, [isOpen]);\n\n const searchInputEl = hasSearchInputInList && (\n <SearchInput\n size={size}\n value={searchValue}\n onChange={handleInputChange}\n tweakStyles={tweakSearchInputStyles}\n placeholder=\"Поиск\"\n {...searchInputProps}\n />\n );\n\n // Т.к. используется для проверки на пустой элемент `isReactNodeNotEmpty` внутри `SelectList`, то\n // он пропускает React.Fragment\n const customHeader = (isReactNodeNotEmpty(searchInputEl) || isReactNodeNotEmpty(header)) && (\n <>\n {searchInputEl}\n {header}\n </>\n );\n\n const listEl = (\n <div\n className={clsx(classes.listWrapper, {\n [classes.withoutPopper]: !shouldUsePopper,\n [classes.listWrapperInBody]: shouldRenderInBody,\n })}\n ref={list}\n style={popperData?.styles.popper as CSSProperties}\n tabIndex={0}\n onBlur={handleBlur} // обработка для Tab из списка\n {...popperData?.attributes.popper}\n >\n {isOpen && (\n <SelectList\n options={filteredOptions}\n size={size}\n defaultOptionLabel={hasDefaultOption && shouldShowDefaultOption && defaultOptionLabel}\n allOptionsLabel={shouldShowAllOption && allOptionsLabel}\n areAllOptionsSelected={areAllOptionsSelected}\n customListHeader={customHeader}\n customListFooter={applyAction(footer, { filteredOptions })}\n noMatchesLabel={noMatchesLabel}\n focusedIndex={focusedListCellIndex}\n activeValue={value}\n isLoading={inputProps.isLoading}\n loadingLabel={loadingLabel}\n tweakStyles={tweakSelectListStyles}\n testId={getTestId(testId, 'list')}\n isMultiSelect={isMultiSelect}\n // скролл не работает с включеным поппером\n shouldScrollToList={shouldScrollToList && !shouldUsePopper && !shouldHideOnScroll}\n isOptionDisabled={isOptionDisabled}\n convertValueToString={convertValueToString}\n convertValueToReactNode={convertValueToReactNode}\n convertValueToId={convertToId}\n onOptionSelect={handleOptionSelect}\n onToggleCheckbox={handleToggleOptionCheckbox}\n />\n )}\n </div>\n );\n\n return (\n <WithMessages\n errorMessage={errorMessage}\n infoMessage={infoMessage}\n tweakStyles={tweakWithMessagesStyles}\n testId={getTestId(testId, 'wrapper')}\n >\n <div className={classes.root} onKeyDown={handleKeyDown} ref={root}>\n <div\n className={clsx(classes.inputWrapper, isDisabled && classes.disabled)}\n onClick={isDisabled || isReadonly ? undefined : handleOnClick}\n ref={inputWrapper}\n >\n <InputBase\n value={\n searchValue !== '' && !shouldRenderSearchInputInList ? searchValue : showedStringValue\n }\n size={size}\n onChange={handleInputChange}\n isActive={isListOpen || isActive}\n isReadonly={hasReadonlyInput}\n onFocus={handleFocus}\n onBlur={handleBlur}\n isDisabled={isDisabled}\n ref={input}\n isLoading={areOptionsLoading}\n tweakStyles={tweakInputStyles}\n testId={testId}\n icon={[\n isMultiSelect && shouldShowMultiSelectCounter\n ? {\n key: 'counter',\n iconComponent: (\n <div key=\"counter\" className={classes.counter}>\n (+{value.length - 1})\n </div>\n ),\n shouldResetSize: true,\n }\n : undefined,\n\n ...getArray(endIcon),\n\n <div\n key=\"arrow\"\n className={clsx(classes.arrow, isOpen && classes.activeArrow)}\n onClick={onArrowClick} // клик тут, потому что onClick в ControlWrapper добавляет tabIndex={0}\n >\n {renderIcon(dropdownIcon)}\n </div>,\n ].filter(isNotEmpty)}\n {...inputProps}\n />\n </div>\n {shouldUsePopper ? (\n <Portal container={shouldRenderInBody ? document.body : inputWrapper.current}>\n <>{listEl}</>\n </Portal>\n ) : (\n <>{isOpen && listEl}</>\n )}\n </div>\n </WithMessages>\n );\n}\n","import { createThemedStyles, ITweakStyles } from '../../../../theme';\nimport { ISelectStyles } from '../../../Select';\n\nexport const useStyles = createThemedStyles('DatePickerHeader', {\n btn: {\n width: 36,\n height: 36,\n padding: 8,\n boxSizing: 'border-box',\n border: 'none',\n outline: 'none',\n cursor: 'pointer',\n marginLeft: 8,\n },\n\n header: {\n margin: 6,\n display: 'flex',\n alignItems: 'center',\n },\n\n buttons: {\n flexShrink: 0,\n marginLeft: 'auto',\n },\n});\n\nexport const selectStyles: ISelectStyles = {\n tweakSelectList: {\n cell: {\n fontSize: 14,\n minHeight: 35,\n },\n },\n\n tweakInput: {\n tweakControlWrapper: {\n controlWrapper: {\n '--control-height': '35px',\n border: 'none',\n },\n },\n\n inputContent: {\n fontSize: 16,\n fontWeight: 'bold',\n },\n },\n};\n\nexport type IDatePickerHeaderStyles = ITweakStyles<\n typeof useStyles,\n { tweakSelect: ISelectStyles }\n>;\n","import { FC, useMemo } from 'react';\nimport { ReactDatePickerCustomHeaderProps as BaseProps } from 'react-datepicker';\nimport { getMonth, getYear } from 'date-fns';\nimport { useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Icon } from '../../../Icon';\nimport { Select } from '../../../Select';\nimport { IDatePickerHeaderStyles, selectStyles, useStyles } from './DatePickerHeader.styles';\n\nexport interface IDatePickerHeaderProps\n extends BaseProps,\n Pick<ICommonProps<IDatePickerHeaderStyles>, 'tweakStyles'> {\n months?: string[];\n}\n\nexport const DatePickerHeader: FC<IDatePickerHeaderProps> = ({\n date,\n months = [],\n tweakStyles,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n changeYear,\n changeMonth,\n decreaseMonth,\n increaseMonth,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakSelectStyles = useTweakStyles({\n innerStyles: selectStyles,\n tweakStyles,\n className: 'tweakSelect',\n currentComponentName: 'DatePickerHeader',\n });\n\n const years = useMemo(\n () => Array.from(Array(41)).map((_, i) => getYear(new Date()) - 30 + i),\n [],\n );\n\n return (\n <div className={classes.header}>\n <Select\n value={months[getMonth(date)]}\n options={months}\n dropdownIcon=\"chevron-down-small\"\n isAutoSized\n tweakStyles={tweakSelectStyles}\n onChange={(value) => changeMonth(months.indexOf(value as string))}\n />\n <Select\n value={getYear(date)}\n options={years}\n dropdownIcon=\"chevron-down-small\"\n isAutoSized\n tweakStyles={tweakSelectStyles}\n onChange={(value) => changeYear(value as number)}\n />\n\n <div className={classes.buttons}>\n <button\n type=\"button\"\n className={classes.btn}\n disabled={prevMonthButtonDisabled}\n onClick={decreaseMonth}\n >\n <Icon type=\"chevron-left\" />\n </button>\n\n <button\n type=\"button\"\n className={classes.btn}\n disabled={nextMonthButtonDisabled}\n onClick={increaseMonth}\n >\n <Icon type=\"chevron-right\" />\n </button>\n </div>\n </div>\n );\n};\n","import { FC, PropsWithChildren } from 'react';\nimport { FloatingPortal } from '@floating-ui/react';\n\nexport const PopperContainer: FC<PropsWithChildren> = (props) => (\n <FloatingPortal root={document.body} {...props} />\n);\n","import { enUS as enLocale, ru as ruLocale, type Locale } from 'date-fns/locale';\n\nexport const DEFAULT_DATE_FORMAT = 'dd.MM.yyyy';\n\nexport const OUTSIDE_CLICK_IGNORE_CLASS = 'react-datepicker-ignore-onclickoutside';\n\nexport const LocalesMap = {\n ru: ruLocale,\n en: enLocale,\n} satisfies Record<string, Locale>;\n\nexport type IDatePickerLocale = keyof typeof LocalesMap | Locale;\n","import { format, isSameDay, parse } from 'date-fns';\nimport {\n isEmpty,\n isNotEmpty,\n isStringNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { EMPTY_DATE_INPUT_VALUE } from '../DateInput';\n\nexport const getDateFormatter =\n (dateFormat: string) =>\n (date?: Date | null): string =>\n isNotEmpty(date) ? format(date, dateFormat) : '';\n\nexport const getDateValueParser =\n (dateFormat: string) =>\n (value: string): Date | null => {\n const inputValue = value === EMPTY_DATE_INPUT_VALUE ? '' : value;\n return isStringNotEmpty(inputValue) ? parse(value, dateFormat, new Date()) : null;\n };\n\nexport const areDatesEquals = (date1?: Date | null, date2?: Date | null): boolean =>\n (isEmpty(date1) && isEmpty(date2)) ||\n (isNotEmpty(date1) && isNotEmpty(date2) && isSameDay(date1, date2));\n","import { createThemedStyles, ITweakStyles } from '../../theme';\nimport { IDateInputStyles } from '../DateInput';\n\nexport const useStyles = createThemedStyles('DatePicker', {\n root: {\n width: '100%',\n height: '100%',\n },\n\n day: {},\n\n dayInner: {},\n\n datepicker: {},\n\n popper: {\n zIndex: 10,\n\n '&[data-placement^=\"bottom\"]': {\n paddingTop: 6,\n },\n\n '&[data-placement^=\"top\"]': {\n paddingBottom: 6,\n },\n\n '&[data-placement^=\"left\"]': {\n paddingRight: 6,\n },\n\n '&[data-placement^=\"right\"]': {\n paddingLeft: 6,\n },\n },\n});\n\nexport type IDatePickerStyles = ITweakStyles<\n typeof useStyles,\n { tweakDateInput: IDateInputStyles }\n>;\n","import {\n FC,\n FocusEvent,\n SyntheticEvent,\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type ReactDatePicker from 'react-datepicker';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport clsx from 'clsx';\nimport { isAfter, isBefore, isValid } from 'date-fns';\nimport {\n addDataAttributes,\n isEmpty,\n isNotEmpty,\n isString,\n isStringNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { offset } from '@floating-ui/react';\nimport { useMergedRefs, useOnClickOutside, useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { DateInput, EMPTY_DATE_INPUT_VALUE, IDateInputProps } from '../DateInput';\nimport { DatePickerBase, DatePickerHeader, PopperContainer } from './components';\nimport {\n DEFAULT_DATE_FORMAT,\n IDatePickerLocale,\n LocalesMap,\n OUTSIDE_CLICK_IGNORE_CLASS,\n} from './constants';\nimport { areDatesEquals, getDateFormatter, getDateValueParser } from './helpers';\nimport { IDatePickerBaseProps, IRange } from './types';\nimport { IDatePickerStyles, useStyles } from './DatePicker.styles';\n\nexport interface IDatePickerProps extends IDatePickerBaseProps, ICommonProps<IDatePickerStyles> {\n selectedDate?: Date | null;\n locale: IDatePickerLocale;\n months?: string[];\n /** @default 'dd.MM.yyyy' */\n dateFormat?: string;\n /** @default 1 */\n calendarStartDay?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n /** @default false */\n isRange?: boolean;\n /** @default false */\n isInline?: boolean;\n /** @default false */\n shouldRenderPopperInBody?: boolean;\n customInput?: FC<IDateInputProps>;\n onChangeDate?: (date: Date | null, event?: SyntheticEvent) => void;\n onChangeRange?: (date: IRange, event?: SyntheticEvent) => void;\n}\n\nexport const DatePicker = forwardRef<ReactDatePicker, IDatePickerProps>(function DatePicker(\n {\n data,\n selectedDate = null,\n minDate,\n maxDate,\n endDate = null,\n startDate = null,\n locale,\n months,\n calendarStartDay = 1,\n dateFormat = DEFAULT_DATE_FORMAT,\n monthsShown,\n placeholder,\n isRange = false,\n isInline = false,\n isDisabled,\n isClearable,\n strictParsing,\n fixedHeight,\n focusSelectedMonth,\n disabledKeyboardNavigation,\n shouldRenderPopperInBody = false,\n allowSameDay = false,\n shouldCloseOnSelect,\n showPreviousMonths,\n preventOpenOnFocus,\n popperModifiers = [],\n popperPlacement = 'bottom-start',\n todayButton,\n highlightDates,\n calendarContainer,\n dayClassName,\n customInput: CustomInput = DateInput,\n customInputRef,\n renderCustomHeader,\n filterDate,\n onYearChange,\n onMonthChange,\n onCalendarOpen,\n onCalendarClose,\n onChangeDate,\n onChangeRange,\n onBlur,\n onFocus,\n onKeyDown,\n tweakStyles,\n ...inputProps\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakDateInputStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakDateInput',\n currentComponentName: 'DatePicker',\n });\n\n const { formatDate, parseDateValue } = useMemo(\n () => ({\n formatDate: getDateFormatter(dateFormat),\n parseDateValue: getDateValueParser(dateFormat),\n }),\n [dateFormat],\n );\n\n const datePickerRef = useRef<DatePickerBase>();\n\n const componentRef = useMergedRefs([ref, datePickerRef]);\n\n const [isOpen, setIsOpen] = useState(false);\n\n const [dateValue, setDateValue] = useState(formatDate(selectedDate));\n\n const [start, setStart] = useState(startDate);\n const [startDateValue, setStartDateValue] = useState(formatDate(startDate));\n const [end, setEnd] = useState(endDate);\n const [endDateValue, setEndDateValue] = useState(formatDate(endDate));\n\n const hasDateInputValue = isRange\n ? isStringNotEmpty(startDateValue) || isStringNotEmpty(endDateValue)\n : isStringNotEmpty(dateValue);\n\n const dateInputProps: IDateInputProps = {\n ...inputProps,\n isRange,\n isDisabled,\n isClearable,\n isActive: isOpen,\n icon: isClearable && hasDateInputValue ? undefined : 'calendar',\n tweakStyles: tweakDateInputStyles,\n ...(isRange ? { startDate: startDateValue, endDate: endDateValue } : { date: dateValue }),\n };\n\n const handleChangeDate = (value: Date | null, event?: SyntheticEvent) => {\n onChangeDate?.(value, event);\n };\n\n const isDateInRange = (date: Date) =>\n (isEmpty(minDate) || isAfter(date, minDate)) && (isEmpty(maxDate) || isBefore(date, maxDate));\n\n // TODO: Если пропса allowSameDay равна true и введена только начальная дата, то\n // невозможно будет стереть значение в инпуте. Обойти это можно только если\n // полностью выбрать период, а затем уже очищать инпут (баг в react-datepicker. В этом\n // случае value равняется не [null, null], а [start, null])\n const handleChangeRange = (value: IRange, event?: SyntheticEvent) => {\n if (\n allowSameDay ||\n !areDatesEquals(value?.[0], startDate) ||\n !areDatesEquals(value?.[1], endDate)\n ) {\n setStart(value?.[0] ?? null);\n setEnd(value?.[1] ?? null);\n onChangeRange?.(value, event);\n }\n };\n\n // TODO: кажется это можно улучшить, т.к проблему пофиксили (https://github.com/Hacker0x01/react-datepicker/pull/5060)\n const handleChangeDateRangeInput = (value: string) => {\n const newStartDateValue = value.slice(0, 10);\n let newStart = parseDateValue(newStartDateValue);\n const newEndDateValue = value.slice(13);\n let newEnd = parseDateValue(newEndDateValue);\n\n if (\n (isNotEmpty(newStart) && !isValid(newStart)) ||\n (isNotEmpty(newStart) && !isDateInRange(newStart))\n ) {\n newStart = start;\n }\n\n if (\n (isNotEmpty(newEnd) && !isValid(newEnd)) ||\n (isNotEmpty(newEnd) && !isDateInRange(newEnd))\n ) {\n newEnd = end;\n }\n\n // Если оставить пустой начальную дату и заполненной конечную,\n // то ломается react-datepicker и в календарике ничего нельзя выбирать\n if (\n (isEmpty(newStart) && isValid(newEnd)) ||\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n (isValid(newStart) && isValid(newEnd) && isAfter(newStart!, newEnd!))\n ) {\n newStart = newEnd;\n newEnd = null;\n }\n\n setStartDateValue(newStartDateValue);\n setStart(newStart);\n setEndDateValue(newEndDateValue);\n setEnd(newEnd);\n };\n\n const handleDateInputBlur = (event: FocusEvent<HTMLInputElement>) => {\n onBlur?.(event);\n setDateValue(formatDate(selectedDate));\n };\n\n const setDateRangeValues = (startValue: Date | null = null, endValue: Date | null = null) => {\n let convertedStartDate = formatDate(startValue);\n const convertedEndDate = formatDate(endValue);\n if (convertedStartDate === '' && convertedEndDate !== '') {\n // Если выставлять пустую строку, то конечная дата перепрыгивает на место начальной\n convertedStartDate = EMPTY_DATE_INPUT_VALUE;\n }\n\n setStart(startValue);\n setStartDateValue(convertedStartDate);\n setEnd(endValue);\n setEndDateValue(convertedEndDate);\n };\n\n const handleDateRangeInputBlur = (event: FocusEvent<HTMLInputElement>) => {\n onBlur?.(event);\n handleChangeRange([start, end], event);\n setDateRangeValues(start, end);\n };\n\n const handleOpenCalendar = () => {\n setIsOpen(true);\n onCalendarOpen?.();\n };\n\n const handleCloseCalendar = () => {\n setIsOpen(false);\n if (isRange) {\n handleChangeRange([start, end]);\n setDateRangeValues(start, end);\n } else {\n setDateValue(formatDate(selectedDate));\n }\n onCalendarClose?.();\n };\n\n useEffect(() => {\n setDateValue(formatDate(selectedDate));\n setDateRangeValues(startDate, endDate);\n }, [selectedDate, startDate, endDate]);\n\n // Кастомный обработчик клика снаружи, чтобы можно было поставить фокус на Input при открытом календаре.\n // Проблема в том, что класс OUTSIDE_CLICK_IGNORE_CLASS висит контейнере Input'а. А react-datepicker\n // проверяет наличие класса непосредственно на элементе, который вызвал клик, но не на его родителях\n useOnClickOutside(\n () => datePickerRef.current?.calendar?.containerRef?.current,\n (event) => datePickerRef.current?.handleClickOutside(event as MouseEvent),\n OUTSIDE_CLICK_IGNORE_CLASS,\n );\n\n return (\n <div className={classes.root} {...addDataAttributes(data)}>\n <DatePickerBase\n ref={componentRef}\n minDate={minDate}\n maxDate={maxDate}\n locale={isString(locale) ? LocalesMap[locale] : locale}\n dateFormat={dateFormat}\n placeholderText={placeholder}\n calendarStartDay={calendarStartDay}\n inline={isInline}\n disabled={isDisabled}\n fixedHeight={fixedHeight}\n showPreviousMonths={showPreviousMonths}\n focusSelectedMonth={focusSelectedMonth}\n monthsShown={monthsShown}\n allowSameDay={allowSameDay}\n showPopperArrow={false}\n popperClassName={classes.popper}\n calendarClassName={classes.datepicker}\n dayClassName={(v) => clsx(classes.day, dayClassName?.(v))}\n disabledKeyboardNavigation={disabledKeyboardNavigation}\n popperContainer={shouldRenderPopperInBody ? PopperContainer : undefined}\n // Убираем дефолтный отступ в 10px из либы\n // https://github.com/Hacker0x01/react-datepicker/blob/db67a58de2b05d2681bdf0a4977b606095d514c4/src/with_floating.tsx#L58\n popperModifiers={[offset(-10), ...popperModifiers]}\n popperPlacement={popperPlacement}\n strictParsing={strictParsing}\n preventOpenOnFocus={preventOpenOnFocus}\n shouldCloseOnSelect={shouldCloseOnSelect}\n customInputRef={customInputRef}\n customInput={<CustomInput {...dateInputProps} />}\n renderDayContents={(day) => <div className={classes.dayInner}>{day}</div>}\n renderCustomHeader={\n renderCustomHeader ?? ((baseProps) => <DatePickerHeader {...baseProps} months={months} />)\n }\n todayButton={todayButton}\n highlightDates={highlightDates}\n calendarContainer={calendarContainer}\n filterDate={filterDate}\n onYearChange={onYearChange}\n onMonthChange={onMonthChange}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n onCalendarOpen={handleOpenCalendar}\n onCalendarClose={handleCloseCalendar}\n onChangeRaw={(_, value?: string) => {\n // Если передали value, значит этот обработчик вызвался после изменения значения в инпуте\n // (react-datepicker вызывает эту функцию также при клике на дату в календаре)\n if (value === undefined) {\n return;\n }\n if (isRange) {\n handleChangeDateRangeInput(value);\n } else {\n setDateValue(value);\n }\n }}\n {...(isRange\n ? {\n startDate: start,\n endDate: end,\n selected: start,\n selectsRange: true,\n onBlur: handleDateRangeInputBlur,\n onChange: handleChangeRange,\n }\n : {\n selected: selectedDate,\n onBlur: handleDateInputBlur,\n onChange: handleChangeDate,\n })}\n />\n </div>\n );\n});\n","export const LINK_REGEXP = /(http(s?):\\/\\/(.*))(\\s?)/;\n","import { colors, ITweakStyles, createThemedStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('Description', {\n root: {},\n\n button: {\n cursor: 'pointer',\n display: 'inline-block',\n color: colors.FONT_MEDIUM,\n marginTop: 18,\n textTransform: 'capitalize',\n borderBottom: [1, 'dashed', colors.FONT_MEDIUM],\n\n '&:hover': {\n color: colors.FONT_MAIN,\n },\n },\n\n link: {\n color: colors.FONT_MEDIUM,\n textDecoration: 'none',\n borderBottom: [1, 'dashed', colors.FONT_MEDIUM],\n\n '&:hover': {\n color: colors.FONT_MAIN,\n },\n },\n});\n\nexport type IDescriptionStyles = ITweakStyles<typeof useStyles>;\n","import { FC, useState } from 'react';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { LINK_REGEXP } from './constants';\nimport { useStyles, IDescriptionStyles } from './Description.styles';\n\nexport interface IDescriptionProps extends ICommonProps<IDescriptionStyles> {\n text: string;\n moreTitle?: string;\n lessTitle?: string;\n /** @default 150 */\n truncateIndex?: number;\n /** @default true */\n isAlwaysOpen?: boolean;\n}\n\nexport const Description: FC<IDescriptionProps> = ({\n text,\n moreTitle,\n lessTitle,\n truncateIndex = 150,\n isAlwaysOpen = true,\n testId,\n data,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const isTooShort = text.length < truncateIndex;\n const [isOpen, setIsOpen] = useState(isAlwaysOpen);\n const link = text.match(LINK_REGEXP);\n const linkText = link && link[0];\n const textWithNoLink = text.replace(LINK_REGEXP, '');\n\n const shortText = text.slice(0, text.slice(0, truncateIndex).lastIndexOf(' '));\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n {isAlwaysOpen || isOpen || isTooShort ? (\n <div>\n <span>{textWithNoLink} </span>\n {!!linkText && (\n <a className={classes.link} href={linkText} target=\"_blank\" rel=\"noopener noreferrer\">\n {linkText}\n </a>\n )}\n </div>\n ) : (\n <div>\n <span>{shortText}</span>\n </div>\n )}\n {isAlwaysOpen || isTooShort ? undefined : (\n <div className={classes.button} onClick={() => setIsOpen(!isOpen)}>\n {isOpen ? lessTitle : moreTitle}\n </div>\n )}\n </div>\n );\n};\n","import { SyntheticEvent } from 'react';\n\nexport const blockEvent = (event: SyntheticEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n};\n","import { ITweakStyles, animations, createThemedStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('FileInput', {\n root: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n },\n\n label: {\n position: 'relative',\n width: 'fit-content',\n fontSize: 16,\n marginBottom: 12,\n },\n\n requiredLabel: {\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n right: -8,\n top: 4,\n transform: 'translate(0, -50%)',\n width: 6,\n height: 6,\n borderRadius: '50%',\n },\n },\n\n description: {\n marginBottom: 8,\n fontSize: 12,\n },\n\n text: {\n padding: [16, 0],\n },\n\n inputWrapper: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n boxSizing: 'border-box',\n marginBottom: 8,\n transition: animations.defaultTransition,\n transitionProperty: 'background-color, color',\n },\n\n inputLabel: {\n position: 'absolute',\n inset: 0,\n cursor: 'pointer',\n\n '& input': {\n opacity: 0,\n width: 1,\n height: 1,\n zIndex: -1,\n },\n },\n\n dragged: {},\n\n active: {},\n\n disabled: {\n cursor: 'not-allowed',\n pointerEvents: 'none',\n },\n\n fileList: {\n display: 'flex',\n flexWrap: 'wrap',\n columnGap: 6,\n rowGap: 12,\n },\n});\n\nexport type IFileInputStyles = ITweakStyles<typeof useStyles>;\n","import {\n ReactNode,\n useState,\n InputHTMLAttributes,\n forwardRef,\n ChangeEventHandler,\n DragEventHandler,\n} from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n addDataTestId,\n isEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { blockEvent } from './helpers';\nimport { IFileInputStyles, useStyles } from './FileInput.styles';\n\nexport interface IFileInputProps extends ICommonProps<IFileInputStyles> {\n fileList?: ReactNode;\n label?: ReactNode;\n text: ReactNode;\n description?: ReactNode;\n /** @default false */\n isDragAndDropDisabled?: boolean;\n /** @default false */\n isRequired?: boolean;\n /** @default false */\n isReadOnly?: boolean;\n /** @default false */\n isMultipleDisabled?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isActive?: boolean;\n /** @default undefined */\n accept?: InputHTMLAttributes<HTMLInputElement>['accept'];\n onAdd?: (files: File[]) => void;\n}\n\nexport const FileInput = forwardRef<HTMLInputElement, IFileInputProps>(function FileInput(\n {\n fileList,\n label,\n text,\n description,\n isDragAndDropDisabled = false,\n isRequired = false,\n isReadOnly = false,\n isMultipleDisabled = false,\n isDisabled = false,\n isActive = false,\n accept,\n onAdd,\n testId,\n tweakStyles,\n data,\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const [isDragOver, setIsDragOver] = useState(false);\n\n const handleAdd = (files: FileList | null) => {\n if (isDisabled || isEmpty(files) || files?.length === 0) {\n return;\n }\n\n onAdd?.([...files]);\n };\n\n const handleDragStart: DragEventHandler<HTMLDivElement> = (event) => {\n blockEvent(event);\n setIsDragOver(true);\n };\n\n const handleDragStop: DragEventHandler<HTMLDivElement> = (event) => {\n blockEvent(event);\n setIsDragOver(false);\n };\n\n const handleDrop: DragEventHandler<HTMLDivElement> = (event) => {\n handleDragStop(event);\n\n handleAdd(event.dataTransfer.files);\n };\n\n const handleFileChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n handleAdd(event.target.files);\n };\n\n const dndHandlers =\n !isDragAndDropDisabled && !isDisabled\n ? {\n onDragOver: handleDragStart,\n onDragEnter: handleDragStart,\n onDragLeave: handleDragStop,\n onDrop: handleDrop,\n }\n : undefined;\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n {isReactNodeNotEmpty(label) && (\n <div className={clsx(classes.label, { [classes.requiredLabel]: isRequired })}>{label}</div>\n )}\n {!isReadOnly && (\n <div\n className={clsx(classes.inputWrapper, {\n [classes.dragged]: isDragOver,\n [classes.disabled]: isDisabled,\n [classes.active]: isActive,\n })}\n {...dndHandlers}\n >\n {isReactNodeNotEmpty(text) && <div className={classes.text}>{text}</div>}\n <label className={classes.inputLabel}>\n <input\n ref={ref}\n type=\"file\"\n value=\"\"\n onChange={handleFileChange}\n multiple={!isMultipleDisabled}\n disabled={isDisabled}\n accept={accept}\n {...addDataTestId(testId, 'input')}\n />\n </label>\n </div>\n )}\n\n {isReactNodeNotEmpty(description) && <div className={classes.description}>{description}</div>}\n\n <div className={classes.fileList}>{fileList}</div>\n </div>\n );\n});\n","import { ITweakStyles, animations, createThemedStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('IconButton', {\n root: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n outline: 'none',\n boxSizing: 'border-box',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color, color, border-color, opacity, visibility',\n border: 'none',\n position: 'relative',\n boxShadow: 'none',\n borderRadius: '50%',\n background: 'none',\n padding: 0,\n flexShrink: 0,\n\n '&:disabled': {\n extend: 'disabled',\n },\n\n '&:active': {\n extend: 'active',\n },\n\n width: 'var(--icon-button-size)',\n height: 'var(--icon-button-size)',\n '--icon-button-icon-size': '20px',\n },\n\n 'cancel-light': {},\n\n cancel: {},\n\n main: {},\n\n custom: {},\n\n active: {},\n\n disabled: {\n cursor: 'not-allowed',\n pointerEvents: 'none',\n },\n\n loading: {\n '& $loader': {\n display: 'block',\n },\n },\n\n icon: {\n display: 'flex',\n alignItems: 'center',\n width: 'var(--icon-button-icon-size)',\n height: 'var(--icon-button-icon-size)',\n },\n\n loader: {\n display: 'none',\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n\n width: 'var(--icon-button-icon-size)',\n height: 'var(--icon-button-icon-size)',\n },\n\n s: {\n '--icon-button-size': '24px',\n },\n\n m: {\n '--icon-button-size': '32px',\n },\n\n l: {\n '--icon-button-size': '40px',\n },\n});\n\nexport type IIconButtonStyles = ITweakStyles<typeof useStyles>;\n","import { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { renderIcon, IIcon } from '../Icon';\nimport { ThemedPreloader } from '../ThemedPreloader';\nimport { IIconButtonSize, IIconButtonView, IIconButtonHTMLBaseProps } from './types';\nimport { useStyles, IIconButtonStyles } from './IconButton.styles';\n\nexport interface IIconButtonProps\n extends IIconButtonHTMLBaseProps,\n ICommonProps<IIconButtonStyles> {\n icon: IIcon;\n /** @default 'm' */\n size?: IIconButtonSize;\n /** @default 'cancel-light' */\n view?: IIconButtonView;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isActive?: boolean;\n /** @default false */\n isLoading?: boolean;\n}\n\nexport const IconButton = forwardRef<HTMLButtonElement, IIconButtonProps>(function IconButton(\n {\n icon,\n size = 'm',\n view = 'cancel-light',\n isDisabled = false,\n isActive = false,\n isLoading = false,\n type = 'button',\n testId,\n tweakStyles,\n data,\n onClick,\n ...restProps\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const hasNoAction = isDisabled || isLoading;\n\n return (\n <button\n ref={ref}\n className={clsx(classes.root, classes[view], classes[size], {\n [classes.disabled]: isDisabled,\n [classes.active]: isActive,\n [classes.loading]: isLoading,\n })}\n type={type}\n disabled={isDisabled}\n onClick={hasNoAction ? undefined : onClick}\n {...restProps}\n {...addDataAttributes(data, testId)}\n >\n {isLoading ? (\n <span className={classes.loader}>\n <ThemedPreloader type=\"default\" useCurrentColor />\n </span>\n ) : (\n <span className={classes.icon}>{renderIcon(icon)}</span>\n )}\n </button>\n );\n});\n","import { rgba } from '../../helpers';\nimport { colors, createThemedStyles, dimensions, ITweakStyles } from '../../theme';\nimport { ITooltipSizes } from './types';\n\nexport const useStyles = createThemedStyles('Tooltip', {\n root: {\n display: 'inline-block',\n boxSizing: 'border-box',\n },\n\n tooltip: {\n fontSize: 14,\n padding: [18, 20],\n letterSpacing: 0.15,\n backgroundColor: colors.CLASSIC_WHITE,\n color: colors.FONT_MAIN,\n boxShadow: `0 0 1px ${rgba(colors.FONT_MAIN, 0.4)}, 0 -2px 6px ${rgba(\n colors.FONT_MAIN,\n 0.06,\n )}, 0 8px 32px -8px ${rgba(colors.FONT_MAIN, 0.3)}`,\n borderRadius: 12,\n lineHeight: 1.4,\n maxWidth: 320,\n },\n\n hint: {\n whiteSpace: 'nowrap',\n fontSize: 12,\n padding: [8, 12],\n borderRadius: dimensions.BORDER_RADIUS_SMALL,\n backgroundColor: colors.FONT_MEDIUM,\n color: colors.CLASSIC_WHITE,\n letterSpacing: 0.2,\n },\n\n custom: {},\n\n info: {},\n\n error: {\n '&$tooltip': {\n backgroundColor: colors.RED_WARNING,\n color: colors.CLASSIC_WHITE,\n },\n\n '&$hint': {\n backgroundColor: colors.RED_WARNING,\n },\n },\n});\n\nexport type ITooltipStyles = ITweakStyles<typeof useStyles, ITooltipSizes>;\n","import { FC, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes, isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { ITooltipSize } from './types';\nimport { useStyles, ITooltipStyles } from './Tooltip.styles';\n\nexport interface ITooltipProps extends ICommonProps<ITooltipStyles> {\n text: ReactNode;\n /** @default 'tooltip' */\n view?: 'tooltip' | 'hint' | 'custom';\n /** @default 'info' */\n type?: 'info' | 'error';\n /** @default 'undefined' */\n size?: ITooltipSize;\n}\n\nexport const Tooltip: FC<ITooltipProps> = ({\n text,\n view = 'tooltip',\n type = 'info',\n size,\n data,\n testId,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <div\n className={clsx(\n classes.root,\n classes[view],\n classes[type],\n isNotEmpty(size) && classes[size],\n )}\n {...addDataAttributes(data, testId)}\n >\n {text}\n </div>\n );\n};\n","import { ITweakStyles, createThemedStyles } from '../../theme';\nimport { ITooltipStyles } from '../Tooltip';\n\nexport const useStyles = createThemedStyles('TextWithTooltip', {\n root: {\n position: 'relative',\n },\n\n tooltip: {\n zIndex: 9999,\n },\n\n clickable: {\n cursor: 'pointer',\n },\n});\n\nexport type ITextWithTooltipStyles = ITweakStyles<\n typeof useStyles,\n { tweakTooltip: ITooltipStyles }\n>;\n","import { CSSProperties, FC, ReactNode, useEffect, useRef, useState } from 'react';\nimport { Portal } from 'react-overlays';\nimport usePopper, { Modifier, Placement } from 'react-overlays/usePopper';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { useOnClickOutsideWithRef, useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { ITooltipProps, Tooltip } from '../Tooltip';\nimport { ITextWithTooltipStyles, useStyles } from './TextWithTooltip.styles';\n\nexport interface ITextWithTooltipProps extends ICommonProps<ITextWithTooltipStyles> {\n children: ReactNode;\n tooltipText: ITooltipProps['text'];\n /** @default 'tooltip' */\n tooltipView?: ITooltipProps['view'];\n /** @default 'info' */\n tooltipType?: ITooltipProps['type'];\n /** @default 'top' */\n tooltipPosition?: Placement;\n /** @default [] */\n tooltipModifiers?: Array<Partial<Modifier<any, any>>>;\n tooltipOffsetOptions?: Record<string, unknown>;\n /** @default 'undefined' */\n tooltipSize?: ITooltipProps['size'];\n /** @default 'hover' */\n mouseEventType?: 'hover' | 'click';\n hoverDelay?: number;\n /** @default false */\n isDisabled?: boolean;\n /** @default true */\n shouldRenderInBody?: boolean;\n}\n\n/** @deprecated Используйте {@link import('../WithTooltip').WithTooltip WithTooltip} */\nexport const TextWithTooltip: FC<ITextWithTooltipProps> = ({\n children,\n tooltipText,\n tooltipPosition = 'top',\n tooltipView = 'tooltip',\n tooltipType = 'info',\n tooltipModifiers = [],\n tooltipOffsetOptions,\n tooltipSize,\n isDisabled = false,\n shouldRenderInBody = true,\n mouseEventType = 'hover',\n hoverDelay,\n testId,\n data,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakTooltipStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakTooltip',\n currentComponentName: 'TextWithTooltip',\n });\n\n const [isTooltipVisible, setIsTooltipVisible] = useState(false);\n const [tooltipTimeout, setTooltipTimeout] = useState<ReturnType<typeof setTimeout>>();\n\n const root = useRef<HTMLDivElement>(null);\n const tooltip = useRef<HTMLDivElement>(null);\n\n const hasDelay = hoverDelay !== undefined;\n\n const handleMouseEnter = () => {\n if (hasDelay) {\n const timeout = setTimeout(() => {\n setIsTooltipVisible(true);\n }, hoverDelay);\n\n setTooltipTimeout(timeout);\n } else {\n setIsTooltipVisible(true);\n }\n };\n\n const handleMouseLeave = () => {\n if (hasDelay) {\n clearTimeout(tooltipTimeout);\n }\n setIsTooltipVisible(false);\n };\n\n useEffect(() => () => clearTimeout(tooltipTimeout), []);\n\n const { styles: popperStyles, attributes } = usePopper(root.current, tooltip.current, {\n enabled: isTooltipVisible,\n placement: tooltipPosition,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 6],\n ...tooltipOffsetOptions,\n },\n },\n ...tooltipModifiers,\n ],\n });\n\n useOnClickOutsideWithRef(\n tooltip,\n () => {\n if (mouseEventType === 'click') {\n setIsTooltipVisible(false);\n }\n },\n root,\n );\n\n const props =\n mouseEventType === 'click'\n ? {\n onClick: () => setIsTooltipVisible(true),\n }\n : {\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n };\n\n const shouldShowTooltip = tooltipText !== undefined && tooltipText !== null && !isDisabled;\n\n return (\n <div\n className={clsx(\n classes.root,\n mouseEventType === 'click' && shouldShowTooltip && classes.clickable,\n )}\n {...(shouldShowTooltip ? props : undefined)}\n {...addDataAttributes(data, testId)}\n ref={root}\n >\n {shouldShowTooltip && (\n <Portal container={shouldRenderInBody ? document.body : root.current}>\n <div\n className={classes.tooltip}\n style={popperStyles.popper as CSSProperties}\n {...attributes.popper}\n ref={tooltip}\n >\n <Tooltip\n view={tooltipView}\n type={tooltipType}\n text={tooltipText}\n size={tooltipSize}\n tweakStyles={tweakTooltipStyles}\n />\n </div>\n </Portal>\n )}\n {children}\n </div>\n );\n};\n","import { mimeTypes } from '../../constants';\nimport { IIconType } from '../Icon';\n\nexport const FILE_ICON_DEFAULT: IIconType = 'file-other';\n\nexport const iconTypeMap: Record<string, IIconType> = {\n [mimeTypes.xls]: 'file-excel',\n [mimeTypes.xlsx]: 'file-excel',\n [mimeTypes.jpeg]: 'file-image',\n [mimeTypes.png]: 'file-image',\n [mimeTypes.pdf]: 'file-pdf',\n [mimeTypes.doc]: 'file-word',\n [mimeTypes.docx]: 'file-word',\n [mimeTypes.xml]: 'file-xml',\n [mimeTypes.zip]: 'file-zip',\n};\n\nexport const FILE_ITEM_SIZES = ['m', 'l'] as const;\n","import { isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { IMimeType, mimeTypes } from '../../constants';\nimport { IIconType } from '../Icon';\nimport { FILE_ICON_DEFAULT, iconTypeMap } from './constants';\nimport { IFileInfo } from './types';\n\nexport const getFileExtensionByFilename = (fileName: string): string | undefined => {\n const splitFileName = fileName.split('.');\n return splitFileName.length > 1 ? splitFileName.pop() : undefined;\n};\n\nexport const getMimeTypeByFilename = (fileName: string): string | undefined => {\n const ext = getFileExtensionByFilename(fileName);\n return isNotEmpty(ext) ? mimeTypes[ext as IMimeType] : undefined;\n};\n\nexport const getFileIcon = ({ type, name }: IFileInfo): IIconType => {\n if (isNotEmpty(type) && type in iconTypeMap) {\n return iconTypeMap[type];\n }\n\n const mimeType = getMimeTypeByFilename(name);\n if (isNotEmpty(mimeType) && mimeType in iconTypeMap) {\n return iconTypeMap[mimeType];\n }\n\n return FILE_ICON_DEFAULT;\n};\n","import { ITweakStyles, animations, createThemedStyles } from '../../theme';\nimport { IIconButtonStyles } from '../IconButton';\nimport { IThemedPreloaderStyles } from '../ThemedPreloader';\nimport { ITooltipStyles } from '../Tooltip';\n\nexport const useStyles = createThemedStyles('FileItem', {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 4,\n },\n\n fileItemWrapper: {\n display: 'flex',\n gap: 12,\n width: '100%',\n cursor: 'pointer',\n boxSizing: 'border-box',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color, color, box-shadow, border-color',\n },\n\n m: {\n '&$fileItemWrapper': {\n padding: [10, 10, 10, 12],\n },\n\n '--icon-size': '20px',\n },\n\n l: {\n '&$fileItemWrapper': {\n padding: [12, 16],\n },\n\n '--icon-size': '32px',\n },\n\n fileIcon: {\n maxWidth: 'var(--icon-size)',\n maxHeight: 'var(--icon-size)',\n },\n\n fileName: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontSize: 16,\n },\n\n fileNameContainer: {\n overflow: 'hidden',\n marginRight: 'auto',\n },\n\n preloader: {\n display: 'flex',\n margin: 6,\n },\n\n 'preloader-dots': {\n width: 26,\n marginTop: 12,\n },\n\n 'preloader-default': {\n width: 20,\n height: 20,\n },\n\n 'preloader-logo': {\n width: 20,\n height: 20,\n },\n\n metadata: {\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n fontSize: 12,\n },\n\n actions: {\n display: 'flex',\n flexShrink: 0,\n margin: -6,\n },\n\n fileSize: {},\n\n footer: {},\n\n error: {\n fontSize: 12,\n },\n\n info: {\n fontSize: 12,\n },\n\n disabled: {\n cursor: 'not-allowed',\n },\n});\n\nexport const themedPreloaderStyles: IThemedPreloaderStyles = {\n tweakDotsPreloader: {\n root: {\n gap: 4,\n '--dot-size': '6px',\n },\n },\n};\n\nexport type IFileItemStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakRemoveIconButton: IIconButtonStyles;\n tweakPreloader: IThemedPreloaderStyles;\n tweakTooltip: ITooltipStyles;\n }\n>;\n","import { FC, MouseEvent, KeyboardEvent, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { filesize } from 'filesize';\nimport {\n addClickHandler,\n addDataAttributes,\n isFunction,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { IIcon, renderIcon } from '../Icon';\nimport { IconButton } from '../IconButton';\nimport { TextWithTooltip } from '../TextWithTooltip';\nimport { IThemedPreloaderProps, ThemedPreloader } from '../ThemedPreloader';\nimport { getFileIcon } from './helpers';\nimport { IFileInfo, IFileItemSize } from './types';\nimport { IFileItemStyles, themedPreloaderStyles, useStyles } from './FileItem.styles';\n\nexport interface IFileItemProps extends ICommonProps<IFileItemStyles> {\n fileInfo: IFileInfo;\n icon?: IIcon;\n /** @default trash-can */\n removeIcon?: IIcon;\n metadata?: ReactNode;\n actions?: ReactNode;\n error?: ReactNode;\n info?: ReactNode;\n /** @default m */\n itemSize?: IFileItemSize;\n /** @default default */\n preloaderType?: IThemedPreloaderProps['type'];\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n areActionsDisabled?: boolean;\n /** @default false */\n isLoading?: boolean;\n /** @default false */\n shouldShowSize?: boolean;\n onClick?: (event: MouseEvent | KeyboardEvent) => void;\n onRemove?: (event: MouseEvent | KeyboardEvent) => void;\n}\n\nexport const FileItem: FC<IFileItemProps> = ({\n fileInfo,\n icon = getFileIcon(fileInfo),\n metadata,\n actions,\n error,\n info,\n isDisabled = false,\n areActionsDisabled = false,\n isLoading = false,\n shouldShowSize = false,\n itemSize = 'm',\n preloaderType = 'default',\n removeIcon = 'trash-can',\n onRemove,\n onClick,\n testId,\n data,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakIconButtonStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakRemoveIconButton',\n currentComponentName: 'FileItem',\n });\n\n const tweakPreloaderStyles = useTweakStyles({\n innerStyles: themedPreloaderStyles,\n tweakStyles,\n className: 'tweakPreloader',\n currentComponentName: 'FileItem',\n });\n\n const tweakTooltipStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakTooltip',\n currentComponentName: 'FileItem',\n });\n\n const handleClick = (event: MouseEvent | KeyboardEvent) => {\n event.stopPropagation();\n onClick?.(event);\n };\n\n const handleRemove = (event: MouseEvent | KeyboardEvent) => {\n event.stopPropagation();\n onRemove?.(event);\n };\n\n const { name, size } = fileInfo;\n const hasRemoveButton = isFunction(onRemove);\n\n return (\n <div className={classes.root}>\n <div\n className={clsx(classes.fileItemWrapper, classes[itemSize], {\n [classes.disabled]: isDisabled,\n })}\n {...addDataAttributes(data, testId)}\n {...addClickHandler(handleClick, !isDisabled)}\n >\n <div className={classes.fileIcon}>{renderIcon(icon)}</div>\n\n <div className={classes.fileNameContainer}>\n <TextWithTooltip tooltipText={name} tooltipView=\"hint\" tweakStyles={tweakTooltipStyles}>\n <div className={classes.fileName}>{name}</div>\n </TextWithTooltip>\n\n <div className={classes.metadata}>\n {metadata}\n {shouldShowSize && isNotEmpty(size) && (\n <div className={classes.fileSize}>{filesize(size)}</div>\n )}\n </div>\n </div>\n\n <div className={classes.actions}>\n {isLoading ? (\n <div className={clsx(classes.preloader, classes[`preloader-${preloaderType}`])}>\n <ThemedPreloader\n type={preloaderType}\n tweakStyles={tweakPreloaderStyles}\n useCurrentColor\n />\n </div>\n ) : (\n hasRemoveButton && (\n <IconButton\n icon={removeIcon}\n onClick={handleRemove}\n isDisabled={areActionsDisabled}\n tweakStyles={tweakIconButtonStyles}\n />\n )\n )}\n\n {actions}\n </div>\n </div>\n\n <div className={classes.footer}>\n {isReactNodeNotEmpty(error) && <div className={classes.error}>{error}</div>}\n\n {isReactNodeNotEmpty(info) && <div className={classes.info}>{info}</div>}\n </div>\n </div>\n );\n};\n","import { endOfMonth, endOfYear, startOfMonth, startOfYear, sub } from 'date-fns';\nimport type {\n IFilterLocale,\n IFilterLocaleKey,\n IPeriodGetter,\n ISelectLocale,\n ISelectLocaleKey,\n} from './types';\n\nexport const PERIODS = ['THIS_MONTH', 'LAST_MONTH', 'THIS_YEAR', 'LAST_YEAR', 'CUSTOM'] as const;\n\nexport const SelectLocales: Record<string, ISelectLocale> = {\n ru: {\n clear: 'Очистить',\n all: 'Все',\n chosen: 'Выбранные',\n nothingFound: 'Ничего не найдено',\n searchPlaceholder: 'Поиск',\n },\n\n en: {\n clear: 'Clear',\n all: 'All',\n chosen: 'Chosen',\n nothingFound: 'Nothing found',\n searchPlaceholder: 'Search',\n },\n};\n\nexport const FilterLocales: Record<string, IFilterLocale> = {\n ru: {\n clear: 'Очистить',\n all: 'Все',\n other: 'Остальные',\n chosen: 'Выбранные',\n nothingFound: 'Не найдено',\n from: 'От',\n to: 'До',\n back: 'Назад',\n searchPlaceholder: 'Поиск',\n displayedFields: 'Поля для поиска',\n months: [\n 'Январь',\n 'Февраль',\n 'Март',\n 'Апрель',\n 'Май',\n 'Июнь',\n 'Июль',\n 'Август',\n 'Сентябрь',\n 'Октябрь',\n 'Ноябрь',\n 'Декабрь',\n ],\n periods: {\n THIS_MONTH: 'Этот месяц',\n LAST_MONTH: 'Прошлый месяц',\n THIS_YEAR: 'Этот год',\n LAST_YEAR: 'Прошлый год',\n CUSTOM: 'Другой период',\n },\n },\n\n en: {\n clear: 'Clear',\n all: 'All',\n other: 'Others',\n chosen: 'Chosen',\n nothingFound: 'Nothing found',\n from: 'From',\n to: 'To',\n back: 'Back',\n searchPlaceholder: 'Search',\n displayedFields: 'Displayed fields',\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n periods: {\n THIS_MONTH: 'This month',\n LAST_MONTH: 'Previous month',\n THIS_YEAR: 'This year',\n LAST_YEAR: 'Previous year',\n CUSTOM: 'Custom',\n },\n },\n};\n\nexport const DEFAULT_LOCALE: IFilterLocaleKey = 'en';\n\nexport const DEFAULT_SELECT_LOCALE: ISelectLocaleKey = 'en';\n\nexport const DEFAULT_DATE_FORMAT = 'dd.MM.yyyy';\n\nexport const DEFAULT_PICKER_PROPS = {};\n\nexport const PERIODS_GETTERS: Record<string, IPeriodGetter> = {\n THIS_MONTH: () => {\n const today = new Date();\n return {\n from: startOfMonth(today),\n to: endOfMonth(today),\n };\n },\n LAST_MONTH: () => {\n const day = sub(new Date(), { months: 1 });\n return {\n from: startOfMonth(day),\n to: endOfMonth(day),\n };\n },\n THIS_YEAR: () => {\n const today = new Date();\n return {\n from: startOfYear(today),\n to: endOfYear(today),\n };\n },\n LAST_YEAR: () => {\n const day = sub(new Date(), { years: 1 });\n return {\n from: startOfYear(day),\n to: endOfYear(day),\n };\n },\n};\n","import { merge } from '@true-engineering/true-react-platform-helpers';\nimport { DEFAULT_LOCALE, DEFAULT_SELECT_LOCALE, FilterLocales, SelectLocales } from './constants';\nimport {\n type IFilterLocale,\n type IFilterLocaleKey,\n type IPartialFilterLocale,\n ISelectLocale,\n ISelectLocaleKey,\n} from './types';\n\nexport const getLocale = (\n key: IFilterLocaleKey = DEFAULT_LOCALE,\n custom?: IPartialFilterLocale,\n custom2?: IPartialFilterLocale,\n): IFilterLocale => merge(FilterLocales[key], custom, custom2);\n\nexport const getSelectLocale = (\n key: ISelectLocaleKey = DEFAULT_SELECT_LOCALE,\n custom?: Partial<ISelectLocale>,\n custom2?: Partial<ISelectLocale>,\n): ISelectLocale => merge(SelectLocales[key], custom, custom2);\n\nexport const sortValues = (arr: Array<number | undefined>): Array<number | undefined> =>\n arr.includes(undefined) ? arr : (arr as number[]).sort((a, b) => (a < b ? -1 : 1));\n\nexport const defaultConvertFunction = (val: unknown): string => String(val);\n","import { isStringNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { formatNumber, isSpaceChar } from '../../helpers';\nimport type { INumberInputProps } from './NumberInput';\n\nconst getPrevSpaces = (val: string, position: number): number =>\n val.slice(0, position).split('').filter(isSpaceChar).length;\n\nexport const getNewCaretPosition = (\n defaultPosition: number,\n oldValue: string,\n newValue: string,\n isDeleteForwardAction?: boolean,\n): number => {\n if (oldValue === newValue) {\n return isDeleteForwardAction ? defaultPosition + 1 : defaultPosition;\n }\n\n const isAdding = newValue.length > oldValue.length;\n const oldPrevSpaces = getPrevSpaces(oldValue, defaultPosition - (isAdding ? 1 : 0));\n const newPrevSpaces = getPrevSpaces(newValue, defaultPosition);\n const diff = newPrevSpaces - oldPrevSpaces;\n const res = defaultPosition + diff;\n if (res <= 0) {\n return 0;\n }\n return res - (isSpaceChar(newValue[res - 1]) ? 1 : 0);\n};\n\nexport const formatNumberWithDefault = (\n value: number | undefined,\n defaultValue?: number,\n): string => {\n const val = formatNumber(value);\n return isStringNotEmpty(val) ? val : formatNumber(defaultValue);\n};\n\nexport const constructRegExp = ({\n canBeFloat,\n canBeNegative,\n intPartPrecision,\n precision,\n}: Pick<\n INumberInputProps,\n 'canBeFloat' | 'canBeNegative' | 'intPartPrecision' | 'precision'\n>): string => {\n const basePart = `\\\\d{0,${intPartPrecision}}`;\n const floatPart = `(\\\\.\\\\d{0,${precision}})?`;\n const negativePart = '(\\\\-)?';\n\n return `^${canBeNegative ? negativePart : ''}${basePart}${canBeFloat ? floatPart : ''}$`;\n};\n\n// const testNewCaretPosition = () => {\n// console.log(getNewCaretPosition(1, '', '1') === 1);\n// console.log(getNewCaretPosition(2, '1', '12') === 2);\n// console.log(getNewCaretPosition(3, '12', '123') === 3);\n// console.log(getNewCaretPosition(4, '123', '1 234') === 5);\n// console.log(getNewCaretPosition(6, '1 234', '12 345') === 6);\n// console.log(getNewCaretPosition(2, '1 234', '10 234') === 2);\n// console.log(getNewCaretPosition(3, '1 234', '10 234') === 2);\n// console.log(getNewCaretPosition(1, '1 234', '21 234') === 1);\n// console.log(getNewCaretPosition(8, '123 456', '123 456.') === 8);\n// console.log(getNewCaretPosition(8, '123 456', '1 234 567') === 9);\n// console.log(getNewCaretPosition(5, '123 456', '1 230 456') === 5);\n// console.log(getNewCaretPosition(4, '123 456', '1 230 456') === 5);\n//\n// console.log(getNewCaretPosition(0, '1', '') === 0);\n// console.log(getNewCaretPosition(1, '12', '1') === 1);\n// console.log(getNewCaretPosition(2, '123', '12') === 2);\n// console.log(getNewCaretPosition(4, '1 234', '123') === 3);\n// console.log(getNewCaretPosition(5, '12 345', '1 234') === 5);\n// console.log(getNewCaretPosition(1, '10 234', '1 234') === 1);\n// console.log(getNewCaretPosition(2, '10 234', '10 234') === 2);\n// console.log(getNewCaretPosition(0, '21 234', '1 234') === 0);\n// console.log(getNewCaretPosition(7, '123 456.', '123 456') === 7);\n// console.log(getNewCaretPosition(8, '1 234 567', '123 456') === 7);\n// console.log(getNewCaretPosition(5, '1 230 456', '1 230 456') === 5);\n// console.log(getNewCaretPosition(4, '1 230 456', '123 456') === 3);\n//\n// console.log(getNewCaretPosition(6, '1 234 567', '123 467') === 5);\n// console.log(getNewCaretPosition(5, '1 234 567', '1 234') === 5);\n// };\n//\n// testNewCaretPosition();\n","import { FocusEvent, forwardRef, KeyboardEvent, useState } from 'react';\nimport { isStringNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport {\n formatNumber,\n formatStringNumber,\n getNumberInRange,\n removeStringFormat,\n setCaretPosition,\n stringToNumber,\n} from '../../helpers';\nimport { useDidMountEffect } from '../../hooks';\nimport { IChangeInputEvent, IInputProps, Input } from '../Input';\nimport { constructRegExp, formatNumberWithDefault, getNewCaretPosition } from './helpers';\n\nexport interface INumberInputProps extends Omit<IInputProps, 'value' | 'onChange' | 'type'> {\n value?: number;\n /** @default 3 */\n precision?: number;\n /** @default 7 */\n intPartPrecision?: number;\n defaultValue?: number;\n /** @default false */\n canBeFloat?: boolean;\n /** @default false */\n canBeNegative?: boolean;\n min?: number;\n max?: number;\n onChange: (value: number | undefined, event?: IChangeInputEvent) => void;\n}\n\nexport const NumberInput = forwardRef<HTMLInputElement, INumberInputProps>(function NumberInput(\n {\n value,\n canBeFloat = false,\n canBeNegative = false,\n defaultValue,\n precision = 3,\n intPartPrecision = 7,\n onChange,\n onBlur,\n min,\n max,\n ...props\n },\n ref,\n) {\n const [showedValue, setShowedValue] = useState(() =>\n formatNumberWithDefault(value, defaultValue),\n );\n\n // специальный костыль для обработки Delete - т.к. без него каретка будет работать неправильно при удалении пробелов\n const [isDeleteForwardAction, setIsDeleteForwardAction] = useState(false);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n setIsDeleteForwardAction(event.key === 'Delete');\n };\n\n const setShowedValueWithDefault = (v: string) => {\n setShowedValue(isStringNotEmpty(v) ? v : formatNumber(defaultValue));\n };\n\n const handleChange = async (inputValue: string, event: IChangeInputEvent): Promise<void> => {\n const oldValue = showedValue;\n const target = event.target as HTMLInputElement;\n const defaultCaretPos = target.selectionStart ?? 0;\n const numString = removeStringFormat(inputValue);\n\n if (numString === '') {\n onChange(undefined);\n // не убирать - ломается каретка\n setShowedValue('');\n return;\n }\n\n const numberRegexp = new RegExp(\n constructRegExp({\n precision,\n intPartPrecision,\n canBeNegative,\n canBeFloat,\n }),\n );\n\n if (!numberRegexp.test(numString)) {\n await setShowedValue(oldValue);\n setCaretPosition(target, defaultCaretPos - 1);\n return;\n }\n\n const hasDot = canBeFloat && /^[-]*[\\d\\s]*[.,]$/.test(inputValue);\n const formattedValue = formatStringNumber(numString);\n const newValue = hasDot ? `${formattedValue}.` : formattedValue;\n await setShowedValue(newValue);\n setCaretPosition(\n target,\n getNewCaretPosition(defaultCaretPos, oldValue, newValue, isDeleteForwardAction),\n );\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>): void => {\n const val = event.currentTarget.value;\n const num = stringToNumber(val);\n const newValue = num !== undefined ? getNumberInRange(num, min, max) : undefined;\n if (newValue !== value) {\n onChange(newValue);\n } else {\n setShowedValueWithDefault(formatNumber(value));\n }\n if (onBlur !== undefined) {\n onBlur(event);\n }\n };\n\n useDidMountEffect(() => {\n if (value !== undefined) {\n setShowedValueWithDefault(formatNumber(value));\n } else {\n setShowedValue(formatNumber(value));\n }\n }, [value]);\n\n return (\n <Input\n value={showedValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n ref={ref}\n {...props}\n />\n );\n});\n","import { colors, ITweakStyles, createThemedStyles, animations } from '../../theme';\nimport { IButtonStyles } from '../Button';\nimport type { IFilterWrapperStyles } from './components';\n\nexport const FILTER_HEIGHT = 36;\n\nexport const useStyles = createThemedStyles('FiltersPane', {\n root: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: 8,\n width: '100%',\n },\n\n settings: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 18,\n boxSizing: 'border-box',\n width: 40,\n height: FILTER_HEIGHT,\n cursor: 'pointer',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color',\n },\n\n settingsIcon: {\n width: 16,\n height: 16,\n },\n\n clear: {\n display: 'flex',\n alignItems: 'center',\n height: FILTER_HEIGHT,\n },\n\n filterWithClearButton: {\n display: 'flex',\n gap: 16,\n minWidth: 0,\n },\n});\n\nexport const clearButtonStyles: IButtonStyles = {\n s: {\n paddingLeft: 0,\n paddingRight: 0,\n minWidth: 'unset',\n },\n\n text: {\n background: 'none',\n color: colors.GREY_ACTIVE,\n\n '&:hover, &:focus': {\n color: colors.FONT_MEDIUM,\n },\n\n '&:active': {\n color: colors.FONT_MAIN,\n },\n\n '&:hover, &:focus, &:active': {\n background: 'none',\n borderColor: 'transparent',\n },\n },\n};\n\nexport const innerTextButtonStyles: IButtonStyles = {\n text: {\n color: colors.GREY_ACTIVE,\n\n '&:hover, &:focus': {\n color: colors.FONT_MEDIUM,\n },\n\n '&:active': {\n color: colors.FONT_MEDIUM,\n },\n },\n};\n\nexport type IFiltersPaneStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakClearButton: IButtonStyles;\n tweakFilterWrapper: IFilterWrapperStyles;\n }\n>;\n","import { colors, createThemedStyles, ITweakStyles } from '../../../../theme';\nimport { IButtonStyles } from '../../../Button';\nimport { IInputStyles } from '../../../Input';\nimport { innerTextButtonStyles } from '../../FiltersPane.styles';\n\nexport const useStyles = createThemedStyles('FilterInterval', {\n root: {\n padding: 8,\n background: colors.CLASSIC_WHITE,\n },\n\n inputWrapper: {\n padding: [4, 12],\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gap: 20,\n marginBottom: 12,\n },\n\n autosize: {\n minWidth: 120,\n height: 0,\n opacity: 0,\n paddingRight: 16,\n fontSize: 16,\n whiteSpace: 'pre',\n userSelect: 'none',\n pointerEvents: 'none',\n },\n\n clear: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n});\n\nexport const inputStyles: IInputStyles = {\n input: {\n minWidth: 120,\n },\n\n tweakControlWrapper: {\n icon: {\n padding: 0,\n width: 24,\n\n '&:last-child': {\n paddingRight: 0,\n },\n },\n },\n};\n\nexport const clearButtonStyles = structuredClone(innerTextButtonStyles);\n\nexport type IFilterIntervalStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakInput: IInputStyles;\n tweakClearButton: IButtonStyles;\n }\n>;\n","import { FC, useMemo } from 'react';\nimport { getTestId, addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Button } from '../../../Button';\nimport { NumberInput } from '../../../NumberInput';\nimport { getLocale, sortValues } from '../../helpers';\nimport { IFilterLocaleKey, IFilterNumberInputProps, IPartialFilterLocale } from '../../types';\nimport {\n clearButtonStyles,\n IFilterIntervalStyles,\n inputStyles,\n useStyles,\n} from './FilterInterval.styles';\n\nexport interface IFilterIntervalProps extends ICommonProps<IFilterIntervalStyles> {\n value?: Array<number | undefined>;\n onChange: (value?: Array<number | undefined>) => void;\n labelName: string;\n localeKey?: IFilterLocaleKey;\n locale?: IPartialFilterLocale;\n withFieldNameInLabel?: boolean;\n canBeFloat?: boolean;\n fromInput?: IFilterNumberInputProps;\n toInput?: IFilterNumberInputProps;\n}\n\nexport const FilterInterval: FC<IFilterIntervalProps> = ({\n data,\n tweakStyles,\n value,\n labelName,\n withFieldNameInLabel,\n localeKey,\n locale,\n canBeFloat,\n onChange,\n fromInput,\n toInput,\n testId,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);\n\n const handleClear = () => {\n onChange(undefined);\n };\n\n const handleFromChange = (v?: number) => {\n if (v === undefined && value?.[1] === undefined) {\n onChange(undefined);\n return;\n }\n onChange(sortValues([v, value?.[1]]));\n };\n\n const handleToChange = (v?: number) => {\n if (v === undefined && value?.[0] === undefined) {\n onChange(undefined);\n return;\n }\n onChange(sortValues([value?.[0], v]));\n };\n\n const tweakInputStyles = useTweakStyles({\n innerStyles: inputStyles,\n tweakStyles,\n className: 'tweakInput',\n currentComponentName: 'FilterInterval',\n });\n\n const tweakClearButtonStyles = useTweakStyles({\n innerStyles: clearButtonStyles,\n tweakStyles,\n className: 'tweakClearButton',\n currentComponentName: 'FilterInterval',\n });\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n <div className={classes.inputWrapper}>\n <div>\n <NumberInput\n onChange={handleFromChange}\n value={value?.[0]}\n label={\n withFieldNameInLabel\n ? `${labelName} ${translates.from.toLocaleLowerCase()}`\n : translates.from\n }\n canBeFloat={canBeFloat}\n isClearable\n tweakStyles={tweakInputStyles}\n testId={getTestId(testId, 'start')}\n {...fromInput}\n />\n {withFieldNameInLabel && (\n <div className={classes.autosize}>\n {labelName}&nbsp;{translates.from}\n </div>\n )}\n </div>\n <div>\n <NumberInput\n onChange={handleToChange}\n value={value?.[1]}\n label={\n withFieldNameInLabel\n ? `${labelName} ${translates.to.toLocaleLowerCase()}`\n : translates.to\n }\n canBeFloat={canBeFloat}\n isClearable\n tweakStyles={tweakInputStyles}\n testId={getTestId(testId, 'end')}\n {...toInput}\n />\n {withFieldNameInLabel && (\n <div className={classes.autosize}>\n {labelName}&nbsp;{translates.to}\n </div>\n )}\n </div>\n </div>\n <div className={classes.clear}>\n <Button\n onClick={handleClear}\n size=\"s\"\n view=\"text\"\n testId={getTestId(testId, 'clear-button')}\n tweakStyles={tweakClearButtonStyles}\n >\n {translates.clear}\n </Button>\n </div>\n </div>\n );\n};\n","import type { IMultiSelectLocale, IMultiSelectLocaleKey } from './types';\n\nexport const MultiSelectLocales: Record<string, IMultiSelectLocale> = {\n ru: {\n clear: 'Очистить',\n all: 'Все',\n chosen: 'Выбранные',\n nothingFound: 'Не найдено',\n searchPlaceholder: 'Поиск',\n },\n\n en: {\n clear: 'Clear',\n all: 'All',\n chosen: 'Chosen',\n nothingFound: 'Nothing found',\n searchPlaceholder: 'Search',\n },\n};\n\nexport const DEFAULT_LOCALE: IMultiSelectLocaleKey = 'en';\n","import { merge } from '@true-engineering/true-react-platform-helpers';\nimport { DEFAULT_LOCALE, MultiSelectLocales } from './constants';\nimport type { IMultiSelectLocale, IMultiSelectLocaleKey } from './types';\n\nexport const defaultConvertFunction = (val: unknown): string => String(val);\n\nexport const getLocale = (\n key: IMultiSelectLocaleKey = DEFAULT_LOCALE,\n custom?: Partial<IMultiSelectLocale>,\n custom2?: Partial<IMultiSelectLocale>,\n): IMultiSelectLocale => merge(MultiSelectLocales[key], custom, custom2);\n","import { colors, createThemedStyles, helpers, ITweakStyles } from '../../theme';\nimport { IButtonStyles } from '../Button';\nimport { ICheckboxStyles } from '../Checkbox';\nimport { ISearchInputStyles } from '../SearchInput';\n\nconst ITEM_HEIGHT = 40;\nconst TOP_GAP = 12;\n\nexport const useStyles = createThemedStyles('MultiSelectList', {\n root: {\n width: 220,\n background: colors.CLASSIC_WHITE,\n },\n\n list: {\n paddingTop: TOP_GAP,\n maxHeight: ITEM_HEIGHT * 5 + TOP_GAP,\n overscrollBehavior: 'contain',\n ...helpers.withScrollBar,\n },\n\n label: {\n boxSizing: 'border-box',\n fontSize: 14,\n padding: [12, 16],\n userSelect: 'none',\n display: 'flex',\n alignItems: 'center',\n color: colors.FONT_LABEL,\n },\n\n labelChosen: {\n fontWeight: 'bold',\n color: colors.FONT_MAIN,\n padding: [4, 16, 12],\n },\n\n withoutTopGap: {\n paddingTop: 0,\n },\n\n item: {\n boxSizing: 'border-box',\n padding: 0,\n maxWidth: '100%',\n fontSize: 14,\n },\n\n option: {\n display: 'inline-block',\n userSelect: 'none',\n maxWidth: '100%',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n\n panel: {\n display: 'flex',\n padding: [0, 6, 8],\n },\n\n clear: {\n marginLeft: 'auto',\n },\n\n selectedItem: {},\n\n preloader: {\n width: 80,\n height: ITEM_HEIGHT,\n margin: 'auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n dropdownInput: {\n borderBottom: [1, 'solid', colors.BORDER_MAIN],\n },\n\n nothingFound: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n padding: 16,\n fontSize: 14,\n },\n});\n\nexport const searchInputStyles: ISearchInputStyles = {\n tweakInput: {\n tweakControlWrapper: {\n controlWrapper: {\n '--control-height': '40px',\n backgroundColor: 'transparent',\n border: 'none',\n },\n },\n },\n};\n\nexport const checkboxStyles: ICheckboxStyles = {\n root: {\n padding: [11, 16],\n boxSizing: 'border-box',\n width: '100%',\n },\n\n children: {\n marginRight: 'auto',\n overflow: 'hidden',\n },\n};\n\nexport const clearButtonStyles: IButtonStyles = {\n text: {\n color: colors.GREY_ACTIVE,\n\n '&:hover, &:focus': {\n color: colors.FONT_MEDIUM,\n },\n\n '&:active': {\n color: colors.FONT_MEDIUM,\n },\n },\n};\n\nexport type IMultiSelectListStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakSearchInput: ISearchInputStyles;\n tweakCheckbox: ICheckboxStyles;\n tweakClearButton: IButtonStyles;\n }\n>;\n","import { useEffect, useState, useMemo, useRef, useCallback, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { debounce } from 'ts-debounce';\nimport {\n addDataAttributes,\n addDataTestId,\n getTestId,\n isArrayNotEmpty,\n isNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useIsMounted, useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { Button } from '../Button';\nimport { Checkbox, ICheckboxProps } from '../Checkbox';\nimport { SearchInput } from '../SearchInput';\nimport { ThemedPreloader } from '../ThemedPreloader';\nimport { DEFAULT_LOCALE, MultiSelectLocales } from './constants';\nimport { defaultConvertFunction, getLocale } from './helpers';\nimport { IMultiSelectListValues, IMultiSelectLocale, IMultiSelectLocaleKey } from './types';\nimport {\n useStyles,\n IMultiSelectListStyles,\n checkboxStyles,\n searchInputStyles,\n clearButtonStyles,\n} from './MultiSelectList.styles';\n\nexport interface IMultiSelectListProps<Value, Option> extends ICommonProps<IMultiSelectListStyles> {\n value?: Value;\n /** @default false */\n isSearchEnabled?: boolean;\n localeKey?: IMultiSelectLocaleKey;\n locale?: Partial<IMultiSelectLocale>;\n onClose?: () => void;\n onChange: (val?: Value) => void;\n options?: Option[];\n fetchOptions?: (val?: string, page?: number) => Promise<Option[]>;\n getValueView?: (val: Option) => ReactNode;\n getValueId?: (val: Option) => string;\n getValueString?: (val: Option) => string;\n /** @default по умолчанию значение совпадает с isSearchEnabled */\n isGroupingEnabled?: boolean;\n /** @default 'left' */\n checkboxPosition?: 'left' | 'right';\n pageSize?: number;\n searchMaxLength?: number;\n}\n\nexport function MultiSelectList<Value extends IMultiSelectListValues<Option>, Option = string>({\n value,\n tweakStyles,\n data,\n isSearchEnabled = false,\n localeKey = DEFAULT_LOCALE,\n locale = MultiSelectLocales[localeKey],\n onChange,\n onClose,\n options,\n fetchOptions,\n isGroupingEnabled = isSearchEnabled,\n getValueView = defaultConvertFunction,\n getValueId = defaultConvertFunction,\n getValueString = defaultConvertFunction,\n checkboxPosition = 'left',\n pageSize,\n searchMaxLength,\n testId,\n}: IMultiSelectListProps<Value, Option>): JSX.Element {\n const isMounted = useIsMounted();\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakCheckboxStyles = useTweakStyles({\n innerStyles: checkboxStyles,\n tweakStyles,\n className: 'tweakCheckbox',\n currentComponentName: 'MultiSelectList',\n });\n\n const tweakSearchInputStyles = useTweakStyles({\n innerStyles: searchInputStyles,\n tweakStyles,\n className: 'tweakSearchInput',\n currentComponentName: 'MultiSelectList',\n });\n\n const tweakClearButtonStyles = useTweakStyles({\n innerStyles: clearButtonStyles,\n tweakStyles,\n className: 'tweakClearButton',\n currentComponentName: 'MultiSelectList',\n });\n\n const [keyCursorOn, setKeyCursorOn] = useState(0);\n const [searchValue, setSearchValue] = useState('');\n // Опции, которые получаем с бека при изменении строки поиска\n const [allOptions, setAllOptions] = useState<Option[]>([]);\n\n const [isLoading, setIsLoading] = useState(false);\n const [isLoadingOptionsOnScroll, setLoadingOptionsOnScroll] = useState(false);\n\n const [activePage, setActivePage] = useState(0);\n const [isMaxPage, setIsMaxPage] = useState(false);\n\n const observer = useRef<IntersectionObserver>();\n\n const chosenValues = value?.include;\n\n const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);\n const chosenValuesIds = useMemo(() => chosenValues?.map(getValueId), [getValueId, chosenValues]);\n\n const unchosenOptions = useMemo(\n () => allOptions.filter((v) => !chosenValuesIds?.includes(getValueId(v))),\n [getValueId, allOptions, chosenValuesIds],\n );\n\n const handleSearchInputChange = useCallback(\n async (inputValue?: string) => {\n if (fetchOptions === undefined) {\n return;\n }\n setIsLoading(true);\n\n try {\n const response = await fetchOptions(inputValue?.trim() ?? '');\n if (isMounted() && response !== undefined) {\n setAllOptions(response);\n setActivePage(0);\n setIsMaxPage(\n response.length === 0 || (pageSize !== undefined && response.length < pageSize),\n );\n }\n } finally {\n if (isMounted()) {\n setIsLoading(false);\n }\n }\n },\n [fetchOptions, pageSize],\n );\n\n const changeSearchValue = useCallback(debounce(handleSearchInputChange), [\n handleSearchInputChange,\n ]);\n\n function handleOnChange(inputValue: string) {\n setSearchValue(inputValue);\n\n if (fetchOptions === undefined) {\n if (options !== undefined) {\n const lowerSearchValue = inputValue.toLowerCase();\n setAllOptions(\n options.filter((o) => getValueString(o).toLowerCase().includes(lowerSearchValue)),\n );\n }\n } else {\n setIsLoading(true);\n changeSearchValue(inputValue);\n }\n }\n\n const handleSelectValue = (val: Option[]) => {\n if (val.length === 0) {\n onChange(undefined);\n return;\n }\n\n onChange({\n include: val,\n } as Value);\n };\n\n const handleClear = () => {\n onChange(undefined);\n };\n\n const onSelect: ICheckboxProps<Option>['onSelect'] = ({ value: checkboxValue, isSelected }) => {\n if (isNotEmpty(checkboxValue)) {\n handleSelectValue(\n isSelected\n ? [...(chosenValues ?? []), checkboxValue]\n : chosenValues?.filter((v) => getValueId(v) !== getValueId(checkboxValue)) ?? [],\n );\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n // TODO: это все очень плохо работает\n if (event.code === 'Escape') {\n onChange(value);\n if (onClose) {\n onClose();\n }\n }\n if (event.code === 'ArrowDown') {\n if (keyCursorOn < unchosenOptions.length + (value?.include.length ?? 0) - 1) {\n setKeyCursorOn(keyCursorOn + 1);\n }\n }\n if (event.code === 'ArrowUp') {\n if (keyCursorOn >= 1) {\n setKeyCursorOn(keyCursorOn - 1);\n }\n }\n if (event.code === 'Enter') {\n if (\n unchosenOptions[keyCursorOn] === undefined &&\n (value === undefined || value.include.length === 0)\n ) {\n return;\n }\n if (value !== undefined) {\n if (keyCursorOn < value.include.length) {\n onChange({\n ...value,\n include:\n value.include.filter(\n (val) => getValueId(val) !== getValueId(value.include[keyCursorOn]),\n ) ?? [],\n });\n } else {\n onChange({\n ...value,\n include: [...value.include, unchosenOptions[keyCursorOn - value.include.length]],\n });\n }\n } else {\n onChange({\n include: [unchosenOptions[keyCursorOn]],\n } as Value);\n }\n }\n };\n\n const getIsValueChosen = (id: string) => chosenValues?.some((v) => getValueId(v) === id);\n\n const handleLoadItemsOnScroll = useCallback(\n async (inputValue?: string, page?: number) => {\n if (fetchOptions === undefined) {\n return;\n }\n\n setLoadingOptionsOnScroll(true);\n\n try {\n const response = await fetchOptions(inputValue ?? '', page ?? 0);\n if (isMounted()) {\n if (response.length > 0) {\n setAllOptions((prevState) => [...prevState, ...response]);\n }\n if (response.length === 0 || (pageSize !== undefined && response.length < pageSize)) {\n setIsMaxPage(true);\n }\n }\n } finally {\n if (isMounted()) {\n setLoadingOptionsOnScroll(false);\n }\n }\n },\n [fetchOptions, getValueId],\n );\n\n const initIntersectionObserver = useCallback(\n (node: HTMLDivElement) => {\n if (isLoadingOptionsOnScroll || isMaxPage) {\n return;\n }\n\n if (observer.current) {\n observer.current.disconnect();\n }\n\n observer.current = new IntersectionObserver(async (entries) => {\n if (entries[0].isIntersecting) {\n await handleLoadItemsOnScroll(searchValue, activePage + 1);\n if (isMounted()) {\n setActivePage((prevState) => prevState + 1);\n }\n }\n });\n\n if (node) {\n observer.current.observe(node);\n }\n },\n [activePage, handleLoadItemsOnScroll, isLoadingOptionsOnScroll, isMaxPage, searchValue],\n );\n\n useEffect(() => {\n if (fetchOptions === undefined) {\n setAllOptions(options ?? []);\n return;\n }\n\n const doFetchOptions = async () => {\n setIsLoading(true);\n\n try {\n const response = await fetchOptions('');\n if (response !== undefined && isMounted()) {\n if (response.length === 0 || (pageSize !== undefined && response.length < pageSize)) {\n setIsMaxPage(true);\n }\n setAllOptions(response);\n }\n } finally {\n if (isMounted()) {\n setIsLoading(false);\n }\n }\n };\n doFetchOptions();\n }, []);\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown, false);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown, false);\n };\n });\n\n const mainOptionsList = isGroupingEnabled ? unchosenOptions : allOptions;\n\n const hasSelectedOptionsGroup = isGroupingEnabled && isArrayNotEmpty(chosenValues);\n\n const shouldShowNothingFoundMessage = !isLoading && !isArrayNotEmpty(allOptions);\n\n const shouldShowAllOptionsLabel =\n hasSelectedOptionsGroup && (isArrayNotEmpty(unchosenOptions) || !isArrayNotEmpty(allOptions));\n\n const shouldShowPreloader = isLoading || isLoadingOptionsOnScroll;\n\n const shouldShowOptionsList =\n !isLoading && (isArrayNotEmpty(allOptions) || isArrayNotEmpty(chosenValues));\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n {isSearchEnabled && (\n <div className={classes.dropdownInput}>\n <SearchInput\n value={searchValue}\n placeholder={translates.searchPlaceholder}\n onChange={handleOnChange}\n tweakStyles={tweakSearchInputStyles}\n maxLength={searchMaxLength}\n testId={getTestId(testId, 'search')}\n shouldFocusOnMount\n />\n </div>\n )}\n {shouldShowOptionsList && (\n <div className={classes.list} {...addDataTestId(testId, 'list')}>\n {/* Выбранные */}\n {hasSelectedOptionsGroup && (\n <>\n <div\n className={clsx(\n classes.label,\n classes.labelChosen,\n !isSearchEnabled && classes.withoutTopGap,\n )}\n >\n {translates.chosen}\n </div>\n {chosenValues?.map((val) => {\n const id = getValueId(val);\n const view = getValueView(val);\n\n return (\n <div\n className={clsx(\n classes.item,\n // keyCursorOn === index && classes.selectedItem,\n )}\n key={id}\n >\n <Checkbox\n onSelect={onSelect}\n isChecked\n value={val}\n tweakStyles={tweakCheckboxStyles}\n labelPosition={checkboxPosition === 'left' ? 'right' : 'left'}\n data={{ id }}\n >\n <div className={classes.option} {...addDataAttributes({ option: id })}>\n {view}\n </div>\n </Checkbox>\n </div>\n );\n })}\n </>\n )}\n\n {!isLoading && (\n <>\n {/* Не выбранные (или все если нет группировки) */}\n {shouldShowAllOptionsLabel && <div className={classes.label}>{translates.all}</div>}\n\n {mainOptionsList.map((val, index) => {\n const id = getValueId(val);\n const view = getValueView(val);\n\n return (\n <div\n className={clsx(\n classes.item,\n // keyCursorOn === index + (value?.include.length ?? 0) &&\n // classes.selectedItem,\n )}\n ref={\n mainOptionsList.length - 1 === index ? initIntersectionObserver : undefined\n }\n key={id}\n >\n <Checkbox\n onSelect={onSelect}\n isChecked={getIsValueChosen(id)}\n value={val}\n tweakStyles={tweakCheckboxStyles}\n labelPosition={checkboxPosition === 'left' ? 'right' : 'left'}\n data={{ id }}\n >\n <div className={classes.option} {...addDataAttributes({ option: id })}>\n {view}\n </div>\n </Checkbox>\n </div>\n );\n })}\n </>\n )}\n </div>\n )}\n\n {/* Preloader */}\n {shouldShowPreloader && (\n <div className={classes.preloader}>\n <ThemedPreloader type=\"dots\" />\n </div>\n )}\n\n {/* Nothing found */}\n {shouldShowNothingFoundMessage && (\n <div className={classes.nothingFound}>{translates.nothingFound}</div>\n )}\n\n {/* Controls */}\n <div className={classes.panel}>\n <div className={classes.clear}>\n <Button\n onClick={handleClear}\n size=\"s\"\n view=\"text\"\n testId={getTestId(testId, 'clear-button')}\n tweakStyles={tweakClearButtonStyles}\n >\n {translates.clear}\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import { IMultiSelectListProps, MultiSelectList } from '../../../MultiSelectList';\nimport { IFilterMultiSelectValues } from '../../types';\n\nexport type IFilterMultiSelectProps<Value, Option = string> = IMultiSelectListProps<Value, Option>;\n\nexport function FilterMultiSelect<Value extends IFilterMultiSelectValues<Option>, Option = string>(\n props: IFilterMultiSelectProps<Value, Option>,\n): JSX.Element {\n return <MultiSelectList {...props} />;\n}\n","import { animations, colors, createThemedStyles, helpers, ITweakStyles } from '../../../../theme';\nimport { IButtonStyles } from '../../../Button';\nimport { ISearchInputStyles } from '../../../SearchInput';\nimport { innerTextButtonStyles } from '../../FiltersPane.styles';\n\nconst ITEM_HEIGHT = 40;\nconst LIST_GAP = 12;\n\nexport const useStyles = createThemedStyles('FilterSelect', {\n root: {\n width: 220,\n background: colors.CLASSIC_WHITE,\n },\n\n list: {\n paddingTop: LIST_GAP,\n padding: [LIST_GAP, 0],\n maxHeight: ITEM_HEIGHT * 5 + LIST_GAP * 2,\n overscrollBehavior: 'contain',\n ...helpers.withScrollBar,\n },\n\n label: {\n boxSizing: 'border-box',\n fontSize: 14,\n padding: [12, 16],\n userSelect: 'none',\n display: 'flex',\n alignItems: 'center',\n color: colors.FONT_LABEL,\n },\n\n labelChosen: {\n fontWeight: 'bold',\n color: colors.FONT_MAIN,\n padding: [4, 16, 12],\n },\n\n withoutTopGap: {\n paddingTop: 0,\n },\n\n withClearButton: {\n paddingBottom: 0,\n maxHeight: ITEM_HEIGHT * 5 + LIST_GAP,\n },\n\n item: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: [10, 16],\n maxWidth: '100%',\n cursor: 'pointer',\n fontSize: 14,\n minHeight: ITEM_HEIGHT,\n transition: animations.defaultTransition,\n transitionProperty: 'background-color',\n boxSizing: 'border-box',\n },\n\n option: {\n display: 'inline-block',\n userSelect: 'none',\n width: '100%',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n\n icon: {\n width: 20,\n height: 20,\n marginRight: 4,\n alignSelf: 'center',\n flexShrink: 0,\n },\n\n panel: {\n display: 'flex',\n padding: [0, 6, 8],\n gap: 8,\n },\n\n panelWithFooter: {\n borderTop: [1, 'solid', colors.BORDER_MAIN],\n padding: [8, 16],\n },\n\n footer: {\n wordBreak: 'break-word',\n alignSelf: 'center',\n },\n\n clear: {\n marginLeft: 'auto',\n alignSelf: 'center',\n },\n\n preloader: {\n width: 80,\n height: ITEM_HEIGHT,\n margin: 'auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n dropdownInput: {\n borderBottom: [1, 'solid', colors.BORDER_MAIN],\n },\n\n nothingFound: {\n display: 'flex',\n alignItems: 'center',\n textAlign: 'center',\n padding: 16,\n fontSize: 14,\n },\n});\n\nexport const searchInputStyles: ISearchInputStyles = {\n tweakInput: {\n tweakControlWrapper: {\n controlWrapper: {\n '--control-height': '40px',\n backgroundColor: 'transparent',\n border: 'none',\n },\n },\n },\n};\n\nexport const clearButtonStyles = structuredClone(innerTextButtonStyles);\n\nexport type IFilterSelectStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakSearchInput: ISearchInputStyles;\n tweakClearButton: IButtonStyles;\n }\n>;\n","import { ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport { debounce } from 'ts-debounce';\nimport {\n addDataTestId,\n getTestId,\n isReactNodeNotEmpty,\n addDataAttributes,\n isArrayNotEmpty,\n isNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useIsMounted, useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Button } from '../../../Button';\nimport { Icon } from '../../../Icon';\nimport { ScrollIntoViewIfNeeded } from '../../../ScrollIntoViewIfNeeded';\nimport { SearchInput } from '../../../SearchInput';\nimport { ThemedPreloader } from '../../../ThemedPreloader';\nimport { defaultConvertFunction, getSelectLocale } from '../../helpers';\nimport { IFilterLocaleKey, ISelectLocale } from '../../types';\nimport {\n useStyles,\n IFilterSelectStyles,\n searchInputStyles,\n clearButtonStyles,\n} from './FilterSelect.styles';\n\nexport interface IFilterSelectProps<Value> extends ICommonProps<IFilterSelectStyles> {\n value?: Value;\n onChange: (value?: Value) => void;\n onClose?: () => void;\n /**\n * @default false\n */\n isSearchEnabled?: boolean;\n /**\n * @default false\n */\n isGroupingEnabled?: boolean;\n localeKey?: IFilterLocaleKey;\n locale?: Partial<ISelectLocale>;\n options?: Value[];\n footer?: ReactNode;\n fetchOptions?: (value?: string, page?: number) => Promise<Value[]>;\n getValueString?: (value: Value) => string;\n getValueView?: (value: Value) => ReactNode;\n getValueId?: (value: Value) => string;\n /**\n * @default true\n */\n hasClearButton?: boolean;\n}\n\nexport function FilterSelect<Value>({\n data,\n tweakStyles,\n value,\n isSearchEnabled = false,\n isGroupingEnabled = false,\n localeKey,\n locale,\n onChange,\n onClose,\n options,\n fetchOptions,\n footer,\n getValueView = defaultConvertFunction,\n getValueId = defaultConvertFunction,\n getValueString = defaultConvertFunction,\n hasClearButton = true,\n testId,\n}: IFilterSelectProps<Value>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakSearchInputStyles = useTweakStyles({\n innerStyles: searchInputStyles,\n tweakStyles,\n className: 'tweakSearchInput',\n currentComponentName: 'FilterSelect',\n });\n\n const tweakClearButtonStyles = useTweakStyles({\n innerStyles: clearButtonStyles,\n tweakStyles,\n className: 'tweakClearButton',\n currentComponentName: 'FilterSelect',\n });\n\n const isMounted = useIsMounted();\n\n const translates = useMemo(() => getSelectLocale(localeKey, locale), [localeKey, locale]);\n\n const observer = useRef<IntersectionObserver>();\n\n const [searchValue, setSearchValue] = useState('');\n const [allOptions, setAllOptions] = useState<Value[]>([]);\n\n const [activePage, setActivePage] = useState(0);\n const [isMaxPage, setIsMaxPage] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isLoadingOptionsOnScroll, setLoadingOptionsOnScroll] = useState(false);\n\n const shouldShowPreloader = isLoading || isLoadingOptionsOnScroll;\n const hasFooter = isReactNodeNotEmpty(footer);\n\n const handleSearchInputChange = useCallback(\n async (inputValue?: string) => {\n if (fetchOptions === undefined) {\n return;\n }\n setIsLoading(true);\n\n try {\n const response = await fetchOptions(inputValue?.trim() ?? '');\n if (isMounted() && response !== undefined) {\n setAllOptions(response);\n setActivePage(0);\n setIsMaxPage(false);\n }\n } finally {\n if (isMounted()) {\n setIsLoading(false);\n }\n }\n },\n [fetchOptions],\n );\n\n const changeSearchValue = useMemo(\n () => debounce(handleSearchInputChange),\n [handleSearchInputChange],\n );\n\n const handleOnChange = (inputValue: string) => {\n setSearchValue(inputValue);\n if (fetchOptions === undefined) {\n if (options !== undefined) {\n const lowerSearchValue = inputValue.toLowerCase();\n setAllOptions(\n options.filter((o) => getValueString(o).toLowerCase().includes(lowerSearchValue)),\n );\n }\n } else {\n changeSearchValue(inputValue);\n }\n };\n\n const handleChange = (val?: Value) => {\n onChange(val);\n onClose?.();\n };\n\n const handleClear = () => {\n if (options !== undefined) {\n setAllOptions(options);\n }\n handleChange(undefined);\n setSearchValue('');\n };\n\n const handleLoadItemsOnScroll = useCallback(\n async (inputValue?: string, page?: number) => {\n if (fetchOptions === undefined) {\n return;\n }\n\n setLoadingOptionsOnScroll(true);\n\n try {\n const response = await fetchOptions(inputValue?.trim() ?? '', page ?? 0);\n\n if (isMounted()) {\n if (response.length > 0) {\n setAllOptions((prevState) => [...prevState, ...response]);\n } else {\n setIsMaxPage(true);\n }\n }\n } finally {\n if (isMounted()) {\n setLoadingOptionsOnScroll(false);\n }\n }\n },\n [fetchOptions],\n );\n\n const initIntersectionObserver = useCallback(\n (node: HTMLDivElement) => {\n if (isLoadingOptionsOnScroll || isMaxPage) {\n return;\n }\n\n if (observer.current) {\n observer.current.disconnect();\n }\n\n observer.current = new IntersectionObserver(async (entries) => {\n if (entries[0].isIntersecting) {\n await handleLoadItemsOnScroll(searchValue, activePage + 1);\n if (isMounted()) {\n setActivePage((prevState) => prevState + 1);\n }\n }\n });\n\n if (node) {\n observer.current.observe(node);\n }\n },\n [activePage, handleLoadItemsOnScroll, isLoadingOptionsOnScroll, isMaxPage, searchValue],\n );\n\n useEffect(() => {\n if (fetchOptions === undefined) {\n setAllOptions(options ?? []);\n return;\n }\n\n const doFetchOptions = async () => {\n setIsLoading(true);\n\n try {\n const response = await fetchOptions('');\n if (response !== undefined && isMounted()) {\n setAllOptions(response);\n }\n } finally {\n setIsLoading(false);\n }\n };\n doFetchOptions();\n }, []);\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n {isSearchEnabled && (\n <div className={classes.dropdownInput}>\n <SearchInput\n value={searchValue}\n placeholder={translates.searchPlaceholder}\n onChange={handleOnChange}\n tweakStyles={tweakSearchInputStyles}\n testId={getTestId(testId, 'search')}\n shouldFocusOnMount\n />\n </div>\n )}\n\n {!isLoading && (\n <>\n {isArrayNotEmpty(allOptions) && (\n <div\n className={clsx(classes.list, { [classes.withClearButton]: hasClearButton })}\n {...addDataTestId(testId, 'list')}\n >\n {isGroupingEnabled && isNotEmpty(value) && (\n <>\n <div\n className={clsx(classes.label, classes.labelChosen, {\n [classes.withoutTopGap]: !isSearchEnabled,\n })}\n >\n {translates.chosen}\n </div>\n <div className={classes.item} onClick={() => handleChange(undefined)}>\n <div className={classes.option}>{getValueView(value)}</div>\n <div className={classes.icon}>\n <Icon type=\"check\" />\n </div>\n </div>\n <div className={classes.label}>{translates.all}</div>\n </>\n )}\n {allOptions.map((item, index) => {\n const isActive = isNotEmpty(value) && getValueId(value) === getValueId(item);\n if (isGroupingEnabled && isActive) {\n return null;\n }\n const id = getValueId(item);\n const view = getValueView(item);\n\n const renderedItem = (\n <div\n key={id}\n className={classes.item}\n ref={\n allOptions.length - 1 === index && fetchOptions !== undefined\n ? initIntersectionObserver\n : undefined\n }\n onClick={() => handleChange(item)}\n >\n <div className={classes.option} {...addDataAttributes({ id, option: id })}>\n {view}\n </div>\n {isActive && (\n <div className={classes.icon}>\n <Icon type=\"check\" />\n </div>\n )}\n </div>\n );\n\n if (options !== undefined && searchValue === '') {\n return (\n <ScrollIntoViewIfNeeded key={id} active={isActive}>\n {renderedItem}\n </ScrollIntoViewIfNeeded>\n );\n } else {\n return renderedItem;\n }\n })}\n </div>\n )}\n\n {/* Preloader */}\n {shouldShowPreloader && (\n <div className={classes.preloader}>\n <ThemedPreloader type=\"dots\" />\n </div>\n )}\n\n {/* Nothing found */}\n {!isArrayNotEmpty(allOptions) && (\n <div className={classes.nothingFound}>{translates.nothingFound}</div>\n )}\n\n {/* Controls and footer */}\n {(hasClearButton || hasFooter) && (\n <div className={clsx(classes.panel, { [classes.panelWithFooter]: hasFooter })}>\n {hasFooter && <div className={classes.footer}>{footer}</div>}\n\n {hasClearButton && (\n <div className={classes.clear}>\n <Button\n onClick={handleClear}\n size=\"s\"\n view=\"text\"\n testId={getTestId(testId, 'clear-button')}\n tweakStyles={tweakClearButtonStyles}\n >\n {translates.clear}\n </Button>\n </div>\n )}\n </div>\n )}\n </>\n )}\n\n {isLoading && (\n <div className={classes.preloader}>\n <ThemedPreloader type=\"dots\" />\n </div>\n )}\n </div>\n );\n}\n","import { colors, createThemedStyles, ITweakStyles } from '../../../../theme';\nimport { IButtonStyles } from '../../../Button';\nimport { IDatePickerStyles } from '../../../DatePicker';\nimport { innerTextButtonStyles } from '../../FiltersPane.styles';\n\nexport const useStyles = createThemedStyles('FilterWithDates', {\n root: {\n width: 320,\n background: colors.CLASSIC_WHITE,\n position: 'relative',\n zIndex: 20,\n },\n\n container: {\n display: 'flex',\n gap: 20,\n padding: [8, 20],\n },\n\n containerItem: {\n width: '50%',\n height: 44,\n },\n\n btnRow: {\n display: 'flex',\n flexDirection: 'row-reverse',\n justifyContent: 'space-between',\n padding: 8,\n },\n\n datepicker: {},\n});\n\nexport const clearButtonStyles = structuredClone(innerTextButtonStyles);\n\nexport const backButtonStyles = innerTextButtonStyles;\n\nconst PICKER_TOP_MARGIN = 28;\nconst PICKER_WITH_BUTTONS_TOP_MARGIN = 56;\nconst START_PICKER_LEFT_MARGIN = -20;\nconst END_PICKER_LEFT_MARGIN = -170;\n\nexport const startDatePickerStyles: IDatePickerStyles = {\n popper: { marginTop: PICKER_TOP_MARGIN, marginLeft: START_PICKER_LEFT_MARGIN },\n};\n\nexport const startDatePickerWithButtonStyles: IDatePickerStyles = {\n popper: { marginTop: PICKER_WITH_BUTTONS_TOP_MARGIN, marginLeft: START_PICKER_LEFT_MARGIN },\n};\n\nexport const endDatePickerStyles: IDatePickerStyles = {\n popper: { marginTop: PICKER_TOP_MARGIN, marginLeft: END_PICKER_LEFT_MARGIN },\n};\n\nexport const endDatePickerWithButtonStyles: IDatePickerStyles = {\n popper: { marginTop: PICKER_WITH_BUTTONS_TOP_MARGIN, marginLeft: END_PICKER_LEFT_MARGIN },\n};\n\nexport type IFilterWithDatesStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakClearButton: IButtonStyles;\n tweakBackButton: IButtonStyles;\n tweakStartDatePicker: IDatePickerStyles;\n tweakEndDatePicker: IDatePickerStyles;\n }\n>;\n","import { FC, useMemo, useRef, useState } from 'react';\nimport { isAfter, isBefore } from 'date-fns';\nimport { enUS, ru } from 'date-fns/locale';\nimport {\n getTestId,\n isNotEmpty,\n addDataAttributes,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Button } from '../../../Button';\nimport { DatePicker } from '../../../DatePicker';\nimport { DEFAULT_PICKER_PROPS } from '../../constants';\nimport { getLocale } from '../../helpers';\nimport {\n IFilterLocaleKey,\n IFilterWithDateDatePickerProps,\n IFilterWithDatesValue,\n IPartialFilterLocale,\n} from '../../types';\nimport {\n backButtonStyles,\n clearButtonStyles,\n endDatePickerStyles,\n endDatePickerWithButtonStyles,\n IFilterWithDatesStyles,\n startDatePickerStyles,\n startDatePickerWithButtonStyles,\n useStyles,\n} from './FilterWithDates.styles';\n\nexport interface IFilterWithDatesProps extends ICommonProps<IFilterWithDatesStyles> {\n value?: IFilterWithDatesValue;\n localeKey?: IFilterLocaleKey;\n locale?: IPartialFilterLocale;\n isClearable?: boolean;\n startPickerProps?: IFilterWithDateDatePickerProps;\n endPickerProps?: IFilterWithDateDatePickerProps;\n onChange: (val: IFilterWithDatesValue) => void;\n onStartBtnSubmit?: () => void;\n onEndBtnSubmit: () => void;\n}\n\nexport const FilterWithDates: FC<IFilterWithDatesProps> = ({\n value,\n onChange,\n localeKey,\n locale,\n onStartBtnSubmit,\n onEndBtnSubmit,\n data,\n tweakStyles,\n testId,\n startPickerProps = DEFAULT_PICKER_PROPS,\n endPickerProps = DEFAULT_PICKER_PROPS,\n isClearable = true,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakClearButtonStyles = useTweakStyles({\n innerStyles: clearButtonStyles,\n tweakStyles,\n className: 'tweakClearButton',\n currentComponentName: 'FilterWithDates',\n });\n\n const tweakBackButtonStyles = useTweakStyles({\n innerStyles: backButtonStyles,\n tweakStyles,\n className: 'tweakBackButton',\n currentComponentName: 'FilterWithDates',\n });\n\n const hasButtonsRow = isClearable || isNotEmpty(onStartBtnSubmit);\n\n const tweakStartDatePickerStyles = useTweakStyles({\n innerStyles: hasButtonsRow ? startDatePickerWithButtonStyles : startDatePickerStyles,\n tweakStyles,\n className: 'tweakStartDatePicker',\n currentComponentName: 'FilterWithDates',\n });\n\n const tweakEndDatePickerStyles = useTweakStyles({\n innerStyles: hasButtonsRow ? endDatePickerWithButtonStyles : endDatePickerStyles,\n tweakStyles,\n className: 'tweakEndDatePicker',\n currentComponentName: 'FilterWithDates',\n });\n\n const [isOpenFrom, setOpenFrom] = useState(false);\n const [isOpenTo, setOpenTo] = useState(false);\n\n const ref = useRef<HTMLDivElement>(null);\n\n const dateLocale = localeKey === 'ru' ? ru : enUS;\n\n const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);\n\n const handleClear = () => {\n onEndBtnSubmit();\n };\n const isOpenCalendar = isOpenFrom || isOpenTo;\n\n const handleFromSelected = (val: Date | null) => {\n onChange({ from: val, to: value?.to ?? null });\n setOpenFrom(false);\n };\n\n const handleToSelected = (val: Date | null) => {\n onChange({ from: value?.from ?? null, to: val });\n setOpenTo(false);\n };\n\n const handleChangeFrom = (val: Date | null) => {\n // на самом деле ситуации когда надо переворачивать даты, произойти не может\n if (val !== null && value !== undefined && value.to !== null && isAfter(val, value.to)) {\n onChange({ from: value.to, to: val });\n } else {\n onChange({ from: val, to: value?.to ?? null });\n }\n };\n\n const handleChangeTo = (val: Date | null) => {\n // на самом деле ситуации когда надо переворачивать даты, произойти не может\n if (val !== null && value !== undefined && value.from !== null && isBefore(val, value.from)) {\n onChange({ from: val, to: value.from });\n } else {\n onChange({ from: value?.from ?? null, to: val });\n }\n };\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n <div className={classes.container}>\n <div className={classes.containerItem}>\n <DatePicker\n selectedDate={value?.from}\n maxDate={value?.to ?? undefined}\n label={translates.from}\n months={translates.months}\n locale={dateLocale}\n onChangeDate={handleChangeFrom}\n tweakStyles={tweakStartDatePickerStyles}\n testId={getTestId(testId, 'from')}\n isClearable={isClearable}\n {...startPickerProps}\n />\n </div>\n <div className={classes.containerItem}>\n <DatePicker\n selectedDate={value?.to}\n label={translates.to}\n months={translates.months}\n minDate={value?.from ?? undefined}\n locale={dateLocale}\n onChangeDate={handleChangeTo}\n tweakStyles={tweakEndDatePickerStyles}\n testId={getTestId(testId, 'to')}\n isClearable={isClearable}\n {...endPickerProps}\n />\n </div>\n </div>\n\n <div className={classes.btnRow}>\n {isClearable && (\n <div>\n <Button\n onClick={handleClear}\n size=\"s\"\n view=\"text\"\n testId={getTestId(testId, 'clear-button')}\n isFullWidth\n tweakStyles={tweakClearButtonStyles}\n >\n {translates.clear}\n </Button>\n </div>\n )}\n\n {onStartBtnSubmit && (\n <div>\n <Button\n onClick={onStartBtnSubmit}\n size=\"s\"\n view=\"text\"\n isFullWidth\n tweakStyles={tweakBackButtonStyles}\n >\n {translates.back}\n </Button>\n </div>\n )}\n </div>\n\n {isOpenCalendar && (\n <div ref={ref} className={classes.datepicker}>\n <DatePicker\n selectedDate={(isOpenFrom ? value?.from : value?.to) ?? null}\n label=\"\"\n locale={dateLocale}\n months={translates.months}\n isInline\n onChangeDate={isOpenFrom ? handleFromSelected : handleToSelected}\n />\n </div>\n )}\n </div>\n );\n};\n","import { createThemedStyles, ITweakStyles } from '../../../../theme';\nimport { IFilterSelectStyles } from '../FilterSelect';\n\nexport const useStyles = createThemedStyles('FilterWithPeriod', {\n root: {},\n\n main: {},\n\n picker: {},\n});\n\nexport const filterSelectStyles: IFilterSelectStyles = {\n list: {\n maxHeight: 'auto',\n },\n};\n\nexport type IFilterWithPeriodStyles = ITweakStyles<\n typeof useStyles,\n { tweakFilterSelect: IFilterSelectStyles }\n>;\n","import { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { getTestId } from '@true-engineering/true-react-platform-helpers';\nimport { useOnClickOutside, useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { PERIODS, PERIODS_GETTERS } from '../../constants';\nimport { getLocale } from '../../helpers';\nimport {\n IDatePeriod,\n IFilterLocaleKey,\n IPartialFilterLocale,\n IPeriod,\n IPeriodGetter,\n IPeriodsList,\n} from '../../types';\nimport { FilterSelect } from '../FilterSelect';\nimport { FilterWithDates } from '../FilterWithDates';\nimport { useStyles, IFilterWithPeriodStyles, filterSelectStyles } from './FilterWithPeriod.styles';\n\nexport interface IFilterWithPeriodProps extends ICommonProps<IFilterWithPeriodStyles> {\n value?: IPeriod;\n localeKey?: IFilterLocaleKey;\n locale?: IPartialFilterLocale;\n periods?: IPeriodsList;\n onChange: (period?: IPeriod) => void;\n onClose?: () => void;\n}\n\nexport const FilterWithPeriod: FC<IFilterWithPeriodProps> = ({\n value,\n localeKey,\n locale,\n onChange,\n onClose,\n periods,\n tweakStyles,\n testId,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);\n\n const [isPeriodPickerShown, setIsPeriodPickerShown] = useState(value?.periodType !== 'CUSTOM');\n\n const [isDatePickerShown, setIsDatePickerShown] = useState(value?.periodType === 'CUSTOM');\n\n const [period, setPeriod] = useState(value);\n\n const periodGetters = useMemo(() => {\n const result: Record<string, IPeriodGetter> = { ...PERIODS_GETTERS };\n periods?.forEach((p) => {\n if (Array.isArray(p)) {\n result[p[0]] = p[1];\n }\n });\n return result;\n }, [periods]);\n\n const periodsList = useMemo(() => {\n if (periods === undefined) {\n return [...PERIODS];\n }\n return periods.map((p) => (Array.isArray(p) ? p[0] : p));\n }, [periods]);\n\n const getPeriodTranslate = useCallback(\n (val: string) => translates.periods[val] ?? val,\n [translates.periods],\n );\n\n const handlePeriodChange = (periodType: string) => {\n let from = null;\n let to = null;\n\n if (periodType in periodGetters) {\n const newPeriod = periodGetters[periodType]();\n from = newPeriod.from;\n to = newPeriod.to;\n }\n\n const p = { from, to, periodType };\n setPeriod(p);\n\n if (periodType === 'CUSTOM') {\n setIsDatePickerShown(true);\n } else {\n if (onClose !== undefined) {\n onClose();\n }\n onChange({ ...p, label: getPeriodTranslate(periodType) });\n }\n\n setIsPeriodPickerShown(false);\n };\n\n const refPeriodPicker = useRef<HTMLDivElement>(null);\n const refDatePicker = useRef<HTMLDivElement>(null);\n\n const onPeriodChange = (val?: string) => {\n if (val !== undefined) {\n handlePeriodChange(val);\n } else {\n onChange(undefined);\n if (onClose !== undefined) {\n onClose();\n }\n }\n };\n\n const handleCustomDateChange = (val: IDatePeriod): void => {\n if (val.from || val.to) {\n onChange({\n ...val,\n periodType: 'CUSTOM',\n });\n } else {\n onChange(undefined);\n }\n };\n\n useOnClickOutside(refDatePicker, () => {\n if (!period?.from && !period?.to) {\n setPeriod(undefined);\n }\n setIsDatePickerShown(false);\n });\n\n useEffect(() => {\n setPeriod(value);\n }, [value, value?.from, value?.to, value?.periodType]);\n\n const tweakSelectStyles = useTweakStyles({\n innerStyles: filterSelectStyles,\n tweakStyles,\n className: 'tweakFilterSelect',\n currentComponentName: 'FilterWithPeriod',\n });\n\n return (\n <div className={classes.root}>\n {isPeriodPickerShown && (\n <div className={classes.main} ref={refPeriodPicker}>\n <FilterSelect\n options={periodsList}\n value={period?.periodType}\n onChange={onPeriodChange}\n localeKey={localeKey}\n locale={translates}\n tweakStyles={tweakSelectStyles}\n getValueView={getPeriodTranslate}\n testId={getTestId(testId, 'select')}\n />\n </div>\n )}\n {isDatePickerShown && (\n <div className={classes.picker} ref={refDatePicker}>\n <FilterWithDates\n onStartBtnSubmit={() => {\n setIsDatePickerShown(false);\n setIsPeriodPickerShown(true);\n }}\n onEndBtnSubmit={() => {\n onChange(undefined);\n setIsDatePickerShown(false);\n if (onClose !== undefined) {\n onClose();\n }\n }}\n value={period}\n onChange={handleCustomDateChange}\n localeKey={localeKey}\n locale={translates}\n testId={getTestId(testId, 'dates')}\n />\n </div>\n )}\n </div>\n );\n};\n","import { isEmpty, isString } from '@true-engineering/true-react-platform-helpers';\nimport { IDatePeriod, IFilterMultiSelectValues, IPeriod } from '../../types';\n\nconst isDateOrEmpty = (value: unknown): value is Date | null | undefined =>\n isEmpty(value) || value instanceof Date;\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const isDatePeriodValue = (value: any): value is IDatePeriod =>\n isDateOrEmpty(value?.from) && isDateOrEmpty(value?.to);\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const isPeriodValue = (value: any): value is IPeriod =>\n isString(value?.periodType) && isDatePeriodValue(value);\n\nexport const isMultiSelectValue = <T extends string>(\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n value: any,\n): value is IFilterMultiSelectValues<T> => Array.isArray(value?.include);\n","import { useMemo } from 'react';\nimport { getTestId } from '@true-engineering/true-react-platform-helpers';\nimport { getLocale } from '../../helpers';\nimport { FilterInterval } from '../FilterInterval';\nimport { FilterMultiSelect } from '../FilterMultiSelect';\nimport { FilterSelect } from '../FilterSelect';\nimport { FilterWithDates } from '../FilterWithDates';\nimport { FilterWithPeriod } from '../FilterWithPeriod';\nimport type { IFilterWrapperProps } from '../FilterWrapper';\nimport { isDatePeriodValue, isMultiSelectValue, isPeriodValue } from './helpers';\n\nexport interface IFilterProps<Values extends Record<string, unknown>, Key extends keyof Values>\n extends IFilterWrapperProps<Values, Key> {\n onChange: <V>(v: V) => void;\n onClose?: () => void;\n}\n\nexport function Filter<Values extends Record<string, unknown>, Key extends keyof Values>(\n props: IFilterProps<Values, Key>,\n): JSX.Element | null {\n const { filter, value, onChange, onClose, localeKey, locale, testId } = props;\n const translatesLocaleKey = filter.localeKey ?? localeKey;\n const translates = useMemo(\n () => getLocale(translatesLocaleKey, locale, filter.locale),\n [translatesLocaleKey, locale, filter.locale],\n );\n\n if (filter.type === 'select') {\n return (\n <FilterSelect\n value={value}\n onChange={onChange}\n onClose={onClose}\n localeKey={translatesLocaleKey}\n locale={translates}\n testId={getTestId(testId, 'select')}\n {...filter}\n />\n );\n }\n\n if (filter.type === 'dateRange') {\n const preparedValue = isPeriodValue(value) ? { ...value } : undefined;\n\n return (\n <FilterWithPeriod\n value={preparedValue}\n onChange={onChange}\n onClose={onClose}\n localeKey={translatesLocaleKey}\n locale={translates}\n testId={getTestId(testId, 'period')}\n {...filter}\n />\n );\n }\n\n if (filter.type === 'dateRangeWithoutPeriod') {\n const preparedValue = isDatePeriodValue(value) ? value : undefined;\n\n return (\n <FilterWithDates\n value={preparedValue}\n onChange={(v) => onChange({ ...v, periodType: 'CUSTOM' })}\n onEndBtnSubmit={() => onChange(undefined)}\n localeKey={translatesLocaleKey}\n locale={translates}\n testId={getTestId(testId, 'dates')}\n {...filter}\n />\n );\n }\n\n if (filter.type === 'multiSelect') {\n const preparedValue = isMultiSelectValue<any>(value) ? value : undefined;\n\n return (\n <FilterMultiSelect\n value={preparedValue}\n onChange={onChange}\n onClose={onClose}\n localeKey={translatesLocaleKey}\n locale={translates}\n testId={getTestId(testId, 'multiSelect')}\n {...filter}\n />\n );\n }\n\n if (filter.type === 'interval') {\n const preparedValue = Array.isArray(value) ? (value as number[]) : undefined;\n\n return (\n <FilterInterval\n value={preparedValue}\n onChange={onChange}\n localeKey={translatesLocaleKey}\n locale={translates}\n labelName={filter.name}\n testId={getTestId(testId, 'interval')}\n {...filter}\n />\n );\n }\n\n if (filter.type === 'custom' && filter.component) {\n const Component = filter.component;\n\n return <Component {...props} filter={filter} testId={getTestId(testId, 'dropdown')} />;\n }\n\n if (filter.type !== 'boolean') {\n console.warn(\n `%cДля фильтра ${filter.name} не задан тип или component`,\n 'background: red; color: black',\n );\n }\n\n return null;\n}\n","import { rgba } from '../../../../helpers';\nimport {\n animations,\n colors,\n createThemedStyles,\n dimensions,\n ITweakStyles,\n} from '../../../../theme';\nimport { ISearchInputStyles } from '../../../SearchInput';\nimport { ISelectStyles } from '../../../Select';\nimport { FILTER_HEIGHT } from '../../FiltersPane.styles';\n\nexport const useStyles = createThemedStyles('FiltersPaneSearch', {\n root: {\n display: 'flex',\n position: 'relative',\n backgroundColor: rgba(colors.BORDER_MAIN, 0.3),\n border: [1, 'transparent', 'solid'],\n borderRadius: 18,\n paddingRight: 8,\n transition: animations.defaultTransition,\n transitionProperty: 'background-color, border-color',\n },\n\n focused: {\n backgroundColor: colors.CLASSIC_WHITE,\n borderColor: colors.BORDER_MAIN,\n },\n\n disabled: {\n '& $selectBlock': {\n cursor: 'default',\n },\n },\n\n hasValue: {\n backgroundColor: colors.CLASSIC_WHITE,\n borderColor: colors.BORDER_MAIN,\n },\n\n selectWrapper: {\n position: 'relative',\n display: 'flex',\n flexShrink: 0,\n },\n\n selectBlock: {\n display: 'flex',\n alignItems: 'center',\n gap: 6,\n cursor: 'pointer',\n height: '100%',\n },\n\n selectLabel: {\n flexShrink: 0,\n fontSize: 14,\n userSelect: 'none',\n },\n\n chevronIcon: {\n flexShrink: 0,\n width: 20,\n height: 20,\n marginRight: 4,\n transition: 'transform .2s ease',\n opacity: 0.5,\n },\n\n open: {\n transform: 'rotate(180deg)',\n },\n\n dropdown: {\n position: 'absolute',\n top: FILTER_HEIGHT - 2,\n right: 0,\n zIndex: 20,\n minWidth: 200,\n marginTop: 6,\n borderRadius: dimensions.BORDER_RADIUS_SMALL,\n backgroundColor: colors.CLASSIC_WHITE,\n overflow: 'hidden',\n },\n\n dropdownInput: {\n borderBottom: [1, 'solid', colors.BORDER_MAIN],\n },\n\n active: {\n fontWeight: 'bold',\n },\n});\n\nexport const searchInputStyles: ISearchInputStyles = {\n tweakInput: {\n tweakControlWrapper: {\n controlWrapper: {\n '--control-height': `${FILTER_HEIGHT - 2}px`,\n backgroundColor: 'transparent',\n border: 'none',\n minWidth: 140,\n },\n\n focused: {\n backgroundColor: 'transparent',\n border: 'none',\n },\n },\n },\n};\n\nexport const selectStyles: ISelectStyles = {\n root: {\n borderRadius: 0,\n borderBottomLeftRadius: 6,\n borderBottomRightRadius: 6,\n boxShadow: 'none',\n width: '100%',\n },\n};\n\nexport type IFiltersPaneSearchStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakSearchInput: ISearchInputStyles;\n tweakSelect: ISelectStyles;\n }\n>;\n","import { ReactNode, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n addDataTestId,\n getTestId,\n isArrayLikeNotEmpty,\n isArrayNotEmpty,\n isNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useOnClickOutside, useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Icon } from '../../../Icon';\nimport { SearchInput } from '../../../SearchInput';\nimport { getLocale } from '../../helpers';\nimport { IFilterLocaleKey, IFiltersPaneSearchPayload, IPartialFilterLocale } from '../../types';\nimport { FilterSelect } from '../FilterSelect';\nimport {\n IFiltersPaneSearchStyles,\n searchInputStyles,\n selectStyles,\n useStyles,\n} from './FiltersPaneSearch.styles';\n\nexport interface IFiltersPaneSearchProps<Value> extends ICommonProps<IFiltersPaneSearchStyles> {\n field?: Value;\n fields?: Value[];\n value?: string;\n onChange: (v: IFiltersPaneSearchPayload<Value>) => void;\n localeKey?: IFilterLocaleKey;\n locale?: IPartialFilterLocale;\n maxLength?: number;\n getValueView?: (value: Value) => ReactNode;\n getValueId?: (value: Value) => string;\n getValueString?: (value: Value) => string;\n hasClearSelectButton?: boolean;\n isDisabled?: boolean;\n isSelectSearchEnabled?: boolean;\n isAutoSized?: boolean;\n}\n\nexport function FiltersPaneSearch<Value>({\n value,\n fields = [],\n field,\n onChange,\n localeKey,\n locale,\n getValueId,\n getValueView,\n getValueString,\n hasClearSelectButton,\n isDisabled = false,\n isSelectSearchEnabled = true,\n isAutoSized = false,\n maxLength,\n data,\n tweakStyles,\n testId,\n}: IFiltersPaneSearchProps<Value>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakSearchInputStyles = useTweakStyles({\n innerStyles: searchInputStyles,\n tweakStyles,\n className: 'tweakSearchInput',\n currentComponentName: 'FiltersPaneSearch',\n });\n\n const tweakSelectStyles = useTweakStyles({\n innerStyles: selectStyles,\n tweakStyles,\n className: 'tweakSelect',\n currentComponentName: 'FiltersPaneSearch',\n });\n\n const [isInputFocused, setIsInputFocused] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n\n const refRoot = useRef<HTMLDivElement | null>(null);\n\n const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);\n\n useOnClickOutside(refRoot, () => setIsOpen(false));\n\n const handleSearchChange = (v?: string) => {\n onChange({\n value: v,\n field,\n });\n };\n\n const handleFieldsChange = (v?: Value) => {\n onChange({\n value,\n field: v,\n });\n setIsOpen(false);\n };\n\n return (\n <div\n className={clsx(classes.root, {\n [classes.focused]: isInputFocused,\n [classes.disabled]: isDisabled,\n [classes.hasValue]: isArrayLikeNotEmpty(value),\n })}\n ref={refRoot}\n {...addDataAttributes(data, testId)}\n >\n <SearchInput\n value={value}\n onChange={handleSearchChange}\n placeholder={translates.searchPlaceholder}\n tweakStyles={tweakSearchInputStyles}\n onFocus={() => setIsInputFocused(true)}\n onBlur={() => setIsInputFocused(false)}\n testId={getTestId(testId, 'input')}\n maxLength={maxLength}\n isDisabled={isDisabled}\n isAutoSized={isAutoSized}\n />\n\n <div className={classes.selectWrapper}>\n {/* Select block */}\n {isArrayNotEmpty(fields) && (\n <div\n className={classes.selectBlock}\n onClick={!isDisabled ? () => setIsOpen(!isOpen) : undefined}\n {...addDataTestId(testId, 'select')}\n >\n <div className={clsx(classes.selectLabel, { [classes.active]: isNotEmpty(field) })}>\n {isNotEmpty(field) ? getValueView?.(field) : translates.displayedFields}\n </div>\n <div className={clsx(classes.chevronIcon, isOpen && classes.open)}>\n <Icon type=\"chevron-down\" />\n </div>\n </div>\n )}\n {/* Selector */}\n {isOpen && (\n <div className={classes.dropdown}>\n <FilterSelect\n tweakStyles={tweakSelectStyles}\n value={field}\n options={fields}\n getValueView={getValueView}\n getValueId={getValueId}\n getValueString={getValueString}\n localeKey={localeKey}\n locale={translates}\n onChange={handleFieldsChange}\n isSearchEnabled={isSelectSearchEnabled}\n hasClearButton={hasClearSelectButton}\n testId={getTestId(testId, 'dropdown')}\n />\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { createThemedStyles, ITweakStyles } from '../../../../theme';\n\nexport const useStyles = createThemedStyles('FilterValueView', {\n text: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n count: {\n whiteSpace: 'pre',\n },\n});\n\nexport type IFilterValueViewStyles = ITweakStyles<typeof useStyles>;\n","import { useMemo } from 'react';\nimport { format } from 'date-fns';\nimport { isEmpty, isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../../../types';\nimport { IMultiSelectListValues } from '../../../MultiSelectList';\nimport { DEFAULT_DATE_FORMAT } from '../../constants';\nimport { defaultConvertFunction, getLocale } from '../../helpers';\nimport { IDateRangeConfigItem, IFilterWithDatesValue, IPeriod } from '../../types';\nimport type { IFilterWrapperProps } from '../FilterWrapper';\nimport { IFilterValueViewStyles, useStyles } from './FilterValueView.styles';\n\nexport interface IFilterValueView<Values extends Record<string, unknown>, Key extends keyof Values>\n extends Omit<IFilterWrapperProps<Values, Key>, 'filtersPaneRef' | 'tweakStyles' | 'onChange'>,\n ICommonProps<IFilterValueViewStyles> {}\n\nexport function FilterValueView<Values extends Record<string, unknown>, Key extends keyof Values>({\n value,\n filter,\n locale,\n localeKey,\n tweakStyles,\n}: IFilterValueView<Values, Key>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const translatesLocaleKey = filter.localeKey ?? localeKey;\n const translates = useMemo(\n () => getLocale(translatesLocaleKey, locale, filter.locale),\n [translatesLocaleKey, locale, filter.locale],\n );\n\n if (isEmpty(value)) {\n return <></>;\n }\n\n if (isNotEmpty(filter.getSelectedValueView)) {\n return <span className={classes.text}>{filter.getSelectedValueView(value)}</span>;\n }\n\n const isMultiple = filter.type === 'custom' && filter.valueViewType === 'multiple';\n const isRange = filter.type === 'custom' && filter.valueViewType === 'range';\n const isDate = filter.type === 'dateRange' || filter.type === 'dateRangeWithoutPeriod';\n\n const displayValue = (v: unknown): string => {\n if (!isNotEmpty(v)) {\n return '';\n }\n\n if (v instanceof Date) {\n return format(\n v,\n (filter as IDateRangeConfigItem<IFilterWithDatesValue>).dateFormat || DEFAULT_DATE_FORMAT,\n );\n }\n\n if (typeof v === 'object' && 'value' in v && isNotEmpty(v.value)) {\n return String(v.value);\n }\n\n if (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean') {\n return String(v);\n }\n\n console.warn(\n `%c Ошибка конфигурации фильтра ${filter.name}. Невозможно отобразить значение фильтра. Задайте filterValueViewComponent или filterValueViewType.`,\n 'background: orange; color: black',\n );\n\n return '';\n };\n\n if (filter.type === 'select') {\n const getView = filter.getValueView ?? defaultConvertFunction;\n return <span className={classes.text}>{getView(value)}</span>;\n }\n\n if (filter.type === 'multiSelect') {\n const multiSelectValue = value as IMultiSelectListValues<any>;\n const getView = filter.getValueView ?? defaultConvertFunction;\n const { include } = multiSelectValue;\n\n return (\n <>\n {Array.isArray(include) && include.length > 0 && (\n <>\n <span className={classes.text}>{getView(include[0])}</span>\n <span className={classes.count}>\n {include.length > 1 && ` (+${include.length - 1})`}\n </span>\n </>\n )}\n </>\n );\n }\n\n if (filter.type === 'interval') {\n const intervalValue = value as unknown as number[];\n const intervalValueFrom = intervalValue[0];\n const intervalValueTo = intervalValue[1];\n\n const intervals: string[] = [];\n if (intervalValueFrom !== undefined) {\n intervals.push(`${translates.from.toLowerCase()} ${String(intervalValueFrom)}`);\n }\n if (intervalValueTo !== undefined) {\n intervals.push(`${translates.to.toLowerCase()} ${String(intervalValueTo)}`);\n }\n\n return <span className={classes.text}>{intervals.join(' ')}</span>;\n }\n\n if (isDate) {\n const { from, to, periodType, label } = value as unknown as IPeriod;\n const hasFrom = from !== undefined && from !== null;\n const hasTo = to !== undefined && to !== null;\n\n if (periodType !== 'CUSTOM') {\n return <span className={classes.text}>{displayValue(label)}</span>;\n }\n\n const range: string[] = [];\n if (hasFrom) {\n if (!hasTo) {\n range.push(translates.from.toLowerCase());\n }\n range.push(displayValue(from));\n }\n if (hasTo) {\n if (hasFrom) {\n range.push('—');\n } else {\n range.push(translates.to.toLowerCase());\n }\n range.push(displayValue(to));\n }\n\n return <span className={classes.text}>{range.join(' ')}</span>;\n }\n\n if (isMultiple) {\n const convertValue = filter.getSelectedValue ?? displayValue;\n\n return (\n <>\n {Array.isArray(value) && value.length > 0 && (\n <>\n <span className={classes.text}>{convertValue(value[0])}</span>\n <span className={classes.count}>{value.length > 1 && ` (+${value.length - 1})`}</span>\n </>\n )}\n </>\n );\n }\n\n if (isRange && Array.isArray(value)) {\n const rangeValue = value as unknown as number[];\n const rangeValueFrom = rangeValue[0];\n const rangeValueTo = rangeValue[1];\n\n const range: string[] = [];\n if (rangeValueFrom !== undefined) {\n range.push(`${translates.from.toLowerCase()} ${String(rangeValueFrom)}`);\n }\n if (rangeValueTo !== undefined) {\n range.push(`${translates.to.toLowerCase()} ${String(rangeValueTo)}`);\n }\n\n return <span className={classes.text}>{range.join(' ')}</span>;\n }\n\n return <span className={classes.text}>{displayValue(value)}</span>;\n}\n","import { isNotEmpty, isObject } from '@true-engineering/true-react-platform-helpers';\n\nexport const isContentNotEmpty = (value: unknown): boolean => {\n if (Array.isArray(value)) {\n return value.some(isContentNotEmpty);\n }\n if (isObject(value)) {\n return Object.values(value).some(isContentNotEmpty);\n }\n if (typeof value === 'boolean') {\n return value;\n }\n return isNotEmpty(value);\n};\n","import { animations, colors, createThemedStyles, ITweakStyles } from '../../../../theme';\nimport { IWithPopupStyles } from '../../../WithPopup';\nimport type { IFilterValueViewStyles } from '../FilterValueView';\nimport { FILTER_HEIGHT } from '../../FiltersPane.styles';\n\nexport const useStyles = createThemedStyles('FilterWrapper', {\n root: {\n position: 'relative',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color, border-color',\n border: [1, 'solid', colors.BORDER_MAIN],\n borderRadius: 18,\n boxSizing: 'border-box',\n height: FILTER_HEIGHT,\n minWidth: 0,\n },\n\n item: {\n display: 'flex',\n padding: [0, 8, 0, 16],\n cursor: 'pointer',\n },\n\n booleanItem: {\n padding: 0,\n },\n\n name: {\n fontSize: 14,\n lineHeight: '34px',\n whiteSpace: 'nowrap',\n },\n\n boolean: {\n padding: [0, 16],\n },\n\n noValue: {},\n\n openNoValue: {},\n\n openWithValue: {},\n\n disabled: {\n '& > $item': {\n cursor: 'default',\n },\n },\n\n withValue: {},\n\n iconContainer: {\n width: 20,\n height: 20,\n transition: 'transform .2s ease-in-out',\n alignSelf: 'center',\n marginLeft: 6,\n marginRight: 4,\n flexShrink: 0,\n },\n\n chevronIcon: {},\n\n clearIcon: {},\n\n open: {\n transform: 'rotate(180deg)',\n },\n\n dropdown: {\n position: 'absolute',\n zIndex: 20,\n marginTop: 6,\n border: [1, colors.BORDER_MAIN, 'solid'],\n },\n\n left: {\n left: 0,\n },\n\n right: {\n right: 0,\n },\n\n value: {\n alignSelf: 'center',\n fontSize: 14,\n lineHeight: '16px',\n margin: [0, 2, 0, 8],\n fontWeight: 'bold',\n display: 'flex',\n minWidth: 0,\n },\n});\n\nexport type IFilterWrapperStyles = ITweakStyles<\n typeof useStyles,\n { tweakWithPopup: IWithPopupStyles; tweakValueView: IFilterValueViewStyles }\n>;\n","import { MouseEventHandler } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n getTestId,\n isNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useMixedStyles, useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Icon } from '../../../Icon';\nimport { WithPopup } from '../../../WithPopup';\nimport { ConfigItem, IFilterLocaleKey, IPartialFilterLocale } from '../../types';\nimport { Filter } from '../Filter';\nimport { FilterValueView } from '../FilterValueView';\nimport { isContentNotEmpty } from './helpers';\nimport { useStyles, IFilterWrapperStyles } from './FilterWrapper.styles';\n\nexport interface IFilterWrapperProps<\n Values extends Record<string, unknown>,\n Key extends keyof Values,\n> extends ICommonProps<IFilterWrapperStyles> {\n filter: ConfigItem<Values[Key]>;\n value?: Values[Key];\n isDisabled?: boolean;\n localeKey?: IFilterLocaleKey;\n locale?: IPartialFilterLocale;\n onChange: <V>(value: V) => void;\n}\n\nexport function FilterWrapper<Values extends Record<string, unknown>, Key extends keyof Values>({\n filter,\n value,\n isDisabled,\n locale,\n localeKey,\n data,\n testId,\n tweakStyles: baseTweakStyles,\n onChange,\n}: IFilterWrapperProps<Values, Key>): JSX.Element {\n const tweakStyles = useMixedStyles(baseTweakStyles, filter.tweakWrapperStyles);\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakWithPopupStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakWithPopup',\n currentComponentName: 'FilterWrapper',\n });\n\n const tweakFilterValueViewStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakValueView',\n currentComponentName: 'FilterWrapper',\n });\n\n if (filter.isInline) {\n return (\n <Filter\n value={value}\n filter={filter}\n localeKey={localeKey}\n locale={locale}\n onChange={onChange}\n testId={testId}\n />\n );\n }\n\n const isBoolean = filter.type === 'boolean';\n\n const handleLabelClick = () => {\n if (isBoolean) {\n onChange(!value);\n }\n };\n const handleClearIconClick: MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n onChange(undefined);\n };\n\n const hasValue = isContentNotEmpty(value);\n const hasClearIcon = (filter.isClearable ?? false) && hasValue;\n\n return (\n <WithPopup\n placement=\"bottom-start\"\n canBeFlipped\n isDisabled={isBoolean || isDisabled}\n tweakStyles={tweakWithPopupStyles}\n trigger={({ triggerProps: { isActive }, referenceProps }) => (\n <div\n className={clsx(classes.root, {\n [classes.noValue]: !hasValue,\n [classes.openNoValue]: isActive && !hasValue,\n [classes.withValue]: !isActive && hasValue,\n [classes.openWithValue]: isActive && hasValue,\n [classes.boolean]: isBoolean,\n [classes.disabled]: isDisabled,\n })}\n {...addDataAttributes(data, testId)}\n {...referenceProps}\n >\n <div\n onClick={handleLabelClick}\n className={clsx(classes.item, { [classes.booleanItem]: isBoolean })}\n >\n <div className={classes.name}>{filter.name}</div>\n {!isBoolean && isNotEmpty(value) && (\n <div className={classes.value}>\n <FilterValueView\n value={value}\n filter={filter}\n locale={locale}\n localeKey={localeKey}\n testId={getTestId(testId, 'value')}\n tweakStyles={tweakFilterValueViewStyles}\n />\n </div>\n )}\n {!isBoolean && !hasClearIcon && (\n <div\n className={clsx(classes.iconContainer, classes.chevronIcon, {\n [classes.open]: isActive,\n })}\n >\n <Icon type=\"chevron-down\" />\n </div>\n )}\n {hasClearIcon && (\n <div\n className={clsx(classes.iconContainer, classes.clearIcon)}\n onClick={handleClearIconClick}\n >\n <Icon type=\"close-large\" />\n </div>\n )}\n </div>\n </div>\n )}\n >\n {({ onClose }) => (\n <Filter\n value={value}\n filter={filter}\n locale={locale}\n localeKey={localeKey}\n onClose={onClose}\n onChange={onChange}\n testId={testId}\n />\n )}\n </WithPopup>\n );\n}\n","import { useMemo } from 'react';\nimport {\n addDataAttributes,\n addDataTestId,\n getTestId,\n isNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { Button } from '../Button';\nimport { IIcon, renderIcon } from '../Icon';\nimport { FilterWrapper, IFiltersPaneSearchProps, FiltersPaneSearch } from './components';\nimport { getLocale } from './helpers';\nimport { ConfigType, IFilterLocaleKey, IPartialFilterLocale } from './types';\nimport { useStyles, IFiltersPaneStyles, clearButtonStyles } from './FiltersPane.styles';\n\nexport interface IFiltersPaneProps<Values extends Record<string, unknown>, Content = Values>\n extends ICommonProps<IFiltersPaneStyles> {\n filtersConfig: ConfigType<Values>;\n enabledFilters?: Array<keyof ConfigType<Values>>;\n /** @default {} */\n values?: Partial<Values>;\n search?: IFiltersPaneSearchProps<keyof Content>;\n localeKey?: IFilterLocaleKey;\n locale?: IPartialFilterLocale;\n /** @default false */\n isDisabled?: boolean;\n /** @default true */\n hasClearButton?: boolean;\n /** @default false */\n shouldRenderDataId?: boolean;\n /** @default 'filter' */\n settingsIcon?: IIcon;\n onChangeFilters: (values: Partial<Values>) => void;\n onSettingsButtonClick?: () => void;\n onClear?: () => void;\n}\n\nexport function FiltersPane<Values extends Record<string, unknown>, Content = Values>({\n data,\n tweakStyles,\n filtersConfig,\n enabledFilters,\n values = {} as Values,\n localeKey,\n locale,\n search,\n isDisabled = false,\n hasClearButton = true,\n shouldRenderDataId = false,\n settingsIcon = 'filter',\n testId,\n onChangeFilters,\n onSettingsButtonClick,\n onClear,\n}: IFiltersPaneProps<Values, Content>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakClearButtonStyles = useTweakStyles({\n innerStyles: clearButtonStyles,\n tweakStyles,\n className: 'tweakClearButton',\n currentComponentName: 'FiltersPane',\n });\n\n const tweakFilterWrapperStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakFilterWrapper',\n currentComponentName: 'FiltersPane',\n });\n\n const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);\n\n const filtersKeys = enabledFilters ?? Object.keys(filtersConfig);\n\n const handleClear = () => {\n if (isNotEmpty(onClear)) {\n onClear();\n return;\n }\n onChangeFilters({});\n if (search !== undefined) {\n search.onChange({});\n }\n };\n\n const shouldShowClearButton =\n hasClearButton &&\n (isNotEmpty(search) || filtersKeys.some((key) => isNotEmpty(filtersConfig[key])));\n\n const clearButton = (\n <div className={classes.clear}>\n <Button\n onClick={handleClear}\n size=\"s\"\n view=\"text\"\n isDisabled={isDisabled}\n testId={getTestId(testId, 'clear-button')}\n tweakStyles={tweakClearButtonStyles}\n >\n {translates.clear}\n </Button>\n </div>\n );\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n {/* Settings */}\n {onSettingsButtonClick !== undefined && (\n <div\n className={classes.settings}\n tabIndex={0}\n {...addDataTestId(testId, 'settings-button')}\n onClick={!isDisabled ? onSettingsButtonClick : undefined}\n >\n <div className={classes.settingsIcon}>{renderIcon(settingsIcon)}</div>\n </div>\n )}\n {/* Search */}\n {search !== undefined && (\n <FiltersPaneSearch\n {...search}\n locale={getLocale(search.localeKey ?? localeKey, search.locale, locale)}\n localeKey={search.localeKey ?? localeKey}\n isDisabled={search.isDisabled ?? isDisabled}\n testId={getTestId(testId, 'search')}\n />\n )}\n {/* Filters */}\n {filtersKeys.map((key, index) => {\n const isLast = index === filtersKeys.length - 1;\n const filterKey = String(key);\n const currentValue = values[filterKey];\n const filter = filtersConfig[filterKey];\n if (filter === undefined) {\n console.error(`enabledFilters содержит фильтр ${filterKey}, не описанный в конфиге`);\n if (isLast) {\n return clearButton;\n }\n return null;\n }\n\n const filterWrapper = (\n <FilterWrapper\n filter={filter}\n locale={locale}\n localeKey={localeKey}\n onChange={(value) => onChangeFilters({ ...values, [filterKey]: value })}\n value={currentValue}\n key={filterKey}\n isDisabled={\n isDisabled ||\n filter?.isDisabled ||\n filter?.requiredFilledFilters?.some((item) => !values[item])\n }\n tweakStyles={tweakFilterWrapperStyles}\n data={shouldRenderDataId ? { id: filterKey } : undefined}\n testId={getTestId(testId, `filter-${filterKey}`)}\n />\n );\n\n if (isLast) {\n return (\n <div className={classes.filterWithClearButton} key={filterKey}>\n {filterWrapper}\n {shouldShowClearButton && <>{clearButton}</>}\n </div>\n );\n }\n\n return filterWrapper;\n })}\n </div>\n );\n}\n","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 341.3\\\"><path fill=\\\"#FFF\\\" d=\\\"M0 0h512v341.3H0z\\\"/><g fill=\\\"#6DA544\\\"><path d=\\\"M0 0h512v48.8H0zM0 97.5h512v48.8H0zM0 195h512v48.8H0zM0 292.6h512v48.8H0z\\\"/></g><path fill=\\\"#D80027\\\" d=\\\"M0 0h256v146.3H0z\\\"/><path fill=\\\"#FFF\\\" d=\\\"m116.9 114.4-7.5-14.8V69.9L128 59l18.6 10.9v22.3l7.4-7.4 4.2 3-4.2 11.8-14.9 14.8z\\\"/><circle fill=\\\"#FFF\\\" cx=\\\"82\\\" cy=\\\"82.8\\\" r=\\\"5.4\\\"/><circle fill=\\\"#FFF\\\" cx=\\\"90.8\\\" cy=\\\"61.7\\\" r=\\\"5.4\\\"/><circle fill=\\\"#FFF\\\" cx=\\\"106.6\\\" cy=\\\"46.2\\\" r=\\\"5.4\\\"/><circle fill=\\\"#FFF\\\" cx=\\\"128\\\" cy=\\\"40.8\\\" r=\\\"5.4\\\"/><circle fill=\\\"#FFF\\\" cx=\\\"149.4\\\" cy=\\\"46.2\\\" r=\\\"5.4\\\"/><circle fill=\\\"#FFF\\\" cx=\\\"165.2\\\" cy=\\\"61.7\\\" r=\\\"5.4\\\"/><circle fill=\\\"#FFF\\\" cx=\\\"174\\\" cy=\\\"82.8\\\" r=\\\"5.4\\\"/></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 450 300\\\"><path fill=\\\"#FFF\\\" d=\\\"M0 0h450v300H0z\\\"/><path fill=\\\"red\\\" d=\\\"M0 100h450v200H0z\\\"/><path fill=\\\"#FFDF00\\\" d=\\\"M0 200h450v100H0z\\\"/></svg>\"","import AB from './AB.svg?raw';\nimport OS from './OS.svg?raw';\n\nexport const customFlags = {\n /**\n * Абхазия\n */\n AB,\n /**\n * Южная осетия\n */\n OS,\n};\n","import { colors, ITweakStyles, createThemedStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('Flag', {\n root: {\n display: 'flex',\n width: '100%',\n height: '100%',\n boxSizing: 'border-box',\n // приходится хардкодить в компоненте, тк либа Flags выдает флаги с 2-3 пиксельным отступом снизу\n // если будет нужно, то можно вынести border на уровень пропсов\n border: [1, 'solid', colors.BORDER_MAIN],\n borderRadius: 2,\n },\n\n noFlag: {\n width: 20,\n color: colors.FONT_MEDIUM,\n },\n});\n\nexport type IFlagStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport { hasFlag } from 'country-flag-icons';\nimport * as Flags from 'country-flag-icons/react/3x2';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { customFlags } from './customFlags';\nimport { IFlagStyles, useStyles } from './Flag.styles';\n\nexport interface IFlagProps extends Pick<ICommonProps<IFlagStyles>, 'tweakStyles'> {\n /** @default '' */\n countryCode?: string;\n}\n\nexport const Flag: FC<IFlagProps> = ({ countryCode = '', tweakStyles }) => {\n const classes = useStyles({ theme: tweakStyles });\n const countryFlagKey = countryCode.toUpperCase();\n\n const hasFlagInLibrary = hasFlag(countryFlagKey);\n\n if (hasFlagInLibrary) {\n const FlagComponent = Flags[countryFlagKey as keyof typeof Flags];\n return (\n <div className={classes.root}>\n <FlagComponent />\n </div>\n );\n }\n\n const CustomFlag = customFlags[countryFlagKey as keyof typeof customFlags];\n\n if (CustomFlag !== undefined) {\n return <div className={classes.root} dangerouslySetInnerHTML={{ __html: CustomFlag }} />;\n }\n\n return (\n <div className={classes.noFlag}>\n <Icon type=\"minus\" />\n </div>\n );\n};\n","import { IFlexibleTableRenderElement, IFlexibleTableRenderMode } from './types';\n\nexport const DEFAULT_DATE_FORMAT = 'dd.MM.yyyy';\n\nexport const TableRenders = {\n table: { Root: 'table', Head: 'thead', Body: 'tbody', Row: 'tr', Header: 'th', Cell: 'td' },\n divs: { Root: 'div', Head: 'div', Body: 'div', Row: 'div', Header: 'div', Cell: 'div' },\n} satisfies Record<\n IFlexibleTableRenderMode,\n Record<IFlexibleTableRenderElement, keyof JSX.IntrinsicElements>\n>;\n","import { rgba } from '../../helpers';\nimport { colors, createThemedStyles, ITweakStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('Skeleton', {\n root: {\n display: 'flex',\n width: '100%',\n height: '100%',\n backgroundColor: rgba(colors.GREY_DISABLED, 0.8),\n position: 'relative',\n borderRadius: 4,\n overflow: 'hidden',\n '-webkit-mask-image': '-webkit-radial-gradient(white, black)',\n\n '&::after': {\n content: '\"\"',\n animation: '$skeleton 1.6s linear 0.5s infinite',\n background: `linear-gradient(90deg, transparent, ${rgba(\n colors.GREY_BACKGROUND,\n 0.65,\n )}, transparent)`,\n position: 'absolute',\n transform: 'translateX(-100%)',\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n },\n },\n\n '@keyframes skeleton': {\n '0%': {\n transform: 'translateX(-100%)',\n },\n\n '50%': {\n transform: 'translateX(100%)',\n },\n\n '100%': {\n transform: 'translateX(100%)',\n },\n },\n});\n\nexport type ISkeletonStyles = ITweakStyles<typeof useStyles>;\n","import { CSSProperties, FC } from 'react';\nimport { ICommonProps } from '../../types';\nimport { ISkeletonStyles, useStyles } from './Skeleton.styles';\n\nexport interface ISkeletonProps extends Pick<ICommonProps<ISkeletonStyles>, 'tweakStyles'> {\n height?: CSSProperties['height'];\n}\n\nexport const Skeleton: FC<ISkeletonProps> = ({ height, tweakStyles }) => {\n const classes = useStyles({ theme: tweakStyles });\n return <div className={classes.root} style={{ height }} />;\n};\n","import { format } from 'date-fns';\nimport { isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { DEFAULT_DATE_FORMAT } from './constants';\nimport { IFlexibleTableConfigType, IHeaderContent, ITableRow } from './types';\n\nexport const hasHorizontalScrollBar = (el: HTMLElement | null | undefined): boolean =>\n isNotEmpty(el) && el.scrollWidth !== el.clientWidth;\n\nexport const formatCellContent = <\n Values extends ITableRow,\n HeaderContent extends IHeaderContent<Values>,\n>(\n value: unknown,\n config?: IFlexibleTableConfigType<Values, HeaderContent>[keyof Values],\n): string =>\n value instanceof Date ? format(value, config?.dateFormat ?? DEFAULT_DATE_FORMAT) : String(value);\n","import { rgba } from '../../helpers';\nimport { colors, ITweakStyles, createThemedStyles, animations, helpers } from '../../theme';\nimport type { IFlexibleTableRowStyles } from './components';\n\nexport const STICKY_SHADOW_PADDING = 12;\n\nexport const useStyles = createThemedStyles('FlexibleTable', {\n flexibleTableWrapper: {},\n\n root: {\n width: '100%',\n position: 'relative',\n borderCollapse: 'separate',\n borderSpacing: 0,\n },\n\n scroll: {\n ...helpers.withScrollBar,\n /*\n Чтобы сделать таблицу на всю высоту проставьте\n height у родителя таблицы у себя в проекте.\n Например: height: calc(100vh -{высота шапки}px)\n */\n maxHeight: '100%',\n },\n\n head: {},\n\n body: {},\n\n loaderRow: {},\n\n loaderCell: {},\n\n loader: {\n position: 'sticky',\n left: 0,\n maxWidth: '100vw',\n height: 48,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n\n headerRow: {\n position: 'relative',\n verticalAlign: 'bottom',\n },\n\n header: {\n position: 'sticky',\n boxSizing: 'content-box',\n top: 0,\n zIndex: 10,\n fontSize: 12,\n fontWeight: 'normal',\n padding: [0, 7, 16, 7],\n },\n\n headerSticky: {\n zIndex: 20,\n left: 0,\n paddingLeft: 24,\n paddingRight: 12,\n\n '&::before': {\n content: '\"\"',\n display: 'block',\n width: '100%',\n height: '100%',\n position: 'absolute',\n left: 0,\n top: 0,\n background: 'transparent',\n pointerEvents: 'none',\n zIndex: 1,\n transition: animations.defaultTransition,\n transitionProperty: 'box-shadow',\n\n '[data-scrolled] &': {\n boxShadow: '4px 0 4px rgba(0, 0, 0, 0.05)',\n },\n },\n\n '&::after': {\n content: '\"\"',\n display: 'block',\n width: STICKY_SHADOW_PADDING,\n height: '100%',\n position: 'absolute',\n left: '100%',\n top: 0,\n background: `linear-gradient(90deg, ${colors.CLASSIC_WHITE}, ${rgba(\n colors.CLASSIC_WHITE,\n 0,\n )})`,\n zIndex: 0,\n },\n },\n\n /** @deprecated удалить вместе с isFirstColumnSticky */\n headerSecond: {\n paddingLeft: STICKY_SHADOW_PADDING,\n },\n\n nothingFoundRow: {},\n\n nothingFound: {},\n});\n\nexport type IFlexibleTableStyles = ITweakStyles<\n typeof useStyles,\n { tweakTableRow: IFlexibleTableRowStyles }\n>;\n","import { getTransition } from '@true-engineering/true-react-platform-helpers';\nimport { ITweakStyles, createThemedStyles } from '../../../../theme';\nimport { STICKY_SHADOW_PADDING } from '../../FlexibleTable.styles';\n\nexport const useStyles = createThemedStyles('FlexibleTableCell', {\n root: {\n position: 'relative',\n boxSizing: 'content-box',\n padding: [14, 7],\n fontSize: 14,\n lineHeight: 1.42,\n zIndex: 5,\n verticalAlign: 'top',\n },\n\n sticky: {\n zIndex: 19,\n paddingLeft: 24,\n paddingRight: 12,\n left: 0,\n ...getTransition(['box-shadow']),\n\n '[data-scrolled] &': {\n boxShadow: '4px 0 4px rgba(0, 0, 0, 0.05)',\n },\n },\n\n /** @deprecated удалить вместе с isFirstColumnSticky */\n second: {\n paddingLeft: STICKY_SHADOW_PADDING,\n },\n\n loading: {},\n\n skeleton: {\n height: 21,\n },\n\n clickable: {\n cursor: 'pointer',\n },\n});\n\nexport type IFlexibleTableCellStyles = ITweakStyles<typeof useStyles>;\n","import { ReactNode, useCallback } from 'react';\nimport clsx from 'clsx';\nimport {\n applyAction,\n isNotEmpty,\n addDataAttributes,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../../../types';\nimport { Skeleton } from '../../../Skeleton';\nimport { TableRenders } from '../../constants';\nimport { formatCellContent } from '../../helpers';\nimport {\n ITableRow,\n IValueComponentProps,\n IFlexibleTableConfigType,\n IFlexibleTableRenderMode,\n IHeaderContent,\n} from '../../types';\nimport { useStyles, IFlexibleTableCellStyles } from './FlexibleTableCell.styles';\n\nexport interface IFlexibleTableCellProps<\n Row extends ITableRow,\n HeaderContent extends IHeaderContent<Row>,\n> extends Pick<ICommonProps<IFlexibleTableCellStyles>, 'tweakStyles'>,\n Pick<\n IValueComponentProps<Row, unknown>,\n 'isFocusedRow' | 'isActiveRow' | 'isNestedComponentExpanded' | 'isRowNestedComponentExpanded'\n > {\n row: Row;\n columnName: keyof Row;\n updateNestedComponent: (component: ReactNode, cellKey: keyof Row) => void;\n config: IFlexibleTableConfigType<Row, HeaderContent>;\n renderMode: IFlexibleTableRenderMode;\n isSecond?: boolean;\n isSticky?: boolean;\n isLoading?: boolean;\n}\n\nexport function FlexibleTableCell<\n Row extends ITableRow,\n HeaderContent extends IHeaderContent<Row>,\n>({\n row,\n columnName,\n config,\n renderMode,\n isSecond,\n isSticky: isOldSticky,\n isLoading,\n updateNestedComponent,\n tweakStyles,\n ...valueComponentProps\n}: IFlexibleTableCellProps<Row, HeaderContent>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const value = row[columnName];\n\n const {\n component = formatCellContent(value, config[columnName]),\n width,\n maxWidth,\n minWidth,\n left,\n right,\n position,\n cellAlign,\n cellVerticalAlign,\n shouldRenderDataId,\n shouldRenderComponent = isNotEmpty,\n onCellClick,\n } = config[columnName] ?? {};\n\n const isSticky = isOldSticky || position === 'sticky';\n const isClickable = !isLoading && isNotEmpty(onCellClick);\n\n const cellComponentProps: IValueComponentProps<Row, Row[keyof Row]> = {\n ...valueComponentProps,\n onSetNestedComponent: useCallback(\n (node) => updateNestedComponent(node, columnName),\n [columnName, updateNestedComponent],\n ),\n value,\n row,\n };\n\n const Table = TableRenders[renderMode];\n\n return (\n <Table.Cell\n className={clsx(classes.root, {\n [classes.sticky]: isSticky,\n [classes.second]: isSecond,\n [classes.loading]: isLoading,\n [classes.clickable]: isClickable,\n })}\n style={{\n textAlign: cellAlign,\n position: isSticky ? 'sticky' : position,\n width,\n maxWidth,\n minWidth,\n right,\n left,\n verticalAlign: cellVerticalAlign,\n }}\n onClick={isClickable ? (event) => onCellClick?.(event, cellComponentProps) : undefined}\n {...addDataAttributes({ id: shouldRenderDataId ? columnName : undefined })}\n >\n {isLoading ? (\n <div className={classes.skeleton}>\n <Skeleton />\n </div>\n ) : (\n applyAction(shouldRenderComponent, value, row, columnName) &&\n applyAction(component, cellComponentProps)\n )}\n </Table.Cell>\n );\n}\n","import { ITweakStyles, createThemedStyles } from '../../../../theme';\nimport { IFlexibleTableCellStyles } from '../FlexibleTableCell';\n\nexport const useStyles = createThemedStyles('FlexibleTableRow', {\n root: {\n position: 'relative',\n },\n\n active: {},\n\n editable: {\n cursor: 'pointer',\n },\n\n clickable: {\n cursor: 'pointer',\n },\n\n nestedComponent: {},\n});\n\nexport type IFlexibleTableRowStyles = ITweakStyles<\n typeof useStyles,\n { tweakTableCell: IFlexibleTableCellStyles }\n>;\n","import { ReactNode, useState, MouseEvent, RefCallback, useCallback } from 'react';\nimport clsx from 'clsx';\nimport {\n isEmpty,\n isNotEmpty,\n addDataAttributes,\n} from '@true-engineering/true-react-platform-helpers';\nimport { genericMemo } from '../../../../helpers';\nimport { useTweakStyles } from '../../../../hooks';\nimport { IDataAttributes, ITweakStylesProps } from '../../../../types';\nimport { TableRenders } from '../../constants';\nimport {\n ITableRow,\n IFlexibleTableConfigType,\n IFlexibleTableRenderMode,\n INestedComponent,\n IHeaderContent,\n} from '../../types';\nimport { FlexibleTableCell } from '../FlexibleTableCell';\nimport { useStyles, IFlexibleTableRowStyles } from './FlexibleTableRow.styles';\n\nexport interface IFlexibleTableRowProps<\n Row extends ITableRow,\n HeaderContent extends IHeaderContent<Row>,\n UniqueField extends keyof Row,\n> extends ITweakStylesProps<IFlexibleTableRowStyles> {\n item: Row;\n uniqueField?: UniqueField;\n renderMode: IFlexibleTableRenderMode;\n /** @default false */\n isActive?: boolean;\n /** @default false */\n isFocusable?: boolean;\n /** @deprecated Use {@position}\n * @default false */\n isFirstColumnSticky?: boolean;\n /** @default false */\n isLoading?: boolean;\n config: IFlexibleTableConfigType<Row, HeaderContent>;\n columns: Array<keyof Row & string>;\n rowAttributes?: Array<keyof Row>;\n /** @default false */\n isExpandableRowComponentInitiallyOpen?: boolean;\n rowRef?: RefCallback<HTMLTableRowElement>;\n /** Возвращает React-элемент, который отрисуется под строкой при нажатии на неё */\n expandableRowComponent?: (item: Row, isOpen: boolean, close: () => void) => ReactNode;\n onRowHover?: (id?: Row[UniqueField]) => void;\n onRowClick?: (id: Row[UniqueField]) => void;\n}\n\nexport const FlexibleTableRow = genericMemo(function FlexibleTableRow<\n Row extends ITableRow,\n HeaderContent extends IHeaderContent<Row>,\n UniqueField extends keyof Row,\n>({\n item,\n config,\n columns,\n uniqueField,\n renderMode,\n isActive = false,\n isFocusable = false,\n isFirstColumnSticky = false,\n isLoading = false,\n rowAttributes,\n isExpandableRowComponentInitiallyOpen = false,\n rowRef,\n tweakStyles,\n expandableRowComponent,\n onRowHover,\n onRowClick,\n}: IFlexibleTableRowProps<Row, HeaderContent, UniqueField>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakTableCellStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakTableCell',\n currentComponentName: 'FlexibleTableRow',\n });\n\n const [isFocused, setFocused] = useState(false);\n const [nestedComponent, setNestedComponent] = useState<INestedComponent<keyof Row>>(() => ({\n isOpen: isExpandableRowComponentInitiallyOpen,\n }));\n\n const isEditable = !isLoading && (isNotEmpty(onRowClick) || isNotEmpty(onRowHover));\n const isClickable = !isLoading && (isNotEmpty(onRowClick) || isNotEmpty(expandableRowComponent));\n\n const { isOpen: isNestedComponentExpanded, cellKey: nestedComponentCellKey } = nestedComponent;\n\n // уникальная разработка, позволяющая прокидывать data-атрибуты в <tr>\n // например: rowAttributes={['id']} => <tr data-id=\"x\" />\n const rowData: IDataAttributes = Object.fromEntries(\n rowAttributes?.map((attribute) => [attribute, item[attribute]]) ?? [],\n );\n\n const handleMouseEnter = (event: MouseEvent) => {\n if (isNotEmpty(uniqueField) && isNotEmpty(onRowHover)) {\n event.stopPropagation();\n onRowHover(item[uniqueField]);\n }\n if (isFocusable) {\n setFocused(true);\n }\n };\n\n const handleMouseLeave = () => {\n onRowHover?.(undefined);\n if (isFocusable) {\n setFocused(false);\n }\n };\n\n const closeNestedComponent = () => {\n setNestedComponent({ isOpen: false });\n };\n\n const updateNestedComponent = useCallback((component: ReactNode, cellKey: keyof Row) => {\n if (isEmpty(component)) {\n closeNestedComponent();\n } else {\n setNestedComponent({ isOpen: true, component, cellKey });\n }\n }, []);\n\n const handleRowClick = () => {\n if (isNotEmpty(uniqueField)) {\n onRowClick?.(item[uniqueField]);\n }\n if (isEmpty(expandableRowComponent)) {\n return;\n }\n\n if (!isNestedComponentExpanded) {\n setNestedComponent({ isOpen: true });\n } else if (isEmpty(nestedComponentCellKey)) {\n closeNestedComponent();\n }\n };\n\n const Table = TableRenders[renderMode];\n\n return (\n <>\n <Table.Row\n ref={rowRef}\n className={clsx(classes.root, {\n [classes.active]: isActive,\n [classes.editable]: isEditable,\n [classes.clickable]: isClickable,\n })}\n {...(!isLoading && {\n onClick: handleRowClick,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n })}\n {...addDataAttributes({\n ...rowData,\n active: isActive ? true : undefined,\n editable: isEditable ? true : undefined,\n isExpandableComponentActive: isNestedComponentExpanded ? true : undefined,\n })}\n >\n {columns.map((key, i) => (\n <FlexibleTableCell\n key={key}\n isSticky={isFirstColumnSticky && i === 0}\n isSecond={isFirstColumnSticky && i === 1}\n isLoading={isLoading}\n row={item}\n config={config}\n columnName={key}\n tweakStyles={tweakTableCellStyles}\n renderMode={renderMode}\n isFocusedRow={isFocused}\n isActiveRow={isActive}\n isNestedComponentExpanded={isNestedComponentExpanded && nestedComponentCellKey === key}\n isRowNestedComponentExpanded={\n isNestedComponentExpanded && isEmpty(nestedComponentCellKey)\n }\n updateNestedComponent={updateNestedComponent}\n />\n ))}\n </Table.Row>\n\n {isNestedComponentExpanded && (\n <Table.Row className={classes.root}>\n <Table.Cell className={classes.nestedComponent} colSpan={columns.length}>\n {nestedComponent.component ??\n expandableRowComponent?.(item, true, closeNestedComponent)}\n </Table.Cell>\n </Table.Row>\n )}\n </>\n );\n});\n","import { ReactNode, RefObject, useCallback, useEffect, useMemo, useRef } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n applyAction,\n getTestId,\n indexMap,\n isArrayNotEmpty,\n isEmpty,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useIntersectionRef, useMergedRefs, useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { ThemedPreloader } from '../ThemedPreloader';\nimport { FlexibleTableRow, IFlexibleTableRowProps } from './components';\nimport { TableRenders } from './constants';\nimport { hasHorizontalScrollBar } from './helpers';\nimport {\n ITableRow,\n IFlexibleTableConfigType,\n IInfinityScrollConfig,\n IFlexibleTableRenderMode,\n IHeaderContent,\n} from './types';\nimport { useStyles, IFlexibleTableStyles } from './FlexibleTable.styles';\n\nexport interface IFlexibleTableProps<\n Row extends ITableRow,\n HeaderContent extends IHeaderContent<Row>,\n UniqueField extends keyof Row,\n> extends ICommonProps<IFlexibleTableStyles>,\n Pick<\n IFlexibleTableRowProps<Row, HeaderContent, UniqueField>,\n | 'uniqueField'\n | 'rowAttributes'\n | 'isFirstColumnSticky'\n | 'expandableRowComponent'\n | 'onRowClick'\n | 'onRowHover'\n | 'rowRef'\n > {\n content: Row[];\n /** @default 'table' */\n renderMode?: IFlexibleTableRenderMode;\n headerContent?: HeaderContent;\n config: IFlexibleTableConfigType<Row, HeaderContent>;\n enabledColumns?: Array<keyof Row & string>;\n /** Индексы строк, на которые навешивается класс `active` */\n activeRows?: number[];\n /** @default false */\n isLoading?: boolean;\n /** @default false */\n isHorizontallyScrollable?: boolean;\n /**\n * Добавляет строкам состояние `isFocused`, вызывает ререндер при наведении\n * @default false\n */\n isRowFocusable?: boolean;\n infinityScrollConfig?: IInfinityScrollConfig;\n onHeadClick?: (column: keyof Row) => void;\n refForScroll?: RefObject<HTMLDivElement>;\n nothingFoundContent?: ReactNode;\n /** @default true */\n shouldRenderHeader?: boolean;\n /** @default false */\n isExpandableRowComponentInitiallyOpen?: boolean | ((row: Row, index: number) => boolean);\n}\n\nexport function FlexibleTable<\n Row extends ITableRow,\n HeaderContent extends IHeaderContent<Row> = IHeaderContent<Row>,\n UniqueField extends keyof Row = keyof Row,\n>({\n content,\n headerContent,\n config,\n enabledColumns,\n activeRows,\n uniqueField,\n isLoading = false,\n isFirstColumnSticky = false,\n isHorizontallyScrollable = false,\n isRowFocusable = false,\n infinityScrollConfig: infinityScrollConfigDeprecated,\n renderMode = 'table',\n refForScroll,\n nothingFoundContent,\n data,\n testId,\n tweakStyles,\n shouldRenderHeader = true,\n onHeadClick,\n isExpandableRowComponentInitiallyOpen: isRowInitiallyOpen,\n ...restProps\n}: IFlexibleTableProps<Row, HeaderContent, UniqueField>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakTableRowStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakTableRow',\n currentComponentName: 'FlexibleTable',\n });\n\n const scrollRef = useRef<HTMLDivElement>(null);\n\n const columns = useMemo(() => enabledColumns ?? Object.keys(config), [enabledColumns, config]);\n\n const getTableRowProps = (\n item: Row,\n index: number,\n ): IFlexibleTableRowProps<Row, HeaderContent, UniqueField> => ({\n ...restProps,\n item,\n renderMode,\n config,\n columns,\n uniqueField,\n isLoading,\n isFirstColumnSticky,\n isFocusable: isRowFocusable,\n tweakStyles: tweakTableRowStyles,\n isExpandableRowComponentInitiallyOpen: applyAction(isRowInitiallyOpen, item, index),\n });\n\n const getDataScrollAttributeSetter = useCallback(\n (key: string, setter: (el: HTMLDivElement) => boolean) => (el?: HTMLDivElement) => {\n if (isHorizontallyScrollable && isNotEmpty(el) && setter(el)) {\n el.dataset[key] = 'true';\n } else {\n el?.removeAttribute(`data-${key}`);\n }\n },\n [isHorizontallyScrollable],\n );\n\n // Когда таблица имеет скроллбар - добавляем аттрибут scrollable\n const setHasScrollBarAttribute = useMemo(\n () => getDataScrollAttributeSetter('scrollable', hasHorizontalScrollBar),\n [getDataScrollAttributeSetter],\n );\n\n // Когда таблица проскроллена - добавляем аттрибут scrolled\n const setIsScrolledAttribute = useMemo(\n () => getDataScrollAttributeSetter('scrolled', (el) => el.scrollLeft > 0),\n [getDataScrollAttributeSetter],\n );\n\n const ref = useMergedRefs([\n refForScroll,\n scrollRef,\n setHasScrollBarAttribute,\n setIsScrolledAttribute,\n ]);\n\n const infinityScrollConfig = infinityScrollConfigDeprecated && {\n isLoading: infinityScrollConfigDeprecated.isLoading,\n onInfinityScroll: () =>\n infinityScrollConfigDeprecated.onInfinityScroll(\n (infinityScrollConfigDeprecated.activePage ?? 0) + 1,\n ),\n isEnabled:\n infinityScrollConfigDeprecated.isEnabled ?? !infinityScrollConfigDeprecated.isLastPage,\n };\n const intersectionRef = useIntersectionRef({\n isDisabled: !infinityScrollConfig?.isEnabled || infinityScrollConfig.isLoading,\n onIntersection: infinityScrollConfig?.onInfinityScroll,\n });\n\n const shouldShowNothingFound =\n isReactNodeNotEmpty(nothingFoundContent) &&\n !isArrayNotEmpty(content) &&\n !infinityScrollConfig?.isLoading &&\n !infinityScrollConfig?.isEnabled;\n\n useEffect(() => {\n const scrollContainer = scrollRef.current;\n if (isEmpty(scrollContainer) || !isHorizontallyScrollable) {\n return;\n }\n\n const scrollHandler = () => {\n setIsScrolledAttribute(scrollContainer);\n };\n\n const resizeHandler = () => {\n setHasScrollBarAttribute(scrollContainer);\n };\n\n scrollContainer.addEventListener('scroll', scrollHandler);\n window.addEventListener('resize', resizeHandler);\n\n return () => {\n scrollContainer.removeEventListener('scroll', scrollHandler);\n window.removeEventListener('resize', resizeHandler);\n };\n }, [scrollRef, isHorizontallyScrollable, setIsScrolledAttribute, setHasScrollBarAttribute]);\n\n const activeRowsSet = useMemo(() => new Set(activeRows), [activeRows]);\n\n const Table = TableRenders[renderMode];\n\n return (\n <div\n ref={ref}\n className={clsx(classes.flexibleTableWrapper, { [classes.scroll]: isHorizontallyScrollable })}\n >\n <Table.Root className={classes.root} {...addDataAttributes({ ...data, isLoading }, testId)}>\n {shouldRenderHeader && (\n <Table.Head className={classes.head}>\n <Table.Row className={classes.headerRow}>\n {columns.map((key, i) => {\n const {\n position,\n minWidth,\n width,\n maxWidth,\n titleAlign = 'left',\n right,\n left,\n title = '',\n shouldRenderDataId,\n } = config?.[key] ?? {};\n const isSticky = position === 'sticky' || (isFirstColumnSticky && i === 0);\n\n return (\n <Table.Header\n key={key}\n className={clsx(classes.header, {\n [classes.headerSticky]: isSticky,\n [classes.headerSecond]: isFirstColumnSticky && i === 1,\n })}\n style={{\n minWidth,\n width,\n maxWidth,\n textAlign: titleAlign,\n position: isSticky ? 'sticky' : position,\n right,\n left,\n }}\n onClick={isNotEmpty(onHeadClick) ? () => onHeadClick(key) : undefined}\n {...addDataAttributes({ id: shouldRenderDataId ? key : undefined })}\n >\n {applyAction(title, { value: headerContent?.[key] as HeaderContent[string] })}\n </Table.Header>\n );\n })}\n </Table.Row>\n </Table.Head>\n )}\n <Table.Body className={classes.body}>\n {isLoading ? (\n indexMap(6, (i) => <FlexibleTableRow {...getTableRowProps({} as Row, i)} key={i} />)\n ) : (\n <>\n {shouldShowNothingFound && (\n <Table.Row className={classes.nothingFoundRow}>\n <Table.Cell className={classes.nothingFound} colSpan={columns.length}>\n {nothingFoundContent}\n </Table.Cell>\n </Table.Row>\n )}\n\n {content.map((item, i) => (\n <FlexibleTableRow\n {...getTableRowProps(item, i)}\n isActive={activeRowsSet.has(i)}\n key={isNotEmpty(uniqueField) ? item[uniqueField] : i}\n />\n ))}\n\n {infinityScrollConfig?.isEnabled && (\n <Table.Row className={classes.loaderRow}>\n <Table.Cell className={classes.loaderCell} colSpan={columns.length}>\n <div ref={intersectionRef} className={classes.loader}>\n <ThemedPreloader type=\"dots\" testId={getTestId(testId, 'loader')} />\n </div>\n </Table.Cell>\n </Table.Row>\n )}\n </>\n )}\n </Table.Body>\n </Table.Root>\n </div>\n );\n}\n","import { createThemedStyles, ITweakStyles } from '../../../../theme';\nimport { ICheckboxStyles } from '../../../Checkbox';\n\nexport const useStyles = createThemedStyles('DocActions', {\n docActions: {\n display: 'grid',\n alignItems: 'center',\n gridTemplateColumns: 'max-content 1fr',\n },\n\n neutral: {},\n\n inverse: {},\n\n counterWrapper: {},\n\n title: {},\n\n actionsWrapper: {\n justifySelf: 'end',\n },\n});\n\nexport type IDocActionsStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakCheckbox: ICheckboxStyles;\n }\n>;\n","import { FC, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Checkbox, ICheckboxProps } from '../../../Checkbox';\nimport { IDocActionsView } from './types';\nimport { IDocActionsStyles, useStyles } from './DocActions.styles';\n\nexport interface IDocActionsProps\n extends Omit<ICheckboxProps<never>, 'tweakStyles'>,\n ICommonProps<IDocActionsStyles> {\n title: string;\n /** @default 'neutral' */\n view?: IDocActionsView;\n children: ReactNode;\n}\n\nexport const DocActions: FC<IDocActionsProps> = ({\n title,\n view = 'neutral',\n children,\n tweakStyles,\n ...checkBoxProps\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakCheckboxStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakCheckbox',\n currentComponentName: 'DocActions',\n });\n\n return (\n <div className={clsx(classes.docActions, classes[view])}>\n <div className={classes.counterWrapper}>\n <Checkbox tweakStyles={tweakCheckboxStyles} {...checkBoxProps}>\n <span className={classes.title}>{title}</span>\n </Checkbox>\n </div>\n <div className={classes.actionsWrapper}>{children}</div>\n </div>\n );\n};\n","export const DOC_ACTIONS_VIEWS = ['neutral', 'inverse'] as const;\n","export const DEFAULT_TIMEOUT = 150;\n","import { createUseStyles } from 'react-jss';\nimport { animations, ITweakStyles } from '../../theme';\nimport { IDocActionsStyles } from './components';\n\nexport const useStyles = createUseStyles({\n ...animations.slideUp,\n});\n\nexport type IFloatDocActionsStyles = ITweakStyles<\n typeof useStyles,\n { tweakDocActions: IDocActionsStyles }\n>;\n","import { FC } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { DocActions, IDocActionsProps } from './components';\nimport { DEFAULT_TIMEOUT } from './constants';\nimport { useStyles } from './FloatDocActions.styles';\n\nexport interface IFloatDocActionsProps extends IDocActionsProps {\n isOpen: boolean;\n}\n\nexport const FloatDocActions: FC<IFloatDocActionsProps> = ({\n isOpen,\n children,\n ...docActionsProps\n}) => {\n const classes = useStyles();\n\n return (\n <CSSTransition\n in={isOpen}\n timeout={DEFAULT_TIMEOUT}\n mountOnEnter\n unmountOnExit\n classNames={{\n enter: classes['slide-up-enter'],\n enterActive: classes['slide-up-enter-active'],\n exit: classes['slide-up-exit'],\n exitActive: classes['slide-up-exit-active'],\n }}\n >\n <DocActions {...docActionsProps}>{children}</DocActions>\n </CSSTransition>\n );\n};\n","import { animations, colors, createThemedStyles, dimensions, ITweakStyles } from '../../theme';\nimport { IInputStyles } from '../Input';\n\nexport const inputStyles: IInputStyles = {\n tweakControlWrapper: {\n controlWrapper: {\n '--increment-buttons-width': '36px',\n '--increment-buttons-gap': '1px',\n '--increment-buttons-margin': '1px',\n '--increment-button-icon-size': '16px',\n },\n },\n};\n\nexport const useStyles = createThemedStyles('IncrementInput', {\n buttons: {\n display: 'flex',\n flexDirection: 'column',\n height: 'calc(100% - var(--increment-buttons-margin) * 2)',\n margin: 'var(--increment-buttons-margin)',\n gap: 'var(--increment-buttons-gap)',\n flexShrink: 0,\n order: 1000, // сдвигаем кнопки на самый конец\n\n zIndex: dimensions.Z_INDEX.CONTROL_FOCUS + 1,\n },\n\n button: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 'var(--increment-buttons-width)',\n flexGrow: 1,\n\n cursor: 'pointer',\n border: 'none',\n outline: 'none',\n color: colors.FONT_MEDIUM,\n backgroundColor: colors.GREY_BACKGROUND,\n transition: animations.defaultTransition,\n transitionProperty: 'background-color, color',\n\n '&:hover, &:focus': {\n backgroundColor: colors.GREY_HOVER,\n },\n\n '&:active': {\n backgroundColor: colors.GREY_ACTIVE,\n },\n },\n\n disabledButton: {\n cursor: 'default',\n color: colors.FONT_DISABLED,\n backgroundColor: colors.CLASSIC_WHITE,\n\n '&:hover': {\n backgroundColor: colors.CLASSIC_WHITE,\n },\n },\n\n errorButton: {},\n\n icon: {\n width: 'var(--increment-button-icon-size)',\n height: 'var(--increment-button-icon-size)',\n },\n});\n\nexport type IIncrementInputStyles = ITweakStyles<typeof useStyles, { tweakInput: IInputStyles }>;\n","import { FC, useEffect } from 'react';\nimport clsx from 'clsx';\nimport { isNotEmpty, isNumberInteger } from '@true-engineering/true-react-platform-helpers';\nimport { getNumberInRange, getNumberLength } from '../../helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { INumberInputProps, NumberInput } from '../NumberInput';\nimport { useStyles, IIncrementInputStyles, inputStyles } from './IncrementInput.styles';\n\nexport interface IIncrementInputProps\n extends Omit<INumberInputProps, 'canBeFloat' | 'precision' | 'tweakStyles'>,\n ICommonProps<IIncrementInputStyles> {\n /** @default 1 */\n step?: number;\n}\n\nexport const IncrementInput: FC<IIncrementInputProps> = ({\n value,\n onChange,\n min,\n max,\n step = 1,\n intPartPrecision,\n tweakStyles,\n isDisabled,\n isReadonly,\n isInvalid,\n ...props\n}) => {\n const tweakInputStyles = useTweakStyles({\n innerStyles: inputStyles,\n tweakStyles,\n className: 'tweakInput',\n currentComponentName: 'IncrementInput',\n });\n\n const classes = useStyles({ theme: tweakStyles });\n\n const isEditDisabled = isDisabled || isReadonly;\n\n const isIncreaseDisabled =\n isEditDisabled ||\n (isNotEmpty(intPartPrecision) && getNumberLength((value ?? 0) + step) > intPartPrecision) ||\n (isNotEmpty(max) && isNotEmpty(value) && value >= max);\n\n const isDecreaseDisabled =\n isEditDisabled || (isNotEmpty(min) && isNotEmpty(value) && value <= min);\n\n const increment = (): void => {\n onChange(getNumberInRange((value ?? 0) + step, min, max));\n };\n\n const decrement = (): void => {\n onChange(getNumberInRange((value ?? 0) - step, min, max));\n };\n\n useEffect(() => {\n if (!isNumberInteger(step)) {\n console.error('Параметр step должен быть целым числом');\n }\n }, [step]);\n\n return (\n <NumberInput\n {...props}\n isInvalid={isInvalid}\n isDisabled={isDisabled}\n isReadonly={isReadonly}\n min={min}\n max={max}\n intPartPrecision={intPartPrecision}\n onChange={onChange}\n value={value}\n tweakStyles={tweakInputStyles}\n >\n <div className={classes.buttons}>\n <button\n className={clsx(classes.button, {\n [classes.disabledButton]: isIncreaseDisabled,\n [classes.errorButton]: isInvalid,\n })}\n type=\"button\"\n disabled={isIncreaseDisabled}\n onClick={increment}\n >\n <div className={classes.icon}>\n <Icon type=\"plus\" />\n </div>\n </button>\n\n <button\n className={clsx(classes.button, {\n [classes.disabledButton]: isDecreaseDisabled,\n [classes.errorButton]: isInvalid,\n })}\n type=\"button\"\n disabled={isDecreaseDisabled}\n onClick={decrement}\n >\n <div className={classes.icon}>\n <Icon type=\"minus\" />\n </div>\n </button>\n </div>\n </NumberInput>\n );\n};\n","import { rgba } from '../../helpers';\nimport { colors, dimensions, ITweakStyles, createThemedStyles } from '../../theme';\nimport { IIconButtonStyles } from '../IconButton';\n\nconst VERTICAL_OVERLAY_PADDING = 50;\n\nconst MODAL_HORIZONTAL_PADDING_L = 40;\nconst MODAL_HORIZONTAL_PADDING_M = 36;\nconst MODAL_HORIZONTAL_PADDING_S = 26;\n\nconst MODAL_CLOSE_BUTTON_SIZE = 40;\nconst MODAL_CLOSE_BUTTON_ICON_SIZE = 30;\n\nexport const useStyles = createThemedStyles('Modal', {\n root: {},\n\n fixedPosition: {\n position: 'fixed',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 999,\n overflowX: 'hidden',\n '-webkit-overflow-scrolling': 'touch',\n\n '& $innerOverlay': {\n display: 'flex',\n width: '100%',\n minHeight: '100%',\n boxSizing: 'border-box',\n },\n },\n\n innerOverlay: {},\n\n sideBar: {\n '& $modal': {\n borderRadius: 0,\n margin: 0,\n minHeight: '100%',\n },\n },\n\n 'position-static': {},\n\n 'position-left': {},\n\n 'position-right': {\n justifyContent: 'flex-end',\n },\n\n 'position-center': {\n padding: [VERTICAL_OVERLAY_PADDING, 30],\n },\n\n overlay: {\n backgroundColor: rgba(colors.BORDER_MAIN, 0.5),\n },\n\n modal: {\n backgroundColor: colors.CLASSIC_WHITE,\n borderRadius: dimensions.BORDER_RADIUS_LARGE,\n boxShadow: `0 8px 32px -8px ${rgba(colors.FONT_MAIN, 0.24)}, 0 -2px 6px 0 ${rgba(\n colors.FONT_MAIN,\n 0.04,\n )}, 0 0 1px 0 ${rgba(colors.FONT_MAIN, 0.15)}`,\n margin: 'auto',\n position: 'relative',\n // do not override this\n maxWidth: '100%',\n },\n\n title: {\n fontSize: 28,\n lineHeight: 1.3,\n marginTop: 0,\n },\n\n titleWithCloseButton: {\n paddingRight: 32,\n },\n\n close: {\n position: 'absolute',\n },\n\n content: {},\n\n footer: {\n display: 'flex',\n gap: 12,\n },\n\n stickyFooterWrapper: {\n position: 'sticky',\n bottom: 0,\n marginTop: 'auto',\n zIndex: 1,\n },\n\n stickyFooter: {\n borderTop: [1, 'solid', colors.BORDER_LIGHT],\n padding: [16, 40],\n borderBottomLeftRadius: dimensions.BORDER_RADIUS_LARGE,\n borderBottomRightRadius: dimensions.BORDER_RADIUS_LARGE,\n backgroundColor: colors.CLASSIC_WHITE,\n },\n\n 'buttons-left': {\n justifyContent: 'flex-start',\n },\n\n 'buttons-center': {\n justifyContent: 'center',\n },\n\n 'buttons-right': {\n justifyContent: 'flex-end',\n },\n\n withoutFooter: {},\n\n withStickyFooter: {\n display: 'flex',\n flexDirection: 'column',\n\n '& $content': {\n position: 'relative',\n zIndex: 1,\n },\n },\n\n footerWrapper: {},\n\n l: {\n '& $modal': {\n padding: [36, MODAL_HORIZONTAL_PADDING_L],\n fontSize: 16,\n width: 560,\n\n '&$withStickyFooter': {\n paddingBottom: 0,\n },\n },\n\n '& $withoutFooter': {\n paddingBottom: 54,\n },\n\n '& $title': {\n fontSize: 28,\n marginBottom: 32,\n },\n\n '& $close': {\n right: 27,\n top: 22,\n },\n\n '& $footerWrapper': {\n paddingTop: 40,\n },\n\n '& $stickyFooter': {\n paddingLeft: MODAL_HORIZONTAL_PADDING_L,\n paddingRight: MODAL_HORIZONTAL_PADDING_L,\n marginLeft: -MODAL_HORIZONTAL_PADDING_L,\n marginRight: -MODAL_HORIZONTAL_PADDING_L,\n },\n },\n\n m: {\n '& $modal': {\n padding: [32, MODAL_HORIZONTAL_PADDING_M],\n width: 480,\n\n '&$withStickyFooter': {\n paddingBottom: 0,\n },\n },\n\n '& $withoutFooter': {\n paddingBottom: 48,\n },\n\n '& $title': {\n fontSize: 24,\n marginBottom: 28,\n },\n\n '& $close': {\n right: 23,\n top: 18,\n },\n\n '& $footerWrapper': {\n paddingTop: 36,\n },\n\n '& $stickyFooter': {\n paddingLeft: MODAL_HORIZONTAL_PADDING_M,\n paddingRight: MODAL_HORIZONTAL_PADDING_M,\n marginLeft: -MODAL_HORIZONTAL_PADDING_M,\n marginRight: -MODAL_HORIZONTAL_PADDING_M,\n },\n },\n\n s: {\n '& $modal': {\n padding: [24, MODAL_HORIZONTAL_PADDING_S],\n fontSize: 14,\n width: 360,\n\n '&$withStickyFooter': {\n paddingBottom: 0,\n },\n },\n\n '& $withoutFooter': {\n paddingBottom: 40,\n },\n\n '& $title': {\n fontSize: 20,\n marginBottom: 15,\n },\n\n '& $close': {\n right: 14,\n top: 11,\n },\n\n '& $footerWrapper': {\n paddingTop: 28,\n },\n\n '& $stickyFooter': {\n paddingLeft: MODAL_HORIZONTAL_PADDING_S,\n paddingRight: MODAL_HORIZONTAL_PADDING_S,\n marginLeft: -MODAL_HORIZONTAL_PADDING_S,\n marginRight: -MODAL_HORIZONTAL_PADDING_S,\n },\n },\n\n modalWrapper: {\n display: 'flex',\n width: '100%',\n },\n\n // TODO: вынести анимацию ?\n /* ----------- SHOW / HIDE ANIMATION ----------- */\n animationEnd: {\n '& $modal': {\n opacity: 0,\n },\n\n '& $position-center $modal': {\n transform: 'translateY(35px)',\n },\n\n '& $position-right $modal': {\n transform: 'translateX(35px)',\n },\n\n '& $position-left $modal': {\n transform: 'translateX(-35px)',\n },\n\n '& $overlay': {\n opacity: 0,\n },\n },\n\n animationStart: {\n '& $modal': {\n opacity: 1,\n transition: '0.15s ease',\n transitionProperty: 'transform, opacity',\n },\n\n '& $position-center $modal': {\n transform: 'translateY(0)',\n },\n\n '& $position-right $modal': {\n transform: 'translateX(0)',\n },\n\n '& $position-left $modal': {\n transform: 'translateX(0)',\n },\n\n '& $overlay': {\n opacity: 1,\n transition: 'opacity 0.2s ease',\n },\n },\n\n 'modal-enter': { extend: 'animationEnd' },\n 'modal-enter-active': { extend: 'animationStart' },\n 'modal-exit': { extend: 'animationStart' },\n 'modal-exit-active': { extend: 'animationEnd' },\n});\n\nexport const closeButtonStyles: IIconButtonStyles = {\n m: {\n width: MODAL_CLOSE_BUTTON_SIZE,\n height: MODAL_CLOSE_BUTTON_SIZE,\n },\n\n icon: {\n width: MODAL_CLOSE_BUTTON_ICON_SIZE,\n height: MODAL_CLOSE_BUTTON_ICON_SIZE,\n },\n};\n\nexport type IModalStyles = ITweakStyles<typeof useStyles, { tweakCloseButton: IIconButtonStyles }>;\n","import { FC, ReactNode, MouseEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport { RemoveScroll } from 'react-remove-scroll';\nimport { CSSTransition } from 'react-transition-group';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n getTestId,\n isArrayNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { IconButton } from '../IconButton';\nimport { IModalPosition, IModalTransitionProps } from './types';\nimport { useStyles, IModalStyles, closeButtonStyles } from './Modal.styles';\n\nexport interface IModalProps extends ICommonProps<IModalStyles>, IModalTransitionProps {\n title?: ReactNode;\n /** @default 'l' */\n size?: 'l' | 'm' | 's';\n /** @default false */\n isFooterSticky?: boolean;\n footer?: ReactNode;\n /** @deprecated use {@link footer} */\n buttons?: ReactNode[];\n /** @default 'right' */\n buttonsAlign?: 'left' | 'center' | 'right';\n children?: ReactNode | ReactNode[];\n /** @default 'center' */\n position?: IModalPosition;\n /** @default true */\n hasCloseButton?: boolean;\n /** @default true */\n hasOverlay?: boolean;\n /** @default true */\n shouldCloseOnOverlayClick?: boolean;\n /** @default true */\n shouldCloseOnEsc?: boolean;\n /** @default true */\n shouldBlockScroll?: boolean;\n /** @default false */\n isOpen?: boolean;\n zIndex?: number;\n onClose?: () => void;\n}\n\nexport const Modal: FC<IModalProps> = ({\n data,\n tweakStyles,\n title,\n size = 'l',\n isFooterSticky = false,\n footer,\n buttons,\n buttonsAlign = 'right',\n hasCloseButton = true,\n hasOverlay = true,\n isOpen = false,\n position = 'center',\n children,\n zIndex,\n testId,\n shouldCloseOnOverlayClick = true,\n shouldCloseOnEsc = true,\n shouldBlockScroll = true,\n timeout = 150,\n unmountOnExit = true,\n onClose,\n ...restProps\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakCloseButtonStyles = useTweakStyles({\n innerStyles: closeButtonStyles,\n tweakStyles,\n className: 'tweakCloseButton',\n currentComponentName: 'Modal',\n });\n\n const [isClickOnOverlay, setIsClickOnOverlay] = useState(false);\n\n const isModalOpen = restProps.in ?? isOpen;\n const hasFooter = isReactNodeNotEmpty(footer) || isArrayNotEmpty(buttons);\n const overlay = useRef<HTMLDivElement>(null);\n\n // Клик на оверлее обрабатываем через связку onMouseDown и onMouseUp, т.к. клик\n // создает ложные срабатывания (баг при старте клика на модалке и отпусканием мышки уже на оверлее)\n const handleOutsideMouseDown = (event: MouseEvent) => {\n if (onClose !== undefined && event.target === overlay.current) {\n setIsClickOnOverlay(true);\n }\n };\n\n const handleOutsideMouseUp = (event: MouseEvent) => {\n if (onClose === undefined) {\n return;\n }\n if (event.target === overlay.current && isClickOnOverlay) {\n onClose();\n }\n setIsClickOnOverlay(false);\n };\n\n const handleEscClose = useCallback(\n (event: KeyboardEvent) => {\n if (event.code === 'Escape' && onClose !== undefined) {\n onClose();\n }\n },\n [onClose],\n );\n\n useEffect(() => {\n if (!shouldCloseOnEsc || onClose === undefined || !isModalOpen) {\n return () => null;\n }\n\n document.addEventListener('keydown', handleEscClose);\n return () => document.removeEventListener('keydown', handleEscClose);\n }, [shouldCloseOnEsc, onClose, isModalOpen, handleEscClose]);\n\n return (\n <CSSTransition\n in={isModalOpen}\n timeout={timeout}\n unmountOnExit={unmountOnExit}\n classNames={{\n enter: classes['modal-enter'],\n enterActive: classes['modal-enter-active'],\n exit: classes['modal-exit'],\n exitActive: classes['modal-exit-active'],\n }}\n {...restProps}\n >\n <div className={classes.modalWrapper}>\n <RemoveScroll enabled={shouldBlockScroll} forwardProps>\n <div\n className={clsx(classes.root, classes[size], {\n [classes.overlay]: position !== 'static' && hasOverlay,\n [classes.sideBar]: position === 'left' || position === 'right',\n [classes.fixedPosition]: position !== 'static',\n })}\n style={{ zIndex }}\n {...addDataAttributes(data, testId)}\n >\n <div\n ref={overlay}\n className={clsx(classes.innerOverlay, classes[`position-${position}`])}\n onMouseDown={shouldCloseOnOverlayClick ? handleOutsideMouseDown : undefined}\n onMouseUp={shouldCloseOnOverlayClick ? handleOutsideMouseUp : undefined}\n >\n <div\n className={clsx(classes.modal, {\n [classes.withoutFooter]: !hasFooter,\n [classes.withStickyFooter]: isFooterSticky,\n })}\n >\n {hasCloseButton && (\n <div className={classes.close}>\n <IconButton\n testId={getTestId(testId, 'close-button')}\n tweakStyles={tweakCloseButtonStyles}\n view=\"cancel-light\"\n icon=\"close\"\n onClick={onClose}\n />\n </div>\n )}\n {isReactNodeNotEmpty(title) && (\n <h3\n className={clsx(classes.title, {\n [classes.titleWithCloseButton]: hasCloseButton,\n })}\n >\n {title}\n </h3>\n )}\n {isReactNodeNotEmpty(children) && <div className={classes.content}>{children}</div>}\n {hasFooter && (\n <div\n className={clsx(classes.footerWrapper, {\n [classes.stickyFooterWrapper]: isFooterSticky,\n })}\n >\n <div\n className={clsx(classes.footer, classes[`buttons-${buttonsAlign}`], {\n [classes.stickyFooter]: isFooterSticky,\n })}\n >\n {isReactNodeNotEmpty(footer) ? footer : buttons}\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n </RemoveScroll>\n </div>\n </CSSTransition>\n );\n};\n","import { rgba } from '../../helpers';\nimport { colors, ITweakStyles, createThemedStyles, animations } from '../../theme';\nimport { IListStyles } from '../List';\n\nexport const useStyles = createThemedStyles('MoreMenu', {\n root: {\n position: 'relative',\n },\n\n hasCircle: {},\n\n button: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n backgroundColor: 'transparent',\n color: colors.FONT_MEDIUM,\n padding: 0,\n borderRadius: '50%',\n border: 'none',\n cursor: 'pointer',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color',\n\n '&$hasCircle': {\n backgroundColor: rgba(colors.GREY_HOVER, 0.5),\n },\n\n '&:hover': {\n backgroundColor: rgba(colors.BORDER_MAIN, 0.5),\n },\n\n '&:focus': {\n backgroundColor: rgba(colors.FONT_DISABLED, 0.2),\n },\n\n '&:active, &$active': {\n backgroundColor: rgba(colors.FONT_DISABLED, 0.5),\n },\n\n '&$disabled': {\n backgroundColor: rgba(colors.GREY_FOCUS, 0.5),\n color: colors.BORDER_MAIN,\n },\n },\n\n icon: {\n width: 30,\n height: 30,\n },\n\n active: {},\n\n disabled: {\n cursor: 'default',\n },\n\n menu: {\n position: 'absolute',\n zIndex: 5,\n top: '100%',\n right: 0,\n marginTop: 6,\n },\n});\n\nexport type IMoreMenuStyles = ITweakStyles<typeof useStyles, { tweakList: IListStyles }>;\n","import { FC, MouseEvent, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes, getTestId } from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles, useOnClickOutsideWithRef } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { IListItem, List } from '../List';\nimport { useStyles, IMoreMenuStyles } from './MoreMenu.styles';\n\nexport interface IMoreMenuProps extends ICommonProps<IMoreMenuStyles> {\n items: IListItem[];\n /** @default false */\n isDisabled?: boolean;\n /** @default true */\n hasDefaultStateBackground?: boolean;\n onMenuOpen?: () => void;\n onMenuClose?: () => void;\n}\n\n/** @deprecated Используйте {@link import('../NewMoreMenu').NewMoreMenu NewMoreMenu} */\nexport const MoreMenu: FC<IMoreMenuProps> = ({\n items,\n isDisabled = false,\n hasDefaultStateBackground = true,\n data,\n testId,\n tweakStyles,\n onMenuOpen,\n onMenuClose,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakListStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakList',\n currentComponentName: 'MoreMenu',\n });\n\n const [isMenuShown, setIsMenuShown] = useState(false);\n const list = useRef<HTMLDivElement>(null);\n const button = useRef<HTMLButtonElement>(null);\n\n const isButtonDisabled = isDisabled || items.length === 0;\n\n const toggleMenu = (event: MouseEvent) => {\n const isShown = !isMenuShown;\n event.stopPropagation();\n setIsMenuShown(isShown);\n if (isShown) {\n onMenuOpen?.();\n } else {\n onMenuClose?.();\n }\n };\n\n const handleCloseMenu = () => {\n setIsMenuShown(false);\n onMenuClose?.();\n };\n\n useOnClickOutsideWithRef(list, handleCloseMenu, button);\n\n return (\n <div className={classes.root}>\n <button\n ref={button}\n className={clsx(classes.button, {\n [classes.hasCircle]: hasDefaultStateBackground,\n [classes.disabled]: isButtonDisabled,\n [classes.active]: isMenuShown,\n })}\n onClick={!isButtonDisabled ? toggleMenu : undefined}\n {...addDataAttributes(data, testId)}\n >\n <div className={classes.icon}>\n <Icon type=\"menu\" />\n </div>\n </button>\n {isMenuShown && !isButtonDisabled && (\n <div className={classes.menu} ref={list}>\n <List\n items={items}\n testId={getTestId(testId, 'list')}\n tweakStyles={tweakListStyles}\n onClick={handleCloseMenu}\n />\n </div>\n )}\n </div>\n );\n};\n","import { ITweakStyles, createThemedStyles } from '../../../../theme';\n\nexport const useStyles = createThemedStyles('MultiSelectInput', {\n root: {\n display: 'flex',\n justifyContent: 'center',\n flexDirection: 'column',\n height: '100%',\n padding: [0, 12],\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n\n placeholder: {\n fontSize: 16,\n userSelect: 'none',\n },\n\n placeholderSmall: {\n fontSize: 12,\n marginBottom: 2,\n position: 'relative',\n },\n\n values: {\n width: '100%',\n },\n\n value: {\n width: 'calc(100% - 64px)',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n\n amount: {\n boxSizing: 'border-box',\n position: 'absolute',\n top: 'calc(50% - 11px)',\n right: 44,\n height: 22,\n minWidth: 22,\n fontSize: 14,\n lineHeight: '16px',\n textAlign: 'center',\n padding: [2, 4],\n },\n\n indicator: {\n position: 'absolute',\n top: 0,\n right: 0,\n height: '100%',\n width: 36,\n borderRadius: 6,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n arrow: {\n width: 20,\n height: 20,\n transition: 'transform .2s ease',\n },\n\n arrowUp: {\n transform: 'rotate(180deg)',\n },\n\n indicatorDisabled: {},\n});\n\nexport type IMultiSelectInputStyles = ITweakStyles<typeof useStyles>;\n","import { ReactElement } from 'react';\nimport clsx from 'clsx';\nimport { ICommonProps } from '../../../../types';\nimport { Icon } from '../../../Icon';\nimport { IMultiSelectListValues } from '../../../MultiSelectList';\nimport { useStyles, IMultiSelectInputStyles } from './MultiSelectInput.styles';\n\nexport interface IMultiSelectInputProps<Value>\n extends Pick<ICommonProps<IMultiSelectInputStyles>, 'tweakStyles'> {\n value?: IMultiSelectListValues<Value>;\n isOpen: boolean;\n isDisabled: boolean;\n placeholder: string;\n onToggle: (state: boolean) => void;\n}\n\nexport function MultiSelectInput<Value>({\n value: v,\n isOpen,\n isDisabled = false,\n placeholder = '',\n tweakStyles,\n onToggle,\n}: IMultiSelectInputProps<Value>): ReactElement | null {\n const classes = useStyles({ theme: tweakStyles });\n\n const value = v?.include;\n\n return (\n <div className={classes.root} onClick={() => !isDisabled && onToggle(!isOpen)}>\n {/* Placeholder */}\n {(value === undefined || (value && value.length === 0)) && (\n <div className={classes.placeholder}>{placeholder}</div>\n )}\n {/* Selected options */}\n {value !== undefined && value.length > 0 && (\n <>\n <div className={clsx(classes.placeholder, classes.placeholderSmall)}>{placeholder}</div>\n <div className={classes.values}>\n <div className={classes.value}>{value.join(', ')}</div>\n <div className={classes.amount}>{value.length}</div>\n </div>\n </>\n )}\n {/* Chevron */}\n <div className={clsx(classes.indicator, isDisabled && classes.indicatorDisabled)}>\n <div className={clsx(classes.arrow, isOpen && classes.arrowUp)}>\n <Icon type=\"chevron-down\" />\n </div>\n </div>\n </div>\n );\n}\n","import { ITweakStyles, createThemedStyles } from '../../theme';\nimport { IMultiSelectListStyles } from '../MultiSelectList';\n\nexport const useStyles = createThemedStyles('MultiSelect', {\n root: {\n position: 'relative',\n boxSizing: 'border-box',\n height: '100%',\n width: '100%',\n cursor: 'pointer',\n fontSize: 16,\n },\n\n required: {\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n left: -12,\n top: '50%',\n transform: 'translate(0, -50%)',\n width: 6,\n height: 6,\n borderRadius: '50%',\n },\n },\n\n disabled: {\n cursor: 'default',\n },\n\n listContainer: {\n position: 'absolute',\n top: 'calc(100% + 4px)',\n left: -1,\n right: -1,\n zIndex: 2,\n },\n\n invalid: {},\n\n open: {},\n\n full: {},\n\n left: {},\n\n right: {},\n});\n\nexport const multiSelectListStyles: IMultiSelectListStyles = {\n root: {\n width: '100%',\n },\n};\n\nexport type IMultiSelectStyles = ITweakStyles<\n typeof useStyles,\n { tweakMultiSelectList: IMultiSelectListStyles }\n>;\n","import { useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { useOnClickOutside, useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport {\n MultiSelectList,\n IMultiSelectListValues,\n IMultiSelectLocale,\n IMultiSelectLocaleKey,\n} from '../MultiSelectList';\nimport { MultiSelectInput } from './components';\nimport { IHorizontalCornerConnection } from './types';\nimport { useStyles, IMultiSelectStyles, multiSelectListStyles } from './MultiSelect.styles';\n\nexport interface IMultiSelectProps<Value = string> extends ICommonProps<IMultiSelectStyles> {\n value?: IMultiSelectListValues<Value>;\n /** @default 'full' */\n corners?: IHorizontalCornerConnection;\n /** @default false */\n isInvalid?: boolean;\n /** @default false */\n isRequired?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default '' */\n placeholder?: string;\n localeKey?: IMultiSelectLocaleKey;\n locale?: IMultiSelectLocale;\n onChange: (value?: IMultiSelectListValues<Value>) => void;\n fetchOptions: (value?: string, page?: number) => Promise<Value[]>;\n}\n\nexport function MultiSelect<Value = string>({\n value,\n corners = 'full',\n isInvalid = false,\n isRequired = false,\n isDisabled = false,\n placeholder = '',\n localeKey,\n locale,\n testId,\n data,\n onChange,\n fetchOptions,\n tweakStyles,\n}: IMultiSelectProps<Value>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakMultiSelectListStyles = useTweakStyles({\n innerStyles: multiSelectListStyles,\n tweakStyles,\n className: 'tweakMultiSelectList',\n currentComponentName: 'MultiSelect',\n });\n\n const [isOpen, setIsOpen] = useState(false);\n\n const ref = useRef(null);\n\n const handleOnClose = () => {\n setIsOpen(false);\n };\n\n useOnClickOutside(ref, handleOnClose, classes.root);\n\n return (\n <div\n className={clsx(\n classes.root,\n classes[corners],\n isOpen && classes.open,\n isInvalid && !isDisabled && classes.invalid,\n isRequired && classes.required,\n isDisabled && classes.disabled,\n )}\n {...addDataAttributes(data, testId)}\n >\n {/* Input */}\n <MultiSelectInput\n value={value}\n isOpen={isOpen}\n isDisabled={isDisabled}\n placeholder={placeholder}\n onToggle={(state) => setIsOpen(state)}\n />\n {/* Dropdown */}\n {isOpen && (\n <div className={classes.listContainer} ref={ref}>\n <MultiSelectList\n tweakStyles={tweakMultiSelectListStyles}\n value={value}\n localeKey={localeKey}\n locale={locale}\n fetchOptions={fetchOptions}\n onChange={onChange}\n onClose={handleOnClose}\n />\n </div>\n )}\n </div>\n );\n}\n","import { ITweakStyles, createThemedStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('Notification', {\n root: {\n display: 'flex',\n },\n\n inline: {\n width: 'fit-content',\n },\n\n icon: {\n width: 20,\n height: 20,\n marginRight: 16,\n flexShrink: 0,\n },\n\n body: {\n flexGrow: 1,\n },\n\n title: {\n display: 'block',\n fontWeight: 'bold',\n },\n\n text: {\n display: 'block',\n },\n\n content: {},\n\n s: {},\n\n m: {},\n\n l: {},\n\n withText: {},\n\n withTitle: {},\n\n error: {},\n\n info: {},\n\n warning: {},\n\n ok: {},\n\n 'not-ok': {},\n\n custom: {},\n});\n\nexport type INotificationStyles = ITweakStyles<typeof useStyles>;\n","import { FC, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n addDataTestId,\n isReactNodeNotEmpty,\n isStringNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { Icon, IIcon, renderIcon } from '../Icon';\nimport { INotificationType } from './types';\nimport { useStyles, INotificationStyles } from './Notification.styles';\n\nexport interface INotificationProps extends ICommonProps<INotificationStyles> {\n type: INotificationType;\n /** @default true */\n isFullWidth?: boolean;\n text?: string;\n title?: string;\n /** @default 's' */\n size?: 's' | 'm' | 'l';\n icon?: IIcon;\n children?: ReactNode;\n}\n\nexport const Notification: FC<INotificationProps> = ({\n children,\n type,\n isFullWidth = true,\n text,\n title,\n testId,\n size = 's',\n data,\n icon,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const hasText = isStringNotEmpty(text);\n const hasTitle = isStringNotEmpty(title);\n const isDefaultType = type !== 'custom';\n const hasIcon = isReactNodeNotEmpty(icon) || isDefaultType;\n\n return (\n <div\n className={clsx(classes.root, classes[size], classes[type], {\n [classes.inline]: !isFullWidth,\n [classes.withTitle]: hasTitle,\n [classes.withText]: hasText,\n })}\n {...addDataAttributes(data, testId)}\n >\n {hasIcon && (\n <div className={classes.icon}>\n {isReactNodeNotEmpty(icon)\n ? renderIcon(icon)\n : isDefaultType && <Icon type={`status-${type}`} />}\n </div>\n )}\n <div className={classes.body}>\n {hasTitle && (\n <span className={classes.title} {...addDataTestId(testId, 'title')}>\n {title}\n </span>\n )}\n {hasText && (\n <span className={classes.text} {...addDataTestId(testId, 'text')}>\n {text}\n </span>\n )}\n {isReactNodeNotEmpty(children) && <div className={classes.content}>{children}</div>}\n </div>\n </div>\n );\n};\n","import { colors, createThemedStyles, dimensions, helpers, ITweakStyles } from '../../../../theme';\nimport { IInputStyles } from '../../../Input';\n\nconst ROW_HEIGHT = 40;\nconst LIST_PADDING = 10;\n\nexport const useStyles = createThemedStyles('PhoneInputCountryList', {\n root: {\n borderRadius: dimensions.BORDER_RADIUS_SMALL,\n backgroundColor: colors.CLASSIC_WHITE,\n border: [1, 'solid', colors.BORDER_MAIN],\n boxShadow: '1px 2px 10px rgba(0, 0, 0, 0.25)',\n overflow: 'hidden',\n },\n\n searchContainer: {\n width: '100%',\n height: dimensions.CONTROL.HEIGHT,\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n padding: [0, 8, 0, 16],\n borderBottom: [1, 'solid', colors.BORDER_MAIN],\n },\n\n icon: {\n width: 20,\n height: 20,\n },\n\n searchIcon: {\n extend: 'icon',\n color: colors.FONT_LABEL,\n flexShrink: 0,\n },\n\n flagList: {\n maxHeight: ROW_HEIGHT * 6 + 2 * LIST_PADDING,\n padding: [LIST_PADDING, 0],\n ...helpers.withScrollBar,\n },\n\n listItem: {\n height: ROW_HEIGHT,\n padding: [12, 16],\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n fontSize: 14,\n lineHeight: '20px',\n letterSpacing: 0.15,\n whiteSpace: 'nowrap',\n boxSizing: 'border-box',\n },\n\n selectedCountry: {\n backgroundColor: colors.GREY_BACKGROUND,\n },\n\n activeCountry: {\n backgroundColor: colors.GREY_FOCUS,\n },\n\n flag: {\n width: 22,\n height: 16,\n flexShrink: 0,\n },\n\n countryName: {\n color: colors.FONT_MAIN,\n overflowX: 'hidden',\n textOverflow: 'ellipsis',\n margin: [0, 8, 0, 12],\n },\n\n dialCode: {\n color: colors.GREY_ACTIVE,\n },\n\n emptyResult: {\n color: colors.FONT_LABEL,\n padding: [6, 16],\n },\n});\n\nexport const inputStyles: IInputStyles = {\n tweakControlWrapper: {\n controlWrapper: {\n border: 'none',\n height: 'calc(var(--control-height) - 2px)',\n },\n },\n\n input: {\n fontSize: 14,\n lineHeight: '20px',\n letterSpacing: 0.15,\n },\n};\n\nexport type IPhoneInputCountryListStyles = ITweakStyles<\n typeof useStyles,\n { tweakInput: IInputStyles }\n>;\n","import { FC, useEffect, useMemo, useState } from 'react';\nimport clsx from 'clsx';\nimport { phoneInfo } from '../../../../constants';\nimport {\n checkSearchStringInCountry,\n findCountryIndexByCode,\n getCountryTextByLocale,\n sortCountriesByLocale,\n} from '../../../../helpers';\nimport { useTweakStyles } from '../../../../hooks';\nimport { ICommonProps } from '../../../../types';\nimport { Flag } from '../../../Flag';\nimport { Icon } from '../../../Icon';\nimport { IChangeInputEvent, Input } from '../../../Input';\nimport { ScrollIntoViewIfNeeded } from '../../../ScrollIntoViewIfNeeded';\nimport { IPhoneInfo } from '../../types';\nimport {\n inputStyles,\n IPhoneInputCountryListStyles,\n useStyles,\n} from './PhoneInputCountryList.styles';\n\nexport interface IPhoneInputCountryListProps\n extends Pick<ICommonProps<IPhoneInputCountryListStyles>, 'tweakStyles'> {\n selectedCountryCode?: string;\n locale: string;\n placeholder: string;\n noMatchesLabel: string;\n closeList: () => void;\n onChange: (country: IPhoneInfo, event: IChangeInputEvent | KeyboardEvent) => void;\n}\n\nexport const PhoneInputCountryList: FC<IPhoneInputCountryListProps> = ({\n locale,\n placeholder,\n selectedCountryCode,\n closeList,\n noMatchesLabel,\n onChange,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakInputStyles = useTweakStyles({\n innerStyles: inputStyles,\n tweakStyles,\n className: 'tweakInput',\n currentComponentName: 'PhoneInputCountryList',\n });\n\n const sortedCountries = useMemo(() => sortCountriesByLocale(phoneInfo, locale), [locale]);\n\n const selectedCountryIdx = findCountryIndexByCode(selectedCountryCode, sortedCountries);\n\n const [searchValue, setSearchValue] = useState('');\n const [countriesList, setCountriesList] = useState(sortedCountries);\n const [keyCursorOn, setKeyCursorOn] = useState(\n selectedCountryIdx !== -1 ? selectedCountryIdx : 0,\n );\n\n const handleSearchChange = (newSearchValue: string) => {\n const newCountriesList = sortedCountries.filter((country) =>\n checkSearchStringInCountry(country, newSearchValue),\n );\n\n const defaultKeyCursorOn = newCountriesList.length > 0 ? 0 : -1;\n const newSelectedCountryIdx = findCountryIndexByCode(selectedCountryCode, newCountriesList);\n\n setCountriesList(newCountriesList);\n setSearchValue(newSearchValue);\n setKeyCursorOn(newSelectedCountryIdx !== -1 ? newSelectedCountryIdx : defaultKeyCursorOn);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const lastListItemIdx = countriesList.length - 1;\n\n if (event.code === 'Escape' || event.code === 'Tab') {\n closeList();\n }\n\n if (event.code === 'ArrowDown' && lastListItemIdx !== -1) {\n // чтобы убрать перемещение курсора в инпуте\n event.preventDefault();\n setKeyCursorOn(keyCursorOn < lastListItemIdx ? keyCursorOn + 1 : 0);\n }\n\n if (event.code === 'ArrowUp' && lastListItemIdx !== -1) {\n // чтобы убрать перемещение курсора в инпуте\n event.preventDefault();\n setKeyCursorOn(keyCursorOn > 0 ? keyCursorOn - 1 : lastListItemIdx);\n }\n\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n if (countriesList.length === 0) {\n closeList();\n } else if (keyCursorOn >= 0) {\n onChange(countriesList[keyCursorOn], event);\n }\n }\n };\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown, false);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown, false);\n };\n });\n\n return (\n <div className={classes.root}>\n <div className={classes.searchContainer}>\n <div className={classes.searchIcon}>\n <Icon type=\"search\" />\n </div>\n <Input\n value={searchValue}\n placeholder={placeholder}\n onChange={handleSearchChange}\n tweakStyles={tweakInputStyles}\n isClearable\n shouldFocusOnMount\n />\n </div>\n <div className={classes.flagList}>\n {countriesList.map((country, index) => (\n <ScrollIntoViewIfNeeded\n key={country.countryCode}\n active={keyCursorOn === index}\n options={{ block: 'nearest' }}\n >\n <div\n className={clsx(classes.listItem, {\n [classes.activeCountry]: selectedCountryIdx === index,\n [classes.selectedCountry]: keyCursorOn === index,\n })}\n onMouseEnter={() => setKeyCursorOn(index)}\n onClick={(e) => onChange(country, e)}\n >\n <div className={classes.flag}>\n <Flag countryCode={country.countryCode} />\n </div>\n <div className={classes.countryName}>{getCountryTextByLocale(country, locale)}</div>\n <div className={classes.dialCode}>{`+${country.dialCode}`}</div>\n </div>\n </ScrollIntoViewIfNeeded>\n ))}\n {countriesList.length === 0 && <div className={classes.emptyResult}>{noMatchesLabel}</div>}\n </div>\n </div>\n );\n};\n","import { IPhoneValue } from './types';\n\nexport const DEFAULT_VALUE: IPhoneValue = { phoneNumber: '', dialCode: '' };\n","import { colors, createThemedStyles, dimensions, ITweakStyles } from '../../theme';\nimport { IInputStyles } from '../Input';\nimport { IPhoneInputCountryListStyles } from './components';\n\nconst COUNTRY_SELECT_WIDTH = 80;\n\nexport const useStyles = createThemedStyles('PhoneInput', {\n root: {\n width: '100%',\n position: 'relative',\n boxSizing: 'border-box',\n zIndex: 0,\n },\n\n countrySelectContainer: {\n position: 'absolute',\n left: 1,\n top: 1,\n width: COUNTRY_SELECT_WIDTH,\n height: dimensions.CONTROL.HEIGHT - 2,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: ['solid', 1, colors.BORDER_MAIN],\n transition: 'border-color 0.2s ease-in',\n cursor: 'pointer',\n zIndex: dimensions.Z_INDEX.CONTROL_FOCUS + 1,\n },\n\n disabledCountrySelect: {\n cursor: 'default',\n },\n\n flag: {\n width: 22,\n height: 16,\n },\n\n arrow: {\n width: 20,\n color: colors.GREY_ACTIVE,\n marginLeft: 8,\n transition: 'transform .2s ease',\n },\n\n up: {\n transform: 'rotate(180deg)',\n },\n\n invalidArrow: {\n color: colors.RED_WARNING,\n },\n\n focusedBorder: {},\n\n invalidBorder: {\n borderColor: colors.RED_WARNING,\n },\n\n inputContainer: {\n position: 'relative',\n flex: 1,\n },\n\n flagListContainer: {\n position: 'absolute',\n width: '100%',\n top: dimensions.CONTROL.HEIGHT + 6,\n left: -1,\n zIndex: 3,\n },\n});\n\nexport const inputStyles: IInputStyles = {\n tweakControlWrapper: {\n controlWrapper: {\n paddingLeft: COUNTRY_SELECT_WIDTH,\n },\n\n label: {\n marginLeft: COUNTRY_SELECT_WIDTH,\n },\n },\n};\n\nexport type IPhoneInputStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakInput: IInputStyles;\n tweakCountryList: IPhoneInputCountryListStyles;\n }\n>;\n","import { FC, FocusEvent, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes, getTestId } from '@true-engineering/true-react-platform-helpers';\nimport {\n findCountryByCode,\n getCountryCodeFromPhone,\n getFullPhone,\n getPhoneMask,\n getPhoneObjFromString,\n} from '../../helpers';\nimport { useOnClickOutsideWithRef, useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { Flag } from '../Flag';\nimport { Icon } from '../Icon';\nimport { IChangeInputEvent, IInputProps, Input } from '../Input';\nimport { PhoneInputCountryList } from './components';\nimport { DEFAULT_VALUE } from './constants';\nimport { IChangePhoneInputEvent, IPhoneInfo, IPhoneValue } from './types';\nimport { inputStyles, IPhoneInputStyles, useStyles } from './PhoneInput.styles';\n\nexport interface IPhoneInputProps\n extends Omit<\n IInputProps,\n 'value' | 'onChange' | 'type' | 'mask' | 'units' | 'placeholder' | 'tweakStyles'\n >,\n ICommonProps<IPhoneInputStyles> {\n /** @default 'ru' */\n locale?: string;\n /** @default 'Поиск' */\n codeSearchPlaceholder?: string;\n /** @default 'Ничего не найдено' */\n noMatchesLabel?: string;\n /** @default { phoneNumber: '', dialCode: '' } */\n value?: IPhoneValue;\n onChange: (phone: IPhoneValue, event: IChangePhoneInputEvent) => void;\n}\n\nexport const PhoneInput: FC<IPhoneInputProps> = ({\n locale = 'ru',\n value = DEFAULT_VALUE,\n onChange,\n data,\n testId,\n isDisabled,\n isInvalid,\n isActive,\n tweakStyles,\n codeSearchPlaceholder = 'Поиск',\n noMatchesLabel = 'Ничего не найдено',\n ...inputProps\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakInputStyles = useTweakStyles({\n innerStyles: inputStyles,\n tweakStyles,\n className: 'tweakInput',\n currentComponentName: 'PhoneInput',\n });\n\n const tweakCountryListStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakCountryList',\n currentComponentName: 'PhoneInput',\n });\n\n const [isListOpen, setIsListOpen] = useState(false);\n const [isFocused, setFocused] = useState(false);\n\n const list = useRef<HTMLDivElement>(null);\n const inputWrapper = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const phoneWithCode = getFullPhone(value);\n\n const countryCode = useMemo(\n () => value?.countryCode ?? getCountryCodeFromPhone(phoneWithCode),\n [phoneWithCode, value?.countryCode],\n );\n\n const handleClose = () => {\n setIsListOpen(false);\n };\n\n const handleChange = (inputValue: string, event: IChangeInputEvent) => {\n // if (event.type === 'change') - нужно из-за InputMask\n // Помимо change, еще могут приходить focus и blur, когда input пустой и тогда происходят неприятные сайд-эффекты\n if (event.type === 'change') {\n const newValue = inputValue.replace(/[^0-9]/g, '');\n let selectedCountryCode = countryCode;\n\n const selectedCountry = findCountryByCode(countryCode);\n\n // Проверяем введенный номер на соответствие с selectedCountry\n // Если не соответствует, то пытаемся найти countryCode, для которой\n // данный номер будет валидным (функция getPhoneObjFromString)\n if (selectedCountry !== undefined) {\n // Сначала проверяем, что введенный телефон удовлетворяет одному\n // из fullCode для выбранной страны\n const isSomeFullCodeValid = selectedCountry.fullCodes.some((fullCode) => {\n if (newValue.length >= fullCode.length) {\n return newValue.startsWith(fullCode);\n } else {\n return fullCode.startsWith(newValue);\n }\n });\n\n // После проверяем, что введенный телефон удовлетворяет dialCode для выбранной страны\n const isDialCodeValid = newValue.startsWith(selectedCountry.dialCode);\n\n if (!isSomeFullCodeValid || !isDialCodeValid) {\n selectedCountryCode = undefined;\n }\n }\n\n onChange(getPhoneObjFromString(newValue, selectedCountryCode), event);\n }\n };\n\n const handleSelect = (newPhoneInfo: IPhoneInfo, event: IChangePhoneInputEvent) => {\n if (newPhoneInfo.countryCode !== countryCode) {\n onChange(\n {\n phoneNumber:\n newPhoneInfo.dialCode !== value.dialCode\n ? ''\n : getPhoneObjFromString(phoneWithCode).phoneNumber,\n dialCode: newPhoneInfo.dialCode,\n countryCode: newPhoneInfo.countryCode,\n },\n event,\n );\n }\n handleClose();\n\n const input = inputRef?.current;\n if (input !== null) {\n input.focus();\n }\n };\n\n const handleFocus = (event: FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n if (inputProps.onFocus !== undefined) {\n inputProps?.onFocus(event);\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n if (inputProps.onBlur !== undefined) {\n inputProps?.onBlur(event);\n }\n };\n\n useOnClickOutsideWithRef(list, handleClose, inputWrapper);\n\n return (\n <div className={classes.root} {...addDataAttributes(data, testId)}>\n <div\n className={clsx(classes.countrySelectContainer, {\n [classes.disabledCountrySelect]: isDisabled,\n [classes.invalidBorder]: isInvalid,\n [classes.focusedBorder]: isActive || isListOpen || isFocused,\n })}\n ref={inputWrapper}\n onClick={!isDisabled ? () => setIsListOpen(!isListOpen) : undefined}\n >\n <div className={classes.flag}>\n <Flag countryCode={countryCode} />\n </div>\n <div\n className={clsx(classes.arrow, {\n [classes.up]: isListOpen,\n [classes.invalidArrow]: isInvalid,\n })}\n >\n <Icon type=\"chevron-down\" />\n </div>\n </div>\n\n <Input\n value={phoneWithCode}\n mask={getPhoneMask(countryCode)}\n // alwaysShowMask={false}\n ref={inputRef}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isActive={isListOpen || isActive}\n testId={getTestId(testId, 'input')}\n tweakStyles={tweakInputStyles}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...inputProps}\n />\n\n {isListOpen && (\n <div className={classes.flagListContainer} ref={list}>\n <PhoneInputCountryList\n selectedCountryCode={countryCode}\n placeholder={codeSearchPlaceholder}\n locale={locale}\n tweakStyles={tweakCountryListStyles}\n noMatchesLabel={noMatchesLabel}\n onChange={handleSelect}\n closeList={handleClose}\n />\n </div>\n )}\n </div>\n );\n};\n","import { ITweakStyles, createThemedStyles } from '../../theme';\nimport { IRadioButtonSizes } from './types';\n\nexport const useStyles = createThemedStyles('RadioButton', {\n input: {\n appearance: 'none',\n cursor: 'pointer',\n borderRadius: '50%',\n width: 18,\n height: 18,\n outline: 'none',\n transition: '0.1s all ease-in-out',\n margin: 0,\n border: [1, 'solid', '#000'],\n\n '&:checked': {\n border: [5, 'solid', '#000'],\n },\n },\n\n label: {\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n },\n\n content: {\n marginLeft: 8,\n },\n\n isDisabled: {\n cursor: 'default',\n },\n\n isInvalid: {},\n});\n\nexport type IRadioButtonStyles = ITweakStyles<typeof useStyles, IRadioButtonSizes>;\n","import { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport {\n isNotEmpty,\n isReactNodeNotEmpty,\n addDataAttributes,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { IRadioButtonSize } from './types';\nimport { useStyles, IRadioButtonStyles } from './RadioButton.styles';\n\nexport interface IRadioButtonProps<Value extends string> extends ICommonProps<IRadioButtonStyles> {\n children?: ReactNode;\n value: Value;\n groupName: string;\n size?: IRadioButtonSize;\n isChecked?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isInvalid?: boolean;\n onChange: (value: Value) => void | Promise<void>;\n}\n\nexport function RadioButton<Value extends string>({\n children,\n value,\n groupName,\n size,\n isChecked,\n isDisabled = false,\n isInvalid = false,\n data,\n testId,\n tweakStyles,\n onChange,\n}: IRadioButtonProps<Value>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <label\n className={clsx(classes.label, isNotEmpty(size) && classes[size], {\n [classes.isDisabled]: isDisabled,\n })}\n htmlFor={`${groupName}--${value}`}\n {...addDataAttributes(data, testId)}\n >\n <input\n id={`${groupName}--${value}`}\n type=\"radio\"\n value={value}\n name={groupName}\n checked={isChecked}\n disabled={isDisabled}\n onChange={(event) => onChange(event.target.value as Value)}\n className={clsx(classes.input, {\n [classes.isDisabled]: isDisabled,\n [classes.isInvalid]: isInvalid,\n })}\n />\n {isReactNodeNotEmpty(children) && <span className={classes.content}>{children}</span>}\n </label>\n );\n}\n","import { CSSProperties } from 'react';\nimport { isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { colors, dimensions, ITweakStyles, createThemedStyles, animations } from '../../theme';\n\nconst SELECTOR_TOTAL_GAP = 4;\nconst SELECTOR_BORDER_WIDTH = 1;\nexport const SELECTOR_GAP = SELECTOR_TOTAL_GAP - SELECTOR_BORDER_WIDTH;\n\nexport const getSelectorLineStyle = (activeElementData?: {\n clientWidth: number;\n offsetLeft: number;\n}): CSSProperties | undefined =>\n isNotEmpty(activeElementData)\n ? {\n width: activeElementData.clientWidth - SELECTOR_GAP * 2,\n transform: `translateX(${activeElementData.offsetLeft}px)`,\n }\n : undefined;\n\nexport const useStyles = createThemedStyles('Selector', {\n root: {\n display: 'flex',\n alignItems: 'center',\n listStyle: 'none',\n position: 'relative',\n },\n\n required: {\n '&::before': {\n top: '50%',\n left: -12,\n width: 6,\n height: 6,\n content: '\"\"',\n position: 'absolute',\n transform: 'translate(0, -50%)',\n borderRadius: '50%',\n backgroundColor: colors.ORANGE_FOCUS,\n },\n },\n\n invalid: {},\n\n optionWrapper: {\n height: '100%',\n },\n\n option: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n appearance: 'none',\n borderRadius: 0,\n padding: 0,\n border: 'none',\n cursor: 'pointer',\n width: '100%',\n },\n\n active: {\n cursor: 'default',\n },\n\n disabled: {\n cursor: 'default',\n\n '& $optionText': {\n color: colors.FONT_LABEL,\n },\n },\n\n optionIcon: {\n width: 20,\n height: 20,\n },\n\n optionText: {},\n\n iconFromRight: {\n '& $option': {\n flexDirection: 'row-reverse',\n },\n },\n\n s: {},\n\n m: {},\n\n l: {},\n\n line: {},\n\n selector: {\n display: 'grid',\n gridAutoFlow: 'column',\n gridAutoColumns: '1fr',\n borderRadius: dimensions.BORDER_RADIUS_SMALL,\n backgroundColor: colors.BORDER_LIGHT,\n width: 'fit-content',\n position: 'relative',\n border: ['solid', SELECTOR_BORDER_WIDTH, 'transparent'],\n\n '& $line': {\n content: '\"\"',\n position: 'absolute',\n left: SELECTOR_GAP,\n height: `calc(100% - ${SELECTOR_GAP * 2}px)`,\n backgroundColor: colors.CLASSIC_WHITE,\n borderRadius: dimensions.BORDER_RADIUS_SMALL,\n transition: animations.defaultTransition,\n transitionProperty: 'transform, width',\n },\n\n '&$invalid': {\n borderColor: colors.RED_WARNING,\n },\n\n '& $option': {\n gap: 6,\n position: 'relative',\n zIndex: 1,\n height: '100%',\n color: colors.FONT_MEDIUM,\n fontSize: 16,\n transition: animations.defaultTransition,\n transitionProperty: 'color',\n background: 'none',\n\n '&$s': {\n padding: [4, 8],\n fontSize: 10,\n lineHeight: '14px',\n },\n\n '&$m': {\n padding: [14, 18],\n },\n\n '&$l': {\n padding: [16, 24],\n },\n\n '&:hover, &:focus': {\n color: colors.FONT_MAIN,\n },\n\n '&$active': {\n color: colors.FONT_MAIN,\n },\n },\n },\n\n autoWidth: {\n '&$selector': {\n gridAutoColumns: 'auto',\n\n '& $line': {\n width: 'unset',\n transform: 'unset',\n },\n },\n },\n});\n\nexport type ISelectorStyles = ITweakStyles<typeof useStyles>;\n","import { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataTestId,\n addDataAttributes,\n hasDuplicates,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { renderIcon } from '../Icon';\nimport { ISelectorOption, ISelectorValue } from './types';\nimport { getSelectorLineStyle, ISelectorStyles, useStyles } from './Selector.styles';\n\nexport interface ISelectorProps<V extends ISelectorValue> extends ICommonProps<ISelectorStyles> {\n options: Array<ISelectorOption<V>>;\n value?: V;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isRequired?: boolean;\n /** @default false */\n isInvalid?: boolean;\n /** @default true */\n hasSameOptionsWidth?: boolean;\n /** @default 'left' */\n iconPosition?: 'left' | 'right';\n /** @default 'l' */\n size?: 's' | 'm' | 'l';\n onChange: (value: V) => void;\n}\n\nexport function Selector<V extends ISelectorValue>({\n options,\n value,\n isDisabled = false,\n isRequired = false,\n isInvalid = false,\n hasSameOptionsWidth = true,\n iconPosition = 'left',\n size = 'l',\n testId,\n data,\n tweakStyles,\n onChange,\n}: ISelectorProps<V>): JSX.Element {\n const classes = useStyles({ theme: tweakStyles });\n const optionsValues = options.map((opt) => opt.value);\n\n const [elementsData, setElementsData] = useState<HTMLElement[]>([]);\n const listRef = useRef<HTMLDivElement>(null);\n\n if (hasDuplicates(optionsValues)) {\n console.error('Selector: Значения options.value должны быть уникальными');\n }\n\n useEffect(() => {\n const listEl = listRef.current;\n if (listEl === null) {\n return;\n }\n\n setElementsData([...listEl.querySelectorAll<HTMLElement>(`.${classes.optionWrapper}`)]);\n }, [options, size]);\n\n const activeElementData = isNotEmpty(value)\n ? elementsData[optionsValues.indexOf(value)]\n : undefined;\n\n return (\n <div\n className={clsx(classes.root, classes.selector, {\n [classes.iconFromRight]: iconPosition === 'right',\n [classes.invalid]: isInvalid,\n [classes.required]: isRequired,\n [classes.autoWidth]: hasSameOptionsWidth,\n })}\n ref={listRef}\n {...addDataAttributes(data, testId)}\n >\n {isNotEmpty(activeElementData) && (\n <div className={classes.line} style={getSelectorLineStyle(activeElementData)} />\n )}\n\n {options.map((option) => {\n const optionId = option.value.toString();\n const isDisabledOption = option.isDisabled ?? isDisabled;\n const isActiveOption = option.value === value;\n\n return (\n <div key={optionId} className={classes.optionWrapper}>\n <button\n type=\"button\"\n className={clsx(classes.option, classes[size], {\n [classes.active]: isActiveOption,\n [classes.disabled]: isDisabledOption,\n })}\n disabled={isDisabledOption}\n onClick={!isDisabledOption ? () => onChange(option.value) : undefined}\n {...addDataTestId(testId, optionId)}\n >\n {isReactNodeNotEmpty(option.icon) && (\n <div className={classes.optionIcon}>{renderIcon(option.icon)}</div>\n )}\n <div className={classes.optionText}>{option.label}</div>\n </button>\n </div>\n );\n })}\n </div>\n );\n}\n","import { ICharactersMap } from './types';\n\nexport const SMART_INPUT_REGEX_MAP = {\n default: /./i,\n agencyName: /^[a-zA-Z\\s0-9-]*$/i,\n surname: /^[a-zA-Z\\s-]*$/i,\n name: /^[a-zA-Z\\s-.`']*$/i,\n surnameRuEn: /^[a-zA-Zа-яА-Я\\s-]*$/i,\n nameRuEn: /^[a-zA-Zа-яА-Я\\s-.`']*$/i,\n email: /^[a-zA-Z0-9@_\\-.+']*$/i,\n digits: /^[0-9]*$/i,\n docNumber: /^[a-zA-Z0-9]*$/i,\n benefitCert: /^[a-zA-Z0-9/]*$/i,\n};\n\nexport const CharactersMap: ICharactersMap = {\n й: 'q',\n ц: 'w',\n у: 'e',\n к: 'r',\n е: 't',\n н: 'y',\n г: 'u',\n ш: 'i',\n щ: 'o',\n з: 'p',\n х: '[',\n ъ: ']',\n ф: 'a',\n ы: 's',\n в: 'd',\n а: 'f',\n п: 'g',\n р: 'h',\n о: 'j',\n л: 'k',\n д: 'l',\n ж: ';',\n э: \"'\",\n я: 'z',\n ч: 'x',\n с: 'c',\n м: 'v',\n и: 'b',\n т: 'n',\n ь: 'm',\n б: ',',\n ю: '.',\n ё: '`',\n};\n\nexport const EmailCharactersMap: ICharactersMap = {\n ...CharactersMap,\n '\"': '@',\n};\n\nexport const TransliterationMap: ICharactersMap = {\n й: 'i',\n ц: 'ts',\n у: 'u',\n к: 'k',\n е: 'e',\n н: 'n',\n г: 'g',\n ш: 'sh',\n щ: 'shch',\n з: 'z',\n х: 'h',\n ъ: 'ie',\n ф: 'f',\n ы: 'y',\n в: 'v',\n а: 'a',\n п: 'p',\n р: 'r',\n о: 'o',\n л: 'l',\n д: 'd',\n ж: 'zh',\n э: 'e',\n я: 'ia',\n ч: 'ch',\n с: 's',\n м: 'm',\n и: 'i',\n т: 't',\n ь: '',\n б: 'b',\n ю: 'iu',\n ё: 'e',\n};\n","import { ICharactersMap } from './types';\n\nexport const mapSymbols = (\n str: string,\n regex: RegExp,\n charactersMap: ICharactersMap,\n isTransliterationEnabled: boolean,\n): string =>\n str\n .split('')\n .map((symbol) => {\n if (regex.test(symbol)) {\n return symbol;\n }\n if (!isTransliterationEnabled) {\n return '';\n }\n\n const mappedSymbol = charactersMap[symbol.toLowerCase()] ?? symbol;\n\n const isUpperCase = symbol.toUpperCase() === symbol;\n const result = isUpperCase ? mappedSymbol.toUpperCase() : mappedSymbol;\n\n return regex.test(result) ? result : '';\n })\n .join('');\n","import { ClipboardEvent, forwardRef, useRef } from 'react';\nimport { isEmpty, isNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { useMergedRefs } from '../../hooks';\nimport { IChangeInputEvent, IInputProps, Input } from '../Input';\nimport {\n CharactersMap,\n EmailCharactersMap,\n SMART_INPUT_REGEX_MAP,\n TransliterationMap,\n} from './constants';\nimport { mapSymbols } from './helpers';\nimport { IInputRawValue, ISmartType } from './types';\n\nexport interface ISmartInputProps extends Omit<IInputProps, 'onChange'> {\n /** @default 'default' */\n smartType?: ISmartType;\n regExp?: RegExp;\n /** @default false */\n isUpperCase?: boolean;\n /** @default true */\n isTransliterationEnabled?: boolean;\n onChange: (\n value: string,\n rawValue: IInputRawValue,\n event?: IChangeInputEvent | ClipboardEvent<HTMLInputElement>,\n ) => void;\n}\n\nexport const SmartInput = forwardRef<HTMLInputElement, ISmartInputProps>(function SmartInput(\n {\n value = '',\n smartType = 'default',\n regExp,\n maxLength,\n isUpperCase = false,\n isTransliterationEnabled = true,\n onChange,\n ...rest\n },\n ref,\n) {\n const inputRef = useRef<HTMLInputElement>(null);\n const mergedRef = useMergedRefs([ref, inputRef]);\n\n const regex = regExp || SMART_INPUT_REGEX_MAP[smartType];\n\n const getUpperCaseIfNeeded = (str: string) => (isUpperCase ? str.toUpperCase() : str);\n\n const updateCaretPosition = (position: number | null, newValue: string) => {\n const input = inputRef.current;\n if (isNotEmpty(input) && input.type !== 'email') {\n // Нужно для того, чтобы после ререндера позиция каретки не сбросилась\n input.value = newValue;\n input.setSelectionRange(position, position);\n }\n };\n\n const handleChange = async (str: string, event: IChangeInputEvent) => {\n const isValid = regex.test(str);\n\n const charactersMap = smartType === 'email' ? EmailCharactersMap : CharactersMap;\n const newValue = getUpperCaseIfNeeded(\n isValid ? str : mapSymbols(str, regex, charactersMap, isTransliterationEnabled),\n );\n\n onChange(newValue, { rawValue: str, isValid }, event);\n\n const input = inputRef.current;\n if (isNotEmpty(input)) {\n const start = input.selectionStart;\n updateCaretPosition(isEmpty(start) || newValue !== value ? start : start - 1, newValue);\n }\n };\n\n const handlePaste = async (event: ClipboardEvent<HTMLInputElement>) => {\n event.preventDefault();\n\n const str = event.clipboardData.getData('text/plain').split('').join('');\n\n const input = event.currentTarget;\n const selectionStart = input.selectionStart ?? 0;\n const selectionEnd = input.selectionEnd ?? 0;\n\n const isValid = regex.test(str);\n\n let mappedValue = isValid\n ? str\n : mapSymbols(str, regex, TransliterationMap, isTransliterationEnabled);\n\n const newValueLength = mappedValue.length + value.length - (selectionEnd - selectionStart);\n\n if (isNotEmpty(maxLength) && maxLength >= 0 && newValueLength > maxLength) {\n mappedValue = mappedValue.substring(0, mappedValue.length - (newValueLength - maxLength));\n }\n\n const newValue = getUpperCaseIfNeeded(\n `${value.substring(0, selectionStart)}${mappedValue}${value.substring(selectionEnd)}`,\n );\n\n onChange(newValue, { rawValue: str, isValid }, event);\n updateCaretPosition(selectionStart + mappedValue.length, newValue);\n };\n\n return (\n <Input\n {...rest}\n ref={mergedRef}\n value={value}\n maxLength={maxLength}\n onPaste={handlePaste}\n onChange={handleChange}\n />\n );\n});\n","import { colors, createThemedStyles, ITweakStyles } from '../../theme';\nimport { IStatusColors } from './types';\n\nexport const useStyles = createThemedStyles('Status', {\n root: {\n display: 'inline-flex',\n verticalAlign: 'middle',\n color: 'var(--status-color)',\n backgroundColor: 'var(--status-background)',\n width: 'max-content',\n alignItems: 'center',\n\n '& > *': {\n flexShrink: 0,\n },\n },\n\n icon: {\n '& > div': {\n display: 'inline-block',\n },\n },\n\n iconLeft: {\n order: -1,\n },\n\n text: {},\n\n badge: {\n color: colors.CLASSIC_WHITE,\n backgroundColor: 'var(--status-color)',\n },\n\n xs: {\n padding: [2, 4],\n gap: 4,\n borderRadius: 2,\n\n fontSize: 12,\n lineHeight: '16px',\n letterSpacing: 0.24,\n fontWeight: 'bold',\n\n '& $icon': {\n width: 16,\n height: 16,\n },\n\n '& $badge': {\n padding: [0, 2],\n marginRight: -1,\n borderRadius: 4,\n },\n },\n\n s: {\n padding: [3, 8, 5, 8],\n gap: 4,\n borderRadius: 6,\n\n fontSize: 13,\n lineHeight: '16px',\n letterSpacing: 0.2,\n fontWeight: 'bold',\n\n '& $text': {},\n\n '& $icon': {\n width: 16,\n height: 16,\n },\n\n '& $badge': {\n padding: [0, 4, 2, 4],\n margin: [0, -4, -2, 0],\n borderRadius: 4,\n },\n },\n\n m: {\n padding: [7, 12],\n gap: 4,\n borderRadius: 6,\n\n fontSize: 15,\n lineHeight: '18px',\n letterSpacing: 0.15,\n fontWeight: 'bold',\n\n '& $text': {},\n\n '& $icon': {\n width: 18,\n height: 18,\n },\n\n '& $badge': {\n padding: [2, 4],\n margin: [-2, -7, -2, 0],\n borderRadius: 4,\n },\n },\n\n custom: {},\n});\n\nexport type IStatusStyles = ITweakStyles<typeof useStyles, IStatusColors>;\n","import { FC, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { IIcon, renderIcon } from '../Icon';\nimport { IStatusColor, IStatusSize } from './types';\nimport { useStyles, IStatusStyles } from './Status.styles';\n\nexport interface IStatusProps extends ICommonProps<IStatusStyles> {\n children: ReactNode;\n color: IStatusColor;\n icon?: IIcon;\n /** @default 's' */\n size?: IStatusSize;\n /** @default 'right' */\n iconPosition?: 'left' | 'right';\n badge?: ReactNode;\n}\n\nexport const Status: FC<IStatusProps> = ({\n children,\n color,\n size = 's',\n icon,\n iconPosition = 'right',\n badge,\n tweakStyles,\n testId,\n data,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <span\n className={clsx(classes.root, classes[size], classes[color])}\n {...addDataAttributes(data, testId)}\n >\n {isReactNodeNotEmpty(children) && <span className={classes.text}>{children}</span>}\n {isReactNodeNotEmpty(icon) && (\n <span className={clsx(classes.icon, iconPosition === 'left' && classes.iconLeft)}>\n {renderIcon(icon)}\n </span>\n )}\n {isReactNodeNotEmpty(badge) && <span className={classes.badge}>{badge}</span>}\n </span>\n );\n};\n","import { ITweakStyles, animations, createThemedStyles } from '../../theme';\nimport { ISwitchSizes } from './types';\n\nexport const useStyles = createThemedStyles('Switch', {\n root: {\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n\n '--switch-width': '36px',\n '--switch-height': '20px',\n '--switch-toggle-width': '16px',\n '--switch-toggle-height': '16px',\n '--switch-toggle-padding': 'calc((var(--switch-height) - var(--switch-toggle-height)) / 2)',\n '--switch-label-gap': '12px',\n },\n\n primary: {},\n\n secondary: {},\n\n invalid: {},\n\n disabled: {\n pointerEvents: 'none',\n cursor: 'default',\n },\n\n checked: {\n '& $switch::before': {\n left: 'calc(var(--switch-width) - var(--switch-toggle-width) - var(--switch-toggle-padding))',\n },\n },\n\n switch: {\n position: 'relative',\n flexShrink: 0,\n display: 'block',\n width: 'var(--switch-width)',\n height: 'var(--switch-height)',\n borderRadius: 'calc(infinity * 1px)',\n boxSizing: 'border-box',\n transition: animations.defaultTransition,\n transitionProperty: 'opacity, background-color',\n backgroundColor: '#333',\n\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n top: 'var(--switch-toggle-padding)',\n left: 'var(--switch-toggle-padding)',\n width: 'var(--switch-toggle-width)',\n height: 'var(--switch-toggle-height)',\n right: 'auto',\n display: 'block',\n backgroundColor: '#fff',\n borderRadius: 'calc(infinity * 1px)',\n zIndex: 1,\n transition: animations.defaultTransition,\n transitionProperty: 'left, background-color',\n },\n },\n\n input: {\n display: 'none',\n },\n\n label: {\n transition: animations.defaultTransition,\n transitionProperty: 'opacity, color',\n },\n\n labelLeft: {\n order: -1,\n marginRight: 'var(--switch-label-gap)',\n },\n\n labelRight: {\n marginLeft: 'var(--switch-label-gap)',\n },\n});\n\nexport type ISwitchStyles = ITweakStyles<typeof useStyles, ISwitchSizes>;\n","import { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n addDataTestId,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { ISwitchSize, ISwitchState } from './types';\nimport { useStyles, ISwitchStyles } from './Switch.styles';\n\nexport interface ISwitchProps<V extends string> extends ICommonProps<ISwitchStyles> {\n children?: ReactNode;\n value: V;\n /** @default false */\n isChecked: boolean | undefined;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isInvalid?: boolean;\n /** @default 'right' */\n labelPosition?: 'left' | 'right';\n /** @default 'primary' */\n color?: 'primary' | 'secondary';\n size?: ISwitchSize;\n onChange: (state: ISwitchState<V>) => void;\n}\n\nexport const Switch = <V extends string>({\n isDisabled = false,\n isChecked = false,\n isInvalid = false,\n value,\n children,\n labelPosition = 'right',\n color = 'primary',\n size,\n data,\n tweakStyles,\n testId,\n onChange,\n}: ISwitchProps<V>): JSX.Element => {\n const classes = useStyles({ theme: tweakStyles });\n\n const handleChange = () => onChange({ name: value, isEnabled: !isChecked });\n\n return (\n <label\n className={clsx(classes.root, classes[color], isNotEmpty(size) && classes[size], {\n [classes.disabled]: isDisabled,\n [classes.checked]: isChecked,\n [classes.invalid]: isInvalid,\n })}\n {...addDataAttributes(data, testId)}\n >\n <span className={classes.switch}>\n <input\n type=\"checkbox\"\n name={value}\n className={classes.input}\n onChange={isDisabled ? undefined : handleChange}\n checked={isChecked}\n disabled={isDisabled}\n {...addDataTestId(testId, 'input')}\n />\n </span>\n {isReactNodeNotEmpty(children) && (\n <span\n className={clsx(\n classes.label,\n classes[labelPosition === 'left' ? 'labelLeft' : 'labelRight'],\n )}\n >\n {children}\n </span>\n )}\n </label>\n );\n};\n","import { animations, createThemedStyles, helpers, ITweakStyles } from '../../theme';\nimport { IWithPrefix } from '../../types';\nimport { IControlWrapperSizes, IControlWrapperStyles } from '../ControlWrapper';\nimport { IWithMessagesStyles } from '../WithMessages';\nimport { ITextAreaCounterPositions } from './types';\n\nexport const useStyles = createThemedStyles('TextArea', {\n root: {\n width: '100%',\n },\n\n textarea: {\n ...helpers.withScrollBar,\n width: '100%',\n height: '100%',\n fontFamily: 'inherit',\n fontSize: 16,\n padding: [14, 0, 8, 'var(--control-padding)'],\n scrollPadding: '14px 0 8px var(--control-padding)',\n scrollbarGutter: 'stable',\n boxSizing: 'border-box',\n outline: 'none',\n outlineStyle: 'none',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color',\n border: 'none',\n resize: 'none',\n background: 'transparent',\n\n '&::placeholder': {\n opacity: 1,\n },\n\n MozAppearance: 'textfield',\n '&::-webkit-inner-spin-button,&::-webkit-outer-spin-button': {\n WebkitAppearance: 'none',\n margin: 0,\n },\n },\n\n wrapper: {\n width: '100%',\n },\n\n autoSized: {\n display: 'grid',\n gridTemplateRows: 'minmax(0, 100%)',\n\n '& > $textarea, &::after': {\n gridArea: '1 / 1',\n },\n\n '&::after': {\n extend: 'textarea',\n content: 'attr(data-value) \" \"', // Без пробела ломается!\n overflowWrap: 'break-word',\n whiteSpace: 'pre-wrap',\n visibility: 'hidden',\n },\n },\n\n symbolsCount: {\n textAlign: 'right',\n marginTop: 4,\n fontSize: 12,\n marginLeft: 'auto',\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n },\n\n symbolsCountError: {\n color: 'red',\n },\n\n symbolsCountActive: {},\n\n 'counter-default': {},\n\n withLabel: {},\n});\n\nexport type ITextAreaStyles = ITweakStyles<\n typeof useStyles,\n {\n tweakWithMessages: IWithMessagesStyles;\n tweakControlWrapper: IControlWrapperStyles;\n } & IWithPrefix<ITextAreaCounterPositions, 'counter-'> &\n IControlWrapperSizes\n>;\n","import {\n ChangeEvent,\n CSSProperties,\n FocusEvent,\n FormEvent,\n forwardRef,\n TextareaHTMLAttributes,\n useState,\n} from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n getTestId,\n isArrayLikeNotEmpty,\n isNotEmpty,\n isReactNodeNotEmpty,\n isStringNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { ControlWrapper, IControlWrapperProps } from '../ControlWrapper';\nimport { IWithMessagesProps, WithMessages } from '../WithMessages';\nimport { ITextAreaCounterPosition } from './types';\nimport { ITextAreaStyles, useStyles } from './TextArea.styles';\n\nexport interface ITextAreaProps\n extends ICommonProps<ITextAreaStyles>,\n Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'onChange'>,\n Pick<\n IControlWrapperProps,\n 'label' | 'isInvalid' | 'isRequired' | 'isDisabled' | 'size' | 'groupPlacement'\n >,\n Pick<IWithMessagesProps, 'infoMessage' | 'errorMessage'> {\n value?: string;\n placeholder?: string;\n counterPosition?: ITextAreaCounterPosition;\n /** @default false */\n isActive?: boolean;\n /**\n * Должна ли высота и ширина textarea подстраиваться под содержимое\n * @default true\n */\n isAutoSized?: boolean;\n /** @default false */\n shouldFocusOnMount?: boolean;\n /** @default true */\n hasCounter?: boolean;\n /** @default false */\n shouldTrimAfterMaxLength?: boolean;\n /** @default false */\n shouldAlwaysShowPlaceholder?: boolean;\n onChange: (value: string, event?: FormEvent<HTMLTextAreaElement>) => void;\n}\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, ITextAreaProps>(function TextArea(\n {\n value = '',\n placeholder,\n name,\n counterPosition = 'default',\n shouldFocusOnMount,\n hasCounter = true,\n shouldTrimAfterMaxLength,\n isAutoSized = true,\n shouldAlwaysShowPlaceholder,\n isActive,\n maxLength,\n rows,\n data,\n testId,\n tweakStyles,\n onChange,\n onPaste,\n onFocus,\n onBlur,\n // Пропсы WithMessages\n infoMessage,\n errorMessage,\n // Пропсы ControlWrapper\n label,\n isDisabled,\n isInvalid,\n isRequired,\n size,\n groupPlacement,\n ...textAreaProps\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const shouldShowCounter = hasCounter && isNotEmpty(maxLength);\n const counterString = `${value.length} / ${maxLength}`;\n\n const tweakWithMessagesStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakWithMessages',\n currentComponentName: 'TextArea',\n });\n\n const tweakControlWrapperStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakControlWrapper',\n currentComponentName: 'TextArea',\n });\n\n const [isFocused, setFocused] = useState(false);\n\n const hasFocus = isFocused || isActive;\n const hasValue = isArrayLikeNotEmpty(value);\n const hasLabel = isReactNodeNotEmpty(label);\n const hasPlaceholder =\n (!hasLabel || hasFocus || shouldAlwaysShowPlaceholder) && isStringNotEmpty(placeholder);\n\n const handleChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n onChange(event.currentTarget.value, event);\n };\n\n const handleFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n setFocused(true);\n onFocus?.(event);\n };\n\n const handleBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n setFocused(false);\n onBlur?.(event);\n };\n\n return (\n <div\n className={clsx(classes.root, isNotEmpty(size) && classes[size])}\n style={{ '--counter-length': counterString.length } as CSSProperties}\n >\n <WithMessages\n errorMessage={errorMessage}\n infoMessage={infoMessage}\n tweakStyles={tweakWithMessagesStyles}\n testId={getTestId(testId, 'wrapper')}\n >\n <ControlWrapper\n label={label}\n tweakStyles={tweakControlWrapperStyles}\n isFocused={hasFocus}\n isDisabled={isDisabled}\n hasValue={hasValue}\n isInvalid={isInvalid}\n isRequired={isRequired}\n groupPlacement={groupPlacement}\n size={size}\n isFullWidth\n >\n <div\n className={clsx(classes.wrapper, {\n [classes.autoSized]: isAutoSized,\n [classes.withLabel]: hasLabel,\n })}\n // Не менять на addDataAttributes\n {...(isAutoSized && { 'data-value': value })}\n >\n <textarea\n ref={ref}\n className={classes.textarea}\n value={value}\n disabled={isDisabled}\n placeholder={hasPlaceholder ? placeholder : undefined}\n maxLength={shouldTrimAfterMaxLength ? maxLength : undefined}\n name={name}\n rows={rows}\n onPaste={onPaste}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n autoFocus={shouldFocusOnMount}\n {...addDataAttributes(data, testId)}\n {...textAreaProps}\n />\n {shouldShowCounter && (\n <span\n className={clsx(classes.symbolsCount, classes[`counter-${counterPosition}`], {\n [classes.symbolsCountError]: value.length > maxLength,\n [classes.symbolsCountActive]: hasFocus || hasValue,\n })}\n {...addDataAttributes({ counterPosition })}\n >\n {counterString}\n </span>\n )}\n </div>\n </ControlWrapper>\n </WithMessages>\n </div>\n );\n});\n","import { animations, createThemedStyles, ITweakStyles } from '../../theme';\nimport { IThemedPreloaderStyles } from '../ThemedPreloader';\n\nexport const useStyles = createThemedStyles('TextButton', {\n root: {\n display: 'flex',\n alignItems: 'center',\n height: 24,\n padding: 0,\n position: 'relative',\n background: 'transparent',\n border: 'none',\n borderRadius: 0,\n cursor: 'pointer',\n outline: 'none',\n transition: animations.defaultTransition,\n transitionProperty: 'color',\n\n '&[disabled]': {\n cursor: 'default',\n pointerEvents: 'none',\n },\n },\n\n xl: {\n fontSize: 16,\n\n '& $content': {\n gap: 14,\n },\n },\n\n l: {\n fontSize: 14,\n letterSpacing: '0.15px',\n\n '& $content': {\n gap: 10,\n\n '&$reverseContent': {\n gap: 6,\n },\n },\n },\n\n primary: {},\n\n secondary: {},\n\n custom: {},\n\n active: {},\n\n disabled: {},\n\n bold: {\n fontWeight: 'bold',\n },\n\n iconContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n circle: {\n width: 24,\n height: 24,\n borderRadius: '50%',\n transition: animations.defaultTransition,\n transitionProperty: ['background', 'color'],\n },\n\n icon: {\n width: 20,\n height: 20,\n },\n\n content: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n },\n\n reverseContent: {\n flexDirection: 'row-reverse',\n },\n\n loader: {\n display: 'none',\n height: 8,\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n },\n\n loading: {\n '& $content': {\n visibility: 'hidden',\n },\n\n '& $loader': {\n display: 'block',\n },\n },\n});\n\nexport const preloaderStyles: IThemedPreloaderStyles = {\n tweakDotsPreloader: {\n fadedDot: {\n width: 6,\n height: 6,\n },\n },\n\n logo: {\n width: 24,\n height: 24,\n },\n\n default: {\n width: 24,\n height: 24,\n },\n};\n\nexport type ITextButtonStyles = ITweakStyles<\n typeof useStyles,\n { tweakPreloader: IThemedPreloaderStyles }\n>;\n","import { forwardRef, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { IIcon, renderIcon } from '../Icon';\nimport { IThemedPreloaderProps, ThemedPreloader } from '../ThemedPreloader';\nimport { ITextButtonHTMLBaseProps, ITextButtonSize, ITextButtonView } from './types';\nimport { useStyles, ITextButtonStyles, preloaderStyles } from './TextButton.styles';\n\nexport interface ITextButtonProps\n extends ICommonProps<ITextButtonStyles>,\n ITextButtonHTMLBaseProps {\n /** @default 'undefined' */\n children?: ReactNode;\n /** @default 'undefined' */\n icon?: IIcon;\n /** @default 'primary' */\n view?: ITextButtonView;\n /** @default false */\n isBold?: boolean;\n /** @default false */\n hasCircleUnderIcon?: boolean;\n /** @default false */\n isDisabled?: boolean;\n /** @default false */\n isLoading?: boolean;\n /** @default false */\n isActive?: boolean;\n /** @default 'l' */\n size?: ITextButtonSize;\n /** @default 'left' */\n iconPosition?: 'left' | 'right';\n /** @default 'dots' */\n preloaderType?: IThemedPreloaderProps['type'];\n}\n\nexport const TextButton = forwardRef<HTMLButtonElement, ITextButtonProps>(function TextButton(\n {\n children,\n icon,\n view = 'primary',\n isDisabled = false,\n isBold = false,\n isLoading = false,\n isActive = false,\n hasCircleUnderIcon = false,\n size = 'l',\n iconPosition = 'left',\n preloaderType = 'dots',\n type = 'button',\n testId,\n tweakStyles,\n data,\n onClick,\n ...restProps\n },\n ref,\n) {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakPreloaderStyles = useTweakStyles({\n innerStyles: preloaderStyles,\n tweakStyles,\n className: 'tweakPreloader',\n currentComponentName: 'TextButton',\n });\n\n const hasNoAction = isDisabled || isLoading;\n\n return (\n <button\n ref={ref}\n type={type}\n className={clsx(classes.root, classes[size], classes[view], {\n [classes.bold]: isBold,\n [classes.loading]: isLoading,\n [classes.active]: isActive,\n [classes.disabled]: isDisabled,\n })}\n disabled={hasNoAction}\n onClick={!hasNoAction ? onClick : undefined}\n {...restProps}\n {...addDataAttributes(data, testId)}\n >\n <span className={clsx(classes.content, iconPosition === 'right' && classes.reverseContent)}>\n {isReactNodeNotEmpty(icon) && (\n <span className={clsx(classes.iconContainer, hasCircleUnderIcon && classes.circle)}>\n <span className={classes.icon}>{renderIcon(icon)}</span>\n </span>\n )}\n {children}\n </span>\n\n {isLoading && (\n <span className={classes.loader}>\n <ThemedPreloader\n type={preloaderType}\n useCurrentColor\n tweakStyles={tweakPreloaderStyles}\n />\n </span>\n )}\n </button>\n );\n});\n","import { colors, ITweakStyles, createThemedStyles } from '../../theme';\n\nexport const useStyles = createThemedStyles('TextWithInfo', {\n root: {\n display: 'inline-block',\n height: 40,\n padding: [0, 18],\n borderRadius: 20,\n boxSizing: 'border-box',\n color: colors.FONT_MEDIUM,\n\n '&:hover': {\n backgroundColor: colors.GREY_FOCUS,\n },\n },\n\n container: {\n display: 'flex',\n height: '100%',\n alignItems: 'center',\n },\n\n selected: {\n backgroundColor: colors.GREY_FOCUS,\n },\n\n text: {\n cursor: 'pointer',\n fontSize: 16,\n },\n\n info: {\n width: 20,\n marginLeft: 4,\n color: colors.FONT_DISABLED,\n cursor: 'pointer',\n borderRadius: '50%',\n\n '&:link': {\n color: colors.FONT_DISABLED,\n },\n\n '&:hover': {\n color: colors.CLASSIC_WHITE,\n backgroundColor: colors.FONT_DISABLED,\n },\n\n '&:visited': {\n color: colors.FONT_DISABLED,\n\n '&:hover': {\n color: colors.CLASSIC_WHITE,\n backgroundColor: colors.FONT_DISABLED,\n },\n },\n },\n});\n\nexport type ITextWithInfoStyles = ITweakStyles<typeof useStyles>;\n","import { FC } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes } from '@true-engineering/true-react-platform-helpers';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { TextWithTooltip } from '../TextWithTooltip';\nimport { useStyles, ITextWithInfoStyles } from './TextWithInfo.styles';\n\nexport interface ITextWithInfoProps extends ICommonProps<ITextWithInfoStyles> {\n text: string;\n /** @default false */\n isSelected?: boolean;\n textTooltip?: string;\n info?: {\n infoTooltip?: string;\n link?: string;\n };\n onClick: () => void;\n}\n\nexport const TextWithInfo: FC<ITextWithInfoProps> = ({\n text,\n isSelected = false,\n info,\n textTooltip,\n onClick,\n testId,\n data,\n tweakStyles,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n return (\n <div\n className={clsx(classes.root, isSelected && classes.selected)}\n {...addDataAttributes(data, testId)}\n >\n <div className={classes.container}>\n <div className={classes.text} onClick={onClick}>\n {textTooltip !== undefined ? (\n <TextWithTooltip tooltipText={textTooltip}>{text}</TextWithTooltip>\n ) : (\n text\n )}\n </div>\n {info && (\n <a className={classes.info} href={info.link} target=\"_blank\" rel=\"noopener noreferrer\">\n {info.infoTooltip !== undefined ? (\n <TextWithTooltip tooltipText={info.infoTooltip}>\n <Icon type=\"information\" />\n </TextWithTooltip>\n ) : (\n <Icon type=\"information\" />\n )}\n </a>\n )}\n </div>\n </div>\n );\n};\n","export const DEFAULT_TIMEOUT = 7 * 1000; // 7 seconds\n","import { colors, ITweakStyles, createThemedStyles } from '../../theme';\nimport { IIconButtonStyles } from '../IconButton';\n\nexport const useStyles = createThemedStyles('Toaster', {\n root: {\n borderRadius: 8,\n position: 'relative',\n background: colors.CLASSIC_WHITE,\n padding: [20, 40, 20, 20],\n display: 'flex',\n },\n\n iconContainer: {\n width: 20,\n height: 20,\n flexShrink: 0,\n marginRight: 16,\n },\n\n error: {\n color: colors.RED_WARNING,\n },\n\n info: {},\n\n warning: {\n color: colors.ORANGE_FOCUS,\n },\n\n ok: {\n color: colors.GREEN_FOCUS,\n },\n\n 'not-ok': {\n color: colors.FONT_LABEL,\n },\n\n text: {},\n\n title: {},\n\n content: {\n '&:not(:first-child):not(:empty)': {\n marginTop: 16,\n },\n },\n\n close: {\n position: 'absolute',\n top: 12,\n right: 12,\n width: 32,\n height: 32,\n },\n});\n\nexport type IToasterStyles = ITweakStyles<\n typeof useStyles,\n { tweakCloseButton: IIconButtonStyles }\n>;\n","import { FC, ReactNode, useEffect } from 'react';\nimport clsx from 'clsx';\nimport {\n addDataAttributes,\n isEmpty,\n isNotEmpty,\n isReactNodeNotEmpty,\n} from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { IconButton } from '../IconButton';\nimport { DEFAULT_TIMEOUT } from './constants';\nimport { IToasterType } from './types';\nimport { IToasterStyles, useStyles } from './Toaster.styles';\n\nexport interface IToasterProps extends ICommonProps<IToasterStyles> {\n /** @default 'error' */\n type?: IToasterType;\n title?: ReactNode;\n text?: ReactNode;\n children?: ReactNode;\n /**\n * Время автоматического закрытия тостера в миллисекундах\n * @default 7000\n */\n timeout?: number;\n /** @default false */\n hasCloseButton?: boolean;\n /** @default false */\n shouldCloseOnClick?: boolean;\n onClose?: () => void;\n onTimeEnd?: () => void;\n}\n\nexport const Toaster: FC<IToasterProps> = ({\n type = 'error',\n title,\n text,\n children,\n timeout = DEFAULT_TIMEOUT,\n hasCloseButton = false,\n shouldCloseOnClick = false,\n data,\n testId,\n tweakStyles,\n onClose,\n onTimeEnd,\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakCloseButtonStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakCloseButton',\n currentComponentName: 'Toaster',\n });\n\n useEffect(() => {\n if (!Number.isFinite(timeout) || isEmpty(onTimeEnd)) {\n return;\n }\n\n const timeoutId = window.setTimeout(() => onTimeEnd(), timeout);\n\n return () => window.clearTimeout(timeoutId);\n }, []);\n\n return (\n <div\n className={classes.root}\n onClick={shouldCloseOnClick ? onClose : undefined}\n {...addDataAttributes(data, testId)}\n >\n <div className={clsx(classes.iconContainer, classes[type])}>\n <Icon type={`status-${type}`} />\n </div>\n <div>\n {isReactNodeNotEmpty(title) && <div className={classes.title}>{title}</div>}\n {isReactNodeNotEmpty(text) && <div className={classes.text}>{text}</div>}\n {isReactNodeNotEmpty(children) && <div className={classes.content}>{children}</div>}\n </div>\n {hasCloseButton && isNotEmpty(onClose) && (\n <div className={classes.close}>\n <IconButton\n view=\"cancel-light\"\n icon=\"close-window\"\n tweakStyles={tweakCloseButtonStyles}\n onClick={onClose}\n />\n </div>\n )}\n </div>\n );\n};\n","import { colors, ITweakStyles, createThemedStyles, animations } from '../../theme';\nimport { IListStyles } from '../List';\nimport { IWithPopupStyles } from '../WithPopup';\n\nexport const useStyles = createThemedStyles('NewMoreMenu', {\n hasCircle: {},\n\n button: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 32,\n height: 32,\n backgroundColor: 'transparent',\n color: colors.FONT_MEDIUM,\n padding: 0,\n borderRadius: '50%',\n border: 'none',\n cursor: 'pointer',\n transition: animations.defaultTransition,\n transitionProperty: 'background-color',\n },\n\n icon: {\n width: 30,\n height: 30,\n },\n\n active: {},\n\n disabled: {\n cursor: 'default',\n },\n});\n\nexport type INewMoreMenuStyles = ITweakStyles<\n typeof useStyles,\n { tweakList: IListStyles; tweakWithPopup: IWithPopupStyles }\n>;\n","import { FC } from 'react';\nimport clsx from 'clsx';\nimport { addDataAttributes, isArrayEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps, IRenderNode } from '../../types';\nimport { Icon } from '../Icon';\nimport { IListItem, IListSize, List } from '../List';\nimport { IWithPopupProps, WithPopup } from '../WithPopup';\nimport { IWithPopupTriggerProps } from '../WithPopup/types';\nimport { useStyles, INewMoreMenuStyles } from './NewMoreMenu.styles';\n\nexport interface INewMoreMenuProps\n extends Pick<\n IWithPopupProps,\n | 'placement'\n | 'middlewares'\n | 'shouldHideOnScroll'\n | 'shouldRenderInBody'\n | 'canBeFlipped'\n | 'onToggle'\n >,\n ICommonProps<INewMoreMenuStyles> {\n items: IListItem[];\n renderTrigger?: IRenderNode<IWithPopupTriggerProps>;\n listSize?: IListSize;\n /** @default false */\n isDisabled?: boolean;\n /** @default true */\n hasDefaultStateBackground?: boolean;\n}\n\nexport const NewMoreMenu: FC<INewMoreMenuProps> = ({\n items,\n isDisabled = false,\n hasDefaultStateBackground = true,\n data,\n renderTrigger,\n listSize,\n testId,\n tweakStyles,\n ...rest\n}) => {\n const classes = useStyles({ theme: tweakStyles });\n\n const tweakWithPopupStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakWithPopup',\n currentComponentName: 'NewMoreMenu',\n });\n\n const tweakListStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakList',\n currentComponentName: 'NewMoreMenu',\n });\n\n const defaultTrigger = ({ triggerProps, referenceProps }: IWithPopupTriggerProps) => (\n <button\n className={clsx(classes.button, {\n [classes.hasCircle]: hasDefaultStateBackground,\n [classes.disabled]: triggerProps.isDisabled,\n [classes.active]: triggerProps.isActive,\n })}\n disabled={triggerProps.isDisabled}\n {...addDataAttributes(data, testId)}\n {...referenceProps}\n >\n <div className={classes.icon}>\n <Icon type=\"menu\" />\n </div>\n </button>\n );\n\n return (\n <WithPopup\n isDisabled={isDisabled || isArrayEmpty(items)}\n tweakStyles={tweakWithPopupStyles}\n {...rest}\n trigger={renderTrigger ?? defaultTrigger}\n >\n {({ onClose }) => (\n <List items={items} size={listSize} tweakStyles={tweakListStyles} onClick={onClose} />\n )}\n </WithPopup>\n );\n};\n","import { ITooltipStyles } from '../Tooltip';\nimport { IWithPopupStyles } from '../WithPopup';\n\nexport const withPopupStyles: IWithPopupStyles = {\n popup: {\n zIndex: 9999,\n },\n};\n\nexport interface IWithTooltipStyles {\n tweakWithPopup?: IWithPopupStyles;\n tweakTooltip?: ITooltipStyles;\n}\n","import { FC } from 'react';\nimport { getTestId, isReactNodeNotEmpty } from '@true-engineering/true-react-platform-helpers';\nimport { useTweakStyles } from '../../hooks';\nimport { ICommonProps } from '../../types';\nimport { ITooltipProps, Tooltip } from '../Tooltip';\nimport { IWithPopupProps, WithPopup } from '../WithPopup';\nimport { IWithTooltipStyles, withPopupStyles } from './WithTooltip.styles';\n\nexport interface IWithTooltipProps\n extends Omit<\n IWithPopupProps,\n 'trigger' | 'children' | 'placement' | 'eventType' | 'isTriggerWrapped' | 'tweakStyles'\n >,\n ICommonProps<IWithTooltipStyles> {\n children: IWithPopupProps['trigger'];\n /** @default 'hover' */\n eventType?: IWithPopupProps['eventType'];\n /** @default 'top' */\n placement?: IWithPopupProps['placement'];\n tooltipText?: ITooltipProps['text'];\n /** @default 'tooltip' */\n tooltipView?: ITooltipProps['view'];\n /** @default 'info' */\n tooltipType?: ITooltipProps['type'];\n /** @default 'undefined' */\n tooltipSize?: ITooltipProps['size'];\n}\n\nexport const WithTooltip: FC<IWithTooltipProps> = ({\n children,\n eventType = 'hover',\n placement = 'top',\n tooltipText,\n tooltipView = 'tooltip',\n tooltipType = 'info',\n tooltipSize,\n isDisabled = false,\n popupData,\n tweakStyles,\n ...restProps\n}) => {\n const tweakWithPopupStyles = useTweakStyles({\n innerStyles: withPopupStyles,\n tweakStyles,\n className: 'tweakWithPopup',\n currentComponentName: 'WithTooltip',\n });\n\n const tweakTooltipStyles = useTweakStyles({\n tweakStyles,\n className: 'tweakTooltip',\n currentComponentName: 'WithTooltip',\n });\n\n return (\n <WithPopup\n trigger={children}\n placement={placement}\n eventType={eventType}\n popupData={{ ...popupData, tooltipView }}\n isDisabled={isDisabled || !isReactNodeNotEmpty(tooltipText)}\n isTriggerWrapped\n tweakStyles={tweakWithPopupStyles}\n {...restProps}\n >\n <Tooltip\n view={tooltipView}\n type={tooltipType}\n text={tooltipText}\n size={tooltipSize}\n tweakStyles={tweakTooltipStyles}\n testId={getTestId(restProps.testId, 'tooltip')}\n />\n </WithPopup>\n );\n};\n"],"names":["useStyles","addDataAttributes","size","withPopupStyles","Fragment","avatar","Button","WithMessages","Z_INDEX","InputBase","Input","DateInput","inputStyles","SearchInput","ROW_HEIGHT","checkboxStyles","defaultConvertFunction","filter","selectStyles","DEFAULT_DATE_FORMAT","enLocale","DatePicker","FileInput","IconButton","DEFAULT_LOCALE","getLocale","NumberInput","clearButtonStyles","ITEM_HEIGHT","searchInputStyles","search","FlexibleTableRow","DEFAULT_TIMEOUT","SmartInput","isValid","TextArea","TextButton"],"mappings":"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AAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,M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"}