{"version":3,"file":"static/chunks/3074-19ec9b2ad70c63c6.js","mappings":"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","sources":["webpack://_N_E/./src/features/full-buy/consts.ts","webpack://_N_E/./src/features/full-buy/helpers.ts","webpack://_N_E/../../packages/api-domru/src/dadata/suggest/suggest.ts","webpack://_N_E/../../packages/api-domru/src/dadata/suggest/fio/index.ts","webpack://_N_E/../../packages/shared/src/guards/isSomeEnum.ts","webpack://_N_E/../../packages/shared/src/types/EPriceTypes.ts","webpack://_N_E/../../packages/ui-react/src/components/popups/useResultPopup/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Forms/PersonForm/Autocomplete/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Forms/PersonForm/Autocomplete/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Forms/PersonForm/helpers/checkFioIsValid.ts","webpack://_N_E/../../packages/ui-react/src/organisms/Forms/PersonForm/helpers/trimExtraSymbols.ts","webpack://_N_E/../../packages/ui-react/src/organisms/Forms/PersonForm/styled.ts","webpack://_N_E/../../packages/ui-react/src/organisms/Forms/PersonForm/index.tsx"],"sourcesContent":["import { EVerificationStatus, IVerifiedAddressData } from '@r1-frontend/entities/ContactAddress/initialState';\nimport { EAvailableSpeed } from '@r1-frontend/entities/ContactAddress/initialState';\n\nimport { IAddress } from '@r1-frontend/shared/types/IAddress';\n\nexport const ADDRESS_PARAM_NAME = 'addressParams';\nexport const MEGABIT_AVAIL_CODES_LIST = [1, 2];\nexport const MEGABIT_SPEED = 100;\nexport const GIGABIT_SPEED = 1000;\n\nexport const agreementCreationStatuses = [\n 'Создаем заявку...',\n 'Проверяем данные...',\n 'Добавляем заявку в базу...',\n 'Защищаем ваши данные...',\n 'Передаем информацию...',\n 'Боремся с бюрократией...',\n 'Ищем свободного инженера...',\n 'Проверяем доступные дату и время...',\n 'Ещё немного формальностей...',\n];\n\n/**\n * Возвращает структуру IVerifiedAddressData, содержащую верифицированный адрес\n * @param storageObj - объект содержащий поля требуемые для IVerifiedAddressData\n */\nexport const getVerifiedAddress = (storageObj?: Record | null): IVerifiedAddressData | null => {\n if (!storageObj) {\n return null;\n }\n\n const {\n address,\n gigabitAvail,\n isHouseConnected,\n status,\n companyId,\n\n availableSpeed,\n isHouseCottage,\n } = storageObj;\n\n if (status === EVerificationStatus.verified && address) {\n return {\n address: address as IAddress,\n gigabitAvail: Number(gigabitAvail),\n isPrivate: 0,\n isHouseConnected: Boolean(isHouseConnected),\n status,\n companyId: Number(companyId),\n\n availableSpeed: Number(availableSpeed) as EAvailableSpeed,\n isHouseCottage: Boolean(isHouseCottage),\n };\n }\n\n return null;\n};\n","import { NextRouter } from 'next/router';\nimport { UrlObject } from 'url';\n\nimport { RequestDto } from '@r1-frontend/api-domru/api-request/v1/user/request-by-connection';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { isSomeEnum } from '@r1-frontend/shared/guards/isSomeEnum';\nimport { EPriceTypes } from '@r1-frontend/shared/types/EPriceTypes';\n\nimport { ETariffFilters } from './store/initialState';\nimport { TProduct } from './store/transformShopItem';\nimport { ITariffQueryParams } from './types';\n\nexport const buildProductsForRequest = (products: TProduct[]) => {\n return products\n .filter(item=> item.quantity > 0)\n .map(product => ({\n id: product.id,\n type: product.category,\n count: product.quantity,\n duration: product.selectedPrice.duration,\n }));\n};\n\n\n/**\n * Подготавливает список оборудования для передачи в запросе на создание договора\n */\nexport const getEquipmentsListByProps = (equipments: TProduct[]): Omit => {\n // рассрочка или собственность 1 - покупка, 5 - рассрочка\n let cost_type = EPriceTypes.Possess;\n let leasing_duration;\n\n const result = equipments.reduce((acc: number[], curr: TProduct) => {\n const { id, quantity, selectedPrice } = curr;\n\n if (quantity === 0 || !selectedPrice) {\n return acc;\n }\n\n if (selectedPrice.duration > 0) {\n cost_type = EPriceTypes.Leasing;\n leasing_duration = selectedPrice.duration;\n }\n\n acc.push(id); // идентификатор оборудования\n\n return acc;\n }, []);\n\n return {\n router: result,\n cost_type,\n leasing_duration,\n };\n};\n\n// @todo remove and use the useScroll hook (frontend/apps/b2c-domru/src/helpers/hooks/useScroll.ts)\nexport const scrollBy = (element: HTMLElement, paddingFromTop = 20): void => {\n const domRect = element.getBoundingClientRect();\n const headerHeight = 130;\n const top = domRect.top + window.pageYOffset - headerHeight - paddingFromTop;\n\n window.scrollTo({\n top,\n behavior: 'smooth',\n });\n};\n\n/* Оставляет только значения которые соответствуют перечислению ETariffFilters */\nexport const returnOnlyEnumValues = (values?: string | string[]): ETariffFilters[] | null => {\n if (!values) {\n return null;\n }\n\n const isMyEnum = isSomeEnum(ETariffFilters);\n\n if (Array.isArray(values)) {\n return values.reduce((acc: ETariffFilters[], curr) => {\n\n if (isMyEnum(curr)) {\n acc.push(curr);\n }\n\n return acc;\n }, []);\n }\n\n if (isMyEnum(values)) {\n return [values];\n }\n\n return null;\n};\n\nexport const getQueryParams = (params: NextRouter['query']): ITariffQueryParams => {\n if (!params) {\n return {};\n }\n const getStrValue = (value?: string | string[]) => {\n if (!value) {\n return value;\n }\n\n return typeof value === 'string' ? value : '';\n };\n\n return {\n salePackageId: getStrValue(params.salePackageId),\n tariffName: getStrValue(params.tariffName),\n monoTariff: getStrValue(params.monoTariff) as 'true' | 'false',\n tariffLine: getStrValue(params.tariffLine),\n filters: returnOnlyEnumValues(params.filters) || undefined,\n landingAvailable: getStrValue(params.landingAvailable),\n };\n};\n\nconst cleareEmptyFields = >(incomingObj: T): Partial => {\n const newObj: Partial = {};\n\n for (const key in incomingObj) {\n const value = incomingObj[key];\n if (value) {\n newObj[key] = value;\n }\n }\n\n return newObj;\n};\n\nexport const getFullBuyRoute = (queryParams: ITariffQueryParams): UrlObject => {\n // Удаляем пустые свойства\n const clearQueryParams = cleareEmptyFields(queryParams);\n\n return ({\n pathname: '/full-buy',\n query: {\n ...clearQueryParams,\n },\n });\n};\n\n/** @deprecated **/\nexport const sendAnalytics = (action: string, label = ''): void => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.fullBuy,\n action,\n label,\n });\n};\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nexport type TAvailableSuggestions = 'fio' | 'address';\n\nconst suggest = (what: TAvailableSuggestions) => (query: string): IRequest => ({\n uri: `suggest/${what}`,\n method: 'POST',\n body: JSON.stringify({ query }),\n});\n\nexport default suggest;\n","import suggest from '@r1-frontend/api-domru/dadata/suggest/suggest';\n\nconst fio = suggest('fio');\n\nexport default fio;\n","/**\n * Возвращает функцию для проверки принадлежности переданного значения указанному enum\n * @param e - enum\n * @returns isSomeEnum(Enum) => (value: any) => boolean;\n */\nexport const isSomeEnum = >(e: T) => (token: any): token is T[keyof T] => Object.values(e).includes(token as T[keyof T]);\n","export enum EPriceTypes {\n Possess = 1, // Покупка за полную стоимость\n Leasing = 5, // Покупка в рассрочку\n}\n","import { useMemo, useState } from 'react';\n\nimport { EResultPopupStatus } from '@r1-frontend/ui-react/components/popups/popupResult';\nimport PopupResult from '@r1-frontend/ui-react/components/popups/popupResult';\ninterface IPopupState {\n isOpen: boolean,\n title: string,\n text: string,\n type: EResultPopupStatus,\n}\n\nexport type TPopupState = Omit;\n\n/**\n * Returns a popup component, and a function to show it.\n */\nexport const useResultPopup = (onClickClose?: () => void): [() => JSX.Element, (nextState: TPopupState) => void] => {\n const [state, setState] = useState({\n isOpen: false,\n title: '',\n text: '',\n type: EResultPopupStatus.DEFAULT,\n });\n\n const onPopupResultClose = () => {\n setState(prevState => ({ ...prevState, isOpen: false }));\n typeof onClickClose === 'function' && onClickClose();\n };\n\n const result: [() => JSX.Element, (nextState: TPopupState) => void] = useMemo(() => (\n [\n () => ,\n (nextState: TPopupState) => setState({ isOpen: true, ...nextState }),\n ]\n ), [state]);\n\n return result;\n};\n","import styled, { keyframes } from 'styled-components';\n\nimport InputSimple from '@r1-frontend/ui-react/components/inputSimple';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { BoxShadow } from '@r1-frontend/ui-react/tokens/boxShadow';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n transform: translateY(-16px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n`;\n\nexport const InputAutocompleteContainer = styled(InputSimple)`\n margin-bottom: 0px !important;\n`;\n\nexport const Wrapper = styled.div`\n position: relative;\n width: 100%;\n flex-direction: column;\n`;\n\nexport const Suggestions = styled.div`\n position: absolute;\n overflow-y: auto;\n left: 0;\n top: 100%;\n width: 100%;\n max-height: 240px;\n margin-top: -10px;\n box-shadow: ${BoxShadow.M};\n border-radius: ${BorderRadius.componentRadius};\n animation: ${fadeIn} 0.2s ease-in-out;\n z-index: 10;\n background: ${COLORS.BgMain};\n`;\n\nexport const SuggestionItem = styled.div<{ isActive: boolean }>`\n width: 100%;\n min-height: 48px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n background-color: ${p => p.isActive ? COLORS.BgSecondary : COLORS.BgMain};\n ${FONTS.XS};\n color: ${COLORS.TextPrimary};\n padding: 8px 30px 8px 20px;\n transition: background-color linear .2s;\n cursor: pointer;\n text-align: left;\n \n &:hover {\n background-color: ${COLORS.BgSecondary};\n }\n`;\n","import React, { SyntheticEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport throttle from 'lodash/throttle';\n\nimport * as ST from './styled';\n\nexport interface IAutocomplete {\n value: string,\n onChange: (newValue: string) => void,\n onBlur?: (e: SyntheticEvent) => void,\n onLoadSuggestions: (input: string) => Promise,\n placeholder?: string,\n isNotValid?: boolean,\n errorMessage?: string,\n className?: string,\n throttleValue?: number,\n isDisabled?: boolean,\n}\n\nconst Autocomplete = ({\n value,\n onChange,\n onBlur,\n onLoadSuggestions,\n placeholder,\n isNotValid,\n errorMessage,\n className,\n throttleValue = 500,\n isDisabled = false,\n}: IAutocomplete): JSX.Element => {\n const inputRef = useRef();\n const wrapperRef = useRef();\n const throttled = useRef(throttle(newValue => onLoadSuggestions(newValue), throttleValue));\n const [suggestions, setSuggestions] = useState([]);\n const [isShow, setIsShow] = useState(false);\n const [activeIndex, setActiveIndex] = useState();\n\n const func = (e: MouseEvent) => {\n // @ts-ignore TS2345: Argument of type 'undefined' is not assignable to parameter of type 'EventTarget'.\n const clickInside = e.composedPath().includes(wrapperRef.current);\n if (!clickInside) {\n setIsShow(false);\n }\n };\n\n useEffect(() => {\n if (wrapperRef.current) {\n document.addEventListener('click', func);\n\n return () => {\n document.removeEventListener('click', func);\n };\n }\n }, [wrapperRef.current]);\n\n const fetchSuggestions = useCallback(async(_value) => {\n if (_value.length) {\n const result = await throttled.current(_value);\n if (!result) {\n return;\n }\n setSuggestions(result);\n } else {\n setSuggestions([]);\n }\n }, []);\n\n useEffect(() => {\n setIsShow(suggestions.length > 0);\n }, [suggestions]);\n\n const changeHandler = (event: React.ChangeEvent) => {\n const { value } = event.target;\n fetchSuggestions(value);\n onChange(value);\n };\n\n const suggestionClick = (suggestion: string, index?: number) => {\n onChange(suggestion);\n setActiveIndex(index);\n inputRef.current?.focus();\n setIsShow(false);\n };\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n if (e.nativeEvent.code === 'ArrowDown') {\n const newIndex = activeIndex === undefined || activeIndex + 1 >= suggestions.length\n ? 0\n : activeIndex + 1;\n setActiveIndex(newIndex);\n }\n if (e.nativeEvent.code === 'ArrowUp') {\n const newIndex = activeIndex === undefined || activeIndex - 1 < 0\n ? suggestions.length - 1\n : activeIndex - 1;\n setActiveIndex(newIndex);\n }\n if (e.nativeEvent.code === 'Enter') {\n if (activeIndex !== undefined) {\n suggestionClick(suggestions[activeIndex]);\n } else {\n onChange(value);\n setIsShow(false);\n }\n }\n };\n\n const handleOnFocus = () => {\n if (suggestions.length > 0) {\n setIsShow(true);\n }\n };\n\n // @ts-ignore TS2769: No overload matches this call.\n return \n \n {isShow && \n {suggestions.map((suggestion, index) => (\n suggestionClick(suggestion, index)}\n isActive={index === activeIndex}\n >\n {suggestion}\n \n ))}\n }\n ;\n};\n\nexport default Autocomplete;\n","// @ts-ignore\nimport { VALIDATION_REGEXP } from '@r1-frontend/ui-react/components/input';\n\nconst checkFioIsValid = (fio: string): boolean => {\n return VALIDATION_REGEXP['cyrillicName'].test(fio);\n};\n\nexport default checkFioIsValid;\n","const trimExtraSymbols = (str: string): string => {\n return str.trim().replace(/(^[-']*|[-']*$)/g, '');\n};\n\nexport default trimExtraSymbols;\n","import styled from 'styled-components';\n\nimport InputSimple, { phoneDecorator } from '@r1-frontend/ui-react/components/inputSimple';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport Autocomplete from '@r1-frontend/ui-react/organisms/Forms/PersonForm/Autocomplete';\n\nexport const PersonForm = styled.div`\n display: grid;\n grid-template-columns: 1.1fr 1fr;\n flex-wrap: nowrap;\n width: 100%;\n gap: 12px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n grid-template-columns: 100%;\n }\n`;\n\nexport const SAutocomplete = styled(Autocomplete)`\n width: 100%;\n`;\n\nexport const Input = styled(InputSimple)`\n margin-bottom: 0;\n\n [class*=\"InputError\"] {\n white-space: nowrap;\n }\n`;\n\nexport const PhoneInput = phoneDecorator(Input);\n\nexport const PhoneField = styled(PhoneInput)`\n width: 100%;\n`;\n\n","import React, { useState } from 'react';\n\nimport Button, { TButtonProps } from '@r1-frontend/ui-react/components/buttons/button';\nimport { TAutocompleteField } from '@r1-frontend/ui-react/organisms/Forms/PersonForm/Autocomplete/types';\nimport checkFioIsValid from '@r1-frontend/ui-react/organisms/Forms/PersonForm/helpers/checkFioIsValid';\nimport trimExtraSymbols from '@r1-frontend/ui-react/organisms/Forms/PersonForm/helpers/trimExtraSymbols';\n\nimport * as ST from './styled';\n\nexport interface IPersonFormProps {\n fio: string,\n phone: string,\n onChangeFio: (str: string) => void,\n onChangePhone: (str: string) => void,\n isNeedToBlockInvalidFio?: boolean,\n actionButtonProps?: Pick | undefined,\n onLoadSuggestions: (input: string) => Promise,\n}\n\nexport const PersonForm = ({\n fio,\n phone,\n onChangeFio,\n onChangePhone,\n isNeedToBlockInvalidFio = false,\n actionButtonProps,\n onLoadSuggestions,\n}: IPersonFormProps): JSX.Element => {\n const [fioInputData, setFioInputData] = useState({\n value: fio,\n isNotValid: false,\n });\n\n const changePhoneHandler = ({ value }: { value: string }) => {\n onChangePhone(value);\n };\n\n const changeFioHandler = (_person:string) => {\n if (isNeedToBlockInvalidFio) {\n const isReadyToInput = checkFioIsValid(_person);\n\n if (isReadyToInput) {\n const isNotValid = _person.length === 1;\n\n setFioInputData((prev) => ({\n ...prev,\n value: _person,\n isNotValid,\n }));\n onChangeFio(trimExtraSymbols(_person));\n }\n } else {\n onChangeFio(_person);\n }\n\n };\n\n const onBlurHandler = () => {\n if (isNeedToBlockInvalidFio) {\n setFioInputData((prev) => ({\n ...prev,\n value: trimExtraSymbols(fioInputData.value),\n }));\n }\n };\n\n return (\n <>\n \n \n \n \n {actionButtonProps &&\n {actionButtonProps.children}\n }\n \n );\n};\n"],"names":["ADDRESS_PARAM_NAME","MEGABIT_AVAIL_CODES_LIST","MEGABIT_SPEED","GIGABIT_SPEED","agreementCreationStatuses","getVerifiedAddress","storageObj","address","gigabitAvail","isHouseConnected","status","companyId","availableSpeed","isHouseCottage","EVerificationStatus","Number","isPrivate","Boolean","buildProductsForRequest","products","filter","item","quantity","map","product","id","type","category","count","duration","selectedPrice","getEquipmentsListByProps","equipments","leasing_duration","cost_type","EPriceTypes","router","reduce","acc","curr","push","scrollBy","element","paddingFromTop","domRect","getBoundingClientRect","headerHeight","top","window","pageYOffset","scrollTo","behavior","returnOnlyEnumValues","values","isMyEnum","isSomeEnum","ETariffFilters","Array","isArray","getQueryParams","params","getStrValue","value","salePackageId","tariffName","monoTariff","tariffLine","filters","undefined","landingAvailable","getFullBuyRoute","queryParams","clearQueryParams","incomingObj","newObj","key","cleareEmptyFields","pathname","query","what","uri","method","body","JSON","stringify","suggest","e","token","Object","includes","Possess","Leasing","useResultPopup","onClickClose","useState","isOpen","title","text","EResultPopupStatus","state","setState","onPopupResultClose","prevState","useMemo","PopupResult","onClose","nextState","fadeIn","keyframes","InputAutocompleteContainer","styled","InputSimple","Wrapper","Suggestions","BoxShadow","BorderRadius","COLORS","SuggestionItem","p","isActive","FONTS","onChange","onBlur","onLoadSuggestions","placeholder","isNotValid","errorMessage","className","throttleValue","isDisabled","inputRef","useRef","wrapperRef","throttled","throttle","newValue","suggestions","setSuggestions","isShow","setIsShow","activeIndex","setActiveIndex","func","composedPath","current","useEffect","document","addEventListener","removeEventListener","fetchSuggestions","useCallback","_value","result","length","suggestionClick","suggestion","index","focus","ST","ref","event","target","onKeyDown","nativeEvent","code","newIndex","data-test","onFocus","disabled","onClick","fio","VALIDATION_REGEXP","str","trim","replace","PersonForm","wideBreakpoints","SAutocomplete","Autocomplete","Input","PhoneInput","phoneDecorator","PhoneField","phone","onChangeFio","onChangePhone","isNeedToBlockInvalidFio","actionButtonProps","fioInputData","setFioInputData","_person","checkFioIsValid","prev","trimExtraSymbols","name","initialValue","Button","children"],"sourceRoot":""}