{"version":3,"file":"static/chunks/6126-c1bd52d4401ce872.js","mappings":"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","sources":["webpack://_N_E/./src/components/ButtonWithTimer/index.tsx","webpack://_N_E/./src/components/ConfirmNumberPopup/styled.ts","webpack://_N_E/./src/components/ConfirmNumberPopup/index.tsx","webpack://_N_E/./src/helpers/phone/getFormattedPhoneNumber.ts","webpack://_N_E/./src/store/selectors/domain.ts","webpack://_N_E/../../packages/api-domru/src/full-buy/v1/sale-agent/select-time-slot/index.ts","webpack://_N_E/../../packages/api-domru/src/full-buy/v2/agreement/offer-create.ts","webpack://_N_E/../../packages/api-domru/src/phone-validator/validation/send.ts","webpack://_N_E/../../packages/api-domru/src/phone-validator/validation/validate.ts","webpack://_N_E/../../packages/do-request/src/error/customAxiosError.ts","webpack://_N_E/../../packages/entities/src/ContactAddress/actions/setAddressEdit.ts","webpack://_N_E/../../packages/entities/src/ContactAddress/selectors/selectAddressParams.ts","webpack://_N_E/../../packages/shared/src/hooks/useTimer.ts","webpack://_N_E/../../packages/ui-react/src/components/svg/arrows/SingleArrowRight.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/devices/Electricity.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/time/Clock.tsx"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport dayjs, { UnitTypeLongPlural } from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { NBSP } from '@r1-frontend/ui-react/tokens/symbols';\nimport { TTimeStatus } from '@r1-frontend/shared/hooks/useTimer';\n\ndayjs.extend(duration);\n\ninterface ITimerConfig {\n units: Partial<{ [unit in Exclude | 'weeks']: number }>,\n format?: string,\n postfix: string,\n}\n\nconst timerConfig: ITimerConfig = {\n units: {},\n postfix: '',\n};\n\ninterface IProps {\n status: TTimeStatus,\n onBtnClick: () => void,\n isLoading?: boolean,\n isDisabled?: boolean,\n autoStart?: boolean,\n seconds: number,\n onStart: (seconds: number) => void,\n}\n\nexport const ButtonWithTimer = ({\n status,\n onBtnClick,\n isLoading,\n isDisabled,\n autoStart = false,\n seconds,\n onStart,\n}: IProps): JSX.Element => {\n const startHandler = () => {\n if (seconds === 0) {\n onStart(60);\n onBtnClick();\n }\n };\n\n useEffect(() => {\n if (autoStart) {\n startHandler();\n }\n }, [autoStart]);\n\n const timerText = useMemo(() => {\n const _minutes = ~~(seconds / 60);\n\n timerConfig.units.minutes = _minutes;\n timerConfig.units.seconds = seconds % 60;\n timerConfig.format = _minutes ? 'm:ss' : 's';\n timerConfig.postfix = _minutes ? 'мин' : 'сек';\n\n const timer = dayjs.duration(timerConfig.units).format(timerConfig.format);\n\n return `Повторный код через ${timer}${NBSP}${timerConfig.postfix}`;\n }, [seconds]);\n\n return (\n \n {status === 'progress' ? timerText : 'Отправить код еще раз'}\n \n );\n};\n","import styled from 'styled-components';\n\nimport InputSimple from '@r1-frontend/ui-react/components/inputSimple';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const BasePopup = styled(DefaultPopup)`\n padding: 32px;\n\n &>div:first-child {\n float: right;\n position: relative;\n top: 0;\n right: 0;\n margin-left: 10px;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n padding: 24px;\n width: 343px !important;\n }\n`;\n\nexport const ConfirmRadioBlock = styled.div`\n flex-direction: column;\n margin-bottom: 24px;\n`;\n\nexport const ConfirmationTitle = styled.div`\n ${FONTS.H3};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.H4};\n }\n`;\n\nexport const ConfirmRadios = styled.div`\n flex-wrap: nowrap;\n column-gap: 16px;\n`;\n\nexport const SmsInputsWrap = styled.div`\n flex-direction: column;\n align-items: flex-start;\n margin-top: 8px;\n margin-bottom: 16px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n flex-direction: row;\n margin-top: 12px;\n }\n`;\n\nexport const SmsInput = styled(InputSimple)`\n margin-bottom: 0;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n max-width: 100%;\n }\n`;\n\nexport const SmsTextNumber = styled.span`\n white-space: pre;\n ${FONTS.XS};\n color: ${COLORS.TextSecondary};\n`;\n\nexport const BtnWrap = styled.div`\n flex-direction: column;\n align-items: flex-start;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n align-items: stretch;\n }\n`;\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { ISuccessResponse } from '@r1-frontend/api-domru/phone-validator/validation/dto/ISuccessResponse';\nimport { send } from '@r1-frontend/api-domru/phone-validator/validation/send';\nimport { validate } from '@r1-frontend/api-domru/phone-validator/validation/validate';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { useTimer } from '@r1-frontend/shared/hooks/useTimer';\n\nimport { ButtonWithTimer } from '~/src/components/ButtonWithTimer';\nimport { getFormattedPhoneNumber } from '~/src/helpers/phone';\n\nimport * as ST from './styled';\n\nconst CONFIRM_CODE_TYPE = 'sms';\nconst SMS_LENGTH = 4;\n\ninterface IProps {\n isOpen: boolean,\n phone: string,\n onConfirmed: (isConfirmed: boolean) => void,\n onClosePopup: () => void,\n dataLayerPushCategory?: string,\n}\n\nexport const ConfirmNumberPopup = (\n {\n isOpen,\n phone,\n onConfirmed,\n onClosePopup,\n\n dataLayerPushCategory = CATEGORIES.fullBuy,\n }: IProps,\n): JSX.Element => {\n const inputRef = useRef(null);\n const [isLoading, setIsLoading] = useState(false);\n const [isCodeSended, setIsCodeSended] = useState(false);\n const [isSmsRequestOnceSent, setIsSmsRequestOnceSent] = useState(true);\n const [smsCode, setSmsCode] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [errorSmsCode, setErrorSmsCode] = useState('');\n // флаг показывающий что апи вызывалось ранее (нужно понимание повторный ли это запроса кода/смс)\n const [apiHadCalled, setApiHadCalled] = useState(false);\n const { timeStatus, seconds, start } = useTimer();\n\n const onSendSms = useCallback((confirmTypeLabel: string) => async() => {\n if (!isCodeSended) {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: dataLayerPushCategory,\n action: 'click contact verification',\n label: confirmTypeLabel,\n });\n }\n setIsSmsRequestOnceSent(false);\n setIsLoading(true);\n\n setSmsCode('');\n\n const resp = await doRequest.phoneValidator(\n send({ phone, type: CONFIRM_CODE_TYPE }),\n );\n\n if (!apiHadCalled) {\n setApiHadCalled(true);\n } else {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: dataLayerPushCategory,\n action: 'resend_confirm_code',\n label: CONFIRM_CODE_TYPE,\n });\n }\n\n if (resp.isSuccess) {\n setIsCodeSended(true);\n }\n setIsCodeSended(true);\n setIsLoading(false);\n }, [phone, CONFIRM_CODE_TYPE, isCodeSended]);\n\n const onValidateCode = useCallback(async(smsValue: string) => {\n setErrorMessage('');\n setIsLoading(true);\n\n const resp = await doRequest.phoneValidator(\n validate({\n phone,\n code: smsValue,\n }),\n );\n\n if (resp.isSuccess && resp.payload.success) {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: dataLayerPushCategory,\n action: 'contact confirmed',\n label: CONFIRM_CODE_TYPE,\n });\n\n setSmsCode('');\n onConfirmed(true);\n }\n\n if ((resp.isSuccess && !resp.payload.success) || !resp.isSuccess) {\n setErrorMessage('Неверно. Попробуйте ещё раз.');\n }\n\n setIsLoading(false);\n }, [phone, CONFIRM_CODE_TYPE, onConfirmed]);\n\n const onInputSms = useCallback((event) => {\n const value: string = event.target.value;\n if (value.length <= SMS_LENGTH) {\n setSmsCode(value);\n setErrorSmsCode('');\n if (value.length === SMS_LENGTH) {\n onValidateCode(value);\n }\n }\n }, [onValidateCode]);\n\n useEffect(() => {\n if (inputRef?.current && isCodeSended) {\n inputRef.current.focus();\n }\n }, [inputRef, isCodeSended]);\n\n return (\n \n

Введите код из смс

\n\n \n \n {errorSmsCode\n ? {errorSmsCode}\n : \n {'Отправили смс на номер: '}\n {getFormattedPhoneNumber(phone)}\n }\n \n \n \n\n \n \n \n
\n );\n};\n","// @TODO Возможно нужно будет доработать метод для других типов форматов\n\n/**\n * Форматированный вывод телефонного номера\n * @param phone string (example: 79995553322 or +79995553322)\n * @returns string\n */\nexport const getFormattedPhoneNumber = (phone: string): string => {\n let preparedString = phone;\n\n if (typeof phone.charAt(0) !== 'number') {\n preparedString = Number(phone).toString();\n }\n\n return preparedString.replace(/([\\d]{1})([\\d]{3})([\\d]{3})([\\d]{2})([\\d]{2})/g, '+$1 $2 $3 $4 $5');\n};\n","import get from 'lodash/get';\n\nimport { TState } from '~/src/store';\n\n// @todo remove lodash from getting value from expected and described structure `TState`\nexport function selectDomain(state: TState): string {\n return get(state, 'auth.billingDomain') || get(state, 'city.currentCity.domain');\n}\n\nexport function selectHostname(state: TState): string {\n const domain = get(state, 'auth.billingDomain');\n\n if (domain && domain !== 'interzet') {\n return 'https://' + domain + '.db.ertelecom.ru';\n } else {\n return get(state, 'city.currentCity.billingHost');\n }\n}\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { RequestDto } from './dto/RequestDto';\n\n/**\n * Подтверждение выбранного времени\n */\nexport const selectTimeSlot = (providerId: number, request: RequestDto): IRequest => ({\n uri: `/v1/${providerId}/sale-agent/select-time-slot`,\n method: 'POST',\n body: JSON.stringify(request),\n withProvider: true,\n});\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nexport interface IOfferCreateAddress {\n houseId?: number,\n unifiedHouseId?: number,\n office: string,\n companyId: number,\n}\n\nexport interface IOfferCreatePersonalInformation {\n clientName: string,\n clientPhone: string,\n clientPhoneExtra?: string,\n passportNumber?: string,\n whoIssue?: string,\n dateIssue?: string,\n birthplace?: string,\n birthdate?: string,\n registrationArea?: string,\n registrationStreet?: string,\n registrationHouse?: number,\n registrationBuilding?: string,\n registrationOffice?: string,\n}\n\nexport interface IOfferCreateTariff {\n tariffId: number,\n tariffIdDmf?: number,\n createConnectDmf?: boolean,\n connectPhone?: string,\n tarifPlanVc?: string,\n connectPlanVc?: string,\n}\n\nexport interface IOfferCreateItem {\n id: number,\n type: string,\n count?: number,\n duration?: number,\n equipTestdrive?: boolean,\n}\n\nexport interface IOfferCreateRequestDto {\n address: IOfferCreateAddress,\n personalInformation: IOfferCreatePersonalInformation,\n tariff: IOfferCreateTariff,\n promocodeName?: string,\n comment?: string,\n analyticsId?: string,\n selfactivation?: number,\n selfactivationWithEquip?: number,\n items?: IOfferCreateItem[],\n managerId?: number,\n}\n\nexport interface IOfferCreateResponseDto {\n message: string,\n agreementNumber: string,\n agreementId: string,\n isDouble: boolean,\n fromCache: boolean,\n promoBonusType?: number,\n promoBonusSum?: number,\n promoBonusDate?: string,\n bonusWelcome?: number,\n bonusWelcomeDate?: string,\n plbRegistrationSuccessful?: boolean,\n promoCodeSuccessful?: boolean,\n}\n\n/* Запрос на создание договора v2\nhttps://master.full-buy.sandbox.d2c.r-one.io/docs/#/Agreement/AgreementController_offerCreateV2 */\nexport const offerCreate = (providerId: number, requestDto: IOfferCreateRequestDto): IRequest => ({\n uri: `/v2/${providerId}/agreement/offer-create`,\n method: 'POST',\n body: JSON.stringify(requestDto),\n withProvider: true,\n});\n","import { TValidationType } from '@r1-frontend/api-domru/phone-validator/validation/dto/TValidationType';\n\nimport { IRequest } from '@r1-frontend/shared/types/IRequest';\n\ninterface ISend {\n phone: string,\n type: TValidationType,\n}\n\n/*\n* Отправка запроса на валидацию\n* https://master.phone-validator.sandbox.d2c.r-one.io/docs/#/validation/ValidationController_validate\n* */\nexport const send = (queryParams: ISend): IRequest => ({\n uri: '/validation/send',\n method: 'GET',\n queryParams: queryParams,\n});\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\ninterface IValidate {\n phone: string,\n code: string,\n}\n\n/*\n* Проверка валидации телефона по коду\n* https://master.phone-validator.sandbox.d2c.r-one.io/docs/#/validation/ValidationController_validate\n* */\nexport const validate = (queryParams: IValidate): IRequest => ({\n uri: '/validation/validate',\n method: 'GET',\n queryParams,\n});\n","import { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';\n\n// TODO проверить необходимость этого класса\nexport class CustomAxiosError extends Error implements AxiosError {\n code?: string;\n config: AxiosRequestConfig = {};\n request: any;\n response?: AxiosResponse;\n isAxiosError: boolean;\n status?: string;\n toJSON: () => object;\n\n constructor(message: string, responseBody: AxiosResponse) {\n super(message);\n this.response = responseBody;\n this.isAxiosError = true;\n this.toJSON = () => ({});\n }\n}\n","import { EContactDetailTypes, TSetAddressEdit } from '../index';\n\nexport const setAddressEdit = (isEdit: boolean): TSetAddressEdit => ({\n type: EContactDetailTypes.SET_EDIT,\n payload: {\n isEdit,\n },\n});\n","import { createSelector } from 'reselect';\n\nimport { ISelectInputOption } from '@r1-frontend/shared/types/ISelectInputOption';\n\nimport { IContactAddressState, IVerifiedAddressData } from '../initialState';\n\nexport interface IAddressProps {\n city: string,\n street: ISelectInputOption,\n house: ISelectInputOption,\n flat: string,\n companyId: number,\n}\n\nconst getVerifiedAddressData = (state: IContactAddressState) => state.contactAddress.verifiedAddressData;\n\nconst selectAddressParams = (verifiedAddressData: IVerifiedAddressData): IAddressProps | null => {\n const {\n address,\n companyId,\n } = verifiedAddressData;\n\n if (!address) {\n return null;\n }\n\n const { city, street, house, flat } = address;\n\n if (!city || !street || !house) {\n return null;\n }\n\n return {\n city: city.label,\n street,\n house,\n flat: flat || '',\n companyId,\n };\n};\n\nexport const selectAddressParamsMemoize = createSelector(\n [getVerifiedAddressData],\n selectAddressParams,\n);\n","import { useRef, useState } from 'react';\n\nexport type TTimeStatus = 'waiting' | 'progress';\n\ninterface IReturnOptions {\n timeStatus: TTimeStatus,\n seconds: number,\n start: (seconds: number) => void,\n stop: () => void,\n}\n\n/**\n * Таймер обратного отсчета\n * @returns {[string, number, function: void, function: void]} Текущий статус, текущая секунда, колбэк запуска, колбэк остановки\n */\nexport const useTimer = (): IReturnOptions => {\n const [{\n currentSecond,\n state,\n }, setState] = useState<{ currentSecond: number, state: TTimeStatus }>({\n currentSecond: 0,\n state: 'waiting',\n });\n const intervalId = useRef | null>(null);\n\n const handleTick = () => {\n setState(prev => {\n if (prev.currentSecond > 1) {\n return { ...prev, currentSecond: prev.currentSecond - 1 };\n } else {\n return { ...prev, currentSecond: 0, state: 'waiting' };\n }\n });\n };\n\n const handleStop = () => {\n if (intervalId.current) {\n clearInterval(intervalId.current);\n intervalId.current = null;\n }\n };\n\n const start = (seconds: number) => {\n handleStop();\n setState(prev => ({ ...prev, currentSecond: seconds, state: 'progress' }));\n intervalId.current = setInterval(handleTick, 1000);\n };\n\n const stop = () => {\n setState(prev => ({ ...prev, state: 'waiting' }));\n handleStop();\n };\n\n return { timeStatus: state, seconds: currentSecond, start, stop };\n};\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst SingleArrowRight = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return \n \n ;\n};\n\nexport default createSvg(\n SingleArrowRight,\n 'single-arrow-right',\n);\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst Electricity = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return (\n <>\n \n \n \n \n \n \n \n );\n};\n\nexport default createSvg(\n Electricity,\n 'electricity',\n);\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst Clock = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return (\n <>\n \n \n \n \n \n \n \n );\n};\n\nexport default createSvg(\n Clock,\n 'clock',\n);\n"],"names":["dayjs","duration","timerConfig","units","postfix","ButtonWithTimer","status","onBtnClick","isLoading","isDisabled","autoStart","seconds","onStart","startHandler","useEffect","timerText","useMemo","_minutes","minutes","format","timer","NBSP","Button","size","bType","onClick","disabled","loading","BasePopup","styled","DefaultPopup","wideBreakpoints","SmsInputsWrap","FONTS","SmsInput","InputSimple","SmsTextNumber","COLORS","BtnWrap","CONFIRM_CODE_TYPE","ConfirmNumberPopup","isOpen","phone","onConfirmed","onClosePopup","dataLayerPushCategory","CATEGORIES","inputRef","useRef","useState","setIsLoading","isCodeSended","setIsCodeSended","isSmsRequestOnceSent","setIsSmsRequestOnceSent","smsCode","setSmsCode","errorMessage","setErrorMessage","errorSmsCode","setErrorSmsCode","apiHadCalled","setApiHadCalled","useTimer","timeStatus","start","onSendSms","useCallback","confirmTypeLabel","resp","dataLayerPush","event","EVENTS","category","action","label","doRequest","send","type","isSuccess","onValidateCode","smsValue","validate","code","payload","success","onInputSms","value","target","length","current","focus","ST","onClose","H3","$withIndent","IndentContainer","$united","Paragraph4","getFormattedPhoneNumber","ref","onChange","placeholder","isNotValid","preparedString","charAt","Number","toString","replace","selectDomain","state","get","selectHostname","domain","selectTimeSlot","providerId","request","uri","method","body","JSON","stringify","withProvider","offerCreate","requestDto","queryParams","Error","setAddressEdit","isEdit","EContactDetailTypes","selectAddressParamsMemoize","createSelector","contactAddress","verifiedAddressData","address","companyId","city","street","house","flat","currentSecond","setState","intervalId","handleTick","prev","handleStop","clearInterval","setInterval","stop","createSvg","strokeWidth","g","id","path","d","strokeMiterlimit","strokeLinecap","strokeLinejoin"],"sourceRoot":""}