intelicoreact 2.0.7 → 2.0.9
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/charts/package.json +5 -0
- package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.d.ts +1 -1
- package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.d.ts +7 -7
- package/dist/Atomic/FormElements/Input/Input.d.ts +1 -1
- package/dist/Atomic/FormElements/Input/types.d.ts +0 -5
- package/dist/Atomic/FormElements/InputMask3/InputMask3.interface.d.ts +0 -3
- package/dist/Atomic/FormElements/NumericInput/NumericInput.d.ts +15 -15
- package/dist/Atomic/FormElements/RangeSlider/RangeSlider.d.ts +11 -11
- package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.interface.d.ts +1 -1
- package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.interface.d.ts +4 -4
- package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.d.ts +2 -2
- package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.d.ts +4 -4
- package/dist/Atomic/UI/AccordionTable/AccordionTable.d.ts +1 -1
- package/dist/Atomic/UI/AccordionText/AccordionText.d.ts +4 -4
- package/dist/Atomic/UI/Alert/Alert.interface.d.ts +0 -2
- package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.d.ts +4 -4
- package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.d.ts +1 -1
- package/dist/Atomic/UI/MonoAccordion/MonoAccordion.d.ts +2 -2
- package/dist/Atomic/UI/PieChart/PieChart.d.ts +3 -3
- package/dist/Atomic/UI/Table/Partials/TdHeader.d.ts +1 -1
- package/dist/Atomic/UI/Table/Partials/TdRow.d.ts +1 -1
- package/dist/Atomic/UI/Table/Table.d.ts +1 -1
- package/dist/Classes/AbortableFetch.d.ts +17 -17
- package/dist/Classes/RESTAPI/index.d.ts +1 -1
- package/dist/Classes/RESTAPI/partials/AbortableFetch.d.ts +17 -17
- package/dist/Classes/RESTAPI/partials/CredentialsProcessing.d.ts +4 -4
- package/dist/Functions/hooks/useFormFieldsChangesManager.d.ts +2 -2
- package/dist/Functions/sdk/runtime-sdk/transport.d.ts +2 -2
- package/dist/Functions/useFieldFocus.d.ts +2 -2
- package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.d.ts +1 -1
- package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.d.ts +1 -1
- package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.d.ts +2 -2
- package/dist/Functions/useFormTools/functions/General.d.ts +3 -3
- package/dist/Functions/useFormTools/functions/RenderFields.d.ts +5 -5
- package/dist/Functions/useFormTools/index.d.ts +20 -20
- package/dist/Functions/useMetaInfo.d.ts +2 -2
- package/dist/Functions/usePasswordChecker.d.ts +1 -1
- package/dist/Functions/utils.d.ts +11 -11
- package/dist/charts.cjs +927 -0
- package/dist/charts.cjs.map +7 -0
- package/dist/charts.d.ts +7 -0
- package/dist/charts.js +911 -0
- package/dist/charts.js.map +7 -0
- package/dist/form.cjs +1498 -1933
- package/dist/form.cjs.map +4 -4
- package/dist/form.js +1114 -1549
- package/dist/form.js.map +4 -4
- package/dist/hooks.cjs +8 -324
- package/dist/hooks.cjs.map +4 -4
- package/dist/hooks.js +8 -324
- package/dist/hooks.js.map +4 -4
- package/dist/index.cjs +2507 -9293
- package/dist/index.cjs.map +4 -4
- package/dist/index.js +2059 -8861
- package/dist/index.js.map +4 -4
- package/dist/layout.cjs +207 -6308
- package/dist/layout.cjs.map +4 -4
- package/dist/layout.js +202 -6303
- package/dist/layout.js.map +4 -4
- package/dist/presets.cjs +0 -643
- package/dist/presets.cjs.map +4 -4
- package/dist/presets.js +0 -633
- package/dist/presets.js.map +4 -4
- package/dist/ui.cjs +711 -7854
- package/dist/ui.cjs.map +4 -4
- package/dist/ui.d.ts +0 -5
- package/dist/ui.js +722 -7881
- package/dist/ui.js.map +4 -4
- package/dist/utils.cjs +4 -51
- package/dist/utils.cjs.map +3 -3
- package/dist/utils.js +4 -51
- package/dist/utils.js.map +3 -3
- package/package.json +19 -3
- package/styles.css +1 -0
- package/dist/Atomic/UI/DynamicIcon/DynamicIcon.d.ts +0 -4
- package/dist/Atomic/UI/DynamicIcon/DynamicIcon.interface.d.ts +0 -6
- package/dist/Atomic/UI/DynamicIcon/index.d.ts +0 -3
package/dist/presets.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/Atomic/FormElements/InputMask3/config.ts", "../src/Atomic/FormElements/InputMask3/functions.ts", "../src/Functions/presets/inputMaskPresets.js", "../src/
|
|
4
|
-
"sourcesContent": ["import type { IInputMask3Errors } from './InputMask3.interface';\n\nexport const DEFAULT_ERRORS: IInputMask3Errors = {\n onlyLetter: 'Type letter',\n onlyDigit: 'Type digit',\n onlyUpperCase: 'Type letter in UpperCase',\n onlyLowerCase: 'Type letter in LowerCase',\n default: null,\n}\nexport const UPPERCASE_LETTER_MASK_CHAR: string = 'L';\nexport const LOWERCASE_LETTER_MASK_CHAR: string = 'l';\nexport const DIGIT_MASK_CHAR: string = 'D';\nexport const SPACE_CHAR: string = '\\u00A0';\nexport const ANDROID_CHROME_TEXT_CODE: number = 229;\nexport const EXCLUDED_KEYS: string[] = ['Tab'];\n", "import { DIGIT_MASK_CHAR, LOWERCASE_LETTER_MASK_CHAR, UPPERCASE_LETTER_MASK_CHAR } from './config';\n\nexport function getSelectionText(): string {\n let text = '';\n if (window.getSelection) {\n text = window.getSelection()?.toString() ?? '';\n }\n else if (document.getSelection() && document.getSelection()?.type !== 'Control') {\n text = document.getSelection()?.toString() ?? '';\n }\n\n return text?.replace(/\\n/g, '');\n}\nexport function resetSelectionText(): void {\n if (window.getSelection) {\n window.getSelection()?.removeAllRanges();\n }\n}\nexport function copyToClipboard(str: string): Promise<void> {\n if (navigator && navigator.clipboard && navigator.clipboard.writeText)\n return navigator.clipboard.writeText(str);\n\n return Promise.reject('The Clipboard API is not available.');\n}\nexport function selectElementContents(el: Node): void {\n const sel = window.getSelection();\n sel?.selectAllChildren(el);\n}\n\nexport function isLetter(char: string): boolean {\n return Boolean(char?.length === 1 && char?.match(/[a-z]/i));\n}\nexport function isUpperCaseLetter(char: string): boolean {\n return isLetter(char) ? char === char.slice().toUpperCase() : false;\n}\nexport function isLowerCaseLetter(char: string): boolean {\n return isLetter(char) ? char === char.slice().toLowerCase() : false;\n}\nexport function isDigit(char: string): boolean {\n return Boolean(Number.isInteger(Number.parseInt(char, 10)));\n}\n\nexport function isDigitMaskChar(char: string): boolean {\n return char === DIGIT_MASK_CHAR;\n}\nexport function isLetterMaskChar(char: string): boolean {\n return (\n char === UPPERCASE_LETTER_MASK_CHAR || char === LOWERCASE_LETTER_MASK_CHAR\n );\n}\n\nexport function voidFn(): void {\n console.error('Void Function Called');\n}\n", "/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DD.DD.DDDD',\n * @param maskPatternPlaceholder: 'MM.DD.YYYY',\n * @param usePatternPlaceholder: true,\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param autocomplete: 'bday',\n * @param focusSelector: 'input',\n */\nconst DATE_PRESET = {\n type: \"inputMask\",\n maskPattern: \"DD.DD.DDDD\",\n maskPatternPlaceholder: \"MM.DD.YYYY\",\n usePatternPlaceholder: true,\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n autocomplete: \"bday\",\n focusSelector: \"input\",\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param focusSelector: 'input',\n * @param autocomplete: 'postal-code',\n * @param rules: 'fieldZip'\n */\nconst ZIP_PRESET = {\n type: \"inputMask\",\n focusSelector: \"input\",\n maskPattern: \"DDDDD\",\n maskPlaceholder: \"X\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n autocomplete: \"postal-code\",\n rules: \"fieldZip\",\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDDDDDDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param focusSelector: 'input',\n */\nconst SSN_PRESET = {\n type: \"inputMask\",\n maskPattern: \"DDDDDDDDD\",\n maskPlaceholder: \"X\",\n focusSelector: \"input\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDD-DDD-DDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param focusSelector: 'input',\n * @param autocomplete: 'tel-national',\n */\nconst MOBILE_PHONE_PRESET = {\n type: \"inputMask\",\n // maskPattern: 'DDD-DDD-DDDD',\n maskPattern: \"(DDD) DDD-DDDD\",\n maskPlaceholder: \"X\",\n focusSelector: \"input\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n autocomplete: \"tel-national\",\n};\n\n/**\n * @param type: 'inputMask3',\n * @param maskPattern: 'DDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n */\nconst SHORT_SSN_PRESET = {\n type: \"inputMask3\",\n maskPattern: \"DDDD\",\n maskPlaceholder: \"X\",\n focusSelector: \"input\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDDDDDDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n */\nconst ABA_PRESET = {\n type: \"inputMask\",\n maskPattern: \"DDDDDDDDD\",\n maskPlaceholder: \"X\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'MM/YY',\n * @param maskPatternPlaceholder: 'MM/YY',\n * @param usePatternPlaceholder: true,\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param focusSelector: 'input',\n */\nconst CC_EXPIRATION_DATE = {\n type: \"inputMask\",\n maskPattern: \"MM/YY\",\n maskPatternPlaceholder: \"MM/YY\",\n usePatternPlaceholder: true,\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n focusSelector: \"input\",\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDDDDDDDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n */\nconst BANK_ACCOUNT = {\n type: \"inputMask\",\n maskPattern: \"DDDDDDDDDD\",\n maskPlaceholder: \"X\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n};\n\nexport const MASK_PRESETS = {\n BANK_ACCOUNT,\n CC_EXPIRATION_DATE,\n DATE_PRESET,\n ZIP_PRESET,\n SSN_PRESET,\n MOBILE_PHONE_PRESET,\n SHORT_SSN_PRESET,\n ABA_PRESET,\n};\n", "export const KEYBOARD_SERVICE_KEYS = [\n \"Escape\",\n \"F1\",\n \"F2\",\n \"F3\",\n \"F4\",\n \"F5\",\n \"F6\",\n \"F7\",\n \"F8\",\n \"F9\",\n \"F10\",\n \"F11\",\n \"F12\",\n \"Tab\",\n \"CapsLock\",\n \"Shift\",\n \"Control\",\n \"Meta\",\n \"Option\",\n \"Alt\",\n \"ContextMenu\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"NumLock\",\n \"Backspace\",\n \"Delete\",\n \"Enter\",\n \"Return\",\n \"Insert\",\n \"Home\",\n \"End\",\n \"PageUp\",\n \"PageDown\",\n \"PrintScreen\",\n \"ScrollLock\",\n \"Pause\",\n];\n\nexport const MAX_PHONE_LENGTH = 10;\nexport const MAX_NAME_LENGTH = 128;\n\nexport const DEFAULT_DATE_MASK_NO_VALUE_SYMBOL = \"_\";\n\nexport const DEFAULT_COLORS = [\n \"#D9C1FF\",\n \"#FFBAF0\",\n \"#FFB8CE\",\n \"#FFC3A2\",\n \"#FFDB7C\",\n \"#F9F871\",\n \"#C3FCF1\",\n \"#F6F2CB\",\n \"#E0F8D1\",\n \"#B1DFFB\",\n \"#8DECFE\",\n \"#76F7ED\",\n \"#8AFEC8\",\n];\n\nexport const KEYBOARD_KEY_CODES = {\n Backspace: 8,\n Delete: 46,\n ARROW_LEFT: 37,\n ARROW_RIGHT: 39,\n};\n\nexport const OS = {\n iOS: \"iOS\",\n Android: \"Android\",\n WP: \"Windows Phone\",\n Linux: \"Linux\",\n Windows: \"Windows\",\n MacOS: \"MacOS\",\n Unknown: \"unknown\",\n};\n", "import { useEffect } from \"react\";\n\nimport moment from \"moment-timezone\";\n\nimport { DEFAULT_COLORS, OS } from \"../Constants/index.constants\";\n\nexport const uuid = () => Date.now().toString(36) + Math.random().toString(36).substring(2);\n\nexport const getIsOnlyAnObject = (input) => {\n return (\n typeof input === \"object\" && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B \u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u0438\n input instanceof Object && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" null\n !Array.isArray(input) && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043C\u0430\u0441\u0441\u0438\u0432\u044B\n !(input instanceof Set) && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u0441\u0435\u0442\u044B\n !(input instanceof Map) // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043C\u0430\u043F\u044B\n );\n};\n\n/* eslint-disable guard-for-in, no-unused-vars */\nexport const handleObjectChange =\n (updateObject, updateFunction) =>\n (data, prop = \"\", isNumber) => {\n let value;\n if (data?.target) {\n value =\n data.target.type === \"checkbox\"\n ? data.target.checked\n : data.target.value;\n } else value = data;\n\n value = isNumber ? Number(value) : value;\n\n const props = prop.split(\".\");\n const currentObject = props.reduce((res, chapter, index) => {\n if (props.length !== index + 1) res = res[chapter];\n return res;\n }, updateObject);\n\n currentObject[props.pop()] = value;\n updateFunction();\n };\n\nexport const useOutsideToggle = (ref, setOut, open) => {\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n setOut(open);\n }\n }\n useEffect(() => {\n document.addEventListener(\"mouseup\", handleClickOutside);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mouseup\", handleClickOutside);\n };\n }, [ref]);\n};\n\n// export const clone = obj => {\n// const data = obj instanceof Array ? [] : {};\n// for (const i in obj) data[i] = typeof obj[i] === 'object' && obj[i] != null ? clone(obj[i]) : obj[i];\n// return data;\n// };\n// ! \u042D\u0442\u043E\u0442 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435\u0435\nexport const clone = (input) => {\n if (input === null || typeof input !== \"object\") return input;\n const data = input instanceof Array ? [] : {};\n for (const i in input) data[i] = clone(input[i]);\n return data;\n};\n\nexport const getResponseClone = async (res) =>\n await (typeof res?.clone === \"function\" ? res.clone() : clone(res));\n\n//TimeUtils\nexport function transformUTCTimeToLocal(date, format = \"YYYY-MM-DD HH:mm:ss\") {\n if (!date) return;\n const utcDate = moment.utc(date).toDate();\n return moment(utcDate, format).local().format(format);\n}\nexport function transformLocalTimeToUTC(date, format = \"YYYY-MM-DD HH:mm:ss\") {\n if (!date) return;\n return moment(date, format).utc().format(format);\n}\nexport function transformUTCHoursToLocal(time, format = \"HH:mm:ss\") {\n if (!time) return;\n const splitedTime = time.split(\":\");\n const offset = moment().utcOffset();\n let HH = Number(splitedTime[0]);\n let mm = Number(splitedTime[1]);\n const ss = splitedTime[2];\n mm = mm + offset;\n while (mm > 59) {\n mm -= 60;\n HH += 1;\n }\n if (HH > 23) HH -= 24;\n while (mm < 0) {\n mm += 60;\n HH -= 1;\n }\n if (HH < 0) HH += 24;\n return `${HH}:${mm}:${ss}`;\n}\n\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E \u0441\u0430\u043C\u044B\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 \u043F\u0430\u0442\u0442\u0435\u0440\u043D\nexport function transformDateOrTimeOrTogetherToFormat(\n data,\n outputFormat = \"HH:mm\",\n additional,\n) {\n const ERROR_VALUE = \"Invalid date\";\n const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;\n const { parseFormat, isReturnAsMomentInstance } = getIsOnlyAnObject(\n additional,\n )\n ? additional\n : {};\n\n if (typeof data !== \"string\" && typeof data !== \"number\") {\n return isReturnAsMomentInstance ? moment(\"error\") : ERROR_MESSGE;\n }\n\n //? \u0418\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u043C parseFormat, \u0435\u0441\u043B\u0438 data \u043F\u0440\u0438\u0448\u043B\u0430 \u043A\u0430\u043A timestamp \u0438\u043B\u0438 \u0435\u0441\u043B\u0438 parseFormat \u043D\u0435 \u0441\u0442\u0440\u043E\u043A\u0430\n const momentArgs = [\n data,\n ...(!Number.isNaN(Number(data)) || typeof parseFormat === \"string\"\n ? []\n : [parseFormat]),\n ];\n\n //? \u0417\u0430\u0434\u0430\u0447\u0430 \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440, \u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 \u043B\u0438\u0431\u043E \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439\n const momentInstance = (() => {\n let instance = moment(...momentArgs);\n\n //? \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C \u0432\u0430\u043B\u0438\u0434\u043D\u043E\u0441\u0442\u044C moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440-\u0430 \u043F\u0443\u0442\u0435\u043C \u043F\u043E\u043F\u044B\u0442\u043A\u0438 \u043F\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043E \u043A \u0432\u044B\u0445\u043E\u0434\u043D\u043E\u043C\u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0443\n //? \u041F\u043E\u043F\u0430\u0434\u0435\u043C \u0432 \u044D\u0442\u043E\u0442 \u043A\u0435\u0439\u0441 \u0435\u0441\u043B\u0438\n //? - data \u044D\u0442\u043E timestamp\n //? - data \u044D\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 date-time\n //? - data \u044D\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 date (\u0432 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0432\u0440\u0435\u043C\u044F \u0432\u044B\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F 00:00:00)\n if (instance.format(outputFormat) !== ERROR_VALUE) return instance;\n //? \u0415\u0441\u043B\u0438 \u0436\u0435 \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C, \u0442\u043E \u043F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u043C, \u0447\u0442\u043E data \u043F\u0440\u0438\u0448\u043B\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 time\n //? \u0412 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0441\u043E\u0437\u0434\u0430\u0434\u0438\u043C \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u0442 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u044B, \u0440\u0430\u0441\u043F\u0430\u0440\u0441\u0438\u043C data \u0438 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u043C \u0432\u0440\u0435\u043C\u044F\n //? \u041A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442\u0441\u044F \u043F\u0430\u0442\u0442\u0435\u0440\u043D\u044B: 'HH*mm', 'HH*mm*ss', 'HH*mm*ss*\u043B\u044E\u0431\u043E\u0435_\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E_ms', \u0433\u0434\u0435 * - \u043B\u044E\u0431\u043E\u0439 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C\n else if (/^\\d\\d.\\d\\d/.test(data)) {\n instance = moment();\n const symbols = data.split(\"\");\n\n const timeArr = symbols\n .reduce(\n (acc, symbol, idx) => {\n if (Number.isNaN(Number(symbol))) {\n if (acc.group) acc.result.push(acc.group);\n acc.group = \"\";\n } else acc.group = `${acc.group}${symbol}`;\n if (idx === symbols.length - 1 && acc.group)\n acc.result.push(acc.group);\n return acc;\n },\n { result: [], group: \"\" },\n )\n //? reverse \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0438\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0434\u043B\u044F \u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0441\u043B\u0435 \u043C\u043E\u0436\u043D\u043E \u0431\u044B\u043B\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043C\u0435\u0442\u043E\u0434 pop, \u0430 \u043D\u0435 shift,\n //? \u0442.\u043A. \u043C\u0435\u0442\u043E\u0434\u044B \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F/\u0438\u0437\u0432\u043B\u0435\u0447\u0435\u043D\u0438\u044F \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043A\u043E\u043D\u0446\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u0431\u044B\u0441\u0442\u0440\u0435\u0435,\n //? \u0447\u0435\u043C \u0430\u043D\u0430\u043B\u043E\u0433\u0438\u0447\u043D\u044B\u0435 \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043D\u0430\u0447\u0430\u043B\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n .result.reverse();\n\n instance.hours(Number(timeArr.pop()));\n instance.minutes(Number(timeArr.pop()));\n instance.seconds(timeArr.length ? Number(timeArr.pop()) : 0);\n instance.milliseconds(timeArr.length ? Number(timeArr.pop()) : 0);\n } else instance = moment(\"error\"); //? \u0418\u043D\u0430\u0447\u0435 \u0441\u043E\u0437\u0434\u0430\u0435\u043C \u0437\u0430\u0432\u0435\u0434\u043E\u043C\u043E \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\n\n return instance;\n })();\n\n if (isReturnAsMomentInstance) return momentInstance;\n\n const output = momentInstance.format(outputFormat);\n return output === ERROR_VALUE ? ERROR_MESSGE : output;\n}\n\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E \u0441\u0430\u043C\u044B\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 \u043F\u0430\u0442\u0442\u0435\u0440\u043D\nexport function transformDateOrTimeOrTogetherToFormattedLocal(\n data,\n outputFormat = \"HH:mm\",\n additional,\n) {\n const ERROR_VALUE = \"Invalid date\";\n const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;\n\n if (additional && !getIsOnlyAnObject(additional)) {\n throw new Error(\n \"Bad additional [transformDateOrTimeOrTogetherToFormattedLocal]\",\n );\n }\n\n const compositeAdditional = {\n ...(additional || {}),\n isReturnAsMomentInstance: true,\n };\n const date = transformDateOrTimeOrTogetherToFormat(\n data,\n outputFormat,\n compositeAdditional,\n );\n\n const dateWithLocale = date.add(moment().utcOffset(), \"minutes\");\n const output = dateWithLocale.format(outputFormat);\n\n return output === ERROR_VALUE ? ERROR_MESSGE : output;\n}\n\n//\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u043E\u0431\u044C\u0435\u043A\u0442 \u0438 \u043C\u0430\u0441\u0441\u0438\u0432 \u043A\u043B\u044E\u0447\u0435\u0439 \u043E\u0431\u044C\u0435\u043A\u0442\u0430\n//\u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043E\u0431\u044C\u0435\u043A\u0442 \u0441 \u0442\u0435\u043C\u0438 \u043F\u043E\u043B\u044F\u043C\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u043D\u0435\u0442 \u0432 \u043C\u0430\u0441\u0441\u0438\u0432\u0435 \u043A\u043B\u044E\u0447\u0435\u0439\nexport const omitKeys = (obj = {}, keys = []) =>\n keys.reduce((acc, key) => {\n const { [key]: omit, ...rest } = acc;\n return rest;\n }, obj);\n\nexport const logout = () => {\n window.localStorage.removeItem(\"accessToken\");\n window.localStorage.removeItem(\"tokenExpires\");\n window.location.reload();\n};\n\nexport const getStyles = (el, prop) => {\n if (!el) return null;\n if (!prop) return window.getComputedStyle(el);\n return window.getComputedStyle(el).getPropertyValue(prop);\n};\n\nexport const getColorById = (id, colors) => {\n if (!id) return \"#FF7D00\";\n\n const idToArr = Array.from(id);\n const colorsArr = colors && colors.length > 0 ? colors : DEFAULT_COLORS;\n\n let number = idToArr.reduce((acc, item) => {\n if (Number(item)) {\n return acc + Number(item);\n }\n return acc;\n }, 0);\n\n while (number >= colorsArr.length) {\n number -= colorsArr.length;\n }\n\n return colorsArr[number];\n};\n\nexport const debounce = (fn, ms) => {\n let id = null;\n return (...args) => {\n clearTimeout(id);\n id = setTimeout(() => {\n clearTimeout(id);\n fn(...args);\n }, ms);\n };\n};\n\nexport const throttle = (fn, ms) => {\n let id = null;\n return (...args) => {\n if (id) return;\n fn(...args);\n id = setTimeout(() => {\n clearTimeout(id);\n id = null;\n }, ms);\n };\n};\n\nexport const addBitDepthPoints = (value, step = 3) => {\n //\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043B\u0438 value \u0442\u043E\u0447\u043A\u0443\n const isFraction = value?.includes(\".\");\n\n //\u0432\u0437\u044F\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043E \u0442\u043E\u0447\u043A\u0438\n const valueBeforeDot = isFraction\n ? value?.slice(0, value?.indexOf(\".\"))\n : value;\n\n //\u0440\u0430\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0437\u0430\u043F\u044F\u0442\u044B\u0445 \u043F\u043E\u0441\u043B\u0435 \u043A\u0430\u0436\u0434\u043E\u0439 3\u0439 \u0446\u0438\u0444\u0440\u044B \u0441 \u043A\u043E\u043D\u0446\u0430\n const intPart = valueBeforeDot\n .split(\"\")\n .reverse()\n .reduce(\n (acc, item, idx) =>\n idx % step === 0 && idx !== 0 ? [...acc, \",\", item] : [...acc, item],\n [],\n )\n .reverse()\n .join(\"\");\n\n return isFraction ? intPart + value?.slice(value?.indexOf(\".\")) : intPart;\n};\n\nexport const changeMeta = (key, items = []) => {\n const defaultMeta = items.find((i) => i.key === \"default\");\n\n if (key) {\n const item = items.find((i) => i.key === key);\n document.title = item?.title ?? defaultMeta?.title;\n document\n .querySelector('meta[name=\"description\"]')\n .setAttribute(\"content\", item?.description ?? defaultMeta?.description);\n }\n};\n\nexport const firstLetterCapital = (str) =>\n typeof str === \"string\"\n ? `${str.charAt(0).toUpperCase()}${str.slice(1)}`\n : str;\nexport const capitalized = firstLetterCapital;\n\nexport const checkedRef = (ref) =>\n ref ? (typeof ref === \"function\" ? (node) => ref(node) : ref) : null;\n\nexport function downloadEmulation(data, filename, type = \"image/*\") {\n const file = new Blob([data], { type });\n if (window.navigator.msSaveOrOpenBlob)\n // IE10+\n window.navigator.msSaveOrOpenBlob(file, filename);\n else {\n // Others\n const a = document.createElement(\"a\"),\n url = URL.createObjectURL(file);\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n setTimeout(() => {\n document.body.removeChild(a);\n window.URL.revokeObjectURL(url);\n }, 0);\n }\n}\n\nexport const downloadFile = async ({ url, name, type = null }) => {\n const response = await fetch(url).then(async (res) => ({\n data: await res.blob(),\n type: type ?? res.headers.get(\"content-type\"),\n }));\n downloadEmulation(response.data, name, response.type);\n};\n\nexport const compare = (first, second, keys = []) => {\n //? \u0415\u0441\u043B\u0438 \u0442\u0438\u043F\u044B \u041D\u0415 \u0440\u0430\u0432\u043D\u044B - \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0430\u043F\u0440\u0438\u043E\u0440\u0438\n if (typeof first !== typeof second) return false;\n //? \u0415\u0441\u043B\u0438 \u043E\u0442\u0432\u0435\u0442\u044B \u043D\u0430 \u0432\u043E\u043F\u0440\u043E\u0441 \"\u043C\u0430\u0441\u0441\u0438\u0432 \u043B\u0438?\" \u043D\u0435 \u0440\u0430\u0432\u043D\u044B, \u0442\u043E \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0438 \u0442\u0438\u043F\u044B, \u0437\u043D\u0430\u0447\u0438\u0442 \u0442\u043E\u0436\u0435 \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0430\u043F\u0440\u0438\u043E\u0440\u0438\n if (Array.isArray(first) !== Array.isArray(second)) return false;\n //? \u0415\u0441\u043B\u0438 \u043F\u0440\u043E\u0448\u043B\u0438 if-\u043A\u0443 - \u0442\u0438\u043F\u044B \u0443\u0441\u043B\u043E\u0432\u043D\u043E \u0440\u0430\u0432\u043D\u044B, \u043C\u043E\u0436\u0435\u043C \u043E\u0446\u0435\u043D\u0438\u0432\u0430\u0442\u044C \u0442\u0438\u043F \u043B\u0438\u0448\u044C \u043E\u0434\u043D\u043E\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430, \u044D\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u0441\u043F\u0440\u0430\u0432\u0435\u0434\u043B\u0438\u0432\u043E \u0438 \u0434\u043B\u044F \u0432\u0442\u043E\u0440\u043E\u0433\u043E\n\n //? \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B - \u043F\u0440\u043E\u0441\u0442\u043E \u0441\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u043C. \u041A\u0435\u0439\u0441 \u0441 null \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D \u0442\u0443\u0442.\n if (!(first instanceof Object)) return first === second;\n\n //? \u0415\u0441\u043B\u0438 \u041D\u0415 \u043F\u0440\u0438\u043C\u0435\u0442\u0438\u0432\u044B - \u043D\u0435 \u0432\u0430\u0436\u043D\u043E \u043C\u0430\u0441\u0441\u0438\u0432 \u0438\u043B\u0438 \u043D\u0435\u0442, \u043C\u0435\u0442\u043E\u0434\u044B \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0434\u043B\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0442\u043E\u0436\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\n\n const getComparationStructure = (data) => {\n if (typeof data === 'function') return data.toString();\n if (!(data instanceof Object)) return data;\n\n return Object.entries(data)\n .sort((a, b) => (a[0]).localeCompare(b[0]))\n .map(([key, value]) => ([key, getComparationStructure(data[key])]));\n };\n\n //? \u041F\u043E\u043B\u0443\u0447\u0430\u0435\u043C \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0434\u043B\u044F \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044F (\u0441 \u0443\u0447\u0435\u0442\u043E\u043C \u0433\u043B\u0443\u0431\u0438\u043D\u044B) - \u043C\u0430\u0441\u0441\u0438\u0432\u044B \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u0432, \u0441\u043E\u0440\u0442\u0438\u0440\u0443\u0435\u043C \u043F\u043E \u043A\u043B\u044E\u0447\u0430\u043C,\n const structureForComparingOfFirst = getComparationStructure(first);\n const structureForComparingOfSecond = getComparationStructure(second);\n\n return (JSON.stringify(structureForComparingOfFirst) === JSON.stringify(structureForComparingOfSecond));\n};\n\n// Set Carret to the End of Input\nexport const setCarretToEnd = (input) => {\n setTimeout(() => {\n const tmp = input.value;\n input.value = \"\";\n input.value = tmp;\n }, 10);\n};\n\nexport const compareAlphabetical = (a, b, key = \"label\") => {\n let item1 = a?.[key];\n let item2 = b?.[key];\n\n if (typeof item1 !== \"string\" || typeof item2 !== \"string\") return 0;\n\n item1 = item1?.toLowerCase();\n item2 = item2?.toLowerCase();\n\n if (item1 < item2) {\n return -1;\n }\n if (item1 > item2) {\n return 1;\n }\n return 0;\n};\n\nexport const getBase64 = (file) => {\n if (file) {\n return new Promise(function (resolve, reject) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(\"Error: \", error);\n });\n }\n};\n\nexport const renderFileSize = (bytes, decimals = 2) => {\n if (!Number(bytes)) return \"0 Bytes\";\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n};\n\nexport const getUniqueFileExtensions = (extListString) => {\n // Split the extensions list into an array\n const extArray = extListString\n ?.split(\",\")\n .map((ext) => ext.trim().toUpperCase());\n\n // Remove duplicates using a Set\n const uniqueExts = [...new Set(extArray)];\n\n // Join the unique extensions into a string\n return uniqueExts.join(\", \");\n};\n\nexport const getOS = () => {\n let userAgent = window.navigator.userAgent,\n platform =\n window.navigator?.userAgentData?.platform || window.navigator.platform,\n macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"],\n windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"],\n iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"],\n os = OS.Unknown;\n\n if (macosPlatforms.indexOf(platform) !== -1) {\n os = OS.MacOS;\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n os = OS.iOS;\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n os = OS.Windows;\n } else if (/Android/.test(userAgent)) {\n os = OS.Android;\n } else if (/Linux/.test(platform)) {\n os = OS.Linux;\n }\n\n return os;\n};\n\n\nString.prototype.longerThan = function (compareWith) {\n return this?.length > compareWith?.length;\n};\nString.prototype.lastIndexEqualsTo = function (index) {\n return this?.length - 1 === index;\n};\n\nexport const getCorrectTestId = ({ testId = \"\", withTier = true }) =>\n testId && testId !== undefined ? `${withTier ? \"-\" : \"\"}${testId}` : \"\";\n\n\n", "import { getIsOnlyAnObject } from \"./utils\";\n\n//? The first word \"format\" in the function name means a logic\n//? in which the function transforms the incoming value in any case.\n\n//? The first word \"transform\" in the function name means a logic\n//? in which the function converts the whole value, but this is not suitable for sequential input\n\n//? The first word \"filter\" in the function name means a logic\n//? in which the function works as a changer for sequential input\n\n// ****************************\n// Base utils\n// ****************************\n\nexport const getSafelyValue = (value) =>\n value !== undefined && value !== null ? value?.toString?.() || \"\" : \"\";\n\n// \u0431\u0430\u0437\u043E\u0432\u0430\u044F \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\nexport const intlNumbersFormatter = (inputValue, settings = {}) => {\n const safelyInputValue = getSafelyValue(inputValue);\n const previousValue = safelyInputValue.slice(0, -1);\n const lastSym = safelyInputValue.slice(-1);\n const value = lastSym === \".\" ? previousValue : safelyInputValue;\n\n if (Number.isNaN(Number(value)) || !getSafelyValue(value)) return \"\";\n\n const {\n // \u043B\u043E\u043A\u0430\u043B\u044C, \u0434\u0430\u0436\u0435 \u0440\u0435\u0433\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u0430\u044F, \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0437\u043D\u0430\u043A\u043E\u0432 \u0438 \u0444\u043E\u0440\u043C\u0430\u0442\u0430.\n locale = \"en-US\",\n // percent || currency(default case) || decimal(\u043F\u0440\u043E\u0441\u0442\u043E \u0447\u0438\u0441\u043B\u043E) \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0422\u0418\u041F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438.\n withSymbol,\n //\u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0430 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438 \u043F\u043E\u0440\u0430\u0437\u0440\u044F\u0434\u043D\u043E.\n useGrouping = true,\n //!!\u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 withSymbol: 'currency' !! \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0442\u043E, \u043A\u0430\u043A \u0438\u043C\u0435\u043D\u043D\u043E \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0433\u043B\u044F\u0434\u0435\u0442 \u0444\u043E\u0440\u043C\u0430\u0442 \u0432\u0430\u043B\u044E\u0442\u044B.\n currency = {},\n //\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0437\u043D\u0430\u043A\u043E\u0432 \u043F\u043E\u0441\u043B\u0435 \u0442\u043E\u0447\u043A\u0438, \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043B\u0438 \u043E\u043D\u0438 \u0431\u0443\u0434\u0443\u0442.\n // !!\u0435\u0441\u043B\u0438 \u043F\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C isAlwaysRender: true, \u043D\u043E \u043D\u0435 \u0434\u0430\u0442\u044C \u0446\u0435\u043D\u0442\u043E\u0432, \u0442\u043E \u0431\u0443\u0434\u0435\u0442 100.00\n fractionDigits = {},\n } = settings;\n\n const { currencyType = \"USD\", currencyDisplay: inputCurrencyDisplay } =\n currency;\n\n let currencyDisplay;\n switch (inputCurrencyDisplay) {\n case \"name\":\n currencyDisplay = \"name\";\n break;\n case \"code\":\n currencyDisplay = \"code\";\n break;\n case \"narrowSymbol\":\n currencyDisplay = \"narrowSymbol\";\n break;\n default:\n currencyDisplay = \"symbol\";\n }\n\n let numberStyle;\n switch (withSymbol) {\n case \"percent\":\n numberStyle = \"percent\";\n break;\n case \"currency\":\n numberStyle = \"currency\";\n break;\n default:\n numberStyle = \"decimal\";\n break;\n }\n\n const {\n quantity,\n isRenderAlways = false,\n minimumFractionDigits: inputMinimumFractionDigits,\n maximumFractionDigits: inputMaximumFractionDigits,\n conditionallyMinimumFractionDigits,\n } = fractionDigits;\n\n const dotIndex = safelyInputValue?.indexOf(\".\");\n const afterDot = dotIndex !== -1 ? safelyInputValue.slice(dotIndex + 1) : \"\";\n const minimumFractionDigits = (() => {\n //? \u0411\u0435\u0437\u0443\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E. \u0412\u0441\u0435\u0433\u0434\u0430 \u043E\u0442\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 \u0434\u0440\u043E\u0431\u043D\u0443\u044E \u0447\u0430\u0441\u0442\u044C, \u0432 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0443\u043A\u0430\u0437\u0430\u043D\u043E\n if (typeof inputMinimumFractionDigits === \"number\")\n return inputMinimumFractionDigits;\n //? \u0423\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E. \u0415\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u0434\u0440\u043E\u0431\u043D\u0430\u044F \u0447\u0430\u0441\u0442\u044C, \u0442\u043E \u043E\u0442\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0443\u043A\u0430\u0437\u0430\u043D\u043E\n if (typeof conditionallyMinimumFractionDigits === \"number\") {\n return afterDot && lastSym !== \".\"\n ? conditionallyMinimumFractionDigits\n : 0;\n }\n //? \u0414\u0435\u0444\u043E\u043B\u0442\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E. \u0415\u0441\u043B\u0438 \u0435\u0441\u0442\u044C \u0434\u0440\u043E\u0431\u043D\u0430\u044F \u0447\u0430\u0441\u0442\u044C, \u0442\u043E \u043E\u0442\u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0441\u0442\u043E\u043B\u044C\u043A\u043E, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0435\u0441\u0442\u044C\n //? \u0424\u043B\u0430\u0433 isRenderAlways \u043F\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u0435\u0444\u043E\u043B\u0442\u043D\u044B\u0439 \u043A\u0435\u0439\u0441 \u0432 \u0431\u0435\u0437\u0443\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\n return afterDot && lastSym !== \".\"\n ? safelyInputValue.slice(dotIndex).length - 1\n : isRenderAlways\n ? quantity\n : 0;\n })();\n\n const priceSettings = {\n useGrouping, //\u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0430 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432\n style: numberStyle, //\u0442\u0438\u043F \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F (\u0432\u0430\u043B\u044E\u0442\u0430 \u0438\u043B\u0438 \u0447\u0438\u0441\u043B\u043E). decimal - \u0431\u0435\u0437 \u0437\u043D\u0430\u043A\u0430 \u0432\u0430\u043B\u044E\u0442\u044B\n currency: currencyType, //\u0432\u0430\u043B\u044E\u0442\u0430\n currencyDisplay, //\u0432\u0430\u043B\u044E\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u0430\n //\u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E \u043D\u0435 \u043D\u0430\u0434\u043E \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0446\u0435\u043D\u0442\u044B, \u0435\u0441\u043B\u0438 \u0438\u0445 \u043D\u0435\u0442, \u0438\u043D\u0430\u0447\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 .00\n minimumFractionDigits,\n //! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n //! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 (inputMaximumFractionDigits ?? quantity) - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\n //\u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C 2 \u0446\u0438\u0444\u0440\u044B \u043F\u043E\u0441\u043B\u0435 \u0437\u0430\u043F\u044F\u0442\u043E\u0439, \u0435\u0441\u043B\u0438 \u0446\u0435\u043D\u0442\u044B \u0432\u0441\u0451 \u0436\u0435 \u0435\u0441\u0442\u044C\n maximumFractionDigits: inputMaximumFractionDigits ?? quantity,\n };\n\n let output;\n\n try {\n output = new Intl.NumberFormat(locale, priceSettings).format(value);\n } catch (e) {\n output = value;\n // eslint-disable-next-line no-console\n console.warn(\"Intl.NumberFormat error\", e);\n }\n return lastSym === \".\" ? output + lastSym : output;\n};\n\n// ****************************\n// format\n// ****************************\n\nexport const formatOnlyNumbers = (value) =>\n getSafelyValue(value).replace(/\\D/g, \"\");\nexport const formatToRemoveComa = (value) =>\n getSafelyValue(value).replace(/,/g, \"\");\nexport const formatToAddBitDepthPoints = (value, settings) =>\n intlNumbersFormatter(getSafelyValue(value), {\n fractionDigits: {\n quantity: settings?.type === \"int\" ? 0 : settings?.decimalPlaces,\n },\n });\n\n//! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n//! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 quantity - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\nexport const formatToPriceWithUSD = (value) => {\n if (isNaN(Number(value))) return value;\n return intlNumbersFormatter(getSafelyValue(value), {\n withSymbol: \"currency\",\n currency: { currencyType: \"USD\" },\n fractionDigits: { quantity: 2, conditionallyMinimumFractionDigits: 2 },\n });\n};\n\n//! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n//! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 quantity - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\n\n// ToDo - symbolPosition \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435 \u0440\u0435\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043E\nexport const formatToPriceWithCurrency = (\n value,\n currencyCode,\n symbolPosition = \"before\",\n) => {\n if (isNaN(Number(value))) return value;\n return intlNumbersFormatter(getSafelyValue(value), {\n withSymbol: \"currency\",\n currency: { currencyType: currencyCode },\n fractionDigits: { quantity: 2, conditionallyMinimumFractionDigits: 2 },\n });\n};\n\n//? \u0414\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 \u0432 \u043A\u043E\u043D\u0435\u0446 \u0437\u043D\u0430\u043A %. \u0420\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043A\u0430\u043A \u0441 \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u043C\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F\u043C\u0438, \u0442\u0430\u043A \u0438 \u0441 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0430\u043C\u0438.\n\n//? value \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043B\u044E\u0431\u043E\u0435, \u043D\u043E \u043E\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044F \u0447\u0442\u043E \u0431\u0443\u0434\u0435\u0442\n//? - \u0447\u0438\u0441\u043B\u043E\u043C\n//? - \u0441\u0442\u0440\u043E\u043A\u043E\u0439 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\"\n//? - \u0441\u0442\u0440\u043E\u043A\u043E\u0439 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" (\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435_\u043F\u0440\u043E\u0431\u0435\u043B_\u0442\u0438\u0440\u0435_\u043F\u0440\u043E\u0431\u0435\u043B_\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435)\n//? - \u043E\u0431\u044A\u0435\u043A\u0442 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 { from: \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435, to: \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 }\n\n//? \u041F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u043E \u043A \u0447\u0438\u0441\u043B\u0443 \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440\u043C + (\u043F\u0440\u0438\u043C\u0435\u0440: +\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442\u0441\u044F \u043A \u0447\u0438\u0441\u043B\u0443).\n//? \u0415\u0441\u043B\u0438 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u043E, \u0442\u043E \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" \u0432\u0435\u0440\u043D\u0435\u0442\u0441\u044F \u043A\u0430\u043A \u0435\u0441\u0442\u044C, \u043A \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0443 \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u0441\u044F %\n\n//? \u0415\u0441\u043B\u0438 \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\" \u043F\u0443\u0441\u0442\u043E\u0435 (getSafelyValue(\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435) \u0432\u0435\u0440\u043D\u0435\u0442 \u043F\u0443\u0441\u0442\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443),\n//? \u0442\u043E \u044D\u0442\u043E \u0432\u043E\u0441\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u043A\u0430\u043A 0, \u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442\u0441\u044F \u043A 0.00%\n\n//? \u041E\u0434\u0438\u043D\u043E\u043A\u043E\u0432\u043E \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043A\u0430\u043A \u0434\u043B\u044F \".\", \u0442\u0430\u043A \u0438 \",\" \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044F \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432\n\n//! \u0412\u0430\u0436\u043D\u043E! \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432\u0435\u043B\u044C\u044E \u0441 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0434\u0440\u043E\u0431\u043D\u044B\u0445 \u0440\u0430\u0437\u0440\u044F\u0434\u043E\u0432 \u0411\u041E\u041B\u042C\u0428\u0418\u041C\n//! \u0447\u0435\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0432 decimalPlaces - \u043E\u043A\u0440\u0443\u0433\u043B\u0438\u0442 \u043F\u043E \u043F\u0440\u0430\u0432\u0438\u043B\u0430\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u044F\n\nexport const formatAsPercentage = (value, settings) => {\n const {\n isCommonPercentageSymbol = true,\n decimalPlaces = 2,\n beforeValueSymbol = \"\",\n afterValueSymbol = \"\",\n isGlueSameRangesTogether = false,\n\n // ? \u0422\u0443\u0442 \u0443\u0434\u043E\u0431\u043D\u044B\u0439 \u0444-\u043B, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0438\u043D\u043E\u0439 \u0440\u0430\u0437 \u0443\u0434\u043E\u0431\u043D\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u043E\u0431\u044B\u0447\u043D\u044B\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u0430\u043D (\u041D\u0415 \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u044B).\n // ? \u0414\u043E\u0431\u0430\u0432\u0438\u043B \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u0432\u044B\u043F\u0438\u043B\u0438\u0432\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u0435\u043A \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u043E\u0432.\n // todo(VL) - \u0432\u043E\u043E\u0431\u0449\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u043E \u0437\u0430\u0440\u0435\u043D\u0435\u0439\u043C\u0438\u0442\u044C (formatAsDiapason), \u0430 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u043E\u0432 \u0441\u0434\u0435\u043B\u0430\u0442\u044C \u043A\u0430\u043A \u043E\u043F\u0446\u0438\u044E,\n // todo(VL) - \u043D\u043E \u043A\u0430\u043A \u043E\u0431\u044B\u0447\u043D\u043E \u043D\u0435\u0442 \u0432\u0440\u0435\u043C\u0435\u043D\u0438, \u043D\u0443\u0436\u043D\u043E \u0431\u0443\u0434\u0435\u0442 \u043F\u0435\u0440\u0435\u0447\u0435\u043A\u0430\u0442\u044C \u043F\u043E \u0432\u0441\u0435\u043C \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u043C \u0433\u0434\u0435 \u0442\u044F\u043D\u0435\u0442\u0441\u044F \u0441\u043E \u0441\u0442\u0430\u0440\u044B\u043C \u043D\u0435\u0439\u043C\u0438\u043D\u0433\u043E\u043C\n isUseAsSimpleDiapason = false,\n } = getIsOnlyAnObject(settings) ? settings : {};\n let safelyInputValue;\n\n const checkValue = (value) => getSafelyValue(value) || \"0\";\n\n const transform = (valueAsSting) => {\n const processedValue = valueAsSting.replace(/,/g, \".\");\n if (Number.isNaN(Number(processedValue))) return processedValue;\n return `${intlNumbersFormatter(getSafelyValue(Number(processedValue)), {\n fractionDigits: {\n quantity: decimalPlaces,\n minimumFractionDigits: decimalPlaces,\n },\n })}`;\n };\n\n if (getIsOnlyAnObject(value)) {\n safelyInputValue = {\n from: checkValue(value.from),\n to: checkValue(value.to),\n };\n } else {\n safelyInputValue = checkValue(value);\n\n if (safelyInputValue.includes(\" - \")) {\n const valuesArr = safelyInputValue\n .split(\" - \")\n .map((partOfValue) => partOfValue.trim());\n safelyInputValue = {\n from: checkValue(valuesArr[0]),\n to: checkValue(valuesArr[1]),\n };\n } else {\n // \u0412\u0430\u0440\u0438\u0430\u043D\u0442 \u043A\u043E\u0433\u0434\u0430 \u0432\u0435\u043B\u044C\u044E \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043E \u0441\u0442\u0440\u043E\u043A\u043E\u0439 (\u041D\u0415 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C) \u0438 \u043E\u043D\u043E \u043D\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0435\u043F\u0430\u0440\u0430\u0442\u043E\u0440\u0430 \" - \"\n // - \u043E\u0434\u0438\u043D\u043E\u0447\u043D\u044B\u0435 \u0432\u0435\u043B\u044C\u044E\n // - \u043D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\n return `${beforeValueSymbol}${transform(safelyInputValue)}${afterValueSymbol}${isUseAsSimpleDiapason ? '' : '%'}`;\n }\n }\n\n if (safelyInputValue.from === safelyInputValue.to && !!isGlueSameRangesTogether) {\n return `${beforeValueSymbol}${transform(safelyInputValue.from)}${afterValueSymbol}${isUseAsSimpleDiapason ? '' : '%'}`;\n }\n\n if (isCommonPercentageSymbol)\n return `${beforeValueSymbol}${transform(safelyInputValue.from)} - ${transform(\n safelyInputValue.to,\n )}${afterValueSymbol}${isUseAsSimpleDiapason ? '' : '%'}`;\n else\n return `${beforeValueSymbol}${transform(safelyInputValue.from)}${isUseAsSimpleDiapason ? '' : '%'} - ${transform(\n safelyInputValue.to,\n )}${isUseAsSimpleDiapason ? '' : '%'}${afterValueSymbol}`;\n};\n\n// eslint-disable-next-line no-control-regex\nexport const formatToOnlyASCIICodeText = (text) =>\n getSafelyValue(text).replace(/[^\\x00-\\x7F]+/g, \"\");\n\n// eslint-disable-next-line default-param-last\nexport const formatNumberValueToMask = (inputValue, settings) => {\n const safelyInputValue = getSafelyValue(inputValue);\n\n // default valueSymbol === 'n', default mask === 'nnn-nnn-nnnn'\n const {\n mask = \"XXX-XXX-XXXX\",\n valueSymbol = \"X\",\n isReturnAdvanced = false,\n } = settings || {};\n const processing = mask.split(\"\").reduce(\n (acc, item) => {\n if (acc.value.length) ++acc.cursorPosition;\n acc.newValue.push(\n item === valueSymbol && acc.value.length ? acc.value.shift() : item,\n );\n return acc;\n },\n {\n value: safelyInputValue.split(\"\").filter((sym) => /[0-9]/g.test(sym)),\n newValue: [],\n cursorPosition: 0,\n },\n );\n\n return isReturnAdvanced\n ? {\n value: processing.newValue.join(\"\"),\n cursorPosition: processing.cursorPosition,\n }\n : processing.newValue.join(\"\");\n};\n\nexport const formatToLimitLength = (inputValue, limit) => {\n const value = getSafelyValue(inputValue);\n return limit &&\n typeof limit === \"number\" &&\n !Number.isNaN(limit) &&\n value?.length > limit\n ? value.substr(0, limit)\n : value;\n};\n\nexport const formatToHex = ({ inputValue, withSharp }) => {\n const value = getSafelyValue(inputValue);\n if (withSharp) return `#${value.replace(/[^a-f0-9]/gi, \"\")}`;\n\n return `${value.replace(/[^#a-f0-9]/gi, \"\")}`;\n};\n\nexport function formatToReplaceAllWhiteSpace(str) {\n const value = getSafelyValue(str);\n return value.replace(/\\s+/g, \"\");\n}\n\n// ****************************\n// transform\n// ****************************\n\n// ...\n\n// ****************************\n// filter\n// ****************************\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0432\u044B\u043F\u0438\u043B\u0438\u043B \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0434\u0435\u0444\u043E\u043B\u0442\u043D\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0430 \u0443\u0440\u043E\u0432\u043D\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432, \u0447\u0442\u043E\u0431\u044B \u0441\u0434\u0435\u043B\u0430\u0442\u044C null \u0440\u0430\u0431\u043E\u0447\u0438\u043C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C\n//? decimalPlaces === null \u0442\u0435\u043F\u0435\u0440\u044C \u0442\u043E\u0447\u043D\u043E \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u0440\u0435\u0436\u0438\u043C \u0432\u0432\u043E\u0434\u0430 \u0411\u0415\u0417 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u0439 \u0434\u0435\u0441\u044F\u0442\u0438\u0447\u043D\u044B\u0445 \u0437\u043D\u0430\u043A\u043E\u0432\nexport const filterFloat = (inputValue, decimalPlaces) => {\n const replaser = input => ('' + input).replace(/[^\\.\\d]/g, '');\n const value = getSafelyValue(inputValue);\n \n //? safelyDecimalPlaces \u0422\u041E\u0427\u041D\u041E \u043B\u0438\u0431\u043E null, \u043B\u0438\u0431\u043E \u0446\u0435\u043B\u043E\u0435 \u0447\u0438\u0441\u043B\u043E\n const safelyDecimalPlaces = (() => {\n if (decimalPlaces === null) return decimalPlaces;\n\n const DEFAULT_VALUE = 2;\n const isNumber = typeof decimalPlaces === 'number' || (typeof decimalPlaces === 'string' && !Number.isNaN(+decimalPlaces));\n\n //? \u0437\u0430\u0449\u0438\u0442\u0430 \u043E\u0442 \u0434\u0440\u043E\u0431\u043D\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F decimalPlaces\n return isNumber ? Number((+decimalPlaces).toFixed()) : DEFAULT_VALUE;\n })();\n\n // \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043A\u0435\u0439\u0441\u0430 \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0432\u044B\u043C \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u043C \u043D\u0430\u0436\u0430\u0442\u0430 \u0442\u043E\u0447\u043A\u0430\n if (value.length === 1 && (value[0] === '.' || value[0] === ',')) return '0.';\n\n // \u041F\u0440\u0438\u0432\u043E\u0434\u0438\u043C \u0437\u0430\u043F\u044F\u0442\u044B\u0435 \u043A \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u043C\u0443 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044E, \u043D\u043E \u043D\u0435 \u0432\u044B\u043F\u0438\u043B\u0438\u0432\u0430\u0435\u043C\n let output = ('' + value)?.replace(/,/g, '.');\n\n // \u0412\u044B\u043F\u0438\u043B\u0438\u0442\u044C \u043F\u0435\u0440\u0432\u044B\u0439 \u043D\u043E\u043B\u044C, \u0435\u0441\u043B\u0438 \u044D\u0442\u043E \u043D\u0435 \u0434\u0440\u043E\u0431\u044C\n if (value.length > 1 && value[0] === '0' && value[1] !== '.' && value[0] !== ',') output = value.slice(1);\n\n const previousValue = '' + output.slice(0, -1);\n const lastSym = '' + output.slice(-1);\n\n // \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043A\u0435\u0439\u0441\u0430 \u0432\u0442\u043E\u0440\u043E\u0439 \u0442\u043E\u0447\u043A\u0438 \u0432 \u0434\u0440\u043E\u0431\u0438\n if (lastSym === '.' && previousValue.includes('.')) output = previousValue;\n\n // if (localStorage.getItem('useDeb')) debugger;\n\n // \u041B\u043E\u0433\u0438\u043A\u0430 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u044F \u043F\u043E decimalPlaces\n if (typeof safelyDecimalPlaces === 'number') {\n if (!safelyDecimalPlaces && lastSym === '.') return replaser(previousValue);\n if (previousValue.includes('.') && (previousValue.indexOf('.') + 1 + safelyDecimalPlaces === previousValue?.length)) {\n return replaser(previousValue);\n }\n }\n\n return replaser(output);\n};\n\nexport const filterNumeric = (value, settings) => {\n value = getSafelyValue(value)?.replace(/,/g, \"\");\n const { type = \"float\", decimalPlaces } = settings || {};\n\n const executor = type === \"float\" ? filterFloat : formatOnlyNumbers;\n return executor(getSafelyValue(value), decimalPlaces);\n};\n\nexport const formatToHideValuePartially = (value, settings) => {\n const {\n showSymbolsCount = 4,\n isVisibleFromFront = false,\n isCutOutWhiteSpaces = true,\n } = settings || {};\n const safelyValue = getSafelyValue(value);\n\n const newValue = isCutOutWhiteSpaces\n ? safelyValue.replace(/\\s/g, \"\")\n : safelyValue;\n if (newValue.length <= showSymbolsCount) return newValue;\n\n const hide = (val) =>\n val\n .split(\"\")\n .map(() => \"*\")\n .join(\"\");\n const visiblePart = isVisibleFromFront\n ? newValue.slice(0, showSymbolsCount)\n : newValue.slice(-1 * showSymbolsCount);\n const hiddenPart = isVisibleFromFront\n ? newValue.slice(showSymbolsCount)\n : newValue.slice(0, -1 * showSymbolsCount);\n\n return isVisibleFromFront\n ? `${visiblePart}${hide(hiddenPart)}`\n : `${hide(hiddenPart)}${visiblePart}`;\n};\n", "import { getSafelyValue } from \"../fieldValueFormatters\";\n\nexport const NAME_SYMBOLS_EXCLUDER = {\n /**\n * @name fieldChangesMiddleware\n * @description \u041E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442 \u0432\u0445\u043E\u0434\u044F\u0449\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443, \u0443\u0434\u0430\u043B\u044F\u0435\u0442 \u0432\u0441\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u044E\u0442\u0441\u044F\n * \u0430\u043B\u0444\u0430\u0432\u0438\u0442\u043D\u044B\u043C\u0438, \u0434\u0435\u0444\u0438\u0441\u0430\u043C\u0438, \u0430\u043F\u043E\u0441\u0442\u0440\u043E\u0444\u0430\u043C\u0438 \u0438\u043B\u0438 \u043F\u0440\u043E\u0431\u0435\u043B\u0430\u043C\u0438. \u041D\u0435 \u0434\u0430\u0435\u0442 \u0432\u0432\u0435\u0441\u0442\u0438 \u0434\u0443\u0431\u043B\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0434\u0435\u0444\u0438\u0441\u0430 \u0438\u043B\u0438 \u0430\u043F\u043E\u0441\u0442\u0440\u043E\u0444\u0430.\n * \u0420\u0435\u0436\u0435\u0442 \u0441\u043F\u0435\u0446\u0441\u0438\u043C\u0432\u043E\u043B\u044B, \u0435\u0441\u043B\u0438 \u043F\u043E\u0441\u043B\u0435 \u043D\u0438\u0445 \u043D\u0435 \u0438\u0434\u0435\u0442 \u0431\u0443\u043A\u0432\u0430.\n *\n * @param {string} value - \u0412\u0445\u043E\u0434\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438.\n * @returns {string} - \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430.\n */\n fieldChangesMiddleware: (value) => {\n // remove invalid characters\n const invalidCharacters = new RegExp(/[^a-zA-Z-\\s']/g);\n // handle any two '-' or ''' should not be side by side\n const sideBySideHyphenOrApostrophe = new RegExp(/['-]{2,}/g);\n // replace sequence of spaces with single space\n const multipleSpaces = new RegExp(/\\s{2,}/g);\n // remove '-' or ''' if they are followed by a space\n const beforeSpace = new RegExp(/['-](?=\\s)/g);\n\n const sanitizedValue = getSafelyValue(value)\n .replace(invalidCharacters, \"\")\n .replace(sideBySideHyphenOrApostrophe, \"\")\n .replace(multipleSpaces, \" \")\n .replace(beforeSpace, \"\");\n\n return sanitizedValue;\n },\n blurTrim: {\n trimStart: true,\n trimEnd: true,\n characters: [\"-\", \"'\", \" \"],\n },\n};\n\nexport const ONLY_STRING_AND_DASH = {\n /**\n * @name fieldChangesMiddleware\n * @description \u041E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442 \u0432\u0445\u043E\u0434\u043D\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443, \u0443\u0434\u0430\u043B\u044F\u0435\u0442 \u0432\u0441\u0435 \u043D\u0435\u0430\u043B\u0444\u0430\u0432\u0438\u0442\u043D\u044B\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B, \u0437\u0430\u043C\u0435\u043D\u044F\u0435\u0442 \u0434\u0432\u043E\u0439\u043D\u044B\u0435 \u0434\u0435\u0444\u0438\u0441\u044B \u043D\u0430 \u043E\u0434\u0438\u043D\u0430\u0440\u043D\u044B\u0435\n * \u0438 \u0443\u0434\u0430\u043B\u044F\u0435\u0442 \u0432\u0441\u0435 \u0434\u0435\u0444\u0438\u0441\u044B \u0432 \u043D\u0430\u0447\u0430\u043B\u0435 \u0438\u043B\u0438 \u043A\u043E\u043D\u0446\u0435 \u0441\u0442\u0440\u043E\u043A\u0438.\n * @param {string} value - \u0432\u0445\u043E\u0434\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438\n * @returns {string} \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430\n */\n fieldChangesMiddleware: (value) => {\n const nonAlphabeticAndNotSingleDash = new RegExp(/[^a-zA-Z-]|--/gi);\n const consecutiveDashes = new RegExp(/-+/g);\n\n const sanitizedInput = getSafelyValue(value);\n\n return sanitizedInput\n .replace(nonAlphabeticAndNotSingleDash, \"\")\n .replace(consecutiveDashes, \"-\");\n },\n};\nexport const INPUT_PRESETS = {\n NAME_SYMBOLS_EXCLUDER,\n ONLY_STRING_AND_DASH,\n};\n", "//? \u0423\u0434\u043E\u0431\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0434\u043B\u044F \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043E\u0432\nexport const ALL_KEYBOARD_TYPES = {\n numeric: { inputMode: \"decimal\" },\n email: { inputMode: \"email\" },\n};\n\n//? \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440:\n/*\n const constructor = [\n ...\n {\n key: 'someField',\n ...\n attributesOfNativeInput: {\n 'data-testId': `someFieldTestId-${someId}`,\n ...ALL_KEYBOARD_TYPES.numeric\n }\n }\n ...\n ];\n\n*/\n\n// *****************************\n//? \u0423\u0434\u043E\u0431\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0434\u043B\u044F \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0444\u0438\u043B\u0434\u0430, \u0435\u0441\u043B\u0438 \u0432 \u0444\u0438\u043B\u0434\u0435 \u0431\u043E\u043B\u0435\u0435 \u043D\u0435 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044B\n//? \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440:\n/*\n const constructor = [\n ...\n {\n key: 'someField',\n ...NUMERIC_KEYBOARD\n ...\n }\n ...\n ];\n\n*/\n\nexport const NUMERIC_KEYBOARD = {\n attributesOfNativeInput: ALL_KEYBOARD_TYPES.numeric,\n};\nexport const EMAIL_KEYBOARD = {\n attributesOfNativeInput: ALL_KEYBOARD_TYPES.email,\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": [
|
|
3
|
+
"sources": ["../src/Atomic/FormElements/InputMask3/config.ts", "../src/Atomic/FormElements/InputMask3/functions.ts", "../src/Functions/presets/inputMaskPresets.js", "../src/Functions/fieldValueFormatters.js", "../src/Functions/presets/inputPresets.js", "../src/Functions/presets/mobileKeyboardTypesPresets.js"],
|
|
4
|
+
"sourcesContent": ["import type { IInputMask3Errors } from './InputMask3.interface';\n\nexport const DEFAULT_ERRORS: IInputMask3Errors = {\n onlyLetter: 'Type letter',\n onlyDigit: 'Type digit',\n onlyUpperCase: 'Type letter in UpperCase',\n onlyLowerCase: 'Type letter in LowerCase',\n default: null,\n}\nexport const UPPERCASE_LETTER_MASK_CHAR: string = 'L';\nexport const LOWERCASE_LETTER_MASK_CHAR: string = 'l';\nexport const DIGIT_MASK_CHAR: string = 'D';\nexport const SPACE_CHAR: string = '\\u00A0';\nexport const ANDROID_CHROME_TEXT_CODE: number = 229;\nexport const EXCLUDED_KEYS: string[] = ['Tab'];\n", "import { DIGIT_MASK_CHAR, LOWERCASE_LETTER_MASK_CHAR, UPPERCASE_LETTER_MASK_CHAR } from './config';\n\nexport function getSelectionText(): string {\n let text = '';\n if (window.getSelection) {\n text = window.getSelection()?.toString() ?? '';\n }\n else if (document.getSelection() && document.getSelection()?.type !== 'Control') {\n text = document.getSelection()?.toString() ?? '';\n }\n\n return text?.replace(/\\n/g, '');\n}\nexport function resetSelectionText(): void {\n if (window.getSelection) {\n window.getSelection()?.removeAllRanges();\n }\n}\nexport function copyToClipboard(str: string): Promise<void> {\n if (navigator && navigator.clipboard && navigator.clipboard.writeText)\n return navigator.clipboard.writeText(str);\n\n return Promise.reject('The Clipboard API is not available.');\n}\nexport function selectElementContents(el: Node): void {\n const sel = window.getSelection();\n sel?.selectAllChildren(el);\n}\n\nexport function isLetter(char: string): boolean {\n return Boolean(char?.length === 1 && char?.match(/[a-z]/i));\n}\nexport function isUpperCaseLetter(char: string): boolean {\n return isLetter(char) ? char === char.slice().toUpperCase() : false;\n}\nexport function isLowerCaseLetter(char: string): boolean {\n return isLetter(char) ? char === char.slice().toLowerCase() : false;\n}\nexport function isDigit(char: string): boolean {\n return Boolean(Number.isInteger(Number.parseInt(char, 10)));\n}\n\nexport function isDigitMaskChar(char: string): boolean {\n return char === DIGIT_MASK_CHAR;\n}\nexport function isLetterMaskChar(char: string): boolean {\n return (\n char === UPPERCASE_LETTER_MASK_CHAR || char === LOWERCASE_LETTER_MASK_CHAR\n );\n}\n\nexport function voidFn(): void {\n console.error('Void Function Called');\n}\n", "/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DD.DD.DDDD',\n * @param maskPatternPlaceholder: 'MM.DD.YYYY',\n * @param usePatternPlaceholder: true,\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param autocomplete: 'bday',\n * @param focusSelector: 'input',\n */\nconst DATE_PRESET = {\n type: \"inputMask\",\n maskPattern: \"DD.DD.DDDD\",\n maskPatternPlaceholder: \"MM.DD.YYYY\",\n usePatternPlaceholder: true,\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n autocomplete: \"bday\",\n focusSelector: \"input\",\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param focusSelector: 'input',\n * @param autocomplete: 'postal-code',\n * @param rules: 'fieldZip'\n */\nconst ZIP_PRESET = {\n type: \"inputMask\",\n focusSelector: \"input\",\n maskPattern: \"DDDDD\",\n maskPlaceholder: \"X\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n autocomplete: \"postal-code\",\n rules: \"fieldZip\",\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDDDDDDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param focusSelector: 'input',\n */\nconst SSN_PRESET = {\n type: \"inputMask\",\n maskPattern: \"DDDDDDDDD\",\n maskPlaceholder: \"X\",\n focusSelector: \"input\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDD-DDD-DDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param focusSelector: 'input',\n * @param autocomplete: 'tel-national',\n */\nconst MOBILE_PHONE_PRESET = {\n type: \"inputMask\",\n // maskPattern: 'DDD-DDD-DDDD',\n maskPattern: \"(DDD) DDD-DDDD\",\n maskPlaceholder: \"X\",\n focusSelector: \"input\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n autocomplete: \"tel-national\",\n};\n\n/**\n * @param type: 'inputMask3',\n * @param maskPattern: 'DDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n */\nconst SHORT_SSN_PRESET = {\n type: \"inputMask3\",\n maskPattern: \"DDDD\",\n maskPlaceholder: \"X\",\n focusSelector: \"input\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDDDDDDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n */\nconst ABA_PRESET = {\n type: \"inputMask\",\n maskPattern: \"DDDDDDDDD\",\n maskPlaceholder: \"X\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'MM/YY',\n * @param maskPatternPlaceholder: 'MM/YY',\n * @param usePatternPlaceholder: true,\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n * @param focusSelector: 'input',\n */\nconst CC_EXPIRATION_DATE = {\n type: \"inputMask\",\n maskPattern: \"MM/YY\",\n maskPatternPlaceholder: \"MM/YY\",\n usePatternPlaceholder: true,\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n focusSelector: \"input\",\n};\n\n/**\n * @param type: 'inputMask',\n * @param maskPattern: 'DDDDDDDDDD',\n * @param maskPlaceholder: 'X',\n * @param isNumericMobileKeyboard: true,\n * @param blinkErrors: true,\n * @param showErrors: false,\n */\nconst BANK_ACCOUNT = {\n type: \"inputMask\",\n maskPattern: \"DDDDDDDDDD\",\n maskPlaceholder: \"X\",\n isNumericMobileKeyboard: true,\n blinkErrors: true,\n showErrors: false,\n};\n\nexport const MASK_PRESETS = {\n BANK_ACCOUNT,\n CC_EXPIRATION_DATE,\n DATE_PRESET,\n ZIP_PRESET,\n SSN_PRESET,\n MOBILE_PHONE_PRESET,\n SHORT_SSN_PRESET,\n ABA_PRESET,\n};\n", "import { 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 { getSafelyValue } from \"../fieldValueFormatters\";\n\nexport const NAME_SYMBOLS_EXCLUDER = {\n /**\n * @name fieldChangesMiddleware\n * @description \u041E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442 \u0432\u0445\u043E\u0434\u044F\u0449\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443, \u0443\u0434\u0430\u043B\u044F\u0435\u0442 \u0432\u0441\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u044E\u0442\u0441\u044F\n * \u0430\u043B\u0444\u0430\u0432\u0438\u0442\u043D\u044B\u043C\u0438, \u0434\u0435\u0444\u0438\u0441\u0430\u043C\u0438, \u0430\u043F\u043E\u0441\u0442\u0440\u043E\u0444\u0430\u043C\u0438 \u0438\u043B\u0438 \u043F\u0440\u043E\u0431\u0435\u043B\u0430\u043C\u0438. \u041D\u0435 \u0434\u0430\u0435\u0442 \u0432\u0432\u0435\u0441\u0442\u0438 \u0434\u0443\u0431\u043B\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0434\u0435\u0444\u0438\u0441\u0430 \u0438\u043B\u0438 \u0430\u043F\u043E\u0441\u0442\u0440\u043E\u0444\u0430.\n * \u0420\u0435\u0436\u0435\u0442 \u0441\u043F\u0435\u0446\u0441\u0438\u043C\u0432\u043E\u043B\u044B, \u0435\u0441\u043B\u0438 \u043F\u043E\u0441\u043B\u0435 \u043D\u0438\u0445 \u043D\u0435 \u0438\u0434\u0435\u0442 \u0431\u0443\u043A\u0432\u0430.\n *\n * @param {string} value - \u0412\u0445\u043E\u0434\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438.\n * @returns {string} - \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430.\n */\n fieldChangesMiddleware: (value) => {\n // remove invalid characters\n const invalidCharacters = new RegExp(/[^a-zA-Z-\\s']/g);\n // handle any two '-' or ''' should not be side by side\n const sideBySideHyphenOrApostrophe = new RegExp(/['-]{2,}/g);\n // replace sequence of spaces with single space\n const multipleSpaces = new RegExp(/\\s{2,}/g);\n // remove '-' or ''' if they are followed by a space\n const beforeSpace = new RegExp(/['-](?=\\s)/g);\n\n const sanitizedValue = getSafelyValue(value)\n .replace(invalidCharacters, \"\")\n .replace(sideBySideHyphenOrApostrophe, \"\")\n .replace(multipleSpaces, \" \")\n .replace(beforeSpace, \"\");\n\n return sanitizedValue;\n },\n blurTrim: {\n trimStart: true,\n trimEnd: true,\n characters: [\"-\", \"'\", \" \"],\n },\n};\n\nexport const ONLY_STRING_AND_DASH = {\n /**\n * @name fieldChangesMiddleware\n * @description \u041E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442 \u0432\u0445\u043E\u0434\u043D\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443, \u0443\u0434\u0430\u043B\u044F\u0435\u0442 \u0432\u0441\u0435 \u043D\u0435\u0430\u043B\u0444\u0430\u0432\u0438\u0442\u043D\u044B\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B, \u0437\u0430\u043C\u0435\u043D\u044F\u0435\u0442 \u0434\u0432\u043E\u0439\u043D\u044B\u0435 \u0434\u0435\u0444\u0438\u0441\u044B \u043D\u0430 \u043E\u0434\u0438\u043D\u0430\u0440\u043D\u044B\u0435\n * \u0438 \u0443\u0434\u0430\u043B\u044F\u0435\u0442 \u0432\u0441\u0435 \u0434\u0435\u0444\u0438\u0441\u044B \u0432 \u043D\u0430\u0447\u0430\u043B\u0435 \u0438\u043B\u0438 \u043A\u043E\u043D\u0446\u0435 \u0441\u0442\u0440\u043E\u043A\u0438.\n * @param {string} value - \u0432\u0445\u043E\u0434\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430 \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438\n * @returns {string} \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430\n */\n fieldChangesMiddleware: (value) => {\n const nonAlphabeticAndNotSingleDash = new RegExp(/[^a-zA-Z-]|--/gi);\n const consecutiveDashes = new RegExp(/-+/g);\n\n const sanitizedInput = getSafelyValue(value);\n\n return sanitizedInput\n .replace(nonAlphabeticAndNotSingleDash, \"\")\n .replace(consecutiveDashes, \"-\");\n },\n};\nexport const INPUT_PRESETS = {\n NAME_SYMBOLS_EXCLUDER,\n ONLY_STRING_AND_DASH,\n};\n", "//? \u0423\u0434\u043E\u0431\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0434\u043B\u044F \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043E\u0432\nexport const ALL_KEYBOARD_TYPES = {\n numeric: { inputMode: \"decimal\" },\n email: { inputMode: \"email\" },\n};\n\n//? \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440:\n/*\n const constructor = [\n ...\n {\n key: 'someField',\n ...\n attributesOfNativeInput: {\n 'data-testId': `someFieldTestId-${someId}`,\n ...ALL_KEYBOARD_TYPES.numeric\n }\n }\n ...\n ];\n\n*/\n\n// *****************************\n//? \u0423\u0434\u043E\u0431\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0434\u043B\u044F \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0444\u0438\u043B\u0434\u0430, \u0435\u0441\u043B\u0438 \u0432 \u0444\u0438\u043B\u0434\u0435 \u0431\u043E\u043B\u0435\u0435 \u043D\u0435 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044B\n//? \u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440:\n/*\n const constructor = [\n ...\n {\n key: 'someField',\n ...NUMERIC_KEYBOARD\n ...\n }\n ...\n ];\n\n*/\n\nexport const NUMERIC_KEYBOARD = {\n attributesOfNativeInput: ALL_KEYBOARD_TYPES.numeric,\n};\nexport const EMAIL_KEYBOARD = {\n attributesOfNativeInput: ALL_KEYBOARD_TYPES.email,\n};\n"],
|
|
5
|
+
"mappings": ";AAEO,IAAM,iBAAoC;AAAA,EAC/C,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,eAAe;AAAA,EACf,eAAe;AAAA,EACf,SAAS;AACX;AACO,IAAM,6BAAqC;AAC3C,IAAM,6BAAqC;AAC3C,IAAM,kBAA0B;AAChC,IAAM,aAAqB;AAC3B,IAAM,2BAAmC;AACzC,IAAM,gBAA0B,CAAC,KAAK;;;ACZtC,SAAS,mBAA2B;AACzC,MAAI,OAAO;AACX,MAAI,OAAO,cAAc;AACvB,WAAO,OAAO,aAAa,GAAG,SAAS,KAAK;AAAA,EAC9C,WACS,SAAS,aAAa,KAAK,SAAS,aAAa,GAAG,SAAS,WAAW;AAC/E,WAAO,SAAS,aAAa,GAAG,SAAS,KAAK;AAAA,EAChD;AAEA,SAAO,MAAM,QAAQ,OAAO,EAAE;AAChC;AACO,SAAS,qBAA2B;AACzC,MAAI,OAAO,cAAc;AACvB,WAAO,aAAa,GAAG,gBAAgB;AAAA,EACzC;AACF;AACO,SAAS,gBAAgB,KAA4B;AAC1D,MAAI,aAAa,UAAU,aAAa,UAAU,UAAU;AAC1D,WAAO,UAAU,UAAU,UAAU,GAAG;AAE1C,SAAO,QAAQ,OAAO,qCAAqC;AAC7D;AACO,SAAS,sBAAsB,IAAgB;AACpD,QAAM,MAAM,OAAO,aAAa;AAChC,OAAK,kBAAkB,EAAE;AAC3B;AAEO,SAAS,SAAS,MAAuB;AAC9C,SAAO,QAAQ,MAAM,WAAW,KAAK,MAAM,MAAM,QAAQ,CAAC;AAC5D;AACO,SAAS,kBAAkB,MAAuB;AACvD,SAAO,SAAS,IAAI,IAAI,SAAS,KAAK,MAAM,EAAE,YAAY,IAAI;AAChE;AACO,SAAS,kBAAkB,MAAuB;AACvD,SAAO,SAAS,IAAI,IAAI,SAAS,KAAK,MAAM,EAAE,YAAY,IAAI;AAChE;AACO,SAAS,QAAQ,MAAuB;AAC7C,SAAO,QAAQ,OAAO,UAAU,OAAO,SAAS,MAAM,EAAE,CAAC,CAAC;AAC5D;AAEO,SAAS,gBAAgB,MAAuB;AACrD,SAAO,SAAS;AAClB;AACO,SAAS,iBAAiB,MAAuB;AACtD,SACE,SAAS,8BAA8B,SAAS;AAEpD;AAEO,SAAS,SAAe;AAC7B,UAAQ,MAAM,sBAAsB;AACtC;;;AC1CA,IAAM,cAAc;AAAA,EAClB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,eAAe;AACjB;AAaA,IAAM,aAAa;AAAA,EACjB,MAAM;AAAA,EACN,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,yBAAyB;AAAA,EACzB,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,OAAO;AACT;AAWA,IAAM,aAAa;AAAA,EACjB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,yBAAyB;AAAA,EACzB,aAAa;AAAA,EACb,YAAY;AACd;AAYA,IAAM,sBAAsB;AAAA,EAC1B,MAAM;AAAA;AAAA,EAEN,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,yBAAyB;AAAA,EACzB,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,cAAc;AAChB;AAUA,IAAM,mBAAmB;AAAA,EACvB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,yBAAyB;AAAA,EACzB,aAAa;AAAA,EACb,YAAY;AACd;AAUA,IAAM,aAAa;AAAA,EACjB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,yBAAyB;AAAA,EACzB,aAAa;AAAA,EACb,YAAY;AACd;AAYA,IAAM,qBAAqB;AAAA,EACzB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe;AACjB;AAUA,IAAM,eAAe;AAAA,EACnB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,yBAAyB;AAAA,EACzB,aAAa;AAAA,EACb,YAAY;AACd;AAEO,IAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AC1JO,IAAM,iBAAiB,CAAC,UAC7B,UAAU,UAAa,UAAU,OAAO,OAAO,WAAW,KAAK,KAAK;;;ACd/D,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUnC,wBAAwB,CAAC,UAAU;AAEjC,UAAM,oBAAoB,IAAI,OAAO,gBAAgB;AAErD,UAAM,+BAA+B,IAAI,OAAO,WAAW;AAE3D,UAAM,iBAAiB,IAAI,OAAO,SAAS;AAE3C,UAAM,cAAc,IAAI,OAAO,aAAa;AAE5C,UAAM,iBAAiB,eAAe,KAAK,EACxC,QAAQ,mBAAmB,EAAE,EAC7B,QAAQ,8BAA8B,EAAE,EACxC,QAAQ,gBAAgB,GAAG,EAC3B,QAAQ,aAAa,EAAE;AAE1B,WAAO;AAAA,EACT;AAAA,EACA,UAAU;AAAA,IACR,WAAW;AAAA,IACX,SAAS;AAAA,IACT,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,EAC5B;AACF;AAEO,IAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQlC,wBAAwB,CAAC,UAAU;AACjC,UAAM,gCAAgC,IAAI,OAAO,iBAAiB;AAClE,UAAM,oBAAoB,IAAI,OAAO,KAAK;AAE1C,UAAM,iBAAiB,eAAe,KAAK;AAE3C,WAAO,eACJ,QAAQ,+BAA+B,EAAE,EACzC,QAAQ,mBAAmB,GAAG;AAAA,EACnC;AACF;AACO,IAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA;AACF;;;AC1DO,IAAM,qBAAqB;AAAA,EAChC,SAAS,EAAE,WAAW,UAAU;AAAA,EAChC,OAAO,EAAE,WAAW,QAAQ;AAC9B;AAmCO,IAAM,mBAAmB;AAAA,EAC9B,yBAAyB,mBAAmB;AAC9C;AACO,IAAM,iBAAiB;AAAA,EAC5B,yBAAyB,mBAAmB;AAC9C;",
|
|
6
|
+
"names": []
|
|
7
7
|
}
|