{"version":3,"file":"FormEmail.88c15bfd.es5.js","mappings":"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","sources":["webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/node_modules/@alfa-bank/site-helpers-form/src/meta/is-error.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/src/email-field/config.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/node_modules/@alfa-bank/site-helpers-common/src/browser/keyboard-switcher.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/src/email-field/helpers/config.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/src/email-field/helpers/actions.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/src/email-field/index.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/src/email-field/email-field.tsx","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/node_modules/@alfa-bank/site-helpers-form/src/validation/utils/index.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/node_modules/@alfa-bank/site-helpers-form/src/validation/email.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/node_modules/@alfa-bank/site-helpers-form/src/validation/not-empty.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/node_modules/@alfa-bank/site-helpers-form/src/text/get-email-chars-from-str.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/src/email.tsx","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/src/index.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/node_modules/@alfa-bank/site-helpers-form/src/meta/get-caption.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/src/helpers/index.ts","webpack://assr-alfaleasing/./node_modules/@alfa-bank/site-form-email/node_modules/@alfa-bank/site-helpers-form/src/meta/is-success.ts"],"sourcesContent":["import { getNumbersFromStr } from '../text/get-numbers-from-str';\n\nimport { TMeta } from './models';\n\nexport const isError = ({ active, dirtySinceLastSubmit, error, submitError, touched }: TMeta) => {\n if (active) return false;\n if (error) return touched;\n if (submitError) return !dirtySinceLastSubmit;\n\n return false;\n};\n\nexport const isPhoneError = (\n { active, dirtySinceLastSubmit, error, submitError, touched }: TMeta,\n value: string\n) => {\n if (getNumbersFromStr(value).length === 11 && error) {\n return active || touched;\n }\n if (error) return touched;\n if (submitError) return !dirtySinceLastSubmit;\n\n return false;\n};\n","/* istanbul ignore next */\nexport const defaultHandler: () => void = () => {};\n","import { IKeyboardsLanguages, IKeyboardsLayouts } from './models';\n\n// TODO: Данный файл мигрировал из assr. Желательно отрефакторить его.\n\n// prettier-ignore\nexport const keyboardsLayouts: IKeyboardsLayouts = {\n en: [\n // нижний регистр\n /* mac */ '§', /* win */ '`',\n 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']',\n 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\\'', '\\\\',\n 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/',\n // нижний регистр через shift\n /* mac */ '±', /* win */ '~',\n 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}',\n 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', '\"', '|',\n 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '<', '>', '?',\n '@'\n ],\n ru: [\n // нижний регистр\n 'ё', 'ё',\n 'й', 'ц', 'у', 'к', 'е', 'н', 'г', 'ш', 'щ', 'з', 'х', 'ъ',\n 'ф', 'ы', 'в', 'а', 'п', 'р', 'о', 'л', 'д', 'ж', 'э', 'ё',\n 'я', 'ч', 'с', 'м', 'и', 'т', 'ь', 'б', 'ю', '/',\n // нижний регистр через shift\n 'Ё', 'Ё',\n 'Й', 'Ц', 'У', 'К', 'Е', 'Н', 'Г', 'Ш', 'Щ', 'З', 'Х', 'Ъ',\n 'Ф', 'Ы', 'В', 'А', 'П', 'Р', 'О', 'Л', 'Д', 'Ж', 'Э', 'Ё',\n 'Я', 'Ч', 'С', 'М', 'И', 'Т', 'Ь', 'Б', 'Ю', '?',\n '\"'\n ]\n};\n\n/** regex для раскладок клавиатуры */\nexport const keyboardLanguages: IKeyboardsLanguages = {\n /* eslint-disable optimize-regex/optimize-regex */\n en: /[a-z[\\]{};:'\"\\\\|,.<>?§±`~]/i,\n ru: /[а-яё\"/?]/i,\n /* eslint-enable optimize-regex/optimize-regex */\n};\n\n/**\n * Проверяет строку на совпадение с раскладкой клавиатуры.\n */\nexport function isKeyboardLayout(string: string, keyboardAlias: string): boolean {\n if (!string.length) return false;\n\n // your keyboard\n const keyboardLanguage: RegExp | undefined = keyboardLanguages[keyboardAlias];\n\n // недопустимая раскладка клавиатуры\n if (!keyboardLanguage) return false;\n\n let index = 0;\n\n let isValid = false;\n\n while (index < string.length) {\n const letter = string[index];\n\n if (keyboardLanguage.test(letter)) {\n isValid = true;\n\n return true;\n }\n\n index += 1;\n }\n\n return isValid;\n}\n\n/**\n * Конвертирует символы из одной раскладки в другую.\n */\nexport function keyboardSwitcher(characters = '', from = 'en', to = 'ru'): string {\n // incoming text string\n const textToConvert = characters;\n\n // if characters is empty stop working\n if (!textToConvert || !textToConvert.length) return '';\n\n // if incoming text and current keyboard not equal\n if (!isKeyboardLayout(textToConvert, from)) {\n return characters;\n }\n\n // current keyboard layout\n const locale = keyboardsLayouts[from];\n\n // convert characters to this keyboard layout\n const localeOn = keyboardsLayouts[to];\n\n let convertedText = '';\n\n let index = 0;\n\n while (index < textToConvert.length) {\n const letter = textToConvert[index];\n const letterIndex = locale.indexOf(letter);\n\n convertedText += localeOn[letterIndex];\n index += 1;\n }\n\n return convertedText;\n}\n\nexport function switchToKeyboard(characters: string, keyboardAlias: string): string {\n const textToConvert = characters;\n\n if (!textToConvert.length) return '';\n\n const keyboards: string[] = Object.keys(keyboardLanguages);\n\n let index = 0;\n\n let convertedText = '';\n\n while (index < textToConvert.length) {\n const letter = textToConvert[index];\n\n let locale = '';\n\n keyboards.forEach(keyboardKey => {\n const isKeyboardIncludesLetter = isKeyboardLayout(letter, keyboardKey);\n\n if (isKeyboardIncludesLetter && keyboardKey !== keyboardAlias) {\n locale = keyboardKey;\n\n return '';\n }\n\n return '';\n });\n\n const returnedLetter =\n locale === keyboardAlias ? letter : keyboardSwitcher(letter, locale, keyboardAlias);\n\n convertedText += returnedLetter;\n index += 1;\n }\n\n return convertedText;\n}\n\n/**\n * Автоматически переводит английскую раскладку на русскую при вводе пользователем.\n */\nexport const formatToRussian = (value?: string): string => {\n if (!value) return '';\n\n // check user keyboard and if it need convert to russian\n const enteredValue = switchToKeyboard(value, 'ru');\n // all profile names starts with uppercase symbol\n const formattedInputValue = enteredValue[0].toUpperCase() + enteredValue.substr(1);\n // clear value\n\n return formattedInputValue.replace(/[^\\sа-яё-]/gi, '').replace(/\\s{2,}/g, ' ');\n};\n","const method = 'post';\nconst timeout = 1000;\nconst url = process.env.EMAIL_FIELD;\nconst headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n};\nconst ref = 'email_complite';\n\nexport { method, timeout, url, headers, ref };\n","import { switchToKeyboard } from '@alfa-bank/site-helpers-common/browser/keyboard-switcher';\nimport axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { Dispatch, FocusEvent, SetStateAction } from 'react';\n\nimport * as config from './config';\n\nexport interface IEmailFieldHandler {\n callback: ((obj: IInputProps) => void) | undefined;\n setOptions: Dispatch>;\n setValue: Dispatch>;\n}\n\nexport interface IInputProps {\n event: FocusEvent;\n name: string;\n value: string;\n}\n\nexport interface IAxiosResponseData {\n value: string;\n}\n\nexport interface IEmailSuggestionsData {\n id: string;\n label: string;\n}\n\nexport const formatEmail: (value: string) => string = value =>\n switchToKeyboard(value, 'en')\n .toLowerCase()\n .replace(/^[.@_-]/, '')\n .replace(/[^\\w-.@]/g, '');\n\nexport const getEmailSuggestions: (value: string) => Promise =\n async value => {\n if (!value.includes('@')) return [];\n const { headers, method, ref, timeout, url } = config;\n const request: AxiosRequestConfig = {\n method,\n timeout,\n url,\n headers,\n data: `_ref=${ref}&value=${value}`,\n };\n\n const { data }: AxiosResponse = await axios(request);\n\n return data.map(({ value: val }) => ({\n id: val,\n label: val,\n }));\n };\n","import { createWidget } from '@alfa-bank/site-util-create-widget/create-widget';\nimport { BaseSelect as Select } from '@alfa-bank/site-form-utils/components/base-select';\n\nimport { EmailField as Component } from './email-field';\nimport { TEmailField, IDeps } from './models';\n\nexport const EmailField = createWidget({\n Select,\n})(Component);\n","import React, { FC, useEffect, useState } from 'react';\n\nimport { defaultHandler } from './config';\nimport { IEmailSuggestionsData, formatEmail, getEmailSuggestions } from './helpers/actions';\nimport { TEmailField } from './models';\n\nexport const EmailField: FC = ({\n Select,\n arrow,\n caption = 'На данный email будет направлена информация по заявке',\n className = '',\n error,\n forwardedRef,\n name = 'email',\n onCancel = defaultHandler,\n onChange = defaultHandler,\n onSelect = defaultHandler,\n placeholder = 'Электронная почта',\n success,\n value: initValue = '',\n dataTestId = 'email-input',\n ...rest\n}) => {\n const [currentValue, setValue] = useState(String(initValue));\n const [options, setOptions] = useState([]);\n\n const handleChange = (value: string) => {\n const formattedValue = formatEmail(value);\n\n setValue(formattedValue);\n getEmailSuggestions(formattedValue)\n .then(res => setOptions(res))\n .catch(e => console.error(e));\n\n return formattedValue;\n };\n\n useEffect(() => {\n if (initValue === currentValue) return;\n\n handleChange(String(initValue));\n }, [initValue]);\n\n return (\n {\n setValue('');\n onCancel(event);\n }}\n onChange={({ value, ...event }) =>\n onChange({ value: handleChange(String(value)), ...event })\n }\n onSelect={({ value, ...event }) => onSelect({ value: handleChange(value), ...event })}\n options={options}\n placeholder={placeholder}\n success={success}\n value={currentValue}\n />\n );\n};\n","import { TError, TValidatorValue, TValue } from '../models';\n\nconst VALID_STATUS = undefined;\n\nexport const composeValidators =\n (...validators: Array<(value: string, allValues: object) => TValidatorValue>) =>\n (value: string, allValues: object = {}) =>\n validators.reduce(\n (error, validator) => error || validator(value, allValues),\n VALID_STATUS\n );\n\nexport const validate = (value: TValue, defaultMessages = '', customMessage?: string) =>\n value ? VALID_STATUS : customMessage || defaultMessages;\n","import { getEmailCharsFromStr } from '../text/get-email-chars-from-str';\n\nimport { TValidatorValue } from './models';\nimport { composeValidators, validate } from './utils';\nimport { validateNotEmpty } from './not-empty';\n\nconst DEFAULT_EMAIL_MESSAGE = 'Email введен некорректно. Пример: example@domain.ru';\n\n/**\n * Валидирует строку с Email\n */\nexport const isValidEmail = (value?: string): boolean => {\n const cleanValue = getEmailCharsFromStr(value);\n const regexp = /^[\\da-z]+(?:[._-][\\da-z]+)*@[\\da-z]{2,}(?:[._-][\\da-z]+)*\\.[a-z]{2,10}$/i;\n\n return regexp.test(cleanValue);\n};\n\nconst validateEmailValue = (customMessage?: string) => (value: TValidatorValue) =>\n validate(isValidEmail(value), DEFAULT_EMAIL_MESSAGE, customMessage);\n\nexport const validateEmail = (message?: string) =>\n composeValidators(validateNotEmpty(), validateEmailValue(message));\n","import { TValidatorValue } from './models';\nimport { validate } from './utils';\n\nconst EMPTY_MESSAGE = 'Поле обязательно для заполнения';\n\nexport const validateNotEmpty =\n (message = EMPTY_MESSAGE) =>\n (value?: TValidatorValue) =>\n validate(value, message);\n","// TODO: переделать на функцию из набора ACCEPTS (их пока нет)\n/**\n * Очищает строку от всего, что не может содержать email\n */\nexport const getEmailCharsFromStr = (value?: string): string =>\n value ? value.replace(/[^\\w-.@]+/g, '') : '';\n","import React, { FC } from 'react';\nimport { StaticActions as actions } from '@alfa-bank/site-form-utils/actions';\n\nimport { TEmail } from './models';\n\n/**\n * Поле ввода email\n * memo требуется для того чтоб избежать лишнего\n * ререндера при сабмите, при котором Final Form сбрасывает значения\n * meta.touched, из-за чего пропадают галочки напротив\n * корректно заполненных полей\n */\nexport const Email: FC = React.memo(\n ({\n EmailField,\n Field,\n className,\n getCaption,\n hideStatusIcon,\n isError,\n isSuccess,\n name,\n optional,\n settings,\n validateEmail,\n }) => (\n (\n
\n actions.onChange(input)(String(value))}\n onFocus={actions.onFocus(input)}\n onSelect={({ value }) => actions.onSelect({ input, meta })(value)}\n placeholder={settings.placeholder}\n success={isSuccess({ input, meta })}\n />\n
\n )}\n validate={validateEmail(optional)}\n />\n )\n);\n","import { createWidget } from '@alfa-bank/site-util-create-widget/create-widget';\nimport { getCaption } from '@alfa-bank/site-helpers-form/meta/get-caption';\nimport { isError } from '@alfa-bank/site-helpers-form/meta/is-error';\nimport { Field } from '@alfa-bank/site-form-utils/components/form-field';\n\nimport { EmailField } from './email-field';\nimport { validateEmail, isSuccess } from './helpers';\nimport { TEmail, IDeps } from './models';\nimport { Email as Component } from './email';\n\nexport const Email = createWidget({\n Field,\n EmailField,\n getCaption,\n isError,\n isSuccess,\n validateEmail,\n})(Component);\n","import { TMeta } from './models';\nimport { isPhoneError, isError } from './is-error';\n\nexport const getCaption = (meta: TMeta, caption = '') => {\n if (isError(meta)) {\n return meta.error || meta.submitError;\n }\n\n return caption;\n};\n\nexport const getPhoneCaption = (meta: TMeta, caption = '', value: string) => {\n if (isPhoneError(meta, value)) {\n return meta.error || meta.submitError;\n }\n\n return caption;\n};\n","import { isSuccess as isAlfaSuccess } from '@alfa-bank/site-helpers-form/meta/is-success';\nimport { validateEmail as validateAlfaEmail } from '@alfa-bank/site-helpers-form/validation/email';\n\nimport { TValidator, TSuccess } from '../models';\n\n/** Валидация необязательного емейла */\nexport const validateEmail: TValidator = optional => value => {\n if (optional && !value) return '';\n\n return validateAlfaEmail()(value);\n};\n\n/** В случае, если значение пустое - оно не является успешным */\nexport const isSuccess: TSuccess = ({ input, meta }) => {\n if (!input.value) return false;\n\n return isAlfaSuccess(meta);\n};\n","import { TMeta } from './models';\n\nconst VALID_STATUS = undefined;\n\nexport const isSuccess = ({\n dirtySinceLastSubmit,\n error,\n submitError,\n submitSucceeded,\n submitting,\n touched,\n}: TMeta) => {\n /**\n * При отправке формы React Final Form аннулирует\n * свойство touched, что может приводить к\n * незапланированной смене success-статуса, поэтому\n * если поле было отправлено, то мы это расцениваем\n * равнозначно touched, чтоб не вводить пользователя\n * в заблуждение\n */\n const submitted = submitSucceeded || submitting;\n\n if (!touched && !submitted) return VALID_STATUS;\n if (error) return false;\n if (submitError) return dirtySinceLastSubmit;\n\n return true;\n};\n"],"names":["isError","active","dirtySinceLastSubmit","error","submitError","touched","defaultHandler","keyboardsLayouts","en","ru","keyboardLanguages","isKeyboardLayout","string","keyboardAlias","length","keyboardLanguage","index","isValid","letter","test","switchToKeyboard","characters","textToConvert","keyboards","Object","keys","convertedText","locale","forEach","keyboardKey","returnedLetter","from","to","localeOn","indexOf","keyboardSwitcher","url","process","EMAIL_FIELD","headers","i","getEmailSuggestions","value","includes","request","method","timeout","config","data","axios","map","val","id","label","EmailField","createWidget","Select","arrow","caption","className","forwardedRef","name","onCancel","onChange","onSelect","placeholder","success","initValue","dataTestId","rest","useState","String","currentValue","setValue","options","setOptions","handleChange","formattedValue","toLowerCase","replace","formatEmail","then","res","catch","e","console","useEffect","event","VALID_STATUS","undefined","validate","defaultMessages","customMessage","validateEmail","message","validators","allValues","reduce","validator","composeValidators","validateNotEmpty","cleanValue","getEmailCharsFromStr","isValidEmail","Email","React","Field","getCaption","hideStatusIcon","isSuccess","optional","settings","dispatchesFocus","receivesFocus","render","input","meta","actions","onBlur","onFocus","submitSucceeded","submitting","isAlfaSuccess","validateAlfaEmail","Component"],"sourceRoot":""}