{"version":3,"file":"static/chunks/176-fcaf19dd1a324b3f.js","mappings":"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","sources":["webpack://_N_E/./src/components/ConnectionConditions/ConnectionConditions.tsx","webpack://_N_E/../../packages/ui-react/src/components/loaders/InteractiveLoader/styled.tsx","webpack://_N_E/../../packages/ui-react/src/components/loaders/InteractiveLoader/index.tsx","webpack://_N_E/./src/components/InteractiveLoader.tsx","webpack://_N_E/./src/features/full-buy/DescribedListItem/styled.ts","webpack://_N_E/./src/features/full-buy/DescribedListItem/index.tsx","webpack://_N_E/./src/features/full-buy/ContactAddress/ConfirmedForm/styled.ts","webpack://_N_E/./src/features/full-buy/ContactAddress/ConfirmedForm/index.tsx","webpack://_N_E/./src/features/full-buy/ContactAddress/useStorageAddress.ts","webpack://_N_E/./src/features/full-buy/InfoBlock/Item/styled.tsx","webpack://_N_E/./src/features/full-buy/InfoBlock/Item/index.tsx","webpack://_N_E/./src/features/full-buy/InfoBlock/styled.tsx","webpack://_N_E/./src/features/full-buy/InfoBlock/index.tsx","webpack://_N_E/./src/features/full-buy/functions.ts","webpack://_N_E/./src/features/full-buy/store/selectors/selectCurrentTariff.ts","webpack://_N_E/./src/helpers/hooks/useValueByBreakpoint.ts","webpack://_N_E/../../packages/shared/src/hooks/usePartialList.ts","webpack://_N_E/../../packages/ui-react/src/components/svg/building/House.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/main/Danger.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport { UnorderedList } from '@r1-frontend/ui-react/components/List';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { InfoCircleFlip } from '@r1-frontend/ui-react/components/svg/main';\nimport ControlElement from '@r1-frontend/ui-react/components/typography/controlElement';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { IndentContainer, ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { useOnceExecute } from '@r1-frontend/shared/hooks/useOnceExecute';\n\ntype TConnectionConditions = {\n isVillage?: boolean,\n analyticsCallback: () => void,\n}\n\nconst getList = (isVillage = false) => {\n return isVillage\n ? [\n 'Доставка необходимого оборудования.',\n 'Настройка услуг и личного кабинета.',\n 'Помощь с подписанием договора на Госуслугах.',\n 'Прокладка интернет-кабеля от оборудования провайдера до вашего дома.',\n 'Прокладка кабеля до 5 метров внутри дома. За каждый дополнительный метр нужно будет доплатить.',\n 'При необходимости поможем спрятать кабель или настроить ваше собственное оборудование. Эти услуги оплачиваются отдельно.',\n 'Во время работ стоимость может измениться, если для прокладки сети потребуется больше материалов.',\n ]\n : [\n 'Выезд сервисного инженера.',\n 'Доставка необходимого оборудования.',\n 'Настройка услуг и личного кабинета.',\n 'Помощь с подписанием договора на Госуслугах.',\n 'Прокладка кабеля до 5 метров внутри квартиры. За каждый дополнительный метр нужно будет доплатить.',\n 'При необходимости поможем спрятать кабель или настроить ваше собственное оборудование. Эти услуги оплачиваются отдельно.',\n ];\n};\n\nconst ConnectionConditions = ({ isVillage, analyticsCallback }: TConnectionConditions): JSX.Element => {\n const [isOpen, changePopupState] = useState(false);\n\n\n const handleClosePopup = () => {\n changePopupState(false);\n };\n\n const triggerAnalytics = useOnceExecute(() => {\n analyticsCallback();\n });\n\n\n const handleOpenPopup = () => {\n triggerAnalytics();\n changePopupState(true);\n };\n\n const list = useMemo(() => getList(isVillage), [isVillage]);\n\n return (\n <>\n Подробнее\n\n \n \n

Что входит в стоимость?

\n \n \n {React.Children.map(list, item => )}\n \n\n \n \n \n \n
\n
\n \n );\n};\n\nexport default ConnectionConditions;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 16px;\n width: 100%;\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n gap: 18px;\n }\n`;\n\nexport const Video = styled.video`\n &:focus { outline :none; }\n clip-path: inset(1px 1px);\n`;\n\nexport const ProgressBarWrapper = styled.div`\n width: 100%; \n max-width: 260px;\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n margin-top: 6px;\n max-width: 343px;\n }\n`;\n\nexport const StatusContainer = styled.div`\n position: relative;\n width: 100%;\n min-height: 32px;\n`;\n\nexport const StatusItem = styled.div<{ delay: number }>`\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n background-color: ${COLORS.BgMain};\n display: flex;\n justify-content: center;\n align-items: center;\n\n &:first-child {\n animation-name: status-animation;\n animation-delay: ${({ delay }) => delay}s;\n animation-duration: .2s;\n z-index: 20;\n }\n\n &:nth-child(n+3) {\n display: none;\n }\n\n @keyframes status-animation {\n from { opacity: 1; }\n to { opacity: 0; }\n }\n`;\n\n\n","import { AnimationEvent, useEffect, useState } from 'react';\n\nimport SolidProgressBar from '@r1-frontend/ui-react/components/SolidProgressBar';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { useTimer } from '@r1-frontend/shared/hooks/useTimer';\n\nimport * as ST from './styled';\n\nexport interface InteractiveLoaderProps {\n textItems: string[],\n delay: number,\n loopSegmentAtIndex?: number,\n videoSrc: string,\n finished?: boolean,\n className?: string,\n}\n\nconst InteractiveLoader = ({\n textItems = [],\n delay = 5,\n loopSegmentAtIndex = 0,\n videoSrc,\n finished = false,\n className,\n}: InteractiveLoaderProps) => {\n const { seconds, start, timeStatus } = useTimer();\n\n const [progress, setProgress] = useState(0);\n const [textStatusCounter, setTextStatusCounter] = useState(0);\n const [items, setItems] = useState(textItems);\n\n const totalSeconds = textItems.length * delay;\n const percent = 1 - Math.round(seconds * 100 / totalSeconds) * 0.01;\n\n const animationStartHandler = () => {\n if (loopSegmentAtIndex && textStatusCounter === textItems.length - 1) {\n setItems(textItems.slice(loopSegmentAtIndex));\n }\n };\n\n const animationEndHandler = (event: AnimationEvent) => {\n if (loopSegmentAtIndex && textStatusCounter < textItems.length) {\n setTextStatusCounter(prev => prev + 1);\n }\n // @ts-ignore\n event.target?.parentNode.appendChild(event.target);\n };\n\n useEffect(() => {\n switch (timeStatus) {\n case 'waiting':\n setProgress(0);\n break;\n case 'progress':\n setProgress(percent);\n break;\n default:\n setProgress(1);\n break;\n }\n }, [percent, timeStatus]);\n\n useEffect(() => {\n start(totalSeconds);\n }, []);\n\n return (\n \n \n\n \n \n \n\n \n \n {items.map((item, idx) => (\n {item}\n ))\n }\n \n \n \n );\n};\n\nexport default InteractiveLoader;\n","import InteractiveLoaderComponent, {\n InteractiveLoaderProps,\n} from '@r1-frontend/ui-react/components/loaders/InteractiveLoader';\n\ntype TBaseProps = Omit\n\ntype TProps = TBaseProps & {\n videoSrc?: string,\n}\nconst InteractiveLoader = ({\n videoSrc = '/static/images/full-buy/loaders/dog_in_box.mp4',\n textItems,\n delay,\n loopSegmentAtIndex,\n finished,\n className,\n}: TProps) =>\n ;\n\nexport default InteractiveLoader;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const DescribedListItem = styled.div`\n display: grid;\n grid-template-rows: 20px auto;\n grid-template-columns: 24px auto;\n grid-column-gap: 12px;\n`;\n\nexport const Image = styled.img`\n grid-column-start: 1;\n grid-column-end: 1;\n grid-row-start: 1;\n grid-row-end: 2;\n`;\n\nexport const Title = styled.div`\n grid-column-start: 2;\n grid-row-start: 1;\n\n ${FONTS.XS};\n color: ${COLORS.TextHint};\n white-space: nowrap;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.XXS};\n }\n`;\n\nexport const Text = styled.span`\n grid-column-start: 2;\n grid-row-start: 2;\n\n ${FONTS.S};\n color: ${COLORS.TextPrimary};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.XS};\n }\n`;\n","import * as ST from './styled';\n\nexport type DescribedListItemProps = {\n title: string,\n value: string | number,\n imagePath: string,\n};\n\nexport const DescribedListItem = (\n {\n title,\n value,\n imagePath,\n ...rest\n }: DescribedListItemProps,\n): JSX.Element => {\n return (\n \n \n {title}\n {value}\n \n );\n};\n","import styled from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nexport const ConfirmedForm = styled.div`\n flex-wrap: nowrap;\n align-items: center;\n width: 100%;\n gap: 16px;\n\n @media (max-width: ${wideBreakpoints.mobile}) { \n flex-direction: column;\n align-items: flex-start;\n }\n`;\n\nexport const ContactsList = styled.div`\n flex-wrap: nowrap;\n width: 100%;\n gap: 16px;\n\n @media (max-width: ${wideBreakpoints.mobile}) { \n flex-direction: column;\n align-items: flex-start;\n }\n`;\n\nexport const Button = styled(BaseButton)`\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n }\n`;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { selectAddressByString } from '@r1-frontend/entities/ContactAddress/selectors/selectAddressByString';\n\nimport { btnSizes, btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\n\nimport { DescribedListItem } from '~/src/features/full-buy/DescribedListItem';\nimport { TState } from '~/src/store';\n\nimport * as ST from './styled';\n\ninterface IConfirmedFormProps {\n isDisableBtn?: boolean,\n onEdit: () => void,\n}\n\nexport const ConfirmedForm = ({ onEdit, isDisableBtn }: IConfirmedFormProps): JSX.Element => {\n const {\n addressStr,\n } = useSelector((state: TState) => ({\n addressStr: selectAddressByString(state),\n }));\n\n return (\n \n \n \n \n\n \n Изменить\n \n \n );\n};\n","import { useEffect, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { setAddressVerification } from '@r1-frontend/entities/ContactAddress/actions/checkAddress';\nimport { fillAddressAction } from '@r1-frontend/entities/ContactAddress/actions/fillAddress';\n\nimport { ADDRESS_PARAM_NAME, getVerifiedAddress } from '~/src/features/full-buy/consts';\nimport { getSessionStorageByKey } from '~/src/helpers/storage';\n\n/**\n * Получает верифицированный адрес из хранилища и записывает в стор\n */\nexport const useStorageAddress = () => {\n const dispatch = useDispatch();\n\n const defaultAddress = useMemo(() => {\n const resp = getSessionStorageByKey(ADDRESS_PARAM_NAME);\n return getVerifiedAddress(resp);\n }, []);\n\n useEffect(() => {\n if (defaultAddress && defaultAddress.address) {\n dispatch(setAddressVerification(defaultAddress));\n dispatch(fillAddressAction(defaultAddress.address));\n sessionStorage.removeItem(ADDRESS_PARAM_NAME);\n }\n }, []);\n};\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const Wrapper = styled.div`\n flex-direction: row;\n gap: 12px;\n`;\n\nexport const IconWrapper = styled.div<{ url: string }>`\n width: 36px;\n &:before {\n display: block;\n position: relative;\n content: \"\";\n width: 24px;\n height: 24px;\n background: url(${p => p.url}) no-repeat;\n background-size: contain;\n }\n`;\n\nexport const ContentWrapper = styled.div`\n flex-direction: column;\n max-width: calc(100% - 36px);\n`;\n\nexport const Title = styled.div`\n ${FONTS.XS};\n color: ${COLORS.TextHint};\n`;\n\nexport const Content = styled.div`\n ${FONTS.S};\n color: ${COLORS.TextPrimary};\n`;\n","import { FC, ReactNode } from 'react';\n\nimport * as ST from './styled';\n\ninterface IProps {\n icon: string | ReactNode,\n title?: string,\n content?: string | ReactNode,\n}\n\nconst InfoBlockItem: FC = ({ icon, title, content }) => {\n\n return (\n \n {icon}\n \n {title && {title}}\n {content}\n \n \n );\n};\n\nexport default InfoBlockItem;\n","import styled from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { TStyles } from '~/src/features/movix-new/ContentCard';\n\nexport const Wrapper = styled.div<{ isRightSide?: boolean, styles?: TStyles }>`\n flex-direction: column;\n margin-bottom: 24px;\n width: 100%;\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n margin-bottom: 40px;\n }\n\n ${({ styles }) => styles}\n`;\n\nexport const Header = styled.div`\n ${FONTS.H3};\n margin-bottom: 16px;\n white-space: pre-wrap;\n \n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.H4};\n }\n`;\n\nexport const BlockWrapper = styled.div`\n flex-direction: column;\n width: 100%;\n\n & > div {\n margin-bottom: 20px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n`;\n\nexport const InfoBlock = styled.div<{ toggled?: boolean, hasTitle?: boolean, styles?: TStyles }>`\n padding: ${({ hasTitle }) => hasTitle ? '12px 12px 16px 24px' : '24px'};\n background-color: ${COLORS.BgSurface};\n display: flex;\n flex-direction: column;\n width: 100%;\n border-radius: ${BorderRadius.OuterBlockRadius};\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n max-width: none;\n }\n\n @media (max-width: 432px) {\n padding: 16px 20px;\n }\n\n ${({ styles }) => styles}\n`;\n\nexport const Title = styled.p<{ styles?: TStyles }>`\n ${FONTS.H4};\n color: ${COLORS.TextPrimary};\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n ${FONTS.L};\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.H5};\n }\n\n ${({ styles }) => styles}\n`;\n\nexport const Content = styled.div<{ toggled?: boolean, styles?: TStyles }>`\n flex-direction: column;\n align-items: flex-start;\n align-content: flex-start;\n // cubic-bezier instead of linear, so the animation will be smooth almost always\n transition: max-height 0.3s cubic-bezier(0, 1, 0, 1);\n padding-right: 12px;\n overflow: hidden;\n max-height: ${({ toggled }) => toggled ? '0px' : '1000px'};\n visibility: ${({ toggled }) => toggled ? 'hidden' : 'visible'};\n box-sizing: border-box;\n gap: 16px;\n grid-gap: 16px;\n\n ${({ styles }) => styles}\n`;\n\nexport const ButtonToggle = styled(BaseButton)`\n height: 40px;\n width: 40px;\n & > div, & svg {\n height: 24px;\n width: 24px;\n }\n`;\n\nexport const TitleRow = styled.div<{ toggled?: boolean }>`\n flex-direction: row;\n margin-bottom: ${({ toggled }) => toggled ? '0' : '12px'};\n justify-content: space-between;\n align-items: center;\n`;\n","import React, { FC, useState } from 'react';\n\nimport { btnSizes, btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\n\ntype TStyles = string | FlattenSimpleInterpolation;\n\nimport { FlattenSimpleInterpolation } from 'styled-components';\n\nimport * as ST from './styled';\n\ninterface IInfoBlockCustomStyles {\n wrapper?: TStyles,\n infoBlock?: TStyles,\n title?: TStyles,\n content?: TStyles,\n}\n\ninterface IProps {\n children?: string | number | JSX.Element | JSX.Element[] | undefined,\n title?: string,\n header?: string,\n isCollapsable?: boolean,\n isCollapsedByDefault?: boolean,\n bottomContent?: string | number | JSX.Element | JSX.Element[],\n isRightSide?: boolean,\n customStyles?: IInfoBlockCustomStyles,\n onToggle?: () => void,\n}\n\nconst InfoBlock: FC = ({\n title,\n header,\n isCollapsable = false,\n isCollapsedByDefault = false,\n children,\n bottomContent,\n isRightSide,\n customStyles,\n onToggle,\n}) => {\n const [toggled, setToggled] = useState(isCollapsedByDefault);\n\n const toggleBlock = () => {\n if (isCollapsable) {\n setToggled(!toggled);\n onToggle && onToggle();\n }\n };\n\n return (\n \n {header && {header}}\n \n \n { title && \n {title}\n {isCollapsable &&\n \n }\n \n }\n \n {children}\n \n {bottomContent}\n \n \n \n );\n};\n\nexport default InfoBlock;\n","import { doRequest } from '@r1-frontend/do-request';\nimport {\n ERequestStatus,\n requestByConnection,\n RequestDto,\n ResponseDto,\n} from '@r1-frontend/api-domru/api-request/v1/user/request-by-connection';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { ACTIONS, CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { EProductsId } from '@r1-frontend/shared/types/EProductsId';\n\nimport { getEquipmentsListByProps } from '~/src/features/full-buy/helpers';\n\nimport { IAdditionalProduct } from './store/helpers/tariffTransformerHelpers';\nimport { TProduct } from './store/transformShopItem';\nimport { MEGABIT_AVAIL_CODES_LIST, MEGABIT_SPEED } from './consts';\n\ninterface IGetErrorMessage {\n isDouble?: boolean,\n isFromCache?: boolean,\n selfErrMsg?: string,\n}\n\nexport const getErrorMessage = ({ isDouble = false, isFromCache = false, selfErrMsg }: IGetErrorMessage): string => {\n enum EMessages {\n DOUBLE_AGREEMENT_MSG = 'Договор создан, но к указанному номеру телефона уже привязан другой договор. Специалист перезвонит вам для уточнения деталей.', // Не используемое сообщение, уточнить в каком случае должно выводиться\n FROM_CACHE_MSG = 'Вы уже оставили заявку, ожидайте звонка специалиста',\n SKIP_DOUBLE_AGREEMENT_MSG = 'Мы получили вашу заявку, но по указанному адресу есть активный договор. Специалист позвонит вам для уточнения деталей.',\n ERROR_REQUEST_AGREEMENT_MSG = 'Не удалось создать договор. Наш специалист перезвонит вам для решения вопроса.',\n SKIP_ERROR_REQUEST_AGREEMENT_MSG = 'Не удалось оставить заявку. Наш специалист перезвонит вам для решения вопроса.',\n }\n\n if (selfErrMsg) {\n return EMessages.SKIP_ERROR_REQUEST_AGREEMENT_MSG;\n }\n if (isFromCache) {\n return EMessages.FROM_CACHE_MSG;\n }\n if (isDouble) {\n return EMessages.SKIP_DOUBLE_AGREEMENT_MSG;\n }\n return EMessages.SKIP_ERROR_REQUEST_AGREEMENT_MSG;\n};\n\ninterface ISubmitRequestProps {\n isMono: boolean,\n fio: string,\n phone: string,\n csrf: string,\n sale_package_id: number | undefined,\n tariff_name: string | undefined,\n additionalProducts: IAdditionalProduct[],\n products: TProduct[],\n street?: string,\n house?: string,\n flat?: string,\n address?: string,\n shouldConnect: boolean,\n}\n\n/**\n * Отправка заявки на подключение\n */\nexport const submitRequest = async({\n isMono,\n fio,\n phone,\n csrf,\n sale_package_id,\n tariff_name,\n additionalProducts,\n products,\n shouldConnect,\n ...restData\n}: ISubmitRequestProps) => {\n const requiredAdditionalProducts = additionalProducts.filter(el => el.required);\n\n const equipmentsList = getEquipmentsListByProps([...products, ...requiredAdditionalProducts]);\n\n const dataParams: RequestDto = {\n check_call_type: window.location.pathname,\n fio,\n phone,\n plan: sale_package_id,\n product_id: [EProductsId.internet],\n router: equipmentsList.router,\n cost_type: equipmentsList.cost_type, // рассрочка или собственность\n leasing_duration: equipmentsList.leasing_duration, // Срок рассрочки\n csrf,\n ...restData,\n };\n\n if (!isMono) {\n dataParams.product_id.push(EProductsId.tv);\n }\n\n const isAgreement = shouldConnect;\n\n const resp = await doRequest.apiRequest(requestByConnection(dataParams));\n if (resp.isSuccess) {\n const { status, message } = resp.payload;\n const ok = !!status;\n\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.applicationForm,\n action: ok ? ACTIONS.finished : ACTIONS.error,\n label: `${isAgreement ? 'create agreement' : 'address verification'} ${tariff_name} ${message}`,\n });\n\n return { ok, message, status: status ? ERequestStatus.success : ERequestStatus.error };\n } else {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.applicationForm,\n action: ACTIONS.error,\n label: `${isAgreement ? 'create agreement' : 'address verification'} ${tariff_name}`,\n });\n\n return {\n ok: false,\n message: 'Не удалось отправить заявку.',\n status: ERequestStatus.error,\n id: undefined,\n };\n }\n};\n\n/**\n * Требуется ли гигабитная сеть для тарифа\n */\nexport const isGigaSpeedRequired = (tariffSpeed: number) => tariffSpeed > MEGABIT_SPEED;\n\n/**\n * Есть ли гигабитная сеть на адресе\n */\nexport const isGigabitCanConnected = (gigabitAvail: number) => MEGABIT_AVAIL_CODES_LIST.includes(gigabitAvail);\n\n/**\n * Возвращает можем ли подключить выбранный тариф, после проверки адреса\n */\nexport const isTariffCanConnected = (\n isHouseConnected: boolean,\n requiredGigaSpeed: boolean,\n gigabitCanConnect: boolean,\n) => {\n return requiredGigaSpeed\n ? (isHouseConnected && gigabitCanConnect)\n : isHouseConnected;\n};\n\n/* Получаем стоимость обязательного оборудования */\nexport const getAdditionalProductsCosts = (additionalProducts: IAdditionalProduct[]): { monthly: number, once: number } => {\n const requiredProducts = additionalProducts.filter(product => product.required);\n return requiredProducts.reduce<{ monthly: number, once: number }>((acc, curr) => {\n const { selectedPrice } = curr;\n if (!selectedPrice) {\n return { monthly: 0, once: 0 };\n }\n\n return {\n monthly: acc.monthly + (selectedPrice.duration ? selectedPrice.cost : 0),\n once: acc.once + (!selectedPrice.duration ? selectedPrice.cost : 0),\n };\n }, { monthly: 0, once: 0 });\n};\n\n/**\n * Подсчитывает общую стоимость продуктов (рассрочка и единовременно)\n */\nexport const getProductsCosts = (products: TProduct[]): { monthly: number, once: number } => {\n const productsWithQuantity = products.filter(product => product.quantity);\n\n return productsWithQuantity.reduce((acc, curr) => {\n const { selectedPrice, quantity } = curr;\n if (!selectedPrice) {\n return acc;\n }\n\n const isInstallment = !!selectedPrice.duration;\n\n const currCost = selectedPrice.cost * quantity;\n\n return {\n monthly: isInstallment ? acc.monthly + currCost : acc.monthly,\n once: isInstallment ? acc.once : acc.once + currCost,\n };\n }, { monthly: 0, once: 0 });\n};\n\n/**\n * Возвращает итоговую месячную и единоразовую стоимость выбранных продуктов / тарифов\n */\nexport const calculateTotalPrices = (\n price = 0,\n connectPrice = 0,\n products: TProduct[] = [],\n): { monthlyPayment: number, oncePayment: number } => {\n\n // Стоимость выбранного оборудования\n const productsCost = getProductsCosts(products);\n\n return {\n monthlyPayment: price + productsCost.monthly,\n oncePayment: connectPrice + productsCost.once,\n };\n};\n","import { createSelector } from 'reselect';\n\nimport { TState } from '~/src/store';\n\nimport type { IFullBuyTariff } from '../tariffTransformer';\n\n// Выбирает тариф по salePackageId или alias\nexport const selectCurrentTariff = createSelector(\n [\n (state: TState) => state.fullBuy,\n ],\n ({ tariffs, selectedTariff }): IFullBuyTariff | null => {\n if (!selectedTariff) {\n return null;\n }\n\n if ('salePackageId' in selectedTariff) {\n const { salePackageId } = selectedTariff;\n const currentTariff = tariffs.find(tariff => tariff.sale_package_id === salePackageId);\n return currentTariff || null;\n } else {\n const { tariffNameAlias, monoTariff } = selectedTariff;\n const currentTariff = tariffs.filter(el => el.isMono === monoTariff).find(tariff => tariff.alias === tariffNameAlias);\n return currentTariff || null;\n }\n },\n);\n","/* eslint-disable complexity */\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\ninterface IProps {\n desktop: T,\n sDesktop?: T,\n laptop?: T,\n tablet?: T,\n mobile?: T,\n}\n\n/**\n * Проверяет ширину экрана и возвращает значение соответствующее текущему брейкпоинту\n * обязательно только значение для desktop, остальные можно опускать\n * пример: если мобильная ширина - вернет значение переданное для мобилки\n */\nexport const useValueByBreakpoint = ({\n desktop,\n sDesktop,\n laptop,\n tablet,\n mobile,\n}: IProps): T => {\n const isSDesktop = useMatchMediaByWidth(sDesktop ? wideBreakpoints.sDesktop : '');\n const isLaptop = useMatchMediaByWidth(laptop ? wideBreakpoints.laptop : '');\n const isTablet = useMatchMediaByWidth(tablet ? wideBreakpoints.tablet : '');\n const isMobile = useMatchMediaByWidth(mobile ? wideBreakpoints.mobile : '');\n\n switch (true) {\n case (isMobile && !!mobile):\n return mobile || desktop;\n case (isTablet && !!tablet):\n return tablet || desktop;\n case (isLaptop && !!laptop):\n return laptop || desktop;\n case (isSDesktop && !!sDesktop):\n return sDesktop || desktop;\n default:\n return desktop;\n }\n};\n","import { useMemo, useState } from 'react';\n\n/**\n * Возвращает часть списка / весь список.\n * Используется для скрытия части элементов в интерфейсе (скрыть/показать)\n * @param items - переданный список\n * @param partialCount - размер урезанного списка\n * @param startState - начальное состояние true - урезать, false - возвращать весь список\n * @returns [ resultItems - итоговый список\n isPartial - метка, урезанный или нет\n setIsPartial - функция для управления ]\n */\nexport function usePartialList(items: T[], partialCount = 3, startState = true): [T[], boolean, (value: boolean) => void] {\n const [isPartial, setIsPartial] = useState(startState);\n\n const toggleState = (value: boolean) => {\n setIsPartial(value);\n };\n\n return useMemo(() => {\n const resultItems = isPartial ? items.slice(0, partialCount) : items;\n return ([\n resultItems,\n isPartial,\n toggleState,\n ]);\n }, [isPartial, items, partialCount]);\n}\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst House = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return (\n <>\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default createSvg(\n House,\n 'house',\n);\n","import { createSvg } from '../createSvg';\n\nconst Danger = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return <>\n \n \n \n \n \n \n \n ;\n};\n\nexport default createSvg(\n Danger,\n 'danger',\n);\n"],"names":["isVillage","analyticsCallback","useState","isOpen","changePopupState","handleClosePopup","triggerAnalytics","useOnceExecute","list","useMemo","getList","ControlElement","type","Icon","InfoCircleFlip","onClick","DefaultPopup","onClose","$zIndex","IndentContainer","$desktop","$mobile","H3","ListContainer","$size","UnorderedList","$color","COLORS","React","item","Paragraph4","as","dangerouslySetInnerHTML","__html","ButtonGroup","Button","bType","size","Wrapper","styled","wideBreakpoints","Video","ProgressBarWrapper","StatusContainer","StatusItem","delay","textItems","loopSegmentAtIndex","videoSrc","finished","className","useTimer","seconds","start","timeStatus","progress","setProgress","textStatusCounter","setTextStatusCounter","items","setItems","totalSeconds","length","percent","Math","round","animationStartHandler","slice","animationEndHandler","event","prev","target","parentNode","appendChild","useEffect","ST","src","autoPlay","muted","preload","loop","playsInline","width","height","data-test","SolidProgressBar","background","color","borderRadius","map","idx","onAnimationEnd","onAnimationStart","InteractiveLoaderComponent","DescribedListItem","Image","Title","FONTS","Text","title","value","imagePath","rest","alt","ConfirmedForm","ContactsList","BaseButton","onEdit","isDisableBtn","useSelector","state","addressStr","selectAddressByString","btnTypes","btnSizes","disabled","useStorageAddress","dispatch","useDispatch","defaultAddress","resp","getSessionStorageByKey","ADDRESS_PARAM_NAME","getVerifiedAddress","address","setAddressVerification","fillAddressAction","sessionStorage","removeItem","ContentWrapper","p","url","Content","icon","content","styles","Header","BlockWrapper","InfoBlock","hasTitle","BorderRadius","toggled","ButtonToggle","TitleRow","header","isCollapsable","isCollapsedByDefault","children","bottomContent","isRightSide","customStyles","onToggle","setToggled","wrapper","infoBlock","iconsSprite","symbolId","getErrorMessage","isDouble","isFromCache","selfErrMsg","EMessages","SKIP_ERROR_REQUEST_AGREEMENT_MSG","FROM_CACHE_MSG","SKIP_DOUBLE_AGREEMENT_MSG","submitRequest","isMono","fio","phone","csrf","sale_package_id","tariff_name","additionalProducts","products","shouldConnect","restData","requiredAdditionalProducts","equipmentsList","dataParams","isAgreement","status","message","ok","filter","el","required","getEquipmentsListByProps","check_call_type","window","location","pathname","plan","product_id","EProductsId","router","cost_type","leasing_duration","push","doRequest","requestByConnection","isSuccess","payload","dataLayerPush","EVENTS","category","CATEGORIES","action","ACTIONS","label","ERequestStatus","id","undefined","isGigaSpeedRequired","tariffSpeed","MEGABIT_SPEED","isGigabitCanConnected","gigabitAvail","MEGABIT_AVAIL_CODES_LIST","isTariffCanConnected","isHouseConnected","requiredGigaSpeed","gigabitCanConnect","getProductsCosts","product","quantity","reduce","acc","curr","selectedPrice","isInstallment","duration","currCost","cost","monthly","once","calculateTotalPrices","price","connectPrice","productsCost","monthlyPayment","oncePayment","selectCurrentTariff","createSelector","fullBuy","tariffs","selectedTariff","salePackageId","find","tariff","tariffNameAlias","monoTariff","alias","useValueByBreakpoint","desktop","sDesktop","laptop","tablet","mobile","isSDesktop","useMatchMediaByWidth","isLaptop","isTablet","usePartialList","partialCount","startState","isPartial","setIsPartial","toggleState","createSvg","strokeWidth","g","path","d","strokeMiterlimit","strokeLinecap","strokeLinejoin"],"sourceRoot":""}