intelicoreact 2.0.11 → 2.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ui.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/Atomic/UI/Accordion/Accordion.tsx", "../src/Functions/utils.js", "../src/Constants/index.constants.js", "../src/Atomic/UI/Accordion/AccordionItem.tsx", "../src/Atomic/UI/Status/Status.tsx", "../src/Atomic/UI/Status/index.ts", "../src/Atomic/UI/Accordion/index.ts", "../src/Atomic/UI/AccordionTable/AccordionTable.js", "../src/Atomic/UI/MonoAccordion/MonoAccordion.js", "../src/Atomic/UI/AccordionText/AccordionText.js", "../src/Atomic/UI/AdvancedTag/AdvancedTags.tsx", "../src/Atomic/UI/Tag/Tag.tsx", "../src/Atomic/Layout/Spinner/Spinner.tsx", "../src/Atomic/Layout/Spinner/index.ts", "../src/Atomic/UI/AdvancedTag/AdvTag.tsx", "../src/Atomic/UI/AdvancedTag/index.ts", "../src/Atomic/UI/Alert/Alert.tsx", "../src/Atomic/UI/Button/Button.tsx", "../src/Atomic/UI/Alert/index.ts", "../src/Atomic/UI/Arrow/Arrow.tsx", "../src/Atomic/UI/Box/Box.tsx", "../src/Atomic/UI/ButtonsBar/ButtonsBar.tsx", "../src/Atomic/UI/ButtonsBar/index.ts", "../src/Atomic/UI/CircleProgressBar/CircleProgressBar.js", "../src/Atomic/UI/DateTime/DateTime.tsx", "../src/Atomic/UI/DebugContainer/DebugContainer.tsx", "../src/Atomic/UI/DebugContainer/useDebugContainer.tsx", "../src/Atomic/UI/DoubleString/DoubleString.tsx", "../src/Atomic/UI/DoubleString/index.ts", "../src/Atomic/UI/Hint/Hint.tsx", "../src/Molecular/CustomIcons/components/HelpCircleFilled.tsx", "../src/Atomic/UI/Hint/partials/_constants.ts", "../src/Atomic/UI/Hint/partials/_utils.ts", "../src/Atomic/UI/Hint/index.ts", "../src/Atomic/UI/Modal/Modal.tsx", "../src/Functions/useKeyPress/useHandleKeyPress.ts", "../src/Functions/useKeyPress/useKeyPress.ts", "../src/Atomic/UI/Modal/partials/_constants.ts", "../src/Atomic/UI/Modal/partials/_utils.ts", "../src/Atomic/UI/Modal/partials/ModalFooter.tsx", "../src/Atomic/UI/Modal/partials/ModalTitle.tsx", "../src/Atomic/UI/Modal/partials/useMobileModal.tsx", "../src/Functions/useIsMobile/useIsMobile.ts", "../src/Atomic/UI/Modal/ModalHOC.tsx", "../src/Atomic/UI/Modal/index.ts", "../src/Atomic/UI/MonoAccordion/index.ts", "../src/Atomic/UI/NavLine/NavLine.tsx", "../src/Atomic/UI/NavLine/index.ts", "../src/Atomic/UI/PageTitle/PageTitle.tsx", "../src/Atomic/UI/PageTitle/index.ts", "../src/Atomic/UI/Price/Price.tsx", "../src/Functions/fieldValueFormatters.js", "../src/Atomic/UI/Price/index.ts", "../src/Atomic/UI/PriceRange/PriceRange.tsx", "../src/Atomic/UI/PriceRange/index.ts", "../src/Atomic/UI/ProgressLine/ProgressLine.tsx", "../src/Atomic/UI/ProgressLine/index.ts", "../src/Atomic/UI/Table/Table.js", "../src/Atomic/UI/Table/Partials/TdHeader.js", "../src/Langs.js", "../src/Atomic/UI/Table/Partials/TdRow.js", "../src/Atomic/UI/Table/TdTypes/TdRange.js", "../src/Atomic/UI/Table/Partials/TdCell.js", "../src/Atomic/UI/Table/TdTypes/TdActions.js", "../src/Atomic/FormElements/Switcher/Switcher.tsx", "../src/Atomic/UI/Table/TdTypes/TdPriority.js", "../src/Atomic/UI/Table/TdTypes/TdWeight.js", "../src/Atomic/UI/Tag/index.ts", "../src/Atomic/UI/TagList/TagList.tsx", "../src/Atomic/UI/UserBox/UserBox.tsx", "../src/Atomic/FormElements/Label/Label.tsx", "../src/Atomic/UI/UserBox/index.ts", "../src/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.tsx", "../src/Atomic/UI/WizardStepper/ui/icons.tsx", "../src/Atomic/UI/WizardStepper/ui/StepRow/StepRow.tsx", "../src/Atomic/UI/WizardStepper/constructor.js", "../src/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.tsx", "../src/Atomic/UI/WizardStepper/ui/StateIcon/index.ts", "../src/Atomic/UI/WizardStepper/ui/StepWrapper/index.ts", "../src/Atomic/UI/WizardStepper/ui/index.ts", "../src/Atomic/UI/WizardStepper/index.ts"],
4
- "sourcesContent": ["import type { IAccordionProps } from './Accordion.interface';\nimport cn from 'classnames';\nimport React, { useState } from 'react';\nimport * as Icons from 'react-feather';\n\nimport { NavLink } from 'react-router-dom';\n\nimport { handleObjectChange } from '../../../Functions/utils';\nimport AccordionItem from './AccordionItem';\n\nimport './Accordion.scss';\n\nconst CN = 'accordion';\n\nconst Accordion: React.FC<IAccordionProps> = ({\n items,\n className,\n itemClassName,\n isMenuHovered,\n isOpen,\n testId = CN,\n}) => {\n const [data, setData] = useState(items);\n\n const onChange = handleObjectChange(setData, () => setData([...data]));\n\n const handleArrayChange = (e: boolean, index: number, prop: keyof (typeof data)[0]): void => {\n // @ts-ignore\n data[index][prop] = e;\n onChange(data);\n };\n\n return (\n <div className={cn(CN, className)} data-testid={testId} role=\"list\" aria-label=\"Accordion list\">\n {items?.map((item, index) => {\n const Icon = Icons[item.icon as keyof typeof Icons];\n return item.link\n ? (\n <NavLink\n data-testid={`${testId}-link-${index}`}\n key={index}\n to={item.link}\n className={cn('main-menu--item main-menu--items-box-title')}\n >\n {item?.icon && <Icon className={cn('mr5', item?.className)} />}\n <span className={cn({ hidden: !isOpen && !isMenuHovered })}>{item?.title || 'Link'}</span>\n </NavLink>\n )\n : (\n <AccordionItem\n testId={`${testId}-item-${index}`}\n key={index}\n className={itemClassName}\n item={item}\n isOpen={!!item.isOpen}\n onClick={value => handleArrayChange(value, index, 'isOpen')}\n />\n );\n })}\n </div>\n );\n};\n\nexport default Accordion;\n", "import { useEffect } from \"react\";\n\nimport moment from \"moment-timezone\";\n\nimport { DEFAULT_COLORS, OS } from \"../Constants/index.constants\";\n\nexport const uuid = () => Date.now().toString(36) + Math.random().toString(36).substring(2);\n\nexport const getIsOnlyAnObject = (input) => {\n return (\n typeof input === \"object\" && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B \u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u0438\n input instanceof Object && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" null\n !Array.isArray(input) && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043C\u0430\u0441\u0441\u0438\u0432\u044B\n !(input instanceof Set) && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u0441\u0435\u0442\u044B\n !(input instanceof Map) // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043C\u0430\u043F\u044B\n );\n};\n\n/* eslint-disable guard-for-in, no-unused-vars */\nexport const handleObjectChange =\n (updateObject, updateFunction) =>\n (data, prop = \"\", isNumber) => {\n let value;\n if (data?.target) {\n value =\n data.target.type === \"checkbox\"\n ? data.target.checked\n : data.target.value;\n } else value = data;\n\n value = isNumber ? Number(value) : value;\n\n const props = prop.split(\".\");\n const currentObject = props.reduce((res, chapter, index) => {\n if (props.length !== index + 1) res = res[chapter];\n return res;\n }, updateObject);\n\n currentObject[props.pop()] = value;\n updateFunction();\n };\n\nexport const useOutsideToggle = (ref, setOut, open) => {\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n setOut(open);\n }\n }\n useEffect(() => {\n document.addEventListener(\"mouseup\", handleClickOutside);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mouseup\", handleClickOutside);\n };\n }, [ref]);\n};\n\n// export const clone = obj => {\n// const data = obj instanceof Array ? [] : {};\n// for (const i in obj) data[i] = typeof obj[i] === 'object' && obj[i] != null ? clone(obj[i]) : obj[i];\n// return data;\n// };\n// ! \u042D\u0442\u043E\u0442 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435\u0435\nexport const clone = (input) => {\n if (input === null || typeof input !== \"object\") return input;\n const data = input instanceof Array ? [] : {};\n for (const i in input) data[i] = clone(input[i]);\n return data;\n};\n\nexport const getResponseClone = async (res) =>\n await (typeof res?.clone === \"function\" ? res.clone() : clone(res));\n\n//TimeUtils\nexport function transformUTCTimeToLocal(date, format = \"YYYY-MM-DD HH:mm:ss\") {\n if (!date) return;\n const utcDate = moment.utc(date).toDate();\n return moment(utcDate, format).local().format(format);\n}\nexport function transformLocalTimeToUTC(date, format = \"YYYY-MM-DD HH:mm:ss\") {\n if (!date) return;\n return moment(date, format).utc().format(format);\n}\nexport function transformUTCHoursToLocal(time, format = \"HH:mm:ss\") {\n if (!time) return;\n const splitedTime = time.split(\":\");\n const offset = moment().utcOffset();\n let HH = Number(splitedTime[0]);\n let mm = Number(splitedTime[1]);\n const ss = splitedTime[2];\n mm = mm + offset;\n while (mm > 59) {\n mm -= 60;\n HH += 1;\n }\n if (HH > 23) HH -= 24;\n while (mm < 0) {\n mm += 60;\n HH -= 1;\n }\n if (HH < 0) HH += 24;\n return `${HH}:${mm}:${ss}`;\n}\n\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E \u0441\u0430\u043C\u044B\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 \u043F\u0430\u0442\u0442\u0435\u0440\u043D\nexport function transformDateOrTimeOrTogetherToFormat(\n data,\n outputFormat = \"HH:mm\",\n additional,\n) {\n const ERROR_VALUE = \"Invalid date\";\n const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;\n const { parseFormat, isReturnAsMomentInstance } = getIsOnlyAnObject(\n additional,\n )\n ? additional\n : {};\n\n if (typeof data !== \"string\" && typeof data !== \"number\") {\n return isReturnAsMomentInstance ? moment(\"error\") : ERROR_MESSGE;\n }\n\n //? \u0418\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u043C parseFormat, \u0435\u0441\u043B\u0438 data \u043F\u0440\u0438\u0448\u043B\u0430 \u043A\u0430\u043A timestamp \u0438\u043B\u0438 \u0435\u0441\u043B\u0438 parseFormat \u043D\u0435 \u0441\u0442\u0440\u043E\u043A\u0430\n const momentArgs = [\n data,\n ...(!Number.isNaN(Number(data)) || typeof parseFormat === \"string\"\n ? []\n : [parseFormat]),\n ];\n\n //? \u0417\u0430\u0434\u0430\u0447\u0430 \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440, \u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 \u043B\u0438\u0431\u043E \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439\n const momentInstance = (() => {\n let instance = moment(...momentArgs);\n\n //? \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C \u0432\u0430\u043B\u0438\u0434\u043D\u043E\u0441\u0442\u044C moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440-\u0430 \u043F\u0443\u0442\u0435\u043C \u043F\u043E\u043F\u044B\u0442\u043A\u0438 \u043F\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043E \u043A \u0432\u044B\u0445\u043E\u0434\u043D\u043E\u043C\u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0443\n //? \u041F\u043E\u043F\u0430\u0434\u0435\u043C \u0432 \u044D\u0442\u043E\u0442 \u043A\u0435\u0439\u0441 \u0435\u0441\u043B\u0438\n //? - data \u044D\u0442\u043E timestamp\n //? - data \u044D\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 date-time\n //? - data \u044D\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 date (\u0432 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0432\u0440\u0435\u043C\u044F \u0432\u044B\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F 00:00:00)\n if (instance.format(outputFormat) !== ERROR_VALUE) return instance;\n //? \u0415\u0441\u043B\u0438 \u0436\u0435 \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C, \u0442\u043E \u043F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u043C, \u0447\u0442\u043E data \u043F\u0440\u0438\u0448\u043B\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 time\n //? \u0412 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0441\u043E\u0437\u0434\u0430\u0434\u0438\u043C \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u0442 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u044B, \u0440\u0430\u0441\u043F\u0430\u0440\u0441\u0438\u043C data \u0438 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u043C \u0432\u0440\u0435\u043C\u044F\n //? \u041A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442\u0441\u044F \u043F\u0430\u0442\u0442\u0435\u0440\u043D\u044B: 'HH*mm', 'HH*mm*ss', 'HH*mm*ss*\u043B\u044E\u0431\u043E\u0435_\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E_ms', \u0433\u0434\u0435 * - \u043B\u044E\u0431\u043E\u0439 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C\n else if (/^\\d\\d.\\d\\d/.test(data)) {\n instance = moment();\n const symbols = data.split(\"\");\n\n const timeArr = symbols\n .reduce(\n (acc, symbol, idx) => {\n if (Number.isNaN(Number(symbol))) {\n if (acc.group) acc.result.push(acc.group);\n acc.group = \"\";\n } else acc.group = `${acc.group}${symbol}`;\n if (idx === symbols.length - 1 && acc.group)\n acc.result.push(acc.group);\n return acc;\n },\n { result: [], group: \"\" },\n )\n //? reverse \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0438\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0434\u043B\u044F \u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0441\u043B\u0435 \u043C\u043E\u0436\u043D\u043E \u0431\u044B\u043B\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043C\u0435\u0442\u043E\u0434 pop, \u0430 \u043D\u0435 shift,\n //? \u0442.\u043A. \u043C\u0435\u0442\u043E\u0434\u044B \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F/\u0438\u0437\u0432\u043B\u0435\u0447\u0435\u043D\u0438\u044F \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043A\u043E\u043D\u0446\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u0431\u044B\u0441\u0442\u0440\u0435\u0435,\n //? \u0447\u0435\u043C \u0430\u043D\u0430\u043B\u043E\u0433\u0438\u0447\u043D\u044B\u0435 \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043D\u0430\u0447\u0430\u043B\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n .result.reverse();\n\n instance.hours(Number(timeArr.pop()));\n instance.minutes(Number(timeArr.pop()));\n instance.seconds(timeArr.length ? Number(timeArr.pop()) : 0);\n instance.milliseconds(timeArr.length ? Number(timeArr.pop()) : 0);\n } else instance = moment(\"error\"); //? \u0418\u043D\u0430\u0447\u0435 \u0441\u043E\u0437\u0434\u0430\u0435\u043C \u0437\u0430\u0432\u0435\u0434\u043E\u043C\u043E \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\n\n return instance;\n })();\n\n if (isReturnAsMomentInstance) return momentInstance;\n\n const output = momentInstance.format(outputFormat);\n return output === ERROR_VALUE ? ERROR_MESSGE : output;\n}\n\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E \u0441\u0430\u043C\u044B\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 \u043F\u0430\u0442\u0442\u0435\u0440\u043D\nexport function transformDateOrTimeOrTogetherToFormattedLocal(\n data,\n outputFormat = \"HH:mm\",\n additional,\n) {\n const ERROR_VALUE = \"Invalid date\";\n const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;\n\n if (additional && !getIsOnlyAnObject(additional)) {\n throw new Error(\n \"Bad additional [transformDateOrTimeOrTogetherToFormattedLocal]\",\n );\n }\n\n const compositeAdditional = {\n ...(additional || {}),\n isReturnAsMomentInstance: true,\n };\n const date = transformDateOrTimeOrTogetherToFormat(\n data,\n outputFormat,\n compositeAdditional,\n );\n\n const dateWithLocale = date.add(moment().utcOffset(), \"minutes\");\n const output = dateWithLocale.format(outputFormat);\n\n return output === ERROR_VALUE ? ERROR_MESSGE : output;\n}\n\n//\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u043E\u0431\u044C\u0435\u043A\u0442 \u0438 \u043C\u0430\u0441\u0441\u0438\u0432 \u043A\u043B\u044E\u0447\u0435\u0439 \u043E\u0431\u044C\u0435\u043A\u0442\u0430\n//\u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043E\u0431\u044C\u0435\u043A\u0442 \u0441 \u0442\u0435\u043C\u0438 \u043F\u043E\u043B\u044F\u043C\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u043D\u0435\u0442 \u0432 \u043C\u0430\u0441\u0441\u0438\u0432\u0435 \u043A\u043B\u044E\u0447\u0435\u0439\nexport const omitKeys = (obj = {}, keys = []) =>\n keys.reduce((acc, key) => {\n const { [key]: omit, ...rest } = acc;\n return rest;\n }, obj);\n\nexport const logout = () => {\n window.localStorage.removeItem(\"accessToken\");\n window.localStorage.removeItem(\"tokenExpires\");\n window.location.reload();\n};\n\nexport const getStyles = (el, prop) => {\n if (!el) return null;\n if (!prop) return window.getComputedStyle(el);\n return window.getComputedStyle(el).getPropertyValue(prop);\n};\n\nexport const getColorById = (id, colors) => {\n if (!id) return \"#FF7D00\";\n\n const idToArr = Array.from(id);\n const colorsArr = colors && colors.length > 0 ? colors : DEFAULT_COLORS;\n\n let number = idToArr.reduce((acc, item) => {\n if (Number(item)) {\n return acc + Number(item);\n }\n return acc;\n }, 0);\n\n while (number >= colorsArr.length) {\n number -= colorsArr.length;\n }\n\n return colorsArr[number];\n};\n\nexport const debounce = (fn, ms) => {\n let id = null;\n return (...args) => {\n clearTimeout(id);\n id = setTimeout(() => {\n clearTimeout(id);\n fn(...args);\n }, ms);\n };\n};\n\nexport const throttle = (fn, ms) => {\n let id = null;\n return (...args) => {\n if (id) return;\n fn(...args);\n id = setTimeout(() => {\n clearTimeout(id);\n id = null;\n }, ms);\n };\n};\n\nexport const addBitDepthPoints = (value, step = 3) => {\n //\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043B\u0438 value \u0442\u043E\u0447\u043A\u0443\n const isFraction = value?.includes(\".\");\n\n //\u0432\u0437\u044F\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043E \u0442\u043E\u0447\u043A\u0438\n const valueBeforeDot = isFraction\n ? value?.slice(0, value?.indexOf(\".\"))\n : value;\n\n //\u0440\u0430\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0437\u0430\u043F\u044F\u0442\u044B\u0445 \u043F\u043E\u0441\u043B\u0435 \u043A\u0430\u0436\u0434\u043E\u0439 3\u0439 \u0446\u0438\u0444\u0440\u044B \u0441 \u043A\u043E\u043D\u0446\u0430\n const intPart = valueBeforeDot\n .split(\"\")\n .reverse()\n .reduce(\n (acc, item, idx) =>\n idx % step === 0 && idx !== 0 ? [...acc, \",\", item] : [...acc, item],\n [],\n )\n .reverse()\n .join(\"\");\n\n return isFraction ? intPart + value?.slice(value?.indexOf(\".\")) : intPart;\n};\n\nexport const changeMeta = (key, items = []) => {\n const defaultMeta = items.find((i) => i.key === \"default\");\n\n if (key) {\n const item = items.find((i) => i.key === key);\n document.title = item?.title ?? defaultMeta?.title;\n document\n .querySelector('meta[name=\"description\"]')\n .setAttribute(\"content\", item?.description ?? defaultMeta?.description);\n }\n};\n\nexport const firstLetterCapital = (str) =>\n typeof str === \"string\"\n ? `${str.charAt(0).toUpperCase()}${str.slice(1)}`\n : str;\nexport const capitalized = firstLetterCapital;\n\nexport const checkedRef = (ref) =>\n ref ? (typeof ref === \"function\" ? (node) => ref(node) : ref) : null;\n\nexport function downloadEmulation(data, filename, type = \"image/*\") {\n const file = new Blob([data], { type });\n if (window.navigator.msSaveOrOpenBlob)\n // IE10+\n window.navigator.msSaveOrOpenBlob(file, filename);\n else {\n // Others\n const a = document.createElement(\"a\"),\n url = URL.createObjectURL(file);\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n setTimeout(() => {\n document.body.removeChild(a);\n window.URL.revokeObjectURL(url);\n }, 0);\n }\n}\n\nexport const downloadFile = async ({ url, name, type = null }) => {\n const response = await fetch(url).then(async (res) => ({\n data: await res.blob(),\n type: type ?? res.headers.get(\"content-type\"),\n }));\n downloadEmulation(response.data, name, response.type);\n};\n\nexport const compare = (first, second, keys = []) => {\n //? \u0415\u0441\u043B\u0438 \u0442\u0438\u043F\u044B \u041D\u0415 \u0440\u0430\u0432\u043D\u044B - \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0430\u043F\u0440\u0438\u043E\u0440\u0438\n if (typeof first !== typeof second) return false;\n //? \u0415\u0441\u043B\u0438 \u043E\u0442\u0432\u0435\u0442\u044B \u043D\u0430 \u0432\u043E\u043F\u0440\u043E\u0441 \"\u043C\u0430\u0441\u0441\u0438\u0432 \u043B\u0438?\" \u043D\u0435 \u0440\u0430\u0432\u043D\u044B, \u0442\u043E \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0438 \u0442\u0438\u043F\u044B, \u0437\u043D\u0430\u0447\u0438\u0442 \u0442\u043E\u0436\u0435 \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0430\u043F\u0440\u0438\u043E\u0440\u0438\n if (Array.isArray(first) !== Array.isArray(second)) return false;\n //? \u0415\u0441\u043B\u0438 \u043F\u0440\u043E\u0448\u043B\u0438 if-\u043A\u0443 - \u0442\u0438\u043F\u044B \u0443\u0441\u043B\u043E\u0432\u043D\u043E \u0440\u0430\u0432\u043D\u044B, \u043C\u043E\u0436\u0435\u043C \u043E\u0446\u0435\u043D\u0438\u0432\u0430\u0442\u044C \u0442\u0438\u043F \u043B\u0438\u0448\u044C \u043E\u0434\u043D\u043E\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430, \u044D\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u0441\u043F\u0440\u0430\u0432\u0435\u0434\u043B\u0438\u0432\u043E \u0438 \u0434\u043B\u044F \u0432\u0442\u043E\u0440\u043E\u0433\u043E\n\n //? \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B - \u043F\u0440\u043E\u0441\u0442\u043E \u0441\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u043C. \u041A\u0435\u0439\u0441 \u0441 null \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D \u0442\u0443\u0442.\n if (!(first instanceof Object)) return first === second;\n\n //? \u0415\u0441\u043B\u0438 \u041D\u0415 \u043F\u0440\u0438\u043C\u0435\u0442\u0438\u0432\u044B - \u043D\u0435 \u0432\u0430\u0436\u043D\u043E \u043C\u0430\u0441\u0441\u0438\u0432 \u0438\u043B\u0438 \u043D\u0435\u0442, \u043C\u0435\u0442\u043E\u0434\u044B \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0434\u043B\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0442\u043E\u0436\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\n\n const getComparationStructure = (data) => {\n if (typeof data === 'function') return data.toString();\n if (!(data instanceof Object)) return data;\n\n return Object.entries(data)\n .sort((a, b) => (a[0]).localeCompare(b[0]))\n .map(([key, value]) => ([key, getComparationStructure(data[key])]));\n };\n\n //? \u041F\u043E\u043B\u0443\u0447\u0430\u0435\u043C \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0434\u043B\u044F \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044F (\u0441 \u0443\u0447\u0435\u0442\u043E\u043C \u0433\u043B\u0443\u0431\u0438\u043D\u044B) - \u043C\u0430\u0441\u0441\u0438\u0432\u044B \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u0432, \u0441\u043E\u0440\u0442\u0438\u0440\u0443\u0435\u043C \u043F\u043E \u043A\u043B\u044E\u0447\u0430\u043C,\n const structureForComparingOfFirst = getComparationStructure(first);\n const structureForComparingOfSecond = getComparationStructure(second);\n\n return (JSON.stringify(structureForComparingOfFirst) === JSON.stringify(structureForComparingOfSecond));\n};\n\n// Set Carret to the End of Input\nexport const setCarretToEnd = (input) => {\n setTimeout(() => {\n const tmp = input.value;\n input.value = \"\";\n input.value = tmp;\n }, 10);\n};\n\nexport const compareAlphabetical = (a, b, key = \"label\") => {\n let item1 = a?.[key];\n let item2 = b?.[key];\n\n if (typeof item1 !== \"string\" || typeof item2 !== \"string\") return 0;\n\n item1 = item1?.toLowerCase();\n item2 = item2?.toLowerCase();\n\n if (item1 < item2) {\n return -1;\n }\n if (item1 > item2) {\n return 1;\n }\n return 0;\n};\n\nexport const getBase64 = (file) => {\n if (file) {\n return new Promise(function (resolve, reject) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(\"Error: \", error);\n });\n }\n};\n\nexport const renderFileSize = (bytes, decimals = 2) => {\n if (!Number(bytes)) return \"0 Bytes\";\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n};\n\nexport const getUniqueFileExtensions = (extListString) => {\n // Split the extensions list into an array\n const extArray = extListString\n ?.split(\",\")\n .map((ext) => ext.trim().toUpperCase());\n\n // Remove duplicates using a Set\n const uniqueExts = [...new Set(extArray)];\n\n // Join the unique extensions into a string\n return uniqueExts.join(\", \");\n};\n\nexport const getOS = () => {\n let userAgent = window.navigator.userAgent,\n platform =\n window.navigator?.userAgentData?.platform || window.navigator.platform,\n macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"],\n windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"],\n iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"],\n os = OS.Unknown;\n\n if (macosPlatforms.indexOf(platform) !== -1) {\n os = OS.MacOS;\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n os = OS.iOS;\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n os = OS.Windows;\n } else if (/Android/.test(userAgent)) {\n os = OS.Android;\n } else if (/Linux/.test(platform)) {\n os = OS.Linux;\n }\n\n return os;\n};\n\n\nString.prototype.longerThan = function (compareWith) {\n return this?.length > compareWith?.length;\n};\nString.prototype.lastIndexEqualsTo = function (index) {\n return this?.length - 1 === index;\n};\n\nexport const getCorrectTestId = ({ testId = \"\", withTier = true }) =>\n testId && testId !== undefined ? `${withTier ? \"-\" : \"\"}${testId}` : \"\";\n\n\n", "export const KEYBOARD_SERVICE_KEYS = [\n \"Escape\",\n \"F1\",\n \"F2\",\n \"F3\",\n \"F4\",\n \"F5\",\n \"F6\",\n \"F7\",\n \"F8\",\n \"F9\",\n \"F10\",\n \"F11\",\n \"F12\",\n \"Tab\",\n \"CapsLock\",\n \"Shift\",\n \"Control\",\n \"Meta\",\n \"Option\",\n \"Alt\",\n \"ContextMenu\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"NumLock\",\n \"Backspace\",\n \"Delete\",\n \"Enter\",\n \"Return\",\n \"Insert\",\n \"Home\",\n \"End\",\n \"PageUp\",\n \"PageDown\",\n \"PrintScreen\",\n \"ScrollLock\",\n \"Pause\",\n];\n\nexport const MAX_PHONE_LENGTH = 10;\nexport const MAX_NAME_LENGTH = 128;\n\nexport const DEFAULT_DATE_MASK_NO_VALUE_SYMBOL = \"_\";\n\nexport const DEFAULT_COLORS = [\n \"#D9C1FF\",\n \"#FFBAF0\",\n \"#FFB8CE\",\n \"#FFC3A2\",\n \"#FFDB7C\",\n \"#F9F871\",\n \"#C3FCF1\",\n \"#F6F2CB\",\n \"#E0F8D1\",\n \"#B1DFFB\",\n \"#8DECFE\",\n \"#76F7ED\",\n \"#8AFEC8\",\n];\n\nexport const KEYBOARD_KEY_CODES = {\n Backspace: 8,\n Delete: 46,\n ARROW_LEFT: 37,\n ARROW_RIGHT: 39,\n};\n\nexport const OS = {\n iOS: \"iOS\",\n Android: \"Android\",\n WP: \"Windows Phone\",\n Linux: \"Linux\",\n Windows: \"Windows\",\n MacOS: \"MacOS\",\n Unknown: \"unknown\",\n};\n", "import type { IAccordionItemProps } from './Accordion.interface';\nimport cn from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\nimport * as Icons from 'react-feather';\n\nimport { NavLink } from 'react-router-dom';\n\nimport Status from '../Status';\n\nimport './Accordion.scss';\n\nconst AccordionItem: React.FC<IAccordionItemProps> = ({\n item,\n onClick,\n isOpen,\n className,\n children,\n noChevron,\n testId = 'accordion-item',\n}) => {\n const Icon = Icons[item.icon as keyof typeof Icons];\n const [maxHeight, setMaxHeight] = useState<number>(0);\n const ref = useRef<HTMLDivElement>(null);\n\n const getItemsHeight = (): number => {\n let itemHeight = 0;\n ref.current?.childNodes.forEach((el) => {\n itemHeight += (el as HTMLElement).offsetHeight;\n });\n\n return itemHeight + 20;\n };\n\n useEffect(() => {\n setMaxHeight(isOpen ? getItemsHeight() : 0);\n }, [isOpen]);\n\n const calculateStatusCount = (): {\n active: number;\n pause: number;\n } | undefined => {\n return item?.rows?.reduce(\n (acc, row) => {\n const result = row.cols.reduce(\n (accum, col) => ({\n active: accum.active + (col.status === 'active' ? 1 : 0),\n pause: accum.pause + (col.status === 'pause' ? 1 : 0),\n }),\n { active: 0, pause: 0 },\n );\n\n return {\n active: acc.active + result.active,\n pause: acc.pause + result.pause,\n };\n },\n { active: 0, pause: 0 },\n );\n };\n\n return (\n <div\n data-testid={testId}\n className={cn('accordion--item', className)}\n role=\"region\"\n aria-labelledby={`accordion-title-${item.title}`}\n >\n <div\n className={cn('accordion--title-box', {\n 'accordion--title-open': isOpen,\n })}\n onClick={() => onClick(!isOpen)}\n id={`accordion-title-${item.title}`}\n role=\"button\"\n aria-expanded={isOpen}\n aria-controls={`accordion-content-${item.title}`}\n tabIndex={0}\n >\n <div className=\"j4 no-wrap\">\n {item?.icon && <Icon className={cn('mr5', item?.className)} aria-hidden=\"true\" />}\n <span className=\"accordion--title\">{item.title || 'Menu Chapter'}</span>\n </div>\n\n <div className=\"j6 accordion-title__right-box\">\n {item.status && (\n <div className=\"mr5\">\n <Status\n type={item?.status.type}\n value={item?.status.value}\n status={item?.status.status}\n active={calculateStatusCount()?.active}\n pause={calculateStatusCount()?.pause}\n />\n </div>\n )}\n\n {!noChevron && (\n <Icons.ChevronRight\n aria-hidden=\"true\"\n className={cn('accordion--title-chevron', {\n 'accordion--title-chevron-open': isOpen,\n })}\n />\n )}\n </div>\n </div>\n\n <div\n ref={ref}\n style={{ maxHeight }}\n className={cn('accordion--content', {\n 'accordion--content-is-open': isOpen,\n })}\n id={`accordion-content-${item.title}`}\n role=\"region\"\n aria-labelledby={`accordion-title-${item.title}`}\n >\n {item.children\n ? item.children.map((el) => {\n return (\n <NavLink to={el.link} key={el.id} className=\"accordion--content-item accordion--menu-link\">\n {el?.title || 'Menu item'}\n </NavLink>\n );\n })\n : children}\n </div>\n </div>\n );\n};\n\nexport default AccordionItem;\n", "import type { IStatusProps } from './Status.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport './Status.scss';\n\nfunction defaultOnClick(): void {}\n\nconst Status: React.FC<IStatusProps> = ({\n icon,\n value,\n label,\n status,\n disabled,\n type,\n active = 0,\n pause = 0,\n className,\n noBackground,\n children,\n testId = 'status',\n onClick = defaultOnClick,\n}) => {\n if (!status) return null;\n\n const text = children && typeof children === 'string' ? children : value || label || status;\n const formattedLabel = text?.[0].toUpperCase() + text?.slice(1);\n\n return (\n <div onClick={onClick} data-testid={testId} className={cn({ disabled }, className)}>\n {type === 'number'\n ? (\n <div>\n {active === 0 && pause === 0\n ? (\n <div className=\"status status--error\">\n <span>{active}</span>\n </div>\n )\n : (\n <div className=\"status status--warning\">\n <span className=\"status--number-active\">{active}</span>\n <span className=\"color--gray-gull\"> / </span>\n <span className={pause > 0 ? 'color--froly' : 'color--gray-gull'}>{pause}</span>\n </div>\n )}\n </div>\n )\n : (\n <div\n className={cn(\n 'status',\n `status--${status}`,\n {\n 'status--no-bg': noBackground && status === 'pause',\n 'color--gray-gull': noBackground && status === 'pause' && !className,\n 'j4': !!icon,\n },\n className,\n )}\n >\n {icon}\n {formattedLabel}\n </div>\n )}\n </div>\n );\n};\n\nexport default Status;\n", "import Status from './Status';\n\nexport default Status;\nexport type { IStatusProps } from './Status.interface';\n", "import Accordion from './Accordion';\n\nexport default Accordion;\nexport type { IAccordionItemProps, IAccordionProps } from './Accordion.interface';\n", "import React, { useEffect, useState } from \"react\";\n\nimport cn from \"classnames\";\nimport { ArrowDown, ArrowUp, ChevronDown, Tag } from \"react-feather\";\n\nimport MonoAccordion from \"../MonoAccordion/MonoAccordion\";\n\nimport \"./AccordionTable.scss\";\n\nconst AccordionTable = ({\n className,\n header,\n items,\n onChange,\n testId,\n onSort = () => {},\n sortParams,\n}) => {\n const [accordions, setAccordions] = useState(items);\n\n const sortedColClassName = (item) =>\n cn(\n \"accordion-table__header-item\",\n item.className,\n {\n \"accordion-table--sorted-col\":\n sortParams && sortParams.key === item.key,\n },\n { \"accordion-table__header-item-sortable\": !item.noSort },\n );\n\n const handle = {\n accordionChange: (key, e) => {\n const newArr = accordions?.map((item) => {\n if (item.key === key) {\n return {\n ...item,\n isOpen: !item.isOpen,\n };\n }\n return item;\n });\n const isArrowSvg = e?.target?.tagName === \"svg\";\n const isAccordionElement =\n e.target.className?.includes?.(\"accordion-table\");\n if (isAccordionElement || isArrowSvg) {\n onChange(newArr);\n setAccordions(newArr);\n }\n },\n\n setSort: (key) => {\n let newSorting;\n if (key !== sortParams.key) newSorting = { key: key, direction: \"DESC\" };\n else {\n newSorting = {\n key,\n direction: sortParams.direction === \"ASC\" ? \"DESC\" : \"ASC\",\n };\n }\n onSort(newSorting);\n },\n };\n\n const getHeaderItem = (key) => {\n return header?.find((item) => item.key === key);\n };\n\n const renderTd = (tr) => {\n return Object.entries(tr)?.map(([key, value]) => {\n return key === \"promoDetails\" || key === \"disclosure\" ? null : (\n <div\n key={key}\n style={{ flexBasis: `${getHeaderItem(key)?.width}%` }}\n className={cn(\n \"accordion-table__td\",\n `accordion-table__td--${key}`,\n getHeaderItem(key)?.className,\n )}\n >\n <p\n className=\"accordion-table__statistics-td-value\"\n title={typeof value !== \"object\" ? value : value.value}\n >\n {typeof value !== \"object\" ? value : value.value}\n </p>\n </div>\n );\n });\n };\n\n const renderTr = (rows) => {\n return rows?.map((row, index) => {\n return (\n <div\n key={index}\n className={cn(\n \"accordion-table__tr\",\n {\n \"accordion-table__tr-with-promo\":\n row.promoDetails || row.cols?.promoDetails,\n },\n row.className,\n )}\n >\n <div className=\"df w100\">{renderTd(row.cols || row)}</div>\n {row.promoDetails || row.cols?.promoDetails ? (\n <div className=\"accordion-table__tr-promo-wrapper\">\n <div className=\"accordion-table__tr-promo\">\n <Tag className=\"tr-promo-icon\" width={16} height={16} />\n <span className=\"tr-promo-label\">PROMOTION</span>\n {row.promoDetails || row.cols?.promoDetails}\n </div>\n </div>\n ) : null}\n\n {row.disclosure || row.cols?.disclosure ? (\n <div className=\"accordion-table__tr-promo-wrapper\">\n <div className=\"accordion-table__tr-promo accordion-table__tr-promo-disclosure\">\n {row.disclosure || row.cols?.disclosure}\n </div>\n </div>\n ) : null}\n </div>\n );\n });\n };\n\n const defineAccordionTitle = (row) => {\n return (\n <div\n onClick={(e) => handle.accordionChange(row.key, e)}\n className=\"accordion-table__accordion-label-box\"\n >\n <div className=\"accordion-table__accordion-label-wrapper j4\">\n <ChevronDown\n width={8}\n height={4}\n className={cn(\"accordion-label-box__icon\", {\n \"accordion-label-box__icon--open\": row.isOpen,\n })}\n />\n <span className=\"accordion-label-box__label\">{row.label}</span>\n {row.statistics && (\n <div className={cn(\"accordion-table__tr\", row.className)}>\n {Object.entries(row.statistics).map(([key, value]) => {\n return (\n <div\n key={key}\n style={{ width: `${getHeaderItem(key)?.width}%` }}\n className={cn(\n \"accordion-table__statistics-td\",\n getHeaderItem(key)?.className,\n )}\n >\n <div className=\"accordion-table__statistics-td-value-wrapper\">\n {key === \"status\" ? (\n <div className=\"accordion-table__statistics-td-value\">\n {value}\n </div>\n ) : (\n <p\n className=\"accordion-table__statistics-td-value\"\n title={value}\n >\n {value}\n </p>\n )}\n </div>\n </div>\n );\n })}\n </div>\n )}\n </div>\n\n {row.titleContent}\n </div>\n );\n };\n\n useEffect(() => {\n setAccordions(items);\n }, [items]);\n\n return (\n <div className={cn(\"accordion-table\", className)}>\n <div className=\"accordion-table__header\">\n {header?.map((item) => {\n return (\n <div\n style={{ flexBasis: `${item.width}%` }}\n key={item.key}\n className={sortedColClassName(item)}\n onClick={() => !item.noSort && handle.setSort(item.key)}\n >\n {sortParams &&\n item.key === sortParams.key &&\n sortParams.key !== \"actions\" &&\n (sortParams.direction === \"DESC\" ? (\n <ArrowDown size={16} />\n ) : (\n <ArrowUp size={16} />\n ))}\n\n {item.label}\n </div>\n );\n })}\n </div>\n\n <div className=\"accordion-table__body\">\n {accordions?.map((accordion) => {\n return (\n <MonoAccordion\n testId={testId}\n key={accordion.key}\n onClick={(e) => handle.accordionChange(accordion.key, e)}\n isOpen={accordion.isOpen}\n className={cn(\n \"accordion-table__body-accordion\",\n {\n \"accordion-table__body-accordion--closed\": !accordion.isOpen,\n },\n accordion.className,\n )}\n titleJSX={defineAccordionTitle(accordion)}\n >\n {accordion.children ?? renderTr(accordion.rows)}\n </MonoAccordion>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default AccordionTable;\n", "import React, { useEffect, useRef, useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport \"./MonoAccordion.scss\";\n\nconst RC = \"mono-accordion\";\n\nconst MonoAccordion = ({\n titleJSX,\n icon,\n children,\n isOpen,\n onClick,\n className,\n disabled,\n testId = \"mono-accordion\",\n datasetProp = {},\n}) => {\n const [maxHeight, setMaxHeight] = useState();\n const titleRef = useRef();\n const containerRef = useRef();\n\n const setHeight = (value) => {\n if (value !== undefined) setMaxHeight((state) => `${value}px`);\n else\n setMaxHeight(\n (state) =>\n `${Array.from(containerRef.current?.childNodes)?.reduce?.((acc, el) => acc + el.offsetHeight, 0)}px`,\n );\n };\n\n const handleClick = (e) => {\n if (\n !Array.from(titleRef.current.childNodes).some((el) =>\n el.contains(e.target),\n )\n ) {\n onClick(e);\n e?.preventDefault();\n e?.stopPropagation();\n } else return e;\n };\n\n useEffect(() => {\n if (!isOpen) setHeight(0);\n else setHeight();\n }, [isOpen, children]);\n\n return (\n <div\n {...datasetProp}\n data-testid={testId}\n className={cn(RC, className, {\n [`${RC}_is-open`]: isOpen,\n [`${RC}_disabled`]: disabled,\n })}\n >\n <div\n className={`${RC}__head`}\n onClick={handleClick}\n >\n <div ref={titleRef} className={`${RC}__tile-container`}>\n {titleJSX}\n </div>\n <span className={`${RC}__icon-container`}>{icon}</span>\n </div>\n\n <div\n ref={containerRef}\n style={{ maxHeight }}\n className={cn(`${RC}__container`)}\n >\n <div className={`${RC}__content-wrapper`}>{children}</div>\n </div>\n </div>\n );\n};\n\nexport default MonoAccordion;\n", "import { useEffect, useRef, useState } from \"react\";\nimport React from \"react\";\nimport cn from \"classnames\";\nimport { ChevronDown, ChevronUp } from \"react-feather\";\nimport \"./AccordionText.scss\";\n\nconst defaultText = <>\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n</>\n\nconst AccordionText = ({\n isDefaultOpen = false,\n isOuterOpen = false,\n className,\n text = defaultText,\n shortText = null\n}) => {\n const bodyRef = useRef(null);\n const [isOpen, setIsOpen] = useState(isDefaultOpen);\n const [isNeedTrimText, setIsNeedTrimText] = useState(false);\n\n useEffect(() => {\n setIsOpen(isOuterOpen);\n }, [isOuterOpen]);\n\n useEffect(() => {\n const checkEllipsis = () => {\n if (bodyRef.current) {\n setIsNeedTrimText(bodyRef.current.scrollWidth > bodyRef.current.clientWidth);\n }\n };\n\n const resizeObserver = new ResizeObserver(() => {\n checkEllipsis();\n });\n\n if (bodyRef.current) {\n resizeObserver.observe(bodyRef.current);\n checkEllipsis();\n }\n\n return () => {\n if (bodyRef.current) {\n resizeObserver.unobserve(bodyRef.current);\n }\n };\n }, [text]);\n\n return (\n <div\n className={cn(\"accordion-text\", className, {\n \"accordion-text--open\": isOpen,\n })}\n onClick={() => setIsOpen((prevIsOpen) => !prevIsOpen)}\n >\n <div\n className={cn(\"accordion-text__body\", {\n \"accordion-text__body--trim-text\": isNeedTrimText && !isOpen,\n })}\n ref={bodyRef}\n >\n {shortText ? (isOpen ? text : shortText) : text}\n </div>\n <div className=\"accordion-text__toggle\">\n {isOpen ? <ChevronUp /> : <ChevronDown />}\n </div>\n </div>\n );\n};\n\nexport default AccordionText;\n", "import type { IAdvancedTagsItemProps, IAdvancedTagsProps } from './AdvancedTags.interface';\n\nimport cn from 'classnames';\n\nimport React, { useState } from 'react';\nimport Tag from '../Tag/Tag';\nimport AdvTag from './AdvTag';\n\nconst AdvancedTags: React.FC<IAdvancedTagsProps> = ({\n items,\n noItemsTagLabel,\n className,\n testId = 'advanced-tag-test',\n toTop = true,\n}) => {\n const [showedItems, setShowedItems] = useState<IAdvancedTagsItemProps[]>(items.slice(0, 2));\n\n const [showMore, setShowMore] = useState<boolean>(true);\n\n const onShowMoreClick = (): void => {\n setShowedItems(showMore ? items : items.slice(0, 2));\n setShowMore(!showMore);\n };\n\n if ((!items || !items.length) && noItemsTagLabel) {\n return (\n <Tag\n label={noItemsTagLabel?.toString()}\n className={cn(className, 'tag-warn')}\n />\n );\n }\n\n if ((!items || !items.length) && !noItemsTagLabel) return null;\n\n return (\n <div data-testid={testId} className={cn(className, 'j4 wrap')}>\n {showedItems.map((item, index) => {\n if (!item) return null;\n return (\n <AdvTag\n toTop={toTop}\n key={index}\n item={item}\n testId={`${testId}-item-${index}`}\n />\n )\n })}\n\n {items.length >= 3 && (\n <span\n data-testid={`${testId}-showMore`}\n onClick={onShowMoreClick}\n className=\"advanced-tags advanced-tags--showMore\"\n >\n {showMore ? `+${items.length - showedItems.length}` : '...'}\n </span>\n )}\n </div>\n );\n};\n\nexport default AdvancedTags;\n", "import type { ITagProps } from './Tag.interface';\nimport cn from 'classnames';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { AlertTriangle, X } from 'react-feather';\nimport Spinner from '../../Layout/Spinner';\n\nimport './Tag.scss';\n\nconst CN = 'tag';\n\nfunction defaultOnClick(): void {}\n\nconst Tag: React.FC<ITagProps> = ({\n value,\n className,\n style,\n label,\n warning,\n isWarningHint = true,\n removeItem,\n name,\n isPopup,\n popupInfoContent,\n popupClassName,\n id,\n isUseInTable,\n isNoDismiss = true,\n onClick = defaultOnClick,\n testId = CN,\n}) => {\n const tagRef = useRef<HTMLDivElement>(null);\n\n const [isTagHover, setIsTagHover] = useState<boolean>(false);\n const [isTagPopupOpened, setIsTagPopupOpened] = useState<boolean>(false);\n\n const { x, y, height, width } = tagRef?.current?.getBoundingClientRect() ?? {};\n const { scrollY } = window;\n\n const tagPopupStyles = useMemo(() => {\n if (!isTagPopupOpened || !tagRef?.current) return {};\n\n const { x, y, height, width } = tagRef?.current?.getBoundingClientRect();\n\n return {\n left: `${x}px`,\n top: `${y + scrollY}px`,\n transform: `translate(calc(-1 * calc(100% - ${width / 2 + 22}px)), ${height + 10}px)`,\n };\n }, [isTagPopupOpened, x, y, width, height, scrollY]);\n\n const tagLabelStyle = useMemo(() => {\n const styleObj: React.CSSProperties = {};\n\n const bgColor = style?.backgroundColor ?? style?.background;\n\n if (bgColor === '#242424') {\n styleObj.color = '#fff';\n }\n\n return styleObj;\n }, [style]);\n\n const handle = {\n onTagClick: (event: React.MouseEvent<HTMLDivElement>) => {\n if (isUseInTable) {\n event.stopPropagation();\n }\n if (isPopup) {\n setIsTagPopupOpened(!isTagPopupOpened);\n }\n onClick(id, event);\n },\n };\n\n const handleClickOutside = (): void => {\n setIsTagPopupOpened(false);\n };\n\n useEffect(() => {\n document.addEventListener('click', handleClickOutside, true);\n return () => {\n document.removeEventListener('click', handleClickOutside, true);\n };\n }, []);\n\n useEffect(() => {\n const handleScroll = (): void => {\n setIsTagPopupOpened(false);\n };\n\n window.addEventListener('scroll', handleScroll, true);\n return () => {\n window.removeEventListener('scroll', handleScroll, true);\n };\n }, []);\n\n return (\n <div\n onMouseEnter={() => setIsTagHover(true)}\n onMouseLeave={() => setIsTagHover(false)}\n data-testid={testId}\n role=\"listitem\"\n aria-label={`Tag: ${label || name}`}\n className={cn(CN, className, { 'tag-warn': warning })}\n style={style ?? {}}\n onClick={event => handle.onTagClick(event)}\n ref={tagRef}\n >\n {warning && typeof warning === 'string' && (\n <AlertTriangle className=\"advanced-tags--warning-icon mr5\" aria-label=\"Warning\" />\n )}\n {warning && typeof warning === 'string' && isTagHover && isWarningHint && (\n <div className=\"tag__warn-hint\" role=\"tooltip\">\n {warning}\n </div>\n )}\n <span className=\"tag__label\" style={tagLabelStyle}>{label || name}</span>\n\n {removeItem && !isNoDismiss && (\n <button\n type=\"button\"\n onClick={(e) => {\n e?.preventDefault();\n e?.stopPropagation();\n removeItem(value);\n }}\n aria-label={`Remove ${label || name}`}\n className=\"tag__button\"\n >\n <X className=\"color--text\" />\n </button>\n )}\n\n {isTagPopupOpened\n && createPortal(\n <div id={`tagPopup${value}`} className={cn('tag__popup', popupClassName)} style={tagPopupStyles}>\n {!popupInfoContent ? <Spinner size=\"small\" /> : popupInfoContent}\n </div>,\n document.getElementById('root')!,\n )}\n </div>\n );\n};\n\nexport default Tag;\n", "import type { ISpinnerProps } from './Spinner.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport './Spinner.scss';\n\nconst CN = 'loader-box';\n\nconst Spinner: React.FC<ISpinnerProps> = ({ size = null, className, testId = CN }) => {\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n data-testid={testId}\n className={cn(\n CN,\n {\n j5: size !== 'small',\n j8: size === 'small',\n },\n className,\n )}\n >\n <div className={cn('lds-ring', { [`lds-ring_${size}`]: size })}>\n <div />\n <div />\n <div />\n <div />\n </div>\n </div>\n );\n};\n\nexport default Spinner;\n", "import Spinner from './Spinner';\n\nexport default Spinner;\nexport type { ISpinnerProps } from './Spinner.interface';\n", "import type { MouseEvent } from 'react';\nimport type { IAdvTagProps } from './AdvancedTags.interface';\n\nimport cn from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { AlertTriangle } from 'react-feather';\n\nimport './AdvancedTags.scss';\n\nconst AdvTag: React.FC<IAdvTagProps> = ({\n item,\n className,\n testId = 'adv-tag',\n toTop = true,\n}) => {\n const {\n labelLeft,\n labelRight,\n active = 0,\n pause = 0,\n merchants,\n warnLeft,\n warnLeftMsg,\n warnRightMsg,\n isEntityAndCounter = false,\n entityAndCounter = {\n nullCounterMessage: '',\n title: '',\n counter: null,\n },\n type,\n } = item;\n\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [clickedWarning, setClickedWarning] = useState<string>('');\n const hintRef = useRef<HTMLDivElement>(null);\n\n const activeNumberClass = cn('strong', {\n 'color--pause': active === 0,\n 'color--green-haze': active > 0,\n });\n\n const pauseNumberClass = cn('strong', {\n 'color--pause': pause === 0,\n 'color--light-red': pause > 0,\n });\n\n const isEmptyEntitys\n = (isEntityAndCounter\n && (!entityAndCounter?.counter || entityAndCounter.counter === 0))\n || (!isEntityAndCounter && (warnLeft || !merchants));\n\n const advancedTagClass = cn('advanced-tags', {\n 'advanced-tags--error': isEmptyEntitys,\n }, className);\n\n const onWarningClick = (warn: string): void => {\n setIsOpen(true);\n setClickedWarning(warn);\n };\n\n const handleClickOutside = (event: MouseEvent | Event): void => {\n if (hintRef.current && !hintRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener('click', handleClickOutside, true);\n return () => {\n document.removeEventListener('click', handleClickOutside, true);\n };\n }, []);\n\n if (!item) return null;\n\n const renderClassicTag = (): JSX.Element => (\n <div data-testid={testId} className={advancedTagClass} ref={hintRef}>\n {warnLeft && (\n <div\n data-testid={`${testId}-left`}\n className=\"advanced-tags--warning-icon-wrapper\"\n onMouseEnter={() => onWarningClick('warnLeft')}\n onMouseLeave={() => setIsOpen(false)}\n >\n <AlertTriangle\n width={16}\n height={16}\n className=\"advanced-tags--warning-icon mr5\"\n />\n </div>\n )}\n\n {labelLeft && <span className=\"mr5\">{labelLeft}</span>}\n {labelRight && <span>{labelRight}</span>}\n\n {type !== 'simple' && <span className=\"ml5 mr5\">|</span>}\n {type !== 'simple' && (\n <div className=\"df\">\n <span className={activeNumberClass}>{active}</span>\n <span className=\"strong color--pause\">/</span>\n <span className={pauseNumberClass}>{pause}</span>\n </div>\n )}\n\n {type !== 'simple' && <span className=\"ml5 mr5\">|</span>}\n\n {merchants\n ? (\n <span>{merchants}</span>\n )\n : (\n type !== 'simple' && (\n <div\n data-testid={`${testId}-right`}\n className=\"advanced-tags--warning-icon-wrapper\"\n onMouseEnter={() => onWarningClick('warnRight')}\n onMouseLeave={() => setIsOpen(false)}\n >\n <AlertTriangle\n width={16}\n height={16}\n className=\"advanced-tags--warning-icon\"\n />\n </div>\n )\n )}\n\n {isOpen && warnLeftMsg && clickedWarning === 'warnLeft' && (\n <span\n className={cn(\n 'advanced-tags__warn-text advanced-tags__warn-text--warnLeft',\n { 'advanced-tags__warn-text--warnLeft--to-top': toTop },\n )}\n >\n {warnLeftMsg}\n </span>\n )}\n\n {isOpen && warnRightMsg && clickedWarning === 'warnRight' && (\n <span\n className={cn(\n 'advanced-tags__warn-text',\n 'advanced-tags__warn-text--warnRight',\n { 'advanced-tags__warn-text--warnRight--to-top': toTop },\n )}\n >\n {warnRightMsg}\n </span>\n )}\n </div>\n );\n\n const renderWithEntityAndCounterTag = (): JSX.Element => {\n const isNullcounter = entityAndCounter?.counter?.toString() === '0';\n\n return (\n <div data-testid={testId} className={advancedTagClass} ref={hintRef}>\n {isNullcounter && (\n <div\n data-testid={`${testId}-left`}\n className=\"advanced-tags--warning-icon-wrapper\"\n onMouseEnter={() => onWarningClick('warnLeft')}\n onMouseLeave={() => setIsOpen(false)}\n >\n <AlertTriangle\n width={16}\n height={16}\n className=\"advanced-tags--warning-icon mr5\"\n />\n </div>\n )}\n\n {isOpen\n && entityAndCounter?.nullCounterMessage\n && clickedWarning === 'warnLeft' && (\n <span\n className={cn(\n 'advanced-tags__warn-text advanced-tags__warn-text--warnLeft',\n { 'advanced-tags__warn-text--warnLeft--to-top': toTop },\n )}\n >\n {entityAndCounter.nullCounterMessage}\n </span>\n )}\n\n {entityAndCounter?.title && (\n <span className=\"mr5\">{entityAndCounter.title}</span>\n )}\n\n <div\n className={cn('advanced-tags__counter', {\n 'advanced-tags__counter--null': isNullcounter,\n 'advanced-tags__counter--bold': !isNullcounter,\n })}\n >\n {entityAndCounter?.counter}\n </div>\n </div>\n );\n };\n\n return !isEntityAndCounter ? renderClassicTag() : renderWithEntityAndCounterTag();\n};\n\nexport default AdvTag;\n", "import AdvancedTags from './AdvancedTags';\nimport AdvTag from './AdvTag';\n\nexport default AdvancedTags;\n\nexport { AdvTag };\n\nexport type { IAdvancedTagsItemProps, IAdvancedTagsProps, IAdvTagProps } from './AdvancedTags.interface';\n", "import type { IAlertProps } from './Alert.interface';\n\nimport cn from 'classnames';\nimport React, { useState } from 'react';\n\nimport { X } from 'react-feather';\nimport Spinner from '../../Layout/Spinner/Spinner';\nimport Button from '../Button/Button';\n\nimport './Alert.scss';\n\nconst Alert: React.FC<IAlertProps> = ({\n message,\n icon,\n className,\n children,\n noDismiss,\n testId = 'alert',\n isHidden = false,\n variant = 'warning',\n isLoading,\n buttonParams,\n}) => {\n const [onClose, setOnClose] = useState(false);\n\n const renderActionsBlock = (): JSX.Element | null => {\n if (buttonParams) {\n return (\n <div className=\"j6 alert__btns-box\">\n <Button {...buttonParams} />\n {!noDismiss && (\n <div className=\"alert__close-btn\">\n <X data-testid={`${testId}-close`} onClick={() => setOnClose(!onClose)} />\n </div>\n )}\n </div>\n );\n }\n\n if (!noDismiss) {\n return (\n <div className=\"alert__close-btn\">\n <X data-testid={`${testId}-close`} onClick={() => setOnClose(!onClose)} />\n </div>\n );\n }\n\n else {\n return null;\n }\n };\n\n return (\n <div\n data-testid={testId}\n className={cn(className, { hidden: onClose }, `alert alert--${variant}`, {\n 'hidden': isHidden,\n 'alert--loading': isLoading,\n })}\n >\n <div className=\"alert__icon-text-box j4\">\n {icon}\n <div>{children || message}</div>\n </div>\n {renderActionsBlock()}\n {isLoading && <Spinner size=\"small\" testId=\"loader-box\" />}\n </div>\n );\n};\n\nexport default Alert;\n", "import type { CSSProperties, ReactNode } from 'react';\nimport type { IUniProps } from '../../../types/base.interface';\nimport cn from 'classnames';\n\nimport './Button.scss';\n\nconst RC = 'button';\n\nexport type TButtonVariant = 'primary' | 'ellipse-apply' | 'ellipse-cancel' | string;\n\ninterface IProps extends IUniProps, Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'disabled'> {\n label?: string;\n onClick?: () => void;\n disabled?: boolean;\n icon?: ReactNode;\n children?: ReactNode;\n style?: CSSProperties;\n noIcon?: boolean;\n isIconRight?: boolean;\n tabIndex?: number;\n variant?: TButtonVariant;\n isTextEllipsis?: boolean;\n}\n\nconst Button: React.FC<IProps> = ({\n label,\n onClick,\n disabled,\n icon,\n className,\n children,\n style,\n noIcon,\n isIconRight,\n testId = 'button',\n tabIndex = 0,\n variant = 'primary',\n isTextEllipsis = false,\n ...props\n}) => {\n const noRenderIcon = noIcon || variant === 'ellipse-apply' || variant === 'ellipse-cancel';\n\n return (\n <button\n data-testid={testId}\n tabIndex={tabIndex}\n style={style}\n className={cn(\n RC,\n {\n [`${RC}_${variant}`]: variant,\n 'button_icon-left': icon && !isIconRight,\n 'button_icon-right': icon && isIconRight,\n },\n className,\n )}\n onClick={onClick}\n disabled={disabled}\n type=\"button\"\n {...props}\n\n >\n {!noRenderIcon && icon}\n {label && <div className={cn('button__text', { 'text-ellipsis': isTextEllipsis })}>{label}</div>}\n {!label && children ? children : null}\n </button>\n );\n};\n\nexport default Button;\n", "import type { IAlertProps } from './Alert.interface';\nimport Alert from './Alert';\n\nexport type { IAlertProps };\nexport default Alert;\n", "import type { ReactElement, ReactNode } from 'react';\n\nimport type { IArrowProps } from './Arrow.interface';\nimport cn from 'classnames';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { getStyles } from '../../../Functions/utils';\nimport './Arrow.scss';\n\nfunction Arrow({ type, className, onClick, disabled, testId, isAlt }: IArrowProps): ReactElement | null {\n const ref = useRef<HTMLDivElement>(null);\n const [color, setColor] = useState<string>('currentColor');\n\n useEffect(() => {\n if (ref.current) {\n setColor(getStyles(ref.current, 'color') as string);\n }\n }, [ref.current]);\n if (!type || (type !== 'left' && type !== 'right')) return null;\n\n function renderSVG(): ReactNode {\n if (type === 'left') {\n if (isAlt) {\n return (\n <svg\n data-testid={testId}\n version=\"1.1\"\n id=\"Layer_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M12.7,8H3.3\"\n stroke={color}\n fill=\"none\"\n strokeWidth={1.3333}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8,3.3L3.3,8L8,12.7\"\n stroke={color}\n fill=\"none\"\n strokeWidth={1.3333}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n return (\n <svg\n data-testid={testId}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M15 18L9 12L15 6\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n if (isAlt) {\n return (\n <svg\n data-testid={testId}\n id=\"Layer_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M3.3,8h9.3\"\n stroke={color}\n fill=\"none\"\n strokeWidth={1.3333}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8,3.3L12.7,8L8,12.7\"\n stroke={color}\n fill=\"none\"\n strokeWidth={1.3333}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n return (\n <svg\n data-testid={testId}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9 18L15 12L9 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n\n return (\n <div\n data-testid={`arrow--key-${testId}--type-${type}`}\n ref={ref}\n className={cn('arrow', `arrow_${type}`, className, {\n arrow_disabled: disabled,\n })}\n onClick={onClick}\n >\n {renderSVG()}\n </div>\n );\n}\n\nexport default Arrow;\n", "// global\nimport type { CSSProperties, ReactElement } from 'react';\n\nimport type { IBoxProps } from './Box.interface';\nimport cn from 'classnames';\n\n// styles\nimport './Box.scss';\n\nconst directionVariants = {\n column: 'column',\n row: 'row',\n};\n\nconst sizes = {\n none: 'none',\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'l',\n xl: 'xl',\n};\n\nfunction Box({\n children,\n paddingVariant = sizes.m,\n radiiVariant = sizes.s,\n direction = directionVariants.column,\n className,\n ...restProps\n}: IBoxProps): ReactElement {\n const styles: CSSProperties = {\n flexDirection: direction as 'row' | 'row-reverse' | 'column' | 'column-reverse',\n };\n return (\n <div\n style={styles}\n data-testid=\"box\"\n className={cn(\n 'box',\n `box--padding-${paddingVariant}`,\n `box--radii-${radiiVariant}`,\n className,\n {\n 'df': direction === directionVariants.row,\n 'dfc-jc': direction === directionVariants.column,\n },\n )}\n {...restProps}\n >\n {children}\n </div>\n );\n}\n\nexport default Box;\n", "import type { IButtonsBarProps } from './ButtonsBar.interface';\nimport cn from 'classnames';\nimport React from 'react';\n\nimport { Link } from 'react-router-dom';\n\nimport Button from '../Button/Button';\n\nimport './ButtonsBar.scss';\n\nconst ButtonsBar: React.FC<IButtonsBarProps> = ({\n className,\n rejectBtnLabel,\n rejectBtnIcon,\n isRejectBtnIconRight,\n rejectBtnVariant,\n rejectBtnClass,\n isRejectBtnDisabled,\n rejectLink,\n onReject,\n confirmBtnLabel,\n confirmBtnIcon,\n isConfirmBtnIconRight,\n confirmBtnVariant,\n confirmBtnClass,\n isConfirmBtnDisabled,\n onConfirm,\n testIdFirstBtn = 'button-bar-first-item',\n testIdSecondBtn = 'button-bar-second-item',\n}) => {\n return (\n <div className={cn('button-bar', className)}>\n {rejectLink\n ? (\n <Link className=\"text-decoration-none\" to={rejectLink}>\n <Button\n testId={testIdFirstBtn}\n label={rejectBtnLabel}\n variant={rejectBtnVariant}\n onClick={onReject}\n disabled={isRejectBtnDisabled}\n icon={rejectBtnIcon}\n isIconRight={isRejectBtnIconRight}\n className={cn(rejectBtnClass, { mr5: confirmBtnLabel })}\n />\n </Link>\n )\n : (\n <Button\n testId={testIdFirstBtn}\n label={rejectBtnLabel}\n variant={rejectBtnVariant}\n onClick={onReject}\n disabled={isRejectBtnDisabled}\n icon={rejectBtnIcon}\n isIconRight={isRejectBtnIconRight}\n className={cn(rejectBtnClass, { mr5: confirmBtnLabel })}\n />\n )}\n\n <Button\n testId={testIdSecondBtn}\n label={confirmBtnLabel}\n variant={confirmBtnVariant}\n onClick={onConfirm}\n disabled={isConfirmBtnDisabled}\n icon={confirmBtnIcon}\n isIconRight={isConfirmBtnIconRight}\n className={confirmBtnClass}\n />\n </div>\n );\n};\n\nexport default ButtonsBar;\n", "import type { IButtonsBarProps } from './ButtonsBar.interface';\nimport ButtonsBar from './ButtonsBar';\n\nexport type { IButtonsBarProps };\nexport default ButtonsBar;\n", "import React, { useEffect, useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport \"./CircleProgressBar.scss\";\n\nconst CircleProgressBar = ({\n amount,\n totalAmount,\n isReverseType,\n children,\n className,\n colors,\n isInnerLine,\n radius = 59,\n strokeWidth = 2,\n innerLineStrokeWidth = 2,\n testId = \"circle-progress-bar\",\n}) => {\n const circumference = Math.round(2 * Math.PI * radius);\n const amountProgress =\n amount < totalAmount ? Math.round((amount / totalAmount) * 100) : 100; //%\n const defaultColors = {\n start: \"#6b81dd\",\n finish: \"#f06d8d\",\n meter: \"#ffcad6\",\n };\n\n const [strokeDashoffset, setStrokeDashoffset] = useState(isReverseType ? String(0) : circumference);\n\n useEffect(() => {\n setStrokeDashoffset(circumference - (circumference * amountProgress) / 100);\n }, [amountProgress]);\n\n return (\n <div\n data-testid={testId}\n className={cn(\"limit-progress-bar\", { \"limit-progress-bar--reverse\": isReverseType }, className)}\n >\n <svg\n className=\"limit-progress-bar__progress\"\n width=\"124\"\n height=\"124\"\n viewBox=\"0 0 124 124\"\n >\n <defs>\n {isReverseType ? (\n <linearGradient\n id=\"limit-progress-bar-linear-gradient-reverse\"\n x1=\"0\"\n y1=\"1\"\n x2=\"0\"\n y2=\"0\"\n >\n <stop\n offset=\"0\"\n stopColor={colors.finish || defaultColors.finish}\n />\n <stop\n offset=\"1\"\n stopColor={colors.start || defaultColors.start}\n />\n </linearGradient>\n ) : (\n <linearGradient\n id=\"limit-progress-bar-linear-gradient\"\n x1=\"0\"\n y1=\"1\"\n x2=\"0\"\n y2=\"0\"\n >\n <stop\n offset=\"0\"\n stopColor={colors.start || defaultColors.start}\n />\n <stop\n offset=\"1\"\n stopColor={colors.finish || defaultColors.finish}\n />\n </linearGradient>\n )}\n </defs>\n <circle\n className=\"limit-progress-bar__meter\"\n cx={radius}\n cy={radius}\n r={radius}\n stroke={!isInnerLine ? \"\" : colors.meter || defaultColors.meter}\n strokeWidth={String(innerLineStrokeWidth)}\n />\n <circle\n className=\"limit-progress-bar__value\"\n cx={radius}\n cy={radius}\n r={radius}\n strokeWidth={String(strokeWidth)}\n stroke={`url(#limit-progress-bar-linear-gradient${isReverseType ? \"-reverse\" : \"\"})`}\n style={{\n strokeDasharray: circumference,\n strokeDashoffset,\n }}\n />\n </svg>\n <div className=\"limit-progress-bar__content\">{children}</div>\n </div>\n );\n};\n\nexport default CircleProgressBar;\n", "import type { IDateTimeProps } from './DateTime.interface';\nimport cn from 'classnames';\nimport moment from 'moment-timezone';\nimport React, { useMemo } from 'react';\nimport './DateTime.scss';\n\nconst RC = 'date-time';\n\nconst DEFAULT_DATE_FORMAT = 'DD.MM.YYYY';\nconst DEFAULT_TIME_FORMAT = 'HH:mm:ss';\n\nconst DateTime: React.FC<IDateTimeProps> = ({\n className,\n value,\n valueFormat,\n dateFormat: inputDateFormat,\n timeFormat: inputTimeFormat,\n isNoDate,\n isNoTime,\n testId = 'date-time',\n}) => {\n const dateFormat = inputDateFormat ?? DEFAULT_DATE_FORMAT;\n const timeFormat = inputTimeFormat ?? DEFAULT_TIME_FORMAT;\n\n const date = useMemo(() => {\n return (valueFormat ? moment(value, valueFormat) : moment(value)).format(\n dateFormat,\n );\n }, [value, valueFormat, dateFormat]);\n\n const time = useMemo(() => {\n return (valueFormat ? moment(value, valueFormat) : moment(value)).format(\n timeFormat,\n );\n }, [value, valueFormat, timeFormat]);\n\n return (\n <div data-testid={testId} className={cn(RC, className)}>\n {!isNoDate && (\n <span data-testid={`${testId}-date`} className={`${RC}__date`}>\n {date}\n </span>\n )}\n {!isNoTime && (\n <span\n data-testid={`${testId}-time`}\n className={cn(`${RC}__time`, {\n [`${RC}_color--pause`]: !isNoDate,\n })}\n >\n {time}\n </span>\n )}\n </div>\n );\n};\n\nexport default DateTime;\n", "import type { ReactNode } from 'react';\nimport cn from 'classnames';\nimport React, { useState } from 'react';\nimport { ChevronDown, ChevronUp } from 'react-feather';\nimport './DebugContainer.scss';\n\nexport interface DebugContainerProps {\n data?: Record<string, any>;\n children?: ReactNode;\n className?: string;\n}\n\nconst defaultData: Record<string, any> = {};\nconst DebugContainer: React.FC<DebugContainerProps> = ({ data = defaultData, children, className }) => {\n const [isVisible, setIsVisible] = useState<boolean>(true);\n\n const renderData = (): JSX.Element => (\n <pre>\n {'{\\n'}\n {Object.keys(data).map(key => ` ${key}: ${String(data[key])},\\n`)}\n {'}'}\n </pre>\n );\n\n return (\n <div className={cn('debug-container', className)} data-testid=\"debug-container\">\n {isVisible && (\n <div className=\"debug-container__body\">\n <h5>Debug:</h5>\n {data && Object.keys(data).length > 0 && (\n <div className=\"debug-container__body-row\" data-testid=\"debug-data\">{renderData()}</div>\n )}\n {children && (\n <div className=\"debug-container__body-row\" data-testid=\"debug-children\">{children}</div>\n )}\n </div>\n )}\n <div\n className=\"debug-container__toggler\"\n onClick={() => setIsVisible(v => !v)}\n data-testid=\"debug-toggler\"\n >\n {isVisible ? <ChevronUp /> : <ChevronDown />}\n </div>\n </div>\n );\n};\n\nexport default DebugContainer;\n", "import { useState } from 'react';\nimport DebugContainer from './DebugContainer';\n\nexport interface UseDebugContainer {\n debugData: Record<string, any>;\n setDebugData: React.Dispatch<React.SetStateAction<Record<string, any>>>;\n renderDebugContainer: JSX.Element;\n}\n\nfunction useDebugContainer(): UseDebugContainer {\n const [data, setData] = useState<Record<string, any>>({});\n\n return {\n debugData: data,\n setDebugData: setData,\n renderDebugContainer: <DebugContainer data={data} />,\n };\n}\n\nexport default useDebugContainer;\n", "import type { IDoubleStringProps } from './DoubleString.interface';\n\nimport cn from 'classnames';\nimport moment from 'moment';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { Eye, EyeOff } from 'react-feather';\n\nimport './DoubleString.scss';\n\nconst RC = 'double-string';\n\nconst DoubleString: React.FC<IDoubleStringProps> = ({\n value,\n description,\n subDescription,\n valuePostfix,\n className,\n testId = 'double-string',\n isFormatValueToDate,\n isUseOnClick,\n dateFormatSettings: {\n parseFormat = 'MM.DD.YYYY',\n displayFormat = 'MM.DD.YYYY',\n } = {},\n revert = false,\n noTitle,\n isUseHideMode = false,\n isShowHiddenValueAvailable = false,\n}) => {\n const [isValueHidden, setIsValueHidden] = useState(isUseHideMode);\n\n const computedValue = isFormatValueToDate ? moment(value, parseFormat).format(displayFormat) : value;\n\n const valueRef = useRef<HTMLParagraphElement | null>(null); ;\n const descriptionRef = useRef<HTMLParagraphElement | null>(null);\n\n const [elemsWidth, setElemsWidth] = useState({\n valueWidth: 0,\n descriptionWidth: 0,\n });\n const [isOnClickON, setIsOnClickON] = useState(false);\n\n const handle = {\n click: () => {\n setIsOnClickON(!isOnClickON);\n },\n };\n\n useEffect(() => {\n const valueWidth = valueRef?.current?.clientWidth ?? 0;\n const descriptionWidth = descriptionRef?.current?.clientWidth ?? 0;\n\n setElemsWidth({ valueWidth, descriptionWidth });\n }, [descriptionRef, valueRef]);\n\n return (\n <div data-testid={testId} className={cn(RC, className)}>\n <p\n onClick={() => handle.click()}\n ref={valueRef}\n className={cn(\n `${RC}__value`,\n {\n 'double-string--value-opened': isOnClickON && isUseOnClick,\n },\n { pointer: isUseOnClick },\n )}\n title={!noTitle && elemsWidth.valueWidth > 99 ? computedValue : ''}\n >\n {!revert\n ? (\n <>\n {isUseHideMode ? <span>{!isValueHidden ? computedValue : '*********'}</span> : computedValue}\n {isUseHideMode && isShowHiddenValueAvailable && isValueHidden && <Eye data-testid=\"double-string-eye\" className={`${RC}__hide-mode-icon`} onClick={() => setIsValueHidden(false)} />}\n {isUseHideMode && isShowHiddenValueAvailable && !isValueHidden && <EyeOff data-testid=\"double-string-eyeoff\" className={`${RC}__hide-mode-icon`} onClick={() => setIsValueHidden(true)} />}\n {valuePostfix && (\n <span className={cn(`${RC}__value-postfix`)}>{valuePostfix}</span>\n )}\n </>\n )\n : (\n description\n )}\n </p>\n\n <p\n ref={descriptionRef}\n className={cn(`${RC}__description`)}\n title={!noTitle && elemsWidth.descriptionWidth > 99 ? computedValue : ''}\n >\n {!revert\n ? (\n description\n )\n : (\n <>\n {computedValue}\n {valuePostfix && (\n <span className={cn(`${RC}__value-postfix`)}>{valuePostfix}</span>\n )}\n </>\n )}\n </p>\n {subDescription && (\n <p className={cn(`${RC}__sub-description`)}>\n {subDescription}\n </p>\n )}\n </div>\n );\n};\n\nexport default DoubleString;\n", "import type { IDoubleStringProps } from './DoubleString.interface';\nimport DoubleString from './DoubleString';\n\nexport type { IDoubleStringProps };\nexport default DoubleString;\n", "/* eslint-disable react-web-api/no-leaked-event-listener */\n/* eslint-disable react-dom/no-missing-button-type */\nimport type { ReactNode } from 'react';\nimport type { IHintProps } from './Hint.interface';\n\nimport cn from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { AlertTriangle, HelpCircle } from 'react-feather';\n\nimport { capitalized } from '../../../Functions/utils';\nimport { HelpCircleFilled } from '../../../Molecular/CustomIcons';\n\nimport Spinner from '../../Layout/Spinner/Spinner';\n\nimport { I_AM_OPENED_EVENT_NAME, I_AM_OPENED_EVENT_OPTIONS } from './partials/_constants';\nimport { getHintContainer, HandleClickOutsideObj, HandleScrollObj, initHintContainer } from './partials/_utils';\n\nimport './Hint.scss';\n\n// \u0413\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0439 \u043C\u0430\u043F \u0434\u043B\u044F \u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F \u0442\u0430\u0439\u043C\u0435\u0440\u043E\u0432 \u043F\u043E hintId\nconst hintTimeoutMap = new Map<string, NodeJS.Timeout>();\n\nlet isContentHoveredOuter = false;\n\nconst DEFAULT_EMPTY_OBJ = {} as IHintProps['hintContainer'];\n\nfunction DEFAULT_VOID_FN(): void {}\n\ninterface IIAmOpenedDetails {\n hintId: string;\n}\n\nconst Hint: React.FC<IHintProps> = ({\n hint,\n side = 'right',\n className,\n hintContainer = DEFAULT_EMPTY_OBJ,\n label = '',\n variant = 'filled',\n handleOpenType = 'click',\n onClickCallback,\n onOpenChange = DEFAULT_VOID_FN,\n key,\n id,\n children,\n icon,\n isAccessability = false,\n testId = 'hint',\n isHoverableContent = false,\n isLoading,\n isCloseOnChildrenClick = false,\n}) => {\n const hintRef = useRef(null);\n const [hintId] = useState<string>(id ?? key ?? Math.random().toString(16).slice(2));\n const [iAmOpenedOptions] = useState<Record<string, any>>({ ...I_AM_OPENED_EVENT_OPTIONS, detail: { hintId } });\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [isStyleComputed, setIsStyleComputed] = useState<boolean>(false);\n\n // ? \u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C handleScroll-\u0441\u0442\u0435\u0439\u0442, \u0447\u0442\u043E\u0431\u044B \u043D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u043C\u0435\u043D\u044F\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0443 \u0442\u0435\u043C \u0441\u0430\u043C\u044B\u043C \u0433\u0430\u0440\u0430\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u0443\u044E \u0440\u0430\u0431\u043E\u0442\u0443 removeEventListener.\n // ? \u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u0443\u0435\u043C \u0441\u0442\u0435\u0439\u0442 \u0432\u044B\u0437\u043E\u0432\u043E\u043C \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u0430 HandleScrollObj, \u043F\u0435\u0440\u0435\u0434\u0430\u0435\u043C setIsOpen \u0434\u043B\u044F \u0437\u0430\u043F\u0438\u0441\u0438 \u0432 \u043E\u0431\u044A\u0435\u043A\u0442.\n const [handleScroll] = useState(new (HandleScrollObj as any)(setIsOpen));\n // ? \u041F\u043E \u0430\u043D\u0430\u043B\u043E\u0433\u0438\u0438 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C handleClickOutside\n const [handleClickOutside] = useState(new (HandleClickOutsideObj as any)(hintId, setIsOpen));\n\n const isCallbackExist: boolean = typeof onClickCallback === 'function';\n\n const handle = {\n onMouseEnter: (): void => {\n const existing = hintTimeoutMap.get(hintId);\n if (existing) clearTimeout(existing);\n\n if (handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n setIsOpen(true);\n !isOpen && onClickCallback?.();\n\n // ? (FIN-10491) \u0418\u0434\u0435\u044F \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F:\n // ? \u041B\u044E\u0431\u043E\u0439 hint \u043A\u0430\u043A \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u043D \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F \"\u0448\u0438\u0440\u043E\u043A\u043E\u0432\u0435\u0449\u0430\u0442\u0435\u043B\u044C\u043D\u043E \u043E\u0440\u0451\u0442\" - \"\u044F \u043E\u0442\u043A\u0440\u044B\u0442!\"\n // ? \u0418, \u0432 \u0441\u0432\u043E\u044E \u043E\u0447\u0435\u0440\u0435\u0434\u044C, \u043B\u044E\u0431\u043E\u0439 hint \u0441\u043B\u0443\u0448\u0430\u0435\u0442 \"\u0448\u0438\u0440\u043E\u043A\u043E\u0432\u0435\u0449\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043E\u0440\" \u0438 \u043A\u0430\u043A \u0443\u0441\u043B\u044B\u0448\u0438\u0442 \"\u0434\u0443\u043C\u0430\u0435\u0442\" - \"\u0430 \u044D\u0442\u043E \u043D\u0435 \u044F \u043B\u0438 \u0441\u043B\u0443\u0447\u0430\u0439\u043D\u043E \u043E\u0442\u043A\u0440\u044B\u0442?\".\n // ? \u0415\u0441\u043B\u0438 \u041D\u0415 \u043E\u043D, \u0442\u043E \u0442\u043E\u0433\u0434\u0430 \u043E\u043D \u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F\n\n // ? \u0412 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \"\u0448\u0438\u0440\u043E\u043A\u043E\u0432\u0435\u0449\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0433\u043E \u043E\u0440\u0430\" \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0441\u0438\u0441\u0442\u0435\u043C\u0443:\n // ? - \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0438\u043C \u043D\u0430 \"\u0441\u0435\u0431\u0435\" \u0412\u0421\u041F\u041B\u042B\u0412\u0410\u042E\u0429\u0418\u0419 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0439 \u0438\u0432\u0435\u043D\u0442\n // ? - \u043D\u043E \u0447\u0442\u043E\u0431\u044B \"\u0441\u043B\u044B\u0448\u0430\u0442\u044C \u0433\u043E\u043B\u043E\u0441\u0430\" \u0432\u0441\u0435\u0445 \u0445\u0438\u043D\u0442\u043E\u0432 \"\u0441\u043B\u0443\u0448\u0430\u0435\u043C\" \u043D\u0430 \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0439 \u0442\u043E\u0447\u043A\u0435 \u0432\u0441\u043F\u043B\u044B\u0442\u0438\u044F (\u0442.\u0435. \u043D\u0430 document)\n // @ts-ignore\n hintRef.current?.dispatchEvent?.(new CustomEvent(I_AM_OPENED_EVENT_NAME, iAmOpenedOptions));\n }, 350);\n hintTimeoutMap.set(hintId, timer);\n }\n },\n onMouseLeave: (): void => {\n const existing = hintTimeoutMap.get(hintId);\n if (existing) clearTimeout(existing);\n\n if (!isHoverableContent && handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n setIsOpen(false);\n hintTimeoutMap.delete(hintId);\n }, 1000);\n hintTimeoutMap.set(hintId, timer);\n }\n else if (isHoverableContent && handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n if (!isContentHoveredOuter) {\n setIsOpen(false);\n }\n hintTimeoutMap.delete(hintId);\n }, 100);\n hintTimeoutMap.set(hintId, timer);\n }\n },\n onMouseLeaveHoverableContent: (): void => {\n const existing = hintTimeoutMap.get(hintId);\n if (existing) clearTimeout(existing);\n\n if (isHoverableContent && handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n setIsOpen(false);\n isContentHoveredOuter = false;\n hintTimeoutMap.delete(hintId);\n }, 100);\n hintTimeoutMap.set(hintId, timer);\n }\n },\n onClick: isCloseOnChildrenClick ? (): void => setIsOpen(false) : (): void => {},\n };\n\n const getHintMarkUp = (className: string | undefined): ReactNode => {\n return (\n <div\n data-testid=\"test-hint-text\"\n className={cn('hint__text', `hint__text_${side}`, `hint--${className}__text`)}\n onMouseEnter={(): void => {\n if (isHoverableContent) isContentHoveredOuter = true;\n }}\n onMouseLeave={isHoverableContent ? handle.onMouseLeaveHoverableContent : undefined}\n onClick={handle.onClick}\n style={{ visibility: isStyleComputed ? 'visible' : 'hidden' }}\n >\n {isLoading && <Spinner size=\"small\" />}\n {hint}\n {children}\n </div>\n );\n };\n\n const setHintContainerStyles = (): void | boolean => {\n const hc = getHintContainer(hintId);\n\n if (!hc || !isOpen) return false;\n\n const { width = 0, top = 0, left = 0 } = hintRef?.current !== null ? (hintRef?.current as HTMLElement)?.getBoundingClientRect() : {};\n const { addWidth, addLeft, addTop } = hintContainer ?? {};\n const windowInnerWidth = document.documentElement.clientWidth;\n const windowInnerHeight = document.documentElement.clientHeight;\n\n const sw = hc.getElementsByClassName('hint__text')[0];\n const { width: swWidth, height: swHeight } = sw?.getBoundingClientRect() || {};\n\n hc.style.width = isOpen ? ((addWidth && !Number.isNaN(+addWidth) ? +addWidth : 0) + width)?.toString().concat('px') : '0';\n hc.style.left = isOpen ? ((addLeft && !Number.isNaN(+addLeft) ? +addLeft : 0) + left)?.toString().concat('px') : '0';\n hc.style.top = isOpen ? ((addTop && !Number.isNaN(+addTop) ? +addTop : 0) + top)?.toString().concat('px') : '0';\n hc.style.maxHeight = isOpen ? swHeight?.toString().concat('px') : '0';\n\n // ? \u0411\u0430\u0437\u043E\u0432\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E\u0433\u0440\u0435\u0448\u043D\u043E\u0441\u0442\u0438\n // ? \u0412 \u0440\u0430\u0437\u043D\u044B\u0445 \u0441\u0432\u0438\u0442\u0447-\u043A\u0435\u0439\u0441\u0430\u0445 \u043C\u043E\u0436\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043F\u043E \u0440\u0430\u0437\u043D\u043E\u043C\u0443 (\u0432\u0441\u044F \u0438\u043B\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043D\u043E). \u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u043B \"\u043D\u0430 \u0433\u043B\u0430\u0437\u043E\u043A\"\n const INACCURACY = 20;\n switch (side) {\n case 'top':\n case 'centeredTop':\n if (top - swHeight - (INACCURACY / 2) < 0) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add(`hint__text_${side === 'top' ? 'bottom' : 'centeredBottom'}`);\n }\n break;\n\n case 'bottom':\n case 'centeredBottom':\n if (top + swHeight + INACCURACY > windowInnerHeight) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add(`hint__text_${side === 'bottom' ? 'top' : 'centeredTop'}`);\n }\n break;\n\n case 'left':\n if (left - swWidth - (INACCURACY / 2) < 0) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add('hint__text_right');\n }\n break;\n\n case 'right':\n default:\n if (left + width + swWidth + (INACCURACY / 2) > windowInnerWidth) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add('hint__text_left');\n }\n break;\n }\n\n setIsStyleComputed(true);\n };\n\n const renderHintContainer = (className: string | undefined): React.ReactPortal | null => {\n const hc = getHintContainer(hintId);\n if (!hc) return null;\n return createPortal(getHintMarkUp(className), hc);\n }\n\n useEffect(() => {\n initHintContainer(hintId, hintContainer);\n\n // ? useEffect \u043F\u043E \u043D\u0443\u043B\u0435\u0432\u043E\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442\u0441\u044F 1 \u0440\u0430\u0437, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0441\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u043A\u043E\u043B\u0431\u0435\u043A \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0441\u044F\n const iAmOpenedCallback = (ev: Event): CustomEvent<IIAmOpenedDetails> => {\n const event = ev as CustomEvent<IIAmOpenedDetails>;\n if (event?.detail?.hintId !== hintId) {\n setIsOpen(false);\n const timer = hintTimeoutMap.get(hintId);\n if (timer) {\n clearTimeout(timer);\n hintTimeoutMap.delete(hintId);\n }\n }\n return event;\n };\n\n if (hintRef.current) {\n // ? \u0423\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u043C \u043F\u0440\u043E\u0441\u043B\u0443\u0448\u043A\u0443 \u043D\u0430 \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0439 \u0442\u043E\u0447\u043A\u0435 \u0432\u0441\u043F\u043B\u044B\u0442\u0438\u044F\n document.addEventListener(I_AM_OPENED_EVENT_NAME, iAmOpenedCallback);\n }\n\n return () => {\n document.removeEventListener(I_AM_OPENED_EVENT_NAME, iAmOpenedCallback);\n const timer = hintTimeoutMap.get(hintId);\n if (timer) {\n clearTimeout(timer);\n hintTimeoutMap.delete(hintId);\n }\n };\n }, []);\n\n useEffect(() => {\n setIsStyleComputed(false);\n setHintContainerStyles();\n onOpenChange?.(isOpen);\n\n if (isOpen) {\n document.addEventListener('scroll', handleScroll, true);\n document.addEventListener('click', handleClickOutside, true);\n }\n else {\n document.removeEventListener('scroll', handleScroll, true);\n document.removeEventListener('click', handleClickOutside, true);\n }\n\n return () => {\n const timer = hintTimeoutMap.get(hintId);\n if (timer) {\n clearTimeout(timer);\n hintTimeoutMap.delete(hintId);\n }\n };\n }, [isOpen]);\n\n return (\n <div data-testid={testId} className={cn('hint', className)} ref={hintRef}>\n <button\n tabIndex={isAccessability ? 0 : -1}\n data-testid={typeof label === 'string' && label.length ? label.replace?.(/\\s/g, '-') : `${testId}--button`}\n aria-label={isAccessability && typeof label === 'string' ? label : ''}\n onClick={() =>\n handleOpenType === 'click'\n && (isCallbackExist ? onClickCallback?.() : setIsOpen(!isOpen))}\n onMouseEnter={handle.onMouseEnter}\n onMouseLeave={handle.onMouseLeave}\n className={cn('hint__button', { hint__button_active: isOpen })}\n >\n {icon || icon === null || (\n <>\n {variant === 'outlined' && <HelpCircle width={16} height={16} className=\"hint__icon outlined\" />}\n {variant === 'filled' && <HelpCircleFilled className=\"hint__icon filled\" />}\n {variant === 'warning' && (\n <AlertTriangle className=\"hint__icon\" color=\"#F06D8D\" width={16} height={16} />\n )}\n </>\n )}\n\n {label && (\n <span className={cn('hint__label', { 'color--primary': isOpen })}>\n {typeof label === 'string' ? capitalized(label) : label}\n </span>\n )}\n </button>\n\n {isOpen && renderHintContainer(className)}\n </div>\n );\n}\n\nexport default Hint;\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function HelpCircleFilled(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={16}\n height={16}\n fill=\"none\"\n {...props}\n >\n <path\n fill=\"#9AA0B9\"\n d=\"M8 14.667A6.667 6.667 0 1 0 8 1.333a6.667 6.667 0 0 0 0 13.334Z\"\n />\n <path\n stroke=\"#fff\"\n d=\"M6.06 6a2 2 0 0 1 3.887.667c0 1.333-2 2-2 2M8 11.333h.006\"\n />\n </svg>\n )\n}\n", "export const I_AM_OPENED_EVENT_NAME = 'hint:i-am-open';\nexport const I_AM_OPENED_EVENT_OPTIONS = {\n bubbles: true,\n cancelable: true,\n composed: false,\n};\n", "export const getHintContainerId = (hintId: string | number): string => `hint-container-for-hint--id-${hintId}`;\n\nexport function getHintContainer(hintId: string | number): HTMLElement | null {\n return document.getElementById(getHintContainerId(hintId));\n}\n\nexport function getParentNode(): HTMLElement | null {\n return (\n document.querySelector('div#root')\n ?? document.querySelector('div#app')\n ?? document.body\n );\n}\n\nexport function initHintContainer(hintId: string | number, hintContainerSettings: any): void {\n const { className } = hintContainerSettings;\n const hintContainer = document.createElement('div');\n\n hintContainer.setAttribute('id', getHintContainerId(hintId));\n hintContainer.classList.add('hint__container');\n if (className) hintContainer.classList.add(className);\n\n getParentNode()?.append(hintContainer);\n}\n\n// ? addEventListener \u043C\u043E\u0436\u043D\u043E \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0434\u0432\u0443\u043C\u044F \u0441\u043F\u043E\u0441\u043E\u0431\u0430\u043C\u0438\n// ? - \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u043F\u0440\u044F\u043C\u043E\u0439 \u043A\u043E\u043B\u0431\u044D\u043A (\u0444-\u044E)\n// ? - \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 \u0432 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u0435\u0441\u0442\u044C \u043C\u0435\u0442\u043E\u0434 handleEvent (\u043F\u043E\u043C\u0438\u043C\u043E handleEvent \u043C\u043E\u0436\u043D\u043E \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432 this \u043F\u0440\u043E\u0447\u0438\u0435 \u043F\u043E\u043B\u0435\u0437\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F)\n// ? \u041F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u0441\u044F \u0432\u0442\u043E\u0440\u044B\u043C \u0441\u043F\u043E\u0441\u043E\u0431\u043E\u043C, \u0447\u0442\u043E\u0431\u044B \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 (\u0432\u043E\u043E\u0431\u0449\u0435 \u043C\u043E\u0436\u043D\u043E \u043D\u0435 \u043F\u0438\u0441\u0430\u0442\u044C, \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0438 \u043F\u0440\u043E\u0441\u0442\u043E \u043E\u0442 \u0437\u0430\u043C\u044B\u043A\u0430\u043D\u0438\u044F, \u043D\u043E \u0434\u0435\u043B\u0430\u0435\u043C \u043F\u043E \"\u0434\u0437\u0435\u043D\u0443\")\n// ! \u041C\u0435\u0442\u043E\u0434 \u043D\u0430\u043F\u0438\u0441\u0430\u043D \u0441 \u0440\u0430\u0441\u0447\u0435\u0442\u043E\u043C \u043D\u0430 \u0442\u043E, \u0447\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u0422\u041E\u041B\u042C\u041A\u041E \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u043C \u0442\u0443\u043B\u0442\u0438\u043F\u043E\u043C\nexport function HandleScrollObj(this: any, setIsOpen: (isOpen: boolean) => void): void {\n this.setIsOpen = setIsOpen;\n this.handleEvent = function () {\n this.setIsOpen(false);\n };\n}\n\nexport function HandleClickOutsideObj(this: any, id: string | number, setIsOpen: (isOpen: boolean) => void): void {\n this.id = id;\n this.setIsOpen = setIsOpen;\n this.handleEvent = function (event: Event) {\n if (getHintContainer(this.id)) {\n if (!(getHintContainer(this.id) as HTMLElement).contains(event?.target as Node)) {\n this.setIsOpen(false);\n }\n }\n };\n}\n", "import type { IHintProps } from './Hint.interface';\nimport Hint from './Hint';\n\nexport default Hint;\nexport type { IHintProps };\n", "import type { ReactElement, RefObject } from 'react';\nimport type { ISuspendProcessing } from '../../../Functions/useKeyPress/useKeyPress';\nimport type TWithEventManagementAsObj from '../../../types/declaration/TWithEventManagementAsObj';\nimport type { IModalProps } from './Modal.interface';\n\nimport cn from 'classnames';\nimport { useEffect, useLayoutEffect, useMemo, useRef } from 'react';\n\nimport useHandleKeyPress from '../../../Functions/useKeyPress/useHandleKeyPress';\nimport { getIsOnlyAnObject } from '../../../Functions/utils';\nimport Button from '../Button/Button';\n\nimport { EVENTS } from './partials/_constants';\n\nimport { getOnKeyPress, getWithEventManagementStructure } from './partials/_utils';\nimport ModalFooter from './partials/ModalFooter';\nimport ModalTitle from './partials/ModalTitle';\n\nimport useMobileModal from './partials/useMobileModal';\nimport './Modal.scss';\nimport './ModalMobile.scss';\n\nconst attrsForModalBodyDefault = {}\nexport const KEY_CODE = Object.freeze({\n ENTER: 13,\n ESC: 27,\n} as const);\n\nexport function renderModalTitle({\n mode,\n title,\n onlyTitle,\n}: {\n mode?: string;\n title: string;\n onlyTitle?: boolean;\n}): string {\n if (mode && mode !== 'default' && !onlyTitle) {\n return `${mode[0].toUpperCase()}${mode.slice(1)} ${title}`;\n }\n return title;\n}\n\nfunction Modal({\n ref,\n id,\n testId = 'modal',\n zIndex = 100,\n isOpen,\n onConfirm,\n onDecline,\n closeModal,\n className,\n variant = 'primary',\n size,\n mode,\n title,\n onlyTitle,\n atributesForModalBody = attrsForModalBodyDefault,\n confirmBtnClassName,\n confirmBtnLabel,\n confirmBtnVariant = 'primary',\n confirmBtnDisable,\n confirmBtnIcon,\n isConfirmBtnIconPositionRight,\n noConfirmBtn,\n forced,\n closeBtnClassName,\n closeBtnText,\n closeBtnVariant,\n closeBtnDisable,\n closeBtnIcon,\n btnClassNames,\n isCloseBtnIconPositionRight,\n noCloseBtn,\n noHeader,\n noHeaderCloseBtn,\n customHeader,\n declineBtnDisable,\n noFooter,\n customFooter,\n withFixedFooter,\n leftContentOfFooter,\n isSubmittingByEnter: isSubmittingByEnterOuter = true,\n isClosingByEsc: isClosingByEscOuter = true,\n withEventManagement = false,\n submitOnEnter,\n closeOnEsc,\n withMobileLogic,\n children,\n}: IModalProps & { ref?: React.RefObject<HTMLDivElement | null> }): ReactElement | null {\n const internalRef = useRef<HTMLDivElement | null>(null);\n const modalRef = ref || internalRef;\n\n // ? \u041F\u043E\u044F\u0441\u043D\u0435\u043D\u0438\u0435 \u0440\u0430\u0437\u043D\u0438\u0446\u044B \u043C\u0435\u0436\u0434\u0443 isSubmittingByEnter \u0438 confirmBtnDisable (\u0442\u043E\u0436\u0435 \u0441\u0430\u043C\u043E\u0435 \u0434\u043B\u044F isClosingByEsc \u0438 closeBtnDisable)\n // ? - isSubmittingByEnter \u043E\u0442\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0443 \u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440\u0430 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432, \u044D\u0442\u043E \u0441\u0442\u0430\u0442\u0438\u043A\u0430\n // ? (\u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440\u044B \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432 \u0441\u0442\u0430\u0432\u044F\u0442\u0441\u044F 1 \u0440\u0430\u0437, \u0432 useEffect \u043F\u043E \u043D\u0443\u043B\u0435\u0432\u043E\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438,\n // ? isSubmittingByEnter: false - \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u0435\u0433\u043E \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0443)\n // ? - confirmBtnDisable \u043F\u043E\u0434\u043C\u0435\u043D\u044F\u0435\u0442 onConfirm \u043D\u0430 \u0440\u0435\u0444\u043A\u0435, \u044D\u0442\u043E \u0434\u0438\u043D\u0430\u043C\u0438\u043A\u0430\n // ? (\u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D, \u0441\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u043F\u043E \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u043C \u0438\u0432\u0435\u043D\u0442\u0430\u043C \u0438\u0434\u0443\u0442, \u043D\u043E \u041D\u0415 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442\u0441\u044F onConfirm)\n const onConfirmRef = useRef(onConfirm);\n const closeModalRef = useRef(closeModal);\n const onDeclineRef = useRef(onDecline);\n\n // todo(vl) - \u043D\u0430 \u0441\u0442\u0430\u0440\u044B\u0445 \u043F\u0440\u043E\u043F\u0430\u0445 \u0438 \u0440\u0430\u043D\u044C\u0448\u0435 \u0434\u0435\u0444\u043E\u043B\u0442 \u0431\u044B\u043B true\n // todo(vl) - \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0434\u043B\u044F \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438 \u0441\u0442\u0430\u0440\u044C\u044F \u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u043E\u0442\u0441\u043B\u0435\u0436\u0438\u0432\u0430\u0442\u044C \u0437\u0430\u043F\u0440\u0435\u0442\u044B\n const isSubmittingByEnter = submitOnEnter === false\n ? false\n : isSubmittingByEnterOuter;\n\n const isClosingByEsc = closeOnEsc === false\n ? false\n : isClosingByEscOuter;\n\n // ! \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: withEventManagement \u0438 withEventManagementStructure \u041D\u0415 \u043E\u0434\u043D\u043E \u0438 \u0442\u043E\u0436\u0435!\n // ! withEventManagementStructure (\u0441\u043C\u043E\u0442\u0440\u0438 getWithEventManagementStructure \u0438 \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u044E)\n // ! - \u0442\u0443\u0442 \u0413\u0410\u0420\u0410\u041D\u0422\u0418\u0420\u041E\u0412\u0410\u041D\u041E \u0435\u0441\u0442\u044C \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B \u043F\u0440\u043E\u043F\u0441\u043E\u0432 \u0438\u0437 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0435\u0439 \u0432\u0435\u0442\u043A\u0438 InnerTypes (\u0443\u0436\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435);\n // ! - \u0442\u0443\u0442 \u043D\u0435\u0442 \u043D\u0438\u0447\u0435\u0433\u043E \u0438\u0437 ICommon\n const withEventManagementStructure = getWithEventManagementStructure(id, withEventManagement);\n const isUseAutoBlockingForHandlers = withEventManagementStructure.isWithSubmitAndCloseManagement;\n\n // ? \u0417\u0430\u0432\u044F\u0437\u0430\u043B \u0430\u0432\u0442\u043E\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u043A\u0443 \u043D\u0430 \u0438\u0432\u0435\u043D\u0442-\u043C\u0435\u043D\u0435\u0434\u0436\u043C\u0435\u043D\u0442 \u0434\u043B\u044F \"\u043C\u044F\u0433\u043A\u043E\u0433\u043E\" \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0430, \u0447\u0442\u043E\u0431\u044B \u043D\u0435\u0431\u044B\u043B\u043E \u0441\u044E\u0440\u043F\u0440\u0438\u0437\u043E\u043C \u043F\u043E \u0432\u0441\u0435\u043C \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u043C\n const isOnConfirmBlocked = typeof onConfirm === 'function' && isUseAutoBlockingForHandlers && confirmBtnDisable;\n const isCloseModalBlocked = typeof closeModal === 'function' && isUseAutoBlockingForHandlers && closeBtnDisable;\n const isOnDeclineBlocked = typeof onDecline === 'function' && isUseAutoBlockingForHandlers && declineBtnDisable;\n\n const {\n modalMobileHeaderRef,\n modalMobileBodyRef,\n modalMobileFooterRef,\n MODALS_LOGIC,\n renderModal,\n isMobile,\n scrollTop,\n scrollHeight,\n } = useMobileModal({\n withMobileLogic,\n withFixedFooter,\n isOpen,\n });\n\n // ? \u041B\u0443\u0447\u0448\u0435 \u0447\u0435\u043C useCallback, \u0442.\u043A.\n // ? - \u041D\u0415 \"\u0434\u0451\u0440\u0433\u0430\u0435\u0442\" \u0432\u0435\u0440\u0441\u0442\u043A\u0443 (\u0445\u043E\u0442\u044F \u043F\u043E \u0444\u0430\u043A\u0442\u0443 \u0440\u0435-\u0440\u0435\u043D\u0434\u0435\u0440 \u043F\u0440\u043E\u0438\u0437\u043E\u0439\u0434\u0435\u0442 \u0434\u043B\u044F useLayoutEffect-\u043E\u0432, \u043D\u043E \u0432 \u0448\u0435\u0434\u043E\u0443-\u0434\u043E\u043C\u0435 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0441\u044F)\n // ? - \u041D\u0415 \u0437\u0430\u043C\u044B\u043A\u0430\u0435\u0442 \u0432\u043D\u0435\u0448\u043D\u0438\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F (\u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u0435\u0442 useLayoutEffect)\n // ? - \u041D\u0415 \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440\u044B\n // ? \u0421\u0443\u0442\u044C \u043B\u043E\u0433\u0438\u043A\u0438: \"\u0438\u0434\u0438 \u043F\u043E \u044D\u0442\u043E\u0439 \u0441\u0441\u044B\u043B\u043A\u0435 \u0438 \u043F\u043E\u043F\u044B\u0442\u0430\u0439\u0441\u044F \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0442\u043E \u0447\u0442\u043E \u0442\u0430\u043C \u0435\u0441\u0442\u044C\",\n // ? \u0441\u0441\u044B\u043B\u043A\u0430 - \u043F\u0435\u0440\u043C\u0430\u043D\u0435\u043D\u0442\u043D\u0430\u044F, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0435 \u043C\u043E\u0436\u0435\u0442 \u043C\u0435\u043D\u044F\u0442\u044C\u0441\u044F \u043D\u0435\u0437\u0430\u043C\u0435\u0442\u043D\u043E \u0434\u043B\u044F \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0438\n const handle = useMemo(() => ({\n confirm: () => onConfirmRef.current?.(),\n close: () => closeModalRef.current?.(),\n\n decline: () => {\n if (typeof onDeclineRef.current === 'function') onDeclineRef.current();\n else closeModalRef.current?.();\n },\n }), []);\n\n // ? \u041E\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u043C \u043A\u043E\u043B\u0431\u0435\u043A\u0438, \u0447\u0435\u043A\u0430\u044E\u0449\u0438\u0435 \u0434\u043E\u043F. \u0443\u0441\u043B\u043E\u0432\u0438\u044F \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u0438\u0432\u0435\u043D\u0442\u043E\u0432.\n // ? \u042F \u043F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u044E, \u0447\u0442\u043E \u0432\u0430\u0436\u043D\u043E \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u044D\u0442\u0443 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0438\u043C\u0435\u043D\u043D\u043E \u0447\u0435\u0440\u0435\u0437 \u043A\u043E\u043B\u0431\u0435\u043A\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0431\u0443\u0434\u0443\u0442 \u0447\u0435\u043A\u0430\u0442\u044C \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F,\n // ? \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u041D\u0415 \u0441\u043F\u0440\u043E\u0432\u043E\u0446\u0438\u0440\u0443\u044E\u0442 \u0440\u0435\u0440\u0435\u043D\u0434\u0435\u0440 \u0434\u043B\u044F useCalbeck-\u043B\u043E\u0433\u0438\u043A\u0438, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u044C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0444\u043E\u0440\u043C\u044B \u043F\u0440\u044F\u043C\u043E \u0438\u0437 DOM\n // ? (\u0442.\u043A. \u044D\u0442\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u043C\u043E\u0434\u0430\u043B\u043A\u0438 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0435\u0442 \u043E \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F\u0445 \u0441\u0432\u043E\u0435\u0433\u043E \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0435\u0433\u043E \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430)\n const suspendProcessing = {\n // FIN-12482\n // ? \u0427\u0442\u043E\u0431\u044B \u041D\u0415 \u0437\u0430\u043C\u044B\u043A\u0430\u0442\u044C \u0440\u0435\u0444\u043A\u0443 \u043D\u0430 \u043C\u043E\u0434\u0430\u043B\u043A\u0443 \u0432 \u043B\u043E\u0433\u0438\u043A\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0442\u043E\u043C \u043F\u043E\u0438\u0441\u043A\u0430\u0442\u044C \u0432 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0435 \u0432\u0441\u0435 \u0442\u0435\u043A\u0441\u0442\u044D\u0440\u0438\u0430,\n // ? \u0447\u0442\u043E\u0431\u044B \u043E\u0446\u0435\u043D\u0438\u0442\u044C \u0435\u0441\u0442\u044C \u043B\u0438 \u0441\u0440\u0435\u0434\u0438 \u043D\u0438\u0445 \u0441\u0444\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0430\u044F - \u0434\u0435\u043B\u0430\u0435\u043C \u044D\u043B\u0435\u0413\u0410\u043D\u0442\u043D\u043E:\n // ? \u043E\u0446\u0435\u043D\u0438\u0432\u0430\u0435\u043C ev.target, \u0438 \u0435\u0441\u043B\u0438 target \u044D\u0442\u043E \u0442\u0435\u043A\u0441\u0442\u044D\u0440\u0438\u0430, \u0442\u043E \u0432\u043E\u0442 \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u043E \u043E\u043D\u0430 \u0438 \u0441\u0444\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u0430,\n // ? \u0442.\u0435 \u043D\u0443\u0436\u043D\u043E \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u044B \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0441 \u043D\u0430\u0436\u0430\u0442\u0438\u0435\u043C enter.\n Enter: (ev: globalThis.KeyboardEvent) => (ev?.target as HTMLElement)?.nodeName === 'TEXTAREA',\n\n // ? \u041A\u043E\u043B\u0431\u0435\u043A\u0438 \u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u044B, \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043D\u0443\u0436\u043D\u044B\u0435\n // Escape: (ev: globalThis.KeyboardEvent) => false,\n } as ISuspendProcessing;\n\n useHandleKeyPress({\n enterCallback: isSubmittingByEnter && typeof onConfirm === 'function' && !confirmBtnDisable ? handle.confirm : undefined,\n escCallback: isClosingByEsc && typeof closeModal === 'function' ? handle.close : undefined,\n withClamping: false,\n withEventManagementStructure: {\n isWithSubmitAndCloseManagement: confirmBtnDisable || withEventManagementStructure.isWithSubmitAndCloseManagement,\n },\n suspendProcessing,\n });\n\n useLayoutEffect(() => {\n onConfirmRef.current = isOnConfirmBlocked ? undefined : onConfirm;\n }, [onConfirm, isOnConfirmBlocked]);\n\n useLayoutEffect(() => {\n closeModalRef.current = isCloseModalBlocked ? undefined : closeModal;\n }, [closeModal, isCloseModalBlocked]);\n\n useLayoutEffect(() => {\n // ? \u041D\u0435\u043B\u044C\u0437\u044F \u0432\u044B\u0441\u0442\u0430\u0432\u0438\u0442\u044C undefined, \u0442.\u043A. \u0432 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0441\u044F closeModal (\u0441\u043C\u043E\u0442\u0440\u0438 handle.decline)\n onDeclineRef.current = isOnDeclineBlocked ? () => {} : onDecline;\n }, [onDecline, isOnDeclineBlocked]);\n\n // ? \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043D\u0430\u0436\u0430\u0442\u0438\u044F enter \u0438 esc \u043D\u0430 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u0430\u0445\n useEffect(() => {\n const outerTarget = getIsOnlyAnObject(withEventManagement)\n ? (withEventManagement as TWithEventManagementAsObj<'Modal'>).listenersTarget\n : undefined;\n const target = outerTarget ?? document;\n\n // ? useEffect \u043F\u043E \u043D\u0443\u043B\u0435\u0432\u043E\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F 1 \u0440\u0430\u0437, \u0430 \u0437\u043D\u0430\u0447\u0438\u0442 \u0441\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u043A\u043E\u043B\u0431\u0435\u043A \u041D\u0415 \u0438\u0437\u043C\u0435\u043D\u044F\u0442\u0441\u044F,\n // ? \u0430 \u0437\u043D\u0430\u0447\u0438\u0442 \u0441\u043D\u044F\u0442\u0438\u0435 \u0441\u043B\u0443\u0448\u0430\u0442\u0435\u043B\u044F \u043F\u0440\u043E\u0439\u0434\u0435\u0442 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\n const onKeyPress = getOnKeyPress({ id, onSubmit: handle.confirm, onClose: handle.close, suspendProcessing });\n\n if (withEventManagementStructure.isWithSubmitAndCloseManagement && !!onKeyPress) {\n if (isSubmittingByEnter) target.addEventListener(EVENTS.iGotAnEnterKeyPress.name, onKeyPress);\n if (isClosingByEsc) target.addEventListener(EVENTS.iGotAnEscKeyPress.name, onKeyPress);\n }\n\n return () => {\n if (withEventManagementStructure.isWithSubmitAndCloseManagement && !!onKeyPress) {\n if (isSubmittingByEnter) target.removeEventListener(EVENTS.iGotAnEnterKeyPress.name, onKeyPress);\n if (isClosingByEsc) target.removeEventListener(EVENTS.iGotAnEscKeyPress.name, onKeyPress);\n }\n }\n }, []);\n\n if (!isOpen) return null;\n\n return (\n <div\n id={`${id}`}\n style={{ zIndex }}\n data-testid={testId}\n className=\"modal-box j5\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={`${testId}-title`}\n >\n {renderModal(\n <>\n <div\n data-testid={`${testId}-overlay`}\n className={isOpen ? 'modal-overlay' : 'hidden'}\n onClick={handle.close}\n role=\"presentation\"\n />\n <div\n ref={modalRef as RefObject<HTMLDivElement>}\n style={{ width: typeof size === 'number' ? `${size}px` : `${size?.replace('px', '')}px` }}\n className={cn(className, {\n 'modal': isOpen,\n 'modal--no-header': isOpen && noHeader && !customHeader,\n 'modal-mobile': isOpen && isMobile,\n 'hidden': !isOpen,\n })}\n >\n {customHeader || (!noHeader && (\n <ModalTitle\n wrapperRef={modalMobileHeaderRef}\n className={cn({\n 'modal__header--hidden': MODALS_LOGIC.IS_HEADER_HIDDEN,\n 'modal__header--sticky': !MODALS_LOGIC.IS_HEADER_HIDDEN && MODALS_LOGIC.IS_HEADER_STICKY,\n })}\n variant={variant}\n isForced={forced}\n onClose={handle.close}\n noHeaderCloseBtn={noHeaderCloseBtn}\n >\n <span id={`${testId}-title`}>{renderModalTitle({ mode, title, onlyTitle })}</span>\n </ModalTitle>\n ))}\n\n <div\n {...atributesForModalBody}\n ref={modalMobileBodyRef}\n className={cn('modal__body', {\n 'modal__body--no-footer': noFooter,\n })}\n role=\"document\"\n >\n {children}\n </div>\n\n {(!noFooter || customFooter) && (\n <ModalFooter\n wrapperRef={modalMobileFooterRef}\n className={cn({\n 'modal__footer--hidden': MODALS_LOGIC.IS_FOOTER_HIDDEN,\n 'modal__footer--sticky':\n !MODALS_LOGIC.IS_FOOTER_HIDDEN\n && MODALS_LOGIC.IS_FOOTER_STICKY\n && scrollTop !== scrollHeight,\n 'modal__footer_with-left-content': leftContentOfFooter,\n })}\n >\n {customFooter || (\n <>\n {leftContentOfFooter}\n {(!noCloseBtn || !noConfirmBtn) && (\n <div className=\"modal__buttons-block\">\n {!noCloseBtn && (\n <Button\n testId=\"modal\"\n className={cn(closeBtnClassName, btnClassNames)}\n variant={closeBtnVariant || 'dark-outline'}\n onClick={handle.decline}\n label={closeBtnText || 'Cancel'}\n disabled={typeof onDecline === 'function' ? declineBtnDisable : closeBtnDisable}\n icon={closeBtnIcon}\n isIconRight={isCloseBtnIconPositionRight}\n tabIndex={1}\n aria-label=\"Close modal\"\n />\n )}\n {!noConfirmBtn && (\n <Button\n testId=\"modal\"\n onClick={handle.confirm}\n label={\n confirmBtnLabel\n || (mode && mode?.[0].toUpperCase() + mode?.slice(1))\n || 'Apply'\n }\n className={cn('ml5', confirmBtnClassName, btnClassNames)}\n variant={confirmBtnVariant}\n disabled={confirmBtnDisable}\n icon={confirmBtnIcon}\n isIconRight={isConfirmBtnIconPositionRight}\n aria-label=\"Confirm modal\"\n />\n )}\n </div>\n )}\n </>\n )}\n </ModalFooter>\n )}\n </div>\n </>,\n )}\n </div>\n );\n}\n\nModal.displayName = 'Modal';\n\nexport default Modal;\n", "import type TWithEventManagementAsObj from '../../types/declaration/TWithEventManagementAsObj';\nimport type { ISuspendProcessing } from './useKeyPress';\n\nimport { useEffect } from 'react';\nimport useKeyPress from './useKeyPress';\n\ninterface UseHandleKeyPressProps {\n /** Callback function to be called when Escape key is pressed */\n escCallback?: () => void;\n /** Callback function to be called when Enter key is pressed */\n enterCallback?: () => void;\n /** Whether to allow key repeat events */\n withClamping?: boolean;\n\n withEventManagementStructure?: TWithEventManagementAsObj<'Modal'>;\n\n /** Array of Keys (ev.key) to exclude from processing */\n suspendProcessing?: null | ISuspendProcessing;\n}\n\n/**\n * A hook that handles Enter and Escape key press events\n *\n * @param props - Configuration object for key press handling\n * @param props.escCallback - Function to be called when Escape key is pressed\n * @param props.enterCallback - Function to be called when Enter key is pressed\n * @param props.withClamping - Whether to allow key repeat events (default: true)\n * @param props.withEventManagementStructure - Structure for event management (e.g. Modal)\n * @param props.suspendProcessing - Optional map of key -> predicate to suspend processing for specific keys\n *\n * @example\n * ```tsx\n * function Component() {\n * useHandleKeyPress({\n * escCallback: () => console.log('Esc pressed'),\n * enterCallback: () => console.log('Enter pressed'),\n * });\n * }\n * ```\n */\nfunction useHandleKeyPress({\n escCallback,\n enterCallback,\n withClamping = true,\n withEventManagementStructure,\n suspendProcessing = null,\n}: UseHandleKeyPressProps): void {\n const { isWithSubmitAndCloseManagement } = withEventManagementStructure || {};\n\n const isPressEnter = useKeyPress('Enter', withClamping, isWithSubmitAndCloseManagement, suspendProcessing);\n const isPressEscape = useKeyPress('Escape', withClamping, isWithSubmitAndCloseManagement, suspendProcessing);\n\n useEffect(() => {\n if (!isWithSubmitAndCloseManagement && isPressEscape && typeof escCallback === 'function') {\n escCallback();\n }\n }, [isPressEscape, escCallback]);\n\n useEffect(() => {\n if (!isWithSubmitAndCloseManagement && isPressEnter && typeof enterCallback === 'function') {\n enterCallback();\n }\n }, [isPressEnter, enterCallback])\n}\n\nexport default useHandleKeyPress;\n", "import { useCallback, useEffect, useState } from 'react';\nimport { getIsOnlyAnObject } from '../utils';\n\n/**\n * A hook that detects when a specific key is pressed\n * @param targetKey - The key to listen for\n * @param clamping - Whether to allow key repeat events\n * @returns boolean indicating if the target key is currently pressed\n */\n\nexport interface ISuspendProcessing {\n [key: string]: (event: globalThis.KeyboardEvent) => boolean; // \u0412\u0435\u0440\u043D\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u041D\u0423\u0416\u041D\u041E \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443\n}\n\nexport function isISuspendProcessing(x: unknown): x is ISuspendProcessing {\n return getIsOnlyAnObject(x) && Object.values(x as Record<string, unknown>).every(v => typeof v === 'function');\n}\n\nfunction useKeyPress(\n targetKey: string,\n clamping: boolean = true,\n isForbidden?: boolean,\n suspendProcessing?: null | ISuspendProcessing,\n): boolean {\n const [keyPressed, setKeyPressed] = useState<boolean>(false);\n const safelySuspendProcessing = (isISuspendProcessing(suspendProcessing) ? suspendProcessing : {}) as ISuspendProcessing;\n\n const downHandler = useCallback(\n (event: globalThis.KeyboardEvent): void => {\n const { key, repeat, altKey, ctrlKey, shiftKey, metaKey } = event;\n const isPressingWithoutAuxiliaryKeys = !altKey && !ctrlKey && !shiftKey && !metaKey;\n\n if (key === targetKey && isPressingWithoutAuxiliaryKeys && !(safelySuspendProcessing[key]?.(event))) {\n if (!clamping && repeat) return;\n setKeyPressed(true);\n }\n },\n // ? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u044F\u0445 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0438\u043C\u0435\u043D\u043D\u043E \u0432\u0445\u043E\u0434\u043D\u043E\u0439 suspendProcessing,\n // ? \u0445\u043E\u0442\u044C \u0432 \u043A\u043E\u0434\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \"\u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u044B\u0439\"\n [clamping, targetKey, suspendProcessing],\n );\n\n const upHandler = useCallback(\n (event: globalThis.KeyboardEvent): void => {\n const { key, repeat, altKey, ctrlKey, shiftKey, metaKey } = event;\n const isPressingWithoutAuxiliaryKeys = !altKey && !ctrlKey && !shiftKey && !metaKey;\n\n if (key === targetKey && isPressingWithoutAuxiliaryKeys && !(safelySuspendProcessing[key]?.(event))) {\n if (!clamping && repeat) return;\n setKeyPressed(false);\n }\n },\n // ? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u044F\u0445 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0438\u043C\u0435\u043D\u043D\u043E \u0432\u0445\u043E\u0434\u043D\u043E\u0439 suspendProcessing,\n // ? \u0445\u043E\u0442\u044C \u0432 \u043A\u043E\u0434\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \"\u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u044B\u0439\"\n [clamping, targetKey, suspendProcessing],\n );\n\n useEffect(\n () => {\n const handleDown = (event: globalThis.KeyboardEvent): void => downHandler(event);\n const handleUp = (event: globalThis.KeyboardEvent): void => upHandler(event);\n\n if (!isForbidden) {\n window.addEventListener('keydown', handleDown);\n window.addEventListener('keyup', handleUp);\n }\n\n return () => {\n // ? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u041D\u0415 \u043E\u0431\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u044E if-\u043A\u043E\u0439:\n // ? \u043F\u0440\u0438 \u043F\u043E\u043F\u044B\u0442\u043A\u0435 \u0441\u043D\u044F\u0442\u044C \u0435\u0441\u043B\u0438 \u043D\u0435 \u0431\u044B\u043B\u043E \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u043E\u0448\u0438\u0431\u043A\u0438 \u043D\u0435 \u0431\u0443\u0434\u0435\u0442,\n // ? \u043D\u043E \u043F\u0440\u0438 \u044D\u0442\u043E\u043C \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E \u043E\u0442\u0440\u0430\u0431\u043E\u0442\u0435\u0442 \u043F\u0435\u0440\u0435\u0445\u043E\u0434 \u0438\u0437 isForbidden: false \u0432 isForbidden: true.\n window.removeEventListener('keydown', handleDown);\n window.removeEventListener('keyup', handleUp);\n };\n },\n // ? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u044F\u0445 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0438\u043C\u0435\u043D\u043D\u043E \u0432\u0445\u043E\u0434\u043D\u043E\u0439 suspendProcessing,\n // ? \u0445\u043E\u0442\u044C \u0432 \u043A\u043E\u0434\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \"\u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u044B\u0439\"\n [downHandler, upHandler, isForbidden, suspendProcessing],\n );\n\n return keyPressed;\n}\n\nexport default useKeyPress;\n", "// ? \u041E\u043F\u0446\u0438\u0438 \u0434\u043B\u044F \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0430 \u0438\u0432\u0435\u043D\u0442\u0430\nexport const DEFAULT_EVENT_OPTIONS = Object.freeze({\n bubbles: true,\n cancelable: true,\n composed: false,\n});\n\n// ? \u0412\u043E\u0437\u043C\u043E\u0436\u043D\u044B\u0435 \u043A\u043B\u044E\u0447\u0438 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432, \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u043E\u0442\u0440\u0435\u043D\u043D\u044B\u0445 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0435 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 (\u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0439 \u043D\u0435\u0439\u043C\u0438\u043D\u0433)\nexport enum ModalEventsInnerKeys {\n iGotAnEnterKeyPress = 'iGotAnEnterKeyPress',\n iGotAnEscKeyPress = 'iGotAnEscKeyPress',\n}\n\n/** \u0422\u0438\u043F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F ev.key (KeyboardEvent.key) \u2014 \u043F\u0440\u0438\u0432\u044F\u0437\u043A\u0430 \u043A \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u043E\u043C\u0443 \u0442\u0438\u043F\u0443, \u0431\u0435\u0437 \u0441\u0432\u043E\u0435\u0433\u043E union */\nexport type KeyboardEventKey = globalThis.KeyboardEvent['key'];\n\n// ? \u0418\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438\u0432\u0435\u043D\u0442\u0430 (\u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u043D\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E\u0431 \u0438\u0432\u0435\u043D\u0442\u0435)\nexport interface ICustomEvent<Key extends ModalEventsInnerKeys> {\n // ? \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0439 \u043A\u043B\u044E\u0447, \u0441\u043E\u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u0435 \u0441 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u043C \u043D\u0435\u0439\u043C\u0438\u043D\u0433\u043E\u043C\n innerKey: Key;\n // ? \u041F\u043E\u043B\u043D\u043E\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0438\u0432\u0435\u043D\u0442\u0430 (\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0430)\n // ? \u0414\u043B\u044F \u043F\u043E\u043B\u043D\u043E\u0433\u043E \u0438\u043C\u0435\u043D\u0438 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u043E\u0433\u043E \u0438\u0432\u0435\u043D\u0442\u0430 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0448\u0430\u0431\u043B\u043E\u043D:\n // ? '\u0443\u0441\u043B\u043E\u0432\u043D\u0430\u044F_\u0446\u0435\u043B\u044C_\u0438\u0432\u0435\u043D\u0442\u0430:\u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435_\u0442\u043E\u0433\u043E_\u0447\u0442\u043E_\u043F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u043E'\n // ? \u041D\u0430 \u0443\u0440\u043E\u0432\u043D\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u0430 \u043F\u043D\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u0430 EVENTS \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0430 (\u043A\u0430\u043A \u0438 \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0440),\n // ? \u0418 \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0438\u0442\u0441\u044F \u0431\u0443\u0434\u0443\u0442 \u0438\u0432\u0435\u043D\u0442\u044B \u043D\u0430 \u043C\u0430\u043D\u0435\u0440\u0443: dispatch(EVENTS.iGotAnEnterKeyPress.name, ...\u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0435_\u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u044B)\n name: string;\n // ? \u041D\u041E )) \u0435\u0441\u043B\u0438 \u043A\u043E\u043C\u0443\u0442\u043E \u043B\u0435\u043D\u044C, \u0442\u043E \u043C\u043E\u0436\u043D\u043E \u0432\u043E\u0441\u043F\u043E\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043A\u043E\u0442\u043E\u0442\u043A\u0438\u043C \u0438\u043C\u0435\u043D\u0435\u043D\u043C \u0438 \u043F\u0440\u043E\u043F\u0438\u0441\u0430\u0442\u044C \"\u0440\u0443\u043A\u0430\u043C\u0438\"\n // ? \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: dispatch('enterIsPressed', ...\u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0435_\u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u044B), \u0435\u0441\u043B\u0438 'enterIsPressed' \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 shortName \u043D\u0443\u0436\u043D\u043E\u0433\u043E \u0438\u0432\u0435\u043D\u0442\u0430\n // ? \u041D\u043E, \u043D\u0443\u0436\u043D\u043E \u043F\u043E\u043C\u043D\u0438\u0442\u044C, \u0447\u0442\u043E \u043D\u0430 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 (\u0443\u0440\u043E\u0432\u0435\u043D\u044C \u043B\u0438\u0431\u044B) \u0438\u0432\u0435\u043D\u0442 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0441\u0435-\u0440\u0430\u0432\u043D\u043E \u0441 \u043F\u043E\u043B\u043D\u044B\u043C \u0438\u043C\u0435\u043D\u0435\u043D\u043C (custonEvent.type),\n // ? \u0442\u0430\u043A \u043D\u0430\u043F\u0438\u0441\u0430\u043D \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0440\n shortName: string;\n\n // ? \u0418\u0434\u0435\u0442\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0434\u043B\u044F \u043C\u0435\u0445\u0430\u043D\u0438\u043A\u0438 suspendProcessing: \u043A\u043B\u044E\u0447 \u043A\u043E\u043B\u0431\u0435\u043A\u0430 \u0438\u0437 suspendProcessing \u0441 \u043A\u043E\u0442\u043E\u0440\u044B\u043C \u0441\u043E\u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0441\u044F \u044D\u0442\u043E\u0442 \u0438\u0432\u0435\u043D\u0442.\n // ? \u0417\u0430\u0432\u044F\u0437\u0430\u043B \u0431\u044B \u043C\u0435\u0445\u0430\u043D\u0438\u043A\u0443 suspendProcessing \u043D\u0430 \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u044E \u0438 \u043D\u0435\u0439\u043C\u0438\u043D\u0433 \u043E\u0442\u0441\u044E\u0434\u0430, \u043D\u043E \u0432\u044B\u043D\u0443\u0436\u0434\u0435\u043D \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044C \u0441\u0442\u0430\u0440\u044B\u0435 \u043C\u0435\u0445\u0430\u043D\u0438\u043A\u0438\n // ? (\u0432 \u0447\u0430\u0441\u0442\u043D\u043E\u0441\u0442\u0438 useKeyPress), \u0430 \u0442\u0430\u043C \u043A\u0430\u043A \u0431\u044B \u043D\u0435 \u043E\u0447\u0435\u043D\u044C \u043B\u043E\u0433\u0438\u0447\u043D\u043E \u044E\u0437\u0430\u0442\u044C \"\u043A\u0430\u043A\u0443\u044E-\u0442\u043E \u043B\u0435\u0432\u0443\u044E \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u044E\"\n // ? \u041D\u0430 \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u043C\u043E\u043C\u0435\u043D\u0442. \u0441\u0438\u0441\u0442\u0435\u043C\u0430 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432 \"\u0443\u043C\u0435\u0435\u0442\" \u043E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0442\u044C \u043D\u0430\u0436\u0430\u0442\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448 (enter \u0438 escape),\n // ? \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043B\u043E\u0433\u0438\u0447\u043D\u043E \u0432\u044B\u0431\u0440\u0430\u0442\u044C ev.key (\u043A\u043B\u044E\u0447 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 \u0432 \u0438\u0432\u0435\u043D\u0442\u0435 - KeyboardEventKey).\n // ? \u041D\u043E \u0432 \u0434\u0430\u043B\u044C\u043D\u0435\u0439\u0448\u0435\u043C \u0441\u0438\u0441\u0442\u0435\u043C\u0430 \u043C\u043E\u0436\u0435\u0442 \u0440\u0430\u0448\u0438\u0440\u044F\u0442\u044C\u0441\u044F \u0438 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0442\u044C\u0438\u0432\u0435\u043D\u0442\u044B \"\u043D\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u043D\u044B\u0435\", \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u0430\u0442\u0440\u0438\u0432\u0430\u044E \u043F\u0440\u043E\u0442\u043E \u0441\u0442\u0440\u0438\u043D\u0433\u043E\u0432\u043E\u0435 \u0432\u0435\u043B\u044C\u044E.\n middlewareKey: string | KeyboardEventKey;\n // ? \u041E\u043F\u0446\u0438\u0438 \u0434\u043B\u044F \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0430 \u0438\u0432\u0435\u043D\u0442\u0430, \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C DEFAULT_EVENT_OPTIONS, \u043C\u043E\u0436\u043D\u043E \u043F\u0440\u043E\u043F\u0438\u0441\u0430\u0442\u044C \u0441\u0432\u043E\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F\n options: EventInit;\n}\n\n/** \u041E\u0431\u044A\u0435\u043A\u0442, \u0443 \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E \u043A\u0430\u0436\u0434\u044B\u0439 \u043A\u043B\u044E\u0447 K \u0438\u0437 \u0435\u043D\u0430\u043C\u0430 \u0437\u0430\u0434\u0430\u0451\u0442 \u0442\u0438\u043F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F ICustomEvent<K> */\n// ? \u041E\u0431\u044A\u0435\u043A\u0442 \u0443 \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E\n// ? - \u043A\u043B\u044E\u0447\u0438 \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u0422\u041E\u041B\u042C\u041A\u041E \u0438\u0437 ModalEventsInnerKeys\n// ? - \u043A\u043B\u044E\u0447 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0437\u0430\u0434\u0430\u0435\u0442 \u043A\u043B\u044E\u0447 \u0434\u0436\u0435\u043D\u0435\u0440\u0438\u043A\u0430 ICustomEvent (\u0444\u0438\u043A\u0441\u0438\u0440\u0443\u0435\u043C \u043A\u043E\u043D\u043A\u0440\u0435\u0442\u043D\u044B\u0439 \u0438\u0432\u0435\u043D\u0442 \u0441 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u043C \u043D\u0435\u0439\u043C\u0438\u043D\u0433\u043E\u043C, \u0432 \u0438\u0432\u0435\u043D\u0442\u0435 - innerKey)\nexport type IConstantInfoAboutModalEvents<Keys extends ModalEventsInnerKeys> = { [K in Keys]: ICustomEvent<K> };\n\n// ? \u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0432\u0441\u0435\u0445 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432, \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u043E\u0442\u0440\u0435\u043D\u043D\u044B\u0445 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0435 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438.\nexport const EVENTS: IConstantInfoAboutModalEvents<ModalEventsInnerKeys> = Object.freeze({\n [ModalEventsInnerKeys.iGotAnEnterKeyPress]: {\n innerKey: ModalEventsInnerKeys.iGotAnEnterKeyPress,\n name: 'modal:i-got-an-enter-key-press',\n shortName: 'enterIsPressed',\n middlewareKey: 'Enter',\n options: DEFAULT_EVENT_OPTIONS,\n },\n [ModalEventsInnerKeys.iGotAnEscKeyPress]: {\n innerKey: ModalEventsInnerKeys.iGotAnEscKeyPress,\n name: 'modal:i-got-an-esc-key-press',\n shortName: 'escIsPressed',\n middlewareKey: 'Escape',\n options: DEFAULT_EVENT_OPTIONS,\n },\n});\n", "import type { ISuspendProcessing } from '../../../../Functions/useKeyPress/useKeyPress';\nimport type TWithEventManagementAsObj from '../../../../types/declaration/TWithEventManagementAsObj';\nimport type { IModalProps } from '../Modal.interface';\nimport type { ICustomEvent, ModalEventsInnerKeys } from './_constants';\n\nimport { isISuspendProcessing } from '../../../../Functions/useKeyPress/useKeyPress';\nimport { getIsOnlyAnObject } from '../../../../Functions/utils';\nimport { EVENTS } from './_constants';\n\n// ? \u0413\u0435\u0442\u0442\u0435\u0440 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043B\u044F \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F/\u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0438\u0432\u0435\u043D\u0442\u0430\u043C\u0438\n// ? \u0413\u0430\u0440\u0430\u043D\u0442\u0438\u0440\u0443\u0435\u0442 \u0432\u043E\u0437\u0432\u0440\u0430\u0442 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0441 \u041F\u041E\u041B\u041D\u042B\u041C \u043D\u0430\u0431\u043E\u0440\u043E\u043C \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u044B\u0445 \u043E\u043F\u0446\u0438\u0439\nexport function getWithEventManagementStructure(\n modalId: number | string | null | undefined,\n withEventManagement?: IModalProps['withEventManagement'],\n): TWithEventManagementAsObj<'Modal', true> {\n // ! \u0422\u0443\u0442 \u0414\u041E\u041B\u0416\u041D\u042B \u0411\u042B\u0422\u042C \u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0435\u043D\u044B \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B \u0438\u0437 \u0442\u0438\u043F\u0430 TWithEventManagementAsObj<'Modal'> (\u0411\u0415\u0417 \u043F\u0440\u043E\u043F\u0441\u043E\u0432 ICommon)\n // ! \u0418\u043C\u0435\u043D\u043D\u043E \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0441 isHard-\u043E\u043F\u0446\u0438\u0435\u0439 \u0438 \u0447\u0435\u0440\u0435\u0437 satisfies\n const output = {\n isWithSubmitAndCloseManagement: false,\n } satisfies TWithEventManagementAsObj<'Modal', true>;\n\n // ? \u0418\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043C\u0441\u044F \u043F\u043E \u043E\u043F\u0438\u0441\u0430\u043D\u043D\u044B\u043C \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430\u043C\n for (const key in output) {\n // ? \u0415\u0441\u043B\u0438 \u0432 \u043C\u043E\u0434\u0430\u043B\u043A\u0443 \u041D\u0415 \u043F\u0435\u0440\u0435\u0434\u0430\u043D id, \u0442\u043E \u0441\u0438\u0441\u0442\u0435\u043C\u0430 \u041D\u0415 \u0441\u043C\u043E\u0436\u0435\u0442 \u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\n if (!modalId) {\n output[key as keyof typeof output] = false;\n }\n else {\n // ? \u041F\u0440\u0438c\u0432\u0430\u0438\u0432\u0430\u0435\u043C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u043F\u0430\u043C \u0437\u0430\u0434\u0430\u043D\u043D\u043E\u0439 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0438\u0441\u0445\u043E\u0434\u044F \u0438\u0437 withEventManagement\n // ? - \u0435\u0441\u043B\u0438 withEventManagement \u043E\u0431\u044A\u0435\u043A\u0442, \u0442\u043E \u044D\u0442\u043E \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0430\u044F \u043F\u0440\u043E\u043F\u0430 (\u0435\u0441\u043B\u0438 \u0442\u0430\u043A\u0430\u044F \u0435\u0441\u0442\u044C)\n // ? - \u043B\u0438\u0431\u043E \u044D\u0442\u043E \u043F\u0440\u0438\u0432\u0435\u0434\u0451\u043D\u043D\u043E\u0435 \u043A \u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u043E\u043C\u0443 \u0442\u0438\u043F\u0443 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 withEventManagement\n output[key as keyof typeof output] = (\n getIsOnlyAnObject(withEventManagement)\n ? ((withEventManagement as TWithEventManagementAsObj<'Modal'>)[key as keyof TWithEventManagementAsObj<'Modal'>] ?? false)\n : !!withEventManagement\n );\n }\n }\n\n return output;\n}\n\n// ? \u0413\u0435\u0442\u0442\u0435\u0440 \u043A\u043E\u043B\u0431\u0435\u043A\u0430 \u0434\u043B\u044F \u0437\u0430\u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u043D\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432\n// ? (\u0441\u0434\u0435\u043B\u0430\u043D\u043E \u0447\u0435\u0440\u0435\u0437 \u0433\u0435\u0442\u0442\u0435\u0440 \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0434\u0443\u0431\u043B\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0434\u043B\u044F Modal \u0438 ModalHOC,\n// ? \u0435\u0441\u043B\u0438 \u043F\u0438\u0448\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u043E\u0434\u043D\u043E\u0433\u043E \u043C\u0435\u0441\u0442\u0430, \u0442\u043E \u0432 \u0433\u0435\u0442\u0435\u0440\u0435 \u043D\u0435\u0442 \u0441\u043C\u044B\u0441\u043B\u0430, \u043C\u043E\u0436\u043D\u043E \u0432\u0441\u0435 \u043F\u0438\u0441\u0430\u0442\u044C \u0432 useEffect)\nexport function getOnKeyPress({\n id: modalId,\n onSubmit,\n onClose,\n suspendProcessing,\n}: {\n id: number | string | null | undefined;\n onSubmit?: () => unknown;\n onClose?: () => unknown;\n suspendProcessing?: ISuspendProcessing | null;\n}): ((ev: Event) => void) | null {\n if (!modalId) return null;\n\n return function onKeyPress(ev: Event): void {\n // ? \u041F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u0438\n const customEvent = ev as CustomEvent;\n // ? \u0414\u043E\u0441\u0442\u0430\u0435\u043C \u0434\u0435\u0442\u0430\u043B\u0438 \u0437\u0430\u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u043D\u043D\u043E\u0433\u043E \u0438\u0432\u0435\u043D\u0442\u0430\n const { id: eventId, realEvent } = customEvent.detail || {};\n // ? \u0414\u043E\u0441\u0442\u0430\u0435\u043C \u0438\u0437 \u0441\u043F\u0440\u0430\u0432\u043E\u0447\u043D\u0438\u043A\u0430 \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u043D\u0443\u044E \u0438\u043D\u0444\u0443 \u043E\u0431 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u043E\u043C \u0438\u0432\u0435\u043D\u0442\u0435\n const constantInfoAboutCustomEvent = (\n Object.values(EVENTS).find(ev => ev.name === customEvent.type || ev.shortName === customEvent.type) || {}\n ) as ICustomEvent<ModalEventsInnerKeys>;\n // ? \u0412\u044B\u044F\u0441\u043D\u044F\u0435\u043C \u043A\u043B\u044E\u0447 \u0434\u043B\u044F \u0441\u0438\u0441\u0442\u0435\u043C\u044B suspendProcessing\n const middlewareKey = constantInfoAboutCustomEvent.middlewareKey || 'incorrectKey';\n\n const safelySuspendProcessing = (isISuspendProcessing(suspendProcessing) ? suspendProcessing : {}) as ISuspendProcessing;\n\n // ? \u0414\u0435\u043B\u0430\u0435\u043C \u0447\u0442\u043E-\u043B\u0438\u0431\u043E \u0435\u0441\u043B\u0438\n // ? - \u0435\u0441\u043B\u0438 \u0435\u0441\u0442\u044C modalId (\u043C\u043E\u0434\u0430\u043B\u043A\u0430 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043E\u0432\u0430\u043D\u0430)\n // ? - \u0435\u0441\u043B\u0438 \u0435\u0441\u0442\u044C eventId (\u043F\u0440\u0438 \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u043E\u0433\u043E \u0438\u0432\u0435\u043D\u0442\u0430 \u043D\u0430 \u0443\u0440\u043E\u0432\u043D\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u0430 \u0443\u043A\u0430\u0437\u0430\u043B\u0438 \u043A\u043E\u043C\u0443 \u0430\u0434\u0440\u0435\u0441\u043E\u0432\u0430\u043D \u0438\u0432\u0435\u043D\u0442)\n // ? - \u0435\u0441\u043B\u0438 eventId === modalId (\u0437\u0430\u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u043D\u044B\u0439 \u0438\u0432\u0435\u043D\u0442 \u043F\u0440\u0435\u0434\u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D \u044D\u0442\u043E\u0439 \u043C\u043E\u0434\u0430\u043B\u043A\u0435)\n // ? - \u0435\u0441\u043B\u0438 \u043D\u0435\u0442 \u043E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u0439 \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 (\u0435\u0441\u0442\u044C \u043A\u043E\u043B\u0431\u0435\u043A \u0438 \u0435\u0433\u043E \u0437\u0430\u043F\u0443\u0441\u043A \u0432\u0435\u0440\u043D\u0443\u043B true, \u0442.\u0435. \"\u0434\u0430, \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C\")\n if (modalId && eventId && eventId === modalId && !(safelySuspendProcessing[middlewareKey]?.(realEvent))) {\n // ? \u0412 ev.type \u043F\u0440\u0438\u0445\u043E\u0434\u0438\u0442 \u041F\u041E\u041B\u041D\u041E\u0415 \u0438\u043C\u044F \u0438\u0432\u0435\u043D\u0442\u0430 (\u0442\u0430\u043A \u043D\u0430\u043F\u0438\u0441\u0430\u043D \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0440)\n switch (customEvent.type) {\n case EVENTS.iGotAnEnterKeyPress.name: {\n onSubmit?.();\n break;\n }\n case EVENTS.iGotAnEscKeyPress.name: {\n onClose?.();\n break;\n }\n default: { break; }\n }\n }\n };\n}\n\n// ? \u0414\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0440 \u0438\u0432\u0435\u043D\u0442\u043E\u0432 (\u0434\u043B\u044F \u044D\u043A\u0441\u043F\u043E\u0440\u0442\u0430, \u0434\u043B\u044F \u0443\u0434\u043E\u0431\u0441\u0442\u0432\u0430 \u0438 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u0441\u0442\u0438 \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0439 \u043D\u0430 \u043C\u0435\u0441\u0442\u0430\u0445)\n// ? eventName - \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0438\u0432\u0435\u043D\u0442, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0432\u044B \u0445\u043E\u0442\u0438\u0442\u0435 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C\n// ? uniqueId - \u043F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u0442\u0441\u044F \u0447\u0442\u043E \u044D\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u043A\u043B\u044E\u0447 \u043C\u043E\u0434\u0430\u043B\u043A\u0438 (\u043A\u043B\u044E\u0447 \u0432\u0435\u0442\u043A\u0438 \u0432 ModalStore)\n// ? target - \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u043E\u0436\u0435 \u0441\u0430\u043C\u043E\u0435, \u0447\u0442\u043E/\u0435\u0441\u043B\u0438 \u043F\u0440\u043E\u043A\u0438\u0434\u044B\u0432\u0430\u043B\u0438 \u0432 \u043F\u0440\u043E\u043F\u0443 withEventManagement.listenersTarget\nexport function dispatchEventForModalManagement(\n realEvent: globalThis.KeyboardEvent,\n nameOfCustomEvent: string,\n uniqueIdOfRecipient: number | string,\n target?: HTMLElement | Document,\n): void {\n const { repeat, altKey, ctrlKey, shiftKey, metaKey } = realEvent;\n const isPressingWithoutAuxiliaryKeys = !altKey && !ctrlKey && !shiftKey && !metaKey;\n\n if (!repeat && isPressingWithoutAuxiliaryKeys) {\n const event = Object.values(EVENTS).find(ev => ev.name === nameOfCustomEvent || ev.shortName === nameOfCustomEvent);\n if (event && uniqueIdOfRecipient) {\n (target ?? document).dispatchEvent(new CustomEvent(event.name, { ...event.options, detail: { id: uniqueIdOfRecipient, realEvent } }));\n }\n }\n}\n", "import type { IModalFooterProps } from '../Modal.interface';\nimport cn from 'classnames';\n\nimport React, { memo } from 'react';\n\nconst ModalFooter: React.FC<IModalFooterProps> = memo(\n ({ className = '', children, wrapperRef, testId = 'modal-footer' }) => {\n return (\n <footer\n data-testid={testId}\n ref={wrapperRef}\n className={cn('modal__footer', className)}\n role=\"contentinfo\"\n aria-label=\"Modal footer\"\n >\n {children}\n </footer>\n );\n },\n);\n\nModalFooter.displayName = 'ModalFooter';\n\nexport default ModalFooter;\n", "import type { IModalTitleProps } from '../Modal.interface';\nimport cn from 'classnames';\nimport React, { memo, useLayoutEffect, useMemo, useRef } from 'react';\n\nimport { X } from 'react-feather';\n\nconst ModalTitle: React.FC<IModalTitleProps> = memo(\n ({\n variant = 'primary',\n children,\n isForced = false,\n onClose,\n closeBtnDisable,\n\n noHeaderCloseBtn = false,\n className,\n wrapperRef,\n testId = 'modal-title',\n }) => {\n const closeModalRef = useRef(onClose);\n\n // ! \u041D\u0415 \u043D\u0443\u0436\u043D\u043E \u0442\u0443\u0442 \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044C \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 \u043D\u0430\u0436\u0430\u0442\u0438\u044F Enter/Esc (\u043F\u0440\u0435\u0434\u0443\u0441\u043C\u043E\u0442\u0440\u0435\u043D\u0430 \u0432 ModalHOC).\n // ? \u0415\u0441\u043B\u0438 \u043D\u0443\u0436\u043D\u0430 \u044D\u0442\u0430 \u0438\u043D\u043A\u0430\u043F\u0441\u0443\u043B\u0438\u0440\u043E\u0432\u0430\u043D\u0430\u044F \u043B\u043E\u0433\u0438\u043A\u0430 - \u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435\u0441\u044C \u043A\u043E\u043C\u043F\u043E\u0437\u0438\u0446\u0438\u0435\u0439\n // ? - \"\u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u0435\u043B\u044C\" \u0432 ModalHOC \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 Enter/Esc\n // ? - \"\u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u0435\u043B\u044C\" \u0432 ModalTitle \u043D\u0430\u043A\u0438\u043D\u0435\u0442\u0441\u044F \u043D\u0430 \"\u043A\u0440\u0435\u0441\u0442\u0438\u043A\"\n /*\n <ModalHOC\n \u043F\u0440\u043E\u043F\u044B\n closeModal={\u0432\u0430\u0448_\u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u0435\u043B\u044C}\n >\n <ModalTitle\n \u043F\u0440\u043E\u043F\u044B\n onClose={\u0432\u0430\u0448_\u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u0435\u043B\u044C}\n >\n {\u0432\u0430\u0448\u0430 \u0432\u0435\u0440\u0441\u0442\u043A\u0430}\n </ModalTitle>\n\n {\u0432\u0430\u0448 \u043E\u0441\u0442\u0430\u043B\u044C\u043D\u043E\u0439 \u043A\u043E\u043D\u0442\u0435\u043D\u0442}\n </ModalHOC>\n */\n\n // ? \u041B\u0443\u0447\u0448\u0435 \u0447\u0435\u043C useCallback, \u0442.\u043A.\n // ? - \u041D\u0415 \"\u0434\u0451\u0440\u0433\u0430\u0435\u0442\" \u0432\u0435\u0440\u0441\u0442\u043A\u0443 (\u0445\u043E\u0442\u044F \u043F\u043E \u0444\u0430\u043A\u0442\u0443 \u0440\u0435-\u0440\u0435\u043D\u0434\u0435\u0440 \u043F\u0440\u043E\u0438\u0437\u043E\u0439\u0434\u0435\u0442 \u0434\u043B\u044F useLayoutEffect-\u043E\u0432, \u043D\u043E \u0432 \u0448\u0435\u0434\u043E\u0443-\u0434\u043E\u043C\u0435 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0441\u044F)\n // ? - \u041D\u0415 \u0437\u0430\u043C\u044B\u043A\u0430\u0435\u0442 \u0432\u043D\u0435\u0448\u043D\u0438\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F (\u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u0435\u0442 useLayoutEffect)\n // ? - \u041D\u0415 \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440\u044B\n // ? \u0421\u0443\u0442\u044C \u043B\u043E\u0433\u0438\u043A\u0438: \"\u0438\u0434\u0438 \u043F\u043E \u044D\u0442\u043E\u0439 \u0441\u0441\u044B\u043B\u043A\u0435 \u0438 \u043F\u043E\u043F\u044B\u0442\u0430\u0439\u0441\u044F \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0442\u043E \u0447\u0442\u043E \u0442\u0430\u043C \u0435\u0441\u0442\u044C\",\n // ? \u0441\u0441\u044B\u043B\u043A\u0430 - \u043F\u0435\u0440\u043C\u0430\u043D\u0435\u043D\u0442\u043D\u0430\u044F, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0435 \u043C\u043E\u0436\u0435\u0442 \u043C\u0435\u043D\u044F\u0442\u044C\u0441\u044F \u043D\u0435\u0437\u0430\u043C\u0435\u0442\u043D\u043E \u0434\u043B\u044F \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0438\n const handleClick: () => void = useMemo(() => () => closeModalRef.current?.(), []);\n\n useLayoutEffect(() => {\n closeModalRef.current = closeBtnDisable ? undefined : onClose;\n }, [onClose, closeBtnDisable]);\n\n return (\n <header\n data-testid={testId}\n ref={wrapperRef}\n className={cn('modal__header', className, {\n [`modal__header-${variant}`]: variant,\n })}\n role=\"banner\"\n aria-label=\"Modal header\"\n >\n <span\n className={cn('modal__header-title', {\n [`modal__header-${variant}-title`]: variant,\n })}\n id={`${testId}-heading`}\n >\n {children}\n </span>\n {!isForced && (\n <button\n type=\"button\"\n onClick={handleClick}\n className={cn('modal-close-icon-box', {\n 'modal-close-icon-box-primary': variant === 'primary',\n 'modal-close-icon-box--hidden': noHeaderCloseBtn,\n })}\n aria-label=\"Close modal\"\n title=\"Close modal\"\n >\n {!noHeaderCloseBtn && <X className=\"modal-close-icon\" role=\"img\" aria-hidden=\"true\" />}\n </button>\n )}\n </header>\n );\n },\n);\n\nModalTitle.displayName = 'ModalTitle';\n\nexport default ModalTitle;\n", "/* eslint-disable react-web-api/no-leaked-event-listener */\nimport type { MutableRefObject, ReactNode } from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport useIsMobile from '../../../../Functions/useIsMobile/useIsMobile';\n\ntype ScrollDirection = 'up' | 'down';\n\ninterface ModalsLogic {\n IS_HEADER_HIDDEN: boolean;\n IS_HEADER_STICKY: boolean;\n IS_FOOTER_HIDDEN: boolean;\n IS_FOOTER_STICKY: boolean;\n}\n\ninterface UseMobileModalProps {\n modalRef?: React.RefObject<HTMLDivElement>;\n withMobileLogic?: boolean;\n withFixedFooter?: boolean;\n isOpen?: boolean;\n}\n\ninterface UseMobileModalReturn {\n modalMobileContainerRef: MutableRefObject<HTMLDivElement | null>;\n modalMobileHeaderRef: MutableRefObject<HTMLDivElement | null>;\n modalMobileBodyRef: MutableRefObject<HTMLDivElement | null>;\n modalMobileFooterRef: MutableRefObject<HTMLDivElement | null>;\n MODALS_LOGIC: ModalsLogic;\n SCROLL_DIRECTION: { UP: ScrollDirection; DOWN: ScrollDirection };\n scrollTop: number;\n scrollHeight: number;\n renderModal: (modal: ReactNode) => ReactNode;\n isMobile: boolean;\n}\n\nconst SCROLL_DIRECTION = {\n UP: 'up' as ScrollDirection,\n DOWN: 'down' as ScrollDirection,\n};\n\nexport default function useMobileModal({\n modalRef,\n withMobileLogic = false,\n withFixedFooter = false,\n isOpen = false,\n}: UseMobileModalProps): UseMobileModalReturn {\n const modalMobileContainerRef = useRef<HTMLDivElement>(null);\n const modalMobileHeaderRef = useRef<HTMLDivElement>(null);\n const modalMobileFooterRef = useRef<HTMLDivElement>(null);\n const modalMobileBodyRef = useRef<HTMLDivElement>(null);\n\n const { isMobile } = useIsMobile();\n\n const [modalHeight, setModalHeight] = useState(0);\n const [modalsLogic, setModalsLogic] = useState<ModalsLogic>({\n IS_HEADER_HIDDEN: false,\n IS_HEADER_STICKY: false,\n IS_FOOTER_HIDDEN: false,\n IS_FOOTER_STICKY: withFixedFooter,\n });\n const [modalsLogicProps, setModalsLogicProps] = useState({\n headerHeight: 0,\n footerHeight: 0,\n });\n\n const [scrollDirection, setScrollDirection] = useState(SCROLL_DIRECTION.UP);\n const [scrollTopPrev, setScrollTopPrev] = useState(0);\n const [scrollTop, setScrollTop] = useState(0);\n const [scrollHeight, setScrollHeight] = useState(1);\n const [, setContainerScrollHeight] = useState(1);\n\n /* MODALS LOGIC | BEGIN */\n // Count ScrollTop\n useLayoutEffect(() => {\n const el = modalMobileContainerRef?.current;\n if (el) {\n el.addEventListener('scroll', () => {\n setScrollTop((scrollTop) => {\n if (scrollTop !== el.scrollTop) setScrollTopPrev(scrollTop);\n return el.scrollTop;\n });\n });\n }\n }, [modalMobileContainerRef?.current]);\n // Count ScrollDirection\n useEffect(() => {\n setScrollDirection(prevScrollDirection =>\n scrollTop < scrollTopPrev\n ? SCROLL_DIRECTION.UP\n : scrollTop > scrollTopPrev\n ? SCROLL_DIRECTION.DOWN\n : prevScrollDirection,\n );\n }, [scrollTop, scrollTopPrev]);\n // Dynamic Modal Positioning\n useLayoutEffect(() => {\n if (isOpen) {\n const modalStyle = modalRef?.current\n ? modalRef?.current.style\n || window.getComputedStyle(modalRef?.current)\n : {} as CSSStyleDeclaration;\n const computedModalHeight = modalRef?.current\n ? modalHeight + Number.parseFloat(modalStyle?.marginTop || '0')\n : 0;\n const windowHeight\n = document.documentElement.clientHeight\n || window.screen.availHeight\n || window.screen.height;\n if (modalMobileContainerRef?.current) {\n if (computedModalHeight <= windowHeight) {\n modalMobileContainerRef.current.style.display = 'flex';\n modalMobileContainerRef.current.style.alignItems = 'flex-end';\n }\n else {\n modalMobileContainerRef.current?.style?.removeProperty('display');\n modalMobileContainerRef.current?.style?.removeProperty('align-items');\n }\n }\n }\n }, [modalsLogicProps, isOpen, isMobile, modalHeight]);\n\n // Calculating\n useLayoutEffect(() => {\n if (isMobile && isOpen) {\n const newModalHeight = modalRef?.current?.getBoundingClientRect()?.height;\n if (newModalHeight && modalHeight !== newModalHeight) {\n setModalHeight(newModalHeight);\n }\n }\n });\n useEffect(() => {\n if (isMobile && withMobileLogic) {\n const { footerHeight, headerHeight } = modalsLogicProps;\n setModalsLogic(prevStickyLogic => ({\n IS_HEADER_HIDDEN:\n scrollDirection === SCROLL_DIRECTION.DOWN || scrollTop === 0,\n IS_HEADER_STICKY:\n scrollDirection === SCROLL_DIRECTION.UP\n && scrollTop !== 0\n && (scrollTop >= headerHeight || prevStickyLogic.IS_HEADER_STICKY),\n IS_FOOTER_HIDDEN:\n !withFixedFooter\n && (scrollDirection === SCROLL_DIRECTION.UP\n || scrollHeight === Math.round(scrollTop)),\n IS_FOOTER_STICKY:\n (withFixedFooter && scrollHeight > 1)\n || (scrollDirection === SCROLL_DIRECTION.DOWN\n && (scrollHeight - Math.round(scrollTop) >= footerHeight\n || prevStickyLogic.IS_FOOTER_STICKY)),\n }));\n }\n }, [\n scrollTop,\n scrollHeight,\n isMobile,\n withMobileLogic,\n scrollDirection,\n modalsLogicProps,\n modalHeight,\n window.innerHeight,\n ]);\n useLayoutEffect(() => {\n if (\n modalMobileHeaderRef?.current?.getBoundingClientRect()?.height\n !== undefined\n ) {\n setModalsLogicProps(state => ({\n ...state,\n headerHeight: modalMobileHeaderRef?.current?.getBoundingClientRect()?.height ?? 0,\n }));\n }\n }, [modalMobileHeaderRef?.current?.getBoundingClientRect()?.height]);\n useLayoutEffect(() => {\n if (\n modalMobileFooterRef?.current?.getBoundingClientRect()?.height\n !== undefined\n ) {\n setModalsLogicProps(state => ({\n ...state,\n footerHeight: modalMobileFooterRef?.current?.getBoundingClientRect()?.height ?? 0,\n }));\n }\n }, [modalMobileFooterRef?.current?.getBoundingClientRect()?.height]);\n useEffect(() => {\n if (modalMobileContainerRef?.current) {\n setContainerScrollHeight(modalMobileContainerRef?.current?.scrollHeight);\n setScrollHeight(\n modalMobileContainerRef?.current?.scrollHeight - window.innerHeight,\n );\n }\n }, [scrollTop, modalMobileContainerRef?.current, window.innerHeight]);\n useEffect(() => {\n window.addEventListener('resize', () => {\n setContainerScrollHeight((containerScrollHeight) => {\n setScrollHeight(containerScrollHeight - window.innerHeight);\n return containerScrollHeight;\n });\n });\n }, []);\n /* MODALS LOGIC | END */\n\n const renderModal = useCallback(\n (modal: ReactNode): ReactNode => {\n if (!isMobile || !withMobileLogic) return modal;\n\n return (\n <div className=\"modal-mobile-container\" ref={modalMobileContainerRef}>\n {modal}\n </div>\n );\n },\n [isMobile, withMobileLogic],\n );\n\n return {\n modalMobileContainerRef,\n modalMobileHeaderRef,\n modalMobileBodyRef,\n modalMobileFooterRef,\n MODALS_LOGIC: modalsLogic,\n SCROLL_DIRECTION,\n scrollTop,\n scrollHeight,\n renderModal,\n isMobile,\n };\n}\n", "import { useEffect, useState } from 'react';\n\ninterface UseIsMobileProps {\n isWithoutWidthCheck?: boolean;\n}\n\ninterface UseIsMobileProps {\n isWithoutWidthCheck?: boolean;\n}\n/**\n * Hook to detect if the current device is a mobile device\n * @param props - Configuration options\n * @param props.isWithoutWidthCheck - If true, only checks user agent without width verification\n * @returns Object containing isMobile flag\n */\nfunction useIsMobile({ isWithoutWidthCheck = false }: UseIsMobileProps = {}): { isMobile: boolean, isMobilePortrait: boolean; isMobileLandscape: boolean } {\n const isIPad = (): boolean => {\n const ua = navigator.userAgent || navigator.vendor || (window as any).opera;\n\n // iPadOS 13+ \u0432\u044B\u0434\u0430\u0435\u0442 \u0441\u0435\u0431\u044F \u043A\u0430\u043A Mac, \u043D\u043E \u0441 touch-\u044D\u043A\u0440\u0430\u043D\u043E\u043C\n const isMac = /Macintosh/.test(ua);\n const hasTouch = navigator.maxTouchPoints && navigator.maxTouchPoints > 2;\n\n return isMac && !!hasTouch;\n };\n\n const getIsMobile = (): boolean => {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || isIPad();\n };\n\n const [isMobile, setIsMobile] = useState<boolean>(getIsMobile());\n\n useEffect(() => {\n if (getIsMobile()) {\n setIsMobile(true);\n }\n }, [navigator.userAgent]);\n\n return {\n isMobile: isMobile && (isWithoutWidthCheck || window.screen.width <= 768 || (window.screen.width <= 1024 && window.matchMedia('(orientation: landscape)').matches)),\n isMobilePortrait: isMobile && window.screen.width <= 768 && window.matchMedia('(orientation: portait)').matches,\n isMobileLandscape: isMobile && window.screen.width <= 1024 && window.matchMedia('(orientation: landscape)').matches,\n };\n}\n\nexport default useIsMobile;\n", "import type { IModalHOCProps } from './Modal.interface';\n\nimport cn from 'classnames';\nimport React, { useEffect, useLayoutEffect, useMemo, useRef } from 'react';\n\nimport useHandleKeyPress from '../../../Functions/useKeyPress/useHandleKeyPress';\nimport { EVENTS } from './partials/_constants';\nimport { getOnKeyPress, getWithEventManagementStructure } from './partials/_utils';\n\nimport './Modal.scss';\n\nconst ModalHOC: React.FC<IModalHOCProps> = ({\n id,\n zIndex = 100,\n isOpen,\n closeModal,\n closeBtnDisable,\n\n children,\n className,\n size,\n testId = 'modal',\n\n withEventManagement = false, // ! \u041F\u043E\u043B\u043D\u043E\u0441\u0442\u044C\u044E \u043F\u0440\u043E\u0438\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044F \u0435\u0441\u043B\u0438 \u0432 \u043C\u043E\u0434\u0430\u043B\u043A\u0443 \u041D\u0415 \u043F\u0440\u043E\u043A\u0438\u043D\u0443\u0442 id\n\n // ? isClosingByEsc \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u044F\u0432\u043D\u044B\u043C \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435\u043C/\u0437\u0430\u043F\u0440\u0435\u0442\u043E\u043C \u043D\u0430 \u0440\u0430\u0431\u043E\u0442\u0443 \u0444-\u043B\u0430,\n // ? \u0432 \u0442\u043E \u0432\u0440\u0435\u043C\u044F \u043A\u0430\u043A withEventManagement \u043B\u0438\u0448\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0441\u043F\u043E\u0441\u043E\u0431\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438 \u044D\u0442\u043E\u0433\u043E \u0444-\u043B\u0430\n isClosingByEsc: isClosingByEscOuter = true,\n closeOnEsc,\n}) => {\n const modalRef = useRef(null);\n const closeModalRef = useRef(closeModal);\n\n // todo(vl) - \u043D\u0430 \u0441\u0442\u0430\u0440\u044B\u0445 \u043F\u0440\u043E\u043F\u0430\u0445 \u0438 \u0440\u0430\u043D\u044C\u0448\u0435 \u0434\u0435\u0444\u043E\u043B\u0442 \u0431\u044B\u043B true\n // todo(vl) - \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0434\u043B\u044F \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438 \u0441\u0442\u0430\u0440\u044C\u044F \u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u043E\u0442\u0441\u043B\u0435\u0436\u0438\u0432\u0430\u0442\u044C \u0437\u0430\u043F\u0440\u0435\u0442\u044B\n const isClosingByEsc = closeOnEsc === false\n ? false\n : isClosingByEscOuter;\n\n const withEventManagementStructure = getWithEventManagementStructure(id, withEventManagement);\n\n // ? \u041B\u0443\u0447\u0448\u0435 \u0447\u0435\u043C useCallback, \u0442.\u043A.\n // ? - \u041D\u0415 \"\u0434\u0451\u0440\u0433\u0430\u0435\u0442\" \u0432\u0435\u0440\u0441\u0442\u043A\u0443 (\u0445\u043E\u0442\u044F \u043F\u043E \u0444\u0430\u043A\u0442\u0443 \u0440\u0435-\u0440\u0435\u043D\u0434\u0435\u0440 \u043F\u0440\u043E\u0438\u0437\u043E\u0439\u0434\u0435\u0442 \u0434\u043B\u044F useLayoutEffect-\u043E\u0432, \u043D\u043E \u0432 \u0448\u0435\u0434\u043E\u0443-\u0434\u043E\u043C\u0435 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0441\u044F)\n // ? - \u041D\u0415 \u0437\u0430\u043C\u044B\u043A\u0430\u0435\u0442 \u0432\u043D\u0435\u0448\u043D\u0438\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F (\u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u0435\u0442 useLayoutEffect)\n // ? - \u041D\u0415 \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440\u044B\n // ? \u0421\u0443\u0442\u044C \u043B\u043E\u0433\u0438\u043A\u0438: \"\u0438\u0434\u0438 \u043F\u043E \u044D\u0442\u043E\u0439 \u0441\u0441\u044B\u043B\u043A\u0435 \u0438 \u043F\u043E\u043F\u044B\u0442\u0430\u0439\u0441\u044F \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0442\u043E \u0447\u0442\u043E \u0442\u0430\u043C \u0435\u0441\u0442\u044C\",\n // ? \u0441\u0441\u044B\u043B\u043A\u0430 - \u043F\u0435\u0440\u043C\u0430\u043D\u0435\u043D\u0442\u043D\u0430\u044F, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0435 \u043C\u043E\u0436\u0435\u0442 \u043C\u0435\u043D\u044F\u0442\u044C\u0441\u044F \u043D\u0435\u0437\u0430\u043C\u0435\u0442\u043D\u043E \u0434\u043B\u044F \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0438\n const handleClose: () => void = useMemo(() => () => closeModalRef.current?.(), []);\n\n useHandleKeyPress({\n escCallback: isClosingByEsc && typeof closeModal === 'function' ? handleClose : undefined,\n withEventManagementStructure,\n });\n\n useLayoutEffect(() => {\n closeModalRef.current = closeBtnDisable ? undefined : closeModal;\n }, [closeModal, closeBtnDisable]);\n\n // ? \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043D\u0430\u0436\u0430\u0442\u0438\u044F enter \u0438 esc \u043D\u0430 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u0430\u0445\n useEffect(() => {\n // ? useEffect \u043F\u043E \u043D\u0443\u043B\u0435\u0432\u043E\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F 1 \u0440\u0430\u0437, \u0430 \u0437\u043D\u0430\u0447\u0438\u0442 \u0441\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u043A\u043E\u043B\u0431\u0435\u043A \u041D\u0415 \u0438\u0437\u043C\u0435\u043D\u044F\u0442\u0441\u044F,\n // ? \u0430 \u0437\u043D\u0430\u0447\u0438\u0442 \u0441\u043D\u044F\u0442\u0438\u0435 \u0441\u043B\u0443\u0448\u0430\u0442\u0435\u043B\u044F \u043F\u0440\u043E\u0439\u0434\u0435\u0442 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\n const onKeyPress = getOnKeyPress({ id, onClose: handleClose }); // \u0432 ModalHOC onSubmit \u043D\u0435 \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\n\n if (withEventManagementStructure.isWithSubmitAndCloseManagement && !!onKeyPress) {\n // if () document.addEventListener(EVENTS.iGotAnEnterKeyPress.name, onKeyPress); // \u0432 ModalHOC onSubmit \u043D\u0435 \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\n if (isClosingByEsc) document.addEventListener(EVENTS.iGotAnEscKeyPress.name, onKeyPress);\n }\n\n return () => {\n if (withEventManagementStructure.isWithSubmitAndCloseManagement && !!onKeyPress) {\n // if () document.removeEventListener(EVENTS.iGotAnEnterKeyPress.name, onKeyPress); // \u0432 ModalHOC onSubmit \u043D\u0435 \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\n if (isClosingByEsc) document.removeEventListener(EVENTS.iGotAnEscKeyPress.name, onKeyPress);\n }\n }\n }, []);\n\n if (!isOpen) return null;\n return (\n <div id={`${id}`} style={{ zIndex }} data-testid={testId} className=\"modal-box j5\" role=\"presentation\">\n <div className=\"modal-overlay\" onClick={handleClose} role=\"presentation\" aria-hidden=\"true\" />\n <div\n ref={modalRef}\n style={{ width: size }}\n className={cn(className, 'modal')}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={testId}\n tabIndex={-1}\n >\n {children}\n </div>\n </div>\n );\n};\n\nexport default ModalHOC;\n", "import Modal from './Modal';\nimport ModalHOC from './ModalHOC';\nimport { EVENTS } from './partials/_constants';\nimport { dispatchEventForModalManagement } from './partials/_utils';\n\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0442\u0438\u043F\u043E\u0432\nexport type { IModalFooterProps, IModalHOCProps, IModalProps, IModalTitleProps } from './Modal.interface';\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0442\u043E\u0432\nexport { Modal, ModalHOC };\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 partials\nexport { default as ModalFooter } from './partials/ModalFooter';\nexport { default as ModalTitle } from './partials/ModalTitle';\nexport { default as useMobileModal } from './partials/useMobileModal';\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\nexport { EVENTS };\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u043D\u0443\u0436\u043D\u044B\u0445 \u0441\u043D\u0430\u0440\u0443\u0436\u0438 \u043C\u0435\u0442\u043E\u0434\u043E\u0432\nexport { dispatchEventForModalManagement };\n// ? \u0426\u0435\u043B\u0435\u0432\u043E\u0439 \u0434\u0435\u0444\u043E\u043B\u0442\u043D\u044B\u0439 \u044D\u043A\u0441\u043F\u043E\u0440\u0442\nexport default Modal;\n", "import MonoAccordion from './MonoAccordion';\n\nexport default MonoAccordion;\nexport type { IMonoAccordionProps } from './MonoAccordion.interface';\n", "import type { ReactNode } from 'react';\nimport type { HTMLElementOrAnchor, RefType } from '../../../types/base.types';\nimport type { INavLineItem, INavLineProps } from './NavLine.interface';\nimport cn from 'classnames';\nimport React, { createRef, useCallback, useEffect, useRef, useState } from 'react';\n\nimport * as Icons from 'react-feather';\n\nimport { NavLink } from 'react-router-dom';\n\nimport { KEYBOARD_KEY_CODES } from '../../../Constants/index.constants';\n\nimport './NavLine.scss';\n\nconst CN = 'nav-line';\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u043D\u043E\u0440\u043C\u0430\u043B\u0438\u0437\u0443\u0435\u0442 ref\n * @param ref - React ref \u043E\u0431\u044A\u0435\u043A\u0442 \u0438\u043B\u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u044F \u043E\u0431\u0440\u0430\u0442\u043D\u043E\u0433\u043E \u0432\u044B\u0437\u043E\u0432\u0430\n * @returns \u041D\u043E\u0440\u043C\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043D\u044B\u0439 ref \u0438\u043B\u0438 null\n */\nfunction checkedRef<T extends HTMLElementOrAnchor = HTMLElement>(ref: RefType<T>): RefType<T> {\n if (!ref) return null;\n return typeof ref === 'function' ? (node: T) => ref(node) : ref;\n}\n\nconst NavLine: React.FC<INavLineProps> = ({\n root = '',\n activeTab,\n variant,\n onChange,\n className,\n items,\n children,\n isLocal = false,\n mode,\n isNavigateByKeys,\n isTabLoading,\n scrollMode = false,\n testId = CN,\n}) => {\n const [navLineItems, setNavLineItems] = useState<\n Array<INavLineItem & { ref: React.RefObject<HTMLElement> }>\n >([]);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const wrapperInnerRef = useRef<HTMLDivElement>(null);\n const [showScrollButtons, setShowScrollButtons] = useState(false);\n const [canScrollLeft, setCanScrollLeft] = useState(false);\n const [canScrollRight, setCanScrollRight] = useState(false);\n const [isScrollBlocked, setIsScrollBlocked] = useState(false);\n\n const checkScroll = useCallback(() => {\n const inner = wrapperInnerRef.current;\n if (!inner) return;\n\n const hasOverflow = inner.scrollWidth > inner.clientWidth;\n const canScrollLeft = inner.scrollLeft > 0;\n const canScrollRight = inner.scrollLeft < inner.scrollWidth - inner.clientWidth;\n\n setShowScrollButtons(hasOverflow);\n setCanScrollLeft(canScrollLeft);\n setCanScrollRight(canScrollRight);\n }, []);\n\n const scroll = useCallback(\n (direction: 'left' | 'right') => {\n if (isScrollBlocked || !wrapperInnerRef.current) return;\n\n setIsScrollBlocked(true);\n const scrollAmount = 100;\n const offset = direction === 'left' ? -scrollAmount : scrollAmount;\n\n try {\n wrapperInnerRef.current.scrollBy({\n left: offset,\n behavior: 'smooth',\n });\n }\n catch (error) {\n console.error('scrollBy is not supported', error);\n // Fallback \u0434\u043B\u044F \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043E\u0432, \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044E\u0449\u0438\u0445 scrollBy\n if (wrapperInnerRef.current) {\n wrapperInnerRef.current.scrollLeft += offset;\n }\n }\n\n setTimeout(() => {\n setIsScrollBlocked(false);\n checkScroll();\n }, 300);\n },\n [isScrollBlocked, checkScroll],\n );\n\n const handleWheel = useCallback(\n (e: WheelEvent) => {\n if (!scrollMode) return;\n e.preventDefault();\n\n if (e.deltaY > 0) {\n scroll('right');\n }\n else {\n scroll('left');\n }\n },\n [scroll, scrollMode],\n );\n\n const onTabChange = useCallback(\n (item: INavLineItem) => {\n if (!item.disabled && !(mode === 'create' && item.tabId !== 'general')) {\n onChange(item.tabId);\n }\n },\n [mode, onChange],\n );\n\n const navigateByKeys = useCallback(\n (event: KeyboardEvent) => {\n if (event.repeat) return;\n\n const activeTabIndex = items.findIndex(tab => tab.tabId === activeTab);\n const nextTabID = items[activeTabIndex + 1]?.tabId;\n const prevTabID = items[activeTabIndex - 1]?.tabId;\n\n if (event.keyCode === KEYBOARD_KEY_CODES.ARROW_RIGHT && nextTabID) {\n onChange(nextTabID);\n }\n else if (event.keyCode === KEYBOARD_KEY_CODES.ARROW_LEFT && prevTabID) {\n onChange(prevTabID);\n }\n },\n [activeTab, items, onChange],\n );\n\n // \u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0442\u0430\u0431\u043E\u0432 \u0441 ref\n useEffect(() => {\n setNavLineItems(\n items.map(item => ({\n ...item,\n ref: createRef<HTMLElement>(),\n })),\n );\n }, [items]);\n\n // \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043D\u043E\u0439 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438\n useEffect(() => {\n if (isNavigateByKeys && !isTabLoading) {\n document.addEventListener('keydown', navigateByKeys);\n }\n\n return () => document.removeEventListener('keydown', navigateByKeys);\n }, [isNavigateByKeys, isTabLoading, navigateByKeys]);\n\n // \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0441\u043A\u0440\u043E\u043B\u043B\u0430\n useEffect(() => {\n if (!scrollMode) return;\n\n const inner = wrapperInnerRef.current;\n if (!inner) return;\n\n const resizeObserver = new ResizeObserver(checkScroll);\n resizeObserver.observe(inner);\n\n inner.addEventListener('scroll', checkScroll);\n inner.addEventListener('wheel', handleWheel, { passive: false });\n\n checkScroll();\n\n return () => {\n resizeObserver.disconnect();\n inner.removeEventListener('scroll', checkScroll);\n inner.removeEventListener('wheel', handleWheel);\n };\n }, [scrollMode, checkScroll, handleWheel]);\n\n const renderNavItem = (item: INavLineItem & { ref: React.RefObject<HTMLElement> }): ReactNode => {\n const Icon = item.icon ? Icons[item.icon as keyof typeof Icons] : null;\n const isDisabled = item.disabled || (mode === 'create' && item.tabId !== 'general');\n\n const commonProps = {\n 'title': item.title,\n 'className': cn(\n { 'nav-line__item': !variant },\n { 'nav-line--simple__item': variant === 'simple' },\n { active: activeTab === item.tabId },\n { disabled: isDisabled },\n { 'nav-line__item--hidden': item.isHidden },\n ),\n 'role': 'tab',\n 'aria-selected': activeTab === item.tabId,\n 'aria-disabled': isDisabled,\n 'tabIndex': isDisabled ? -1 : 0,\n };\n\n const content = (\n <div className=\"nav-line__content\">\n {Icon && (\n <div className=\"nav-line__item--icon\" aria-hidden=\"true\">\n <Icon />\n </div>\n )}\n <span className={cn({ 'nav-line__item--label': variant !== 'simple' })}>{item.label}</span>\n {item.count !== undefined && (\n <span className=\"nav-line-count\" aria-label={`${item.count} items`}>\n (\n {item.count}\n )\n </span>\n )}\n </div>\n );\n if (isLocal) {\n return (\n <span\n key={`tab__${item.tabId}`}\n {...commonProps}\n ref={checkedRef(item.ref)}\n onClick={() => !isDisabled && onTabChange(item)}\n onKeyPress={(e: React.KeyboardEvent) => {\n if (!isDisabled && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onTabChange(item);\n }\n }}\n >\n {content}\n </span>\n );\n }\n\n return (\n <NavLink\n key={`tab__${item.tabId}`}\n {...commonProps}\n to={`${root}${item?.linkChapter || item.tabId}/`}\n onClick={(e) => {\n if (isDisabled) {\n e.preventDefault();\n }\n }}\n >\n {content}\n </NavLink>\n );\n };\n\n return (\n <div className=\"nav-line-wrapper\">\n <div\n data-testid={testId}\n className={cn(\n { [CN]: !variant },\n { [`${CN}--simple`]: variant === 'simple' },\n { [`${CN}--scroll-mode`]: scrollMode },\n className,\n )}\n ref={wrapperRef}\n >\n {scrollMode && showScrollButtons && (\n <button\n type=\"button\"\n data-testid=\"nav-line-scroll-prev\"\n className=\"nav-line--simple__arrow nav-line--simple__arrow--prev\"\n onClick={() => scroll('left')}\n aria-label=\"Scroll previous\"\n disabled={!canScrollLeft}\n >\n <Icons.ChevronLeft />\n </button>\n )}\n\n <div\n ref={wrapperInnerRef}\n className={cn({ 'nav-line__inner': !variant }, { 'nav-line--simple__inner': variant === 'simple' })}\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n >\n {navLineItems.map(renderNavItem)}\n </div>\n\n {scrollMode && showScrollButtons && (\n <button\n type=\"button\"\n data-testid=\"nav-line-scroll-next\"\n className=\"nav-line--simple__arrow nav-line--simple__arrow--next\"\n onClick={() => scroll('right')}\n aria-label=\"Scroll next\"\n disabled={!canScrollRight}\n >\n <Icons.ChevronRight />\n </button>\n )}\n\n {children && (\n <div className=\"nav-line__body\" role=\"tabpanel\">\n {children}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default NavLine;\n", "import NavLine from './NavLine';\n\nexport default NavLine;\nexport type { INavLineItem, INavLineProps } from './NavLine.interface';\n", "import type { IPageTitleProps } from './PageTitle.interface';\nimport cn from 'classnames';\nimport React from 'react';\n\nimport { Home } from 'react-feather';\n\nimport './PageTitle.scss';\n\nconst RC = 'page-title';\n\nconst PageTitle: React.FC<IPageTitleProps> = ({ title, pages, children, testId = RC }) => (\n <div data-testid={testId} className={RC} role=\"region\" aria-label={title}>\n <div className={`${RC}__wrap`}>\n <h1 className={`${RC}__title`}>{title}</h1>\n {pages.length > 0 && (\n <nav className={`${RC}__pages`} aria-label=\"Breadcrumb\">\n <ol className={`${RC}__list`}>\n <li>\n <a className={`${RC}__link`} href=\"/\" aria-label=\"Home page\">\n <Home aria-hidden=\"true\" />\n </a>\n </li>\n\n {pages.map(({ name, path }, index) => (\n <li key={path}>\n <span className={`${RC}__delimiter`} aria-hidden=\"true\">\n /\n </span>\n {pages.length - 1 === index\n ? (\n <span className={cn(`${RC}__link`, `${RC}__link_last`)} aria-current=\"page\">\n {name}\n </span>\n )\n : (\n <a className={`${RC}__link`} href={path}>\n {name}\n </a>\n )}\n </li>\n ))}\n </ol>\n </nav>\n )}\n </div>\n {children}\n </div>\n);\n\nexport default PageTitle;\n", "import PageTitle from './PageTitle';\n\nexport default PageTitle;\nexport type { IPageTitleProps, PageItem } from './PageTitle.interface';\n", "import type { IPriceProps } from './Price.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport { formatToPriceWithCurrency } from '../../../Functions/fieldValueFormatters';\n\nconst CN = 'price';\n\nconst Price: React.FC<IPriceProps> = ({ value, currencyCode, isSymbolAfter, className, testId = CN }) => {\n if (value === undefined || value === null) return null;\n return (\n <div\n data-testid={testId}\n className={cn(CN, className)}\n role=\"contentinfo\"\n aria-label={`Price: ${formatToPriceWithCurrency(value, currencyCode, isSymbolAfter ? 'after' : 'before')}`}\n >\n {formatToPriceWithCurrency(value, currencyCode, isSymbolAfter ? 'after' : 'before')}\n </div>\n );\n};\n\nexport default Price;\n", "import { getIsOnlyAnObject } from \"./utils\";\n\n//? The first word \"format\" in the function name means a logic\n//? in which the function transforms the incoming value in any case.\n\n//? The first word \"transform\" in the function name means a logic\n//? in which the function converts the whole value, but this is not suitable for sequential input\n\n//? The first word \"filter\" in the function name means a logic\n//? in which the function works as a changer for sequential input\n\n// ****************************\n// Base utils\n// ****************************\n\nexport const getSafelyValue = (value) =>\n value !== undefined && value !== null ? value?.toString?.() || \"\" : \"\";\n\n// \u0431\u0430\u0437\u043E\u0432\u0430\u044F \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\nexport const intlNumbersFormatter = (inputValue, settings = {}) => {\n const safelyInputValue = getSafelyValue(inputValue);\n const previousValue = safelyInputValue.slice(0, -1);\n const lastSym = safelyInputValue.slice(-1);\n const value = lastSym === \".\" ? previousValue : safelyInputValue;\n\n if (Number.isNaN(Number(value)) || !getSafelyValue(value)) return \"\";\n\n const {\n // \u043B\u043E\u043A\u0430\u043B\u044C, \u0434\u0430\u0436\u0435 \u0440\u0435\u0433\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u0430\u044F, \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0437\u043D\u0430\u043A\u043E\u0432 \u0438 \u0444\u043E\u0440\u043C\u0430\u0442\u0430.\n locale = \"en-US\",\n // percent || currency(default case) || decimal(\u043F\u0440\u043E\u0441\u0442\u043E \u0447\u0438\u0441\u043B\u043E) \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0422\u0418\u041F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438.\n withSymbol,\n //\u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0430 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438 \u043F\u043E\u0440\u0430\u0437\u0440\u044F\u0434\u043D\u043E.\n useGrouping = true,\n //!!\u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 withSymbol: 'currency' !! \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0442\u043E, \u043A\u0430\u043A \u0438\u043C\u0435\u043D\u043D\u043E \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0433\u043B\u044F\u0434\u0435\u0442 \u0444\u043E\u0440\u043C\u0430\u0442 \u0432\u0430\u043B\u044E\u0442\u044B.\n currency = {},\n //\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0437\u043D\u0430\u043A\u043E\u0432 \u043F\u043E\u0441\u043B\u0435 \u0442\u043E\u0447\u043A\u0438, \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043B\u0438 \u043E\u043D\u0438 \u0431\u0443\u0434\u0443\u0442.\n // !!\u0435\u0441\u043B\u0438 \u043F\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C isAlwaysRender: true, \u043D\u043E \u043D\u0435 \u0434\u0430\u0442\u044C \u0446\u0435\u043D\u0442\u043E\u0432, \u0442\u043E \u0431\u0443\u0434\u0435\u0442 100.00\n fractionDigits = {},\n } = settings;\n\n const { currencyType = \"USD\", currencyDisplay: inputCurrencyDisplay } =\n currency;\n\n let currencyDisplay;\n switch (inputCurrencyDisplay) {\n case \"name\":\n currencyDisplay = \"name\";\n break;\n case \"code\":\n currencyDisplay = \"code\";\n break;\n case \"narrowSymbol\":\n currencyDisplay = \"narrowSymbol\";\n break;\n default:\n currencyDisplay = \"symbol\";\n }\n\n let numberStyle;\n switch (withSymbol) {\n case \"percent\":\n numberStyle = \"percent\";\n break;\n case \"currency\":\n numberStyle = \"currency\";\n break;\n default:\n numberStyle = \"decimal\";\n break;\n }\n\n const {\n quantity,\n isRenderAlways = false,\n minimumFractionDigits: inputMinimumFractionDigits,\n maximumFractionDigits: inputMaximumFractionDigits,\n conditionallyMinimumFractionDigits,\n } = fractionDigits;\n\n const dotIndex = safelyInputValue?.indexOf(\".\");\n const afterDot = dotIndex !== -1 ? safelyInputValue.slice(dotIndex + 1) : \"\";\n const minimumFractionDigits = (() => {\n //? \u0411\u0435\u0437\u0443\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E. \u0412\u0441\u0435\u0433\u0434\u0430 \u043E\u0442\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 \u0434\u0440\u043E\u0431\u043D\u0443\u044E \u0447\u0430\u0441\u0442\u044C, \u0432 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0443\u043A\u0430\u0437\u0430\u043D\u043E\n if (typeof inputMinimumFractionDigits === \"number\")\n return inputMinimumFractionDigits;\n //? \u0423\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E. \u0415\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u0434\u0440\u043E\u0431\u043D\u0430\u044F \u0447\u0430\u0441\u0442\u044C, \u0442\u043E \u043E\u0442\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0443\u043A\u0430\u0437\u0430\u043D\u043E\n if (typeof conditionallyMinimumFractionDigits === \"number\") {\n return afterDot && lastSym !== \".\"\n ? conditionallyMinimumFractionDigits\n : 0;\n }\n //? \u0414\u0435\u0444\u043E\u043B\u0442\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E. \u0415\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u0434\u0440\u043E\u0431\u043D\u0430\u044F \u0447\u0430\u0441\u0442\u044C, \u0442\u043E \u043E\u0442\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u0442\u043E\u043B\u044C\u043A\u043E, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0435\u0441\u0442\u044C\n //? \u0424\u043B\u0430\u0433 isRenderAlways \u043F\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u0435\u0444\u043E\u043B\u0442\u043D\u044B\u0439 \u043A\u0435\u0439\u0441 \u0432 \u0431\u0435\u0437\u0443\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\n return afterDot && lastSym !== \".\"\n ? safelyInputValue.slice(dotIndex).length - 1\n : isRenderAlways\n ? quantity\n : 0;\n })();\n\n const priceSettings = {\n useGrouping, //\u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0430 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432\n style: numberStyle, //\u0442\u0438\u043F \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F (\u0432\u0430\u043B\u044E\u0442\u0430 \u0438\u043B\u0438 \u0447\u0438\u0441\u043B\u043E). decimal - \u0431\u0435\u0437 \u0437\u043D\u0430\u043A\u0430 \u0432\u0430\u043B\u044E\u0442\u044B\n currency: currencyType, //\u0432\u0430\u043B\u044E\u0442\u0430\n currencyDisplay, //\u0432\u0430\u043B\u044E\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u0430\n //\u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E \u043D\u0435 \u043D\u0430\u0434\u043E \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0446\u0435\u043D\u0442\u044B, \u0435\u0441\u043B\u0438 \u0438\u0445 \u043D\u0435\u0442, \u0438\u043D\u0430\u0447\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 .00\n minimumFractionDigits,\n //! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n //! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 (inputMaximumFractionDigits ?? quantity) - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\n //\u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C 2 \u0446\u0438\u0444\u0440\u044B \u043F\u043E\u0441\u043B\u0435 \u0437\u0430\u043F\u044F\u0442\u043E\u0439, \u0435\u0441\u043B\u0438 \u0446\u0435\u043D\u0442\u044B \u0432\u0441\u0451 \u0436\u0435 \u0435\u0441\u0442\u044C\n maximumFractionDigits: inputMaximumFractionDigits ?? quantity,\n };\n\n let output;\n\n try {\n output = new Intl.NumberFormat(locale, priceSettings).format(value);\n } catch (e) {\n output = value;\n // eslint-disable-next-line no-console\n console.warn(\"Intl.NumberFormat error\", e);\n }\n return lastSym === \".\" ? output + lastSym : output;\n};\n\n// ****************************\n// format\n// ****************************\n\nexport const formatOnlyNumbers = (value) =>\n getSafelyValue(value).replace(/\\D/g, \"\");\nexport const formatToRemoveComa = (value) =>\n getSafelyValue(value).replace(/,/g, \"\");\nexport const formatToAddBitDepthPoints = (value, settings) =>\n intlNumbersFormatter(getSafelyValue(value), {\n fractionDigits: {\n quantity: settings?.type === \"int\" ? 0 : settings?.decimalPlaces,\n },\n });\n\n//! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n//! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 quantity - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\nexport const formatToPriceWithUSD = (value) => {\n if (isNaN(Number(value))) return value;\n return intlNumbersFormatter(getSafelyValue(value), {\n withSymbol: \"currency\",\n currency: { currencyType: \"USD\" },\n fractionDigits: { quantity: 2, conditionallyMinimumFractionDigits: 2 },\n });\n};\n\n//! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n//! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 quantity - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\n\n// ToDo - symbolPosition \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435 \u0440\u0435\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043E\nexport const formatToPriceWithCurrency = (\n value,\n currencyCode,\n symbolPosition = \"before\",\n) => {\n if (isNaN(Number(value))) return value;\n return intlNumbersFormatter(getSafelyValue(value), {\n withSymbol: \"currency\",\n currency: { currencyType: currencyCode },\n fractionDigits: { quantity: 2, conditionallyMinimumFractionDigits: 2 },\n });\n};\n\n//? \u0414\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 \u0432 \u043A\u043E\u043D\u0435\u0446 \u0437\u043D\u0430\u043A %. \u0420\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043A\u0430\u043A \u0441 \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u043C\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F\u043C\u0438, \u0442\u0430\u043A \u0438 \u0441 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0430\u043C\u0438.\n\n//? value \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043B\u044E\u0431\u043E\u0435, \u043D\u043E \u043E\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044F \u0447\u0442\u043E \u0431\u0443\u0434\u0435\u0442\n//? - \u0447\u0438\u0441\u043B\u043E\u043C\n//? - \u0441\u0442\u0440\u043E\u043A\u043E\u0439 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\"\n//? - \u0441\u0442\u0440\u043E\u043A\u043E\u0439 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" (\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435_\u043F\u0440\u043E\u0431\u0435\u043B_\u0442\u0438\u0440\u0435_\u043F\u0440\u043E\u0431\u0435\u043B_\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435)\n//? - \u043E\u0431\u044A\u0435\u043A\u0442 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 { from: \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435, to: \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 }\n\n//? \u041F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u043E \u043A \u0447\u0438\u0441\u043B\u0443 \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440\u043C + (\u043F\u0440\u0438\u043C\u0435\u0440: +\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442\u0441\u044F \u043A \u0447\u0438\u0441\u043B\u0443).\n//? \u0415\u0441\u043B\u0438 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u043E, \u0442\u043E \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" \u0432\u0435\u0440\u043D\u0435\u0442\u0441\u044F \u043A\u0430\u043A \u0435\u0441\u0442\u044C, \u043A \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0443 \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u0441\u044F %\n\n//? \u0415\u0441\u043B\u0438 \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" \u043F\u0443\u0441\u0442\u043E\u0435 (getSafelyValue(\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435) \u0432\u0435\u0440\u043D\u0435\u0442 \u043F\u0443\u0441\u0442\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443),\n//? \u0442\u043E \u044D\u0442\u043E \u0432\u043E\u0441\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u043A\u0430\u043A 0, \u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442\u0441\u044F \u043A 0.00%\n\n//? \u041E\u0434\u0438\u043D\u043E\u043A\u043E\u0432\u043E \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043A\u0430\u043A \u0434\u043B\u044F \".\", \u0442\u0430\u043A \u0438 \",\" \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044F \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432\n\n//! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n//! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 decimalPlaces - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\n\nexport const formatAsPercentage = (value, settings) => {\n const {\n isCommonPercentageSymbol = true,\n decimalPlaces = 2,\n beforeValueSymbol = \"\",\n afterValueSymbol = \"\",\n isGlueSameRangesTogether = false,\n\n // ? \u0422\u0443\u0442 \u0443\u0434\u043E\u0431\u043D\u044B\u0439 \u0444-\u043B, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0438\u043D\u043E\u0439 \u0440\u0430\u0437 \u0443\u0434\u043E\u0431\u043D\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u043E\u0431\u044B\u0447\u043D\u044B\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u0430\u043D (\u041D\u0415 \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u044B).\n // ? \u0414\u043E\u0431\u0430\u0432\u0438\u043B \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u0432\u044B\u043F\u0438\u043B\u0438\u0432\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u0435\u043A \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u043E\u0432.\n // todo(VL) - \u0432\u043E\u043E\u0431\u0449\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u043E \u0437\u0430\u0440\u0435\u043D\u0435\u0439\u043C\u0438\u0442\u044C (formatAsDiapason), \u0430 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u043E\u0432 \u0441\u0434\u0435\u043B\u0430\u0442\u044C \u043A\u0430\u043A \u043E\u043F\u0446\u0438\u044E,\n // todo(VL) - \u043D\u043E \u043A\u0430\u043A \u043E\u0431\u044B\u0447\u043D\u043E \u043D\u0435\u0442 \u0432\u0440\u0435\u043C\u0435\u043D\u0438, \u043D\u0443\u0436\u043D\u043E \u0431\u0443\u0434\u0435\u0442 \u043F\u0435\u0440\u0435\u0447\u0435\u043A\u0430\u0442\u044C \u043F\u043E \u0432\u0441\u0435\u043C \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u043C \u0433\u0434\u0435 \u0442\u044F\u043D\u0435\u0442\u0441\u044F \u0441\u043E \u0441\u0442\u0430\u0440\u044B\u043C \u043D\u0435\u0439\u043C\u0438\u043D\u0433\u043E\u043C\n isUseAsSimpleDiapason = false,\n } = getIsOnlyAnObject(settings) ? settings : {};\n let safelyInputValue;\n\n const checkValue = (value) => getSafelyValue(value) || \"0\";\n\n const transform = (valueAsSting) => {\n const processedValue = valueAsSting.replace(/,/g, \".\");\n if (Number.isNaN(Number(processedValue))) return processedValue;\n return `${intlNumbersFormatter(getSafelyValue(Number(processedValue)), {\n fractionDigits: {\n quantity: decimalPlaces,\n minimumFractionDigits: decimalPlaces,\n },\n })}`;\n };\n\n if (getIsOnlyAnObject(value)) {\n safelyInputValue = {\n from: checkValue(value.from),\n to: checkValue(value.to),\n };\n } else {\n safelyInputValue = checkValue(value);\n\n if (safelyInputValue.includes(\" - \")) {\n const valuesArr = safelyInputValue\n .split(\" - \")\n .map((partOfValue) => partOfValue.trim());\n safelyInputValue = {\n from: checkValue(valuesArr[0]),\n to: checkValue(valuesArr[1]),\n };\n } else {\n // \u0412\u0430\u0440\u0438\u0430\u043D\u0442 \u043A\u043E\u0433\u0434\u0430 \u0432\u0435\u043B\u044C\u044E \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043E \u0441\u0442\u0440\u043E\u043A\u043E\u0439 (\u041D\u0415 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C) \u0438 \u043E\u043D\u043E \u043D\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0435\u043F\u0430\u0440\u0430\u0442\u043E\u0440\u0430 \" - \"\n // - \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u0435 \u0432\u0435\u043B\u044C\u044E\n // - \u043D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\n return `${beforeValueSymbol}${transform(safelyInputValue)}${afterValueSymbol}${isUseAsSimpleDiapason ? '' : '%'}`;\n }\n }\n\n if (safelyInputValue.from === safelyInputValue.to && !!isGlueSameRangesTogether) {\n return `${beforeValueSymbol}${transform(safelyInputValue.from)}${afterValueSymbol}${isUseAsSimpleDiapason ? '' : '%'}`;\n }\n\n if (isCommonPercentageSymbol)\n return `${beforeValueSymbol}${transform(safelyInputValue.from)} - ${transform(\n safelyInputValue.to,\n )}${afterValueSymbol}${isUseAsSimpleDiapason ? '' : '%'}`;\n else\n return `${beforeValueSymbol}${transform(safelyInputValue.from)}${isUseAsSimpleDiapason ? '' : '%'} - ${transform(\n safelyInputValue.to,\n )}${isUseAsSimpleDiapason ? '' : '%'}${afterValueSymbol}`;\n};\n\n// eslint-disable-next-line no-control-regex\nexport const formatToOnlyASCIICodeText = (text) =>\n getSafelyValue(text).replace(/[^\\x00-\\x7F]+/g, \"\");\n\n// eslint-disable-next-line default-param-last\nexport const formatNumberValueToMask = (inputValue, settings) => {\n const safelyInputValue = getSafelyValue(inputValue);\n\n // default valueSymbol === 'n', default mask === 'nnn-nnn-nnnn'\n const {\n mask = \"XXX-XXX-XXXX\",\n valueSymbol = \"X\",\n isReturnAdvanced = false,\n } = settings || {};\n const processing = mask.split(\"\").reduce(\n (acc, item) => {\n if (acc.value.length) ++acc.cursorPosition;\n acc.newValue.push(\n item === valueSymbol && acc.value.length ? acc.value.shift() : item,\n );\n return acc;\n },\n {\n value: safelyInputValue.split(\"\").filter((sym) => /[0-9]/g.test(sym)),\n newValue: [],\n cursorPosition: 0,\n },\n );\n\n return isReturnAdvanced\n ? {\n value: processing.newValue.join(\"\"),\n cursorPosition: processing.cursorPosition,\n }\n : processing.newValue.join(\"\");\n};\n\nexport const formatToLimitLength = (inputValue, limit) => {\n const value = getSafelyValue(inputValue);\n return limit &&\n typeof limit === \"number\" &&\n !Number.isNaN(limit) &&\n value?.length > limit\n ? value.substr(0, limit)\n : value;\n};\n\nexport const formatToHex = ({ inputValue, withSharp }) => {\n const value = getSafelyValue(inputValue);\n if (withSharp) return `#${value.replace(/[^a-f0-9]/gi, \"\")}`;\n\n return `${value.replace(/[^#a-f0-9]/gi, \"\")}`;\n};\n\nexport function formatToReplaceAllWhiteSpace(str) {\n const value = getSafelyValue(str);\n return value.replace(/\\s+/g, \"\");\n}\n\n// ****************************\n// transform\n// ****************************\n\n// ...\n\n// ****************************\n// filter\n// ****************************\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0432\u044B\u043F\u0438\u043B\u0438\u043B \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0434\u0435\u0444\u043E\u043B\u0442\u043D\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0430 \u0443\u0440\u043E\u0432\u043D\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432, \u0447\u0442\u043E\u0431\u044B \u0441\u0434\u0435\u043B\u0430\u0442\u044C null \u0440\u0430\u0431\u043E\u0447\u0438\u043C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C\n//? decimalPlaces === null \u0442\u0435\u043F\u0435\u0440\u044C \u0442\u043E\u0447\u043D\u043E \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0440\u0435\u0436\u0438\u043C \u0432\u0432\u043E\u0434\u0430 \u0411\u0415\u0417 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u0439 \u0434\u0435\u0441\u044F\u0442\u0438\u0447\u043D\u044B\u0445 \u0437\u043D\u0430\u043A\u043E\u0432\nexport const filterFloat = (inputValue, decimalPlaces) => {\n const replaser = input => ('' + input).replace(/[^\\.\\d]/g, '');\n const value = getSafelyValue(inputValue);\n \n //? safelyDecimalPlaces \u0422\u041E\u0427\u041D\u041E \u043B\u0438\u0431\u043E null, \u043B\u0438\u0431\u043E \u0446\u0435\u043B\u043E\u0435 \u0447\u0438\u0441\u043B\u043E\n const safelyDecimalPlaces = (() => {\n if (decimalPlaces === null) return decimalPlaces;\n\n const DEFAULT_VALUE = 2;\n const isNumber = typeof decimalPlaces === 'number' || (typeof decimalPlaces === 'string' && !Number.isNaN(+decimalPlaces));\n\n //? \u0437\u0430\u0449\u0438\u0442\u0430 \u043E\u0442 \u0434\u0440\u043E\u0431\u043D\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F decimalPlaces\n return isNumber ? Number((+decimalPlaces).toFixed()) : DEFAULT_VALUE;\n })();\n\n // \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043A\u0435\u0439\u0441\u0430 \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0432\u044B\u043C \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u043C \u043D\u0430\u0436\u0430\u0442\u0430 \u0442\u043E\u0447\u043A\u0430\n if (value.length === 1 && (value[0] === '.' || value[0] === ',')) return '0.';\n\n // \u041F\u0440\u0438\u0432\u043E\u0434\u0438\u043C \u0437\u0430\u043F\u044F\u0442\u044B\u0435 \u043A \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u043C\u0443 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044E, \u043D\u043E \u043D\u0435 \u0432\u044B\u043F\u0438\u043B\u0438\u0432\u0430\u0435\u043C\n let output = ('' + value)?.replace(/,/g, '.');\n\n // \u0412\u044B\u043F\u0438\u043B\u0438\u0442\u044C \u043F\u0435\u0440\u0432\u044B\u0439 \u043D\u043E\u043B\u044C, \u0435\u0441\u043B\u0438 \u044D\u0442\u043E \u043D\u0435 \u0434\u0440\u043E\u0431\u044C\n if (value.length > 1 && value[0] === '0' && value[1] !== '.' && value[0] !== ',') output = value.slice(1);\n\n const previousValue = '' + output.slice(0, -1);\n const lastSym = '' + output.slice(-1);\n\n // \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043A\u0435\u0439\u0441\u0430 \u0432\u0442\u043E\u0440\u043E\u0439 \u0442\u043E\u0447\u043A\u0438 \u0432 \u0434\u0440\u043E\u0431\u0438\n if (lastSym === '.' && previousValue.includes('.')) output = previousValue;\n\n // if (localStorage.getItem('useDeb')) debugger;\n\n // \u041B\u043E\u0433\u0438\u043A\u0430 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u044F \u043F\u043E decimalPlaces\n if (typeof safelyDecimalPlaces === 'number') {\n if (!safelyDecimalPlaces && lastSym === '.') return replaser(previousValue);\n if (previousValue.includes('.') && (previousValue.indexOf('.') + 1 + safelyDecimalPlaces === previousValue?.length)) {\n return replaser(previousValue);\n }\n }\n\n return replaser(output);\n};\n\nexport const filterNumeric = (value, settings) => {\n value = getSafelyValue(value)?.replace(/,/g, \"\");\n const { type = \"float\", decimalPlaces } = settings || {};\n\n const executor = type === \"float\" ? filterFloat : formatOnlyNumbers;\n return executor(getSafelyValue(value), decimalPlaces);\n};\n\nexport const formatToHideValuePartially = (value, settings) => {\n const {\n showSymbolsCount = 4,\n isVisibleFromFront = false,\n isCutOutWhiteSpaces = true,\n } = settings || {};\n const safelyValue = getSafelyValue(value);\n\n const newValue = isCutOutWhiteSpaces\n ? safelyValue.replace(/\\s/g, \"\")\n : safelyValue;\n if (newValue.length <= showSymbolsCount) return newValue;\n\n const hide = (val) =>\n val\n .split(\"\")\n .map(() => \"*\")\n .join(\"\");\n const visiblePart = isVisibleFromFront\n ? newValue.slice(0, showSymbolsCount)\n : newValue.slice(-1 * showSymbolsCount);\n const hiddenPart = isVisibleFromFront\n ? newValue.slice(showSymbolsCount)\n : newValue.slice(0, -1 * showSymbolsCount);\n\n return isVisibleFromFront\n ? `${visiblePart}${hide(hiddenPart)}`\n : `${hide(hiddenPart)}${visiblePart}`;\n};\n", "import Price from './Price';\n\nexport default Price;\nexport type { IPriceProps } from './Price.interface';\n", "import type { IPriceRangeProps } from './PriceRange.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport { formatToPriceWithUSD } from '../../../Functions/fieldValueFormatters';\n\nconst CN = 'price-range';\n\nconst PriceRange: React.FC<IPriceRangeProps> = ({ from, to, mode, testId = CN }) => {\n return (\n <div data-testid={testId} className={cn(CN, 'j4')} role=\"region\" aria-label=\"Price range\">\n {mode === 'simple'\n ? (\n <span aria-live=\"polite\">\n {from}\n {' - '}\n {to}\n </span>\n )\n : (\n <span aria-live=\"polite\">\n {formatToPriceWithUSD(from?.toString())}\n {' - '}\n {formatToPriceWithUSD(to?.toString())}\n </span>\n )}\n </div>\n );\n};\n\nexport default PriceRange;\n", "import PriceRange from './PriceRange';\n\nexport default PriceRange;\nexport type { IPriceRangeProps } from './PriceRange.interface';\n", "import type { IProgressLineProps } from './ProgressLine.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport { addBitDepthPoints } from '../../../Functions/utils';\n\nimport './ProgressLine.scss';\n\nconst CN = 'progress-line';\nconst ProgressLine: React.FC<IProgressLineProps> = ({\n label = '',\n labelAlign = 'left',\n renderValue = false,\n renderValueInPercents = false,\n valueMeasurement = '',\n valueHorizontalPosition = 'right',\n valueVerticalPosition = 'center',\n symbolsAfterComma = 0,\n minValue = 0,\n maxValue = 100,\n value = 0,\n showExtremums = false,\n extremumsPosition = 'top',\n variant = 'info',\n useVariantLabelColor = true,\n isShowLine = true,\n className,\n testId = CN,\n}) => {\n const getFilledLineWidth = (): string => {\n if (value > maxValue) value = maxValue;\n return `${(((value - minValue) * 100) / (maxValue - minValue)).toFixed(symbolsAfterComma)}%`;\n };\n\n const renderLabel = (): JSX.Element | null => {\n if (!label) return null;\n return <div className={`progress-line__wrapper__label align-${labelAlign}`}>{label}</div>;\n };\n\n const renderProgressValue = (): JSX.Element | null => {\n if (!renderValue) return null;\n return (\n <div className=\"progress-line__wrapper__value\" aria-live=\"polite\">\n {renderValueInPercents\n ? getFilledLineWidth()\n : `${addBitDepthPoints(String(value))} ${valueMeasurement}`}\n </div>\n );\n };\n\n const renderExtremums = (): JSX.Element | null => {\n if (!showExtremums) return null;\n return (\n <div aria-hidden=\"true\" className={`progress-line__wrapper__extremums position-${extremumsPosition}`}>\n <div className=\"progress-line__wrapper__extremums--min\">\n {renderValueInPercents ? '0 %' : `${minValue} ${valueMeasurement}`}\n </div>\n <div className=\"progress-line__wrapper__extremums--max\">\n {renderValueInPercents ? '100 %' : `${maxValue} ${valueMeasurement}`}\n </div>\n </div>\n );\n };\n\n const renderFilledLine = (): JSX.Element => {\n return (\n <div\n className=\"progress-line__wrapper__line--filled\"\n role=\"progressbar\"\n aria-label={`Progress: ${value} out of ${maxValue}`}\n aria-valuenow={value}\n aria-valuemin={minValue}\n aria-valuemax={maxValue}\n style={{ width: getFilledLineWidth() }}\n >\n </div>\n );\n };\n\n const renderLine = (): JSX.Element => {\n return (\n <div className=\"progress-line__wrapper__line\">\n {renderExtremums()}\n {renderFilledLine()}\n </div>\n );\n };\n\n return (\n <div className={cn(CN, className)} data-testid={testId} role=\"region\" aria-label=\"Progress line\">\n {renderLabel()}\n <div\n className={`progress-line__wrapper variant-${\n useVariantLabelColor && variant\n } value-${valueVerticalPosition}-${valueHorizontalPosition} ${className}`}\n >\n {renderProgressValue()}\n {isShowLine && renderLine()}\n </div>\n </div>\n );\n};\n\nexport default ProgressLine;\n", "import ProgressLine from './ProgressLine';\n\nexport default ProgressLine;\nexport type { IProgressLineProps } from './ProgressLine.interface';\n", "import React from \"react\";\n\nimport cn from \"classnames\";\n\nimport TdHeader from \"./Partials/TdHeader\";\nimport TdRow from \"./Partials/TdRow\";\n\nimport \"./Table.scss\";\n\nconst Table = ({\n rows,\n onChange,\n className,\n header,\n onActionClick,\n testId = \"table\",\n}) => {\n const handleArrayChange = (value, index) => {\n rows[index] = value;\n onChange({ header: [...header], rows: [...rows] });\n };\n\n return (\n <div\n data-testid={testId}\n className={cn(\"simple-table\", {\n [`simple-table--${className}`]: className,\n })}\n >\n <table>\n <thead>\n <tr>\n {header?.map((item) => (\n <TdHeader item={item} key={item.key} />\n ))}\n </tr>\n </thead>\n <tbody>\n {rows && rows?.length ? (\n rows?.map((row, index) => (\n <TdRow\n onActionClick={onActionClick}\n rowIndex={index}\n key={typeof row.id === \"object\" ? row.id.value : row.id}\n item={row}\n header={header}\n onChange={(value) => handleArrayChange(value, index)}\n />\n ))\n ) : (\n <tr>\n <td className=\"row--not-found\" colSpan={header?.length}>\n Not set\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n );\n};\n\nexport default Table;\n", "import React from \"react\";\n\nimport cn from \"classnames\";\n\nimport Langs from \"../../../../Langs\";\n\nimport \"../Table.scss\";\n\nconst TdHeader = ({ item, testId = \"td-header\" }) => {\n const txt = Langs[global.lng];\n\n switch (item.type) {\n case \"double\":\n return (\n <th data-testid={testId}>\n <div className=\"j46\">\n <div className=\"\">{txt.labels[item.left] || item.left}</div>\n <div className=\"\">{txt.labels[item.right] || item.right}</div>\n </div>\n </th>\n );\n default:\n return (\n <th data-testid={testId} className={cn(item.className)}>\n <div className={cn({ df: item.button })}>\n <div className=\"mr5\">{txt.labels[item.label] || item.label}</div>\n {item.button && (\n <div className=\"cards-table__btn\">\n {txt.buttons[item.button] || item.button}\n </div>\n )}\n </div>\n </th>\n );\n }\n};\n\nexport default TdHeader;\n", "const Langs = {\n en: {\n auth: {},\n settings: {},\n labels: {\n industries: \"Industries\",\n includedLenders: \"Included Lenders\",\n admin: \"Administrator\",\n user: \"User\",\n help: \"Help\",\n description: \"Description\",\n value: \"Value\",\n paramName: \"Parameter name(key)\",\n active: \"Active\",\n pause: \"Pause\",\n error: \"Error\",\n sold: \"Sold\",\n processing: \"Processing\",\n home: \"Home\",\n goods: \"Goods\",\n improvement: \"Improvement\",\n jewelry: \"Jewelry\",\n firstName: \"First Name\",\n lastName: \"Last Name\",\n dateOfBirth: \"Date of Birth\",\n militaryStatus: \"Military status\",\n ssn: \"SSN\",\n lengthAtAddress: \"Length At Address\",\n rentOrOwn: \"Rent or Own\",\n zip: \"ZIP\",\n city: \"City\",\n state: \"State\",\n address: \"Address\",\n email: \"E-mail\",\n homePhone: \"Home Phone\",\n cellPhone: \"Cell Phone\",\n contactTime: \"Contact Time\",\n dlState: \"DL state\",\n dlNumber: \"DL number\",\n ownCar: \"Do you own a car?\",\n tcpaOptin: \"TCPA OPTIN\",\n incomeSource: \"Income Source\",\n timeEmployed: \"Time Employed\",\n jobTitle: \"Job Title\",\n currentEmployer: \"Current Employer\",\n employersPhone: \"Employer's Phone\",\n netMonthlyIncome: \"Net monthly income\",\n howOftenIsPaid: \"How often is paid\",\n nextPayDate: \"Next Pay Date\",\n secondPayDate: \"Second Pay Date\",\n loanAmount: \"Loan amount\",\n ip: \"IP\",\n storyName: \"Story name\",\n channelName: \"Channel name\",\n employmentInfo: \"Employment Information\",\n personalDetails: \"Personal Details\",\n offer: \"Offer\",\n offers: \"Offers\",\n status: \"Status\",\n name: \"Name\",\n from: \"From\",\n to: \"to\",\n periodMonths: \"Period (months)\",\n loansSent: \"Loans Sent\",\n approved: \"Approved\",\n rejected: \"Rejected\",\n loanAmountApproved: \"Loan Amount Approved ($)\",\n loanAmountRejected: \"Loan Amount Rejected ($)\",\n approveRate: \"Approve Rate (%)\",\n actions: \"Actions\",\n locations: \"Locations\",\n score: \"Score\",\n priority: \"Priority\",\n lender: \"Lender\",\n weight: \"Weight\",\n selectLender: \"Select lender\",\n },\n singulars: {},\n titles: {\n pingTree: \"Ping tree\",\n edit: \"Edit\",\n create: \"Create\",\n add: \"Add\",\n consumerInfo: \"Consumer info\",\n personalDetails: \"Personal Details\",\n employmentInfo: \"Employment Information\",\n tools: \"Tools\",\n lenders: \"Lenders\",\n settings: \"Settings\",\n dashboard: \"Dashboard\",\n consumers: \"Consumers\",\n ticketDesk: \"Ticket desk\",\n accounting: \"Accounting\",\n users: \"Users\",\n merchants: \"Merchants\",\n lenderPingTree: \"Lender Ping Tree\",\n reports: \"Reports\",\n leads: \"Leads\",\n location: \"Location\",\n mainMenu: \"Main menu\",\n partners: \"Partners\",\n other: \"Other\",\n homeGoodsAndInteriorDesign: \"Home Goods and Interior Design\",\n },\n placeholders: {\n typeName: \"Type name\",\n params: \"Params placeholder\",\n value: \"Value placeholder\",\n description: \"Description placeholder\",\n },\n hints: {\n landerNotIncluded:\n \"Lender is not included in Ping Tree by the \u201CHome Goods\u201D industry\",\n noMerchants: \"No Merchants for the \u201CHome Goods\u201D industry\",\n },\n buttons: {\n create: \"Create\",\n edit: \"Edit\",\n add: \"Add\",\n close: \"Close\",\n apply: \"Apply\",\n pingTree: \"Ping tree\",\n addRow: \"Add row\",\n consumerInfo: \"Consumer Info\",\n deletePingTree: \"Delete Ping Tree\",\n cancel: \"Cancel\",\n },\n radioButtons: {},\n weekDays: {\n su: \"Su\",\n mo: \"Mo\",\n tu: \"Tu\",\n we: \"We\",\n th: \"Th\",\n fr: \"Fr\",\n sa: \"Sa\",\n },\n alerts: {\n lendersWillBeRemoved: \"lenders will be removed\",\n },\n checkboxes: {\n homeGoods: \"Home Goods\",\n travel: \"Travel\",\n energyImprovement: \"Energy Improvement\",\n jewelryIncluded: \"Jewelry (included in PingTree name 2)\",\n jewelry: \"Jewelry\",\n autoRepair: \"Auto Repair\",\n cosmetics: \"Cosmetics\",\n health: \"Health\",\n },\n errors: {},\n texts: {},\n tabs: {\n general: \"General\",\n payments: \"Payments\",\n filters: \"Filters\",\n offers: \"Offers\",\n merchants: \"Merchants\",\n integration: \"Integration\",\n customDetails: \"Custom details\",\n customerDetails: \"Customer details\",\n postsLog: \"Posts log\",\n },\n toasts: {},\n },\n};\n\nexport default Langs;\n", "import React, { useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport { handleObjectChange } from \"../../../../Functions/utils\";\nimport Modal from \"../../Modal/Modal\";\nimport TdRange from \"../TdTypes/TdRange\";\n\nimport TdCell from \"./TdCell\";\n\nimport \"../Table.scss\";\n\nconst TdRow = ({\n item,\n onChange,\n rowIndex,\n cardStatus,\n range,\n type,\n rowSpan,\n colSpan,\n cardLength,\n changePriority,\n getAdviceWeight,\n onActionClick,\n isDeleted,\n testId = \"td-row\",\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleChange = handleObjectChange(item, () => onChange({ ...item }));\n\n return (\n <>\n <tr data-testid={testId}>\n {type && rowSpan && (\n <td className=\"rel\" rowSpan={rowSpan + 1}>\n <span\n className={cn(\n type && `cards-table__score cards-table__score-${cardStatus}`,\n )}\n >\n <TdRange item={range} />\n </span>\n </td>\n )}\n\n {Object.entries(item).map(([key, value]) =>\n key === \"id\" || key === \"isDeleted\" ? null : (\n <td\n key={key}\n className={cn(\"cards-table__body-item\", {\n \"cards-table__accordion\": value.type === \"accordion\",\n })}\n >\n <TdCell\n onActionClick={onActionClick}\n changePriority={changePriority}\n cardLength={cardLength}\n rowIndex={rowIndex}\n rowItem={item}\n type={key}\n item={value}\n onChange={(newValue) => handleChange(newValue, key)}\n getAdviceWeight={getAdviceWeight}\n isDeleted={isDeleted}\n />\n </td>\n ),\n )}\n </tr>\n\n {type && colSpan ? (\n <tr>\n <td />\n <td colSpan={colSpan}>\n <span\n className=\"cards-table__title-select-lender-btn\"\n onClick={() => setIsOpen(true)}\n >\n Select Lender\n </span>\n\n <Modal\n closeModal={() => setIsOpen(false)}\n isOpen={isOpen}\n title=\"Choose Lender\"\n size=\"420\"\n >\n test\n </Modal>\n </td>\n </tr>\n ) : null}\n </>\n );\n};\n\nexport default TdRow;\n", "const TdRange = ({ item }) => {\n if (!item) return false;\n\n return (\n <div>\n <span>{item.from}</span>\n <span> - </span>\n <span>{item.to}</span>\n </div>\n );\n};\n\nexport default TdRange;\n", "import React, { useState } from \"react\";\n\nimport AccordionItem from \"../../Accordion/AccordionItem\";\nimport AdvancedTags from \"../../AdvancedTag/AdvancedTags\";\nimport Status from \"../../Status/Status\";\nimport Tag from \"../../Tag/Tag\";\nimport Table from \"../Table\";\nimport { TdActions } from \"../TdTypes/TdActions\";\nimport TdPriority from \"../TdTypes/TdPriority\";\nimport TdWeight from \"../TdTypes/TdWeight\";\n\nimport \"../Table.scss\";\n\nconst TdCell = ({\n type,\n item,\n rowIndex,\n onChange,\n cardLength,\n changePriority,\n getAdviceWeight,\n onActionClick,\n rowItem,\n isDeleted,\n}) => {\n const [isAccordionOpen, setIsAccordionOpen] = useState(item.isOpen);\n\n const percent =\n item.type === \"weight\" && getAdviceWeight(isDeleted ? 0 : item.value);\n\n switch (type) {\n case \"accordion\":\n return (\n <AccordionItem\n className={item.itemClassName}\n item={item}\n isOpen={isAccordionOpen}\n onClick={(e) => setIsAccordionOpen(e)}\n >\n <Table rows={item.rows} className=\"accordion--table\" />\n </AccordionItem>\n );\n case \"actions\":\n return (\n <TdActions\n rowItem={rowItem}\n actions={item}\n onChange={onChange}\n onActionClick={onActionClick}\n />\n );\n case \"advancedTags\":\n return <AdvancedTags items={item} />;\n case \"link\":\n return <a href={item.link}>{item.label}</a>;\n case \"priority\":\n return (\n <TdPriority\n rowIndex={rowIndex}\n cardLength={cardLength}\n onClick={changePriority}\n />\n );\n case \"status\":\n return (\n <Status\n className={item.className}\n label={item.label}\n status={item.status}\n />\n );\n case \"tags\":\n return item.map((tag, index) => <Tag key={index} label={tag.label} />);\n case \"weight\":\n return (\n <TdWeight\n value={item.value}\n percent={percent}\n onChange={(value) => onChange({ ...item, value })}\n />\n );\n default:\n return <span className={item.className}>{item.value}</span>;\n }\n};\n\nexport default TdCell;\n", "import React, { useState } from \"react\";\n\nimport * as Icons from \"react-feather\";\n\nimport Switcher from \"../../../FormElements/Switcher/Switcher\";\n\nimport \"./TdTypes.scss\";\n\nexport const TdActions = ({ actions, onChange, onActionClick, rowItem }) => {\n if (!actions) return false;\n\n const [state, setState] = useState(actions);\n\n const handleArrayChange = (value, index, prop) => {\n state[index][prop] = value;\n setState([...state]);\n onChange(state);\n };\n\n return (\n <div className=\"j6\">\n {actions?.map((action, index) => {\n switch (action.type) {\n case \"download\":\n return (\n <div\n key={index}\n className=\"td-actions--item td-actions--download\"\n onClick={() => {}}\n >\n <Icons.Download />\n </div>\n );\n case \"edit\":\n return (\n <div\n key={index}\n className=\"td-actions--item td-actions--edit\"\n onClick={() => {}}\n >\n <Icons.Edit3 />\n </div>\n );\n case \"delete\":\n return (\n <div\n key={index}\n className=\"td-actions--item td-actions--delete\"\n onClick={() => onActionClick(\"delete\", rowItem)}\n >\n <Icons.Trash2 />\n </div>\n );\n case \"undo\":\n return (\n <div\n key={index}\n className=\"td-actions--item td-actions--undo\"\n onClick={() => onActionClick(\"undo\", rowItem)}\n >\n <Icons.RotateCcw />\n </div>\n );\n case \"switcher\":\n return (\n <div key={index} className=\"df\">\n <Switcher\n label={action.label || null}\n isActive={action?.value}\n onChange={(e) => handleArrayChange(e, index, \"value\")}\n />\n </div>\n );\n default:\n return null;\n }\n })}\n </div>\n );\n};\n", "import type { ISwitcherProps } from './Switcher.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport Hint from '../../UI/Hint/Hint';\n\nimport './Switcher.scss';\n\nconst RC = 'switcher';\n\nconst Switcher: React.FC<ISwitcherProps> = ({\n label,\n className,\n isActive,\n disabled,\n onChange,\n isLabelBold,\n hint,\n hintSide,\n testId = 'switcher',\n}) => {\n return (\n <div\n data-testid={testId}\n className={cn(RC, className, { [`${RC}_disabled`]: disabled })}\n >\n <button\n type=\"button\"\n data-testid={`${testId}-button`}\n className={cn(`${RC}__button`)}\n disabled={disabled}\n onClick={e => onChange(!isActive, e)}\n >\n <div\n className={cn(`${RC}__button-content`, {\n [`${RC}__button-content_active`]: isActive,\n })}\n >\n <div className={`${RC}__ball`} />\n </div>\n {label && (\n <span\n className={cn(`${RC}__label`, {\n [`${RC}__label_bold`]: isLabelBold,\n })}\n >\n {label}\n </span>\n )}\n </button>\n {hint && <Hint className={`${RC}__hint`} hint={hint} side={hintSide} />}\n </div>\n );\n};\n\nexport default Switcher;\n", "import React from \"react\";\n\nimport cn from \"classnames\";\nimport { ArrowDown, ArrowUp } from \"react-feather\";\n\nimport \"../Table.scss\";\n\nconst TdPriority = ({ onClick, rowIndex, cardLength }) => {\n return (\n <div className=\"cards-table__priority\">\n <span className=\"mr5\">{rowIndex + 1}</span>\n <div className=\"df\">\n <ArrowDown\n onClick={() => onClick(rowIndex)}\n className={cn(\"table--icon\", {\n disabled: rowIndex + 1 === cardLength,\n })}\n />\n <ArrowUp\n onClick={() => onClick(rowIndex, true)}\n className={cn(\"table--icon\", { disabled: rowIndex === 0 })}\n />\n </div>\n </div>\n );\n};\n\nexport default TdPriority;\n", "import { useEffect, useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport { useOutsideToggle } from \"../../../../Functions/utils\";\nimport { KEY_CODE } from \"../../Modal/Modal\";\n\nimport \"../Table.scss\";\n\nconst TdWeight = ({ value, percent, onChange, className }) => {\n const [state, setState] = useState(value);\n const {\n isToggled: isEdited,\n toggleOff: unsetIsEdited,\n toggleOn: setIsEdited,\n } = useOutsideToggle(false);\n\n useEffect(() => {\n setState(value);\n }, [value, isEdited]);\n\n const handleKeyUp = ({ keyCode, target }) => {\n if (keyCode === KEY_CODE.ENTER) {\n const newValue = Number(target.value) || 1;\n onChange(newValue);\n unsetIsEdited();\n }\n };\n\n return (\n <>\n {isEdited ? (\n <Input\n value={state}\n onChange={(e) => setState(e)}\n onBlur={unsetIsEdited}\n onKeyUp={handleKeyUp}\n autoFocus\n />\n ) : (\n <div className={cn(\"td-weight\", className)} onClick={setIsEdited}>\n <span>{value}</span>\n <span className=\"ml2 color--grey-gull\">\n ({percent}\n %)\n </span>\n </div>\n )}\n </>\n );\n};\n\nexport default TdWeight;\n", "import Tag from './Tag';\n\nexport default Tag;\nexport type { ITagProps } from './Tag.interface';\n", "import type { ITagProps } from '../Tag/Tag.interface';\n\nimport type { ITagListProps } from './TagList.interface';\nimport cn from 'classnames';\n\nimport {\n createRef,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { Edit3 } from 'react-feather';\n\nimport { checkedRef } from '../../../Functions/utils';\nimport Tag from '../Tag/Tag';\nimport './TagList.scss';\n\nconst TagList: React.FC<ITagListProps> = ({\n disabled,\n className,\n onTagClick,\n removeItem,\n items,\n withToggle = true,\n disableShowMore = false,\n shownItemsCount = 'auto',\n testId = 'test-taglist',\n refProp,\n\n renderOrder,\n\n onEditClick,\n onToggleRenderAll,\n isUseInTable,\n}) => {\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const [tagList, setTagList] = useState<(ITagProps & { itemRef: React.RefObject<HTMLDivElement> })[]>([]);\n\n const [staticTagsCount, setStaticTagsCount] = useState(-1);\n const [renderItemsCount, setRenderItemsCount] = useState(-1);\n const [renderAll, setRenderAll] = useState(!withToggle);\n\n const wrapperWidth\n = wrapperRef?.current?.getBoundingClientRect()?.width ?? -1;\n\n const setRenderAllInterceptor = (v: boolean, event: any): void => {\n setRenderAll(v);\n onToggleRenderAll?.(v);\n event?.stopPropagation();\n event?.preventDefault();\n };\n\n const getStaticTagsCount = (computedWidth: number): number => {\n if (typeof shownItemsCount === 'number') return shownItemsCount;\n\n const delta = typeof onEditClick === 'function' ? 60 : 32;\n const result = tagList.reduce <{\n count: number;\n width: number;\n items: { w: number; r: HTMLDivElement | null }[];\n skip?: boolean;\n }>((result, { itemRef }, index) => {\n if (result.skip) return result;\n\n const itemStyle\n = itemRef?.current && window.getComputedStyle(itemRef.current);\n\n const itemWidth = [\n Number.parseInt((itemRef.current?.getBoundingClientRect()?.width ?? 0).toString(), 10),\n Number.parseInt((itemStyle?.marginLeft ?? 0).toString(), 10),\n Number.parseInt((itemStyle?.marginRight ?? 0).toString(), 10),\n ].reduce((result, item) => {\n if (!Number.isNaN(item)) result += item;\n return result;\n }, 0);\n\n if (\n (!Number.isNaN(itemWidth)\n && itemWidth > 0\n && itemWidth + result.width < computedWidth - delta)\n || index === 0\n ) {\n result = {\n count: result.count + 1,\n width: result.width + itemWidth,\n items: [...result.items, { w: itemWidth, r: itemRef?.current }],\n };\n }\n else {\n result.skip = true;\n }\n\n return result;\n }, { count: 0, width: 0, items: [], skip: false });\n if (result?.items?.length === 1 && result.items[0].r && tagList.length > 1) {\n result.items[0].r.style.maxWidth = `${computedWidth - delta - 8}px`;\n }\n\n return result?.count;\n };\n\n const cancelDefault = (_e: string | undefined, cb: () => void): void => {\n cb?.();\n };\n\n const renderTags = (): (JSX.Element | null)[] => {\n const tagsRenderOrder\n = renderOrder ?? tagList.map(({ value, id }) => id ?? value);\n\n return tagsRenderOrder.map((v, i) => {\n const item = tagList.find(({ value, id }) => {\n // \u041D\u0415 \u0420\u0415\u0424\u0410\u041A\u0422\u041E\u0420\u0418\u0422\u042C \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u0447\u0435\u0440\u0435\u0437 || \u0434\u0430\u0435\u0442 \u043D\u0435\u043E\u0431\u044A\u044F\u0441\u043D\u0438\u043C\u044B\u0439 \u0441\u0430\u0439\u0434 \u044D\u0444\u0444\u0435\u043A\u0442\n if (id) return id === v; // \u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u0438\u0449\u0435\u043C \u043F\u043E id\n if (value) return value === v; // \u043F\u043E\u0442\u043E\u043C \u043F\u043E value\n return false;\n });\n\n if (!item) return null;\n\n const isHidden\n = renderItemsCount !== -1 && staticTagsCount !== -1\n ? i >= renderItemsCount\n : false;\n\n return (\n <div\n className={`tag-list_wrapper_item ${isHidden ? 'tag-list_wrapper_item--hidden' : ''}`}\n key={`tag-list-item-${item?.id ?? item?.value}`}\n ref={checkedRef(item?.itemRef)}\n >\n <Tag\n testId={`test-taglist-item-${item?.id ?? item?.value}`}\n {...item}\n onClick={onTagClick}\n removeItem={removeItem}\n isUseInTable={isUseInTable}\n />\n </div>\n );\n });\n };\n\n const renderMoreTags = (): JSX.Element | null => {\n if (\n (typeof shownItemsCount === 'number' && tagList?.length < shownItemsCount)\n || !tagList?.length\n || disableShowMore\n ) {\n return null;\n }\n const restItems = tagList.length - renderItemsCount;\n\n if (restItems === 0 || !withToggle || staticTagsCount === -1) return null;\n\n return (\n <Tag\n label={`+${restItems}`}\n className=\"tag-list_wrapper_render-more\"\n onClick={\n disableShowMore\n ? () => {}\n : (value, event) => cancelDefault(value, () => setRenderAllInterceptor(true, event))\n }\n isUseInTable={isUseInTable}\n />\n );\n };\n const renderHideTags = (): JSX.Element | null => {\n if (\n renderItemsCount !== tagList?.length\n || !withToggle\n || staticTagsCount === -1\n || staticTagsCount === tagList?.length\n ) {\n return null;\n }\n\n return (\n <Tag\n label=\"...\"\n className=\"tag-list_wrapper_hide-more\"\n onClick={(value, event) => cancelDefault(value, () => setRenderAllInterceptor(false, event))}\n isUseInTable={isUseInTable}\n />\n );\n };\n\n // Set TagList Items\n useEffect(() => {\n setStaticTagsCount(-1);\n setRenderItemsCount(-1);\n setRenderAllInterceptor(false, null);\n const itemsWithRef = items.map(item => ({ ...item, itemRef: createRef<HTMLDivElement>() }));\n setTagList(itemsWithRef);\n }, [items]);\n\n // Count Row Tags\n useLayoutEffect(() => {\n if (withToggle && wrapperWidth !== -1 && staticTagsCount === -1) {\n let computedWidth = wrapperWidth;\n\n if (computedWidth === 0) {\n computedWidth = Number.parseInt(\n (wrapperRef?.current\n ? window.getComputedStyle(wrapperRef?.current)?.width\n : 0).toString(),\n );\n }\n\n if (!Number.isNaN(computedWidth)) {\n setStaticTagsCount(getStaticTagsCount(computedWidth));\n }\n }\n }, [tagList, wrapperWidth, wrapperRef?.current]);\n\n //\n useLayoutEffect(() => {\n setRenderItemsCount(staticTagsCount);\n }, [staticTagsCount]);\n\n // Toggle Show/Hide More Tags\n useEffect(() => {\n setRenderItemsCount(renderAll ? tagList?.length : staticTagsCount);\n }, [renderAll]);\n\n useEffect(() => {\n if (wrapperRef?.current && refProp) refProp.current = wrapperRef?.current;\n }, [wrapperRef?.current]);\n\n return (\n <div\n data-testid={testId}\n className={cn(\n 'tag-list_wrapper',\n `${\n renderItemsCount !== tagList?.length\n || !withToggle\n || staticTagsCount === -1\n || staticTagsCount === tagList?.length\n ? 'tag-list_wrapper--only-static-items'\n : 'tag-list_wrapper--all-items'\n }`,\n className,\n { 'tag-list_wrapper--disabled': disabled },\n )}\n style={{\n visibility: staticTagsCount === -1 ? 'hidden' : 'visible',\n zIndex: staticTagsCount === -1 ? '-1' : 'auto',\n }}\n ref={wrapperRef}\n >\n {renderTags()}\n {renderMoreTags()}\n {renderHideTags()}\n {typeof onEditClick === 'function' && (\n <div className=\"tag-list__edit-trigger\">\n <Edit3 onClick={onEditClick} />\n </div>\n )}\n </div>\n );\n}\n\nexport default TagList;\n", "import type { ReactNode } from 'react';\nimport type { IUserBoxProps } from './UserBox.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\nimport { getColorById } from '../../../Functions/utils';\n\nimport Label from '../../FormElements/Label/Label';\nimport Button from '../Button/Button';\n\nimport './UserBox.scss';\n\nconst UserBox: React.FC<IUserBoxProps> = ({\n name = 'Username',\n role,\n id,\n onClick,\n isModal,\n className,\n colors,\n testId = 'userbox',\n}) => {\n const getNameFirstLetter = name.charAt(0).toUpperCase();\n\n const renderUser = (): ReactNode => {\n if (isModal) {\n return (\n <>\n <div style={{ backgroundColor: getColorById(id, colors) }} className=\"td-user-box__avatar\">\n {getNameFirstLetter}\n </div>\n <div className=\"td-user-box__user-data\">\n <Button className=\"p0 no-shadow\" onClick={onClick} label={name} variant=\"link\" />\n {role && <span>{role}</span>}\n </div>\n </>\n );\n }\n else {\n return (\n <>\n <div style={{ backgroundColor: getColorById(id) }} className=\"td-user-box__avatar\">\n {getNameFirstLetter}\n </div>\n <div className=\"td-user-box__user-data\">\n <Label label={name} />\n {role && <span aria-label={`User role: ${role}`}>{role}</span>}\n </div>\n </>\n );\n }\n };\n\n return (\n <div\n data-testid={testId}\n className={cn('td-user-box', className)}\n role=\"region\"\n aria-label={`User box for ${name}`}\n >\n {renderUser()}\n </div>\n );\n};\n\nexport default UserBox;\n", "import type { ILabelProps } from './Label.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport Hint from '../../UI/Hint/Hint';\n\nimport './Label.scss';\n\nconst CN = 'label';\n\nconst Label: React.FC<ILabelProps> = ({\n className = '',\n label = '',\n note,\n hint,\n isRequired,\n isLabelBolt,\n onClickHintCallback,\n error = null,\n isAccessability = false,\n isAccessabilityHint = false,\n testId = CN,\n}) => {\n const correctLabel = isRequired\n ? (\n <>\n {label}\n {' '}\n <span className=\"label_asterisk\">*</span>\n {' '}\n {note && <span className=\"label_note\">{note}</span>}\n {hint && (\n <Hint\n key={`hint-${label}`}\n id={`hint-${label}`}\n children={null}\n isLoading={false}\n isAccessability={isAccessabilityHint}\n hint={hint.text}\n icon={hint.icon}\n variant={hint.variant}\n side={hint.hintSide}\n className=\"label-hint\"\n onClickCallback={onClickHintCallback}\n />\n )}\n </>\n )\n : (\n <>\n {label}\n {' '}\n {note && <span className=\"label_note\">{note}</span>}\n {hint && (\n <Hint\n isAccessability={isAccessabilityHint}\n hint={hint.text}\n icon={hint.icon}\n variant={hint.variant}\n side={hint.hintSide}\n className=\"label-hint\"\n onClickCallback={onClickHintCallback}\n key={undefined}\n id={undefined}\n children={undefined}\n isLoading={undefined}\n />\n )}\n </>\n );\n\n return (\n <span\n tabIndex={isAccessability ? 0 : -1}\n aria-label={label}\n className={cn(CN, { label_bold: isLabelBolt, error, isRequired }, className)}\n data-testid={testId}\n >\n <span className=\"label_text\" data-testid=\"label-text\">\n {correctLabel}\n </span>\n </span>\n );\n};\n\nexport default Label;\n", "import UserBox from './UserBox';\n\nexport default UserBox;\nexport type { IUserBoxProps } from './UserBox.interface';\n", "import type { IStepWrapperProps } from '../../WizardStepper.interface';\nimport classNames from 'classnames';\n\nimport React from 'react';\nimport Box from '../../../Box/Box';\nimport { alternativeIconSet } from '../icons';\nimport StepRow from '../StepRow/StepRow';\n\nimport './StepWrapper.scss';\n\nconst StepWrapper: React.FC<IStepWrapperProps> = ({\n steps,\n customIcons,\n variant = 'default',\n className,\n testId = 'step-wrapper',\n}) => {\n if (!steps?.length) return <div data-testid=\"empty-state\">No steps available</div>;\n\n const renderStepRow = (step: IStepWrapperProps['steps'][number]): JSX.Element => {\n const { key, ...stepProps } = step;\n return (\n <StepRow\n key={key}\n {...stepProps}\n customIcons={customIcons || alternativeIconSet}\n />\n );\n };\n\n switch (variant) {\n case 'ghost':\n return (\n <Box\n className={classNames('step-wrapper', 'step-wrapper-ghost', className)}\n data-testid={testId}\n >\n {steps?.map(renderStepRow)}\n </Box>\n );\n case 'cardActive':\n return (\n <div\n className={classNames('step-wrapper', 'step-wrapper-card-active', className)}\n data-testid={testId}\n >\n {steps?.map(renderStepRow)}\n </div>\n );\n default:\n return (\n <div\n className={classNames('step-wrapper', className)}\n data-testid={testId}\n >\n {steps?.map(renderStepRow)}\n </div>\n );\n }\n};\n\nexport default StepWrapper;\n", "import React from 'react';\n\nconst DoneIcon: React.FC<React.SVGProps<SVGSVGElement>> = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"20\" height=\"20\" rx=\"10\" fill=\"#69A457\" />\n <mask id=\"mask0_54394_4001\" style={{ maskType: 'alpha' }} maskUnits=\"userSpaceOnUse\" x=\"2\" y=\"2\" width=\"16\" height=\"16\">\n <path d=\"M14.5 7L9 12.5L6 9.5\" stroke=\"black\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </mask>\n <g mask=\"url(#mask0_54394_4001)\">\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" fill=\"white\" />\n </g>\n </svg>\n)\n\nconst TodoIcon: React.FC<React.SVGProps<SVGSVGElement>> = () => {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_54394_4448)\">\n <circle cx=\"10\" cy=\"10\" r=\"7\" fill=\"white\" stroke=\"#B3B8CB\" strokeWidth=\"2\" />\n </g>\n <defs>\n <clipPath id=\"clip0_54394_4448\">\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(2 2)\" />\n </clipPath>\n </defs>\n </svg>\n\n );\n};\n\nconst ActiveIcon: React.FC<React.SVGProps<SVGSVGElement>> = () => {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"20\" height=\"20\" rx=\"10\" fill=\"#E8F9E5\" />\n ii\n <mask id=\"mask0_54394_1459\" style={{ maskType: 'alpha' }} maskUnits=\"userSpaceOnUse\" x=\"2\" y=\"2\" width=\"16\" height=\"16\">\n <circle cx=\"10\" cy=\"10\" r=\"4\" fill=\"#171D33\" />\n </mask>\n <g mask=\"url(#mask0_54394_1459)\">\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" fill=\"#171D33\" />\n </g>\n </svg>\n\n );\n};\n\nexport const alternativeIconSet: {\n defaultIcon: React.ReactElement;\n doneIcon: React.ReactElement;\n activeIcon: React.ReactElement;\n} = {\n defaultIcon: <TodoIcon />,\n doneIcon: <DoneIcon />,\n activeIcon: <ActiveIcon />,\n};\n", "import type { IStepRowProps } from '../../WizardStepper.interface';\nimport cn from 'classnames';\nimport React from 'react';\nimport Status from '../../../Status/Status';\nimport { WIZARD_STEP_VARIANTS } from '../../constructor';\nimport StateIcon from '../StateIcon';\nimport './StepRow.scss';\n\nconst RC = 'step-row';\n\nconst { DEFAULT, ACTIVE, DONE } = WIZARD_STEP_VARIANTS;\n\nconst StepRow: React.FC<IStepRowProps> = ({\n label,\n description,\n className,\n isOptional,\n isFinished,\n isActive,\n titleSlot,\n contentSlot,\n customIcons,\n}) => {\n const title = label;\n\n const rowVariant = (() => {\n if (isActive) return ACTIVE;\n if (isFinished) return DONE;\n return DEFAULT;\n })();\n\n const alternaviteIconFromProps = (() => {\n if (isActive) return customIcons?.activeIcon;\n if (isFinished) return customIcons?.doneIcon;\n return customIcons?.defaultIcon;\n })();\n\n const CorrectIcon: React.FC = () => {\n if (!customIcons || Object?.values(customIcons)?.every(icon => !icon)) {\n return <StateIcon variant={rowVariant} />;\n }\n\n return alternaviteIconFromProps as React.ReactElement<any, any> || null;\n };\n\n return (\n <div key={label} className={cn(RC, `${RC}--${rowVariant}`, className)}>\n <div className={cn(`${RC}__state-point`, `${RC}__state-point--${rowVariant}`)}>\n <CorrectIcon />\n </div>\n\n <div className={`${RC}__content`}>\n <div className={`${RC}__title`}>\n <div className={`${RC}__title-left`}>\n <div className={cn(`${RC}__title-text`, { 'text-muted': rowVariant === DEFAULT })}>\n {title}\n </div>\n {isOptional && <Status label=\"Optional\" status=\"draft\" />}\n </div>\n\n {titleSlot && (\n <div className={`${RC}__title-right`}>\n {titleSlot}\n </div>\n )}\n </div>\n\n {description && <div className={`${RC}__description`}>{description}</div>}\n {contentSlot && <div className={`${RC}__body`}>{contentSlot}</div>}\n </div>\n </div>\n );\n};\n\nexport default StepRow;\n", "import React from 'react';\nimport Status from '../Status/Status';\nexport const WIZARD_STEP_VARIANTS = Object.freeze({\n DEFAULT: 'default',\n DONE: 'done',\n ACTIVE: 'active',\n});\n\nconst JSXMockComponent = () => {\n const arr = [\n { title: 'Requested Amont', value: '$15,000' },\n { title: 'Repayment Amount', value: '$15,001' },\n { title: 'Repayment Date', value: '12/12/2021' },\n ]\n\n const textStyles = {\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '20px',\n letterSpacing: '0.2px'\n };\n\n return arr.map(row => {\n return <div style={{ display: 'flex', justifyContent: 'space-between', maxWidth: '250px'}}>\n <span style={textStyles}>{row.title}</span>\n <span style={textStyles}>{row.value}</span>\n </div>\n });\n}\n\nexport const mockData = [\n {\n key: 'businessInfo',\n label: 'Provide Business Info',\n description: 'This information will help us to evaluate your application',\n isFinished: true,\n },\n {\n key: 'principal',\n label: 'Add Principal Information',\n description: 'A principal is essentially another name for a company owner. At some corporations, the principal is also the founder, CEO, or even the chief investor',\n isFinished: true,\n isOptional: true,\n },\n {\n key: 'coOwners',\n label: 'Add Co-Owners',\n description: '{merchantName} will receive that amount from {lenderNmae}',\n isActive: true,\n titleSlot: <span className='custom-title-slot'>$15,001</span>,\n contentSlot: <JSXMockComponent />,\n },\n {\n key: 'bankAccount',\n label: 'Add a Bank Account',\n description: 'Your bank account information will be used to securely and automatically transfer the funds',\n titleSlot: <Status label=\"Some JSX\" status=\"draft\" />,\n },\n {\n key: 'documents',\n label: 'Upload Documents',\n description: 'Please upload the required documents',\n },\n {\n key: 'review',\n label: 'Review & Submit',\n description: 'Please review the information and submit your application',\n },\n {\n key: 'success',\n label: 'Success',\n description: 'Your application has been submitted successfully',\n },\n {\n key: 'failure',\n label: 'Failure',\n description: 'Your application has been failed',\n },\n {\n key: 'pending',\n label: 'Pending',\n description: 'Your application is under review',\n },\n]\n", "import type { IStateIconProps } from '../../WizardStepper.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\nimport { WIZARD_STEP_VARIANTS } from '../../constructor';\n\nimport './StateIcon.scss';\n\nconst DefaultPoint: React.FC = () => {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <circle cx=\"8\" cy=\"8\" r=\"4\" />\n </svg>\n );\n};\n\nconst DonePoint: React.FC = () => {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M12.5 5L7 10.5L4 7.5\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n};\n\nconst RC = 'state-icon';\n\nconst { ACTIVE, DEFAULT, DONE } = WIZARD_STEP_VARIANTS;\n\nexport const StateIcon: React.FC<IStateIconProps> = ({ variant = DEFAULT, className }) => {\n const computedState = variant === ACTIVE || variant === DONE ? variant : DEFAULT;\n\n const Inner = {\n [DEFAULT]: <DefaultPoint />,\n [ACTIVE]: <DefaultPoint />,\n [DONE]: <DonePoint />,\n };\n\n return <div className={cn(RC, `${RC}--${computedState}`, className)}>{Inner[computedState]}</div>;\n};\n", "import { StateIcon } from './StateIcon';\n\nexport default StateIcon;\n", "import StepWrapper from './StepWrapper';\n\nexport default StepWrapper;\n", "import StepWrapper from './StepWrapper';\n\nexport default StepWrapper;\n", "import WizardStepper from './ui';\n\nexport default WizardStepper;\nexport type { IStateIconProps, IStepRowProps, IStepWrapperProps } from './WizardStepper.interface';\n"],
5
- "mappings": "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",
6
- "names": ["cn", "useState", "Icons", "NavLink", "cn", "useEffect", "Status_default", "jsx", "jsxs", "useEffect", "cn", "Status_default", "jsx", "jsxs", "useState", "cn", "Icons", "NavLink", "Accordion_default", "React", "useEffect", "useState", "cn", "React", "useEffect", "useRef", "useState", "cn", "jsx", "jsxs", "useState", "useRef", "useEffect", "cn", "jsx", "jsxs", "useState", "cn", "useEffect", "useEffect", "useRef", "useState", "React", "cn", "ChevronDown", "jsx", "jsxs", "useRef", "useState", "useEffect", "cn", "ChevronDown", "cn", "useState", "cn", "useEffect", "useRef", "useState", "cn", "jsx", "jsxs", "CN", "cn", "Spinner_default", "jsx", "jsxs", "CN", "defaultOnClick", "Tag", "useRef", "useState", "x", "y", "height", "width", "useEffect", "cn", "Spinner_default", "cn", "useEffect", "useRef", "useState", "AlertTriangle", "jsx", "jsxs", "useState", "useRef", "cn", "useEffect", "AlertTriangle", "jsx", "jsxs", "useState", "cn", "cn", "useState", "X", "cn", "jsx", "jsxs", "RC", "cn", "jsx", "jsxs", "useState", "X", "cn", "Alert_default", "cn", "useEffect", "useRef", "useState", "jsx", "jsxs", "useRef", "useState", "useEffect", "cn", "cn", "jsx", "cn", "cn", "jsx", "jsxs", "cn", "ButtonsBar_default", "React", "useEffect", "useState", "cn", "jsx", "jsxs", "useState", "useEffect", "cn", "cn", "moment", "useMemo", "jsx", "jsxs", "RC", "useMemo", "moment", "cn", "cn", "useState", "ChevronDown", "ChevronUp", "jsx", "jsxs", "useState", "cn", "ChevronUp", "ChevronDown", "useState", "jsx", "useState", "cn", "moment", "useEffect", "useRef", "useState", "Fragment", "jsx", "jsxs", "RC", "useState", "moment", "useRef", "useEffect", "cn", "DoubleString_default", "cn", "useEffect", "useRef", "useState", "createPortal", "AlertTriangle", "jsx", "jsxs", "Fragment", "jsx", "jsxs", "useRef", "useState", "className", "cn", "createPortal", "useEffect", "AlertTriangle", "Hint_default", "cn", "useEffect", "useLayoutEffect", "useMemo", "useRef", "useEffect", "useEffect", "useState", "useState", "useEffect", "useEffect", "ev", "cn", "jsx", "cn", "memo", "useMemo", "useRef", "X", "jsx", "jsxs", "useCallback", "useEffect", "useLayoutEffect", "useRef", "useState", "useEffect", "useState", "jsx", "useRef", "useState", "useLayoutEffect", "scrollTop", "useEffect", "useCallback", "Fragment", "jsx", "jsxs", "useRef", "useMemo", "useLayoutEffect", "useEffect", "cn", "cn", "useEffect", "useLayoutEffect", "useMemo", "useRef", "jsx", "jsxs", "useRef", "useMemo", "useLayoutEffect", "useEffect", "cn", "Modal_default", "MonoAccordion_default", "cn", "useCallback", "useEffect", "useRef", "useState", "Icons", "NavLink", "jsx", "jsxs", "CN", "checkedRef", "useState", "useRef", "useCallback", "canScrollLeft", "canScrollRight", "useEffect", "Icons", "cn", "NavLink", "NavLine_default", "cn", "jsx", "jsxs", "RC", "cn", "PageTitle_default", "cn", "jsx", "CN", "cn", "Price_default", "cn", "jsx", "jsxs", "CN", "cn", "PriceRange_default", "cn", "jsx", "jsxs", "CN", "cn", "ProgressLine_default", "React", "cn", "React", "cn", "jsx", "jsxs", "cn", "React", "useState", "cn", "jsx", "jsxs", "React", "useState", "React", "useState", "Icons", "cn", "jsx", "jsxs", "RC", "cn", "jsx", "useState", "React", "cn", "ArrowDown", "ArrowUp", "jsx", "jsxs", "ArrowDown", "cn", "ArrowUp", "useEffect", "useState", "cn", "Fragment", "jsx", "jsxs", "useState", "useEffect", "cn", "jsx", "useState", "Fragment", "jsx", "jsxs", "useState", "cn", "jsx", "jsxs", "cn", "Tag_default", "cn", "createRef", "useEffect", "useLayoutEffect", "useRef", "useState", "Edit3", "jsx", "jsxs", "useRef", "useState", "result", "useEffect", "createRef", "useLayoutEffect", "cn", "Edit3", "cn", "cn", "Fragment", "jsx", "jsxs", "CN", "cn", "Fragment", "jsx", "jsxs", "cn", "UserBox_default", "jsx", "jsxs", "cn", "React", "jsx", "jsxs", "cn", "jsx", "RC", "cn", "jsx", "jsxs", "RC", "DEFAULT", "ACTIVE", "DONE", "cn", "jsx", "StepWrapper_default", "StepWrapper_default"]
3
+ "sources": ["../src/Atomic/UI/AccordionTable/AccordionTable.js", "../src/Atomic/UI/MonoAccordion/MonoAccordion.js", "../src/Atomic/UI/AccordionText/AccordionText.js", "../src/Atomic/UI/AdvancedTag/AdvancedTags.tsx", "../src/Atomic/UI/Tag/Tag.tsx", "../src/Atomic/Layout/Spinner/Spinner.tsx", "../src/Atomic/Layout/Spinner/index.ts", "../src/Atomic/UI/AdvancedTag/AdvTag.tsx", "../src/Atomic/UI/AdvancedTag/index.ts", "../src/Atomic/UI/Alert/Alert.tsx", "../src/Atomic/UI/Button/Button.tsx", "../src/Atomic/UI/Alert/index.ts", "../src/Atomic/UI/Arrow/Arrow.tsx", "../src/Functions/utils.js", "../src/Constants/index.constants.js", "../src/Atomic/UI/Box/Box.tsx", "../src/Atomic/UI/CircleProgressBar/CircleProgressBar.js", "../src/Atomic/UI/DateTime/DateTime.tsx", "../src/Atomic/UI/DebugContainer/DebugContainer.tsx", "../src/Atomic/UI/DebugContainer/useDebugContainer.tsx", "../src/Atomic/UI/DoubleString/DoubleString.tsx", "../src/Atomic/UI/DoubleString/index.ts", "../src/Atomic/UI/Hint/Hint.tsx", "../src/Molecular/CustomIcons/components/HelpCircleFilled.tsx", "../src/Atomic/UI/Hint/partials/_constants.ts", "../src/Atomic/UI/Hint/partials/_utils.ts", "../src/Atomic/UI/Hint/index.ts", "../src/Atomic/UI/Modal/Modal.tsx", "../src/Functions/useKeyPress/useHandleKeyPress.ts", "../src/Functions/useKeyPress/useKeyPress.ts", "../src/Atomic/UI/Modal/partials/_constants.ts", "../src/Atomic/UI/Modal/partials/_utils.ts", "../src/Atomic/UI/Modal/partials/ModalFooter.tsx", "../src/Atomic/UI/Modal/partials/ModalTitle.tsx", "../src/Atomic/UI/Modal/partials/useMobileModal.tsx", "../src/Functions/useIsMobile/useIsMobile.ts", "../src/Atomic/UI/Modal/ModalHOC.tsx", "../src/Atomic/UI/Modal/index.ts", "../src/Atomic/UI/MonoAccordion/index.ts", "../src/Atomic/UI/PageTitle/PageTitle.tsx", "../src/Atomic/UI/PageTitle/index.ts", "../src/Atomic/UI/Price/Price.tsx", "../src/Functions/fieldValueFormatters.js", "../src/Atomic/UI/Price/index.ts", "../src/Atomic/UI/PriceRange/PriceRange.tsx", "../src/Atomic/UI/PriceRange/index.ts", "../src/Atomic/UI/ProgressLine/ProgressLine.tsx", "../src/Atomic/UI/ProgressLine/index.ts", "../src/Atomic/UI/Status/Status.tsx", "../src/Atomic/UI/Status/index.ts", "../src/Atomic/UI/Table/Table.js", "../src/Atomic/UI/Table/Partials/TdHeader.js", "../src/Langs.js", "../src/Atomic/UI/Table/Partials/TdRow.js", "../src/Atomic/UI/Table/TdTypes/TdRange.js", "../src/Atomic/UI/Table/Partials/TdCell.js", "../src/Atomic/UI/Accordion/AccordionItem.tsx", "../src/Atomic/UI/Table/TdTypes/TdActions.js", "../src/Atomic/FormElements/Switcher/Switcher.tsx", "../src/Atomic/UI/Table/TdTypes/TdPriority.js", "../src/Atomic/UI/Table/TdTypes/TdWeight.js", "../src/Atomic/UI/Tag/index.ts", "../src/Atomic/UI/TagList/TagList.tsx", "../src/Atomic/UI/UserBox/UserBox.tsx", "../src/Atomic/FormElements/Label/Label.tsx", "../src/Atomic/UI/UserBox/index.ts", "../src/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.tsx", "../src/Atomic/UI/WizardStepper/ui/icons.tsx", "../src/Atomic/UI/WizardStepper/ui/StepRow/StepRow.tsx", "../src/Atomic/UI/WizardStepper/constructor.js", "../src/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.tsx", "../src/Atomic/UI/WizardStepper/ui/StateIcon/index.ts", "../src/Atomic/UI/WizardStepper/ui/StepWrapper/index.ts", "../src/Atomic/UI/WizardStepper/ui/index.ts", "../src/Atomic/UI/WizardStepper/index.ts"],
4
+ "sourcesContent": ["import React, { useEffect, useState } from \"react\";\n\nimport cn from \"classnames\";\nimport { ArrowDown, ArrowUp, ChevronDown, Tag } from \"react-feather\";\n\nimport MonoAccordion from \"../MonoAccordion/MonoAccordion\";\n\nimport \"./AccordionTable.scss\";\n\nconst AccordionTable = ({\n className,\n header,\n items,\n onChange,\n testId,\n onSort = () => {},\n sortParams,\n}) => {\n const [accordions, setAccordions] = useState(items);\n\n const sortedColClassName = (item) =>\n cn(\n \"accordion-table__header-item\",\n item.className,\n {\n \"accordion-table--sorted-col\":\n sortParams && sortParams.key === item.key,\n },\n { \"accordion-table__header-item-sortable\": !item.noSort },\n );\n\n const handle = {\n accordionChange: (key, e) => {\n const newArr = accordions?.map((item) => {\n if (item.key === key) {\n return {\n ...item,\n isOpen: !item.isOpen,\n };\n }\n return item;\n });\n const isArrowSvg = e?.target?.tagName === \"svg\";\n const isAccordionElement =\n e.target.className?.includes?.(\"accordion-table\");\n if (isAccordionElement || isArrowSvg) {\n onChange(newArr);\n setAccordions(newArr);\n }\n },\n\n setSort: (key) => {\n let newSorting;\n if (key !== sortParams.key) newSorting = { key: key, direction: \"DESC\" };\n else {\n newSorting = {\n key,\n direction: sortParams.direction === \"ASC\" ? \"DESC\" : \"ASC\",\n };\n }\n onSort(newSorting);\n },\n };\n\n const getHeaderItem = (key) => {\n return header?.find((item) => item.key === key);\n };\n\n const renderTd = (tr) => {\n return Object.entries(tr)?.map(([key, value]) => {\n return key === \"promoDetails\" || key === \"disclosure\" ? null : (\n <div\n key={key}\n style={{ flexBasis: `${getHeaderItem(key)?.width}%` }}\n className={cn(\n \"accordion-table__td\",\n `accordion-table__td--${key}`,\n getHeaderItem(key)?.className,\n )}\n >\n <p\n className=\"accordion-table__statistics-td-value\"\n title={typeof value !== \"object\" ? value : value.value}\n >\n {typeof value !== \"object\" ? value : value.value}\n </p>\n </div>\n );\n });\n };\n\n const renderTr = (rows) => {\n return rows?.map((row, index) => {\n return (\n <div\n key={index}\n className={cn(\n \"accordion-table__tr\",\n {\n \"accordion-table__tr-with-promo\":\n row.promoDetails || row.cols?.promoDetails,\n },\n row.className,\n )}\n >\n <div className=\"df w100\">{renderTd(row.cols || row)}</div>\n {row.promoDetails || row.cols?.promoDetails ? (\n <div className=\"accordion-table__tr-promo-wrapper\">\n <div className=\"accordion-table__tr-promo\">\n <Tag className=\"tr-promo-icon\" width={16} height={16} />\n <span className=\"tr-promo-label\">PROMOTION</span>\n {row.promoDetails || row.cols?.promoDetails}\n </div>\n </div>\n ) : null}\n\n {row.disclosure || row.cols?.disclosure ? (\n <div className=\"accordion-table__tr-promo-wrapper\">\n <div className=\"accordion-table__tr-promo accordion-table__tr-promo-disclosure\">\n {row.disclosure || row.cols?.disclosure}\n </div>\n </div>\n ) : null}\n </div>\n );\n });\n };\n\n const defineAccordionTitle = (row) => {\n return (\n <div\n onClick={(e) => handle.accordionChange(row.key, e)}\n className=\"accordion-table__accordion-label-box\"\n >\n <div className=\"accordion-table__accordion-label-wrapper j4\">\n <ChevronDown\n width={8}\n height={4}\n className={cn(\"accordion-label-box__icon\", {\n \"accordion-label-box__icon--open\": row.isOpen,\n })}\n />\n <span className=\"accordion-label-box__label\">{row.label}</span>\n {row.statistics && (\n <div className={cn(\"accordion-table__tr\", row.className)}>\n {Object.entries(row.statistics).map(([key, value]) => {\n return (\n <div\n key={key}\n style={{ width: `${getHeaderItem(key)?.width}%` }}\n className={cn(\n \"accordion-table__statistics-td\",\n getHeaderItem(key)?.className,\n )}\n >\n <div className=\"accordion-table__statistics-td-value-wrapper\">\n {key === \"status\" ? (\n <div className=\"accordion-table__statistics-td-value\">\n {value}\n </div>\n ) : (\n <p\n className=\"accordion-table__statistics-td-value\"\n title={value}\n >\n {value}\n </p>\n )}\n </div>\n </div>\n );\n })}\n </div>\n )}\n </div>\n\n {row.titleContent}\n </div>\n );\n };\n\n useEffect(() => {\n setAccordions(items);\n }, [items]);\n\n return (\n <div className={cn(\"accordion-table\", className)}>\n <div className=\"accordion-table__header\">\n {header?.map((item) => {\n return (\n <div\n style={{ flexBasis: `${item.width}%` }}\n key={item.key}\n className={sortedColClassName(item)}\n onClick={() => !item.noSort && handle.setSort(item.key)}\n >\n {sortParams &&\n item.key === sortParams.key &&\n sortParams.key !== \"actions\" &&\n (sortParams.direction === \"DESC\" ? (\n <ArrowDown size={16} />\n ) : (\n <ArrowUp size={16} />\n ))}\n\n {item.label}\n </div>\n );\n })}\n </div>\n\n <div className=\"accordion-table__body\">\n {accordions?.map((accordion) => {\n return (\n <MonoAccordion\n testId={testId}\n key={accordion.key}\n onClick={(e) => handle.accordionChange(accordion.key, e)}\n isOpen={accordion.isOpen}\n className={cn(\n \"accordion-table__body-accordion\",\n {\n \"accordion-table__body-accordion--closed\": !accordion.isOpen,\n },\n accordion.className,\n )}\n titleJSX={defineAccordionTitle(accordion)}\n >\n {accordion.children ?? renderTr(accordion.rows)}\n </MonoAccordion>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default AccordionTable;\n", "import React, { useEffect, useRef, useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport \"./MonoAccordion.scss\";\n\nconst RC = \"mono-accordion\";\n\nconst MonoAccordion = ({\n titleJSX,\n icon,\n children,\n isOpen,\n onClick,\n className,\n disabled,\n testId = \"mono-accordion\",\n datasetProp = {},\n}) => {\n const [maxHeight, setMaxHeight] = useState();\n const titleRef = useRef();\n const containerRef = useRef();\n\n const setHeight = (value) => {\n if (value !== undefined) setMaxHeight((state) => `${value}px`);\n else\n setMaxHeight(\n (state) =>\n `${Array.from(containerRef.current?.childNodes)?.reduce?.((acc, el) => acc + el.offsetHeight, 0)}px`,\n );\n };\n\n const handleClick = (e) => {\n if (\n !Array.from(titleRef.current.childNodes).some((el) =>\n el.contains(e.target),\n )\n ) {\n onClick(e);\n e?.preventDefault();\n e?.stopPropagation();\n } else return e;\n };\n\n useEffect(() => {\n if (!isOpen) setHeight(0);\n else setHeight();\n }, [isOpen, children]);\n\n return (\n <div\n {...datasetProp}\n data-testid={testId}\n className={cn(RC, className, {\n [`${RC}_is-open`]: isOpen,\n [`${RC}_disabled`]: disabled,\n })}\n >\n <div\n className={`${RC}__head`}\n onClick={handleClick}\n >\n <div ref={titleRef} className={`${RC}__tile-container`}>\n {titleJSX}\n </div>\n <span className={`${RC}__icon-container`}>{icon}</span>\n </div>\n\n <div\n ref={containerRef}\n style={{ maxHeight }}\n className={cn(`${RC}__container`)}\n >\n <div className={`${RC}__content-wrapper`}>{children}</div>\n </div>\n </div>\n );\n};\n\nexport default MonoAccordion;\n", "import { useEffect, useRef, useState } from \"react\";\nimport React from \"react\";\nimport cn from \"classnames\";\nimport { ChevronDown, ChevronUp } from \"react-feather\";\nimport \"./AccordionText.scss\";\n\nconst defaultText = <>\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n</>\n\nconst AccordionText = ({\n isDefaultOpen = false,\n isOuterOpen = false,\n className,\n text = defaultText,\n shortText = null\n}) => {\n const bodyRef = useRef(null);\n const [isOpen, setIsOpen] = useState(isDefaultOpen);\n const [isNeedTrimText, setIsNeedTrimText] = useState(false);\n\n useEffect(() => {\n setIsOpen(isOuterOpen);\n }, [isOuterOpen]);\n\n useEffect(() => {\n const checkEllipsis = () => {\n if (bodyRef.current) {\n setIsNeedTrimText(bodyRef.current.scrollWidth > bodyRef.current.clientWidth);\n }\n };\n\n const resizeObserver = new ResizeObserver(() => {\n checkEllipsis();\n });\n\n if (bodyRef.current) {\n resizeObserver.observe(bodyRef.current);\n checkEllipsis();\n }\n\n return () => {\n if (bodyRef.current) {\n resizeObserver.unobserve(bodyRef.current);\n }\n };\n }, [text]);\n\n return (\n <div\n className={cn(\"accordion-text\", className, {\n \"accordion-text--open\": isOpen,\n })}\n onClick={() => setIsOpen((prevIsOpen) => !prevIsOpen)}\n >\n <div\n className={cn(\"accordion-text__body\", {\n \"accordion-text__body--trim-text\": isNeedTrimText && !isOpen,\n })}\n ref={bodyRef}\n >\n {shortText ? (isOpen ? text : shortText) : text}\n </div>\n <div className=\"accordion-text__toggle\">\n {isOpen ? <ChevronUp /> : <ChevronDown />}\n </div>\n </div>\n );\n};\n\nexport default AccordionText;\n", "import type { IAdvancedTagsItemProps, IAdvancedTagsProps } from './AdvancedTags.interface';\n\nimport cn from 'classnames';\n\nimport React, { useState } from 'react';\nimport Tag from '../Tag/Tag';\nimport AdvTag from './AdvTag';\n\nconst AdvancedTags: React.FC<IAdvancedTagsProps> = ({\n items,\n noItemsTagLabel,\n className,\n testId = 'advanced-tag-test',\n toTop = true,\n}) => {\n const [showedItems, setShowedItems] = useState<IAdvancedTagsItemProps[]>(items.slice(0, 2));\n\n const [showMore, setShowMore] = useState<boolean>(true);\n\n const onShowMoreClick = (): void => {\n setShowedItems(showMore ? items : items.slice(0, 2));\n setShowMore(!showMore);\n };\n\n if ((!items || !items.length) && noItemsTagLabel) {\n return (\n <Tag\n label={noItemsTagLabel?.toString()}\n className={cn(className, 'tag-warn')}\n />\n );\n }\n\n if ((!items || !items.length) && !noItemsTagLabel) return null;\n\n return (\n <div data-testid={testId} className={cn(className, 'j4 wrap')}>\n {showedItems.map((item, index) => {\n if (!item) return null;\n return (\n <AdvTag\n toTop={toTop}\n key={index}\n item={item}\n testId={`${testId}-item-${index}`}\n />\n )\n })}\n\n {items.length >= 3 && (\n <span\n data-testid={`${testId}-showMore`}\n onClick={onShowMoreClick}\n className=\"advanced-tags advanced-tags--showMore\"\n >\n {showMore ? `+${items.length - showedItems.length}` : '...'}\n </span>\n )}\n </div>\n );\n};\n\nexport default AdvancedTags;\n", "import type { ITagProps } from './Tag.interface';\nimport cn from 'classnames';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { AlertTriangle, X } from 'react-feather';\nimport Spinner from '../../Layout/Spinner';\n\nimport './Tag.scss';\n\nconst CN = 'tag';\n\nfunction defaultOnClick(): void {}\n\nconst Tag: React.FC<ITagProps> = ({\n value,\n className,\n style,\n label,\n warning,\n isWarningHint = true,\n removeItem,\n name,\n isPopup,\n popupInfoContent,\n popupClassName,\n id,\n isUseInTable,\n isNoDismiss = true,\n onClick = defaultOnClick,\n testId = CN,\n}) => {\n const tagRef = useRef<HTMLDivElement>(null);\n\n const [isTagHover, setIsTagHover] = useState<boolean>(false);\n const [isTagPopupOpened, setIsTagPopupOpened] = useState<boolean>(false);\n\n const { x, y, height, width } = tagRef?.current?.getBoundingClientRect() ?? {};\n const { scrollY } = window;\n\n const tagPopupStyles = useMemo(() => {\n if (!isTagPopupOpened || !tagRef?.current) return {};\n\n const { x, y, height, width } = tagRef?.current?.getBoundingClientRect();\n\n return {\n left: `${x}px`,\n top: `${y + scrollY}px`,\n transform: `translate(calc(-1 * calc(100% - ${width / 2 + 22}px)), ${height + 10}px)`,\n };\n }, [isTagPopupOpened, x, y, width, height, scrollY]);\n\n const tagLabelStyle = useMemo(() => {\n const styleObj: React.CSSProperties = {};\n\n const bgColor = style?.backgroundColor ?? style?.background;\n\n if (bgColor === '#242424') {\n styleObj.color = '#fff';\n }\n\n return styleObj;\n }, [style]);\n\n const handle = {\n onTagClick: (event: React.MouseEvent<HTMLDivElement>) => {\n if (isUseInTable) {\n event.stopPropagation();\n }\n if (isPopup) {\n setIsTagPopupOpened(!isTagPopupOpened);\n }\n onClick(id, event);\n },\n };\n\n const handleClickOutside = (): void => {\n setIsTagPopupOpened(false);\n };\n\n useEffect(() => {\n document.addEventListener('click', handleClickOutside, true);\n return () => {\n document.removeEventListener('click', handleClickOutside, true);\n };\n }, []);\n\n useEffect(() => {\n const handleScroll = (): void => {\n setIsTagPopupOpened(false);\n };\n\n window.addEventListener('scroll', handleScroll, true);\n return () => {\n window.removeEventListener('scroll', handleScroll, true);\n };\n }, []);\n\n return (\n <div\n onMouseEnter={() => setIsTagHover(true)}\n onMouseLeave={() => setIsTagHover(false)}\n data-testid={testId}\n role=\"listitem\"\n aria-label={`Tag: ${label || name}`}\n className={cn(CN, className, { 'tag-warn': warning })}\n style={style ?? {}}\n onClick={event => handle.onTagClick(event)}\n ref={tagRef}\n >\n {warning && typeof warning === 'string' && (\n <AlertTriangle className=\"advanced-tags--warning-icon mr5\" aria-label=\"Warning\" />\n )}\n {warning && typeof warning === 'string' && isTagHover && isWarningHint && (\n <div className=\"tag__warn-hint\" role=\"tooltip\">\n {warning}\n </div>\n )}\n <span className=\"tag__label\" style={tagLabelStyle}>{label || name}</span>\n\n {removeItem && !isNoDismiss && (\n <button\n type=\"button\"\n onClick={(e) => {\n e?.preventDefault();\n e?.stopPropagation();\n removeItem(value);\n }}\n aria-label={`Remove ${label || name}`}\n className=\"tag__button\"\n >\n <X className=\"color--text\" />\n </button>\n )}\n\n {isTagPopupOpened\n && createPortal(\n <div id={`tagPopup${value}`} className={cn('tag__popup', popupClassName)} style={tagPopupStyles}>\n {!popupInfoContent ? <Spinner size=\"small\" /> : popupInfoContent}\n </div>,\n document.getElementById('root')!,\n )}\n </div>\n );\n};\n\nexport default Tag;\n", "import type { ISpinnerProps } from './Spinner.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport './Spinner.scss';\n\nconst CN = 'loader-box';\n\nconst Spinner: React.FC<ISpinnerProps> = ({ size = null, className, testId = CN }) => {\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n data-testid={testId}\n className={cn(\n CN,\n {\n j5: size !== 'small',\n j8: size === 'small',\n },\n className,\n )}\n >\n <div className={cn('lds-ring', { [`lds-ring_${size}`]: size })}>\n <div />\n <div />\n <div />\n <div />\n </div>\n </div>\n );\n};\n\nexport default Spinner;\n", "import Spinner from './Spinner';\n\nexport default Spinner;\nexport type { ISpinnerProps } from './Spinner.interface';\n", "import type { MouseEvent } from 'react';\nimport type { IAdvTagProps } from './AdvancedTags.interface';\n\nimport cn from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { AlertTriangle } from 'react-feather';\n\nimport './AdvancedTags.scss';\n\nconst AdvTag: React.FC<IAdvTagProps> = ({\n item,\n className,\n testId = 'adv-tag',\n toTop = true,\n}) => {\n const {\n labelLeft,\n labelRight,\n active = 0,\n pause = 0,\n merchants,\n warnLeft,\n warnLeftMsg,\n warnRightMsg,\n isEntityAndCounter = false,\n entityAndCounter = {\n nullCounterMessage: '',\n title: '',\n counter: null,\n },\n type,\n } = item;\n\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [clickedWarning, setClickedWarning] = useState<string>('');\n const hintRef = useRef<HTMLDivElement>(null);\n\n const activeNumberClass = cn('strong', {\n 'color--pause': active === 0,\n 'color--green-haze': active > 0,\n });\n\n const pauseNumberClass = cn('strong', {\n 'color--pause': pause === 0,\n 'color--light-red': pause > 0,\n });\n\n const isEmptyEntitys\n = (isEntityAndCounter\n && (!entityAndCounter?.counter || entityAndCounter.counter === 0))\n || (!isEntityAndCounter && (warnLeft || !merchants));\n\n const advancedTagClass = cn('advanced-tags', {\n 'advanced-tags--error': isEmptyEntitys,\n }, className);\n\n const onWarningClick = (warn: string): void => {\n setIsOpen(true);\n setClickedWarning(warn);\n };\n\n const handleClickOutside = (event: MouseEvent | Event): void => {\n if (hintRef.current && !hintRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener('click', handleClickOutside, true);\n return () => {\n document.removeEventListener('click', handleClickOutside, true);\n };\n }, []);\n\n if (!item) return null;\n\n const renderClassicTag = (): JSX.Element => (\n <div data-testid={testId} className={advancedTagClass} ref={hintRef}>\n {warnLeft && (\n <div\n data-testid={`${testId}-left`}\n className=\"advanced-tags--warning-icon-wrapper\"\n onMouseEnter={() => onWarningClick('warnLeft')}\n onMouseLeave={() => setIsOpen(false)}\n >\n <AlertTriangle\n width={16}\n height={16}\n className=\"advanced-tags--warning-icon mr5\"\n />\n </div>\n )}\n\n {labelLeft && <span className=\"mr5\">{labelLeft}</span>}\n {labelRight && <span>{labelRight}</span>}\n\n {type !== 'simple' && <span className=\"ml5 mr5\">|</span>}\n {type !== 'simple' && (\n <div className=\"df\">\n <span className={activeNumberClass}>{active}</span>\n <span className=\"strong color--pause\">/</span>\n <span className={pauseNumberClass}>{pause}</span>\n </div>\n )}\n\n {type !== 'simple' && <span className=\"ml5 mr5\">|</span>}\n\n {merchants\n ? (\n <span>{merchants}</span>\n )\n : (\n type !== 'simple' && (\n <div\n data-testid={`${testId}-right`}\n className=\"advanced-tags--warning-icon-wrapper\"\n onMouseEnter={() => onWarningClick('warnRight')}\n onMouseLeave={() => setIsOpen(false)}\n >\n <AlertTriangle\n width={16}\n height={16}\n className=\"advanced-tags--warning-icon\"\n />\n </div>\n )\n )}\n\n {isOpen && warnLeftMsg && clickedWarning === 'warnLeft' && (\n <span\n className={cn(\n 'advanced-tags__warn-text advanced-tags__warn-text--warnLeft',\n { 'advanced-tags__warn-text--warnLeft--to-top': toTop },\n )}\n >\n {warnLeftMsg}\n </span>\n )}\n\n {isOpen && warnRightMsg && clickedWarning === 'warnRight' && (\n <span\n className={cn(\n 'advanced-tags__warn-text',\n 'advanced-tags__warn-text--warnRight',\n { 'advanced-tags__warn-text--warnRight--to-top': toTop },\n )}\n >\n {warnRightMsg}\n </span>\n )}\n </div>\n );\n\n const renderWithEntityAndCounterTag = (): JSX.Element => {\n const isNullcounter = entityAndCounter?.counter?.toString() === '0';\n\n return (\n <div data-testid={testId} className={advancedTagClass} ref={hintRef}>\n {isNullcounter && (\n <div\n data-testid={`${testId}-left`}\n className=\"advanced-tags--warning-icon-wrapper\"\n onMouseEnter={() => onWarningClick('warnLeft')}\n onMouseLeave={() => setIsOpen(false)}\n >\n <AlertTriangle\n width={16}\n height={16}\n className=\"advanced-tags--warning-icon mr5\"\n />\n </div>\n )}\n\n {isOpen\n && entityAndCounter?.nullCounterMessage\n && clickedWarning === 'warnLeft' && (\n <span\n className={cn(\n 'advanced-tags__warn-text advanced-tags__warn-text--warnLeft',\n { 'advanced-tags__warn-text--warnLeft--to-top': toTop },\n )}\n >\n {entityAndCounter.nullCounterMessage}\n </span>\n )}\n\n {entityAndCounter?.title && (\n <span className=\"mr5\">{entityAndCounter.title}</span>\n )}\n\n <div\n className={cn('advanced-tags__counter', {\n 'advanced-tags__counter--null': isNullcounter,\n 'advanced-tags__counter--bold': !isNullcounter,\n })}\n >\n {entityAndCounter?.counter}\n </div>\n </div>\n );\n };\n\n return !isEntityAndCounter ? renderClassicTag() : renderWithEntityAndCounterTag();\n};\n\nexport default AdvTag;\n", "import AdvancedTags from './AdvancedTags';\nimport AdvTag from './AdvTag';\n\nexport default AdvancedTags;\n\nexport { AdvTag };\n\nexport type { IAdvancedTagsItemProps, IAdvancedTagsProps, IAdvTagProps } from './AdvancedTags.interface';\n", "import type { IAlertProps } from './Alert.interface';\n\nimport cn from 'classnames';\nimport React, { useState } from 'react';\n\nimport { X } from 'react-feather';\nimport Spinner from '../../Layout/Spinner/Spinner';\nimport Button from '../Button/Button';\n\nimport './Alert.scss';\n\nconst Alert: React.FC<IAlertProps> = ({\n message,\n icon,\n className,\n children,\n noDismiss,\n testId = 'alert',\n isHidden = false,\n variant = 'warning',\n isLoading,\n buttonParams,\n}) => {\n const [onClose, setOnClose] = useState(false);\n\n const renderActionsBlock = (): JSX.Element | null => {\n if (buttonParams) {\n return (\n <div className=\"j6 alert__btns-box\">\n <Button {...buttonParams} />\n {!noDismiss && (\n <div className=\"alert__close-btn\">\n <X data-testid={`${testId}-close`} onClick={() => setOnClose(!onClose)} />\n </div>\n )}\n </div>\n );\n }\n\n if (!noDismiss) {\n return (\n <div className=\"alert__close-btn\">\n <X data-testid={`${testId}-close`} onClick={() => setOnClose(!onClose)} />\n </div>\n );\n }\n\n else {\n return null;\n }\n };\n\n return (\n <div\n data-testid={testId}\n className={cn(className, { hidden: onClose }, `alert alert--${variant}`, {\n 'hidden': isHidden,\n 'alert--loading': isLoading,\n })}\n >\n <div className=\"alert__icon-text-box j4\">\n {icon}\n <div>{children || message}</div>\n </div>\n {renderActionsBlock()}\n {isLoading && <Spinner size=\"small\" testId=\"loader-box\" />}\n </div>\n );\n};\n\nexport default Alert;\n", "import type { CSSProperties, ReactNode } from 'react';\nimport type { IUniProps } from '../../../types/base.interface';\nimport cn from 'classnames';\n\nimport './Button.scss';\n\nconst RC = 'button';\n\nexport type TButtonVariant = 'primary' | 'ellipse-apply' | 'ellipse-cancel' | string;\n\ninterface IProps extends IUniProps, Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'disabled'> {\n label?: string;\n onClick?: () => void;\n disabled?: boolean;\n icon?: ReactNode;\n children?: ReactNode;\n style?: CSSProperties;\n noIcon?: boolean;\n isIconRight?: boolean;\n tabIndex?: number;\n variant?: TButtonVariant;\n isTextEllipsis?: boolean;\n}\n\nconst Button: React.FC<IProps> = ({\n label,\n onClick,\n disabled,\n icon,\n className,\n children,\n style,\n noIcon,\n isIconRight,\n testId = 'button',\n tabIndex = 0,\n variant = 'primary',\n isTextEllipsis = false,\n ...props\n}) => {\n const noRenderIcon = noIcon || variant === 'ellipse-apply' || variant === 'ellipse-cancel';\n\n return (\n <button\n data-testid={testId}\n tabIndex={tabIndex}\n style={style}\n className={cn(\n RC,\n {\n [`${RC}_${variant}`]: variant,\n 'button_icon-left': icon && !isIconRight,\n 'button_icon-right': icon && isIconRight,\n },\n className,\n )}\n onClick={onClick}\n disabled={disabled}\n type=\"button\"\n {...props}\n\n >\n {!noRenderIcon && icon}\n {label && <div className={cn('button__text', { 'text-ellipsis': isTextEllipsis })}>{label}</div>}\n {!label && children ? children : null}\n </button>\n );\n};\n\nexport default Button;\n", "import type { IAlertProps } from './Alert.interface';\nimport Alert from './Alert';\n\nexport type { IAlertProps };\nexport default Alert;\n", "import type { ReactElement, ReactNode } from 'react';\n\nimport type { IArrowProps } from './Arrow.interface';\nimport cn from 'classnames';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { getStyles } from '../../../Functions/utils';\nimport './Arrow.scss';\n\nfunction Arrow({ type, className, onClick, disabled, testId, isAlt }: IArrowProps): ReactElement | null {\n const ref = useRef<HTMLDivElement>(null);\n const [color, setColor] = useState<string>('currentColor');\n\n useEffect(() => {\n if (ref.current) {\n setColor(getStyles(ref.current, 'color') as string);\n }\n }, [ref.current]);\n if (!type || (type !== 'left' && type !== 'right')) return null;\n\n function renderSVG(): ReactNode {\n if (type === 'left') {\n if (isAlt) {\n return (\n <svg\n data-testid={testId}\n version=\"1.1\"\n id=\"Layer_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M12.7,8H3.3\"\n stroke={color}\n fill=\"none\"\n strokeWidth={1.3333}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8,3.3L3.3,8L8,12.7\"\n stroke={color}\n fill=\"none\"\n strokeWidth={1.3333}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n return (\n <svg\n data-testid={testId}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M15 18L9 12L15 6\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n if (isAlt) {\n return (\n <svg\n data-testid={testId}\n id=\"Layer_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M3.3,8h9.3\"\n stroke={color}\n fill=\"none\"\n strokeWidth={1.3333}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8,3.3L12.7,8L8,12.7\"\n stroke={color}\n fill=\"none\"\n strokeWidth={1.3333}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n return (\n <svg\n data-testid={testId}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9 18L15 12L9 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n\n return (\n <div\n data-testid={`arrow--key-${testId}--type-${type}`}\n ref={ref}\n className={cn('arrow', `arrow_${type}`, className, {\n arrow_disabled: disabled,\n })}\n onClick={onClick}\n >\n {renderSVG()}\n </div>\n );\n}\n\nexport default Arrow;\n", "import { useEffect } from \"react\";\n\nimport moment from \"moment-timezone\";\n\nimport { DEFAULT_COLORS, OS } from \"../Constants/index.constants\";\n\nexport const uuid = () => Date.now().toString(36) + Math.random().toString(36).substring(2);\n\nexport const getIsOnlyAnObject = (input) => {\n return (\n typeof input === \"object\" && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B \u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u0438\n input instanceof Object && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" null\n !Array.isArray(input) && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043C\u0430\u0441\u0441\u0438\u0432\u044B\n !(input instanceof Set) && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u0441\u0435\u0442\u044B\n !(input instanceof Map) // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043C\u0430\u043F\u044B\n );\n};\n\n/* eslint-disable guard-for-in, no-unused-vars */\nexport const handleObjectChange =\n (updateObject, updateFunction) =>\n (data, prop = \"\", isNumber) => {\n let value;\n if (data?.target) {\n value =\n data.target.type === \"checkbox\"\n ? data.target.checked\n : data.target.value;\n } else value = data;\n\n value = isNumber ? Number(value) : value;\n\n const props = prop.split(\".\");\n const currentObject = props.reduce((res, chapter, index) => {\n if (props.length !== index + 1) res = res[chapter];\n return res;\n }, updateObject);\n\n currentObject[props.pop()] = value;\n updateFunction();\n };\n\nexport const useOutsideToggle = (ref, setOut, open) => {\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n setOut(open);\n }\n }\n useEffect(() => {\n document.addEventListener(\"mouseup\", handleClickOutside);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mouseup\", handleClickOutside);\n };\n }, [ref]);\n};\n\n// export const clone = obj => {\n// const data = obj instanceof Array ? [] : {};\n// for (const i in obj) data[i] = typeof obj[i] === 'object' && obj[i] != null ? clone(obj[i]) : obj[i];\n// return data;\n// };\n// ! \u042D\u0442\u043E\u0442 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435\u0435\nexport const clone = (input) => {\n if (input === null || typeof input !== \"object\") return input;\n const data = input instanceof Array ? [] : {};\n for (const i in input) data[i] = clone(input[i]);\n return data;\n};\n\nexport const getResponseClone = async (res) =>\n await (typeof res?.clone === \"function\" ? res.clone() : clone(res));\n\n//TimeUtils\nexport function transformUTCTimeToLocal(date, format = \"YYYY-MM-DD HH:mm:ss\") {\n if (!date) return;\n const utcDate = moment.utc(date).toDate();\n return moment(utcDate, format).local().format(format);\n}\nexport function transformLocalTimeToUTC(date, format = \"YYYY-MM-DD HH:mm:ss\") {\n if (!date) return;\n return moment(date, format).utc().format(format);\n}\nexport function transformUTCHoursToLocal(time, format = \"HH:mm:ss\") {\n if (!time) return;\n const splitedTime = time.split(\":\");\n const offset = moment().utcOffset();\n let HH = Number(splitedTime[0]);\n let mm = Number(splitedTime[1]);\n const ss = splitedTime[2];\n mm = mm + offset;\n while (mm > 59) {\n mm -= 60;\n HH += 1;\n }\n if (HH > 23) HH -= 24;\n while (mm < 0) {\n mm += 60;\n HH -= 1;\n }\n if (HH < 0) HH += 24;\n return `${HH}:${mm}:${ss}`;\n}\n\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E \u0441\u0430\u043C\u044B\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 \u043F\u0430\u0442\u0442\u0435\u0440\u043D\nexport function transformDateOrTimeOrTogetherToFormat(\n data,\n outputFormat = \"HH:mm\",\n additional,\n) {\n const ERROR_VALUE = \"Invalid date\";\n const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;\n const { parseFormat, isReturnAsMomentInstance } = getIsOnlyAnObject(\n additional,\n )\n ? additional\n : {};\n\n if (typeof data !== \"string\" && typeof data !== \"number\") {\n return isReturnAsMomentInstance ? moment(\"error\") : ERROR_MESSGE;\n }\n\n //? \u0418\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u043C parseFormat, \u0435\u0441\u043B\u0438 data \u043F\u0440\u0438\u0448\u043B\u0430 \u043A\u0430\u043A timestamp \u0438\u043B\u0438 \u0435\u0441\u043B\u0438 parseFormat \u043D\u0435 \u0441\u0442\u0440\u043E\u043A\u0430\n const momentArgs = [\n data,\n ...(!Number.isNaN(Number(data)) || typeof parseFormat === \"string\"\n ? []\n : [parseFormat]),\n ];\n\n //? \u0417\u0430\u0434\u0430\u0447\u0430 \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440, \u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 \u043B\u0438\u0431\u043E \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439\n const momentInstance = (() => {\n let instance = moment(...momentArgs);\n\n //? \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C \u0432\u0430\u043B\u0438\u0434\u043D\u043E\u0441\u0442\u044C moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440-\u0430 \u043F\u0443\u0442\u0435\u043C \u043F\u043E\u043F\u044B\u0442\u043A\u0438 \u043F\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043E \u043A \u0432\u044B\u0445\u043E\u0434\u043D\u043E\u043C\u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0443\n //? \u041F\u043E\u043F\u0430\u0434\u0435\u043C \u0432 \u044D\u0442\u043E\u0442 \u043A\u0435\u0439\u0441 \u0435\u0441\u043B\u0438\n //? - data \u044D\u0442\u043E timestamp\n //? - data \u044D\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 date-time\n //? - data \u044D\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 date (\u0432 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0432\u0440\u0435\u043C\u044F \u0432\u044B\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F 00:00:00)\n if (instance.format(outputFormat) !== ERROR_VALUE) return instance;\n //? \u0415\u0441\u043B\u0438 \u0436\u0435 \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C, \u0442\u043E \u043F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u043C, \u0447\u0442\u043E data \u043F\u0440\u0438\u0448\u043B\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 time\n //? \u0412 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0441\u043E\u0437\u0434\u0430\u0434\u0438\u043C \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u0442 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u044B, \u0440\u0430\u0441\u043F\u0430\u0440\u0441\u0438\u043C data \u0438 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u043C \u0432\u0440\u0435\u043C\u044F\n //? \u041A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442\u0441\u044F \u043F\u0430\u0442\u0442\u0435\u0440\u043D\u044B: 'HH*mm', 'HH*mm*ss', 'HH*mm*ss*\u043B\u044E\u0431\u043E\u0435_\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E_ms', \u0433\u0434\u0435 * - \u043B\u044E\u0431\u043E\u0439 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C\n else if (/^\\d\\d.\\d\\d/.test(data)) {\n instance = moment();\n const symbols = data.split(\"\");\n\n const timeArr = symbols\n .reduce(\n (acc, symbol, idx) => {\n if (Number.isNaN(Number(symbol))) {\n if (acc.group) acc.result.push(acc.group);\n acc.group = \"\";\n } else acc.group = `${acc.group}${symbol}`;\n if (idx === symbols.length - 1 && acc.group)\n acc.result.push(acc.group);\n return acc;\n },\n { result: [], group: \"\" },\n )\n //? reverse \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0438\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0434\u043B\u044F \u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0441\u043B\u0435 \u043C\u043E\u0436\u043D\u043E \u0431\u044B\u043B\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043C\u0435\u0442\u043E\u0434 pop, \u0430 \u043D\u0435 shift,\n //? \u0442.\u043A. \u043C\u0435\u0442\u043E\u0434\u044B \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F/\u0438\u0437\u0432\u043B\u0435\u0447\u0435\u043D\u0438\u044F \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043A\u043E\u043D\u0446\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u0431\u044B\u0441\u0442\u0440\u0435\u0435,\n //? \u0447\u0435\u043C \u0430\u043D\u0430\u043B\u043E\u0433\u0438\u0447\u043D\u044B\u0435 \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043D\u0430\u0447\u0430\u043B\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n .result.reverse();\n\n instance.hours(Number(timeArr.pop()));\n instance.minutes(Number(timeArr.pop()));\n instance.seconds(timeArr.length ? Number(timeArr.pop()) : 0);\n instance.milliseconds(timeArr.length ? Number(timeArr.pop()) : 0);\n } else instance = moment(\"error\"); //? \u0418\u043D\u0430\u0447\u0435 \u0441\u043E\u0437\u0434\u0430\u0435\u043C \u0437\u0430\u0432\u0435\u0434\u043E\u043C\u043E \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\n\n return instance;\n })();\n\n if (isReturnAsMomentInstance) return momentInstance;\n\n const output = momentInstance.format(outputFormat);\n return output === ERROR_VALUE ? ERROR_MESSGE : output;\n}\n\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E \u0441\u0430\u043C\u044B\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 \u043F\u0430\u0442\u0442\u0435\u0440\u043D\nexport function transformDateOrTimeOrTogetherToFormattedLocal(\n data,\n outputFormat = \"HH:mm\",\n additional,\n) {\n const ERROR_VALUE = \"Invalid date\";\n const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;\n\n if (additional && !getIsOnlyAnObject(additional)) {\n throw new Error(\n \"Bad additional [transformDateOrTimeOrTogetherToFormattedLocal]\",\n );\n }\n\n const compositeAdditional = {\n ...(additional || {}),\n isReturnAsMomentInstance: true,\n };\n const date = transformDateOrTimeOrTogetherToFormat(\n data,\n outputFormat,\n compositeAdditional,\n );\n\n const dateWithLocale = date.add(moment().utcOffset(), \"minutes\");\n const output = dateWithLocale.format(outputFormat);\n\n return output === ERROR_VALUE ? ERROR_MESSGE : output;\n}\n\n//\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u043E\u0431\u044C\u0435\u043A\u0442 \u0438 \u043C\u0430\u0441\u0441\u0438\u0432 \u043A\u043B\u044E\u0447\u0435\u0439 \u043E\u0431\u044C\u0435\u043A\u0442\u0430\n//\u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043E\u0431\u044C\u0435\u043A\u0442 \u0441 \u0442\u0435\u043C\u0438 \u043F\u043E\u043B\u044F\u043C\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u043D\u0435\u0442 \u0432 \u043C\u0430\u0441\u0441\u0438\u0432\u0435 \u043A\u043B\u044E\u0447\u0435\u0439\nexport const omitKeys = (obj = {}, keys = []) =>\n keys.reduce((acc, key) => {\n const { [key]: omit, ...rest } = acc;\n return rest;\n }, obj);\n\nexport const logout = () => {\n window.localStorage.removeItem(\"accessToken\");\n window.localStorage.removeItem(\"tokenExpires\");\n window.location.reload();\n};\n\nexport const getStyles = (el, prop) => {\n if (!el) return null;\n if (!prop) return window.getComputedStyle(el);\n return window.getComputedStyle(el).getPropertyValue(prop);\n};\n\nexport const getColorById = (id, colors) => {\n if (!id) return \"#FF7D00\";\n\n const idToArr = Array.from(id);\n const colorsArr = colors && colors.length > 0 ? colors : DEFAULT_COLORS;\n\n let number = idToArr.reduce((acc, item) => {\n if (Number(item)) {\n return acc + Number(item);\n }\n return acc;\n }, 0);\n\n while (number >= colorsArr.length) {\n number -= colorsArr.length;\n }\n\n return colorsArr[number];\n};\n\nexport const debounce = (fn, ms) => {\n let id = null;\n return (...args) => {\n clearTimeout(id);\n id = setTimeout(() => {\n clearTimeout(id);\n fn(...args);\n }, ms);\n };\n};\n\nexport const throttle = (fn, ms) => {\n let id = null;\n return (...args) => {\n if (id) return;\n fn(...args);\n id = setTimeout(() => {\n clearTimeout(id);\n id = null;\n }, ms);\n };\n};\n\nexport const addBitDepthPoints = (value, step = 3) => {\n //\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043B\u0438 value \u0442\u043E\u0447\u043A\u0443\n const isFraction = value?.includes(\".\");\n\n //\u0432\u0437\u044F\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043E \u0442\u043E\u0447\u043A\u0438\n const valueBeforeDot = isFraction\n ? value?.slice(0, value?.indexOf(\".\"))\n : value;\n\n //\u0440\u0430\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0437\u0430\u043F\u044F\u0442\u044B\u0445 \u043F\u043E\u0441\u043B\u0435 \u043A\u0430\u0436\u0434\u043E\u0439 3\u0439 \u0446\u0438\u0444\u0440\u044B \u0441 \u043A\u043E\u043D\u0446\u0430\n const intPart = valueBeforeDot\n .split(\"\")\n .reverse()\n .reduce(\n (acc, item, idx) =>\n idx % step === 0 && idx !== 0 ? [...acc, \",\", item] : [...acc, item],\n [],\n )\n .reverse()\n .join(\"\");\n\n return isFraction ? intPart + value?.slice(value?.indexOf(\".\")) : intPart;\n};\n\nexport const changeMeta = (key, items = []) => {\n const defaultMeta = items.find((i) => i.key === \"default\");\n\n if (key) {\n const item = items.find((i) => i.key === key);\n document.title = item?.title ?? defaultMeta?.title;\n document\n .querySelector('meta[name=\"description\"]')\n .setAttribute(\"content\", item?.description ?? defaultMeta?.description);\n }\n};\n\nexport const firstLetterCapital = (str) =>\n typeof str === \"string\"\n ? `${str.charAt(0).toUpperCase()}${str.slice(1)}`\n : str;\nexport const capitalized = firstLetterCapital;\n\nexport const checkedRef = (ref) =>\n ref ? (typeof ref === \"function\" ? (node) => ref(node) : ref) : null;\n\nexport function downloadEmulation(data, filename, type = \"image/*\") {\n const file = new Blob([data], { type });\n if (window.navigator.msSaveOrOpenBlob)\n // IE10+\n window.navigator.msSaveOrOpenBlob(file, filename);\n else {\n // Others\n const a = document.createElement(\"a\"),\n url = URL.createObjectURL(file);\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n setTimeout(() => {\n document.body.removeChild(a);\n window.URL.revokeObjectURL(url);\n }, 0);\n }\n}\n\nexport const downloadFile = async ({ url, name, type = null }) => {\n const response = await fetch(url).then(async (res) => ({\n data: await res.blob(),\n type: type ?? res.headers.get(\"content-type\"),\n }));\n downloadEmulation(response.data, name, response.type);\n};\n\nexport const compare = (first, second, keys = []) => {\n //? \u0415\u0441\u043B\u0438 \u0442\u0438\u043F\u044B \u041D\u0415 \u0440\u0430\u0432\u043D\u044B - \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0430\u043F\u0440\u0438\u043E\u0440\u0438\n if (typeof first !== typeof second) return false;\n //? \u0415\u0441\u043B\u0438 \u043E\u0442\u0432\u0435\u0442\u044B \u043D\u0430 \u0432\u043E\u043F\u0440\u043E\u0441 \"\u043C\u0430\u0441\u0441\u0438\u0432 \u043B\u0438?\" \u043D\u0435 \u0440\u0430\u0432\u043D\u044B, \u0442\u043E \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0438 \u0442\u0438\u043F\u044B, \u0437\u043D\u0430\u0447\u0438\u0442 \u0442\u043E\u0436\u0435 \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0430\u043F\u0440\u0438\u043E\u0440\u0438\n if (Array.isArray(first) !== Array.isArray(second)) return false;\n //? \u0415\u0441\u043B\u0438 \u043F\u0440\u043E\u0448\u043B\u0438 if-\u043A\u0443 - \u0442\u0438\u043F\u044B \u0443\u0441\u043B\u043E\u0432\u043D\u043E \u0440\u0430\u0432\u043D\u044B, \u043C\u043E\u0436\u0435\u043C \u043E\u0446\u0435\u043D\u0438\u0432\u0430\u0442\u044C \u0442\u0438\u043F \u043B\u0438\u0448\u044C \u043E\u0434\u043D\u043E\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430, \u044D\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u0441\u043F\u0440\u0430\u0432\u0435\u0434\u043B\u0438\u0432\u043E \u0438 \u0434\u043B\u044F \u0432\u0442\u043E\u0440\u043E\u0433\u043E\n\n //? \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B - \u043F\u0440\u043E\u0441\u0442\u043E \u0441\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u043C. \u041A\u0435\u0439\u0441 \u0441 null \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D \u0442\u0443\u0442.\n if (!(first instanceof Object)) return first === second;\n\n //? \u0415\u0441\u043B\u0438 \u041D\u0415 \u043F\u0440\u0438\u043C\u0435\u0442\u0438\u0432\u044B - \u043D\u0435 \u0432\u0430\u0436\u043D\u043E \u043C\u0430\u0441\u0441\u0438\u0432 \u0438\u043B\u0438 \u043D\u0435\u0442, \u043C\u0435\u0442\u043E\u0434\u044B \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0434\u043B\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0442\u043E\u0436\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\n\n const getComparationStructure = (data) => {\n if (typeof data === 'function') return data.toString();\n if (!(data instanceof Object)) return data;\n\n return Object.entries(data)\n .sort((a, b) => (a[0]).localeCompare(b[0]))\n .map(([key, value]) => ([key, getComparationStructure(data[key])]));\n };\n\n //? \u041F\u043E\u043B\u0443\u0447\u0430\u0435\u043C \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0434\u043B\u044F \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044F (\u0441 \u0443\u0447\u0435\u0442\u043E\u043C \u0433\u043B\u0443\u0431\u0438\u043D\u044B) - \u043C\u0430\u0441\u0441\u0438\u0432\u044B \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u0432, \u0441\u043E\u0440\u0442\u0438\u0440\u0443\u0435\u043C \u043F\u043E \u043A\u043B\u044E\u0447\u0430\u043C,\n const structureForComparingOfFirst = getComparationStructure(first);\n const structureForComparingOfSecond = getComparationStructure(second);\n\n return (JSON.stringify(structureForComparingOfFirst) === JSON.stringify(structureForComparingOfSecond));\n};\n\n// Set Carret to the End of Input\nexport const setCarretToEnd = (input) => {\n setTimeout(() => {\n const tmp = input.value;\n input.value = \"\";\n input.value = tmp;\n }, 10);\n};\n\nexport const compareAlphabetical = (a, b, key = \"label\") => {\n let item1 = a?.[key];\n let item2 = b?.[key];\n\n if (typeof item1 !== \"string\" || typeof item2 !== \"string\") return 0;\n\n item1 = item1?.toLowerCase();\n item2 = item2?.toLowerCase();\n\n if (item1 < item2) {\n return -1;\n }\n if (item1 > item2) {\n return 1;\n }\n return 0;\n};\n\nexport const getBase64 = (file) => {\n if (file) {\n return new Promise(function (resolve, reject) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(\"Error: \", error);\n });\n }\n};\n\nexport const renderFileSize = (bytes, decimals = 2) => {\n if (!Number(bytes)) return \"0 Bytes\";\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n};\n\nexport const getUniqueFileExtensions = (extListString) => {\n // Split the extensions list into an array\n const extArray = extListString\n ?.split(\",\")\n .map((ext) => ext.trim().toUpperCase());\n\n // Remove duplicates using a Set\n const uniqueExts = [...new Set(extArray)];\n\n // Join the unique extensions into a string\n return uniqueExts.join(\", \");\n};\n\nexport const getOS = () => {\n let userAgent = window.navigator.userAgent,\n platform =\n window.navigator?.userAgentData?.platform || window.navigator.platform,\n macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"],\n windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"],\n iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"],\n os = OS.Unknown;\n\n if (macosPlatforms.indexOf(platform) !== -1) {\n os = OS.MacOS;\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n os = OS.iOS;\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n os = OS.Windows;\n } else if (/Android/.test(userAgent)) {\n os = OS.Android;\n } else if (/Linux/.test(platform)) {\n os = OS.Linux;\n }\n\n return os;\n};\n\n\nString.prototype.longerThan = function (compareWith) {\n return this?.length > compareWith?.length;\n};\nString.prototype.lastIndexEqualsTo = function (index) {\n return this?.length - 1 === index;\n};\n\nexport const getCorrectTestId = ({ testId = \"\", withTier = true }) =>\n testId && testId !== undefined ? `${withTier ? \"-\" : \"\"}${testId}` : \"\";\n\n\n", "export const KEYBOARD_SERVICE_KEYS = [\n \"Escape\",\n \"F1\",\n \"F2\",\n \"F3\",\n \"F4\",\n \"F5\",\n \"F6\",\n \"F7\",\n \"F8\",\n \"F9\",\n \"F10\",\n \"F11\",\n \"F12\",\n \"Tab\",\n \"CapsLock\",\n \"Shift\",\n \"Control\",\n \"Meta\",\n \"Option\",\n \"Alt\",\n \"ContextMenu\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"NumLock\",\n \"Backspace\",\n \"Delete\",\n \"Enter\",\n \"Return\",\n \"Insert\",\n \"Home\",\n \"End\",\n \"PageUp\",\n \"PageDown\",\n \"PrintScreen\",\n \"ScrollLock\",\n \"Pause\",\n];\n\nexport const MAX_PHONE_LENGTH = 10;\nexport const MAX_NAME_LENGTH = 128;\n\nexport const DEFAULT_DATE_MASK_NO_VALUE_SYMBOL = \"_\";\n\nexport const DEFAULT_COLORS = [\n \"#D9C1FF\",\n \"#FFBAF0\",\n \"#FFB8CE\",\n \"#FFC3A2\",\n \"#FFDB7C\",\n \"#F9F871\",\n \"#C3FCF1\",\n \"#F6F2CB\",\n \"#E0F8D1\",\n \"#B1DFFB\",\n \"#8DECFE\",\n \"#76F7ED\",\n \"#8AFEC8\",\n];\n\nexport const KEYBOARD_KEY_CODES = {\n Backspace: 8,\n Delete: 46,\n ARROW_LEFT: 37,\n ARROW_RIGHT: 39,\n};\n\nexport const OS = {\n iOS: \"iOS\",\n Android: \"Android\",\n WP: \"Windows Phone\",\n Linux: \"Linux\",\n Windows: \"Windows\",\n MacOS: \"MacOS\",\n Unknown: \"unknown\",\n};\n", "// global\nimport type { CSSProperties, ReactElement } from 'react';\n\nimport type { IBoxProps } from './Box.interface';\nimport cn from 'classnames';\n\n// styles\nimport './Box.scss';\n\nconst directionVariants = {\n column: 'column',\n row: 'row',\n};\n\nconst sizes = {\n none: 'none',\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'l',\n xl: 'xl',\n};\n\nfunction Box({\n children,\n paddingVariant = sizes.m,\n radiiVariant = sizes.s,\n direction = directionVariants.column,\n className,\n ...restProps\n}: IBoxProps): ReactElement {\n const styles: CSSProperties = {\n flexDirection: direction as 'row' | 'row-reverse' | 'column' | 'column-reverse',\n };\n return (\n <div\n style={styles}\n data-testid=\"box\"\n className={cn(\n 'box',\n `box--padding-${paddingVariant}`,\n `box--radii-${radiiVariant}`,\n className,\n {\n 'df': direction === directionVariants.row,\n 'dfc-jc': direction === directionVariants.column,\n },\n )}\n {...restProps}\n >\n {children}\n </div>\n );\n}\n\nexport default Box;\n", "import React, { useEffect, useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport \"./CircleProgressBar.scss\";\n\nconst CircleProgressBar = ({\n amount,\n totalAmount,\n isReverseType,\n children,\n className,\n colors,\n isInnerLine,\n radius = 59,\n strokeWidth = 2,\n innerLineStrokeWidth = 2,\n testId = \"circle-progress-bar\",\n}) => {\n const circumference = Math.round(2 * Math.PI * radius);\n const amountProgress =\n amount < totalAmount ? Math.round((amount / totalAmount) * 100) : 100; //%\n const defaultColors = {\n start: \"#6b81dd\",\n finish: \"#f06d8d\",\n meter: \"#ffcad6\",\n };\n\n const [strokeDashoffset, setStrokeDashoffset] = useState(isReverseType ? String(0) : circumference);\n\n useEffect(() => {\n setStrokeDashoffset(circumference - (circumference * amountProgress) / 100);\n }, [amountProgress]);\n\n return (\n <div\n data-testid={testId}\n className={cn(\"limit-progress-bar\", { \"limit-progress-bar--reverse\": isReverseType }, className)}\n >\n <svg\n className=\"limit-progress-bar__progress\"\n width=\"124\"\n height=\"124\"\n viewBox=\"0 0 124 124\"\n >\n <defs>\n {isReverseType ? (\n <linearGradient\n id=\"limit-progress-bar-linear-gradient-reverse\"\n x1=\"0\"\n y1=\"1\"\n x2=\"0\"\n y2=\"0\"\n >\n <stop\n offset=\"0\"\n stopColor={colors.finish || defaultColors.finish}\n />\n <stop\n offset=\"1\"\n stopColor={colors.start || defaultColors.start}\n />\n </linearGradient>\n ) : (\n <linearGradient\n id=\"limit-progress-bar-linear-gradient\"\n x1=\"0\"\n y1=\"1\"\n x2=\"0\"\n y2=\"0\"\n >\n <stop\n offset=\"0\"\n stopColor={colors.start || defaultColors.start}\n />\n <stop\n offset=\"1\"\n stopColor={colors.finish || defaultColors.finish}\n />\n </linearGradient>\n )}\n </defs>\n <circle\n className=\"limit-progress-bar__meter\"\n cx={radius}\n cy={radius}\n r={radius}\n stroke={!isInnerLine ? \"\" : colors.meter || defaultColors.meter}\n strokeWidth={String(innerLineStrokeWidth)}\n />\n <circle\n className=\"limit-progress-bar__value\"\n cx={radius}\n cy={radius}\n r={radius}\n strokeWidth={String(strokeWidth)}\n stroke={`url(#limit-progress-bar-linear-gradient${isReverseType ? \"-reverse\" : \"\"})`}\n style={{\n strokeDasharray: circumference,\n strokeDashoffset,\n }}\n />\n </svg>\n <div className=\"limit-progress-bar__content\">{children}</div>\n </div>\n );\n};\n\nexport default CircleProgressBar;\n", "import type { IDateTimeProps } from './DateTime.interface';\nimport cn from 'classnames';\nimport moment from 'moment-timezone';\nimport React, { useMemo } from 'react';\nimport './DateTime.scss';\n\nconst RC = 'date-time';\n\nconst DEFAULT_DATE_FORMAT = 'DD.MM.YYYY';\nconst DEFAULT_TIME_FORMAT = 'HH:mm:ss';\n\nconst DateTime: React.FC<IDateTimeProps> = ({\n className,\n value,\n valueFormat,\n dateFormat: inputDateFormat,\n timeFormat: inputTimeFormat,\n isNoDate,\n isNoTime,\n testId = 'date-time',\n}) => {\n const dateFormat = inputDateFormat ?? DEFAULT_DATE_FORMAT;\n const timeFormat = inputTimeFormat ?? DEFAULT_TIME_FORMAT;\n\n const date = useMemo(() => {\n return (valueFormat ? moment(value, valueFormat) : moment(value)).format(\n dateFormat,\n );\n }, [value, valueFormat, dateFormat]);\n\n const time = useMemo(() => {\n return (valueFormat ? moment(value, valueFormat) : moment(value)).format(\n timeFormat,\n );\n }, [value, valueFormat, timeFormat]);\n\n return (\n <div data-testid={testId} className={cn(RC, className)}>\n {!isNoDate && (\n <span data-testid={`${testId}-date`} className={`${RC}__date`}>\n {date}\n </span>\n )}\n {!isNoTime && (\n <span\n data-testid={`${testId}-time`}\n className={cn(`${RC}__time`, {\n [`${RC}_color--pause`]: !isNoDate,\n })}\n >\n {time}\n </span>\n )}\n </div>\n );\n};\n\nexport default DateTime;\n", "import type { ReactNode } from 'react';\nimport cn from 'classnames';\nimport React, { useState } from 'react';\nimport { ChevronDown, ChevronUp } from 'react-feather';\nimport './DebugContainer.scss';\n\nexport interface DebugContainerProps {\n data?: Record<string, any>;\n children?: ReactNode;\n className?: string;\n}\n\nconst defaultData: Record<string, any> = {};\nconst DebugContainer: React.FC<DebugContainerProps> = ({ data = defaultData, children, className }) => {\n const [isVisible, setIsVisible] = useState<boolean>(true);\n\n const renderData = (): JSX.Element => (\n <pre>\n {'{\\n'}\n {Object.keys(data).map(key => ` ${key}: ${String(data[key])},\\n`)}\n {'}'}\n </pre>\n );\n\n return (\n <div className={cn('debug-container', className)} data-testid=\"debug-container\">\n {isVisible && (\n <div className=\"debug-container__body\">\n <h5>Debug:</h5>\n {data && Object.keys(data).length > 0 && (\n <div className=\"debug-container__body-row\" data-testid=\"debug-data\">{renderData()}</div>\n )}\n {children && (\n <div className=\"debug-container__body-row\" data-testid=\"debug-children\">{children}</div>\n )}\n </div>\n )}\n <div\n className=\"debug-container__toggler\"\n onClick={() => setIsVisible(v => !v)}\n data-testid=\"debug-toggler\"\n >\n {isVisible ? <ChevronUp /> : <ChevronDown />}\n </div>\n </div>\n );\n};\n\nexport default DebugContainer;\n", "import { useState } from 'react';\nimport DebugContainer from './DebugContainer';\n\nexport interface UseDebugContainer {\n debugData: Record<string, any>;\n setDebugData: React.Dispatch<React.SetStateAction<Record<string, any>>>;\n renderDebugContainer: JSX.Element;\n}\n\nfunction useDebugContainer(): UseDebugContainer {\n const [data, setData] = useState<Record<string, any>>({});\n\n return {\n debugData: data,\n setDebugData: setData,\n renderDebugContainer: <DebugContainer data={data} />,\n };\n}\n\nexport default useDebugContainer;\n", "import type { IDoubleStringProps } from './DoubleString.interface';\n\nimport cn from 'classnames';\nimport moment from 'moment';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { Eye, EyeOff } from 'react-feather';\n\nimport './DoubleString.scss';\n\nconst RC = 'double-string';\n\nconst DoubleString: React.FC<IDoubleStringProps> = ({\n value,\n description,\n subDescription,\n valuePostfix,\n className,\n testId = 'double-string',\n isFormatValueToDate,\n isUseOnClick,\n dateFormatSettings: {\n parseFormat = 'MM.DD.YYYY',\n displayFormat = 'MM.DD.YYYY',\n } = {},\n revert = false,\n noTitle,\n isUseHideMode = false,\n isShowHiddenValueAvailable = false,\n}) => {\n const [isValueHidden, setIsValueHidden] = useState(isUseHideMode);\n\n const computedValue = isFormatValueToDate ? moment(value, parseFormat).format(displayFormat) : value;\n\n const valueRef = useRef<HTMLParagraphElement | null>(null); ;\n const descriptionRef = useRef<HTMLParagraphElement | null>(null);\n\n const [elemsWidth, setElemsWidth] = useState({\n valueWidth: 0,\n descriptionWidth: 0,\n });\n const [isOnClickON, setIsOnClickON] = useState(false);\n\n const handle = {\n click: () => {\n setIsOnClickON(!isOnClickON);\n },\n };\n\n useEffect(() => {\n const valueWidth = valueRef?.current?.clientWidth ?? 0;\n const descriptionWidth = descriptionRef?.current?.clientWidth ?? 0;\n\n setElemsWidth({ valueWidth, descriptionWidth });\n }, [descriptionRef, valueRef]);\n\n return (\n <div data-testid={testId} className={cn(RC, className)}>\n <p\n onClick={() => handle.click()}\n ref={valueRef}\n className={cn(\n `${RC}__value`,\n {\n 'double-string--value-opened': isOnClickON && isUseOnClick,\n },\n { pointer: isUseOnClick },\n )}\n title={!noTitle && elemsWidth.valueWidth > 99 ? computedValue : ''}\n >\n {!revert\n ? (\n <>\n {isUseHideMode ? <span>{!isValueHidden ? computedValue : '*********'}</span> : computedValue}\n {isUseHideMode && isShowHiddenValueAvailable && isValueHidden && <Eye data-testid=\"double-string-eye\" className={`${RC}__hide-mode-icon`} onClick={() => setIsValueHidden(false)} />}\n {isUseHideMode && isShowHiddenValueAvailable && !isValueHidden && <EyeOff data-testid=\"double-string-eyeoff\" className={`${RC}__hide-mode-icon`} onClick={() => setIsValueHidden(true)} />}\n {valuePostfix && (\n <span className={cn(`${RC}__value-postfix`)}>{valuePostfix}</span>\n )}\n </>\n )\n : (\n description\n )}\n </p>\n\n <p\n ref={descriptionRef}\n className={cn(`${RC}__description`)}\n title={!noTitle && elemsWidth.descriptionWidth > 99 ? computedValue : ''}\n >\n {!revert\n ? (\n description\n )\n : (\n <>\n {computedValue}\n {valuePostfix && (\n <span className={cn(`${RC}__value-postfix`)}>{valuePostfix}</span>\n )}\n </>\n )}\n </p>\n {subDescription && (\n <p className={cn(`${RC}__sub-description`)}>\n {subDescription}\n </p>\n )}\n </div>\n );\n};\n\nexport default DoubleString;\n", "import type { IDoubleStringProps } from './DoubleString.interface';\nimport DoubleString from './DoubleString';\n\nexport type { IDoubleStringProps };\nexport default DoubleString;\n", "/* eslint-disable react-web-api/no-leaked-event-listener */\n/* eslint-disable react-dom/no-missing-button-type */\nimport type { ReactNode } from 'react';\nimport type { IHintProps } from './Hint.interface';\n\nimport cn from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { AlertTriangle, HelpCircle } from 'react-feather';\n\nimport { capitalized } from '../../../Functions/utils';\nimport { HelpCircleFilled } from '../../../Molecular/CustomIcons';\n\nimport Spinner from '../../Layout/Spinner/Spinner';\n\nimport { I_AM_OPENED_EVENT_NAME, I_AM_OPENED_EVENT_OPTIONS } from './partials/_constants';\nimport { getHintContainer, HandleClickOutsideObj, HandleScrollObj, initHintContainer } from './partials/_utils';\n\nimport './Hint.scss';\n\n// \u0413\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0439 \u043C\u0430\u043F \u0434\u043B\u044F \u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F \u0442\u0430\u0439\u043C\u0435\u0440\u043E\u0432 \u043F\u043E hintId\nconst hintTimeoutMap = new Map<string, NodeJS.Timeout>();\n\nlet isContentHoveredOuter = false;\n\nconst DEFAULT_EMPTY_OBJ = {} as IHintProps['hintContainer'];\n\nfunction DEFAULT_VOID_FN(): void {}\n\ninterface IIAmOpenedDetails {\n hintId: string;\n}\n\nconst Hint: React.FC<IHintProps> = ({\n hint,\n side = 'right',\n className,\n hintContainer = DEFAULT_EMPTY_OBJ,\n label = '',\n variant = 'filled',\n handleOpenType = 'click',\n onClickCallback,\n onOpenChange = DEFAULT_VOID_FN,\n key,\n id,\n children,\n icon,\n isAccessability = false,\n testId = 'hint',\n isHoverableContent = false,\n isLoading,\n isCloseOnChildrenClick = false,\n}) => {\n const hintRef = useRef(null);\n const [hintId] = useState<string>(id ?? key ?? Math.random().toString(16).slice(2));\n const [iAmOpenedOptions] = useState<Record<string, any>>({ ...I_AM_OPENED_EVENT_OPTIONS, detail: { hintId } });\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [isStyleComputed, setIsStyleComputed] = useState<boolean>(false);\n\n // ? \u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C handleScroll-\u0441\u0442\u0435\u0439\u0442, \u0447\u0442\u043E\u0431\u044B \u043D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u043C\u0435\u043D\u044F\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0443 \u0442\u0435\u043C \u0441\u0430\u043C\u044B\u043C \u0433\u0430\u0440\u0430\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u0443\u044E \u0440\u0430\u0431\u043E\u0442\u0443 removeEventListener.\n // ? \u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u0443\u0435\u043C \u0441\u0442\u0435\u0439\u0442 \u0432\u044B\u0437\u043E\u0432\u043E\u043C \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u0430 HandleScrollObj, \u043F\u0435\u0440\u0435\u0434\u0430\u0435\u043C setIsOpen \u0434\u043B\u044F \u0437\u0430\u043F\u0438\u0441\u0438 \u0432 \u043E\u0431\u044A\u0435\u043A\u0442.\n const [handleScroll] = useState(new (HandleScrollObj as any)(setIsOpen));\n // ? \u041F\u043E \u0430\u043D\u0430\u043B\u043E\u0433\u0438\u0438 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C handleClickOutside\n const [handleClickOutside] = useState(new (HandleClickOutsideObj as any)(hintId, setIsOpen));\n\n const isCallbackExist: boolean = typeof onClickCallback === 'function';\n\n const handle = {\n onMouseEnter: (): void => {\n const existing = hintTimeoutMap.get(hintId);\n if (existing) clearTimeout(existing);\n\n if (handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n setIsOpen(true);\n !isOpen && onClickCallback?.();\n\n // ? (FIN-10491) \u0418\u0434\u0435\u044F \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F:\n // ? \u041B\u044E\u0431\u043E\u0439 hint \u043A\u0430\u043A \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u043D \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F \"\u0448\u0438\u0440\u043E\u043A\u043E\u0432\u0435\u0449\u0430\u0442\u0435\u043B\u044C\u043D\u043E \u043E\u0440\u0451\u0442\" - \"\u044F \u043E\u0442\u043A\u0440\u044B\u0442!\"\n // ? \u0418, \u0432 \u0441\u0432\u043E\u044E \u043E\u0447\u0435\u0440\u0435\u0434\u044C, \u043B\u044E\u0431\u043E\u0439 hint \u0441\u043B\u0443\u0448\u0430\u0435\u0442 \"\u0448\u0438\u0440\u043E\u043A\u043E\u0432\u0435\u0449\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043E\u0440\" \u0438 \u043A\u0430\u043A \u0443\u0441\u043B\u044B\u0448\u0438\u0442 \"\u0434\u0443\u043C\u0430\u0435\u0442\" - \"\u0430 \u044D\u0442\u043E \u043D\u0435 \u044F \u043B\u0438 \u0441\u043B\u0443\u0447\u0430\u0439\u043D\u043E \u043E\u0442\u043A\u0440\u044B\u0442?\".\n // ? \u0415\u0441\u043B\u0438 \u041D\u0415 \u043E\u043D, \u0442\u043E \u0442\u043E\u0433\u0434\u0430 \u043E\u043D \u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F\n\n // ? \u0412 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \"\u0448\u0438\u0440\u043E\u043A\u043E\u0432\u0435\u0449\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0433\u043E \u043E\u0440\u0430\" \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0441\u0438\u0441\u0442\u0435\u043C\u0443:\n // ? - \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0438\u043C \u043D\u0430 \"\u0441\u0435\u0431\u0435\" \u0412\u0421\u041F\u041B\u042B\u0412\u0410\u042E\u0429\u0418\u0419 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0439 \u0438\u0432\u0435\u043D\u0442\n // ? - \u043D\u043E \u0447\u0442\u043E\u0431\u044B \"\u0441\u043B\u044B\u0448\u0430\u0442\u044C \u0433\u043E\u043B\u043E\u0441\u0430\" \u0432\u0441\u0435\u0445 \u0445\u0438\u043D\u0442\u043E\u0432 \"\u0441\u043B\u0443\u0448\u0430\u0435\u043C\" \u043D\u0430 \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0439 \u0442\u043E\u0447\u043A\u0435 \u0432\u0441\u043F\u043B\u044B\u0442\u0438\u044F (\u0442.\u0435. \u043D\u0430 document)\n // @ts-ignore\n hintRef.current?.dispatchEvent?.(new CustomEvent(I_AM_OPENED_EVENT_NAME, iAmOpenedOptions));\n }, 350);\n hintTimeoutMap.set(hintId, timer);\n }\n },\n onMouseLeave: (): void => {\n const existing = hintTimeoutMap.get(hintId);\n if (existing) clearTimeout(existing);\n\n if (!isHoverableContent && handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n setIsOpen(false);\n hintTimeoutMap.delete(hintId);\n }, 1000);\n hintTimeoutMap.set(hintId, timer);\n }\n else if (isHoverableContent && handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n if (!isContentHoveredOuter) {\n setIsOpen(false);\n }\n hintTimeoutMap.delete(hintId);\n }, 100);\n hintTimeoutMap.set(hintId, timer);\n }\n },\n onMouseLeaveHoverableContent: (): void => {\n const existing = hintTimeoutMap.get(hintId);\n if (existing) clearTimeout(existing);\n\n if (isHoverableContent && handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n setIsOpen(false);\n isContentHoveredOuter = false;\n hintTimeoutMap.delete(hintId);\n }, 100);\n hintTimeoutMap.set(hintId, timer);\n }\n },\n onClick: isCloseOnChildrenClick ? (): void => setIsOpen(false) : (): void => {},\n };\n\n const getHintMarkUp = (className: string | undefined): ReactNode => {\n return (\n <div\n data-testid=\"test-hint-text\"\n className={cn('hint__text', `hint__text_${side}`, `hint--${className}__text`)}\n onMouseEnter={(): void => {\n if (isHoverableContent) isContentHoveredOuter = true;\n }}\n onMouseLeave={isHoverableContent ? handle.onMouseLeaveHoverableContent : undefined}\n onClick={handle.onClick}\n style={{ visibility: isStyleComputed ? 'visible' : 'hidden' }}\n >\n {isLoading && <Spinner size=\"small\" />}\n {hint}\n {children}\n </div>\n );\n };\n\n const setHintContainerStyles = (): void | boolean => {\n const hc = getHintContainer(hintId);\n\n if (!hc || !isOpen) return false;\n\n const { width = 0, top = 0, left = 0 } = hintRef?.current !== null ? (hintRef?.current as HTMLElement)?.getBoundingClientRect() : {};\n const { addWidth, addLeft, addTop } = hintContainer ?? {};\n const windowInnerWidth = document.documentElement.clientWidth;\n const windowInnerHeight = document.documentElement.clientHeight;\n\n const sw = hc.getElementsByClassName('hint__text')[0];\n const { width: swWidth, height: swHeight } = sw?.getBoundingClientRect() || {};\n\n hc.style.width = isOpen ? ((addWidth && !Number.isNaN(+addWidth) ? +addWidth : 0) + width)?.toString().concat('px') : '0';\n hc.style.left = isOpen ? ((addLeft && !Number.isNaN(+addLeft) ? +addLeft : 0) + left)?.toString().concat('px') : '0';\n hc.style.top = isOpen ? ((addTop && !Number.isNaN(+addTop) ? +addTop : 0) + top)?.toString().concat('px') : '0';\n hc.style.maxHeight = isOpen ? swHeight?.toString().concat('px') : '0';\n\n // ? \u0411\u0430\u0437\u043E\u0432\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E\u0433\u0440\u0435\u0448\u043D\u043E\u0441\u0442\u0438\n // ? \u0412 \u0440\u0430\u0437\u043D\u044B\u0445 \u0441\u0432\u0438\u0442\u0447-\u043A\u0435\u0439\u0441\u0430\u0445 \u043C\u043E\u0436\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043F\u043E \u0440\u0430\u0437\u043D\u043E\u043C\u0443 (\u0432\u0441\u044F \u0438\u043B\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043D\u043E). \u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u043B \"\u043D\u0430 \u0433\u043B\u0430\u0437\u043E\u043A\"\n const INACCURACY = 20;\n switch (side) {\n case 'top':\n case 'centeredTop':\n if (top - swHeight - (INACCURACY / 2) < 0) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add(`hint__text_${side === 'top' ? 'bottom' : 'centeredBottom'}`);\n }\n break;\n\n case 'bottom':\n case 'centeredBottom':\n if (top + swHeight + INACCURACY > windowInnerHeight) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add(`hint__text_${side === 'bottom' ? 'top' : 'centeredTop'}`);\n }\n break;\n\n case 'left':\n if (left - swWidth - (INACCURACY / 2) < 0) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add('hint__text_right');\n }\n break;\n\n case 'right':\n default:\n if (left + width + swWidth + (INACCURACY / 2) > windowInnerWidth) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add('hint__text_left');\n }\n break;\n }\n\n setIsStyleComputed(true);\n };\n\n const renderHintContainer = (className: string | undefined): React.ReactPortal | null => {\n const hc = getHintContainer(hintId);\n if (!hc) return null;\n return createPortal(getHintMarkUp(className), hc);\n }\n\n useEffect(() => {\n initHintContainer(hintId, hintContainer);\n\n // ? useEffect \u043F\u043E \u043D\u0443\u043B\u0435\u0432\u043E\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442\u0441\u044F 1 \u0440\u0430\u0437, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0441\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u043A\u043E\u043B\u0431\u0435\u043A \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0441\u044F\n const iAmOpenedCallback = (ev: Event): CustomEvent<IIAmOpenedDetails> => {\n const event = ev as CustomEvent<IIAmOpenedDetails>;\n if (event?.detail?.hintId !== hintId) {\n setIsOpen(false);\n const timer = hintTimeoutMap.get(hintId);\n if (timer) {\n clearTimeout(timer);\n hintTimeoutMap.delete(hintId);\n }\n }\n return event;\n };\n\n if (hintRef.current) {\n // ? \u0423\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u043C \u043F\u0440\u043E\u0441\u043B\u0443\u0448\u043A\u0443 \u043D\u0430 \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0439 \u0442\u043E\u0447\u043A\u0435 \u0432\u0441\u043F\u043B\u044B\u0442\u0438\u044F\n document.addEventListener(I_AM_OPENED_EVENT_NAME, iAmOpenedCallback);\n }\n\n return () => {\n document.removeEventListener(I_AM_OPENED_EVENT_NAME, iAmOpenedCallback);\n const timer = hintTimeoutMap.get(hintId);\n if (timer) {\n clearTimeout(timer);\n hintTimeoutMap.delete(hintId);\n }\n };\n }, []);\n\n useEffect(() => {\n setIsStyleComputed(false);\n setHintContainerStyles();\n onOpenChange?.(isOpen);\n\n if (isOpen) {\n document.addEventListener('scroll', handleScroll, true);\n document.addEventListener('click', handleClickOutside, true);\n }\n else {\n document.removeEventListener('scroll', handleScroll, true);\n document.removeEventListener('click', handleClickOutside, true);\n }\n\n return () => {\n const timer = hintTimeoutMap.get(hintId);\n if (timer) {\n clearTimeout(timer);\n hintTimeoutMap.delete(hintId);\n }\n };\n }, [isOpen]);\n\n return (\n <div data-testid={testId} className={cn('hint', className)} ref={hintRef}>\n <button\n tabIndex={isAccessability ? 0 : -1}\n data-testid={typeof label === 'string' && label.length ? label.replace?.(/\\s/g, '-') : `${testId}--button`}\n aria-label={isAccessability && typeof label === 'string' ? label : ''}\n onClick={() =>\n handleOpenType === 'click'\n && (isCallbackExist ? onClickCallback?.() : setIsOpen(!isOpen))}\n onMouseEnter={handle.onMouseEnter}\n onMouseLeave={handle.onMouseLeave}\n className={cn('hint__button', { hint__button_active: isOpen })}\n >\n {icon || icon === null || (\n <>\n {variant === 'outlined' && <HelpCircle width={16} height={16} className=\"hint__icon outlined\" />}\n {variant === 'filled' && <HelpCircleFilled className=\"hint__icon filled\" />}\n {variant === 'warning' && (\n <AlertTriangle className=\"hint__icon\" color=\"#F06D8D\" width={16} height={16} />\n )}\n </>\n )}\n\n {label && (\n <span className={cn('hint__label', { 'color--primary': isOpen })}>\n {typeof label === 'string' ? capitalized(label) : label}\n </span>\n )}\n </button>\n\n {isOpen && renderHintContainer(className)}\n </div>\n );\n}\n\nexport default Hint;\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function HelpCircleFilled(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={16}\n height={16}\n fill=\"none\"\n {...props}\n >\n <path\n fill=\"#9AA0B9\"\n d=\"M8 14.667A6.667 6.667 0 1 0 8 1.333a6.667 6.667 0 0 0 0 13.334Z\"\n />\n <path\n stroke=\"#fff\"\n d=\"M6.06 6a2 2 0 0 1 3.887.667c0 1.333-2 2-2 2M8 11.333h.006\"\n />\n </svg>\n )\n}\n", "export const I_AM_OPENED_EVENT_NAME = 'hint:i-am-open';\nexport const I_AM_OPENED_EVENT_OPTIONS = {\n bubbles: true,\n cancelable: true,\n composed: false,\n};\n", "export const getHintContainerId = (hintId: string | number): string => `hint-container-for-hint--id-${hintId}`;\n\nexport function getHintContainer(hintId: string | number): HTMLElement | null {\n return document.getElementById(getHintContainerId(hintId));\n}\n\nexport function getParentNode(): HTMLElement | null {\n return (\n document.querySelector('div#root')\n ?? document.querySelector('div#app')\n ?? document.body\n );\n}\n\nexport function initHintContainer(hintId: string | number, hintContainerSettings: any): void {\n const { className } = hintContainerSettings;\n const hintContainer = document.createElement('div');\n\n hintContainer.setAttribute('id', getHintContainerId(hintId));\n hintContainer.classList.add('hint__container');\n if (className) hintContainer.classList.add(className);\n\n getParentNode()?.append(hintContainer);\n}\n\n// ? addEventListener \u043C\u043E\u0436\u043D\u043E \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0434\u0432\u0443\u043C\u044F \u0441\u043F\u043E\u0441\u043E\u0431\u0430\u043C\u0438\n// ? - \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u043F\u0440\u044F\u043C\u043E\u0439 \u043A\u043E\u043B\u0431\u044D\u043A (\u0444-\u044E)\n// ? - \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 \u0432 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u0435\u0441\u0442\u044C \u043C\u0435\u0442\u043E\u0434 handleEvent (\u043F\u043E\u043C\u0438\u043C\u043E handleEvent \u043C\u043E\u0436\u043D\u043E \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432 this \u043F\u0440\u043E\u0447\u0438\u0435 \u043F\u043E\u043B\u0435\u0437\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F)\n// ? \u041F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u0441\u044F \u0432\u0442\u043E\u0440\u044B\u043C \u0441\u043F\u043E\u0441\u043E\u0431\u043E\u043C, \u0447\u0442\u043E\u0431\u044B \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 (\u0432\u043E\u043E\u0431\u0449\u0435 \u043C\u043E\u0436\u043D\u043E \u043D\u0435 \u043F\u0438\u0441\u0430\u0442\u044C, \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0438 \u043F\u0440\u043E\u0441\u0442\u043E \u043E\u0442 \u0437\u0430\u043C\u044B\u043A\u0430\u043D\u0438\u044F, \u043D\u043E \u0434\u0435\u043B\u0430\u0435\u043C \u043F\u043E \"\u0434\u0437\u0435\u043D\u0443\")\n// ! \u041C\u0435\u0442\u043E\u0434 \u043D\u0430\u043F\u0438\u0441\u0430\u043D \u0441 \u0440\u0430\u0441\u0447\u0435\u0442\u043E\u043C \u043D\u0430 \u0442\u043E, \u0447\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u0422\u041E\u041B\u042C\u041A\u041E \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u043C \u0442\u0443\u043B\u0442\u0438\u043F\u043E\u043C\nexport function HandleScrollObj(this: any, setIsOpen: (isOpen: boolean) => void): void {\n this.setIsOpen = setIsOpen;\n this.handleEvent = function () {\n this.setIsOpen(false);\n };\n}\n\nexport function HandleClickOutsideObj(this: any, id: string | number, setIsOpen: (isOpen: boolean) => void): void {\n this.id = id;\n this.setIsOpen = setIsOpen;\n this.handleEvent = function (event: Event) {\n if (getHintContainer(this.id)) {\n if (!(getHintContainer(this.id) as HTMLElement).contains(event?.target as Node)) {\n this.setIsOpen(false);\n }\n }\n };\n}\n", "import type { IHintProps } from './Hint.interface';\nimport Hint from './Hint';\n\nexport default Hint;\nexport type { IHintProps };\n", "import type { ReactElement, RefObject } from 'react';\nimport type { ISuspendProcessing } from '../../../Functions/useKeyPress/useKeyPress';\nimport type TWithEventManagementAsObj from '../../../types/declaration/TWithEventManagementAsObj';\nimport type { IModalProps } from './Modal.interface';\n\nimport cn from 'classnames';\nimport { useEffect, useLayoutEffect, useMemo, useRef } from 'react';\n\nimport useHandleKeyPress from '../../../Functions/useKeyPress/useHandleKeyPress';\nimport { getIsOnlyAnObject } from '../../../Functions/utils';\nimport Button from '../Button/Button';\n\nimport { EVENTS } from './partials/_constants';\n\nimport { getOnKeyPress, getWithEventManagementStructure } from './partials/_utils';\nimport ModalFooter from './partials/ModalFooter';\nimport ModalTitle from './partials/ModalTitle';\n\nimport useMobileModal from './partials/useMobileModal';\nimport './Modal.scss';\nimport './ModalMobile.scss';\n\nconst attrsForModalBodyDefault = {}\nexport const KEY_CODE = Object.freeze({\n ENTER: 13,\n ESC: 27,\n} as const);\n\nexport function renderModalTitle({\n mode,\n title,\n onlyTitle,\n}: {\n mode?: string;\n title: string;\n onlyTitle?: boolean;\n}): string {\n if (mode && mode !== 'default' && !onlyTitle) {\n return `${mode[0].toUpperCase()}${mode.slice(1)} ${title}`;\n }\n return title;\n}\n\nfunction Modal({\n ref,\n id,\n testId = 'modal',\n zIndex = 100,\n isOpen,\n onConfirm,\n onDecline,\n closeModal,\n className,\n variant = 'primary',\n size,\n mode,\n title,\n onlyTitle,\n atributesForModalBody = attrsForModalBodyDefault,\n confirmBtnClassName,\n confirmBtnLabel,\n confirmBtnVariant = 'primary',\n confirmBtnDisable,\n confirmBtnIcon,\n isConfirmBtnIconPositionRight,\n noConfirmBtn,\n forced,\n closeBtnClassName,\n closeBtnText,\n closeBtnVariant,\n closeBtnDisable,\n closeBtnIcon,\n btnClassNames,\n isCloseBtnIconPositionRight,\n noCloseBtn,\n noHeader,\n noHeaderCloseBtn,\n customHeader,\n declineBtnDisable,\n noFooter,\n customFooter,\n withFixedFooter,\n leftContentOfFooter,\n isSubmittingByEnter: isSubmittingByEnterOuter = true,\n isClosingByEsc: isClosingByEscOuter = true,\n withEventManagement = false,\n submitOnEnter,\n closeOnEsc,\n withMobileLogic,\n children,\n}: IModalProps & { ref?: React.RefObject<HTMLDivElement | null> }): ReactElement | null {\n const internalRef = useRef<HTMLDivElement | null>(null);\n const modalRef = ref || internalRef;\n\n // ? \u041F\u043E\u044F\u0441\u043D\u0435\u043D\u0438\u0435 \u0440\u0430\u0437\u043D\u0438\u0446\u044B \u043C\u0435\u0436\u0434\u0443 isSubmittingByEnter \u0438 confirmBtnDisable (\u0442\u043E\u0436\u0435 \u0441\u0430\u043C\u043E\u0435 \u0434\u043B\u044F isClosingByEsc \u0438 closeBtnDisable)\n // ? - isSubmittingByEnter \u043E\u0442\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0443 \u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440\u0430 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432, \u044D\u0442\u043E \u0441\u0442\u0430\u0442\u0438\u043A\u0430\n // ? (\u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440\u044B \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432 \u0441\u0442\u0430\u0432\u044F\u0442\u0441\u044F 1 \u0440\u0430\u0437, \u0432 useEffect \u043F\u043E \u043D\u0443\u043B\u0435\u0432\u043E\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438,\n // ? isSubmittingByEnter: false - \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u0435\u0433\u043E \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0443)\n // ? - confirmBtnDisable \u043F\u043E\u0434\u043C\u0435\u043D\u044F\u0435\u0442 onConfirm \u043D\u0430 \u0440\u0435\u0444\u043A\u0435, \u044D\u0442\u043E \u0434\u0438\u043D\u0430\u043C\u0438\u043A\u0430\n // ? (\u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D, \u0441\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u043F\u043E \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u043C \u0438\u0432\u0435\u043D\u0442\u0430\u043C \u0438\u0434\u0443\u0442, \u043D\u043E \u041D\u0415 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442\u0441\u044F onConfirm)\n const onConfirmRef = useRef(onConfirm);\n const closeModalRef = useRef(closeModal);\n const onDeclineRef = useRef(onDecline);\n\n // todo(vl) - \u043D\u0430 \u0441\u0442\u0430\u0440\u044B\u0445 \u043F\u0440\u043E\u043F\u0430\u0445 \u0438 \u0440\u0430\u043D\u044C\u0448\u0435 \u0434\u0435\u0444\u043E\u043B\u0442 \u0431\u044B\u043B true\n // todo(vl) - \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0434\u043B\u044F \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438 \u0441\u0442\u0430\u0440\u044C\u044F \u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u043E\u0442\u0441\u043B\u0435\u0436\u0438\u0432\u0430\u0442\u044C \u0437\u0430\u043F\u0440\u0435\u0442\u044B\n const isSubmittingByEnter = submitOnEnter === false\n ? false\n : isSubmittingByEnterOuter;\n\n const isClosingByEsc = closeOnEsc === false\n ? false\n : isClosingByEscOuter;\n\n // ! \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: withEventManagement \u0438 withEventManagementStructure \u041D\u0415 \u043E\u0434\u043D\u043E \u0438 \u0442\u043E\u0436\u0435!\n // ! withEventManagementStructure (\u0441\u043C\u043E\u0442\u0440\u0438 getWithEventManagementStructure \u0438 \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u044E)\n // ! - \u0442\u0443\u0442 \u0413\u0410\u0420\u0410\u041D\u0422\u0418\u0420\u041E\u0412\u0410\u041D\u041E \u0435\u0441\u0442\u044C \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B \u043F\u0440\u043E\u043F\u0441\u043E\u0432 \u0438\u0437 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0435\u0439 \u0432\u0435\u0442\u043A\u0438 InnerTypes (\u0443\u0436\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435);\n // ! - \u0442\u0443\u0442 \u043D\u0435\u0442 \u043D\u0438\u0447\u0435\u0433\u043E \u0438\u0437 ICommon\n const withEventManagementStructure = getWithEventManagementStructure(id, withEventManagement);\n const isUseAutoBlockingForHandlers = withEventManagementStructure.isWithSubmitAndCloseManagement;\n\n // ? \u0417\u0430\u0432\u044F\u0437\u0430\u043B \u0430\u0432\u0442\u043E\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u043A\u0443 \u043D\u0430 \u0438\u0432\u0435\u043D\u0442-\u043C\u0435\u043D\u0435\u0434\u0436\u043C\u0435\u043D\u0442 \u0434\u043B\u044F \"\u043C\u044F\u0433\u043A\u043E\u0433\u043E\" \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0430, \u0447\u0442\u043E\u0431\u044B \u043D\u0435\u0431\u044B\u043B\u043E \u0441\u044E\u0440\u043F\u0440\u0438\u0437\u043E\u043C \u043F\u043E \u0432\u0441\u0435\u043C \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u043C\n const isOnConfirmBlocked = typeof onConfirm === 'function' && isUseAutoBlockingForHandlers && confirmBtnDisable;\n const isCloseModalBlocked = typeof closeModal === 'function' && isUseAutoBlockingForHandlers && closeBtnDisable;\n const isOnDeclineBlocked = typeof onDecline === 'function' && isUseAutoBlockingForHandlers && declineBtnDisable;\n\n const {\n modalMobileHeaderRef,\n modalMobileBodyRef,\n modalMobileFooterRef,\n MODALS_LOGIC,\n renderModal,\n isMobile,\n scrollTop,\n scrollHeight,\n } = useMobileModal({\n withMobileLogic,\n withFixedFooter,\n isOpen,\n });\n\n // ? \u041B\u0443\u0447\u0448\u0435 \u0447\u0435\u043C useCallback, \u0442.\u043A.\n // ? - \u041D\u0415 \"\u0434\u0451\u0440\u0433\u0430\u0435\u0442\" \u0432\u0435\u0440\u0441\u0442\u043A\u0443 (\u0445\u043E\u0442\u044F \u043F\u043E \u0444\u0430\u043A\u0442\u0443 \u0440\u0435-\u0440\u0435\u043D\u0434\u0435\u0440 \u043F\u0440\u043E\u0438\u0437\u043E\u0439\u0434\u0435\u0442 \u0434\u043B\u044F useLayoutEffect-\u043E\u0432, \u043D\u043E \u0432 \u0448\u0435\u0434\u043E\u0443-\u0434\u043E\u043C\u0435 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0441\u044F)\n // ? - \u041D\u0415 \u0437\u0430\u043C\u044B\u043A\u0430\u0435\u0442 \u0432\u043D\u0435\u0448\u043D\u0438\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F (\u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u0435\u0442 useLayoutEffect)\n // ? - \u041D\u0415 \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440\u044B\n // ? \u0421\u0443\u0442\u044C \u043B\u043E\u0433\u0438\u043A\u0438: \"\u0438\u0434\u0438 \u043F\u043E \u044D\u0442\u043E\u0439 \u0441\u0441\u044B\u043B\u043A\u0435 \u0438 \u043F\u043E\u043F\u044B\u0442\u0430\u0439\u0441\u044F \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0442\u043E \u0447\u0442\u043E \u0442\u0430\u043C \u0435\u0441\u0442\u044C\",\n // ? \u0441\u0441\u044B\u043B\u043A\u0430 - \u043F\u0435\u0440\u043C\u0430\u043D\u0435\u043D\u0442\u043D\u0430\u044F, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0435 \u043C\u043E\u0436\u0435\u0442 \u043C\u0435\u043D\u044F\u0442\u044C\u0441\u044F \u043D\u0435\u0437\u0430\u043C\u0435\u0442\u043D\u043E \u0434\u043B\u044F \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0438\n const handle = useMemo(() => ({\n confirm: () => onConfirmRef.current?.(),\n close: () => closeModalRef.current?.(),\n\n decline: () => {\n if (typeof onDeclineRef.current === 'function') onDeclineRef.current();\n else closeModalRef.current?.();\n },\n }), []);\n\n // ? \u041E\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u043C \u043A\u043E\u043B\u0431\u0435\u043A\u0438, \u0447\u0435\u043A\u0430\u044E\u0449\u0438\u0435 \u0434\u043E\u043F. \u0443\u0441\u043B\u043E\u0432\u0438\u044F \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u0438\u0432\u0435\u043D\u0442\u043E\u0432.\n // ? \u042F \u043F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u044E, \u0447\u0442\u043E \u0432\u0430\u0436\u043D\u043E \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u044D\u0442\u0443 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0438\u043C\u0435\u043D\u043D\u043E \u0447\u0435\u0440\u0435\u0437 \u043A\u043E\u043B\u0431\u0435\u043A\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0431\u0443\u0434\u0443\u0442 \u0447\u0435\u043A\u0430\u0442\u044C \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F,\n // ? \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u041D\u0415 \u0441\u043F\u0440\u043E\u0432\u043E\u0446\u0438\u0440\u0443\u044E\u0442 \u0440\u0435\u0440\u0435\u043D\u0434\u0435\u0440 \u0434\u043B\u044F useCalbeck-\u043B\u043E\u0433\u0438\u043A\u0438, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u044C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0444\u043E\u0440\u043C\u044B \u043F\u0440\u044F\u043C\u043E \u0438\u0437 DOM\n // ? (\u0442.\u043A. \u044D\u0442\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u043C\u043E\u0434\u0430\u043B\u043A\u0438 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0435\u0442 \u043E \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F\u0445 \u0441\u0432\u043E\u0435\u0433\u043E \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0435\u0433\u043E \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430)\n const suspendProcessing = {\n // FIN-12482\n // ? \u0427\u0442\u043E\u0431\u044B \u041D\u0415 \u0437\u0430\u043C\u044B\u043A\u0430\u0442\u044C \u0440\u0435\u0444\u043A\u0443 \u043D\u0430 \u043C\u043E\u0434\u0430\u043B\u043A\u0443 \u0432 \u043B\u043E\u0433\u0438\u043A\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0442\u043E\u043C \u043F\u043E\u0438\u0441\u043A\u0430\u0442\u044C \u0432 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0435 \u0432\u0441\u0435 \u0442\u0435\u043A\u0441\u0442\u044D\u0440\u0438\u0430,\n // ? \u0447\u0442\u043E\u0431\u044B \u043E\u0446\u0435\u043D\u0438\u0442\u044C \u0435\u0441\u0442\u044C \u043B\u0438 \u0441\u0440\u0435\u0434\u0438 \u043D\u0438\u0445 \u0441\u0444\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0430\u044F - \u0434\u0435\u043B\u0430\u0435\u043C \u044D\u043B\u0435\u0413\u0410\u043D\u0442\u043D\u043E:\n // ? \u043E\u0446\u0435\u043D\u0438\u0432\u0430\u0435\u043C ev.target, \u0438 \u0435\u0441\u043B\u0438 target \u044D\u0442\u043E \u0442\u0435\u043A\u0441\u0442\u044D\u0440\u0438\u0430, \u0442\u043E \u0432\u043E\u0442 \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u043E \u043E\u043D\u0430 \u0438 \u0441\u0444\u043E\u043A\u0443\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u0430,\n // ? \u0442.\u0435 \u043D\u0443\u0436\u043D\u043E \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u044B \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0441 \u043D\u0430\u0436\u0430\u0442\u0438\u0435\u043C enter.\n Enter: (ev: globalThis.KeyboardEvent) => (ev?.target as HTMLElement)?.nodeName === 'TEXTAREA',\n\n // ? \u041A\u043E\u043B\u0431\u0435\u043A\u0438 \u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u044B, \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043D\u0443\u0436\u043D\u044B\u0435\n // Escape: (ev: globalThis.KeyboardEvent) => false,\n } as ISuspendProcessing;\n\n useHandleKeyPress({\n enterCallback: isSubmittingByEnter && typeof onConfirm === 'function' && !confirmBtnDisable ? handle.confirm : undefined,\n escCallback: isClosingByEsc && typeof closeModal === 'function' ? handle.close : undefined,\n withClamping: false,\n withEventManagementStructure: {\n isWithSubmitAndCloseManagement: confirmBtnDisable || withEventManagementStructure.isWithSubmitAndCloseManagement,\n },\n suspendProcessing,\n });\n\n useLayoutEffect(() => {\n onConfirmRef.current = isOnConfirmBlocked ? undefined : onConfirm;\n }, [onConfirm, isOnConfirmBlocked]);\n\n useLayoutEffect(() => {\n closeModalRef.current = isCloseModalBlocked ? undefined : closeModal;\n }, [closeModal, isCloseModalBlocked]);\n\n useLayoutEffect(() => {\n // ? \u041D\u0435\u043B\u044C\u0437\u044F \u0432\u044B\u0441\u0442\u0430\u0432\u0438\u0442\u044C undefined, \u0442.\u043A. \u0432 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0441\u044F closeModal (\u0441\u043C\u043E\u0442\u0440\u0438 handle.decline)\n onDeclineRef.current = isOnDeclineBlocked ? () => {} : onDecline;\n }, [onDecline, isOnDeclineBlocked]);\n\n // ? \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043D\u0430\u0436\u0430\u0442\u0438\u044F enter \u0438 esc \u043D\u0430 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u0430\u0445\n useEffect(() => {\n const outerTarget = getIsOnlyAnObject(withEventManagement)\n ? (withEventManagement as TWithEventManagementAsObj<'Modal'>).listenersTarget\n : undefined;\n const target = outerTarget ?? document;\n\n // ? useEffect \u043F\u043E \u043D\u0443\u043B\u0435\u0432\u043E\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F 1 \u0440\u0430\u0437, \u0430 \u0437\u043D\u0430\u0447\u0438\u0442 \u0441\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u043A\u043E\u043B\u0431\u0435\u043A \u041D\u0415 \u0438\u0437\u043C\u0435\u043D\u044F\u0442\u0441\u044F,\n // ? \u0430 \u0437\u043D\u0430\u0447\u0438\u0442 \u0441\u043D\u044F\u0442\u0438\u0435 \u0441\u043B\u0443\u0448\u0430\u0442\u0435\u043B\u044F \u043F\u0440\u043E\u0439\u0434\u0435\u0442 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\n const onKeyPress = getOnKeyPress({ id, onSubmit: handle.confirm, onClose: handle.close, suspendProcessing });\n\n if (withEventManagementStructure.isWithSubmitAndCloseManagement && !!onKeyPress) {\n if (isSubmittingByEnter) target.addEventListener(EVENTS.iGotAnEnterKeyPress.name, onKeyPress);\n if (isClosingByEsc) target.addEventListener(EVENTS.iGotAnEscKeyPress.name, onKeyPress);\n }\n\n return () => {\n if (withEventManagementStructure.isWithSubmitAndCloseManagement && !!onKeyPress) {\n if (isSubmittingByEnter) target.removeEventListener(EVENTS.iGotAnEnterKeyPress.name, onKeyPress);\n if (isClosingByEsc) target.removeEventListener(EVENTS.iGotAnEscKeyPress.name, onKeyPress);\n }\n }\n }, []);\n\n if (!isOpen) return null;\n\n return (\n <div\n id={`${id}`}\n style={{ zIndex }}\n data-testid={testId}\n className=\"modal-box j5\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={`${testId}-title`}\n >\n {renderModal(\n <>\n <div\n data-testid={`${testId}-overlay`}\n className={isOpen ? 'modal-overlay' : 'hidden'}\n onClick={handle.close}\n role=\"presentation\"\n />\n <div\n ref={modalRef as RefObject<HTMLDivElement>}\n style={{ width: typeof size === 'number' ? `${size}px` : `${size?.replace('px', '')}px` }}\n className={cn(className, {\n 'modal': isOpen,\n 'modal--no-header': isOpen && noHeader && !customHeader,\n 'modal-mobile': isOpen && isMobile,\n 'hidden': !isOpen,\n })}\n >\n {customHeader || (!noHeader && (\n <ModalTitle\n wrapperRef={modalMobileHeaderRef}\n className={cn({\n 'modal__header--hidden': MODALS_LOGIC.IS_HEADER_HIDDEN,\n 'modal__header--sticky': !MODALS_LOGIC.IS_HEADER_HIDDEN && MODALS_LOGIC.IS_HEADER_STICKY,\n })}\n variant={variant}\n isForced={forced}\n onClose={handle.close}\n noHeaderCloseBtn={noHeaderCloseBtn}\n >\n <span id={`${testId}-title`}>{renderModalTitle({ mode, title, onlyTitle })}</span>\n </ModalTitle>\n ))}\n\n <div\n {...atributesForModalBody}\n ref={modalMobileBodyRef}\n className={cn('modal__body', {\n 'modal__body--no-footer': noFooter,\n })}\n role=\"document\"\n >\n {children}\n </div>\n\n {(!noFooter || customFooter) && (\n <ModalFooter\n wrapperRef={modalMobileFooterRef}\n className={cn({\n 'modal__footer--hidden': MODALS_LOGIC.IS_FOOTER_HIDDEN,\n 'modal__footer--sticky':\n !MODALS_LOGIC.IS_FOOTER_HIDDEN\n && MODALS_LOGIC.IS_FOOTER_STICKY\n && scrollTop !== scrollHeight,\n 'modal__footer_with-left-content': leftContentOfFooter,\n })}\n >\n {customFooter || (\n <>\n {leftContentOfFooter}\n {(!noCloseBtn || !noConfirmBtn) && (\n <div className=\"modal__buttons-block\">\n {!noCloseBtn && (\n <Button\n testId=\"modal\"\n className={cn(closeBtnClassName, btnClassNames)}\n variant={closeBtnVariant || 'dark-outline'}\n onClick={handle.decline}\n label={closeBtnText || 'Cancel'}\n disabled={typeof onDecline === 'function' ? declineBtnDisable : closeBtnDisable}\n icon={closeBtnIcon}\n isIconRight={isCloseBtnIconPositionRight}\n tabIndex={1}\n aria-label=\"Close modal\"\n />\n )}\n {!noConfirmBtn && (\n <Button\n testId=\"modal\"\n onClick={handle.confirm}\n label={\n confirmBtnLabel\n || (mode && mode?.[0].toUpperCase() + mode?.slice(1))\n || 'Apply'\n }\n className={cn('ml5', confirmBtnClassName, btnClassNames)}\n variant={confirmBtnVariant}\n disabled={confirmBtnDisable}\n icon={confirmBtnIcon}\n isIconRight={isConfirmBtnIconPositionRight}\n aria-label=\"Confirm modal\"\n />\n )}\n </div>\n )}\n </>\n )}\n </ModalFooter>\n )}\n </div>\n </>,\n )}\n </div>\n );\n}\n\nModal.displayName = 'Modal';\n\nexport default Modal;\n", "import type TWithEventManagementAsObj from '../../types/declaration/TWithEventManagementAsObj';\nimport type { ISuspendProcessing } from './useKeyPress';\n\nimport { useEffect } from 'react';\nimport useKeyPress from './useKeyPress';\n\ninterface UseHandleKeyPressProps {\n /** Callback function to be called when Escape key is pressed */\n escCallback?: () => void;\n /** Callback function to be called when Enter key is pressed */\n enterCallback?: () => void;\n /** Whether to allow key repeat events */\n withClamping?: boolean;\n\n withEventManagementStructure?: TWithEventManagementAsObj<'Modal'>;\n\n /** Array of Keys (ev.key) to exclude from processing */\n suspendProcessing?: null | ISuspendProcessing;\n}\n\n/**\n * A hook that handles Enter and Escape key press events\n *\n * @param props - Configuration object for key press handling\n * @param props.escCallback - Function to be called when Escape key is pressed\n * @param props.enterCallback - Function to be called when Enter key is pressed\n * @param props.withClamping - Whether to allow key repeat events (default: true)\n * @param props.withEventManagementStructure - Structure for event management (e.g. Modal)\n * @param props.suspendProcessing - Optional map of key -> predicate to suspend processing for specific keys\n *\n * @example\n * ```tsx\n * function Component() {\n * useHandleKeyPress({\n * escCallback: () => console.log('Esc pressed'),\n * enterCallback: () => console.log('Enter pressed'),\n * });\n * }\n * ```\n */\nfunction useHandleKeyPress({\n escCallback,\n enterCallback,\n withClamping = true,\n withEventManagementStructure,\n suspendProcessing = null,\n}: UseHandleKeyPressProps): void {\n const { isWithSubmitAndCloseManagement } = withEventManagementStructure || {};\n\n const isPressEnter = useKeyPress('Enter', withClamping, isWithSubmitAndCloseManagement, suspendProcessing);\n const isPressEscape = useKeyPress('Escape', withClamping, isWithSubmitAndCloseManagement, suspendProcessing);\n\n useEffect(() => {\n if (!isWithSubmitAndCloseManagement && isPressEscape && typeof escCallback === 'function') {\n escCallback();\n }\n }, [isPressEscape, escCallback]);\n\n useEffect(() => {\n if (!isWithSubmitAndCloseManagement && isPressEnter && typeof enterCallback === 'function') {\n enterCallback();\n }\n }, [isPressEnter, enterCallback])\n}\n\nexport default useHandleKeyPress;\n", "import { useCallback, useEffect, useState } from 'react';\nimport { getIsOnlyAnObject } from '../utils';\n\n/**\n * A hook that detects when a specific key is pressed\n * @param targetKey - The key to listen for\n * @param clamping - Whether to allow key repeat events\n * @returns boolean indicating if the target key is currently pressed\n */\n\nexport interface ISuspendProcessing {\n [key: string]: (event: globalThis.KeyboardEvent) => boolean; // \u0412\u0435\u0440\u043D\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u041D\u0423\u0416\u041D\u041E \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443\n}\n\nexport function isISuspendProcessing(x: unknown): x is ISuspendProcessing {\n return getIsOnlyAnObject(x) && Object.values(x as Record<string, unknown>).every(v => typeof v === 'function');\n}\n\nfunction useKeyPress(\n targetKey: string,\n clamping: boolean = true,\n isForbidden?: boolean,\n suspendProcessing?: null | ISuspendProcessing,\n): boolean {\n const [keyPressed, setKeyPressed] = useState<boolean>(false);\n const safelySuspendProcessing = (isISuspendProcessing(suspendProcessing) ? suspendProcessing : {}) as ISuspendProcessing;\n\n const downHandler = useCallback(\n (event: globalThis.KeyboardEvent): void => {\n const { key, repeat, altKey, ctrlKey, shiftKey, metaKey } = event;\n const isPressingWithoutAuxiliaryKeys = !altKey && !ctrlKey && !shiftKey && !metaKey;\n\n if (key === targetKey && isPressingWithoutAuxiliaryKeys && !(safelySuspendProcessing[key]?.(event))) {\n if (!clamping && repeat) return;\n setKeyPressed(true);\n }\n },\n // ? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u044F\u0445 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0438\u043C\u0435\u043D\u043D\u043E \u0432\u0445\u043E\u0434\u043D\u043E\u0439 suspendProcessing,\n // ? \u0445\u043E\u0442\u044C \u0432 \u043A\u043E\u0434\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \"\u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u044B\u0439\"\n [clamping, targetKey, suspendProcessing],\n );\n\n const upHandler = useCallback(\n (event: globalThis.KeyboardEvent): void => {\n const { key, repeat, altKey, ctrlKey, shiftKey, metaKey } = event;\n const isPressingWithoutAuxiliaryKeys = !altKey && !ctrlKey && !shiftKey && !metaKey;\n\n if (key === targetKey && isPressingWithoutAuxiliaryKeys && !(safelySuspendProcessing[key]?.(event))) {\n if (!clamping && repeat) return;\n setKeyPressed(false);\n }\n },\n // ? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u044F\u0445 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0438\u043C\u0435\u043D\u043D\u043E \u0432\u0445\u043E\u0434\u043D\u043E\u0439 suspendProcessing,\n // ? \u0445\u043E\u0442\u044C \u0432 \u043A\u043E\u0434\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \"\u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u044B\u0439\"\n [clamping, targetKey, suspendProcessing],\n );\n\n useEffect(\n () => {\n const handleDown = (event: globalThis.KeyboardEvent): void => downHandler(event);\n const handleUp = (event: globalThis.KeyboardEvent): void => upHandler(event);\n\n if (!isForbidden) {\n window.addEventListener('keydown', handleDown);\n window.addEventListener('keyup', handleUp);\n }\n\n return () => {\n // ? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u041D\u0415 \u043E\u0431\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u044E if-\u043A\u043E\u0439:\n // ? \u043F\u0440\u0438 \u043F\u043E\u043F\u044B\u0442\u043A\u0435 \u0441\u043D\u044F\u0442\u044C \u0435\u0441\u043B\u0438 \u043D\u0435 \u0431\u044B\u043B\u043E \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u043E\u0448\u0438\u0431\u043A\u0438 \u043D\u0435 \u0431\u0443\u0434\u0435\u0442,\n // ? \u043D\u043E \u043F\u0440\u0438 \u044D\u0442\u043E\u043C \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E \u043E\u0442\u0440\u0430\u0431\u043E\u0442\u0435\u0442 \u043F\u0435\u0440\u0435\u0445\u043E\u0434 \u0438\u0437 isForbidden: false \u0432 isForbidden: true.\n window.removeEventListener('keydown', handleDown);\n window.removeEventListener('keyup', handleUp);\n };\n },\n // ? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u044F\u0445 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0438\u043C\u0435\u043D\u043D\u043E \u0432\u0445\u043E\u0434\u043D\u043E\u0439 suspendProcessing,\n // ? \u0445\u043E\u0442\u044C \u0432 \u043A\u043E\u0434\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \"\u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u044B\u0439\"\n [downHandler, upHandler, isForbidden, suspendProcessing],\n );\n\n return keyPressed;\n}\n\nexport default useKeyPress;\n", "// ? \u041E\u043F\u0446\u0438\u0438 \u0434\u043B\u044F \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0430 \u0438\u0432\u0435\u043D\u0442\u0430\nexport const DEFAULT_EVENT_OPTIONS = Object.freeze({\n bubbles: true,\n cancelable: true,\n composed: false,\n});\n\n// ? \u0412\u043E\u0437\u043C\u043E\u0436\u043D\u044B\u0435 \u043A\u043B\u044E\u0447\u0438 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432, \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u043E\u0442\u0440\u0435\u043D\u043D\u044B\u0445 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0435 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 (\u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0439 \u043D\u0435\u0439\u043C\u0438\u043D\u0433)\nexport enum ModalEventsInnerKeys {\n iGotAnEnterKeyPress = 'iGotAnEnterKeyPress',\n iGotAnEscKeyPress = 'iGotAnEscKeyPress',\n}\n\n/** \u0422\u0438\u043F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F ev.key (KeyboardEvent.key) \u2014 \u043F\u0440\u0438\u0432\u044F\u0437\u043A\u0430 \u043A \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u043E\u043C\u0443 \u0442\u0438\u043F\u0443, \u0431\u0435\u0437 \u0441\u0432\u043E\u0435\u0433\u043E union */\nexport type KeyboardEventKey = globalThis.KeyboardEvent['key'];\n\n// ? \u0418\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438\u0432\u0435\u043D\u0442\u0430 (\u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u043D\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E\u0431 \u0438\u0432\u0435\u043D\u0442\u0435)\nexport interface ICustomEvent<Key extends ModalEventsInnerKeys> {\n // ? \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0439 \u043A\u043B\u044E\u0447, \u0441\u043E\u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u0435 \u0441 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u043C \u043D\u0435\u0439\u043C\u0438\u043D\u0433\u043E\u043C\n innerKey: Key;\n // ? \u041F\u043E\u043B\u043D\u043E\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0438\u0432\u0435\u043D\u0442\u0430 (\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0430)\n // ? \u0414\u043B\u044F \u043F\u043E\u043B\u043D\u043E\u0433\u043E \u0438\u043C\u0435\u043D\u0438 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u043E\u0433\u043E \u0438\u0432\u0435\u043D\u0442\u0430 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0448\u0430\u0431\u043B\u043E\u043D:\n // ? '\u0443\u0441\u043B\u043E\u0432\u043D\u0430\u044F_\u0446\u0435\u043B\u044C_\u0438\u0432\u0435\u043D\u0442\u0430:\u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435_\u0442\u043E\u0433\u043E_\u0447\u0442\u043E_\u043F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u043E'\n // ? \u041D\u0430 \u0443\u0440\u043E\u0432\u043D\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u0430 \u043F\u043D\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u0430 EVENTS \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0430 (\u043A\u0430\u043A \u0438 \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0440),\n // ? \u0418 \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0438\u0442\u0441\u044F \u0431\u0443\u0434\u0443\u0442 \u0438\u0432\u0435\u043D\u0442\u044B \u043D\u0430 \u043C\u0430\u043D\u0435\u0440\u0443: dispatch(EVENTS.iGotAnEnterKeyPress.name, ...\u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0435_\u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u044B)\n name: string;\n // ? \u041D\u041E )) \u0435\u0441\u043B\u0438 \u043A\u043E\u043C\u0443\u0442\u043E \u043B\u0435\u043D\u044C, \u0442\u043E \u043C\u043E\u0436\u043D\u043E \u0432\u043E\u0441\u043F\u043E\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043A\u043E\u0442\u043E\u0442\u043A\u0438\u043C \u0438\u043C\u0435\u043D\u0435\u043D\u043C \u0438 \u043F\u0440\u043E\u043F\u0438\u0441\u0430\u0442\u044C \"\u0440\u0443\u043A\u0430\u043C\u0438\"\n // ? \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: dispatch('enterIsPressed', ...\u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0435_\u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u044B), \u0435\u0441\u043B\u0438 'enterIsPressed' \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 shortName \u043D\u0443\u0436\u043D\u043E\u0433\u043E \u0438\u0432\u0435\u043D\u0442\u0430\n // ? \u041D\u043E, \u043D\u0443\u0436\u043D\u043E \u043F\u043E\u043C\u043D\u0438\u0442\u044C, \u0447\u0442\u043E \u043D\u0430 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 (\u0443\u0440\u043E\u0432\u0435\u043D\u044C \u043B\u0438\u0431\u044B) \u0438\u0432\u0435\u043D\u0442 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0441\u0435-\u0440\u0430\u0432\u043D\u043E \u0441 \u043F\u043E\u043B\u043D\u044B\u043C \u0438\u043C\u0435\u043D\u0435\u043D\u043C (custonEvent.type),\n // ? \u0442\u0430\u043A \u043D\u0430\u043F\u0438\u0441\u0430\u043D \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0440\n shortName: string;\n\n // ? \u0418\u0434\u0435\u0442\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0434\u043B\u044F \u043C\u0435\u0445\u0430\u043D\u0438\u043A\u0438 suspendProcessing: \u043A\u043B\u044E\u0447 \u043A\u043E\u043B\u0431\u0435\u043A\u0430 \u0438\u0437 suspendProcessing \u0441 \u043A\u043E\u0442\u043E\u0440\u044B\u043C \u0441\u043E\u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0441\u044F \u044D\u0442\u043E\u0442 \u0438\u0432\u0435\u043D\u0442.\n // ? \u0417\u0430\u0432\u044F\u0437\u0430\u043B \u0431\u044B \u043C\u0435\u0445\u0430\u043D\u0438\u043A\u0443 suspendProcessing \u043D\u0430 \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u044E \u0438 \u043D\u0435\u0439\u043C\u0438\u043D\u0433 \u043E\u0442\u0441\u044E\u0434\u0430, \u043D\u043E \u0432\u044B\u043D\u0443\u0436\u0434\u0435\u043D \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044C \u0441\u0442\u0430\u0440\u044B\u0435 \u043C\u0435\u0445\u0430\u043D\u0438\u043A\u0438\n // ? (\u0432 \u0447\u0430\u0441\u0442\u043D\u043E\u0441\u0442\u0438 useKeyPress), \u0430 \u0442\u0430\u043C \u043A\u0430\u043A \u0431\u044B \u043D\u0435 \u043E\u0447\u0435\u043D\u044C \u043B\u043E\u0433\u0438\u0447\u043D\u043E \u044E\u0437\u0430\u0442\u044C \"\u043A\u0430\u043A\u0443\u044E-\u0442\u043E \u043B\u0435\u0432\u0443\u044E \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u044E\"\n // ? \u041D\u0430 \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u043C\u043E\u043C\u0435\u043D\u0442. \u0441\u0438\u0441\u0442\u0435\u043C\u0430 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432 \"\u0443\u043C\u0435\u0435\u0442\" \u043E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0442\u044C \u043D\u0430\u0436\u0430\u0442\u0438\u044F \u043A\u043B\u0430\u0432\u0438\u0448 (enter \u0438 escape),\n // ? \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043B\u043E\u0433\u0438\u0447\u043D\u043E \u0432\u044B\u0431\u0440\u0430\u0442\u044C ev.key (\u043A\u043B\u044E\u0447 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 \u0432 \u0438\u0432\u0435\u043D\u0442\u0435 - KeyboardEventKey).\n // ? \u041D\u043E \u0432 \u0434\u0430\u043B\u044C\u043D\u0435\u0439\u0448\u0435\u043C \u0441\u0438\u0441\u0442\u0435\u043C\u0430 \u043C\u043E\u0436\u0435\u0442 \u0440\u0430\u0448\u0438\u0440\u044F\u0442\u044C\u0441\u044F \u0438 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0442\u044C\u0438\u0432\u0435\u043D\u0442\u044B \"\u043D\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u043D\u044B\u0435\", \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u0430\u0442\u0440\u0438\u0432\u0430\u044E \u043F\u0440\u043E\u0442\u043E \u0441\u0442\u0440\u0438\u043D\u0433\u043E\u0432\u043E\u0435 \u0432\u0435\u043B\u044C\u044E.\n middlewareKey: string | KeyboardEventKey;\n // ? \u041E\u043F\u0446\u0438\u0438 \u0434\u043B\u044F \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0430 \u0438\u0432\u0435\u043D\u0442\u0430, \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C DEFAULT_EVENT_OPTIONS, \u043C\u043E\u0436\u043D\u043E \u043F\u0440\u043E\u043F\u0438\u0441\u0430\u0442\u044C \u0441\u0432\u043E\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F\n options: EventInit;\n}\n\n/** \u041E\u0431\u044A\u0435\u043A\u0442, \u0443 \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E \u043A\u0430\u0436\u0434\u044B\u0439 \u043A\u043B\u044E\u0447 K \u0438\u0437 \u0435\u043D\u0430\u043C\u0430 \u0437\u0430\u0434\u0430\u0451\u0442 \u0442\u0438\u043F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F ICustomEvent<K> */\n// ? \u041E\u0431\u044A\u0435\u043A\u0442 \u0443 \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E\n// ? - \u043A\u043B\u044E\u0447\u0438 \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u0422\u041E\u041B\u042C\u041A\u041E \u0438\u0437 ModalEventsInnerKeys\n// ? - \u043A\u043B\u044E\u0447 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0437\u0430\u0434\u0430\u0435\u0442 \u043A\u043B\u044E\u0447 \u0434\u0436\u0435\u043D\u0435\u0440\u0438\u043A\u0430 ICustomEvent (\u0444\u0438\u043A\u0441\u0438\u0440\u0443\u0435\u043C \u043A\u043E\u043D\u043A\u0440\u0435\u0442\u043D\u044B\u0439 \u0438\u0432\u0435\u043D\u0442 \u0441 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u043C \u043D\u0435\u0439\u043C\u0438\u043D\u0433\u043E\u043C, \u0432 \u0438\u0432\u0435\u043D\u0442\u0435 - innerKey)\nexport type IConstantInfoAboutModalEvents<Keys extends ModalEventsInnerKeys> = { [K in Keys]: ICustomEvent<K> };\n\n// ? \u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0432\u0441\u0435\u0445 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432, \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u043E\u0442\u0440\u0435\u043D\u043D\u044B\u0445 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0435 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438.\nexport const EVENTS: IConstantInfoAboutModalEvents<ModalEventsInnerKeys> = Object.freeze({\n [ModalEventsInnerKeys.iGotAnEnterKeyPress]: {\n innerKey: ModalEventsInnerKeys.iGotAnEnterKeyPress,\n name: 'modal:i-got-an-enter-key-press',\n shortName: 'enterIsPressed',\n middlewareKey: 'Enter',\n options: DEFAULT_EVENT_OPTIONS,\n },\n [ModalEventsInnerKeys.iGotAnEscKeyPress]: {\n innerKey: ModalEventsInnerKeys.iGotAnEscKeyPress,\n name: 'modal:i-got-an-esc-key-press',\n shortName: 'escIsPressed',\n middlewareKey: 'Escape',\n options: DEFAULT_EVENT_OPTIONS,\n },\n});\n", "import type { ISuspendProcessing } from '../../../../Functions/useKeyPress/useKeyPress';\nimport type TWithEventManagementAsObj from '../../../../types/declaration/TWithEventManagementAsObj';\nimport type { IModalProps } from '../Modal.interface';\nimport type { ICustomEvent, ModalEventsInnerKeys } from './_constants';\n\nimport { isISuspendProcessing } from '../../../../Functions/useKeyPress/useKeyPress';\nimport { getIsOnlyAnObject } from '../../../../Functions/utils';\nimport { EVENTS } from './_constants';\n\n// ? \u0413\u0435\u0442\u0442\u0435\u0440 \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043B\u044F \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F/\u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0438\u0432\u0435\u043D\u0442\u0430\u043C\u0438\n// ? \u0413\u0430\u0440\u0430\u043D\u0442\u0438\u0440\u0443\u0435\u0442 \u0432\u043E\u0437\u0432\u0440\u0430\u0442 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0441 \u041F\u041E\u041B\u041D\u042B\u041C \u043D\u0430\u0431\u043E\u0440\u043E\u043C \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u044B\u0445 \u043E\u043F\u0446\u0438\u0439\nexport function getWithEventManagementStructure(\n modalId: number | string | null | undefined,\n withEventManagement?: IModalProps['withEventManagement'],\n): TWithEventManagementAsObj<'Modal', true> {\n // ! \u0422\u0443\u0442 \u0414\u041E\u041B\u0416\u041D\u042B \u0411\u042B\u0422\u042C \u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0435\u043D\u044B \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B \u0438\u0437 \u0442\u0438\u043F\u0430 TWithEventManagementAsObj<'Modal'> (\u0411\u0415\u0417 \u043F\u0440\u043E\u043F\u0441\u043E\u0432 ICommon)\n // ! \u0418\u043C\u0435\u043D\u043D\u043E \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0441 isHard-\u043E\u043F\u0446\u0438\u0435\u0439 \u0438 \u0447\u0435\u0440\u0435\u0437 satisfies\n const output = {\n isWithSubmitAndCloseManagement: false,\n } satisfies TWithEventManagementAsObj<'Modal', true>;\n\n // ? \u0418\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043C\u0441\u044F \u043F\u043E \u043E\u043F\u0438\u0441\u0430\u043D\u043D\u044B\u043C \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430\u043C\n for (const key in output) {\n // ? \u0415\u0441\u043B\u0438 \u0432 \u043C\u043E\u0434\u0430\u043B\u043A\u0443 \u041D\u0415 \u043F\u0435\u0440\u0435\u0434\u0430\u043D id, \u0442\u043E \u0441\u0438\u0441\u0442\u0435\u043C\u0430 \u041D\u0415 \u0441\u043C\u043E\u0436\u0435\u0442 \u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\n if (!modalId) {\n output[key as keyof typeof output] = false;\n }\n else {\n // ? \u041F\u0440\u0438c\u0432\u0430\u0438\u0432\u0430\u0435\u043C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u043F\u0430\u043C \u0437\u0430\u0434\u0430\u043D\u043D\u043E\u0439 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0438\u0441\u0445\u043E\u0434\u044F \u0438\u0437 withEventManagement\n // ? - \u0435\u0441\u043B\u0438 withEventManagement \u043E\u0431\u044A\u0435\u043A\u0442, \u0442\u043E \u044D\u0442\u043E \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0430\u044F \u043F\u0440\u043E\u043F\u0430 (\u0435\u0441\u043B\u0438 \u0442\u0430\u043A\u0430\u044F \u0435\u0441\u0442\u044C)\n // ? - \u043B\u0438\u0431\u043E \u044D\u0442\u043E \u043F\u0440\u0438\u0432\u0435\u0434\u0451\u043D\u043D\u043E\u0435 \u043A \u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u043E\u043C\u0443 \u0442\u0438\u043F\u0443 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 withEventManagement\n output[key as keyof typeof output] = (\n getIsOnlyAnObject(withEventManagement)\n ? ((withEventManagement as TWithEventManagementAsObj<'Modal'>)[key as keyof TWithEventManagementAsObj<'Modal'>] ?? false)\n : !!withEventManagement\n );\n }\n }\n\n return output;\n}\n\n// ? \u0413\u0435\u0442\u0442\u0435\u0440 \u043A\u043E\u043B\u0431\u0435\u043A\u0430 \u0434\u043B\u044F \u0437\u0430\u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u043D\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u043E\u0432\n// ? (\u0441\u0434\u0435\u043B\u0430\u043D\u043E \u0447\u0435\u0440\u0435\u0437 \u0433\u0435\u0442\u0442\u0435\u0440 \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0434\u0443\u0431\u043B\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0434\u043B\u044F Modal \u0438 ModalHOC,\n// ? \u0435\u0441\u043B\u0438 \u043F\u0438\u0448\u0435\u0442\u0441\u044F \u0434\u043B\u044F \u043E\u0434\u043D\u043E\u0433\u043E \u043C\u0435\u0441\u0442\u0430, \u0442\u043E \u0432 \u0433\u0435\u0442\u0435\u0440\u0435 \u043D\u0435\u0442 \u0441\u043C\u044B\u0441\u043B\u0430, \u043C\u043E\u0436\u043D\u043E \u0432\u0441\u0435 \u043F\u0438\u0441\u0430\u0442\u044C \u0432 useEffect)\nexport function getOnKeyPress({\n id: modalId,\n onSubmit,\n onClose,\n suspendProcessing,\n}: {\n id: number | string | null | undefined;\n onSubmit?: () => unknown;\n onClose?: () => unknown;\n suspendProcessing?: ISuspendProcessing | null;\n}): ((ev: Event) => void) | null {\n if (!modalId) return null;\n\n return function onKeyPress(ev: Event): void {\n // ? \u041F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0442\u0438\u043F\u0438\u0437\u0430\u0446\u0438\u0438\n const customEvent = ev as CustomEvent;\n // ? \u0414\u043E\u0441\u0442\u0430\u0435\u043C \u0434\u0435\u0442\u0430\u043B\u0438 \u0437\u0430\u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u043D\u043D\u043E\u0433\u043E \u0438\u0432\u0435\u043D\u0442\u0430\n const { id: eventId, realEvent } = customEvent.detail || {};\n // ? \u0414\u043E\u0441\u0442\u0430\u0435\u043C \u0438\u0437 \u0441\u043F\u0440\u0430\u0432\u043E\u0447\u043D\u0438\u043A\u0430 \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u043D\u0443\u044E \u0438\u043D\u0444\u0443 \u043E\u0431 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u043E\u043C \u0438\u0432\u0435\u043D\u0442\u0435\n const constantInfoAboutCustomEvent = (\n Object.values(EVENTS).find(ev => ev.name === customEvent.type || ev.shortName === customEvent.type) || {}\n ) as ICustomEvent<ModalEventsInnerKeys>;\n // ? \u0412\u044B\u044F\u0441\u043D\u044F\u0435\u043C \u043A\u043B\u044E\u0447 \u0434\u043B\u044F \u0441\u0438\u0441\u0442\u0435\u043C\u044B suspendProcessing\n const middlewareKey = constantInfoAboutCustomEvent.middlewareKey || 'incorrectKey';\n\n const safelySuspendProcessing = (isISuspendProcessing(suspendProcessing) ? suspendProcessing : {}) as ISuspendProcessing;\n\n // ? \u0414\u0435\u043B\u0430\u0435\u043C \u0447\u0442\u043E-\u043B\u0438\u0431\u043E \u0435\u0441\u043B\u0438\n // ? - \u0435\u0441\u043B\u0438 \u0435\u0441\u0442\u044C modalId (\u043C\u043E\u0434\u0430\u043B\u043A\u0430 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043E\u0432\u0430\u043D\u0430)\n // ? - \u0435\u0441\u043B\u0438 \u0435\u0441\u0442\u044C eventId (\u043F\u0440\u0438 \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u043E\u0433\u043E \u0438\u0432\u0435\u043D\u0442\u0430 \u043D\u0430 \u0443\u0440\u043E\u0432\u043D\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u0430 \u0443\u043A\u0430\u0437\u0430\u043B\u0438 \u043A\u043E\u043C\u0443 \u0430\u0434\u0440\u0435\u0441\u043E\u0432\u0430\u043D \u0438\u0432\u0435\u043D\u0442)\n // ? - \u0435\u0441\u043B\u0438 eventId === modalId (\u0437\u0430\u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u043D\u044B\u0439 \u0438\u0432\u0435\u043D\u0442 \u043F\u0440\u0435\u0434\u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D \u044D\u0442\u043E\u0439 \u043C\u043E\u0434\u0430\u043B\u043A\u0435)\n // ? - \u0435\u0441\u043B\u0438 \u043D\u0435\u0442 \u043E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u0439 \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 (\u0435\u0441\u0442\u044C \u043A\u043E\u043B\u0431\u0435\u043A \u0438 \u0435\u0433\u043E \u0437\u0430\u043F\u0443\u0441\u043A \u0432\u0435\u0440\u043D\u0443\u043B true, \u0442.\u0435. \"\u0434\u0430, \u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C\")\n if (modalId && eventId && eventId === modalId && !(safelySuspendProcessing[middlewareKey]?.(realEvent))) {\n // ? \u0412 ev.type \u043F\u0440\u0438\u0445\u043E\u0434\u0438\u0442 \u041F\u041E\u041B\u041D\u041E\u0415 \u0438\u043C\u044F \u0438\u0432\u0435\u043D\u0442\u0430 (\u0442\u0430\u043A \u043D\u0430\u043F\u0438\u0441\u0430\u043D \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0440)\n switch (customEvent.type) {\n case EVENTS.iGotAnEnterKeyPress.name: {\n onSubmit?.();\n break;\n }\n case EVENTS.iGotAnEscKeyPress.name: {\n onClose?.();\n break;\n }\n default: { break; }\n }\n }\n };\n}\n\n// ? \u0414\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0440 \u0438\u0432\u0435\u043D\u0442\u043E\u0432 (\u0434\u043B\u044F \u044D\u043A\u0441\u043F\u043E\u0440\u0442\u0430, \u0434\u043B\u044F \u0443\u0434\u043E\u0431\u0441\u0442\u0432\u0430 \u0438 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u0441\u0442\u0438 \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0435\u0439 \u043D\u0430 \u043C\u0435\u0441\u0442\u0430\u0445)\n// ? eventName - \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0438\u0432\u0435\u043D\u0442, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0432\u044B \u0445\u043E\u0442\u0438\u0442\u0435 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C\n// ? uniqueId - \u043F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u0442\u0441\u044F \u0447\u0442\u043E \u044D\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u043A\u043B\u044E\u0447 \u043C\u043E\u0434\u0430\u043B\u043A\u0438 (\u043A\u043B\u044E\u0447 \u0432\u0435\u0442\u043A\u0438 \u0432 ModalStore)\n// ? target - \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u043E\u0436\u0435 \u0441\u0430\u043C\u043E\u0435, \u0447\u0442\u043E/\u0435\u0441\u043B\u0438 \u043F\u0440\u043E\u043A\u0438\u0434\u044B\u0432\u0430\u043B\u0438 \u0432 \u043F\u0440\u043E\u043F\u0443 withEventManagement.listenersTarget\nexport function dispatchEventForModalManagement(\n realEvent: globalThis.KeyboardEvent,\n nameOfCustomEvent: string,\n uniqueIdOfRecipient: number | string,\n target?: HTMLElement | Document,\n): void {\n const { repeat, altKey, ctrlKey, shiftKey, metaKey } = realEvent;\n const isPressingWithoutAuxiliaryKeys = !altKey && !ctrlKey && !shiftKey && !metaKey;\n\n if (!repeat && isPressingWithoutAuxiliaryKeys) {\n const event = Object.values(EVENTS).find(ev => ev.name === nameOfCustomEvent || ev.shortName === nameOfCustomEvent);\n if (event && uniqueIdOfRecipient) {\n (target ?? document).dispatchEvent(new CustomEvent(event.name, { ...event.options, detail: { id: uniqueIdOfRecipient, realEvent } }));\n }\n }\n}\n", "import type { IModalFooterProps } from '../Modal.interface';\nimport cn from 'classnames';\n\nimport React, { memo } from 'react';\n\nconst ModalFooter: React.FC<IModalFooterProps> = memo(\n ({ className = '', children, wrapperRef, testId = 'modal-footer' }) => {\n return (\n <footer\n data-testid={testId}\n ref={wrapperRef}\n className={cn('modal__footer', className)}\n role=\"contentinfo\"\n aria-label=\"Modal footer\"\n >\n {children}\n </footer>\n );\n },\n);\n\nModalFooter.displayName = 'ModalFooter';\n\nexport default ModalFooter;\n", "import type { IModalTitleProps } from '../Modal.interface';\nimport cn from 'classnames';\nimport React, { memo, useLayoutEffect, useMemo, useRef } from 'react';\n\nimport { X } from 'react-feather';\n\nconst ModalTitle: React.FC<IModalTitleProps> = memo(\n ({\n variant = 'primary',\n children,\n isForced = false,\n onClose,\n closeBtnDisable,\n\n noHeaderCloseBtn = false,\n className,\n wrapperRef,\n testId = 'modal-title',\n }) => {\n const closeModalRef = useRef(onClose);\n\n // ! \u041D\u0415 \u043D\u0443\u0436\u043D\u043E \u0442\u0443\u0442 \u043F\u0440\u0435\u0434\u0443\u0441\u043C\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044C \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 \u043D\u0430\u0436\u0430\u0442\u0438\u044F Enter/Esc (\u043F\u0440\u0435\u0434\u0443\u0441\u043C\u043E\u0442\u0440\u0435\u043D\u0430 \u0432 ModalHOC).\n // ? \u0415\u0441\u043B\u0438 \u043D\u0443\u0436\u043D\u0430 \u044D\u0442\u0430 \u0438\u043D\u043A\u0430\u043F\u0441\u0443\u043B\u0438\u0440\u043E\u0432\u0430\u043D\u0430\u044F \u043B\u043E\u0433\u0438\u043A\u0430 - \u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435\u0441\u044C \u043A\u043E\u043C\u043F\u043E\u0437\u0438\u0446\u0438\u0435\u0439\n // ? - \"\u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u0435\u043B\u044C\" \u0432 ModalHOC \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 Enter/Esc\n // ? - \"\u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u0435\u043B\u044C\" \u0432 ModalTitle \u043D\u0430\u043A\u0438\u043D\u0435\u0442\u0441\u044F \u043D\u0430 \"\u043A\u0440\u0435\u0441\u0442\u0438\u043A\"\n /*\n <ModalHOC\n \u043F\u0440\u043E\u043F\u044B\n closeModal={\u0432\u0430\u0448_\u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u0435\u043B\u044C}\n >\n <ModalTitle\n \u043F\u0440\u043E\u043F\u044B\n onClose={\u0432\u0430\u0448_\u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0442\u0435\u043B\u044C}\n >\n {\u0432\u0430\u0448\u0430 \u0432\u0435\u0440\u0441\u0442\u043A\u0430}\n </ModalTitle>\n\n {\u0432\u0430\u0448 \u043E\u0441\u0442\u0430\u043B\u044C\u043D\u043E\u0439 \u043A\u043E\u043D\u0442\u0435\u043D\u0442}\n </ModalHOC>\n */\n\n // ? \u041B\u0443\u0447\u0448\u0435 \u0447\u0435\u043C useCallback, \u0442.\u043A.\n // ? - \u041D\u0415 \"\u0434\u0451\u0440\u0433\u0430\u0435\u0442\" \u0432\u0435\u0440\u0441\u0442\u043A\u0443 (\u0445\u043E\u0442\u044F \u043F\u043E \u0444\u0430\u043A\u0442\u0443 \u0440\u0435-\u0440\u0435\u043D\u0434\u0435\u0440 \u043F\u0440\u043E\u0438\u0437\u043E\u0439\u0434\u0435\u0442 \u0434\u043B\u044F useLayoutEffect-\u043E\u0432, \u043D\u043E \u0432 \u0448\u0435\u0434\u043E\u0443-\u0434\u043E\u043C\u0435 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0441\u044F)\n // ? - \u041D\u0415 \u0437\u0430\u043C\u044B\u043A\u0430\u0435\u0442 \u0432\u043D\u0435\u0448\u043D\u0438\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F (\u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u0435\u0442 useLayoutEffect)\n // ? - \u041D\u0415 \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440\u044B\n // ? \u0421\u0443\u0442\u044C \u043B\u043E\u0433\u0438\u043A\u0438: \"\u0438\u0434\u0438 \u043F\u043E \u044D\u0442\u043E\u0439 \u0441\u0441\u044B\u043B\u043A\u0435 \u0438 \u043F\u043E\u043F\u044B\u0442\u0430\u0439\u0441\u044F \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0442\u043E \u0447\u0442\u043E \u0442\u0430\u043C \u0435\u0441\u0442\u044C\",\n // ? \u0441\u0441\u044B\u043B\u043A\u0430 - \u043F\u0435\u0440\u043C\u0430\u043D\u0435\u043D\u0442\u043D\u0430\u044F, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0435 \u043C\u043E\u0436\u0435\u0442 \u043C\u0435\u043D\u044F\u0442\u044C\u0441\u044F \u043D\u0435\u0437\u0430\u043C\u0435\u0442\u043D\u043E \u0434\u043B\u044F \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0438\n const handleClick: () => void = useMemo(() => () => closeModalRef.current?.(), []);\n\n useLayoutEffect(() => {\n closeModalRef.current = closeBtnDisable ? undefined : onClose;\n }, [onClose, closeBtnDisable]);\n\n return (\n <header\n data-testid={testId}\n ref={wrapperRef}\n className={cn('modal__header', className, {\n [`modal__header-${variant}`]: variant,\n })}\n role=\"banner\"\n aria-label=\"Modal header\"\n >\n <span\n className={cn('modal__header-title', {\n [`modal__header-${variant}-title`]: variant,\n })}\n id={`${testId}-heading`}\n >\n {children}\n </span>\n {!isForced && (\n <button\n type=\"button\"\n onClick={handleClick}\n className={cn('modal-close-icon-box', {\n 'modal-close-icon-box-primary': variant === 'primary',\n 'modal-close-icon-box--hidden': noHeaderCloseBtn,\n })}\n aria-label=\"Close modal\"\n title=\"Close modal\"\n >\n {!noHeaderCloseBtn && <X className=\"modal-close-icon\" role=\"img\" aria-hidden=\"true\" />}\n </button>\n )}\n </header>\n );\n },\n);\n\nModalTitle.displayName = 'ModalTitle';\n\nexport default ModalTitle;\n", "/* eslint-disable react-web-api/no-leaked-event-listener */\nimport type { MutableRefObject, ReactNode } from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport useIsMobile from '../../../../Functions/useIsMobile/useIsMobile';\n\ntype ScrollDirection = 'up' | 'down';\n\ninterface ModalsLogic {\n IS_HEADER_HIDDEN: boolean;\n IS_HEADER_STICKY: boolean;\n IS_FOOTER_HIDDEN: boolean;\n IS_FOOTER_STICKY: boolean;\n}\n\ninterface UseMobileModalProps {\n modalRef?: React.RefObject<HTMLDivElement>;\n withMobileLogic?: boolean;\n withFixedFooter?: boolean;\n isOpen?: boolean;\n}\n\ninterface UseMobileModalReturn {\n modalMobileContainerRef: MutableRefObject<HTMLDivElement | null>;\n modalMobileHeaderRef: MutableRefObject<HTMLDivElement | null>;\n modalMobileBodyRef: MutableRefObject<HTMLDivElement | null>;\n modalMobileFooterRef: MutableRefObject<HTMLDivElement | null>;\n MODALS_LOGIC: ModalsLogic;\n SCROLL_DIRECTION: { UP: ScrollDirection; DOWN: ScrollDirection };\n scrollTop: number;\n scrollHeight: number;\n renderModal: (modal: ReactNode) => ReactNode;\n isMobile: boolean;\n}\n\nconst SCROLL_DIRECTION = {\n UP: 'up' as ScrollDirection,\n DOWN: 'down' as ScrollDirection,\n};\n\nexport default function useMobileModal({\n modalRef,\n withMobileLogic = false,\n withFixedFooter = false,\n isOpen = false,\n}: UseMobileModalProps): UseMobileModalReturn {\n const modalMobileContainerRef = useRef<HTMLDivElement>(null);\n const modalMobileHeaderRef = useRef<HTMLDivElement>(null);\n const modalMobileFooterRef = useRef<HTMLDivElement>(null);\n const modalMobileBodyRef = useRef<HTMLDivElement>(null);\n\n const { isMobile } = useIsMobile();\n\n const [modalHeight, setModalHeight] = useState(0);\n const [modalsLogic, setModalsLogic] = useState<ModalsLogic>({\n IS_HEADER_HIDDEN: false,\n IS_HEADER_STICKY: false,\n IS_FOOTER_HIDDEN: false,\n IS_FOOTER_STICKY: withFixedFooter,\n });\n const [modalsLogicProps, setModalsLogicProps] = useState({\n headerHeight: 0,\n footerHeight: 0,\n });\n\n const [scrollDirection, setScrollDirection] = useState(SCROLL_DIRECTION.UP);\n const [scrollTopPrev, setScrollTopPrev] = useState(0);\n const [scrollTop, setScrollTop] = useState(0);\n const [scrollHeight, setScrollHeight] = useState(1);\n const [, setContainerScrollHeight] = useState(1);\n\n /* MODALS LOGIC | BEGIN */\n // Count ScrollTop\n useLayoutEffect(() => {\n const el = modalMobileContainerRef?.current;\n if (el) {\n el.addEventListener('scroll', () => {\n setScrollTop((scrollTop) => {\n if (scrollTop !== el.scrollTop) setScrollTopPrev(scrollTop);\n return el.scrollTop;\n });\n });\n }\n }, [modalMobileContainerRef?.current]);\n // Count ScrollDirection\n useEffect(() => {\n setScrollDirection(prevScrollDirection =>\n scrollTop < scrollTopPrev\n ? SCROLL_DIRECTION.UP\n : scrollTop > scrollTopPrev\n ? SCROLL_DIRECTION.DOWN\n : prevScrollDirection,\n );\n }, [scrollTop, scrollTopPrev]);\n // Dynamic Modal Positioning\n useLayoutEffect(() => {\n if (isOpen) {\n const modalStyle = modalRef?.current\n ? modalRef?.current.style\n || window.getComputedStyle(modalRef?.current)\n : {} as CSSStyleDeclaration;\n const computedModalHeight = modalRef?.current\n ? modalHeight + Number.parseFloat(modalStyle?.marginTop || '0')\n : 0;\n const windowHeight\n = document.documentElement.clientHeight\n || window.screen.availHeight\n || window.screen.height;\n if (modalMobileContainerRef?.current) {\n if (computedModalHeight <= windowHeight) {\n modalMobileContainerRef.current.style.display = 'flex';\n modalMobileContainerRef.current.style.alignItems = 'flex-end';\n }\n else {\n modalMobileContainerRef.current?.style?.removeProperty('display');\n modalMobileContainerRef.current?.style?.removeProperty('align-items');\n }\n }\n }\n }, [modalsLogicProps, isOpen, isMobile, modalHeight]);\n\n // Calculating\n useLayoutEffect(() => {\n if (isMobile && isOpen) {\n const newModalHeight = modalRef?.current?.getBoundingClientRect()?.height;\n if (newModalHeight && modalHeight !== newModalHeight) {\n setModalHeight(newModalHeight);\n }\n }\n });\n useEffect(() => {\n if (isMobile && withMobileLogic) {\n const { footerHeight, headerHeight } = modalsLogicProps;\n setModalsLogic(prevStickyLogic => ({\n IS_HEADER_HIDDEN:\n scrollDirection === SCROLL_DIRECTION.DOWN || scrollTop === 0,\n IS_HEADER_STICKY:\n scrollDirection === SCROLL_DIRECTION.UP\n && scrollTop !== 0\n && (scrollTop >= headerHeight || prevStickyLogic.IS_HEADER_STICKY),\n IS_FOOTER_HIDDEN:\n !withFixedFooter\n && (scrollDirection === SCROLL_DIRECTION.UP\n || scrollHeight === Math.round(scrollTop)),\n IS_FOOTER_STICKY:\n (withFixedFooter && scrollHeight > 1)\n || (scrollDirection === SCROLL_DIRECTION.DOWN\n && (scrollHeight - Math.round(scrollTop) >= footerHeight\n || prevStickyLogic.IS_FOOTER_STICKY)),\n }));\n }\n }, [\n scrollTop,\n scrollHeight,\n isMobile,\n withMobileLogic,\n scrollDirection,\n modalsLogicProps,\n modalHeight,\n window.innerHeight,\n ]);\n useLayoutEffect(() => {\n if (\n modalMobileHeaderRef?.current?.getBoundingClientRect()?.height\n !== undefined\n ) {\n setModalsLogicProps(state => ({\n ...state,\n headerHeight: modalMobileHeaderRef?.current?.getBoundingClientRect()?.height ?? 0,\n }));\n }\n }, [modalMobileHeaderRef?.current?.getBoundingClientRect()?.height]);\n useLayoutEffect(() => {\n if (\n modalMobileFooterRef?.current?.getBoundingClientRect()?.height\n !== undefined\n ) {\n setModalsLogicProps(state => ({\n ...state,\n footerHeight: modalMobileFooterRef?.current?.getBoundingClientRect()?.height ?? 0,\n }));\n }\n }, [modalMobileFooterRef?.current?.getBoundingClientRect()?.height]);\n useEffect(() => {\n if (modalMobileContainerRef?.current) {\n setContainerScrollHeight(modalMobileContainerRef?.current?.scrollHeight);\n setScrollHeight(\n modalMobileContainerRef?.current?.scrollHeight - window.innerHeight,\n );\n }\n }, [scrollTop, modalMobileContainerRef?.current, window.innerHeight]);\n useEffect(() => {\n window.addEventListener('resize', () => {\n setContainerScrollHeight((containerScrollHeight) => {\n setScrollHeight(containerScrollHeight - window.innerHeight);\n return containerScrollHeight;\n });\n });\n }, []);\n /* MODALS LOGIC | END */\n\n const renderModal = useCallback(\n (modal: ReactNode): ReactNode => {\n if (!isMobile || !withMobileLogic) return modal;\n\n return (\n <div className=\"modal-mobile-container\" ref={modalMobileContainerRef}>\n {modal}\n </div>\n );\n },\n [isMobile, withMobileLogic],\n );\n\n return {\n modalMobileContainerRef,\n modalMobileHeaderRef,\n modalMobileBodyRef,\n modalMobileFooterRef,\n MODALS_LOGIC: modalsLogic,\n SCROLL_DIRECTION,\n scrollTop,\n scrollHeight,\n renderModal,\n isMobile,\n };\n}\n", "import { useEffect, useState } from 'react';\n\ninterface UseIsMobileProps {\n isWithoutWidthCheck?: boolean;\n}\n\ninterface UseIsMobileProps {\n isWithoutWidthCheck?: boolean;\n}\n/**\n * Hook to detect if the current device is a mobile device\n * @param props - Configuration options\n * @param props.isWithoutWidthCheck - If true, only checks user agent without width verification\n * @returns Object containing isMobile flag\n */\nfunction useIsMobile({ isWithoutWidthCheck = false }: UseIsMobileProps = {}): { isMobile: boolean, isMobilePortrait: boolean; isMobileLandscape: boolean } {\n const isIPad = (): boolean => {\n const ua = navigator.userAgent || navigator.vendor || (window as any).opera;\n\n // iPadOS 13+ \u0432\u044B\u0434\u0430\u0435\u0442 \u0441\u0435\u0431\u044F \u043A\u0430\u043A Mac, \u043D\u043E \u0441 touch-\u044D\u043A\u0440\u0430\u043D\u043E\u043C\n const isMac = /Macintosh/.test(ua);\n const hasTouch = navigator.maxTouchPoints && navigator.maxTouchPoints > 2;\n\n return isMac && !!hasTouch;\n };\n\n const getIsMobile = (): boolean => {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || isIPad();\n };\n\n const [isMobile, setIsMobile] = useState<boolean>(getIsMobile());\n\n useEffect(() => {\n if (getIsMobile()) {\n setIsMobile(true);\n }\n }, [navigator.userAgent]);\n\n return {\n isMobile: isMobile && (isWithoutWidthCheck || window.screen.width <= 768 || (window.screen.width <= 1024 && window.matchMedia('(orientation: landscape)').matches)),\n isMobilePortrait: isMobile && window.screen.width <= 768 && window.matchMedia('(orientation: portait)').matches,\n isMobileLandscape: isMobile && window.screen.width <= 1024 && window.matchMedia('(orientation: landscape)').matches,\n };\n}\n\nexport default useIsMobile;\n", "import type { IModalHOCProps } from './Modal.interface';\n\nimport cn from 'classnames';\nimport React, { useEffect, useLayoutEffect, useMemo, useRef } from 'react';\n\nimport useHandleKeyPress from '../../../Functions/useKeyPress/useHandleKeyPress';\nimport { EVENTS } from './partials/_constants';\nimport { getOnKeyPress, getWithEventManagementStructure } from './partials/_utils';\n\nimport './Modal.scss';\n\nconst ModalHOC: React.FC<IModalHOCProps> = ({\n id,\n zIndex = 100,\n isOpen,\n closeModal,\n closeBtnDisable,\n\n children,\n className,\n size,\n testId = 'modal',\n\n withEventManagement = false, // ! \u041F\u043E\u043B\u043D\u043E\u0441\u0442\u044C\u044E \u043F\u0440\u043E\u0438\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044F \u0435\u0441\u043B\u0438 \u0432 \u043C\u043E\u0434\u0430\u043B\u043A\u0443 \u041D\u0415 \u043F\u0440\u043E\u043A\u0438\u043D\u0443\u0442 id\n\n // ? isClosingByEsc \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u044F\u0432\u043D\u044B\u043C \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435\u043C/\u0437\u0430\u043F\u0440\u0435\u0442\u043E\u043C \u043D\u0430 \u0440\u0430\u0431\u043E\u0442\u0443 \u0444-\u043B\u0430,\n // ? \u0432 \u0442\u043E \u0432\u0440\u0435\u043C\u044F \u043A\u0430\u043A withEventManagement \u043B\u0438\u0448\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0441\u043F\u043E\u0441\u043E\u0431\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438 \u044D\u0442\u043E\u0433\u043E \u0444-\u043B\u0430\n isClosingByEsc: isClosingByEscOuter = true,\n closeOnEsc,\n}) => {\n const modalRef = useRef(null);\n const closeModalRef = useRef(closeModal);\n\n // todo(vl) - \u043D\u0430 \u0441\u0442\u0430\u0440\u044B\u0445 \u043F\u0440\u043E\u043F\u0430\u0445 \u0438 \u0440\u0430\u043D\u044C\u0448\u0435 \u0434\u0435\u0444\u043E\u043B\u0442 \u0431\u044B\u043B true\n // todo(vl) - \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0434\u043B\u044F \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438 \u0441\u0442\u0430\u0440\u044C\u044F \u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u043E\u0442\u0441\u043B\u0435\u0436\u0438\u0432\u0430\u0442\u044C \u0437\u0430\u043F\u0440\u0435\u0442\u044B\n const isClosingByEsc = closeOnEsc === false\n ? false\n : isClosingByEscOuter;\n\n const withEventManagementStructure = getWithEventManagementStructure(id, withEventManagement);\n\n // ? \u041B\u0443\u0447\u0448\u0435 \u0447\u0435\u043C useCallback, \u0442.\u043A.\n // ? - \u041D\u0415 \"\u0434\u0451\u0440\u0433\u0430\u0435\u0442\" \u0432\u0435\u0440\u0441\u0442\u043A\u0443 (\u0445\u043E\u0442\u044F \u043F\u043E \u0444\u0430\u043A\u0442\u0443 \u0440\u0435-\u0440\u0435\u043D\u0434\u0435\u0440 \u043F\u0440\u043E\u0438\u0437\u043E\u0439\u0434\u0435\u0442 \u0434\u043B\u044F useLayoutEffect-\u043E\u0432, \u043D\u043E \u0432 \u0448\u0435\u0434\u043E\u0443-\u0434\u043E\u043C\u0435 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0441\u044F)\n // ? - \u041D\u0415 \u0437\u0430\u043C\u044B\u043A\u0430\u0435\u0442 \u0432\u043D\u0435\u0448\u043D\u0438\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F (\u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u0435\u0442 useLayoutEffect)\n // ? - \u041D\u0415 \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043B\u044F\u0442\u044C \u043B\u0438\u0441\u0442\u0435\u043D\u0435\u0440\u044B\n // ? \u0421\u0443\u0442\u044C \u043B\u043E\u0433\u0438\u043A\u0438: \"\u0438\u0434\u0438 \u043F\u043E \u044D\u0442\u043E\u0439 \u0441\u0441\u044B\u043B\u043A\u0435 \u0438 \u043F\u043E\u043F\u044B\u0442\u0430\u0439\u0441\u044F \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0442\u043E \u0447\u0442\u043E \u0442\u0430\u043C \u0435\u0441\u0442\u044C\",\n // ? \u0441\u0441\u044B\u043B\u043A\u0430 - \u043F\u0435\u0440\u043C\u0430\u043D\u0435\u043D\u0442\u043D\u0430\u044F, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0435 \u043C\u043E\u0436\u0435\u0442 \u043C\u0435\u043D\u044F\u0442\u044C\u0441\u044F \u043D\u0435\u0437\u0430\u043C\u0435\u0442\u043D\u043E \u0434\u043B\u044F \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0438\n const handleClose: () => void = useMemo(() => () => closeModalRef.current?.(), []);\n\n useHandleKeyPress({\n escCallback: isClosingByEsc && typeof closeModal === 'function' ? handleClose : undefined,\n withEventManagementStructure,\n });\n\n useLayoutEffect(() => {\n closeModalRef.current = closeBtnDisable ? undefined : closeModal;\n }, [closeModal, closeBtnDisable]);\n\n // ? \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043D\u0430\u0436\u0430\u0442\u0438\u044F enter \u0438 esc \u043D\u0430 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0445 \u0438\u0432\u0435\u043D\u0442\u0430\u0445\n useEffect(() => {\n // ? useEffect \u043F\u043E \u043D\u0443\u043B\u0435\u0432\u043E\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F 1 \u0440\u0430\u0437, \u0430 \u0437\u043D\u0430\u0447\u0438\u0442 \u0441\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u043A\u043E\u043B\u0431\u0435\u043A \u041D\u0415 \u0438\u0437\u043C\u0435\u043D\u044F\u0442\u0441\u044F,\n // ? \u0430 \u0437\u043D\u0430\u0447\u0438\u0442 \u0441\u043D\u044F\u0442\u0438\u0435 \u0441\u043B\u0443\u0448\u0430\u0442\u0435\u043B\u044F \u043F\u0440\u043E\u0439\u0434\u0435\u0442 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\n const onKeyPress = getOnKeyPress({ id, onClose: handleClose }); // \u0432 ModalHOC onSubmit \u043D\u0435 \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\n\n if (withEventManagementStructure.isWithSubmitAndCloseManagement && !!onKeyPress) {\n // if () document.addEventListener(EVENTS.iGotAnEnterKeyPress.name, onKeyPress); // \u0432 ModalHOC onSubmit \u043D\u0435 \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\n if (isClosingByEsc) document.addEventListener(EVENTS.iGotAnEscKeyPress.name, onKeyPress);\n }\n\n return () => {\n if (withEventManagementStructure.isWithSubmitAndCloseManagement && !!onKeyPress) {\n // if () document.removeEventListener(EVENTS.iGotAnEnterKeyPress.name, onKeyPress); // \u0432 ModalHOC onSubmit \u043D\u0435 \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\n if (isClosingByEsc) document.removeEventListener(EVENTS.iGotAnEscKeyPress.name, onKeyPress);\n }\n }\n }, []);\n\n if (!isOpen) return null;\n return (\n <div id={`${id}`} style={{ zIndex }} data-testid={testId} className=\"modal-box j5\" role=\"presentation\">\n <div className=\"modal-overlay\" onClick={handleClose} role=\"presentation\" aria-hidden=\"true\" />\n <div\n ref={modalRef}\n style={{ width: size }}\n className={cn(className, 'modal')}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={testId}\n tabIndex={-1}\n >\n {children}\n </div>\n </div>\n );\n};\n\nexport default ModalHOC;\n", "import Modal from './Modal';\nimport ModalHOC from './ModalHOC';\nimport { EVENTS } from './partials/_constants';\nimport { dispatchEventForModalManagement } from './partials/_utils';\n\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0442\u0438\u043F\u043E\u0432\nexport type { IModalFooterProps, IModalHOCProps, IModalProps, IModalTitleProps } from './Modal.interface';\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0442\u043E\u0432\nexport { Modal, ModalHOC };\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 partials\nexport { default as ModalFooter } from './partials/ModalFooter';\nexport { default as ModalTitle } from './partials/ModalTitle';\nexport { default as useMobileModal } from './partials/useMobileModal';\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\nexport { EVENTS };\n// ? \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u043D\u0443\u0436\u043D\u044B\u0445 \u0441\u043D\u0430\u0440\u0443\u0436\u0438 \u043C\u0435\u0442\u043E\u0434\u043E\u0432\nexport { dispatchEventForModalManagement };\n// ? \u0426\u0435\u043B\u0435\u0432\u043E\u0439 \u0434\u0435\u0444\u043E\u043B\u0442\u043D\u044B\u0439 \u044D\u043A\u0441\u043F\u043E\u0440\u0442\nexport default Modal;\n", "import MonoAccordion from './MonoAccordion';\n\nexport default MonoAccordion;\nexport type { IMonoAccordionProps } from './MonoAccordion.interface';\n", "import type { IPageTitleProps } from './PageTitle.interface';\nimport cn from 'classnames';\nimport React from 'react';\n\nimport { Home } from 'react-feather';\n\nimport './PageTitle.scss';\n\nconst RC = 'page-title';\n\nconst PageTitle: React.FC<IPageTitleProps> = ({ title, pages, children, testId = RC }) => (\n <div data-testid={testId} className={RC} role=\"region\" aria-label={title}>\n <div className={`${RC}__wrap`}>\n <h1 className={`${RC}__title`}>{title}</h1>\n {pages.length > 0 && (\n <nav className={`${RC}__pages`} aria-label=\"Breadcrumb\">\n <ol className={`${RC}__list`}>\n <li>\n <a className={`${RC}__link`} href=\"/\" aria-label=\"Home page\">\n <Home aria-hidden=\"true\" />\n </a>\n </li>\n\n {pages.map(({ name, path }, index) => (\n <li key={path}>\n <span className={`${RC}__delimiter`} aria-hidden=\"true\">\n /\n </span>\n {pages.length - 1 === index\n ? (\n <span className={cn(`${RC}__link`, `${RC}__link_last`)} aria-current=\"page\">\n {name}\n </span>\n )\n : (\n <a className={`${RC}__link`} href={path}>\n {name}\n </a>\n )}\n </li>\n ))}\n </ol>\n </nav>\n )}\n </div>\n {children}\n </div>\n);\n\nexport default PageTitle;\n", "import PageTitle from './PageTitle';\n\nexport default PageTitle;\nexport type { IPageTitleProps, PageItem } from './PageTitle.interface';\n", "import type { IPriceProps } from './Price.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport { formatToPriceWithCurrency } from '../../../Functions/fieldValueFormatters';\n\nconst CN = 'price';\n\nconst Price: React.FC<IPriceProps> = ({ value, currencyCode, isSymbolAfter, className, testId = CN }) => {\n if (value === undefined || value === null) return null;\n return (\n <div\n data-testid={testId}\n className={cn(CN, className)}\n role=\"contentinfo\"\n aria-label={`Price: ${formatToPriceWithCurrency(value, currencyCode, isSymbolAfter ? 'after' : 'before')}`}\n >\n {formatToPriceWithCurrency(value, currencyCode, isSymbolAfter ? 'after' : 'before')}\n </div>\n );\n};\n\nexport default Price;\n", "import { getIsOnlyAnObject } from \"./utils\";\n\n//? The first word \"format\" in the function name means a logic\n//? in which the function transforms the incoming value in any case.\n\n//? The first word \"transform\" in the function name means a logic\n//? in which the function converts the whole value, but this is not suitable for sequential input\n\n//? The first word \"filter\" in the function name means a logic\n//? in which the function works as a changer for sequential input\n\n// ****************************\n// Base utils\n// ****************************\n\nexport const getSafelyValue = (value) =>\n value !== undefined && value !== null ? value?.toString?.() || \"\" : \"\";\n\n// \u0431\u0430\u0437\u043E\u0432\u0430\u044F \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\nexport const intlNumbersFormatter = (inputValue, settings = {}) => {\n const safelyInputValue = getSafelyValue(inputValue);\n const previousValue = safelyInputValue.slice(0, -1);\n const lastSym = safelyInputValue.slice(-1);\n const value = lastSym === \".\" ? previousValue : safelyInputValue;\n\n if (Number.isNaN(Number(value)) || !getSafelyValue(value)) return \"\";\n\n const {\n // \u043B\u043E\u043A\u0430\u043B\u044C, \u0434\u0430\u0436\u0435 \u0440\u0435\u0433\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u0430\u044F, \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0437\u043D\u0430\u043A\u043E\u0432 \u0438 \u0444\u043E\u0440\u043C\u0430\u0442\u0430.\n locale = \"en-US\",\n // percent || currency(default case) || decimal(\u043F\u0440\u043E\u0441\u0442\u043E \u0447\u0438\u0441\u043B\u043E) \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0422\u0418\u041F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438.\n withSymbol,\n //\u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0430 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438 \u043F\u043E\u0440\u0430\u0437\u0440\u044F\u0434\u043D\u043E.\n useGrouping = true,\n //!!\u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 withSymbol: 'currency' !! \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0442\u043E, \u043A\u0430\u043A \u0438\u043C\u0435\u043D\u043D\u043E \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0433\u043B\u044F\u0434\u0435\u0442 \u0444\u043E\u0440\u043C\u0430\u0442 \u0432\u0430\u043B\u044E\u0442\u044B.\n currency = {},\n //\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0437\u043D\u0430\u043A\u043E\u0432 \u043F\u043E\u0441\u043B\u0435 \u0442\u043E\u0447\u043A\u0438, \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043B\u0438 \u043E\u043D\u0438 \u0431\u0443\u0434\u0443\u0442.\n // !!\u0435\u0441\u043B\u0438 \u043F\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C isAlwaysRender: true, \u043D\u043E \u043D\u0435 \u0434\u0430\u0442\u044C \u0446\u0435\u043D\u0442\u043E\u0432, \u0442\u043E \u0431\u0443\u0434\u0435\u0442 100.00\n fractionDigits = {},\n } = settings;\n\n const { currencyType = \"USD\", currencyDisplay: inputCurrencyDisplay } =\n currency;\n\n let currencyDisplay;\n switch (inputCurrencyDisplay) {\n case \"name\":\n currencyDisplay = \"name\";\n break;\n case \"code\":\n currencyDisplay = \"code\";\n break;\n case \"narrowSymbol\":\n currencyDisplay = \"narrowSymbol\";\n break;\n default:\n currencyDisplay = \"symbol\";\n }\n\n let numberStyle;\n switch (withSymbol) {\n case \"percent\":\n numberStyle = \"percent\";\n break;\n case \"currency\":\n numberStyle = \"currency\";\n break;\n default:\n numberStyle = \"decimal\";\n break;\n }\n\n const {\n quantity,\n isRenderAlways = false,\n minimumFractionDigits: inputMinimumFractionDigits,\n maximumFractionDigits: inputMaximumFractionDigits,\n conditionallyMinimumFractionDigits,\n } = fractionDigits;\n\n const dotIndex = safelyInputValue?.indexOf(\".\");\n const afterDot = dotIndex !== -1 ? safelyInputValue.slice(dotIndex + 1) : \"\";\n const minimumFractionDigits = (() => {\n //? \u0411\u0435\u0437\u0443\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E. \u0412\u0441\u0435\u0433\u0434\u0430 \u043E\u0442\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 \u0434\u0440\u043E\u0431\u043D\u0443\u044E \u0447\u0430\u0441\u0442\u044C, \u0432 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0443\u043A\u0430\u0437\u0430\u043D\u043E\n if (typeof inputMinimumFractionDigits === \"number\")\n return inputMinimumFractionDigits;\n //? \u0423\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E. \u0415\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u0434\u0440\u043E\u0431\u043D\u0430\u044F \u0447\u0430\u0441\u0442\u044C, \u0442\u043E \u043E\u0442\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0443\u043A\u0430\u0437\u0430\u043D\u043E\n if (typeof conditionallyMinimumFractionDigits === \"number\") {\n return afterDot && lastSym !== \".\"\n ? conditionallyMinimumFractionDigits\n : 0;\n }\n //? \u0414\u0435\u0444\u043E\u043B\u0442\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E. \u0415\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u0434\u0440\u043E\u0431\u043D\u0430\u044F \u0447\u0430\u0441\u0442\u044C, \u0442\u043E \u043E\u0442\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u0442\u043E\u043B\u044C\u043A\u043E, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0435\u0441\u0442\u044C\n //? \u0424\u043B\u0430\u0433 isRenderAlways \u043F\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u0435\u0444\u043E\u043B\u0442\u043D\u044B\u0439 \u043A\u0435\u0439\u0441 \u0432 \u0431\u0435\u0437\u0443\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\n return afterDot && lastSym !== \".\"\n ? safelyInputValue.slice(dotIndex).length - 1\n : isRenderAlways\n ? quantity\n : 0;\n })();\n\n const priceSettings = {\n useGrouping, //\u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0430 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432\n style: numberStyle, //\u0442\u0438\u043F \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F (\u0432\u0430\u043B\u044E\u0442\u0430 \u0438\u043B\u0438 \u0447\u0438\u0441\u043B\u043E). decimal - \u0431\u0435\u0437 \u0437\u043D\u0430\u043A\u0430 \u0432\u0430\u043B\u044E\u0442\u044B\n currency: currencyType, //\u0432\u0430\u043B\u044E\u0442\u0430\n currencyDisplay, //\u0432\u0430\u043B\u044E\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u0430\n //\u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E \u043D\u0435 \u043D\u0430\u0434\u043E \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0446\u0435\u043D\u0442\u044B, \u0435\u0441\u043B\u0438 \u0438\u0445 \u043D\u0435\u0442, \u0438\u043D\u0430\u0447\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 .00\n minimumFractionDigits,\n //! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n //! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 (inputMaximumFractionDigits ?? quantity) - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\n //\u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C 2 \u0446\u0438\u0444\u0440\u044B \u043F\u043E\u0441\u043B\u0435 \u0437\u0430\u043F\u044F\u0442\u043E\u0439, \u0435\u0441\u043B\u0438 \u0446\u0435\u043D\u0442\u044B \u0432\u0441\u0451 \u0436\u0435 \u0435\u0441\u0442\u044C\n maximumFractionDigits: inputMaximumFractionDigits ?? quantity,\n };\n\n let output;\n\n try {\n output = new Intl.NumberFormat(locale, priceSettings).format(value);\n } catch (e) {\n output = value;\n // eslint-disable-next-line no-console\n console.warn(\"Intl.NumberFormat error\", e);\n }\n return lastSym === \".\" ? output + lastSym : output;\n};\n\n// ****************************\n// format\n// ****************************\n\nexport const formatOnlyNumbers = (value) =>\n getSafelyValue(value).replace(/\\D/g, \"\");\nexport const formatToRemoveComa = (value) =>\n getSafelyValue(value).replace(/,/g, \"\");\nexport const formatToAddBitDepthPoints = (value, settings) =>\n intlNumbersFormatter(getSafelyValue(value), {\n fractionDigits: {\n quantity: settings?.type === \"int\" ? 0 : settings?.decimalPlaces,\n },\n });\n\n//! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n//! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 quantity - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\nexport const formatToPriceWithUSD = (value) => {\n if (isNaN(Number(value))) return value;\n return intlNumbersFormatter(getSafelyValue(value), {\n withSymbol: \"currency\",\n currency: { currencyType: \"USD\" },\n fractionDigits: { quantity: 2, conditionallyMinimumFractionDigits: 2 },\n });\n};\n\n//! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n//! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 quantity - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\n\n// ToDo - symbolPosition \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435 \u0440\u0435\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043E\nexport const formatToPriceWithCurrency = (\n value,\n currencyCode,\n symbolPosition = \"before\",\n) => {\n if (isNaN(Number(value))) return value;\n return intlNumbersFormatter(getSafelyValue(value), {\n withSymbol: \"currency\",\n currency: { currencyType: currencyCode },\n fractionDigits: { quantity: 2, conditionallyMinimumFractionDigits: 2 },\n });\n};\n\n//? \u0414\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 \u0432 \u043A\u043E\u043D\u0435\u0446 \u0437\u043D\u0430\u043A %. \u0420\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043A\u0430\u043A \u0441 \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u043C\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F\u043C\u0438, \u0442\u0430\u043A \u0438 \u0441 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0430\u043C\u0438.\n\n//? value \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043B\u044E\u0431\u043E\u0435, \u043D\u043E \u043E\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044F \u0447\u0442\u043E \u0431\u0443\u0434\u0435\u0442\n//? - \u0447\u0438\u0441\u043B\u043E\u043C\n//? - \u0441\u0442\u0440\u043E\u043A\u043E\u0439 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\"\n//? - \u0441\u0442\u0440\u043E\u043A\u043E\u0439 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" (\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435_\u043F\u0440\u043E\u0431\u0435\u043B_\u0442\u0438\u0440\u0435_\u043F\u0440\u043E\u0431\u0435\u043B_\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435)\n//? - \u043E\u0431\u044A\u0435\u043A\u0442 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 { from: \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435, to: \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 }\n\n//? \u041F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u043E \u043A \u0447\u0438\u0441\u043B\u0443 \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440\u043C + (\u043F\u0440\u0438\u043C\u0435\u0440: +\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442\u0441\u044F \u043A \u0447\u0438\u0441\u043B\u0443).\n//? \u0415\u0441\u043B\u0438 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u043E, \u0442\u043E \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" \u0432\u0435\u0440\u043D\u0435\u0442\u0441\u044F \u043A\u0430\u043A \u0435\u0441\u0442\u044C, \u043A \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0443 \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u0441\u044F %\n\n//? \u0415\u0441\u043B\u0438 \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" \u043F\u0443\u0441\u0442\u043E\u0435 (getSafelyValue(\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435) \u0432\u0435\u0440\u043D\u0435\u0442 \u043F\u0443\u0441\u0442\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443),\n//? \u0442\u043E \u044D\u0442\u043E \u0432\u043E\u0441\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u043A\u0430\u043A 0, \u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442\u0441\u044F \u043A 0.00%\n\n//? \u041E\u0434\u0438\u043D\u043E\u043A\u043E\u0432\u043E \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043A\u0430\u043A \u0434\u043B\u044F \".\", \u0442\u0430\u043A \u0438 \",\" \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044F \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432\n\n//! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n//! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 decimalPlaces - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\n\nexport const formatAsPercentage = (value, settings) => {\n const {\n isCommonPercentageSymbol = true,\n decimalPlaces = 2,\n beforeValueSymbol = \"\",\n afterValueSymbol = \"\",\n isGlueSameRangesTogether = false,\n\n // ? \u0422\u0443\u0442 \u0443\u0434\u043E\u0431\u043D\u044B\u0439 \u0444-\u043B, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0438\u043D\u043E\u0439 \u0440\u0430\u0437 \u0443\u0434\u043E\u0431\u043D\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u043E\u0431\u044B\u0447\u043D\u044B\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u0430\u043D (\u041D\u0415 \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u044B).\n // ? \u0414\u043E\u0431\u0430\u0432\u0438\u043B \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u0432\u044B\u043F\u0438\u043B\u0438\u0432\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u0435\u043A \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u043E\u0432.\n // todo(VL) - \u0432\u043E\u043E\u0431\u0449\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u043E \u0437\u0430\u0440\u0435\u043D\u0435\u0439\u043C\u0438\u0442\u044C (formatAsDiapason), \u0430 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u043E\u0432 \u0441\u0434\u0435\u043B\u0430\u0442\u044C \u043A\u0430\u043A \u043E\u043F\u0446\u0438\u044E,\n // todo(VL) - \u043D\u043E \u043A\u0430\u043A \u043E\u0431\u044B\u0447\u043D\u043E \u043D\u0435\u0442 \u0432\u0440\u0435\u043C\u0435\u043D\u0438, \u043D\u0443\u0436\u043D\u043E \u0431\u0443\u0434\u0435\u0442 \u043F\u0435\u0440\u0435\u0447\u0435\u043A\u0430\u0442\u044C \u043F\u043E \u0432\u0441\u0435\u043C \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u043C \u0433\u0434\u0435 \u0442\u044F\u043D\u0435\u0442\u0441\u044F \u0441\u043E \u0441\u0442\u0430\u0440\u044B\u043C \u043D\u0435\u0439\u043C\u0438\u043D\u0433\u043E\u043C\n isUseAsSimpleDiapason = false,\n } = getIsOnlyAnObject(settings) ? settings : {};\n let safelyInputValue;\n\n const checkValue = (value) => getSafelyValue(value) || \"0\";\n\n const transform = (valueAsSting) => {\n const processedValue = valueAsSting.replace(/,/g, \".\");\n if (Number.isNaN(Number(processedValue))) return processedValue;\n return `${intlNumbersFormatter(getSafelyValue(Number(processedValue)), {\n fractionDigits: {\n quantity: decimalPlaces,\n minimumFractionDigits: decimalPlaces,\n },\n })}`;\n };\n\n if (getIsOnlyAnObject(value)) {\n safelyInputValue = {\n from: checkValue(value.from),\n to: checkValue(value.to),\n };\n } else {\n safelyInputValue = checkValue(value);\n\n if (safelyInputValue.includes(\" - \")) {\n const valuesArr = safelyInputValue\n .split(\" - \")\n .map((partOfValue) => partOfValue.trim());\n safelyInputValue = {\n from: checkValue(valuesArr[0]),\n to: checkValue(valuesArr[1]),\n };\n } else {\n // \u0412\u0430\u0440\u0438\u0430\u043D\u0442 \u043A\u043E\u0433\u0434\u0430 \u0432\u0435\u043B\u044C\u044E \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043E \u0441\u0442\u0440\u043E\u043A\u043E\u0439 (\u041D\u0415 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C) \u0438 \u043E\u043D\u043E \u043D\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0435\u043F\u0430\u0440\u0430\u0442\u043E\u0440\u0430 \" - \"\n // - \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u0435 \u0432\u0435\u043B\u044C\u044E\n // - \u043D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\n return `${beforeValueSymbol}${transform(safelyInputValue)}${afterValueSymbol}${isUseAsSimpleDiapason ? '' : '%'}`;\n }\n }\n\n if (safelyInputValue.from === safelyInputValue.to && !!isGlueSameRangesTogether) {\n return `${beforeValueSymbol}${transform(safelyInputValue.from)}${afterValueSymbol}${isUseAsSimpleDiapason ? '' : '%'}`;\n }\n\n if (isCommonPercentageSymbol)\n return `${beforeValueSymbol}${transform(safelyInputValue.from)} - ${transform(\n safelyInputValue.to,\n )}${afterValueSymbol}${isUseAsSimpleDiapason ? '' : '%'}`;\n else\n return `${beforeValueSymbol}${transform(safelyInputValue.from)}${isUseAsSimpleDiapason ? '' : '%'} - ${transform(\n safelyInputValue.to,\n )}${isUseAsSimpleDiapason ? '' : '%'}${afterValueSymbol}`;\n};\n\n// eslint-disable-next-line no-control-regex\nexport const formatToOnlyASCIICodeText = (text) =>\n getSafelyValue(text).replace(/[^\\x00-\\x7F]+/g, \"\");\n\n// eslint-disable-next-line default-param-last\nexport const formatNumberValueToMask = (inputValue, settings) => {\n const safelyInputValue = getSafelyValue(inputValue);\n\n // default valueSymbol === 'n', default mask === 'nnn-nnn-nnnn'\n const {\n mask = \"XXX-XXX-XXXX\",\n valueSymbol = \"X\",\n isReturnAdvanced = false,\n } = settings || {};\n const processing = mask.split(\"\").reduce(\n (acc, item) => {\n if (acc.value.length) ++acc.cursorPosition;\n acc.newValue.push(\n item === valueSymbol && acc.value.length ? acc.value.shift() : item,\n );\n return acc;\n },\n {\n value: safelyInputValue.split(\"\").filter((sym) => /[0-9]/g.test(sym)),\n newValue: [],\n cursorPosition: 0,\n },\n );\n\n return isReturnAdvanced\n ? {\n value: processing.newValue.join(\"\"),\n cursorPosition: processing.cursorPosition,\n }\n : processing.newValue.join(\"\");\n};\n\nexport const formatToLimitLength = (inputValue, limit) => {\n const value = getSafelyValue(inputValue);\n return limit &&\n typeof limit === \"number\" &&\n !Number.isNaN(limit) &&\n value?.length > limit\n ? value.substr(0, limit)\n : value;\n};\n\nexport const formatToHex = ({ inputValue, withSharp }) => {\n const value = getSafelyValue(inputValue);\n if (withSharp) return `#${value.replace(/[^a-f0-9]/gi, \"\")}`;\n\n return `${value.replace(/[^#a-f0-9]/gi, \"\")}`;\n};\n\nexport function formatToReplaceAllWhiteSpace(str) {\n const value = getSafelyValue(str);\n return value.replace(/\\s+/g, \"\");\n}\n\n// ****************************\n// transform\n// ****************************\n\n// ...\n\n// ****************************\n// filter\n// ****************************\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0432\u044B\u043F\u0438\u043B\u0438\u043B \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0434\u0435\u0444\u043E\u043B\u0442\u043D\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0430 \u0443\u0440\u043E\u0432\u043D\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432, \u0447\u0442\u043E\u0431\u044B \u0441\u0434\u0435\u043B\u0430\u0442\u044C null \u0440\u0430\u0431\u043E\u0447\u0438\u043C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C\n//? decimalPlaces === null \u0442\u0435\u043F\u0435\u0440\u044C \u0442\u043E\u0447\u043D\u043E \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0440\u0435\u0436\u0438\u043C \u0432\u0432\u043E\u0434\u0430 \u0411\u0415\u0417 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u0439 \u0434\u0435\u0441\u044F\u0442\u0438\u0447\u043D\u044B\u0445 \u0437\u043D\u0430\u043A\u043E\u0432\nexport const filterFloat = (inputValue, decimalPlaces) => {\n const replaser = input => ('' + input).replace(/[^\\.\\d]/g, '');\n const value = getSafelyValue(inputValue);\n \n //? safelyDecimalPlaces \u0422\u041E\u0427\u041D\u041E \u043B\u0438\u0431\u043E null, \u043B\u0438\u0431\u043E \u0446\u0435\u043B\u043E\u0435 \u0447\u0438\u0441\u043B\u043E\n const safelyDecimalPlaces = (() => {\n if (decimalPlaces === null) return decimalPlaces;\n\n const DEFAULT_VALUE = 2;\n const isNumber = typeof decimalPlaces === 'number' || (typeof decimalPlaces === 'string' && !Number.isNaN(+decimalPlaces));\n\n //? \u0437\u0430\u0449\u0438\u0442\u0430 \u043E\u0442 \u0434\u0440\u043E\u0431\u043D\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F decimalPlaces\n return isNumber ? Number((+decimalPlaces).toFixed()) : DEFAULT_VALUE;\n })();\n\n // \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043A\u0435\u0439\u0441\u0430 \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0432\u044B\u043C \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u043C \u043D\u0430\u0436\u0430\u0442\u0430 \u0442\u043E\u0447\u043A\u0430\n if (value.length === 1 && (value[0] === '.' || value[0] === ',')) return '0.';\n\n // \u041F\u0440\u0438\u0432\u043E\u0434\u0438\u043C \u0437\u0430\u043F\u044F\u0442\u044B\u0435 \u043A \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u043C\u0443 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044E, \u043D\u043E \u043D\u0435 \u0432\u044B\u043F\u0438\u043B\u0438\u0432\u0430\u0435\u043C\n let output = ('' + value)?.replace(/,/g, '.');\n\n // \u0412\u044B\u043F\u0438\u043B\u0438\u0442\u044C \u043F\u0435\u0440\u0432\u044B\u0439 \u043D\u043E\u043B\u044C, \u0435\u0441\u043B\u0438 \u044D\u0442\u043E \u043D\u0435 \u0434\u0440\u043E\u0431\u044C\n if (value.length > 1 && value[0] === '0' && value[1] !== '.' && value[0] !== ',') output = value.slice(1);\n\n const previousValue = '' + output.slice(0, -1);\n const lastSym = '' + output.slice(-1);\n\n // \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043A\u0435\u0439\u0441\u0430 \u0432\u0442\u043E\u0440\u043E\u0439 \u0442\u043E\u0447\u043A\u0438 \u0432 \u0434\u0440\u043E\u0431\u0438\n if (lastSym === '.' && previousValue.includes('.')) output = previousValue;\n\n // if (localStorage.getItem('useDeb')) debugger;\n\n // \u041B\u043E\u0433\u0438\u043A\u0430 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u044F \u043F\u043E decimalPlaces\n if (typeof safelyDecimalPlaces === 'number') {\n if (!safelyDecimalPlaces && lastSym === '.') return replaser(previousValue);\n if (previousValue.includes('.') && (previousValue.indexOf('.') + 1 + safelyDecimalPlaces === previousValue?.length)) {\n return replaser(previousValue);\n }\n }\n\n return replaser(output);\n};\n\nexport const filterNumeric = (value, settings) => {\n value = getSafelyValue(value)?.replace(/,/g, \"\");\n const { type = \"float\", decimalPlaces } = settings || {};\n\n const executor = type === \"float\" ? filterFloat : formatOnlyNumbers;\n return executor(getSafelyValue(value), decimalPlaces);\n};\n\nexport const formatToHideValuePartially = (value, settings) => {\n const {\n showSymbolsCount = 4,\n isVisibleFromFront = false,\n isCutOutWhiteSpaces = true,\n } = settings || {};\n const safelyValue = getSafelyValue(value);\n\n const newValue = isCutOutWhiteSpaces\n ? safelyValue.replace(/\\s/g, \"\")\n : safelyValue;\n if (newValue.length <= showSymbolsCount) return newValue;\n\n const hide = (val) =>\n val\n .split(\"\")\n .map(() => \"*\")\n .join(\"\");\n const visiblePart = isVisibleFromFront\n ? newValue.slice(0, showSymbolsCount)\n : newValue.slice(-1 * showSymbolsCount);\n const hiddenPart = isVisibleFromFront\n ? newValue.slice(showSymbolsCount)\n : newValue.slice(0, -1 * showSymbolsCount);\n\n return isVisibleFromFront\n ? `${visiblePart}${hide(hiddenPart)}`\n : `${hide(hiddenPart)}${visiblePart}`;\n};\n", "import Price from './Price';\n\nexport default Price;\nexport type { IPriceProps } from './Price.interface';\n", "import type { IPriceRangeProps } from './PriceRange.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport { formatToPriceWithUSD } from '../../../Functions/fieldValueFormatters';\n\nconst CN = 'price-range';\n\nconst PriceRange: React.FC<IPriceRangeProps> = ({ from, to, mode, testId = CN }) => {\n return (\n <div data-testid={testId} className={cn(CN, 'j4')} role=\"region\" aria-label=\"Price range\">\n {mode === 'simple'\n ? (\n <span aria-live=\"polite\">\n {from}\n {' - '}\n {to}\n </span>\n )\n : (\n <span aria-live=\"polite\">\n {formatToPriceWithUSD(from?.toString())}\n {' - '}\n {formatToPriceWithUSD(to?.toString())}\n </span>\n )}\n </div>\n );\n};\n\nexport default PriceRange;\n", "import PriceRange from './PriceRange';\n\nexport default PriceRange;\nexport type { IPriceRangeProps } from './PriceRange.interface';\n", "import type { IProgressLineProps } from './ProgressLine.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport { addBitDepthPoints } from '../../../Functions/utils';\n\nimport './ProgressLine.scss';\n\nconst CN = 'progress-line';\nconst ProgressLine: React.FC<IProgressLineProps> = ({\n label = '',\n labelAlign = 'left',\n renderValue = false,\n renderValueInPercents = false,\n valueMeasurement = '',\n valueHorizontalPosition = 'right',\n valueVerticalPosition = 'center',\n symbolsAfterComma = 0,\n minValue = 0,\n maxValue = 100,\n value = 0,\n showExtremums = false,\n extremumsPosition = 'top',\n variant = 'info',\n useVariantLabelColor = true,\n isShowLine = true,\n className,\n testId = CN,\n}) => {\n const getFilledLineWidth = (): string => {\n if (value > maxValue) value = maxValue;\n return `${(((value - minValue) * 100) / (maxValue - minValue)).toFixed(symbolsAfterComma)}%`;\n };\n\n const renderLabel = (): JSX.Element | null => {\n if (!label) return null;\n return <div className={`progress-line__wrapper__label align-${labelAlign}`}>{label}</div>;\n };\n\n const renderProgressValue = (): JSX.Element | null => {\n if (!renderValue) return null;\n return (\n <div className=\"progress-line__wrapper__value\" aria-live=\"polite\">\n {renderValueInPercents\n ? getFilledLineWidth()\n : `${addBitDepthPoints(String(value))} ${valueMeasurement}`}\n </div>\n );\n };\n\n const renderExtremums = (): JSX.Element | null => {\n if (!showExtremums) return null;\n return (\n <div aria-hidden=\"true\" className={`progress-line__wrapper__extremums position-${extremumsPosition}`}>\n <div className=\"progress-line__wrapper__extremums--min\">\n {renderValueInPercents ? '0 %' : `${minValue} ${valueMeasurement}`}\n </div>\n <div className=\"progress-line__wrapper__extremums--max\">\n {renderValueInPercents ? '100 %' : `${maxValue} ${valueMeasurement}`}\n </div>\n </div>\n );\n };\n\n const renderFilledLine = (): JSX.Element => {\n return (\n <div\n className=\"progress-line__wrapper__line--filled\"\n role=\"progressbar\"\n aria-label={`Progress: ${value} out of ${maxValue}`}\n aria-valuenow={value}\n aria-valuemin={minValue}\n aria-valuemax={maxValue}\n style={{ width: getFilledLineWidth() }}\n >\n </div>\n );\n };\n\n const renderLine = (): JSX.Element => {\n return (\n <div className=\"progress-line__wrapper__line\">\n {renderExtremums()}\n {renderFilledLine()}\n </div>\n );\n };\n\n return (\n <div className={cn(CN, className)} data-testid={testId} role=\"region\" aria-label=\"Progress line\">\n {renderLabel()}\n <div\n className={`progress-line__wrapper variant-${\n useVariantLabelColor && variant\n } value-${valueVerticalPosition}-${valueHorizontalPosition} ${className}`}\n >\n {renderProgressValue()}\n {isShowLine && renderLine()}\n </div>\n </div>\n );\n};\n\nexport default ProgressLine;\n", "import ProgressLine from './ProgressLine';\n\nexport default ProgressLine;\nexport type { IProgressLineProps } from './ProgressLine.interface';\n", "import type { IStatusProps } from './Status.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport './Status.scss';\n\nfunction defaultOnClick(): void {}\n\nconst Status: React.FC<IStatusProps> = ({\n icon,\n value,\n label,\n status,\n disabled,\n type,\n active = 0,\n pause = 0,\n className,\n noBackground,\n children,\n testId = 'status',\n onClick = defaultOnClick,\n}) => {\n if (!status) return null;\n\n const text = children && typeof children === 'string' ? children : value || label || status;\n const formattedLabel = text?.[0].toUpperCase() + text?.slice(1);\n\n return (\n <div onClick={onClick} data-testid={testId} className={cn({ disabled }, className)}>\n {type === 'number'\n ? (\n <div>\n {active === 0 && pause === 0\n ? (\n <div className=\"status status--error\">\n <span>{active}</span>\n </div>\n )\n : (\n <div className=\"status status--warning\">\n <span className=\"status--number-active\">{active}</span>\n <span className=\"color--gray-gull\"> / </span>\n <span className={pause > 0 ? 'color--froly' : 'color--gray-gull'}>{pause}</span>\n </div>\n )}\n </div>\n )\n : (\n <div\n className={cn(\n 'status',\n `status--${status}`,\n {\n 'status--no-bg': noBackground && status === 'pause',\n 'color--gray-gull': noBackground && status === 'pause' && !className,\n 'j4': !!icon,\n },\n className,\n )}\n >\n {icon}\n {formattedLabel}\n </div>\n )}\n </div>\n );\n};\n\nexport default Status;\n", "import Status from './Status';\n\nexport default Status;\nexport type { IStatusProps } from './Status.interface';\n", "import React from \"react\";\n\nimport cn from \"classnames\";\n\nimport TdHeader from \"./Partials/TdHeader\";\nimport TdRow from \"./Partials/TdRow\";\n\nimport \"./Table.scss\";\n\nconst Table = ({\n rows,\n onChange,\n className,\n header,\n onActionClick,\n testId = \"table\",\n}) => {\n const handleArrayChange = (value, index) => {\n rows[index] = value;\n onChange({ header: [...header], rows: [...rows] });\n };\n\n return (\n <div\n data-testid={testId}\n className={cn(\"simple-table\", {\n [`simple-table--${className}`]: className,\n })}\n >\n <table>\n <thead>\n <tr>\n {header?.map((item) => (\n <TdHeader item={item} key={item.key} />\n ))}\n </tr>\n </thead>\n <tbody>\n {rows && rows?.length ? (\n rows?.map((row, index) => (\n <TdRow\n onActionClick={onActionClick}\n rowIndex={index}\n key={typeof row.id === \"object\" ? row.id.value : row.id}\n item={row}\n header={header}\n onChange={(value) => handleArrayChange(value, index)}\n />\n ))\n ) : (\n <tr>\n <td className=\"row--not-found\" colSpan={header?.length}>\n Not set\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n );\n};\n\nexport default Table;\n", "import React from \"react\";\n\nimport cn from \"classnames\";\n\nimport Langs from \"../../../../Langs\";\n\nimport \"../Table.scss\";\n\nconst TdHeader = ({ item, testId = \"td-header\" }) => {\n const txt = Langs[global.lng];\n\n switch (item.type) {\n case \"double\":\n return (\n <th data-testid={testId}>\n <div className=\"j46\">\n <div className=\"\">{txt.labels[item.left] || item.left}</div>\n <div className=\"\">{txt.labels[item.right] || item.right}</div>\n </div>\n </th>\n );\n default:\n return (\n <th data-testid={testId} className={cn(item.className)}>\n <div className={cn({ df: item.button })}>\n <div className=\"mr5\">{txt.labels[item.label] || item.label}</div>\n {item.button && (\n <div className=\"cards-table__btn\">\n {txt.buttons[item.button] || item.button}\n </div>\n )}\n </div>\n </th>\n );\n }\n};\n\nexport default TdHeader;\n", "const Langs = {\n en: {\n auth: {},\n settings: {},\n labels: {\n industries: \"Industries\",\n includedLenders: \"Included Lenders\",\n admin: \"Administrator\",\n user: \"User\",\n help: \"Help\",\n description: \"Description\",\n value: \"Value\",\n paramName: \"Parameter name(key)\",\n active: \"Active\",\n pause: \"Pause\",\n error: \"Error\",\n sold: \"Sold\",\n processing: \"Processing\",\n home: \"Home\",\n goods: \"Goods\",\n improvement: \"Improvement\",\n jewelry: \"Jewelry\",\n firstName: \"First Name\",\n lastName: \"Last Name\",\n dateOfBirth: \"Date of Birth\",\n militaryStatus: \"Military status\",\n ssn: \"SSN\",\n lengthAtAddress: \"Length At Address\",\n rentOrOwn: \"Rent or Own\",\n zip: \"ZIP\",\n city: \"City\",\n state: \"State\",\n address: \"Address\",\n email: \"E-mail\",\n homePhone: \"Home Phone\",\n cellPhone: \"Cell Phone\",\n contactTime: \"Contact Time\",\n dlState: \"DL state\",\n dlNumber: \"DL number\",\n ownCar: \"Do you own a car?\",\n tcpaOptin: \"TCPA OPTIN\",\n incomeSource: \"Income Source\",\n timeEmployed: \"Time Employed\",\n jobTitle: \"Job Title\",\n currentEmployer: \"Current Employer\",\n employersPhone: \"Employer's Phone\",\n netMonthlyIncome: \"Net monthly income\",\n howOftenIsPaid: \"How often is paid\",\n nextPayDate: \"Next Pay Date\",\n secondPayDate: \"Second Pay Date\",\n loanAmount: \"Loan amount\",\n ip: \"IP\",\n storyName: \"Story name\",\n channelName: \"Channel name\",\n employmentInfo: \"Employment Information\",\n personalDetails: \"Personal Details\",\n offer: \"Offer\",\n offers: \"Offers\",\n status: \"Status\",\n name: \"Name\",\n from: \"From\",\n to: \"to\",\n periodMonths: \"Period (months)\",\n loansSent: \"Loans Sent\",\n approved: \"Approved\",\n rejected: \"Rejected\",\n loanAmountApproved: \"Loan Amount Approved ($)\",\n loanAmountRejected: \"Loan Amount Rejected ($)\",\n approveRate: \"Approve Rate (%)\",\n actions: \"Actions\",\n locations: \"Locations\",\n score: \"Score\",\n priority: \"Priority\",\n lender: \"Lender\",\n weight: \"Weight\",\n selectLender: \"Select lender\",\n },\n singulars: {},\n titles: {\n pingTree: \"Ping tree\",\n edit: \"Edit\",\n create: \"Create\",\n add: \"Add\",\n consumerInfo: \"Consumer info\",\n personalDetails: \"Personal Details\",\n employmentInfo: \"Employment Information\",\n tools: \"Tools\",\n lenders: \"Lenders\",\n settings: \"Settings\",\n dashboard: \"Dashboard\",\n consumers: \"Consumers\",\n ticketDesk: \"Ticket desk\",\n accounting: \"Accounting\",\n users: \"Users\",\n merchants: \"Merchants\",\n lenderPingTree: \"Lender Ping Tree\",\n reports: \"Reports\",\n leads: \"Leads\",\n location: \"Location\",\n mainMenu: \"Main menu\",\n partners: \"Partners\",\n other: \"Other\",\n homeGoodsAndInteriorDesign: \"Home Goods and Interior Design\",\n },\n placeholders: {\n typeName: \"Type name\",\n params: \"Params placeholder\",\n value: \"Value placeholder\",\n description: \"Description placeholder\",\n },\n hints: {\n landerNotIncluded:\n \"Lender is not included in Ping Tree by the \u201CHome Goods\u201D industry\",\n noMerchants: \"No Merchants for the \u201CHome Goods\u201D industry\",\n },\n buttons: {\n create: \"Create\",\n edit: \"Edit\",\n add: \"Add\",\n close: \"Close\",\n apply: \"Apply\",\n pingTree: \"Ping tree\",\n addRow: \"Add row\",\n consumerInfo: \"Consumer Info\",\n deletePingTree: \"Delete Ping Tree\",\n cancel: \"Cancel\",\n },\n radioButtons: {},\n weekDays: {\n su: \"Su\",\n mo: \"Mo\",\n tu: \"Tu\",\n we: \"We\",\n th: \"Th\",\n fr: \"Fr\",\n sa: \"Sa\",\n },\n alerts: {\n lendersWillBeRemoved: \"lenders will be removed\",\n },\n checkboxes: {\n homeGoods: \"Home Goods\",\n travel: \"Travel\",\n energyImprovement: \"Energy Improvement\",\n jewelryIncluded: \"Jewelry (included in PingTree name 2)\",\n jewelry: \"Jewelry\",\n autoRepair: \"Auto Repair\",\n cosmetics: \"Cosmetics\",\n health: \"Health\",\n },\n errors: {},\n texts: {},\n tabs: {\n general: \"General\",\n payments: \"Payments\",\n filters: \"Filters\",\n offers: \"Offers\",\n merchants: \"Merchants\",\n integration: \"Integration\",\n customDetails: \"Custom details\",\n customerDetails: \"Customer details\",\n postsLog: \"Posts log\",\n },\n toasts: {},\n },\n};\n\nexport default Langs;\n", "import React, { useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport { handleObjectChange } from \"../../../../Functions/utils\";\nimport Modal from \"../../Modal/Modal\";\nimport TdRange from \"../TdTypes/TdRange\";\n\nimport TdCell from \"./TdCell\";\n\nimport \"../Table.scss\";\n\nconst TdRow = ({\n item,\n onChange,\n rowIndex,\n cardStatus,\n range,\n type,\n rowSpan,\n colSpan,\n cardLength,\n changePriority,\n getAdviceWeight,\n onActionClick,\n isDeleted,\n testId = \"td-row\",\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleChange = handleObjectChange(item, () => onChange({ ...item }));\n\n return (\n <>\n <tr data-testid={testId}>\n {type && rowSpan && (\n <td className=\"rel\" rowSpan={rowSpan + 1}>\n <span\n className={cn(\n type && `cards-table__score cards-table__score-${cardStatus}`,\n )}\n >\n <TdRange item={range} />\n </span>\n </td>\n )}\n\n {Object.entries(item).map(([key, value]) =>\n key === \"id\" || key === \"isDeleted\" ? null : (\n <td\n key={key}\n className={cn(\"cards-table__body-item\", {\n \"cards-table__accordion\": value.type === \"accordion\",\n })}\n >\n <TdCell\n onActionClick={onActionClick}\n changePriority={changePriority}\n cardLength={cardLength}\n rowIndex={rowIndex}\n rowItem={item}\n type={key}\n item={value}\n onChange={(newValue) => handleChange(newValue, key)}\n getAdviceWeight={getAdviceWeight}\n isDeleted={isDeleted}\n />\n </td>\n ),\n )}\n </tr>\n\n {type && colSpan ? (\n <tr>\n <td />\n <td colSpan={colSpan}>\n <span\n className=\"cards-table__title-select-lender-btn\"\n onClick={() => setIsOpen(true)}\n >\n Select Lender\n </span>\n\n <Modal\n closeModal={() => setIsOpen(false)}\n isOpen={isOpen}\n title=\"Choose Lender\"\n size=\"420\"\n >\n test\n </Modal>\n </td>\n </tr>\n ) : null}\n </>\n );\n};\n\nexport default TdRow;\n", "const TdRange = ({ item }) => {\n if (!item) return false;\n\n return (\n <div>\n <span>{item.from}</span>\n <span> - </span>\n <span>{item.to}</span>\n </div>\n );\n};\n\nexport default TdRange;\n", "import React, { useState } from \"react\";\n\nimport AccordionItem from \"../../Accordion/AccordionItem\";\nimport AdvancedTags from \"../../AdvancedTag/AdvancedTags\";\nimport Status from \"../../Status/Status\";\nimport Tag from \"../../Tag/Tag\";\nimport Table from \"../Table\";\nimport { TdActions } from \"../TdTypes/TdActions\";\nimport TdPriority from \"../TdTypes/TdPriority\";\nimport TdWeight from \"../TdTypes/TdWeight\";\n\nimport \"../Table.scss\";\n\nconst TdCell = ({\n type,\n item,\n rowIndex,\n onChange,\n cardLength,\n changePriority,\n getAdviceWeight,\n onActionClick,\n rowItem,\n isDeleted,\n}) => {\n const [isAccordionOpen, setIsAccordionOpen] = useState(item.isOpen);\n\n const percent =\n item.type === \"weight\" && getAdviceWeight(isDeleted ? 0 : item.value);\n\n switch (type) {\n case \"accordion\":\n return (\n <AccordionItem\n className={item.itemClassName}\n item={item}\n isOpen={isAccordionOpen}\n onClick={(e) => setIsAccordionOpen(e)}\n >\n <Table rows={item.rows} className=\"accordion--table\" />\n </AccordionItem>\n );\n case \"actions\":\n return (\n <TdActions\n rowItem={rowItem}\n actions={item}\n onChange={onChange}\n onActionClick={onActionClick}\n />\n );\n case \"advancedTags\":\n return <AdvancedTags items={item} />;\n case \"link\":\n return <a href={item.link}>{item.label}</a>;\n case \"priority\":\n return (\n <TdPriority\n rowIndex={rowIndex}\n cardLength={cardLength}\n onClick={changePriority}\n />\n );\n case \"status\":\n return (\n <Status\n className={item.className}\n label={item.label}\n status={item.status}\n />\n );\n case \"tags\":\n return item.map((tag, index) => <Tag key={index} label={tag.label} />);\n case \"weight\":\n return (\n <TdWeight\n value={item.value}\n percent={percent}\n onChange={(value) => onChange({ ...item, value })}\n />\n );\n default:\n return <span className={item.className}>{item.value}</span>;\n }\n};\n\nexport default TdCell;\n", "import type { AccordionLinkComponent, IAccordionItemProps } from './Accordion.interface';\nimport cn from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\nimport * as Icons from 'react-feather';\n\nimport Status from '../Status';\n\nimport './Accordion.scss';\n\n/**\n * \u0414\u0435\u0444\u043E\u043B\u0442\u043D\u0430\u044F \u0441\u0441\u044B\u043B\u043A\u0430 menu-\u043F\u0443\u043D\u043A\u0442\u043E\u0432 \u2014 \u043E\u0431\u044B\u0447\u043D\u044B\u0439 <a href> \u0411\u0415\u0417 react-router-dom.\n * AccordionItem \u043E\u0431\u044F\u0437\u0430\u043D \u043E\u0441\u0442\u0430\u0432\u0430\u0442\u044C\u0441\u044F router-free: \u0435\u0433\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 Table -> TdCell\n * \u0438\u0437 subpath \"ui\". SPA-\u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 Accordion (subpath \"router-ui\"),\n * \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044F \u0441\u044E\u0434\u0430 NavLink \u0447\u0435\u0440\u0435\u0437 prop linkComponent.\n */\nconst DefaultLink: AccordionLinkComponent = ({ to, className, children }) => (\n <a href={to} className={className}>\n {children}\n </a>\n);\n\nconst AccordionItem: React.FC<IAccordionItemProps> = ({\n item,\n onClick,\n isOpen,\n className,\n children,\n noChevron,\n linkComponent: LinkComponent = DefaultLink,\n testId = 'accordion-item',\n}) => {\n const Icon = Icons[item.icon as keyof typeof Icons];\n const [maxHeight, setMaxHeight] = useState<number>(0);\n const ref = useRef<HTMLDivElement>(null);\n\n const getItemsHeight = (): number => {\n let itemHeight = 0;\n ref.current?.childNodes.forEach((el) => {\n itemHeight += (el as HTMLElement).offsetHeight;\n });\n\n return itemHeight + 20;\n };\n\n useEffect(() => {\n setMaxHeight(isOpen ? getItemsHeight() : 0);\n }, [isOpen]);\n\n const calculateStatusCount = (): {\n active: number;\n pause: number;\n } | undefined => {\n return item?.rows?.reduce(\n (acc, row) => {\n const result = row.cols.reduce(\n (accum, col) => ({\n active: accum.active + (col.status === 'active' ? 1 : 0),\n pause: accum.pause + (col.status === 'pause' ? 1 : 0),\n }),\n { active: 0, pause: 0 },\n );\n\n return {\n active: acc.active + result.active,\n pause: acc.pause + result.pause,\n };\n },\n { active: 0, pause: 0 },\n );\n };\n\n return (\n <div\n data-testid={testId}\n className={cn('accordion--item', className)}\n role=\"region\"\n aria-labelledby={`accordion-title-${item.title}`}\n >\n <div\n className={cn('accordion--title-box', {\n 'accordion--title-open': isOpen,\n })}\n onClick={() => onClick(!isOpen)}\n id={`accordion-title-${item.title}`}\n role=\"button\"\n aria-expanded={isOpen}\n aria-controls={`accordion-content-${item.title}`}\n tabIndex={0}\n >\n <div className=\"j4 no-wrap\">\n {item?.icon && <Icon className={cn('mr5', item?.className)} aria-hidden=\"true\" />}\n <span className=\"accordion--title\">{item.title || 'Menu Chapter'}</span>\n </div>\n\n <div className=\"j6 accordion-title__right-box\">\n {item.status && (\n <div className=\"mr5\">\n <Status\n type={item?.status.type}\n value={item?.status.value}\n status={item?.status.status}\n active={calculateStatusCount()?.active}\n pause={calculateStatusCount()?.pause}\n />\n </div>\n )}\n\n {!noChevron && (\n <Icons.ChevronRight\n aria-hidden=\"true\"\n className={cn('accordion--title-chevron', {\n 'accordion--title-chevron-open': isOpen,\n })}\n />\n )}\n </div>\n </div>\n\n <div\n ref={ref}\n style={{ maxHeight }}\n className={cn('accordion--content', {\n 'accordion--content-is-open': isOpen,\n })}\n id={`accordion-content-${item.title}`}\n role=\"region\"\n aria-labelledby={`accordion-title-${item.title}`}\n >\n {item.children\n ? item.children.map((el) => {\n return (\n <LinkComponent to={el.link} key={el.id} className=\"accordion--content-item accordion--menu-link\">\n {el?.title || 'Menu item'}\n </LinkComponent>\n );\n })\n : children}\n </div>\n </div>\n );\n};\n\nexport default AccordionItem;\n", "import React, { useState } from \"react\";\n\nimport * as Icons from \"react-feather\";\n\nimport Switcher from \"../../../FormElements/Switcher/Switcher\";\n\nimport \"./TdTypes.scss\";\n\nexport const TdActions = ({ actions, onChange, onActionClick, rowItem }) => {\n if (!actions) return false;\n\n const [state, setState] = useState(actions);\n\n const handleArrayChange = (value, index, prop) => {\n state[index][prop] = value;\n setState([...state]);\n onChange(state);\n };\n\n return (\n <div className=\"j6\">\n {actions?.map((action, index) => {\n switch (action.type) {\n case \"download\":\n return (\n <div\n key={index}\n className=\"td-actions--item td-actions--download\"\n onClick={() => {}}\n >\n <Icons.Download />\n </div>\n );\n case \"edit\":\n return (\n <div\n key={index}\n className=\"td-actions--item td-actions--edit\"\n onClick={() => {}}\n >\n <Icons.Edit3 />\n </div>\n );\n case \"delete\":\n return (\n <div\n key={index}\n className=\"td-actions--item td-actions--delete\"\n onClick={() => onActionClick(\"delete\", rowItem)}\n >\n <Icons.Trash2 />\n </div>\n );\n case \"undo\":\n return (\n <div\n key={index}\n className=\"td-actions--item td-actions--undo\"\n onClick={() => onActionClick(\"undo\", rowItem)}\n >\n <Icons.RotateCcw />\n </div>\n );\n case \"switcher\":\n return (\n <div key={index} className=\"df\">\n <Switcher\n label={action.label || null}\n isActive={action?.value}\n onChange={(e) => handleArrayChange(e, index, \"value\")}\n />\n </div>\n );\n default:\n return null;\n }\n })}\n </div>\n );\n};\n", "import type { ISwitcherProps } from './Switcher.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport Hint from '../../UI/Hint/Hint';\n\nimport './Switcher.scss';\n\nconst RC = 'switcher';\n\nconst Switcher: React.FC<ISwitcherProps> = ({\n label,\n className,\n isActive,\n disabled,\n onChange,\n isLabelBold,\n hint,\n hintSide,\n testId = 'switcher',\n}) => {\n return (\n <div\n data-testid={testId}\n className={cn(RC, className, { [`${RC}_disabled`]: disabled })}\n >\n <button\n type=\"button\"\n data-testid={`${testId}-button`}\n className={cn(`${RC}__button`)}\n disabled={disabled}\n onClick={e => onChange(!isActive, e)}\n >\n <div\n className={cn(`${RC}__button-content`, {\n [`${RC}__button-content_active`]: isActive,\n })}\n >\n <div className={`${RC}__ball`} />\n </div>\n {label && (\n <span\n className={cn(`${RC}__label`, {\n [`${RC}__label_bold`]: isLabelBold,\n })}\n >\n {label}\n </span>\n )}\n </button>\n {hint && <Hint className={`${RC}__hint`} hint={hint} side={hintSide} />}\n </div>\n );\n};\n\nexport default Switcher;\n", "import React from \"react\";\n\nimport cn from \"classnames\";\nimport { ArrowDown, ArrowUp } from \"react-feather\";\n\nimport \"../Table.scss\";\n\nconst TdPriority = ({ onClick, rowIndex, cardLength }) => {\n return (\n <div className=\"cards-table__priority\">\n <span className=\"mr5\">{rowIndex + 1}</span>\n <div className=\"df\">\n <ArrowDown\n onClick={() => onClick(rowIndex)}\n className={cn(\"table--icon\", {\n disabled: rowIndex + 1 === cardLength,\n })}\n />\n <ArrowUp\n onClick={() => onClick(rowIndex, true)}\n className={cn(\"table--icon\", { disabled: rowIndex === 0 })}\n />\n </div>\n </div>\n );\n};\n\nexport default TdPriority;\n", "import { useEffect, useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport { useOutsideToggle } from \"../../../../Functions/utils\";\nimport { KEY_CODE } from \"../../Modal/Modal\";\n\nimport \"../Table.scss\";\n\nconst TdWeight = ({ value, percent, onChange, className }) => {\n const [state, setState] = useState(value);\n const {\n isToggled: isEdited,\n toggleOff: unsetIsEdited,\n toggleOn: setIsEdited,\n } = useOutsideToggle(false);\n\n useEffect(() => {\n setState(value);\n }, [value, isEdited]);\n\n const handleKeyUp = ({ keyCode, target }) => {\n if (keyCode === KEY_CODE.ENTER) {\n const newValue = Number(target.value) || 1;\n onChange(newValue);\n unsetIsEdited();\n }\n };\n\n return (\n <>\n {isEdited ? (\n <Input\n value={state}\n onChange={(e) => setState(e)}\n onBlur={unsetIsEdited}\n onKeyUp={handleKeyUp}\n autoFocus\n />\n ) : (\n <div className={cn(\"td-weight\", className)} onClick={setIsEdited}>\n <span>{value}</span>\n <span className=\"ml2 color--grey-gull\">\n ({percent}\n %)\n </span>\n </div>\n )}\n </>\n );\n};\n\nexport default TdWeight;\n", "import Tag from './Tag';\n\nexport default Tag;\nexport type { ITagProps } from './Tag.interface';\n", "import type { ITagProps } from '../Tag/Tag.interface';\n\nimport type { ITagListProps } from './TagList.interface';\nimport cn from 'classnames';\n\nimport {\n createRef,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { Edit3 } from 'react-feather';\n\nimport { checkedRef } from '../../../Functions/utils';\nimport Tag from '../Tag/Tag';\nimport './TagList.scss';\n\nconst TagList: React.FC<ITagListProps> = ({\n disabled,\n className,\n onTagClick,\n removeItem,\n items,\n withToggle = true,\n disableShowMore = false,\n shownItemsCount = 'auto',\n testId = 'test-taglist',\n refProp,\n\n renderOrder,\n\n onEditClick,\n onToggleRenderAll,\n isUseInTable,\n}) => {\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const [tagList, setTagList] = useState<(ITagProps & { itemRef: React.RefObject<HTMLDivElement> })[]>([]);\n\n const [staticTagsCount, setStaticTagsCount] = useState(-1);\n const [renderItemsCount, setRenderItemsCount] = useState(-1);\n const [renderAll, setRenderAll] = useState(!withToggle);\n\n const wrapperWidth\n = wrapperRef?.current?.getBoundingClientRect()?.width ?? -1;\n\n const setRenderAllInterceptor = (v: boolean, event: any): void => {\n setRenderAll(v);\n onToggleRenderAll?.(v);\n event?.stopPropagation();\n event?.preventDefault();\n };\n\n const getStaticTagsCount = (computedWidth: number): number => {\n if (typeof shownItemsCount === 'number') return shownItemsCount;\n\n const delta = typeof onEditClick === 'function' ? 60 : 32;\n const result = tagList.reduce <{\n count: number;\n width: number;\n items: { w: number; r: HTMLDivElement | null }[];\n skip?: boolean;\n }>((result, { itemRef }, index) => {\n if (result.skip) return result;\n\n const itemStyle\n = itemRef?.current && window.getComputedStyle(itemRef.current);\n\n const itemWidth = [\n Number.parseInt((itemRef.current?.getBoundingClientRect()?.width ?? 0).toString(), 10),\n Number.parseInt((itemStyle?.marginLeft ?? 0).toString(), 10),\n Number.parseInt((itemStyle?.marginRight ?? 0).toString(), 10),\n ].reduce((result, item) => {\n if (!Number.isNaN(item)) result += item;\n return result;\n }, 0);\n\n if (\n (!Number.isNaN(itemWidth)\n && itemWidth > 0\n && itemWidth + result.width < computedWidth - delta)\n || index === 0\n ) {\n result = {\n count: result.count + 1,\n width: result.width + itemWidth,\n items: [...result.items, { w: itemWidth, r: itemRef?.current }],\n };\n }\n else {\n result.skip = true;\n }\n\n return result;\n }, { count: 0, width: 0, items: [], skip: false });\n if (result?.items?.length === 1 && result.items[0].r && tagList.length > 1) {\n result.items[0].r.style.maxWidth = `${computedWidth - delta - 8}px`;\n }\n\n return result?.count;\n };\n\n const cancelDefault = (_e: string | undefined, cb: () => void): void => {\n cb?.();\n };\n\n const renderTags = (): (JSX.Element | null)[] => {\n const tagsRenderOrder\n = renderOrder ?? tagList.map(({ value, id }) => id ?? value);\n\n return tagsRenderOrder.map((v, i) => {\n const item = tagList.find(({ value, id }) => {\n // \u041D\u0415 \u0420\u0415\u0424\u0410\u041A\u0422\u041E\u0420\u0418\u0422\u042C \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u0447\u0435\u0440\u0435\u0437 || \u0434\u0430\u0435\u0442 \u043D\u0435\u043E\u0431\u044A\u044F\u0441\u043D\u0438\u043C\u044B\u0439 \u0441\u0430\u0439\u0434 \u044D\u0444\u0444\u0435\u043A\u0442\n if (id) return id === v; // \u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u0438\u0449\u0435\u043C \u043F\u043E id\n if (value) return value === v; // \u043F\u043E\u0442\u043E\u043C \u043F\u043E value\n return false;\n });\n\n if (!item) return null;\n\n const isHidden\n = renderItemsCount !== -1 && staticTagsCount !== -1\n ? i >= renderItemsCount\n : false;\n\n return (\n <div\n className={`tag-list_wrapper_item ${isHidden ? 'tag-list_wrapper_item--hidden' : ''}`}\n key={`tag-list-item-${item?.id ?? item?.value}`}\n ref={checkedRef(item?.itemRef)}\n >\n <Tag\n testId={`test-taglist-item-${item?.id ?? item?.value}`}\n {...item}\n onClick={onTagClick}\n removeItem={removeItem}\n isUseInTable={isUseInTable}\n />\n </div>\n );\n });\n };\n\n const renderMoreTags = (): JSX.Element | null => {\n if (\n (typeof shownItemsCount === 'number' && tagList?.length < shownItemsCount)\n || !tagList?.length\n || disableShowMore\n ) {\n return null;\n }\n const restItems = tagList.length - renderItemsCount;\n\n if (restItems === 0 || !withToggle || staticTagsCount === -1) return null;\n\n return (\n <Tag\n label={`+${restItems}`}\n className=\"tag-list_wrapper_render-more\"\n onClick={\n disableShowMore\n ? () => {}\n : (value, event) => cancelDefault(value, () => setRenderAllInterceptor(true, event))\n }\n isUseInTable={isUseInTable}\n />\n );\n };\n const renderHideTags = (): JSX.Element | null => {\n if (\n renderItemsCount !== tagList?.length\n || !withToggle\n || staticTagsCount === -1\n || staticTagsCount === tagList?.length\n ) {\n return null;\n }\n\n return (\n <Tag\n label=\"...\"\n className=\"tag-list_wrapper_hide-more\"\n onClick={(value, event) => cancelDefault(value, () => setRenderAllInterceptor(false, event))}\n isUseInTable={isUseInTable}\n />\n );\n };\n\n // Set TagList Items\n useEffect(() => {\n setStaticTagsCount(-1);\n setRenderItemsCount(-1);\n setRenderAllInterceptor(false, null);\n const itemsWithRef = items.map(item => ({ ...item, itemRef: createRef<HTMLDivElement>() }));\n setTagList(itemsWithRef);\n }, [items]);\n\n // Count Row Tags\n useLayoutEffect(() => {\n if (withToggle && wrapperWidth !== -1 && staticTagsCount === -1) {\n let computedWidth = wrapperWidth;\n\n if (computedWidth === 0) {\n computedWidth = Number.parseInt(\n (wrapperRef?.current\n ? window.getComputedStyle(wrapperRef?.current)?.width\n : 0).toString(),\n );\n }\n\n if (!Number.isNaN(computedWidth)) {\n setStaticTagsCount(getStaticTagsCount(computedWidth));\n }\n }\n }, [tagList, wrapperWidth, wrapperRef?.current]);\n\n //\n useLayoutEffect(() => {\n setRenderItemsCount(staticTagsCount);\n }, [staticTagsCount]);\n\n // Toggle Show/Hide More Tags\n useEffect(() => {\n setRenderItemsCount(renderAll ? tagList?.length : staticTagsCount);\n }, [renderAll]);\n\n useEffect(() => {\n if (wrapperRef?.current && refProp) refProp.current = wrapperRef?.current;\n }, [wrapperRef?.current]);\n\n return (\n <div\n data-testid={testId}\n className={cn(\n 'tag-list_wrapper',\n `${\n renderItemsCount !== tagList?.length\n || !withToggle\n || staticTagsCount === -1\n || staticTagsCount === tagList?.length\n ? 'tag-list_wrapper--only-static-items'\n : 'tag-list_wrapper--all-items'\n }`,\n className,\n { 'tag-list_wrapper--disabled': disabled },\n )}\n style={{\n visibility: staticTagsCount === -1 ? 'hidden' : 'visible',\n zIndex: staticTagsCount === -1 ? '-1' : 'auto',\n }}\n ref={wrapperRef}\n >\n {renderTags()}\n {renderMoreTags()}\n {renderHideTags()}\n {typeof onEditClick === 'function' && (\n <div className=\"tag-list__edit-trigger\">\n <Edit3 onClick={onEditClick} />\n </div>\n )}\n </div>\n );\n}\n\nexport default TagList;\n", "import type { ReactNode } from 'react';\nimport type { IUserBoxProps } from './UserBox.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\nimport { getColorById } from '../../../Functions/utils';\n\nimport Label from '../../FormElements/Label/Label';\nimport Button from '../Button/Button';\n\nimport './UserBox.scss';\n\nconst UserBox: React.FC<IUserBoxProps> = ({\n name = 'Username',\n role,\n id,\n onClick,\n isModal,\n className,\n colors,\n testId = 'userbox',\n}) => {\n const getNameFirstLetter = name.charAt(0).toUpperCase();\n\n const renderUser = (): ReactNode => {\n if (isModal) {\n return (\n <>\n <div style={{ backgroundColor: getColorById(id, colors) }} className=\"td-user-box__avatar\">\n {getNameFirstLetter}\n </div>\n <div className=\"td-user-box__user-data\">\n <Button className=\"p0 no-shadow\" onClick={onClick} label={name} variant=\"link\" />\n {role && <span>{role}</span>}\n </div>\n </>\n );\n }\n else {\n return (\n <>\n <div style={{ backgroundColor: getColorById(id) }} className=\"td-user-box__avatar\">\n {getNameFirstLetter}\n </div>\n <div className=\"td-user-box__user-data\">\n <Label label={name} />\n {role && <span aria-label={`User role: ${role}`}>{role}</span>}\n </div>\n </>\n );\n }\n };\n\n return (\n <div\n data-testid={testId}\n className={cn('td-user-box', className)}\n role=\"region\"\n aria-label={`User box for ${name}`}\n >\n {renderUser()}\n </div>\n );\n};\n\nexport default UserBox;\n", "import type { ILabelProps } from './Label.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport Hint from '../../UI/Hint/Hint';\n\nimport './Label.scss';\n\nconst CN = 'label';\n\nconst Label: React.FC<ILabelProps> = ({\n className = '',\n label = '',\n note,\n hint,\n isRequired,\n isLabelBolt,\n onClickHintCallback,\n error = null,\n isAccessability = false,\n isAccessabilityHint = false,\n testId = CN,\n}) => {\n const correctLabel = isRequired\n ? (\n <>\n {label}\n {' '}\n <span className=\"label_asterisk\">*</span>\n {' '}\n {note && <span className=\"label_note\">{note}</span>}\n {hint && (\n <Hint\n key={`hint-${label}`}\n id={`hint-${label}`}\n children={null}\n isLoading={false}\n isAccessability={isAccessabilityHint}\n hint={hint.text}\n icon={hint.icon}\n variant={hint.variant}\n side={hint.hintSide}\n className=\"label-hint\"\n onClickCallback={onClickHintCallback}\n />\n )}\n </>\n )\n : (\n <>\n {label}\n {' '}\n {note && <span className=\"label_note\">{note}</span>}\n {hint && (\n <Hint\n isAccessability={isAccessabilityHint}\n hint={hint.text}\n icon={hint.icon}\n variant={hint.variant}\n side={hint.hintSide}\n className=\"label-hint\"\n onClickCallback={onClickHintCallback}\n key={undefined}\n id={undefined}\n children={undefined}\n isLoading={undefined}\n />\n )}\n </>\n );\n\n return (\n <span\n tabIndex={isAccessability ? 0 : -1}\n aria-label={label}\n className={cn(CN, { label_bold: isLabelBolt, error, isRequired }, className)}\n data-testid={testId}\n >\n <span className=\"label_text\" data-testid=\"label-text\">\n {correctLabel}\n </span>\n </span>\n );\n};\n\nexport default Label;\n", "import UserBox from './UserBox';\n\nexport default UserBox;\nexport type { IUserBoxProps } from './UserBox.interface';\n", "import type { IStepWrapperProps } from '../../WizardStepper.interface';\nimport classNames from 'classnames';\n\nimport React from 'react';\nimport Box from '../../../Box/Box';\nimport { alternativeIconSet } from '../icons';\nimport StepRow from '../StepRow/StepRow';\n\nimport './StepWrapper.scss';\n\nconst StepWrapper: React.FC<IStepWrapperProps> = ({\n steps,\n customIcons,\n variant = 'default',\n className,\n testId = 'step-wrapper',\n}) => {\n if (!steps?.length) return <div data-testid=\"empty-state\">No steps available</div>;\n\n const renderStepRow = (step: IStepWrapperProps['steps'][number]): JSX.Element => {\n const { key, ...stepProps } = step;\n return (\n <StepRow\n key={key}\n {...stepProps}\n customIcons={customIcons || alternativeIconSet}\n />\n );\n };\n\n switch (variant) {\n case 'ghost':\n return (\n <Box\n className={classNames('step-wrapper', 'step-wrapper-ghost', className)}\n data-testid={testId}\n >\n {steps?.map(renderStepRow)}\n </Box>\n );\n case 'cardActive':\n return (\n <div\n className={classNames('step-wrapper', 'step-wrapper-card-active', className)}\n data-testid={testId}\n >\n {steps?.map(renderStepRow)}\n </div>\n );\n default:\n return (\n <div\n className={classNames('step-wrapper', className)}\n data-testid={testId}\n >\n {steps?.map(renderStepRow)}\n </div>\n );\n }\n};\n\nexport default StepWrapper;\n", "import React from 'react';\n\nconst DoneIcon: React.FC<React.SVGProps<SVGSVGElement>> = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"20\" height=\"20\" rx=\"10\" fill=\"#69A457\" />\n <mask id=\"mask0_54394_4001\" style={{ maskType: 'alpha' }} maskUnits=\"userSpaceOnUse\" x=\"2\" y=\"2\" width=\"16\" height=\"16\">\n <path d=\"M14.5 7L9 12.5L6 9.5\" stroke=\"black\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </mask>\n <g mask=\"url(#mask0_54394_4001)\">\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" fill=\"white\" />\n </g>\n </svg>\n)\n\nconst TodoIcon: React.FC<React.SVGProps<SVGSVGElement>> = () => {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_54394_4448)\">\n <circle cx=\"10\" cy=\"10\" r=\"7\" fill=\"white\" stroke=\"#B3B8CB\" strokeWidth=\"2\" />\n </g>\n <defs>\n <clipPath id=\"clip0_54394_4448\">\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(2 2)\" />\n </clipPath>\n </defs>\n </svg>\n\n );\n};\n\nconst ActiveIcon: React.FC<React.SVGProps<SVGSVGElement>> = () => {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"20\" height=\"20\" rx=\"10\" fill=\"#E8F9E5\" />\n ii\n <mask id=\"mask0_54394_1459\" style={{ maskType: 'alpha' }} maskUnits=\"userSpaceOnUse\" x=\"2\" y=\"2\" width=\"16\" height=\"16\">\n <circle cx=\"10\" cy=\"10\" r=\"4\" fill=\"#171D33\" />\n </mask>\n <g mask=\"url(#mask0_54394_1459)\">\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" fill=\"#171D33\" />\n </g>\n </svg>\n\n );\n};\n\nexport const alternativeIconSet: {\n defaultIcon: React.ReactElement;\n doneIcon: React.ReactElement;\n activeIcon: React.ReactElement;\n} = {\n defaultIcon: <TodoIcon />,\n doneIcon: <DoneIcon />,\n activeIcon: <ActiveIcon />,\n};\n", "import type { IStepRowProps } from '../../WizardStepper.interface';\nimport cn from 'classnames';\nimport React from 'react';\nimport Status from '../../../Status/Status';\nimport { WIZARD_STEP_VARIANTS } from '../../constructor';\nimport StateIcon from '../StateIcon';\nimport './StepRow.scss';\n\nconst RC = 'step-row';\n\nconst { DEFAULT, ACTIVE, DONE } = WIZARD_STEP_VARIANTS;\n\nconst StepRow: React.FC<IStepRowProps> = ({\n label,\n description,\n className,\n isOptional,\n isFinished,\n isActive,\n titleSlot,\n contentSlot,\n customIcons,\n}) => {\n const title = label;\n\n const rowVariant = (() => {\n if (isActive) return ACTIVE;\n if (isFinished) return DONE;\n return DEFAULT;\n })();\n\n const alternaviteIconFromProps = (() => {\n if (isActive) return customIcons?.activeIcon;\n if (isFinished) return customIcons?.doneIcon;\n return customIcons?.defaultIcon;\n })();\n\n const CorrectIcon: React.FC = () => {\n if (!customIcons || Object?.values(customIcons)?.every(icon => !icon)) {\n return <StateIcon variant={rowVariant} />;\n }\n\n return alternaviteIconFromProps as React.ReactElement<any, any> || null;\n };\n\n return (\n <div key={label} className={cn(RC, `${RC}--${rowVariant}`, className)}>\n <div className={cn(`${RC}__state-point`, `${RC}__state-point--${rowVariant}`)}>\n <CorrectIcon />\n </div>\n\n <div className={`${RC}__content`}>\n <div className={`${RC}__title`}>\n <div className={`${RC}__title-left`}>\n <div className={cn(`${RC}__title-text`, { 'text-muted': rowVariant === DEFAULT })}>\n {title}\n </div>\n {isOptional && <Status label=\"Optional\" status=\"draft\" />}\n </div>\n\n {titleSlot && (\n <div className={`${RC}__title-right`}>\n {titleSlot}\n </div>\n )}\n </div>\n\n {description && <div className={`${RC}__description`}>{description}</div>}\n {contentSlot && <div className={`${RC}__body`}>{contentSlot}</div>}\n </div>\n </div>\n );\n};\n\nexport default StepRow;\n", "import React from 'react';\nimport Status from '../Status/Status';\nexport const WIZARD_STEP_VARIANTS = Object.freeze({\n DEFAULT: 'default',\n DONE: 'done',\n ACTIVE: 'active',\n});\n\nconst JSXMockComponent = () => {\n const arr = [\n { title: 'Requested Amont', value: '$15,000' },\n { title: 'Repayment Amount', value: '$15,001' },\n { title: 'Repayment Date', value: '12/12/2021' },\n ]\n\n const textStyles = {\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '20px',\n letterSpacing: '0.2px'\n };\n\n return arr.map(row => {\n return <div style={{ display: 'flex', justifyContent: 'space-between', maxWidth: '250px'}}>\n <span style={textStyles}>{row.title}</span>\n <span style={textStyles}>{row.value}</span>\n </div>\n });\n}\n\nexport const mockData = [\n {\n key: 'businessInfo',\n label: 'Provide Business Info',\n description: 'This information will help us to evaluate your application',\n isFinished: true,\n },\n {\n key: 'principal',\n label: 'Add Principal Information',\n description: 'A principal is essentially another name for a company owner. At some corporations, the principal is also the founder, CEO, or even the chief investor',\n isFinished: true,\n isOptional: true,\n },\n {\n key: 'coOwners',\n label: 'Add Co-Owners',\n description: '{merchantName} will receive that amount from {lenderNmae}',\n isActive: true,\n titleSlot: <span className='custom-title-slot'>$15,001</span>,\n contentSlot: <JSXMockComponent />,\n },\n {\n key: 'bankAccount',\n label: 'Add a Bank Account',\n description: 'Your bank account information will be used to securely and automatically transfer the funds',\n titleSlot: <Status label=\"Some JSX\" status=\"draft\" />,\n },\n {\n key: 'documents',\n label: 'Upload Documents',\n description: 'Please upload the required documents',\n },\n {\n key: 'review',\n label: 'Review & Submit',\n description: 'Please review the information and submit your application',\n },\n {\n key: 'success',\n label: 'Success',\n description: 'Your application has been submitted successfully',\n },\n {\n key: 'failure',\n label: 'Failure',\n description: 'Your application has been failed',\n },\n {\n key: 'pending',\n label: 'Pending',\n description: 'Your application is under review',\n },\n]\n", "import type { IStateIconProps } from '../../WizardStepper.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\nimport { WIZARD_STEP_VARIANTS } from '../../constructor';\n\nimport './StateIcon.scss';\n\nconst DefaultPoint: React.FC = () => {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <circle cx=\"8\" cy=\"8\" r=\"4\" />\n </svg>\n );\n};\n\nconst DonePoint: React.FC = () => {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M12.5 5L7 10.5L4 7.5\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n};\n\nconst RC = 'state-icon';\n\nconst { ACTIVE, DEFAULT, DONE } = WIZARD_STEP_VARIANTS;\n\nexport const StateIcon: React.FC<IStateIconProps> = ({ variant = DEFAULT, className }) => {\n const computedState = variant === ACTIVE || variant === DONE ? variant : DEFAULT;\n\n const Inner = {\n [DEFAULT]: <DefaultPoint />,\n [ACTIVE]: <DefaultPoint />,\n [DONE]: <DonePoint />,\n };\n\n return <div className={cn(RC, `${RC}--${computedState}`, className)}>{Inner[computedState]}</div>;\n};\n", "import { StateIcon } from './StateIcon';\n\nexport default StateIcon;\n", "import StepWrapper from './StepWrapper';\n\nexport default StepWrapper;\n", "import StepWrapper from './StepWrapper';\n\nexport default StepWrapper;\n", "import WizardStepper from './ui';\n\nexport default WizardStepper;\nexport type { IStateIconProps, IStepRowProps, IStepWrapperProps } from './WizardStepper.interface';\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useEffect", "useState", "cn", "jsx", "jsxs", "useState", "cn", "useEffect", "useEffect", "useRef", "useState", "React", "cn", "ChevronDown", "jsx", "jsxs", "useRef", "useState", "useEffect", "cn", "ChevronDown", "cn", "useState", "cn", "useEffect", "useRef", "useState", "cn", "jsx", "jsxs", "cn", "Spinner_default", "jsx", "jsxs", "CN", "Tag", "useRef", "useState", "x", "y", "height", "width", "useEffect", "cn", "Spinner_default", "cn", "useEffect", "useRef", "useState", "AlertTriangle", "jsx", "jsxs", "useState", "useRef", "cn", "useEffect", "AlertTriangle", "jsx", "jsxs", "useState", "cn", "cn", "useState", "X", "cn", "jsx", "jsxs", "RC", "cn", "jsx", "jsxs", "useState", "X", "cn", "Alert_default", "cn", "useEffect", "useRef", "useState", "useEffect", "useEffect", "jsx", "jsxs", "useRef", "useState", "useEffect", "cn", "cn", "jsx", "cn", "React", "useEffect", "useState", "cn", "jsx", "jsxs", "useState", "useEffect", "cn", "cn", "moment", "useMemo", "jsx", "jsxs", "RC", "useMemo", "moment", "cn", "cn", "useState", "ChevronDown", "ChevronUp", "jsx", "jsxs", "useState", "cn", "ChevronUp", "ChevronDown", "useState", "jsx", "useState", "cn", "moment", "useEffect", "useRef", "useState", "Fragment", "jsx", "jsxs", "RC", "useState", "moment", "useRef", "useEffect", "cn", "DoubleString_default", "cn", "useEffect", "useRef", "useState", "createPortal", "AlertTriangle", "jsx", "jsxs", "Fragment", "jsx", "jsxs", "useRef", "useState", "className", "cn", "createPortal", "useEffect", "AlertTriangle", "Hint_default", "cn", "useEffect", "useLayoutEffect", "useMemo", "useRef", "useEffect", "useEffect", "useState", "useState", "useEffect", "useEffect", "ev", "cn", "jsx", "cn", "memo", "useMemo", "useRef", "X", "jsx", "jsxs", "useCallback", "useEffect", "useLayoutEffect", "useRef", "useState", "useEffect", "useState", "jsx", "useRef", "useState", "useLayoutEffect", "scrollTop", "useEffect", "useCallback", "Fragment", "jsx", "jsxs", "useRef", "useMemo", "useLayoutEffect", "useEffect", "cn", "cn", "useEffect", "useLayoutEffect", "useMemo", "useRef", "jsx", "jsxs", "useRef", "useMemo", "useLayoutEffect", "useEffect", "cn", "Modal_default", "MonoAccordion_default", "cn", "jsx", "jsxs", "RC", "cn", "PageTitle_default", "cn", "jsx", "CN", "cn", "Price_default", "cn", "jsx", "jsxs", "CN", "cn", "PriceRange_default", "cn", "jsx", "jsxs", "CN", "cn", "ProgressLine_default", "cn", "jsx", "jsxs", "defaultOnClick", "cn", "Status_default", "React", "cn", "React", "cn", "jsx", "jsxs", "cn", "React", "useState", "cn", "jsx", "jsxs", "React", "useState", "cn", "useEffect", "useRef", "useState", "jsx", "jsxs", "useState", "useRef", "useEffect", "cn", "Status_default", "React", "useState", "Icons", "cn", "jsx", "jsxs", "RC", "cn", "jsx", "useState", "React", "cn", "ArrowDown", "ArrowUp", "jsx", "jsxs", "ArrowDown", "cn", "ArrowUp", "useEffect", "useState", "cn", "Fragment", "jsx", "jsxs", "useState", "useEffect", "cn", "jsx", "useState", "Fragment", "jsx", "jsxs", "useState", "cn", "jsx", "jsxs", "cn", "Tag_default", "cn", "useEffect", "useLayoutEffect", "useRef", "useState", "Edit3", "jsx", "jsxs", "useRef", "useState", "result", "useEffect", "useLayoutEffect", "cn", "Edit3", "cn", "cn", "Fragment", "jsx", "jsxs", "CN", "cn", "Fragment", "jsx", "jsxs", "cn", "UserBox_default", "jsx", "jsxs", "cn", "React", "jsx", "jsxs", "cn", "jsx", "RC", "cn", "jsx", "jsxs", "RC", "DEFAULT", "ACTIVE", "DONE", "cn", "jsx", "StepWrapper_default", "StepWrapper_default"]
7
7
  }