{"version":3,"file":"static/chunks/9684.bcdbe3c95e7b9fa2.js","mappings":"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","sources":["webpack://_N_E/./src/components/AdaptiveNukaCarousel/styled.ts","webpack://_N_E/./src/components/AdaptiveNukaCarousel/index.tsx","webpack://_N_E/./src/components/CheckAddressMapConnect/constants.ts","webpack://_N_E/./src/components/ThrobberWithBg/index.tsx","webpack://_N_E/./src/components/CheckAddressMapConnect/ResultForm/constants.ts","webpack://_N_E/./src/components/CheckAddressMapConnect/EditableAddressForm/styled.ts","webpack://_N_E/./src/components/CheckAddressMapConnect/EditableAddressForm/index.tsx","webpack://_N_E/../../packages/entities/src/ContactDetail/selectors/isPersonDataFilled.ts","webpack://_N_E/./src/components/CheckAddressMapConnect/EditableContactsForm/styled.ts","webpack://_N_E/./src/components/CheckAddressMapConnect/EditableContactsForm/index.tsx","webpack://_N_E/./src/components/CheckAddressMapConnect/ResultForm/styled.ts","webpack://_N_E/./src/components/CheckAddressMapConnect/ResultForm/index.tsx","webpack://_N_E/./src/components/CheckAddressMapConnect/styled.ts","webpack://_N_E/./src/components/CheckAddressMapConnect/index.tsx","webpack://_N_E/./src/components/Equipment/form/requestForm.js","webpack://_N_E/./src/components/Equipment/internet/orderPopup.js","webpack://_N_E/./src/components/InterestingCarousel/styled.ts","webpack://_N_E/./src/components/InterestingCarousel/InterestingCard/styled.ts","webpack://_N_E/./src/components/InterestingCarousel/InterestingCard/index.tsx","webpack://_N_E/./src/components/InterestingCarousel/CustomArrows/styled.ts","webpack://_N_E/./src/components/InterestingCarousel/CustomArrows/index.tsx","webpack://_N_E/./src/components/InterestingCarousel/index.tsx","webpack://_N_E/./src/components/PersonForm/index.tsx","webpack://_N_E/./src/features/full-buy/TariffElementNew/TariffElement.tsx","webpack://_N_E/./src/features/full-buy/TariffElementNew/components/ButtonElement/styled.ts","webpack://_N_E/./src/features/full-buy/TariffElementNew/components/ButtonElement/index.tsx","webpack://_N_E/./src/features/full-buy/TariffElementNew/components/ImageElement/index.tsx","webpack://_N_E/./src/features/full-buy/TariffElementNew/components/ImageElement/styled.ts","webpack://_N_E/./src/features/full-buy/TariffElementNew/styled.ts","webpack://_N_E/./src/features/index/Banners/PromoBannersSection/styled.ts","webpack://_N_E/./src/features/index/Banners/PromoBannersSection/index.tsx","webpack://_N_E/./src/features/index/Banners/TopBanners/useGaBanner.tsx","webpack://_N_E/./src/features/index/ab/getDefaultFilter.ts","webpack://_N_E/./src/features/index/Banners/TopBanners/Custom/styled.tsx","webpack://_N_E/./src/features/index/Banners/TopBanners/Custom/index.tsx","webpack://_N_E/./src/features/index/Banners/TopBanners/Long/styled.tsx","webpack://_N_E/./src/features/index/Banners/TopBanners/Long/index.tsx","webpack://_N_E/./src/features/index/Banners/TopBanners/Simple/styled.tsx","webpack://_N_E/./src/features/index/Banners/TopBanners/Simple/index.tsx","webpack://_N_E/./src/features/index/Banners/TopBanners/SimpleTopSale/index.tsx","webpack://_N_E/./src/features/index/Banners/TopBanners/styled.tsx","webpack://_N_E/./src/features/index/Banners/TopBanners/index.tsx","webpack://_N_E/./src/features/index/Connect/FormConnect/styled.ts","webpack://_N_E/./src/features/index/Connect/FormConnect/index.tsx","webpack://_N_E/./src/features/index/Connect/IndexProvider/styled.tsx","webpack://_N_E/./src/features/index/Connect/IndexProvider/index.tsx","webpack://_N_E/./src/features/index/Connect/TextConnect/styled.tsx","webpack://_N_E/./src/features/index/Connect/TextConnect/index.tsx","webpack://_N_E/./src/features/index/Connect/styled.tsx","webpack://_N_E/./src/features/index/Connect/index.tsx","webpack://_N_E/./src/features/index/HitsCarousel/index.tsx","webpack://_N_E/./src/features/index/HitsCarousel/useOrderPopup.tsx","webpack://_N_E/../../packages/ui-kit/src/atoms/anchor/index.tsx","webpack://_N_E/../../packages/ui-kit/src/atoms/button/helpers/getAnimation.ts","webpack://_N_E/../../packages/ui-kit/src/atoms/button/helpers/getColors.ts","webpack://_N_E/../../packages/ui-kit/src/atoms/button/helpers/getResponsiveSizeStyles.ts","webpack://_N_E/../../packages/ui-kit/src/atoms/button/index.tsx","webpack://_N_E/../../packages/ui-kit/src/themes/typography.fontWeight.ts","webpack://_N_E/../../packages/ui-kit/src/atoms/typography/heading/helpers/getFontSize.ts","webpack://_N_E/../../packages/ui-kit/src/atoms/typography/heading/index.tsx","webpack://_N_E/../../packages/ui-kit/src/atoms/svg/styled.ts","webpack://_N_E/../../packages/ui-kit/src/atoms/svg/Svg.tsx","webpack://_N_E/../../packages/ui-kit/src/atoms/svg/сreateSvg.tsx","webpack://_N_E/../../packages/ui-kit/src/atoms/svg/global/Global.tsx","webpack://_N_E/../../packages/ui-kit/src/atoms/typography/text/index.tsx","webpack://_N_E/../../packages/ui-kit/src/atoms/symbols/index.ts","webpack://_N_E/../../packages/ui-kit/src/molecules/Price/divideByThousand.ts","webpack://_N_E/../../packages/ui-kit/src/molecules/Price/format.ts","webpack://_N_E/../../packages/ui-kit/src/molecules/Price/index.tsx","webpack://_N_E/../../packages/ui-kit/src/molecules/Price/Discounted/index.tsx","webpack://_N_E/../../packages/ui-kit/src/atoms/embeding/Image/index.tsx","webpack://_N_E/../../packages/ui-kit/src/atoms/svg/RoundingFramedIcon.tsx","webpack://_N_E/../../packages/ui-kit/src/organisms/Package/MultiPackage/Card/index.tsx","webpack://_N_E/../../packages/ui-kit/src/organisms/Package/MultiPackage/InternetTitle/index.tsx","webpack://_N_E/../../packages/ui-kit/src/organisms/Package/MultiPackage/SpeedSelector/index.tsx","webpack://_N_E/../../packages/ui-kit/src/organisms/Package/MultiPackage/styled.tsx","webpack://_N_E/../../packages/ui-kit/src/organisms/Package/MultiPackage/index.tsx","webpack://_N_E/./src/features/index/MultiPackageList/context/constants/actions.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/closeCallbackPopup.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/initialize.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/setChannels.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/setChannelsCategory.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/setChannelsSearchValue.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/setChannelsSearchVisibility.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/setCurrentPackageIdForLine.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/setEquipment.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/setLoading.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/setPackageId.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/setProductItemType.ts","webpack://_N_E/./src/features/index/MultiPackageList/analytics/Filters.analytics.ts","webpack://_N_E/./src/features/index/MultiPackageList/analytics/index.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/setSubjectFilter.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/setSubscriptions.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/setTagsFilter.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/setTypeFilter.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/setupCallbackPopup.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/initialState.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/reducer.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/index.tsx","webpack://_N_E/./src/features/index/MultiPackageList/context/hooks/useContextDispatch.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/hooks/useContextSelector.ts","webpack://_N_E/./src/features/index/MultiPackageList/components/CallbackPopup/index.tsx","webpack://_N_E/./src/features/index/MultiPackageList/components/Filters/index.tsx","webpack://_N_E/./src/features/index/MultiPackageList/context/selectors/getFiltersForContainer.ts","webpack://_N_E/./src/features/index/MultiPackageList/components/Filters/Container.tsx","webpack://_N_E/../../packages/ui-kit/src/atoms/overlay/index.tsx","webpack://_N_E/../../packages/ui-kit/src/molecules/Popup/helpers/getSizes.ts","webpack://_N_E/../../packages/ui-kit/src/molecules/Popup/components/PopupBase.tsx","webpack://_N_E/../../packages/ui-kit/src/molecules/Popup/components/PopupContent.tsx","webpack://_N_E/../../packages/ui-kit/src/atoms/svg/main/Close.tsx","webpack://_N_E/../../packages/ui-kit/src/molecules/Popup/components/PopupHeader.tsx","webpack://_N_E/../../packages/ui-kit/src/molecules/Popup/index.tsx","webpack://_N_E/../../packages/ui-kit/src/molecules/Popup/WithImage.tsx","webpack://_N_E/./src/features/index/MultiPackageList/context/selectors/selectChannels.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/selectors/selectEquipment.ts","webpack://_N_E/./src/features/index/MultiPackageList/components/Channels/ChannelsFilter.tsx","webpack://_N_E/../../packages/ui-kit/src/atoms/embeding/ChannelImage/index.tsx","webpack://_N_E/../../packages/ui-kit/src/atoms/typography/paragraph/helpers/getFontSize.ts","webpack://_N_E/../../packages/ui-kit/src/atoms/typography/paragraph/index.tsx","webpack://_N_E/../../packages/ui-kit/src/molecules/Channels/Channel/index.tsx","webpack://_N_E/./src/features/index/MultiPackageList/components/Channels/Container.tsx","webpack://_N_E/./src/features/index/MultiPackageList/components/Channels/Throbber.tsx","webpack://_N_E/./src/features/index/MultiPackageList/components/Channels/index.tsx","webpack://_N_E/./src/features/index/MultiPackageList/components/Skeleton/index.tsx","webpack://_N_E/./src/features/index/MultiPackageList/components/Equipment/Container.tsx","webpack://_N_E/./src/features/index/MultiPackageList/components/Equipment/index.tsx","webpack://_N_E/./src/features/index/MultiPackageList/components/Movix/index.tsx","webpack://_N_E/./src/features/index/MultiPackageList/components/Subscriptions/Container.tsx","webpack://_N_E/./src/features/index/MultiPackageList/components/Subscriptions/index.tsx","webpack://_N_E/./src/features/index/MultiPackageList/context/selectors/selectSubscriptions.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/selectors/selectPopupContent.tsx","webpack://_N_E/./src/features/index/MultiPackageList/components/ProductItemPopup/index.tsx","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/thunk/cardActionByType.ts","webpack://_N_E/./src/features/index/MultiPackageList/transformChannels/index.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/thunk/getChannels.ts","webpack://_N_E/../../packages/api-domru/src/api-tariffs/v1/packages/[salePackageId]/equipment/dto/ResponseDto.ts","webpack://_N_E/../../packages/api-domru/src/api-tariffs/v1/packages/[salePackageId]/channels/index.ts","webpack://_N_E/../../packages/api-domru/src/api-tariffs/v1/packages/[salePackageId]/equipment/index.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/thunk/getEquipment.tsx","webpack://_N_E/../../packages/api-domru/src/api-tariffs/v1/packages/[salePackageId]/subscriptions/index.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/actions/thunk/getSubscriptions.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/selectors/getActiveFilterTags.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/selectors/getFilters.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/selectors/getLines.ts","webpack://_N_E/./src/features/index/MultiPackageList/context/selectors/getFilteredLines.ts","webpack://_N_E/./src/features/index/MultiPackageList/index.tsx","webpack://_N_E/./src/features/index/MultiPackageList/Wrapper.tsx","webpack://_N_E/./src/features/index/WebUnderMenu/styled.ts","webpack://_N_E/./src/features/index/WebUnderMenu/index.tsx","webpack://_N_E/./src/features/index/styled.tsx","webpack://_N_E/./src/features/index/index.tsx","webpack://_N_E/./src/features/specialOffersContainer/store/actions/setErrorMessage.ts","webpack://_N_E/./src/features/specialOffersContainer/store/actions/setIsLoadingOffers.ts","webpack://_N_E/./src/features/specialOffersContainer/store/actions/setIsPopupOpened.ts","webpack://_N_E/./src/features/specialOffersContainer/store/actions/setOffers.ts","webpack://_N_E/./src/features/specialOffersContainer/store/actions/setOfferTransaction.ts","webpack://_N_E/./src/features/specialOffersContainer/store/actions/setPopupState.ts","webpack://_N_E/./src/features/specialOffersContainer/store/actions/setSelectedOfferId.ts","webpack://_N_E/./src/helpers/hooks/useAnaliticsSender.ts","webpack://_N_E/./src/helpers/storage.ts","webpack://_N_E/../../packages/api-domru/src/full-buy/v1/sale-agent/saleAgentTypes.ts","webpack://_N_E/../../packages/entities/src/ContactAddress/actions/resetAddress.ts","webpack://_N_E/../../packages/entities/src/ContactDetail/actions/fillFio.ts","webpack://_N_E/../../packages/entities/src/ContactDetail/actions/fillPhone.ts","webpack://_N_E/../../packages/ui-react/src/components/HtmlContentFromApi/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/HtmlContentFromApi/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/List/WithIcon/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Card/CardBricks/CardHeader/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Card/CardBricks/CardHeader/styled.ts","webpack://_N_E/../../packages/ui-react/src/organisms/Card/CardBricks/StyledHeader/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Card/TVSetTopSelectable/Desktop.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Card/TVSetTopSelectable/TVSetTopSelectable.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Card/TVSetTopSelectable/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Card/TVSetTopSelectable/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Forms/NamePhoneForm/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/Forms/NamePhoneForm/index.tsx","webpack://_N_E/./static/images/icons/controls-icon.svg","webpack://_N_E/./static/images/icons/hd-icon.svg","webpack://_N_E/./static/images/icons/wifi-icon.svg","webpack://_N_E/./static/images/movix-popup/movix-header.png","webpack://_N_E/./static/images/movix-popup/movix-header.webp"],"sourcesContent":["import styled from 'styled-components';\n\nimport NukaCarousel from '@r1-frontend/ui-react/components/NukaCarousel';\n\nexport const CustomSwiper = styled(NukaCarousel)`\n padding-left: 0 !important;\n padding-right: 0 !important;\n \n & section,\n & div {\n outline: none;\n }\n\n & > section > div.slider-frame {\n padding: 24px 0 !important;\n\n div.slider-list {\n cursor: default !important;\n }\n }\n`;\n","import { ReactNode, useEffect, useState } from 'react';\nimport { CarouselProps } from 'nuka-carousel';\n\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { CustomSwiper } from './styled';\n\nenum EMediaWidth {\n desktop = '(min-width: 1600px)',\n sDesktop = '(max-width: 1599px) and (min-width: 1280px)',\n laptop = '(max-width: 1279px) and (min-width: 768px)',\n mobile = '(max-width: 767px)',\n}\n\ntype TBreakpoint = 'desktop' | 'sDesktop' | 'laptop' | 'mobile';\n\ntype TVisibleSlides = {\n [key in TBreakpoint]: number;\n};\n\ninterface IProps extends CarouselProps {\n children: Array,\n desktopSlideWidth?: string,\n mobileSlideWidth?: string,\n visibleSlides?: TVisibleSlides,\n [key: string]: unknown,\n}\n\nconst defaultVisibleSlides: TVisibleSlides = {\n desktop: 4,\n sDesktop: 3,\n laptop: 2,\n mobile: 1,\n};\n\n/**\n * Адаптив карусели Nuka-Carousel\n * @param items - массив компонентов (TariffCard, ProductCard, etc)\n * @param desktopSlideWidth - ширина слайда карусели на десктопе\n * @param mobileSlideWidth - ширина слайда карусели на мобилках\n * @param visibleSlides - количество целых видимых слайдов в карусели\n * @returns Function{}\n */\n// todo: move to ui-react\nconst AdaptiveNukaCarousel = ({\n children,\n desktopSlideWidth = '304px',\n mobileSlideWidth = '288px',\n visibleSlides = defaultVisibleSlides,\n ...props\n}: IProps): JSX.Element => {\n const [hideArrows, setHideArrows] = useState(false);\n const [hideDots, setHideDots] = useState(false);\n const [slideWidth, setSlideWidth] = useState(desktopSlideWidth);\n\n const isDesktop = useMatchMedia(EMediaWidth.desktop);\n const isSDesktop = useMatchMedia(EMediaWidth.sDesktop);\n const isLaptop = useMatchMedia(EMediaWidth.laptop);\n const isMobile = useMatchMedia(EMediaWidth.mobile);\n\n useEffect(() => {\n if (isMobile) {\n setSlideWidth(mobileSlideWidth);\n setHideArrows(true);\n if (children.length > visibleSlides.mobile) {\n setHideDots(false);\n } else {\n setHideDots(true);\n }\n } else {\n setSlideWidth(desktopSlideWidth);\n if ((isLaptop && children.length > visibleSlides.laptop) ||\n (isSDesktop && children.length > visibleSlides.sDesktop) ||\n (isDesktop && children.length > visibleSlides.desktop)) {\n setHideArrows(false);\n setHideDots(false);\n } else {\n setHideArrows(true);\n setHideDots(true);\n }\n }\n }, [\n isDesktop,\n isSDesktop,\n isLaptop,\n isMobile,\n children,\n desktopSlideWidth,\n mobileSlideWidth,\n visibleSlides,\n ]);\n\n return (\n \n {children}\n \n );\n};\n\nexport default AdaptiveNukaCarousel;\n","export const DEFAULT_IMAGE_MAP_WEBP = '/static/images/map/defaultmap.webp';\nexport const DEFAULT_IMAGE_MAP_JPG = '/static/images/map/defaultmap.jpg';\n","import styled from 'styled-components';\n\nimport Throbber from '@r1-frontend/ui-react/components/loaders/Throbber';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\n\nexport const BgThrobber = styled(Throbber)`\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n background-color: rgba(0,0,0,0.1);\n border-radius: ${BorderRadius.OuterBlockRadius};\n`;\n","export enum EConnectStatuses {\n DEFAULT = 'DEFAULT',\n CONNECT = 'CONNECT',\n NOT_CONNECT = 'NOT_CONNECT',\n NOT_GIGABIT = 'NOT_GIGABIT',\n}\n\ntype TVar = Record\n\nexport const titles: TVar = {\n DEFAULT: 'Проверить возможность подключения',\n CONNECT: 'В вашем доме можно подключить любой тариф',\n NOT_CONNECT: 'Проверить возможность подключения',\n NOT_GIGABIT: 'Тарифы, доступные в вашем доме',\n};\n\nexport const additionalBtnText: TVar = {\n DEFAULT: '',\n CONNECT: 'Все тарифы',\n NOT_CONNECT: 'Оставить заявку',\n NOT_GIGABIT: 'Все тарифы 100 Мбит/с',\n};\n\nexport const texts: TVar = {\n DEFAULT: '',\n CONNECT: 'Вот наши самые популярные и выгодные тарифы: выберите любой и настройте под себя.',\n NOT_CONNECT: 'Оставьте заявку на звонок, и мы вам позвоним. Посоветуем выгодные тарифы и расскажем, как их подключить.',\n NOT_GIGABIT: '',\n};\n\nexport const alertText: TVar = {\n DEFAULT: '',\n CONNECT: 'Услуги можно подключить',\n NOT_CONNECT: 'Пока ваш дом не подключен к Дом.ру.',\n NOT_GIGABIT: 'Пока в вашем доме можно подключить только тариф с максимальной скоростью 100 Мбит/с.',\n};\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 EditableAddressForm = styled.div`\n position: relative;\n flex-direction: column;\n align-items: flex-start;\n row-gap: 12px;\n width: 100%;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n align-items: stretch;\n }\n`;\n\nexport const AgreeWrap = styled.div`\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n width: auto;\n gap: 12px;\n align-items: flex-start;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n align-items: stretch;\n }\n`;\n\nexport const BlockWrap = styled.div`\n width: 100%;\n flex-direction: column;\n`;\n\nexport const BlockTitle = styled.div`\n margin-bottom: 12px;\n ${FONTS.S};\n color: ${COLORS.TextPrimary};\n`;\n","import { memo, useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { fillAddressAction } from '@r1-frontend/entities/ContactAddress/actions/fillAddress';\nimport { isAddressFilled } from '@r1-frontend/entities/ContactAddress/selectors/isAddressFilled';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { BaseButton, btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { PolicyNote } from '@r1-frontend/ui-react/components/PolicyNote';\nimport { CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { IAddress } from '@r1-frontend/shared/types/IAddress';\n\nimport AddressInputFields from '~/src/components/AddressInputFields';\nimport { openCitySelect } from '~/src/components/CitySelectContainer/store/actionCreators';\nimport { POLICY_PAGE_LINK } from '~/src/constants';\nimport { TState } from '~/src/store';\n\nimport * as ST from './styled';\n\nconst sendGtmEvent = (action: string) => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: 'main-page',\n action,\n });\n};\n\nexport type TProps = {\n onConfirmBtnClick: () => void,\n}\n\nconst EditableAddressForm = ({\n onConfirmBtnClick,\n}: TProps): JSX.Element => {\n const dispatch = useDispatch();\n\n const {\n isConfirmButtonActive,\n } = useSelector((state: TState) => ({\n isConfirmButtonActive: isAddressFilled(state),\n }));\n\n const onFillAddress = useCallback((address: IAddress) => {\n dispatch(fillAddressAction(address));\n }, [dispatch]);\n\n const openCitySelectPopup = useCallback(() => dispatch(openCitySelect()), [dispatch]);\n\n const buttonText = 'Проверить адрес';\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default memo(EditableAddressForm);\n","import { IContactDetailsState } from '@r1-frontend/entities/ContactDetail/initialState';\n\nexport const isPersonDataFilled = (state: IContactDetailsState): boolean => {\n const {\n contactDetails: {\n editedPhone,\n editedFio,\n },\n } = state;\n\n return Boolean(editedFio) && Boolean(editedPhone);\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 EditableContactsForm = styled.div`\n position: relative;\n display: grid;\n flex-wrap: nowrap;\n align-items: flex-start;\n grid-template-columns: 532px min-content min-content;\n gap: 12px 16px;\n width: 100%;\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n grid-template-columns: 532px;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n grid-template-columns: 1fr;\n align-items: stretch;\n }\n`;\n\nexport const BtnWrap = styled.div`\n display: flex;\n flex-wrap: nowrap;\n align-items: flex-start;\n gap: 12px 16px;\n width: 100%;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n flex-direction: column;\n } \n`;\n\nexport const Button = styled(BaseButton)`\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n }\n`;\n","import { memo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { requestByConnection, ResponseDto } from '@r1-frontend/api-domru/api-request/v1/user/request-by-connection';\nimport { fillFioAction } from '@r1-frontend/entities/ContactDetail/actions/fillFio';\nimport { fillPhoneAction } from '@r1-frontend/entities/ContactDetail/actions/fillPhone';\nimport { isPersonDataFilled } from '@r1-frontend/entities/ContactDetail/selectors/isPersonDataFilled';\n\nimport { btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { EResultPopupStatus } from '@r1-frontend/ui-react/components/popups/popupResult';\nimport { useResultPopup } from '@r1-frontend/ui-react/components/popups/useResultPopup';\n\nimport { PersonForm } from '~/src/components/PersonForm';\nimport { BgThrobber } from '~/src/components/ThrobberWithBg';\nimport { TState } from '~/src/store';\nimport { selectCsrf } from '~/src/store/selectors/auth/selectCsrf';\n\nimport * as ST from './styled';\n\nexport type TContactDetailsCallbacks = {\n onClickChangeAddress: () => void,\n}\n\nconst EditableContactsForm = ({\n onClickChangeAddress,\n}: TContactDetailsCallbacks): JSX.Element => {\n const [isLoading, setIsLoading] = useState(false);\n const [PopupResult, showResult] = useResultPopup();\n\n const {\n fio,\n phone,\n isPersonData,\n csrf,\n } = useSelector((state: TState) => ({\n fio: state.contactDetails.editedFio,\n phone: state.contactDetails.editedPhone,\n isPersonData: isPersonDataFilled(state),\n csrf: selectCsrf(state),\n }));\n\n const dispatch = useDispatch();\n\n const onFillFio = (_person: string) => {\n dispatch(fillFioAction(_person));\n };\n\n const onFillPhone = (_phone: string) => {\n dispatch(fillPhoneAction(_phone));\n };\n\n const onSendRequest = async() => {\n setIsLoading(true);\n\n const resp = await doRequest.apiRequest(\n requestByConnection({\n petition: 'create_request',\n fio,\n phone,\n product_id: [0],\n csrf,\n }),\n );\n if (resp.isSuccess) {\n showResult({\n type: EResultPopupStatus.SUCCESS,\n title: 'Заявка на подключение отправлена',\n text: resp.payload.message,\n });\n } else {\n showResult({\n type: EResultPopupStatus.ERROR,\n title: 'Произошла ошибка',\n text: 'Не удалось отправить заявку. Пожалуйста, попробуйте еще раз.',\n });\n }\n\n setIsLoading(false);\n };\n\n return (\n \n \n \n \n \n\n \n\n {isLoading && }\n \n );\n};\n\nexport default memo(EditableContactsForm);\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 { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const AlertWrap = styled.div`\n margin-top: 4px;\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n margin-top: 8px;\n }\n`;\n\nexport const ResultForm = styled.div`\n width: 100%;\n flex-direction: column;\n align-items: flex-start;\n row-gap: 16px;\n`;\n\nexport const AlertText = styled.div`\n ${FONTS.S};\n\n & > b {\n display: contents;\n ${FONTS.MediumS};\n }\n`;\n\nexport const Text = styled.div`\n ${FONTS.S};\n color: ${COLORS.TextInfo};\n`;\n\nexport const BtnWrap = styled.div`\n display: flex;\n flex-wrap: nowrap;\n align-items: flex-start;\n gap: 12px 16px;\n width: 100%;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n flex-direction: column;\n } \n`;\n\nexport const Button = styled(BaseButton)`\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n }\n`;\n","import { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useRouter } from 'next/router';\n\nimport { resetAddress } from '@r1-frontend/entities/ContactAddress/actions/resetAddress';\nimport { EVerificationStatus } from '@r1-frontend/entities/ContactAddress/initialState';\n\nimport Alert from '@r1-frontend/ui-react/components/Alert';\nimport { btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport InfoCircle from '@r1-frontend/ui-react/components/svg/main/InfoCircle';\n\nimport EditableContactsForm from '~/src/components/CheckAddressMapConnect/EditableContactsForm';\nimport { ADDRESS_PARAM_NAME } from '~/src/features/full-buy/consts';\nimport { getFullBuyRoute } from '~/src/features/full-buy/helpers';\nimport { ETariffFilters } from '~/src/features/full-buy/store/initialState';\nimport { useAnalyticsSender } from '~/src/helpers/hooks/useAnaliticsSender';\nimport { setSessionStorageByKey } from '~/src/helpers/storage';\nimport { TState } from '~/src/store';\n\nimport {\n additionalBtnText,\n alertText,\n EConnectStatuses,\n texts,\n} from './constants';\n\nimport * as ST from './styled';\n\ninterface IProps {\n connectStatus: EConnectStatuses,\n}\n\nexport const ResultForm = (\n {\n connectStatus,\n }: IProps,\n): JSX.Element => {\n const router = useRouter();\n const dispatch = useDispatch();\n const sendAnalytics = useAnalyticsSender('address verification');\n\n const { verifiedAddressData } = useSelector((state: TState) => ({\n verifiedAddressData: state.contactAddress.verifiedAddressData,\n }));\n\n const saveVerifiedAddress = useCallback(() => {\n if (verifiedAddressData.status === EVerificationStatus.verified) {\n setSessionStorageByKey(ADDRESS_PARAM_NAME, verifiedAddressData);\n }\n }, [verifiedAddressData]);\n\n const onClickChangeAddress = useCallback(() => {\n dispatch(resetAddress());\n }, [dispatch]);\n\n const onExecuteAction = () => {\n if (connectStatus === EConnectStatuses.NOT_GIGABIT) {\n saveVerifiedAddress();\n const newRoute = getFullBuyRoute({\n filters: [ETariffFilters.SPEED100],\n });\n sendAnalytics('move_only_100', '/full-buy');\n router.push(newRoute);\n } else if (connectStatus === EConnectStatuses.CONNECT) {\n sendAnalytics('move_all_tariffs', '/bundles');\n router.push('/bundles');\n }\n };\n\n return (\n \n {(connectStatus !== EConnectStatuses.CONNECT) &&\n \n \n \n \n \n }\n\n {!!texts[connectStatus] &&\n {texts[connectStatus]}\n }\n\n {connectStatus === EConnectStatuses.NOT_CONNECT &&\n \n }\n\n {connectStatus !== EConnectStatuses.NOT_CONNECT &&\n \n \n \n \n }\n \n );\n};\n","import styled from 'styled-components';\n\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\nconst paddings = {\n desktop: 256,\n sDesktop: 161,\n laptop: 140,\n tablet: 96,\n};\n\nconst dividedKoef = 6;\n\nconst getBg = (src: string, padding: number) => `linear-gradient(to right, transparent ${padding / dividedKoef}px, ${COLORS.BgSurface} ${padding}px), url(${src})`;\nconst getMBg = (src: string, padding: number) => `linear-gradient(to bottom, transparent ${padding / 2 / dividedKoef}px, ${COLORS.BgSurface} ${padding}px), url(${src})`;\n\nexport const CheckAddressConnect = styled.div<{ imgSrc: string}>`\n position: relative;\n flex-direction: column;\n width: 100%;\n margin: 80px 0;\n padding: 32px;\n padding-left: ${paddings.desktop}px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n background-color: ${COLORS.BgSurface};\n\n background-image: ${p => getBg(p.imgSrc, paddings.desktop)};\n background-repeat: no-repeat;\n background-position: left top;\n background-size: contain;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n background-image: ${p => getBg(p.imgSrc, paddings.sDesktop)};\n padding-left: ${paddings.sDesktop}px;\n }\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n background-image: ${p => getBg(p.imgSrc, paddings.laptop)};\n padding-left: ${paddings.laptop}px;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n padding: ${paddings.tablet}px 16px 24px 16px;\n background-image: ${p => getMBg(p.imgSrc, paddings.tablet)};\n background-position: center top; \n background-size: 100% auto;\n }\n`;\n\nexport const Title = styled.div`\n margin-bottom: 8px;\n ${FONTS.H2};\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n margin-bottom: 4px;\n ${FONTS.H4};\n }\n`;\n\nexport const Text = styled.div`\n margin-bottom: 16px;\n ${FONTS.S};\n color: ${COLORS.TextInfo};\n`;\n","/* eslint-disable complexity */\nimport React, { useCallback, useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { checkAddress } from '@r1-frontend/entities/ContactAddress/actions/checkAddress';\nimport { resetAddress } from '@r1-frontend/entities/ContactAddress/actions/resetAddress';\nimport { EVerificationStatus } from '@r1-frontend/entities/ContactAddress/initialState';\nimport { getAddressByStr } from '@r1-frontend/entities/ContactAddress/selectors/helpers';\n\nimport { useWebp } from '@r1-frontend/shared/hooks/useWebp';\n\nimport { BgThrobber } from '~/src/components/ThrobberWithBg';\nimport { useAnalyticsSender } from '~/src/helpers/hooks/useAnaliticsSender';\nimport { TState } from '~/src/store';\nimport { selectCompanyName } from '~/src/store/selectors/city';\n\nimport { EConnectStatuses, titles } from './ResultForm/constants';\nimport { DEFAULT_IMAGE_MAP_JPG, DEFAULT_IMAGE_MAP_WEBP } from './constants';\nimport EditableAddressForm from './EditableAddressForm';\nimport { ResultForm } from './ResultForm';\n\nimport * as ST from './styled';\n\nconst CheckAddressMapConnect = (): JSX.Element => {\n const dispatch = useDispatch();\n const sendAnalytics = useAnalyticsSender('address verification');\n const isWepbSupported = useWebp();\n\n const {\n addressStatus,\n verifiedAddressData,\n currentCity,\n companyName,\n } = useSelector((state: TState) => ({\n addressStatus: state.contactAddress.verifiedAddressData.status,\n verifiedAddressData: state.contactAddress.verifiedAddressData,\n currentCity: state.city.currentCity,\n companyName: selectCompanyName(state),\n }));\n\n const connectStatus = useMemo(() => {\n const addressStr = getAddressByStr(verifiedAddressData.address);\n const { isHouseConnected, gigabitAvail, status } = verifiedAddressData;\n\n if (status !== EVerificationStatus.verified) {\n return EConnectStatuses.DEFAULT;\n }\n\n if (!isHouseConnected) {\n sendAnalytics('error', addressStr);\n return EConnectStatuses.NOT_CONNECT;\n }\n\n if (!gigabitAvail) {\n sendAnalytics('success_only_100', addressStr);\n return EConnectStatuses.NOT_GIGABIT;\n }\n\n sendAnalytics('success', addressStr);\n return EConnectStatuses.CONNECT;\n }, [verifiedAddressData]);\n\n useEffect(() => {\n return () => {\n dispatch(resetAddress());\n };\n }, []);\n\n const checkAddressConnect = useCallback(() => dispatch(checkAddress()), []);\n\n const cityImage = isWepbSupported ? currentCity.image_map_webp : currentCity.image_map;\n const defaultImage = isWepbSupported ? DEFAULT_IMAGE_MAP_WEBP : DEFAULT_IMAGE_MAP_JPG;\n\n return (\n \n {titles[connectStatus]}\n\n {addressStatus !== EVerificationStatus.verified &&\n <>\n \n Укажите ваш адрес, а мы проверим, подключён ли ваш дом к {companyName} и подберём подходящий тариф.\n \n \n \n }\n\n {addressStatus === EVerificationStatus.verified &&\n \n }\n\n {addressStatus === EVerificationStatus.verifying && }\n \n );\n};\n\nexport default CheckAddressMapConnect;\n","import { ACTIONS } from '@r1-frontend/shared/constants/analytics';\nimport { BaseButton, btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { PolicyNote } from '@r1-frontend/ui-react/components/PolicyNote';\nimport { IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport React, { Component } from 'react';\nimport styled from 'styled-components';\n\nimport { POLICY_PAGE_LINK } from '~/src/constants';\nimport { dataLayerForCBPhonePush } from '~/src/helpers/eventsForDataLayer';\n\nimport * as ST from './styled';\n\nconst Form = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n`;\n\nconst FormInputs = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n @media (max-width: 600px) {\n flex-direction: column;\n }\n\n`;\n\nconst ButtonSubmit = styled(BaseButton)`\n width: 50%;\n margin-right: 10px;\n @media (max-width: 600px) {\n width: 100%;\n max-width: 100%;\n margin-right: 0;\n margin-bottom: 10px;\n }\n`;\n\nclass CallBackEquipment extends Component {\n constructor(props) {\n super(props);\n this.state = {\n fio: {\n value: '',\n isValid: false,\n clearInput: () => {},\n },\n phone: {\n value: '',\n isValid: false,\n clearInput: () => {},\n },\n isValid: false,\n isSending: false,\n beenStarted: false,\n checkAgreement: true,\n };\n }\n\n checkValid = (name, value) => {\n const { beenStarted } = this.state;\n const { option, isPopup, isAuth, agreement } = this.props;\n this.setState({\n [name]: value,\n }, () => this.validate());\n\n if (!beenStarted) {\n dataLayerForCBPhonePush({\n action: isAuth ? ACTIONS.startedEquip : ACTIONS.started,\n requestId: null,\n option,\n isPopup,\n uid: isAuth ? agreement : null,\n });\n this.setState({\n beenStarted: true,\n });\n }\n };\n\n validate = () => {\n let isValidated = false;\n const fioValidated = this.state.fio.isValid;\n const phoneValidated = this.state.phone.isValid;\n if (fioValidated && phoneValidated) {\n isValidated = true;\n }\n this.setState({\n isValid: isValidated,\n });\n };\n\n onSubmit = () => {\n const { sendRequest, extParams, formRef, option } = this.props;\n const { fio, phone } = this.state;\n\n this.setState({ isSending: true }, async() => {\n const params = {\n phone: phone.value,\n fio: fio.value,\n option,\n isPopup: true,\n ...extParams,\n };\n // @TODO Проверить нужен ли formRef?\n await sendRequest(params, formRef);\n });\n };\n\n onChangeAgreementHandler = () => {\n this.setState((prev) => ({ checkAgreement: !prev.checkAgreement }));\n }\n\n reset = () => {\n this.state.fio.clearInput();\n this.state.phone.clearInput();\n this.setState({\n isValid: false,\n isSending: false,\n });\n };\n\n render() {\n const { isValid, isSending, checkAgreement } = this.state;\n const { textButton } = this.props;\n const btnText = textButton || 'Перезвоните мне';\n\n return (\n
\n \n this.checkValid('fio', value)}\n className={'ym-disable-keys'}\n />\n this.checkValid('phone', value)}\n className={'ym-disable-keys'}\n />\n \n \n \n \n \n \n );\n }\n}\n\nexport default CallBackEquipment;\n","import { pluralize } from '@r1-frontend/shared/helpers/pluralize';\nimport { monthPluralize } from '@r1-frontend/shared/helpers/pluralize/predifined';\nimport { EPriceTypes } from '@r1-frontend/shared/types/EPriceTypes';\nimport React, { PureComponent } from 'react';\n\nimport RequestForm from '~/src/components/Equipment/form/requestForm';\n\nimport * as ST from './styled';\n\nclass OrderPopup extends PureComponent {\n constructor(props) {\n super(props);\n this.state = { label: '' };\n this.onCloseWrapper = this.onCloseWrapper.bind(this);\n }\n\n setExtParams = () => {\n const { selectRouter } = this.props;\n\n if (selectRouter) {\n const { materialsEnsId, global_id } = selectRouter.router;\n const { type, value } = selectRouter.option;\n\n const extParams = {\n tv_equipment_id: materialsEnsId || global_id,\n tv_equipment_buy: type === EPriceTypes.Possess ? 'sale' : 'leasing',\n };\n\n if (type === EPriceTypes.Possess) {\n extParams.tv_equipment_buy = 'sale';\n } else {\n extParams.tv_equipment_buy = 'leasing';\n extParams.tv_equipment_duration = value;\n }\n\n return extParams;\n }\n };\n\n componentDidUpdate() {\n const { selectedOption, selectRouter } = this.props;\n if (selectRouter || selectedOption) {\n const { value, type } = selectedOption || selectRouter?.option;\n this.setState({\n label: `${this.getRouterName()} | ${this.getTypeOfBuy({ type, value })}`,\n });\n }\n }\n\n getTypeOfBuy = ({ type, value }) => {\n return type === EPriceTypes.Possess ? 'Покупка' : `Рассрочка на ${value} ${pluralize(value, monthPluralize)}`;\n };\n\n getRouterName = () => {\n const { name, selectRouter } = this.props;\n return name || selectRouter?.router?.materialsEnsName || selectRouter?.router?.title;\n };\n\n onCloseWrapper = () => {\n const { closeClick } = this.props;\n closeClick();\n };\n\n renderOrderLine = () => {\n const { selectedOption, selectRouter } = this.props;\n if (selectRouter || selectedOption) {\n const { price, value, type, pricePromo } = selectedOption || selectRouter?.option;\n\n return \n
\n {this.getTypeOfBuy({ type, value })}\n
\n \n {pricePromo || price}\n {type === EPriceTypes.Possess ? '₽' : '₽/мес'}\n \n
;\n }\n };\n\n render() {\n const {\n isOpened,\n sendRequest,\n formRef,\n extParams,\n isPopup,\n extLabel,\n isAuth,\n agreement,\n text = 'Стоимость доставки платная. Оставьте заявку, и мы вам перезвоним для уточнения деталей.',\n } = this.props;\n\n const { label } = this.state;\n\n return (\n \n \n \n {this.getRouterName()}\n Оформление заявки на заказ\n \n \n {this.renderOrderLine()}\n \n \n \n \n \n );\n }\n}\n\nexport default OrderPopup;\n","import styled from 'styled-components';\n\nexport const BREAKPOINTS = {\n mobile: '767px',\n tablet: '1023px',\n};\n\nexport const CarouselWrapper = styled.div`\n width: 100%;\n margin-top: 24px;\n margin-bottom: 24px;\n \n @media (max-width: 768px) {\n overflow: hidden;\n width: calc(100% + 16px);\n }\n\n .slider .slider-control-centerleft {\n top: -36px !important;\n right: 52px !important;\n left: auto !important;\n width: 40px;\n }\n\n .slider .slider-control-centerright {\n top: -36px !important;\n right: 0 !important;\n width: 40px;\n\n > div {\n justify-content: flex-end;\n }\n }\n`;\n","import { LazyLoadImage } from 'react-lazy-load-image-component';\nimport styled, { css } from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\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 { BREAKPOINTS } from '~/src/components/InterestingCarousel/styled';\n\nexport const CardWrapper = styled.div<{ bgColor?: string, withCellSpacing: boolean }>`\n display: flex;\n flex-wrap: nowrap;\n flex-direction: column;\n padding: 8px 8px 16px 8px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n background: ${({ bgColor }) => bgColor || COLORS.BgSurface};\n height: 350px;\n transition: box-shadow .3s;\n ${({ withCellSpacing }) => withCellSpacing && css`\n margin-right: 20px;\n\n @media (max-width: 480px) {\n margin-right: 12px;\n }\n `};\n\n :hover {\n box-shadow: 0 12px 24px rgba(26, 26, 26, 0.06);\n }\n`;\n\nexport const ImageBlock = styled(LazyLoadImage)<{ src: string }>`\n width: 100%;\n height: 120px;\n object-fit: cover;\n background-size: cover;\n border-radius: ${BorderRadius.InnerBlockRadius};\n`;\n\nexport const Title = styled.div<{ isCustom?: boolean }>`\n width: 100%;\n ${FONTS.H5};\n white-space: initial;\n margin: 0 8px;\n margin-bottom: 4px;\n padding: 0 8px;\n display: -webkit-box;\n display: -moz-box;\n display: box;\n -webkit-box-orient: vertical;\n --moz-box-orient: vertical;\n box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n color: ${({ isCustom }) => isCustom ? COLORS.TextWhite : COLORS.TextPrimary};\n\n @media (max-width: ${BREAKPOINTS.mobile}) {\n ${FONTS.S};\n }\n`;\n\nexport const Description = styled.div<{ isCustom?: boolean }>`\n width: 100%;\n ${FONTS.XS};\n white-space: initial;\n margin: 0 8px;\n margin-bottom: auto;\n padding: 0 8px;\n display: -webkit-box;\n display: -moz-box;\n display: box;\n -webkit-box-orient: vertical;\n --moz-box-orient: vertical;\n box-orient: vertical;\n -webkit-line-clamp: 3;\n overflow: hidden;\n color: ${({ isCustom }) => isCustom ? COLORS.TextWhite : COLORS.TextHint};\n opacity: ${({ isCustom }) => isCustom ? 0.8 : 1};\n\n @media (max-width: ${BREAKPOINTS.mobile}) {\n ${FONTS.XXS};\n }\n`;\n\nexport const Button = styled(BaseButton)`\n margin: 0 8px;\n`;\n","import React, { FC } from 'react';\n\nimport { IAdvertising } from '@r1-frontend/api-domru/api-content/_dto/IAdvertising';\n\nimport { btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport WebpImage from '@r1-frontend/ui-react/components/WebpImage';\nimport { IndentContainer, NonStaticContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { AdvertisingLabelWithTooltip } from '@r1-frontend/ui-react/organisms/AdvertisingLabelWithTooltip';\n\nimport * as ST from './styled';\n\nexport interface IParams {\n link?: string,\n title?: string,\n}\n\ninterface IProps {\n title: string,\n description: string,\n img: string,\n imgWebp?: string,\n bg?: string,\n textButton?: string,\n link: string,\n withCellSpacing?: boolean,\n advertising?: IAdvertising,\n onClick?: (params: IParams) => void,\n}\n\nconst InterestingCard: FC = ({\n title,\n bg,\n img,\n imgWebp,\n textButton,\n description,\n link,\n withCellSpacing = true,\n advertising,\n onClick,\n}) => {\n const isCustom = !!bg;\n\n const paramsOnClick = {\n link,\n title,\n };\n\n return (\n \n \n \n \n \n \n {advertising && (\n \n )}\n \n \n \n \n \n \n onClick ? onClick(paramsOnClick) : () => null}\n >\n {textButton}\n \n \n );\n};\n\nexport default InterestingCard;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport type ArrowDirection = 'left' | 'right';\n\nexport const Wrapper = styled.div`\n display: flex;\n z-index: 3;\n width: 92px;\n\n @media (max-width: 767px) {\n display: none;\n }\n`;\n\nexport const Arrow = styled.div<{ direction?: ArrowDirection }>`\n position: relative;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n transition: .3s background-color;\n background-color: ${COLORS.BgLight};\n background-image: url('/static/images/icons/arrow_carousel.svg');\n background-position: center;\n background-repeat: no-repeat;\n cursor: pointer;\n opacity: 0.5;\n ${({ direction }) => direction === 'left' ? 'transform: rotate(180deg);' : ''}\n\n :hover {\n background-color: ${COLORS.BgMain};\n opacity: 1;\n }\n`;\n","import React, { FC } from 'react';\n\nimport { IArrowProps } from '@r1-frontend/ui-react/components/NukaCarousel/DefaultArrow';\n\nimport * as ST from './styled';\n\nconst CustomArrows: FC = ({ previousSlide, nextSlide }) => (\n \n \n \n);\n\nexport default CustomArrows;\n","import React, { FC } from 'react';\n\nimport { IAdvertising } from '@r1-frontend/api-domru/api-content/_dto/IAdvertising';\n\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport AdaptiveNukaCarousel from '~/src/components/AdaptiveNukaCarousel';\nimport InterestingCard, { IParams } from '~/src/components/InterestingCarousel/InterestingCard';\n\nimport CustomArrows from './CustomArrows';\n\nimport * as ST from './styled';\n\ninterface IInterestingItem {\n id: number,\n title: string,\n desc: string,\n action: string,\n colorText: string,\n img: string,\n imgWebp: string,\n textButton: string,\n bgColor: string,\n advertising?: IAdvertising,\n}\n\ninterface IProps {\n items: IInterestingItem[],\n\n [key: string]: unknown,\n onClick?: (params: IParams) => void,\n}\n\nconst InterestingCarousel: FC = ({ items, onClick, ...props }) => {\n const isTablet = useMatchMedia('(max-width: 1024px)');\n\n return (\n \n \n {items.map(({ id, title, desc, bgColor, img, imgWebp, textButton, action, advertising }) => (\n \n ))}\n \n \n );\n};\n\nexport default InterestingCarousel;\n","import React, { useCallback } from 'react';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { ResponseDto } from '@r1-frontend/api-domru/dadata/suggest/dto/ResponseDto';\nimport suggestFio from '@r1-frontend/api-domru/dadata/suggest/fio';\n\nimport { IPersonFormProps, PersonForm as PersonFormComponent } from '@r1-frontend/ui-react/organisms/Forms/PersonForm';\n\ntype TProps = Omit;\n\nexport const PersonForm = ({\n fio,\n phone,\n onChangeFio,\n onChangePhone,\n isNeedToBlockInvalidFio = false,\n actionButtonProps,\n}: TProps): JSX.Element => {\n const onLoadSuggestions = useCallback(async(value) => {\n const resp = await doRequest.dadataProxy(\n suggestFio(value),\n );\n\n return resp.isSuccess\n ? resp.payload?.suggestions.map(suggestion => suggestion.value)\n : [];\n }, []);\n\n return (\n \n );\n};\n","import React, { memo } from 'react';\n\nimport HtmlContentFromApi from '@r1-frontend/ui-react/components/HtmlContentFromApi';\n\nimport { ButtonElement, IButtonProps } from './components/ButtonElement';\nimport { IImageProps, ImageElement } from './components/ImageElement';\n\nimport * as ST from './styled';\n\nexport interface TariffElementProps {\n title?: string,\n titleText?: string,\n imageProps: IImageProps,\n btnProps?: IButtonProps,\n}\n\nexport const TariffElement = (item: TariffElementProps): JSX.Element => {\n const {\n title,\n titleText,\n imageProps,\n btnProps,\n } = item;\n\n return (\n \n \n \n \n\n \n {title}\n\n {titleText &&\n \n \n \n {titleText}\n \n \n \n }\n \n \n\n \n \n\n {titleText &&\n \n \n \n {titleText}\n \n \n \n }\n \n );\n};\n\nexport default memo(TariffElement);\n","import styled from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const Button = styled(BaseButton)`\n ${FONTS.MediumS};\n svg {\n fill: ${COLORS.Control};\n stroke: ${COLORS.Control};\n }\n`;\n","import React from 'react';\n\nimport { btnSizes, btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { ICONS_PATH } from '~/src/constants';\n\nimport * as ST from './styled';\n\nexport interface IButtonProps {\n btnTextDesktop?: string,\n btnTextMobile?: string,\n iconNameDesktop?: string,\n iconNameMobile?: string,\n isDisabled?: boolean,\n onButtonClick?: (() => void) | null,\n}\n\nexport const ButtonElement = ({\n btnTextDesktop = 'Добавить',\n btnTextMobile = '',\n iconNameDesktop,\n iconNameMobile,\n isDisabled,\n onButtonClick,\n} : IButtonProps): JSX.Element => {\n const isMobile = useMatchMedia(`(max-width: ${wideBreakpoints.mobile})`);\n\n if (!onButtonClick) {\n return <>;\n }\n\n return (\n \n );\n};\n","import React from 'react';\n\nimport * as ST from './styled';\n\nexport interface IImageProps {\n imgBgColor?: string,\n imageSrc?: string,\n imageAlt?: string,\n textForImage?: string,\n bgForImage?: string,\n channelCount?: number, // костыль для вывода каналов в углу картинки\n isMega?: boolean,\n}\n\nexport const ImageElement = ({\n imgBgColor,\n imageSrc,\n imageAlt = 'иконка',\n textForImage = '',\n bgForImage,\n channelCount,\n isMega,\n} : IImageProps): JSX.Element => {\n const displayText = !imageSrc && !!textForImage;\n\n if (displayText) {\n return (\n \n {textForImage}\n \n );\n }\n\n return (\n \n {imageAlt}\n \n );\n};\n","import styled, { css } 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\nconst ImgWrap = styled.div`\n position: relative;\n flex: 0 0 90px;\n justify-content: center;\n align-items: center;\n width: 90px;\n height: 60px;\n ${FONTS.H4};\n border-radius: 20px;\n overflow: hidden;\n background-color: ${COLORS.BgMain};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n flex: 0 0 72px;\n width: 72px;\n height: 48px;\n border-radius: 16px;\n }\n`;\n\nexport const ImageElement = styled(ImgWrap)<{ imgBgColor?: string, channelCount?: number }>`\n ${p => p.imgBgColor && css`\n background-color: ${p.imgBgColor};\n `};\n\n ${p => p.channelCount && css`\n &:after {\n content: \"+${p.channelCount}\";\n position: absolute;\n bottom: 2px;\n right: 19px;\n width: 20px;\n height: 20px;\n ${FONTS.XXS};\n fontSize: 10;\n color: ${COLORS.TextPrimary};\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n &:after {\n bottom: -1px;\n right: 14px;\n }\n }\n `};\n\n img {\n width: 100%;\n max-height: 100%;\n }\n`;\n\nexport const ImageElementWithText = styled(ImgWrap)<{ imgSrc?: string, isMega?: boolean }>`\n overflow: hidden;\n ${FONTS.H3};\n color: ${({ imgSrc, isMega }) => isMega ? COLORS.TextPrimary : (imgSrc ? COLORS.TextWhite : COLORS.TextSecondary)};\n background-color: #E6EEF5;\n background-image: ${({ imgSrc }) => imgSrc ? `url(${imgSrc})` : 'none'};\n background-repeat: no-repeat;\n background-size: cover;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.H4};\n }\n`;\n","import styled, { css } 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\nexport const TariffElement = styled.div`\n flex-direction: column;\n justify-content: center;\n row-gap: 8px;\n width: 100%;\n min-height: 76px;\n padding: 4px 12px 4px 8px;\n border-radius: ${BorderRadius.InnerBlockRadius};\n background-color: ${COLORS.BgSurface};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n justify-content: flex-start;\n padding: 8px 12px 12px 8px;\n }\n`;\n\nexport const RowWrap = styled.div`\n flex-wrap: nowrap;\n column-gap: 24px;\n align-items: center;\n width: 100%;\n`;\n\nexport const DescriptionWrap = styled.div`\n flex: 1 0 1%;\n flex-wrap: nowrap;\n align-items: center;\n column-gap: 12px;\n`;\n\nexport const MobileOnlyWrap = styled(RowWrap)`\n display: none;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n display: flex;\n justify-content: space-between;\n padding: 0 0 0 4px;\n }\n`;\n\nexport const DesktopOnlyWrap = styled.div<{ withCounts?: boolean }>`\n display: flex;\n align-items: center;\n column-gap: 24px;\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${({ withCounts }) => withCounts\n ? css`\n width: 240px;\n flex-wrap: nowrap;\n column-gap: initial;\n justify-content: space-between;\n `\n : ''\n }\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n display: none;\n }\n`;\n\nexport const TitleWrap = styled.div`\n flex: 1 0 1%;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n flex-wrap: nowrap;\n row-gap: 4px;\n`;\n\nexport const Title = styled.div`\n width: 100%;\n ${FONTS.MediumS};\n color: ${COLORS.TextPrimary};\n`;\n\nexport const Description = styled.div`\n ${FONTS.XS};\n color: ${COLORS.TextSecondary};\n`;\n\nexport const Button = styled(BaseButton)`\n svg {\n fill: ${COLORS.Control};\n stroke: ${COLORS.Control};\n }\n`;\n","import styled, { css } from 'styled-components';\n\nimport { FlexBoxCol as Col, FlexBoxRow as Row } from '@r1-frontend/ui-react/components/layouts/flexBoxGrid';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { Desc, Text, Title, Wrapper as BannerWrapper } from '~/src/features/index/Banners/PromoBannersSection/PromoBanner/styled';\n\nexport const Wrapper = styled.section`\n display: block;\n width: 100%;\n margin-bottom: 56px;\n`;\n\nexport const BannerRow = styled(Row)<{ notSingle: boolean }>`\n margin: 0;\n\n ${({ notSingle }) => notSingle && css`\n @media (max-width: 1359px) {\n margin: 0;\n }\n `};\n\n @media (min-width: ${wideBreakpoints.sDesktop}) {\n grid-gap: 1rem;\n flex-wrap: nowrap;\n }\n`;\n\nexport const BannerCol = styled(Col)<{ isDoubleBanner: boolean }>`\n margin-bottom: 24px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n padding-left: 0;\n padding-right: 0;\n\n @media (min-width: ${wideBreakpoints.sDesktop}) {\n flex: auto;\n flex-basis: ${props => props.isDoubleBanner ? '50%' : '100%'};\n max-width: ${props => props.isDoubleBanner ? '50%' : '100%'};\n\n ${BannerWrapper} {\n ${props => props.isDoubleBanner && 'height: 330px'};\n }\n\n ${Title} {\n ${props => props.isDoubleBanner && FONTS.H2};\n }\n\n ${Text} {\n ${props => props.isDoubleBanner && FONTS.XS};\n }\n\n ${Desc} {\n ${props => props.isDoubleBanner && 'padding: 38px 0 38px 32px;'};\n }\n }\n\n @media (max-width: 1919px) {\n overflow: hidden;\n }\n`;\n","import React, { useMemo } from 'react';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport NukaCarousel from '@r1-frontend/ui-react/components/NukaCarousel';\nimport { truncate } from '@r1-frontend/shared/helpers/truncate';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport type { IBanner } from '~/src/api/content/banners';\nimport PromoBanner from '~/src/features/index/Banners/PromoBannersSection/PromoBanner';\n\nimport * as ST from './styled';\n\nconst DEFAULT_BANNERS_COUNT = 1;\nconst MAX_TITLE_LENGTH = 35;\nconst MAX_DESCRIPTION_LENGTH = 90;\n\ninterface IProps {\n banners: IBanner[],\n withContainer?: boolean,\n withEllipsis?: boolean,\n className?: string,\n}\n\nconst PromoBannersSection: React.FC = ({ banners = [], withEllipsis = true, className = '' }): JSX.Element => {\n const isDoubleBanner = banners.length > DEFAULT_BANNERS_COUNT;\n const isMobile = useMatchMedia(`(max-width: ${wideBreakpoints.mobile})`);\n\n const renderBannersList = useMemo(() => {\n return banners?.map(({ bannerInfo }): JSX.Element => {\n const titleText = truncate(bannerInfo.title, MAX_TITLE_LENGTH);\n const descText = truncate(bannerInfo.text, MAX_DESCRIPTION_LENGTH);\n\n return (\n \n \n \n );\n });\n }, [banners, isDoubleBanner]);\n\n return (\n \n 1}>\n {isMobile && isDoubleBanner\n ? \n {renderBannersList}\n \n : renderBannersList\n }\n \n \n );\n};\n\nexport default PromoBannersSection;\n","import { useCallback } from 'react';\nimport Router from 'next/router';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\ntype TAction = 'simple' | 'long' | 'custom';\n\nconst actionMap: Record = {\n simple: 'banner to req',\n long: 'marketing banner',\n custom: 'additionally banner to req',\n};\n\nexport const useGaBanner = (type: TAction, title: string, link: string) => {\n const onDataLayerPush = useCallback((isFull: boolean) => {\n dataLayerPush({\n event: 'UAevent',\n category: 'banner main',\n action: `click ${title} ${actionMap[type]}${isFull ? ' full' : ''}`,\n label: link,\n });\n }, [title, link, type]);\n\n const onBannerClick = useCallback((isFull = false) => {\n onDataLayerPush(isFull);\n Router.push(link);\n }, [link, onDataLayerPush]);\n\n return { onBannerClick };\n};\n","import { ETariffTypes } from '~/src/components/TariffsFilters/filterConstants';\nimport { getABNVariant } from '~/src/helpers/abn-tests';\n\nconst getDefaultFilter = () => {\n return getABNVariant('mainpage_filters') === 'main_filter_mono' ? ETariffTypes.FILTER_INTERNET : ETariffTypes.FILTER_BUNDLE;\n};\n\nexport default getDefaultFilter;\n","import styled from 'styled-components';\n\nimport Button, { TButtonType } from '@r1-frontend/ui-react/components/buttons/button';\nimport getBgColorByType from '@r1-frontend/ui-react/components/buttons/button/getBgColorByType';\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';\nimport { hex2rgb } from '@r1-frontend/shared/helpers/hex2rgb';\n\nexport const Banner = styled.div<{ background?: string }>`\n position: relative;\n grid-area: custom;\n flex-direction: column;\n justify-content: flex-end;\n height: 322px;\n padding-right: 20px;\n padding-left: 40px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n background: ${p => p.background ? `url(${p.background})` : COLORS.BgSurface};\n background-position: 100% 0;\n background-size: cover;\n background-repeat: no-repeat;\n overflow: hidden;\n cursor: pointer;\n \n @media(max-width: ${wideBreakpoints.sDesktop}) {\n height: 260px;\n }\n \n @media(max-width: ${wideBreakpoints.laptop}) {\n height: auto;\n }\n \n @media(max-width: ${wideBreakpoints.mobile}) {\n height: 260px;\n }\n`;\n\nexport const MainContent = styled.div`\n flex-direction: column;\n align-items: flex-start;\n max-width: 284px;\n row-gap: 16px;\n margin-bottom: 40px;\n`;\n\nexport const Title = styled.p<{ textColor: string }>`\n position: relative;\n ${FONTS.H3};\n color: ${({ textColor }) => textColor ? textColor : COLORS.TextWhite};\n z-index: 10;\n \n @media(max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.H4};\n }\n`;\n\nexport const CustomButton = styled(Button)<{ bType: TButtonType }>`\n color: ${COLORS.TextWhite};\n background-color: rgba(${({ bType }) => hex2rgb(getBgColorByType(bType))}, .1);\n\n @media (hover: hover) {\n :hover {\n background-color: rgba(${({ bType }) => hex2rgb(getBgColorByType(bType))}, .25);\n }\n }\n`;\n\nexport const AdditionalContent = styled.div<{ textColor?: string }>`\n position: absolute;\n left: 40px;\n right: 20px;\n bottom: 4px;\n flex-direction: column;\n max-width: 316px;\n color: ${({ textColor }) => textColor ? textColor : COLORS.TextWhite};\n opacity: .5;\n`;\n\nexport const AgeMarker = styled.p`\n ${FONTS.MediumS};\n`;\n\nexport const LegalInfo = styled.p`\n ${FONTS.XXXS};\n`;\n\nexport const ImageWrap = styled.div`\n position:absolute;\n right: 0;\n top: 0;\n \n @media(max-width: ${wideBreakpoints.laptop}) {\n top: auto;\n bottom: 0;\n }\n \n @media(max-width: ${wideBreakpoints.mobile}) {\n max-height: 100%;\n }\n`;\n","import React from 'react';\n\nimport WebpImage from '@r1-frontend/ui-react/components/WebpImage';\nimport { NonStaticContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { AdvertisingLabelWithTooltip } from '@r1-frontend/ui-react/organisms/AdvertisingLabelWithTooltip';\nimport { useWebp } from '@r1-frontend/shared/hooks/useWebp';\n\nimport type { IBanner } from '~/src/api/content/banners';\nimport { useGaBanner } from '~/src/features/index/Banners/TopBanners/useGaBanner';\nimport { useProgressiveImage } from '~/src/helpers/hooks/useProgressiveImage';\n\nimport * as ST from './styled';\n\ninterface ICustom {\n banner: IBanner,\n}\n\nconst Custom = ({ banner }: ICustom): JSX.Element => {\n const {\n title, link, image,\n age_limit: ageLimit = '',\n legal_info: legalInfo,\n text_color: textColor,\n legal_info_text_color: legalInfoTextColor,\n button_text: buttonText,\n button_type: buttonType,\n image_webp: imageWebp,\n image_background: background,\n image_background_webp: backgroundWebp,\n advertising,\n } = banner.bannerInfo;\n\n const { onBannerClick } = useGaBanner('custom', title, link);\n\n const backgroundImage = useWebp() ? backgroundWebp : background;\n const sourceBackgroundImage = useProgressiveImage(backgroundImage, { timeoutDelay: 100, hasTimeout: true });\n\n return onBannerClick(true)} data-test='custom-wrapper'>\n {advertising && (\n \n e.stopPropagation()}\n companyName={advertising.companyName}\n erid={advertising.erid}\n tooltip={{\n position: 'bottom-right',\n }}\n />\n \n )}\n \n \n \n {buttonText}\n \n \n \n {ageLimit && (\n {ageLimit}+\n )}\n {legalInfo && (\n \n )}\n \n {image && (\n \n \n {title}/\n \n \n )}\n ;\n};\n\nexport default Custom;\n","import styled, { css } from 'styled-components';\n\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\nexport const Banner = styled.div`\n height: 322px;\n background: ${COLORS.BgSurface};\n border-radius: ${BorderRadius.OuterBlockRadius} 128px 128px ${BorderRadius.OuterBlockRadius};\n grid-area: long;\n flex-wrap: nowrap;\n overflow: hidden;\n cursor: pointer;\n \n @media(max-width: ${wideBreakpoints.sDesktop}) {\n height: 260px;\n }\n\n @media(min-width: ${wideBreakpoints.sDesktop}) {\n border-radius: ${BorderRadius.OuterBlockRadius} 161px 161px ${BorderRadius.OuterBlockRadius};\n }\n \n @media(max-width: ${wideBreakpoints.mobile}) {\n height: auto;\n flex-direction: column-reverse;\n border-radius: 200px 200px ${BorderRadius.OuterBlockRadius} ${BorderRadius.OuterBlockRadius};\n } \n`;\n\nexport const Content = styled.div`\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n max-width: 480px;\n margin-right: 32px;\n\n @media(min-width: ${wideBreakpoints.sDesktop}) {\n padding-left: 60px;\n }\n \n @media(max-width: ${wideBreakpoints.sDesktop}) {\n max-width: 322px;\n margin-left: 60px;\n }\n\n @media(max-width: 1280px) {\n max-width: 388px;\n margin-left: 60px;\n }\n\n @media(max-width: ${wideBreakpoints.tablet}) {\n max-width: 255px;\n }\n \n @media(max-width: ${wideBreakpoints.mobile}) {\n width: auto;\n max-width: 100%;\n margin: 0 24px 32px;\n align-items: center;\n }\n`;\nexport const ImageWrap = styled.div<{ background?: string }>`\n flex-direction: column;\n justify-content: flex-end;\n margin-left: auto;\n position: relative;\n flex: 1;\n \n img {\n margin: 0 auto 44px;\n width: fit-content;\n }\n \n ${p => p.background && css`\n background: url(${p.background}) no-repeat;\n background-size: cover;\n `};\n \n @media(max-width: ${wideBreakpoints.mobile}) {\n margin-left: 0;\n max-width: 100%;\n width: 100%;\n height: 235px;\n flex: auto;\n overflow: hidden;\n align-self: center;\n margin-bottom: 20px;\n \n img {\n margin-bottom: 0;\n max-width: 100%;\n }\n }\n`;\n\nexport const Title = styled.p`\n ${FONTS.H3};\n color: ${COLORS.TextPrimary};\n \n @media(max-width: ${wideBreakpoints.mobile}) {\n text-align: center;\n }\n`;\n\nexport const Description = styled.p`\n ${FONTS.XS};\n color: ${COLORS.TextSecondary};\n margin-bottom: 16px;\n \n @media(max-width: ${wideBreakpoints.mobile}) {\n text-align: center;\n }\n`;\n\nexport const Legal = styled.div<{ textColor?: string }>`\n position:absolute;\n bottom: 4px;\n left: 4px;\n color: ${p => p.textColor ?? COLORS.BgMain};\n \n @media(max-width: ${wideBreakpoints.mobile}) {\n max-width: 235px;\n }\n`;\nexport const LegalTitle = styled.div`\n ${FONTS.S};\n`;\n\nexport const LegalDescription = styled.div`\n ${FONTS.XXXS};\n margin-right: 128px;\n \n @media(max-width: ${wideBreakpoints.mobile}) {\n margin-right: 0;\n }\n`;\n","import React from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport WebpImage from '@r1-frontend/ui-react/components/WebpImage';\nimport { NonStaticContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { AdvertisingLabelWithTooltip } from '@r1-frontend/ui-react/organisms/AdvertisingLabelWithTooltip';\nimport { useWebp } from '@r1-frontend/shared/hooks/useWebp';\n\nimport type { IBanner } from '~/src/api/content/banners';\nimport { useGaBanner } from '~/src/features/index/Banners/TopBanners/useGaBanner';\nimport { useProgressiveImage } from '~/src/helpers/hooks/useProgressiveImage';\n\nimport * as ST from './styled';\n\ninterface ILong {\n banner: IBanner,\n}\n\nconst Long = ({ banner }: ILong): JSX.Element => {\n const {\n title, link, text, button_text, button_type, image,\n image_webp: imageWebp,\n image_background: background,\n image_background_webp: backgroundWebp,\n age_limit, legal_info, legal_info_text_color,\n advertising,\n } = banner.bannerInfo;\n\n const { onBannerClick } = useGaBanner('long', title, link);\n\n const backgroundImage = useWebp() ? backgroundWebp : background;\n const sourceBackgroundImage = useProgressiveImage(backgroundImage, { timeoutDelay: 100, hasTimeout: true });\n\n return onBannerClick(true)} data-test='long-wrapper'>\n \n \n \n {button_text}\n \n \n {advertising && (\n \n e.stopPropagation()}\n companyName={advertising.companyName}\n erid={advertising.erid}\n tooltip={{\n position: 'top-right',\n }}\n />\n \n )}\n {image && (\n \n {title}/\n \n )}\n \n { age_limit && {age_limit}+ }\n {legal_info}\n \n \n ;\n};\n\nexport default Long;\n","import styled, { css } from 'styled-components';\n\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\nexport const Banner = styled.div<{ index: number }>`\n background: ${COLORS.BgSurface};\n border-radius: ${BorderRadius.OuterBlockRadius};\n grid-area: ${p => `simple${p.index}`};\n cursor: pointer;\n position: relative;\n`;\n\nconst Center = `\n width: 100%;\n justify-content: center;\n text-align: center;\n`;\n\nexport const ImageWrap = styled.div<{ background?: string }>`\n ${Center};\n align-content: center;\n height: 235px;\n margin-bottom: 29px;\n ${p => p.background && css`\n background: url(${p.background}) no-repeat center;\n background-size: contain;\n `};\n \n svg, img {\n margin-top: 13px;\n max-width: 100%;\n width: 336px;\n max-height: 100%;\n object-fit: contain;\n \n @media(max-width: ${wideBreakpoints.mobile}) {\n width: 296px;\n }\n }\n`;\n\nexport const Title = styled.p`\n ${Center};\n ${FONTS.H3};\n color: ${COLORS.TextPrimary};\n padding: 0 48px;\n white-space: pre-wrap;\n \n @media(max-width: ${wideBreakpoints.tablet}) {\n white-space: normal;\n padding: 0 32px;\n }\n`;\n\nexport const Text = styled.span`\n ${Center};\n ${FONTS.LABEL};\n color: ${COLORS.TextHint};\n padding: 0 48px;\n white-space: pre-wrap;\n`;\n\nexport const Description = styled.p`\n ${Center};\n ${FONTS.XS};\n color: ${COLORS.TextSecondary};\n margin-bottom: 16px;\n padding: 0 48px;\n \n @media(max-width: ${wideBreakpoints.tablet}) {\n padding: 0 32px;\n }\n`;\n\nexport const Button = styled.div`\n ${Center};\n margin-bottom: 40px;\n height: 40px;\n`;\n\n","import React from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport WebpImage from '@r1-frontend/ui-react/components/WebpImage';\nimport { NonStaticContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { AdvertisingLabelWithTooltip } from '@r1-frontend/ui-react/organisms/AdvertisingLabelWithTooltip';\nimport { useWebp } from '@r1-frontend/shared/hooks/useWebp';\n\nimport type { IBanner } from '~/src/api/content/banners';\nimport { useGaBanner } from '~/src/features/index/Banners/TopBanners/useGaBanner';\nimport { useProgressiveImage } from '~/src/helpers/hooks/useProgressiveImage';\n\nimport * as ST from './styled';\n\ninterface ISimple {\n index: number,\n banner: IBanner,\n}\n\nconst Simple = ({ banner, index }: ISimple): JSX.Element => {\n const {\n title, link, id, text, button_text, button_type, image,\n image_webp: imageWebp,\n image_background: background,\n image_background_webp: backgroundWebp,\n tab_title: tabTitle,\n advertising,\n } = banner.bannerInfo;\n const { onBannerClick } = useGaBanner('simple', title, link);\n\n const backgroundImage = useWebp() ? backgroundWebp : background;\n const sourceBackgroundImage = useProgressiveImage(backgroundImage, { timeoutDelay: 100, hasTimeout: true });\n\n return onBannerClick(true)} data-test='simple-wrapper'>\n {advertising && (\n \n e.stopPropagation()}\n tooltip={{\n position: 'bottom-right',\n }}\n />\n \n )}\n \n \n {title}/\n \n \n \n \n \n \n {button_text}\n \n ;\n};\n\nexport default Simple;\n","import Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { format } from '@r1-frontend/ui-react/components/costs';\nimport WebpImage from '@r1-frontend/ui-react/components/WebpImage';\nimport { NonStaticContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { AdvertisingLabelWithTooltip } from '@r1-frontend/ui-react/organisms/AdvertisingLabelWithTooltip';\nimport { useWebp } from '@r1-frontend/shared/hooks/useWebp';\n\nimport type { IBanner } from '~/src/api/content/banners';\nimport { useGaBanner } from '~/src/features/index/Banners/TopBanners/useGaBanner';\nimport { useProgressiveImage } from '~/src/helpers/hooks/useProgressiveImage';\n\nimport * as ST from '~/src/features/index/Banners/TopBanners/Simple/styled';\n\ninterface ISimpleTopSaleProps {\n index: number,\n banner: IBanner,\n tariffCost: number,\n}\n\nconst SimpleTopSale = ({ index, banner, tariffCost }: ISimpleTopSaleProps) => {\n const {\n title,\n link,\n id,\n text,\n button_type,\n image,\n image_webp: imageWebp,\n image_background: background,\n image_background_webp: backgroundWebp,\n tab_title: tabTitle,\n advertising,\n } = banner.bannerInfo;\n\n const { onBannerClick } = useGaBanner('simple', title, link);\n const backgroundImage = useWebp() ? backgroundWebp : background;\n const sourceBackgroundImage = useProgressiveImage(backgroundImage, {\n hasTimeout: true,\n timeoutDelay: 100,\n });\n\n return (\n onBannerClick(true)}\n >\n {advertising && (\n \n e.stopPropagation()}\n tooltip={{\n position: 'bottom-center',\n }}\n />\n \n )}\n \n \n {title}\n \n \n \n \n \n \n \n Подключить за {format(tariffCost, { monthly: true })}\n \n \n \n );\n};\n\nexport default SimpleTopSale;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nexport const Wrapper = styled.div`\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n grid-template-rows: repeat(2, min-content);\n grid-template-areas: 'simple0 simple1 simple2' 'long long custom';\n gap: 32px;\n \n @media(max-width: ${wideBreakpoints.laptop}) {\n grid-template-columns: repeat(2, 1fr);\n grid-template-rows: repeat(3, min-content);\n grid-template-areas: 'simple0 simple1' 'simple2 custom' 'long long';\n gap: 24px;\n }\n \n @media(max-width: ${wideBreakpoints.mobile}) {\n grid-template-columns: 1fr;\n grid-template-rows: repeat(5, min-content);\n grid-template-areas: 'simple0' 'simple1' 'simple2' 'custom' 'long';\n gap: 16px;\n }\n`;\n","import { useSelector } from 'react-redux';\n\nimport type { IBanner } from '~/src/api/content/banners';\nimport Custom from '~/src/features/index/Banners/TopBanners/Custom';\nimport Long from '~/src/features/index/Banners/TopBanners/Long';\nimport Simple from '~/src/features/index/Banners/TopBanners/Simple';\nimport SimpleTopSale from '~/src/features/index/Banners/TopBanners/SimpleTopSale';\nimport { TState } from '~/src/store';\nimport { selectInternetTariffByAlias } from '~/src/store/selectors/filteredBundles';\n\nimport * as ST from './styled';\n\ninterface IProps {\n banners: Record,\n hideCustomBanner?: boolean,\n}\n\nconst TopBanners = ({\n banners: { tariff: simpleBanners = [], marketing = [], custom = [], first_banner_top_sale = [] },\n hideCustomBanner,\n}: IProps): JSX.Element => {\n const [topSaleBanner] = first_banner_top_sale;\n\n /**\n * Пока AB-тест проверяет гипотезу увеличения конверсии за счет кликов\n * по самому продаваемому тарифу - он будет передаваться хардкодом.\n * В последствии если AB-тест себя покажет, то самый популярный тариф\n * будет вычисляться на бекенде (при редизайне главной)\n */\n const {\n isShowTopSaleTariff,\n simpleBannersForDisplay,\n topSaleTariff,\n } = useSelector(\n (state: TState) => {\n const topSaleTariff = selectInternetTariffByAlias(state, 'mega-200');\n const isShowTopSaleTariff = !!topSaleTariff && !!topSaleBanner;\n /**\n * Cдвигаем индексы у остальных баннеров, если первый\n * баннер - это \"Хит продаж\"\n */\n const simpleBannersForDisplay = isShowTopSaleTariff\n ? simpleBanners.slice(1).map((banner, index) => ({ banner, key: index + 1 }))\n : simpleBanners.map((banner, key) => ({ banner, key }));\n\n return {\n topSaleTariff,\n isShowTopSaleTariff,\n simpleBannersForDisplay,\n };\n },\n );\n\n return (\n \n {\n isShowTopSaleTariff && topSaleTariff && (\n \n )\n }\n {simpleBannersForDisplay.map(({ banner, key }) => (\n \n ))}\n {marketing.length > 0 && custom.length > 0 && (\n <>\n \n {!hideCustomBanner && (\n \n )}\n \n )}\n \n );\n};\n\nexport default TopBanners;\n","import styled from 'styled-components';\n\nimport { NamePhoneForm } from '@r1-frontend/ui-react/organisms/Forms/NamePhoneForm';\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\nexport const FormConnect = styled.div`\n display: block;\n background-color: ${COLORS.BgLight};\n border: none;\n border-radius: ${BorderRadius.OuterBlockRadius};\n color: ${COLORS.TextPrimary};\n padding: 35px 26px 34px 30px;\n margin-right: 20px;\n width: calc(50% - 10px);\n\n @media(max-width: 1080px) {\n padding: 25px;\n margin-right: 0;\n margin-bottom: 20px;\n width: 100%;\n }\n`;\n\nexport const FormConnectTitle = styled.div`\n display: flex;\n color: ${COLORS.TextPrimary};\n ${FONTS.H3};\n margin-bottom: 25px;\n flex-wrap: nowrap;\n\n @media(max-width: 420px) {\n ${FONTS.L};\n }\n`;\n\nexport const ContainerTitleSelect = styled.div`\n display: block;\n\n input {\n width: 0;\n }\n\n @media(max-width: 768px) {\n width: 58%;\n }\n\n @media(max-width: 350px) {\n width: 100%;\n }\n`;\n\nexport const Message = styled.div<{ ok: boolean | undefined }>`\n margin-top: 10px;\n width: 100%;\n min-height: 16px;\n color: ${p => p.ok ? COLORS.Success : COLORS.Error};\n ${FONTS.S};\n`;\n\nexport const SNamePhoneForm = styled(NamePhoneForm)`\n > div > button {\n width: 100%;\n }\n`;\n","import React, { FC, useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport {\n requestByConnection,\n RequestDto,\n ResponseDto,\n} from '@r1-frontend/api-domru/api-request/v1/user/request-by-connection';\n\n// @ts-ignore\nimport TitleSelect from '@r1-frontend/ui-react/components/select/titleSelect';\nimport { TField } from '@r1-frontend/ui-react/organisms/Forms/NamePhoneForm';\nimport { ACTIONS } from '@r1-frontend/shared/constants/analytics';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\nimport { EProductsId } from '@r1-frontend/shared/types/EProductsId';\n\nimport { POLICY_PAGE_LINK, RECAPTCHA_SITE_KEY } from '~/src/constants';\nimport { dataLayerForCBPhonePush } from '~/src/helpers/eventsForDataLayer';\nimport { selectCsrf } from '~/src/store/selectors/auth/selectCsrf';\n\nimport * as ST from './styled';\n\nconst OPTIONS = [\n {\n value: [EProductsId.internet],\n label: 'Интернет',\n },\n {\n value: [EProductsId.internet, EProductsId.tv],\n label: 'ТВ+Интернет',\n },\n];\n\nconst initResult = {\n ok: false,\n message: '',\n};\n\ninterface IFormConnectProps {\n withRecaptcha?: boolean,\n}\n\nconst FormConnect: FC = ({ withRecaptcha }) => {\n const isMobileView = useMatchMedia('(max-width: 1279px)');\n const isMiddle = useMatchMedia('(max-width: 1080px) and (min-width: 768px)');\n const csrf = useSelector(selectCsrf);\n\n const [isLoading, setIsLoading] = useState(false);\n const [result, setResult] = useState(initResult);\n const [selectedOption, setSelectedOption] = useState(OPTIONS[0]);\n const [startInput, setStartInput] = useState(false);\n\n const submitHandler = async(params?: { name: TField, phone: TField, recaptchaToken: string | null }) => {\n if (!params) {\n return;\n }\n\n const { name, phone } = params;\n\n setIsLoading(true);\n\n const dataParams: RequestDto = {\n product_id: selectedOption.value,\n fio: name.value,\n phone: phone.value,\n csrf,\n };\n\n const resp = await doRequest.apiRequest(\n requestByConnection(dataParams),\n );\n if (resp.isSuccess) {\n const { status, message } = resp.payload;\n const ok = !!status;\n\n resultHandler({\n ok,\n message,\n });\n } else {\n resultHandler({\n ok: false,\n message: 'Не удалось отправить заявку. Пожалуйста, попробуйте еще раз.',\n });\n }\n\n name.clearInput();\n phone.clearInput();\n setStartInput(false);\n setIsLoading(false);\n };\n\n const resultHandler = (result: { ok: boolean, message: string }) => {\n setResult(result);\n dataLayerForCBPhonePush({\n action: result.ok ? ACTIONS.finished : ACTIONS.error,\n option: result.ok ? selectedOption.label : `${selectedOption.label} | ${result.message}`,\n });\n };\n\n const changeHandler = (stateInput: TField) => {\n if (!startInput && stateInput.value !== undefined) {\n dataLayerForCBPhonePush({\n action: ACTIONS.started,\n option: selectedOption.label,\n isPopup: false,\n });\n setResult(initResult);\n setStartInput(true);\n }\n };\n\n return (\n \n \n Подключить \n \n \n \n \n\n \n\n {result.message &&\n {result.message}\n }\n \n );\n};\n\nexport default FormConnect;\n","import { LazyLoadImage } from 'react-lazy-load-image-component';\nimport styled from 'styled-components';\n\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\nexport const Container = styled.div`\n display: block;\n width: 100%;\n margin-bottom: 25px;\n\n @media(max-width: 768px) {\n margin-bottom: 0;\n }\n`;\n\nexport const Provider = styled.div`\n background-color: ${COLORS.BgLight};\n color: ${COLORS.TextPrimary};\n border: none;\n border-radius: ${BorderRadius.OuterBlockRadius};\n padding: 26px 30px 52px;\n\n @media(max-width: 768px) {\n padding: 25px;\n }\n`;\n\nexport const WrapperText = styled.div`\n @media(min-width: 1180px) {\n width: 70%;\n }\n`;\n\nexport const Title = styled.h3`\n margin-top: 0;\n margin-bottom: 4px;\n ${FONTS.H3};\n color: ${COLORS.TextPrimary};\n`;\n\nexport const Description = styled.p`\n margin: 0;\n margin-bottom: 20px;\n ${FONTS.S};\n color: #393C41;\n`;\n\nexport const WrapperIcon = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n\n @media(min-width: 1180px) {\n flex-direction: row;\n justify-content: space-between;\n margin-top: 25px;\n }\n`;\n\nexport const IconImg = styled(LazyLoadImage)`\n max-width: 100%;\n max-height: 100%;\n`;\n\n\nexport const Icon = styled.div`\n flex-shrink: 0;\n margin-right: 15px;\n`;\n\nexport const ProviderContainer = styled.div`\n flex-wrap: nowrap;\n align-items: center;\n margin-bottom: 15px;\n min-height: 50px;\n height: 50px;\n\n @media(max-width: 1180px) {\n width: 100%;\n height: auto;\n }\n\n @media(max-width: 768px) {\n margin-bottom: 5px;\n }\n`;\n\nexport const ProviderElement = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n\n @media (max-width: 1180px) {\n margin-bottom: 20px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n @media (min-width: 1180px) {\n width: 33%;\n padding-right: 20px;\n padding-left: 10px;\n\n &:first-child {\n width: 33%;\n padding-left: 0;\n }\n\n &:last-child {\n width: 33%;\n padding-right: 0;\n border-right: 0;\n }\n }\n\n @media (min-width: 1440px) {\n padding-right: 40px;\n padding-left: 40px;\n border-right: 1px solid #ebebeb;\n }\n`;\n\nexport const ProviderTitle = styled.div`\n color: ${COLORS.TextPrimary};\n ${FONTS.H4};\n`;\n\nexport const ProviderText = styled.p`\n color: ${COLORS.TextPrimary};\n ${FONTS.S};\n\n a {\n ${FONTS.MediumS};\n color: ${COLORS.Link};\n transition: 0.3s;\n\n &:hover {\n color: ${COLORS.Brand_Blue};\n }\n }\n`;\n","import React from 'react';\n\nimport ControlsIcon from '~/static/images/icons/controls-icon.svg';\nimport HdIcon from '~/static/images/icons/hd-icon.svg';\nimport WifiIcon from '~/static/images/icons/wifi-icon.svg';\n\nimport * as ST from './styled';\n\ninterface IIndexProvider {\n cityIn: string,\n companyName: string,\n}\n\nconst features = [\n {\n icon: ControlsIcon,\n title: 'Управление тарифом',\n text: 'Настройка пакета услуг под свои интересы и потребности',\n key: 'controls',\n }, {\n icon: WifiIcon,\n title: 'Бесплатный  Wi-Fi',\n text: '26 000 бесплатных Wi-Fi-точек по всей России',\n key: 'wifi',\n }, {\n icon: HdIcon,\n title: 'Телевидение  в HD-качестве',\n text: 'Максимум HD-каналов среди федеральных операторов',\n key: 'hd',\n },\n];\n\nconst IndexProvider = ({ cityIn, companyName }: IIndexProvider): JSX.Element => {\n return (\n \n \n \n Больше услуг и возможностей с провайдером {companyName}\n \n Подключите скоростной интернет и цифровое ТВ от {companyName} в {cityIn}.\n Соберите свой пакет услуг только из того, что нужно. Больше услуг — меньше цена.\n \n \n \n {\n features.map(feature => (\n \n \n \n \n \n \n \n \n \n ))\n }\n \n \n \n );\n};\n\nexport default IndexProvider;\n","import styled from 'styled-components';\n\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\nexport const Wpapper = styled.div`\n background-color: ${COLORS.BgLight};\n border: none;\n border-radius: ${BorderRadius.OuterBlockRadius};\n color: ${COLORS.TextPrimary};\n display: block;\n height: 100%;\n width: calc(50% - 10px);\n padding: 35px 33px 44px;\n\n @media(max-width: 1080px) {\n width: 100%;\n height: auto\n }\n`;\n\nexport const Title = styled.div`\n color: ${COLORS.TextPrimary};\n ${FONTS.H3};\n margin-bottom: 25px;\n`;\n\nexport const List = styled.ol`\n counter-reset: list;\n ${FONTS.L};\n`;\n\nexport const ListItem = styled.li`\n counter-increment: list;\n color: ${COLORS.TextPrimary};\n ${FONTS.S};\n padding-left: 25px;\n position: relative;\n margin-bottom: 20px;\n\n &:last-child {\n margin-bottom: 0;\n }\n\n &::before {\n content: counter(list) \". \";\n color: #979797;\n position: absolute;\n left: 0;\n top: 0;\n z-index: 0;\n }\n`;\n","import React from 'react';\n\nimport * as ST from './styled';\n\nconst TextConnect = (): JSX.Element => {\n return <>\n \n Как подключиться?\n \n \n Выберите услугу и оставьте заявку на сайте.\n \n \n С вами свяжется менеджер и поможет подобрать тариф.\n \n \n В удобное вам время сервисный инженер оформит договор, проведет кабель и настроит оборудование.\n \n \n \n ;\n};\n\nexport default TextConnect;\n","import styled from 'styled-components';\n\nexport const IndexContainerInfo = styled.div`\n display: flex;\n width: 100%;\n margin-bottom: 50px;\n\n @media(max-width: 640px) {\n margin-bottom: 20px;\n }\n`;\n","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport FormConnect from '~/src/features/index/Connect/FormConnect';\nimport IndexProvider from '~/src/features/index/Connect/IndexProvider';\nimport IndexTextConnect from '~/src/features/index/Connect/TextConnect';\nimport { isLeadGenerationHide } from '~/src/helpers/isLeadGenerationHide';\nimport { hasStrInUrl } from '~/src/helpers/url';\nimport { TState } from '~/src/store';\nimport { selectCompanyName } from '~/src/store/selectors/city';\n\nimport { IndexContainerInfo } from './styled';\n\nconst RECAPTCHA_STR = 'recaptcha';\nconst Connect = () => {\n const city = useSelector((state: TState) => state.city.currentCity);\n const companyName = useSelector(selectCompanyName);\n const withRecaptcha = useMemo(() => hasStrInUrl(RECAPTCHA_STR), []);\n const isLeadGeneration = useMemo(() => isLeadGenerationHide(), []);\n\n return <>\n {!isLeadGeneration &&\n \n \n \n \n }\n \n ;\n};\nexport default Connect;\n","import { useResultPopup } from '@r1-frontend/ui-react/components/popups/useResultPopup';\n\nimport { IShopItem } from '~/src/api/content/shop/getShopItems';\nimport AdaptiveNukaCarousel from '~/src/components/AdaptiveNukaCarousel';\nimport ProductCard from '~/src/components/ProductCard';\nimport { getPriceOptions } from '~/src/entities/equipment';\nimport { convertShopPrices } from '~/src/entities/price';\n\nimport { useOrderPopup } from './useOrderPopup';\n\ninterface IProps {\n items: IShopItem[],\n}\n\nconst HitsCarousel = ({ items }: IProps): JSX.Element => {\n const [PopupResult, showResult] = useResultPopup();\n const [OrderPopup, showOrder] = useOrderPopup(showResult);\n\n return <>\n \n {items.map(product => (\n \n ))}\n \n \n \n ;\n};\n\nexport default HitsCarousel;\n","import { useCallback, useMemo, useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { requestByConnection, RequestDto, ResponseDto } from '@r1-frontend/api-domru/api-request/v1/user/request-by-connection';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { EResultPopupStatus } from '@r1-frontend/ui-react/components/popups/popupResult';\nimport { TPopupState } from '@r1-frontend/ui-react/components/popups/useResultPopup';\nimport { ACTIONS, CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nimport OrderPopup from '~/src/components/Equipment/internet/orderPopup';\nimport { ISelectedOption } from '~/src/components/ProductCard/blocks/PurchaseBlock';\nimport { dataLayerForCBPhonePushWrapper } from '~/src/helpers/eventsForDataLayer';\nimport { selectCsrf } from '~/src/store/selectors/auth/selectCsrf';\n\ninterface IOrderPopupState {\n isOpen: boolean,\n name: string,\n selectedOption: ISelectedOption | Record,\n label: string,\n}\n\ntype TDetailArgs = { selectedOption: ISelectedOption, name: string };\n\n/**\n * Returns a popup component, and a function to show it.\n */\nexport const useOrderPopup = (showResult: (nextState: TPopupState) => void): [() => JSX.Element, (arg: TDetailArgs) => void] => {\n const csrf = useSelector(selectCsrf);\n const [state, setState] = useState({\n isOpen: false,\n name: '',\n selectedOption: {\n label: '',\n operType: '',\n price: 0,\n pricePromo: 0,\n sort: null,\n type: 0,\n value: 0,\n },\n label: '',\n });\n\n const closeOrderPopup = () => {\n setState({\n isOpen: false,\n name: '',\n selectedOption: {},\n label: '',\n });\n };\n\n const onSuccessOrder = (text: string) => {\n closeOrderPopup();\n showResult({\n text,\n type: EResultPopupStatus.SUCCESS,\n title: 'Заявка на подключение отправлена',\n });\n };\n\n const onErrorOrder = (text: string) => {\n closeOrderPopup();\n const { name, selectedOption } = state;\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.applicationForm,\n action: ACTIONS.error,\n label: `popup | ${name} | ${selectedOption.operType} | ${selectedOption.price} | ${text}`,\n });\n\n showResult({\n text,\n type: EResultPopupStatus.ERROR,\n title: 'Произошла ошибка',\n });\n };\n\n const onDetail = ({ selectedOption, name }: TDetailArgs) => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.equipment,\n action: ACTIONS.clickOrder,\n label: `${name} | ${selectedOption.operType} | ${selectedOption.price}`,\n });\n\n setState({\n isOpen: true,\n name,\n selectedOption,\n label: `${name} | ${selectedOption.operType} | ${selectedOption.price}`,\n });\n };\n\n const popupRequestHandler = useCallback(async(params: RequestDto) => {\n const resp = await doRequest.apiRequest(\n requestByConnection({ ...params, csrf }),\n );\n if (resp.isSuccess) {\n const { status, message } = resp.payload;\n const ok = !!status;\n\n dataLayerForCBPhonePushWrapper({ status, option: state.label });\n if (ok) {\n onSuccessOrder(message);\n } else {\n onErrorOrder(message);\n }\n } else {\n const message = resp.error.message || 'Возникла системная ошибка. Пожалуйста, попробуйте еще раз.';\n onErrorOrder(message);\n }\n }, []);\n\n const Component = useMemo(() => (\n \n ), [state, popupRequestHandler]);\n\n return [\n () => Component,\n onDetail,\n ];\n};\n","import styled from 'styled-components';\n\nconst Anchor = styled.a``;\n\nAnchor.displayName = 'Anchor';\n\nexport { Anchor };\n","import { css, FlattenSimpleInterpolation } from 'styled-components';\n\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\ntype TProps = {\n $small?: boolean,\n $withAnimation?: boolean,\n}\n\nconst getAnimation = () => ({ theme: { breakpoints }, $small = false, $withAnimation = true }: ThemedProperties): FlattenSimpleInterpolation => {\n if (!$withAnimation) {\n return [];\n }\n\n const transition = 'transition: transform .2s;';\n\n if ($small) {\n return css`\n ${transition}\n \n &:active {\n transform: scale(0.89);\n }\n `;\n }\n\n return css`\n ${transition}\n\n &:active {\n transform: scale(0.9);\n\n @media (min-width: ${breakpoints.tablet}) {\n transform: scale(0.83);\n }\n }\n `;\n};\n\nexport default getAnimation;\n","import { css } from 'styled-components';\n\nimport { ColorType, TButtonType } from '@r1-frontend/ui-kit/atoms/button';\nimport { ColorsInterface } from '@r1-frontend/ui-kit/themes/colors/types';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\ntype TColors = {\n background: {\n base: ColorType,\n active: ColorType,\n hover: ColorType,\n },\n textColor: ColorType,\n}\n\nconst getColorsByType = ($type: TButtonType, colors: ColorsInterface): TColors => {\n switch ($type) {\n // @todo заменить на токены цветов\n case 'accent':\n return {\n background: {\n base: colors.system.accent,\n active: '#bf2521',\n hover: '#d92a25',\n },\n textColor: colors.text.contrast,\n };\n case 'primary':\n return {\n background: {\n base: colors.system.primary,\n active: '#404152',\n hover: '#343547',\n },\n textColor: colors.text.contrast,\n };\n case 'secondary':\n return {\n background: {\n base: colors.system.secondary,\n active: '#99c0d3',\n hover: '#b3d9ec',\n },\n textColor: colors.text.head,\n };\n case 'outline':\n case 'ghost':\n return {\n background: {\n base: 'transparent',\n active: 'transparent',\n hover: 'transparent',\n },\n textColor: colors.links.accent,\n };\n }\n};\n\nconst getColors = () => ({ theme, $type = 'accent' }: ThemedProperties<{ $type?: TButtonType }>) => {\n const colors = getColorsByType($type, theme.colors);\n\n return css`\n background-color: ${colors.background.base};\n color: ${colors.textColor};\n\n &:active {\n background-color: ${colors.background.active}; \n }\n\n @media (hover: hover) {\n &:hover {\n background-color: ${colors.background.hover};\n }\n }\n `;\n};\n\nexport default getColors;\n","import { css } from 'styled-components';\n\nimport { TButtonProps } from '@r1-frontend/ui-kit/atoms/button';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\nconst getResponsiveSizeStyles = () => ({ theme, $small = false, icon, children }: ThemedProperties) => {\n const hasIconOnly = !!icon && !children;\n\n if ($small) {\n return css`\n font-size: ${theme.typography.headers.h5.mobile.fs}px;\n padding: ${hasIconOnly ? `${theme.indents.xxs}px` : `${theme.indents.xxs}px ${theme.indents.s}px`};\n line-height: ${theme.typography.headers.h5.mobile.lh}px;\n `;\n }\n\n return css`\n font-size: ${theme.typography.headers.h5.mobile.fs}px;\n padding: ${hasIconOnly ? `${theme.indents.xs}px` : `${theme.indents.xs}px ${theme.indents.xm}px`};\n line-height: ${theme.typography.headers.h5.mobile.lh}px;\n\n @media (min-width: ${theme.breakpoints.tablet}) {\n font-size: ${theme.typography.headers.h5.desktop.fs}px;\n line-height: ${theme.typography.headers.h5.desktop.lh}px;\n }\n `;\n};\n\nexport default getResponsiveSizeStyles;\n","import React, { LegacyRef, ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { HexColor } from '@r1-frontend/ui-kit/themes/colors/types';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\nimport getAnimation from './helpers/getAnimation';\nimport getColors from './helpers/getColors';\nimport getResponsiveSizeStyles from './helpers/getResponsiveSizeStyles';\n\nexport type ColorType = HexColor | 'transparent';\nexport type TButtonType = 'accent'| 'primary' | 'secondary' | 'outline' | 'ghost';\n\nexport type TButtonProps = {\n /**\n * Тип кнопки\n *\n * @default accent\n */\n $type?: TButtonType,\n\n /**\n * Меньший размер\n *\n * @default false\n */\n $small?: boolean,\n\n /**\n * Анимация при нажатии\n *\n * @default true\n */\n $withAnimation?: boolean,\n\n icon?: ReactNode,\n ref?: LegacyRef,\n};\n\nconst Button = styled(\n ({ children, icon, ...props }: TButtonProps & React.ButtonHTMLAttributes) => (\n \n ),\n)`\n position: relative;\n border: none;\n box-sizing: border-box;\n box-shadow: none;\n cursor: pointer;\n border-radius: 30px;\n\n ${getColors()};\n ${getResponsiveSizeStyles()};\n ${getAnimation()};\n\n ${({ $type, theme }: ThemedProperties) => css`\n font-weight: 500;\n border: ${$type === 'outline' ? `2px solid ${theme.colors.system.secondary}` : 'none'};\n\n &[disabled] {\n cursor: none;\n pointer-events: none;\n background-color: ${$type === 'outline' || $type === 'ghost' ? 'transparent' : theme.colors.system.disabled};\n color: ${theme.colors.text.disabled};\n border: ${$type === 'outline' ? `2px solid ${theme.colors.system.disabled}` : 'none'};\n }\n\n span {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: ${theme.indents.xxs}px;\n white-space: nowrap;\n margin: ${theme.indents.xxxxxs};\n }\n `};\n`;\n\nButton.displayName = 'Button';\n\nexport { Button };\n","/**\n * @link https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight#common_weight_name_mapping\n */\nconst fontWeightNames = [\n 'thin', 'extraLight', 'light', 'normal', 'medium', 'semiBold', 'bold', 'extraBold', 'black', 'extraBlack',\n] as const;\n\n/**\n * All available font-weight by the specification\n */\nexport type FontWeight = typeof fontWeightNames[number];\n\n/**\n * Font-weight using on the R1 projects\n */\nexport const r1FontWeights: Record = {\n // [constant name]: our weight, // common weight\n 'thin': 400, // 100\n 'extraLight': 400, // 200\n 'light': 400, // 300\n 'normal': 400, // 400\n 'medium': 500, // 500\n 'semiBold': 600, // 600\n 'bold': 600, // 700\n 'extraBold': 600, // 800\n 'black': 600, // 900\n 'extraBlack': 600, // 950\n} as const;\n\n/**\n * Helper for getting actual font-weight by the font weight name\n * @param fontWeightName\n */\nexport const getFontWeightByName = (fontWeightName: FontWeight) => {\n return r1FontWeights[fontWeightName];\n};\n","import { css, SimpleInterpolation } from 'styled-components';\n\nimport { THeaderLevel } from '@r1-frontend/ui-kit/atoms/typography/heading/types';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\n// @todo write tests\nexport const getFontSize = (level: THeaderLevel) => (\n { theme: { typography: { headers }, breakpoints } }: ThemedProperties,\n): SimpleInterpolation => {\n return css`\n font-size: ${headers[`h${level}`].mobile.fs}px;\n line-height: ${headers[`h${level}`].mobile.lh}px;\n\n @media (min-width: ${breakpoints.mobile}) {\n font-size: ${headers[`h${level}`].desktop.fs}px;\n line-height: ${headers[`h${level}`].desktop.lh}px;\n }\n `;\n};\n","import styled from 'styled-components';\n\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\nimport { FontWeight, getFontWeightByName } from '@r1-frontend/ui-kit/themes/typography.fontWeight';\n\nimport { getFontSize } from './helpers/getFontSize';\n\ntype THeaderProps = {\n /**\n * Насыщенность (толщина) шрифта\n *\n * @default none\n */\n $weight?: FontWeight,\n}\n\nconst BaseHeader = styled.h1`\n margin: 0;\n padding: 0;\n color: ${({ theme }) => theme.colors.text.head};\n font-weight: ${({ $weight = 'bold' }: ThemedProperties) => getFontWeightByName($weight)};\n`;\n\n/**\n * Заголовок страницы / баннерный текст\n */\nexport const H1 = styled(BaseHeader)`\n ${getFontSize(1)};\n`;\n\n/**\n * Заголовок блоков или разделов, страницы при большом количестве текста\n */\nexport const H2 = styled(BaseHeader.withComponent('h2'))`\n ${getFontSize(2)};\n`;\n\n/**\n * Заголовок карточки или виджета\n */\nexport const H3 = styled(BaseHeader.withComponent('h3'))`\n ${getFontSize(3)};\n`;\n\n/**\n * Заголовок текстового блока\n */\nexport const H4 = styled(BaseHeader.withComponent('h4'))`\n ${getFontSize(4)};\n`;\n\n/**\n * Заголовок текстового блока или выделение части текста\n */\nexport const H5 = styled(BaseHeader.withComponent('h5'))`\n ${getFontSize(5)};\n`;\n\n/**\n * Заголовок текстового блока или выделение части текста\n */\nexport const H6 = styled(BaseHeader.withComponent('h6'))`\n ${getFontSize(6)};\n`;\n","import styled from 'styled-components';\n\nexport const SvgStyled = styled.svg`\n display: inline-block;\n vertical-align: middle;\n fill: transparent;\n stroke: ${({ theme }) => theme.colors.text.head};\n`;\n","import React, { ReactNode } from 'react';\nimport styled from 'styled-components';\n\nimport { SvgStyled } from './styled';\n\nexport type TSvgSizeProps = {\n size: number,\n width?: never,\n height?: never,\n} | {\n size?: never,\n width: number,\n height: number,\n} | {\n size?: never,\n width?: never,\n height?: never,\n}\n\nexport type TBaseSvgProps = {\n id: string,\n viewBox: string,\n role?: string,\n strokeWidth?: number,\n children?: ReactNode,\n onClick?: () => void,\n} & TSvgSizeProps;\n\nconst Svg = ({ role = 'img', size = 24, width, height, ...props }: TBaseSvgProps): JSX.Element => {\n if (!width && !height) {\n width = size;\n height = size;\n }\n\n return (\n \n );\n};\n\nexport default styled(Svg)``;\n","import styled from 'styled-components';\n\nimport Svg, { TBaseSvgProps, TSvgSizeProps } from './Svg';\n\nexport type TSvgProps = Omit & TSvgSizeProps;\n\n/**\n * ATTENTION! This helper function should be used only for the main svg icons from the design system.\n * For the Status icons or any other icons this helper should not be used.\n */\nexport const createSvg = (Path: (pathProps: any) => JSX.Element, displayName: string, viewBox = '0 0 24 24') => {\n const SvgComponent = (props: TSvgProps): JSX.Element => {\n let strokeWidth = undefined;\n\n if (props && 'size' in props && props.size) {\n strokeWidth = props.size <= 16 ? 2.2 : props.size <= 20 ? 2 : 1.5;\n }\n\n return (\n \n \n \n );\n };\n\n SvgComponent.displayName = `Svg_${displayName}`;\n\n return styled(SvgComponent)``;\n};\n","import { createSvg } from '../сreateSvg';\n\nconst Global = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return \n \n \n \n \n \n ;\n};\n\nexport default createSvg(\n Global,\n 'global',\n);\n","import styled, { css } from 'styled-components';\n\nimport { TextColorsType } from '@r1-frontend/ui-kit/themes/colors/types';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\nimport { getFontWeightByName } from '@r1-frontend/ui-kit/themes/typography.fontWeight';\nimport { TextSizeType } from '@r1-frontend/ui-kit/themes/typography.paragraphs';\n\n/**\n * Getting text elements from the \"The periodic table of HTML elements by Josh Duck\"\n * {@link https://atomicdesign.bradfrost.com/chapter-2/#the-atomic-design-methodology}\n */\nexport const textLevelElements = [\n 'span', 'a', 'rt', 'rp', 'dfn', 'abbr', 'q', 'city', 'em', 'time', 'var', 'samp', 'i', 'b', 'sub',\n 'sup', 'small', 'strong', 'mark', 'ruby', 'ins', 'del', 'bdi', 'bdo', 's', 'kbd', 'wbr', 'code',\n] as const;\n\nexport type TextLevelElements = typeof textLevelElements[number];\n\nexport type TextProperties = {\n /**\n * Размер текста\n * @default sm\n */\n $size?: TextSizeType,\n\n /**\n * Средняя ширина текста\n */\n $weight?: 'medium', // if you need more variations, and you have more than three variation of font, you can use the FontWeight type from the `typography.fontWeight`\n\n /**\n * Цвет текста\n */\n $color?: TextColorsType,\n\n /**\n * Семантический элемент для отрисовки\n * @default span\n */\n as?: TextLevelElements,\n}\n\nconst Text = styled.span`\n ${({ theme, $size = 'sm', $weight, $color }: ThemedProperties) => css`\n font-size: ${theme.typography.text[$size].fs}px;\n line-height: ${theme.typography.text[$size].lh}px;\n color: ${$color ? theme.colors.text[$color] : theme.colors.text.primary};\n \n ${$weight ? `font-weight: ${getFontWeightByName($weight)}` : ''};\n `};\n`;\n\nText.displayName = 'Text';\n\nexport { Text };\n","/*\n * Неразрывный пробел. Применять в случае, когда нет возможности явно использовать html special symbol, либо он не интерпретируется за спец символ и выводится строкой\n */\nexport const NBSP = String.fromCharCode(160);\nexport const RubleSymbol = String.fromCharCode(8381);\nexport const MDASH = String.fromCharCode(8212);\nexport const NBHYPHEN = String.fromCharCode(8209);\nexport const LAQUO = String.fromCharCode(171);\nexport const RAQUO = String.fromCharCode(187);\n","const divideByThousand = (price: number | string): string => {\n if (typeof price === 'string') {\n price = parseFloat(price);\n }\n\n return new Intl.NumberFormat('ru', {\n style: 'decimal',\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n }).format(price);\n};\n\nexport default divideByThousand;\n","import { NBSP, RubleSymbol } from '@r1-frontend/ui-kit/atoms/symbols';\n\nimport divideByThousand from './divideByThousand';\n\nexport type FormatIsArgument = {\n monthly: boolean,\n annually?: never,\n} | {\n monthly?: never,\n annually: boolean,\n}\n\n\nconst format = (price: number | string, is?: FormatIsArgument) => {\n const period = !is ? '' : Object.hasOwn(is, 'monthly') ? '/мес' : '/год';\n\n return `${divideByThousand(price)}${NBSP}${RubleSymbol}${period}`;\n};\n\nexport default format;\n","import styled from 'styled-components';\n\nimport format, { FormatIsArgument } from './format';\n\nexport interface IBaseCostProps {\n children: string | number,\n className?: string,\n}\n\nexport type CostPeriodProperties = {\n monthly: boolean,\n annually?: never,\n} | {\n monthly?: never,\n annually: boolean,\n} | {\n monthly?: never,\n annually?: never,\n}\n\nexport type CostProperties = {\n children: string | number,\n}\n\nconst Price = styled(({\n children,\n ...props\n}: CostProperties & CostPeriodProperties) => {\n const options: FormatIsArgument | undefined = props.monthly\n ? { monthly: true }\n : props.annually\n ? { annually: true }\n : undefined;\n\n return (\n \n {format(children, options)}\n \n );\n})`\n white-space: nowrap;\n`;\n\nPrice.displayName = 'Price';\n\nexport { Price };\n","import styled, { css } from 'styled-components';\n\nimport { H3 } from '@r1-frontend/ui-kit/atoms/typography/heading';\nimport { Text } from '@r1-frontend/ui-kit/atoms/typography/text';\nimport { Price } from '@r1-frontend/ui-kit/molecules/Price';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\nimport { pluralize } from '@r1-frontend/shared/helpers/pluralize';\nimport { monthPluralize } from '@r1-frontend/shared/helpers/pluralize/predifined';\n\ntype DiscountedPriceProps = {\n /**\n * Текущая цена со скидкой\n */\n current: number,\n\n /**\n * Длительность промо периода в месяцах\n */\n discountPeriod?: number,\n\n /**\n * Актуальная цена по окончании пормо периода\n */\n actual?: number,\n\n /**\n * Расположение в одну строку\n */\n inline?: boolean,\n}\n\nconst DiscountedPrice = styled(\n ({ current, actual, discountPeriod, ...props }: DiscountedPriceProps) => (\n
\n

{current}

\n {\n actual && discountPeriod && (\n
\n {discountPeriod} {pluralize(discountPeriod, monthPluralize)}\n \n Далее {actual}\n \n
\n )\n }\n
\n ),\n)`\n ${({ theme, inline }: ThemedProperties) => css`\n &,\n & > div {\n display: flex;\n }\n \n flex-direction: ${inline ? 'row' : 'column'};\n align-items: ${inline ? 'center' : 'flex-start'};\n gap: ${inline ? theme.indents.s : theme.indents.xxxs}px;\n \n & > div {\n flex-direction: column;\n }\n `}\n`;\n\nDiscountedPrice.displayName = 'DiscountedPrice';\n\nexport { DiscountedPrice };\n","import styled from 'styled-components';\n\nexport type IImageProps = React.ImgHTMLAttributes & {\n srcWebp?: string,\n}\n\n/**\n * Image component supports the native React HTML Img attributes,\n * since that custom styles and any other supported api might be provided (alt, width height, etc.)\n */\nconst Image = ({ alt, src, srcWebp, ...props }: IImageProps) => {\n return \n \n {alt}/\n ;\n};\n\nexport default styled(Image)`\n display: inline-block;\n height: auto;\n\n padding: ${({ theme }) => theme.indents.xxxxxs}px;\n img {\n margin: auto;\n }\n`;\n","import styled from 'styled-components';\n\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\nexport default styled.span`\n border-radius: ${({ theme }: ThemedProperties) => `${theme.radii.percentage.half}%`};\n background-color: ${({ theme }: ThemedProperties) => `${theme.colors.system.background}`};\n\n padding: ${({ theme }: ThemedProperties) => `${theme.indents.xxs}px`};\n`;\n","import React, { ReactElement, SyntheticEvent } from 'react';\nimport styled from 'styled-components';\n\nimport Image from '@r1-frontend/ui-kit/atoms/embeding/Image';\nimport RoundingFramedIcon from '@r1-frontend/ui-kit/atoms/svg/RoundingFramedIcon';\nimport * as Symbol from '@r1-frontend/ui-kit/atoms/symbols';\nimport { H5 } from '@r1-frontend/ui-kit/atoms/typography/heading';\nimport { Text } from '@r1-frontend/ui-kit/atoms/typography/text';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\n// TODO: подумать над пробрасыванием дженерика для type\nexport interface CardProperties {\n title: string,\n count?: string,\n icon?: ReactElement,\n description?: string,\n images?: string[],\n onClick?: (e: SyntheticEvent) => void,\n type: string,\n}\n\nconst Card = styled(({ icon, title, images, description, count, onClick, ...props }: CardProperties): ReactElement => {\n return
\n {icon && (\n {icon}\n )}\n\n
\n
\n
{count}
{Symbol.NBSP}{title}\n
\n
\n {images && (\n
\n {React.Children.map(images, (image => {'Подписка'}/))}\n
\n )}\n {description && }\n
\n
\n
;\n})`\n background-color: ${({ theme }: ThemedProperties) => `${theme.colors.system.light}`};\n border-radius: ${({ theme }: ThemedProperties) => `${theme.radii.pixel.m}px`};\n padding: ${({ theme }: ThemedProperties) => `${theme.indents.xs}px`};\n\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: flex-start;\n gap: ${({ theme }: ThemedProperties) => `${theme.indents.xxs}px`};\n\n & > div {\n display: block;\n }\n\n ${H5} {\n display: inline-block;\n\n /*\n * ad-hoc\n *\n * @todo Переделать\n * Расхождения по дизайн системе. Лучше пока нет. Не повторять!\n */\n font-size: 18px;\n }\n\n a {\n border-width: 0;\n border-style: dashed;\n border-color: ${({ theme }: ThemedProperties) => theme.colors.text.head};\n border-bottom-width: 1px;\n\n text-decoration: none;\n\n color: ${({ theme }: ThemedProperties) => theme.colors.text.head};\n cursor: pointer;\n }\n\n & .MultiPackage_Card__content_wrapper {\n display: flex;\n flex-direction: column;\n gap: ${({ theme }: ThemedProperties) => `${theme.indents.xxs}px`};\n }\n\n & .MultiPackage_Card__content_wrapper > div {\n display: block;\n }\n\n & .MultiPackage_Card__content_wrapper > div:first-child {\n display: flex;\n flex-direction: row;\n align-items: center;\n\n flex-wrap: nowrap;\n\n ${Text} {\n white-space: nowrap;\n /*\n * ad-hoc\n *\n * @todo Переделать\n * Расхождения по дизайн системе. Лучше пока нет. Не повторять!\n */\n line-height: 18px;\n }\n }\n\n & .MultiPackage_Card__content_wrapper .MultiPackage_Card__images_wrapper {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: baseline;\n justify-content: flex-start;\n gap: ${({ theme }: ThemedProperties) => `${theme.indents.xxxs}px`};\n }\n\n & .MultiPackage_Card__images_wrapper ${Image} {\n border-radius: 5px;\n height: 24px;\n }\n`;\n\nCard.displayName = 'MultiPackage_Card';\n\nexport default Card;\n","import { ReactElement } from 'react';\nimport styled from 'styled-components';\n\nimport RoundingFramedIcon from '@r1-frontend/ui-kit/atoms/svg/RoundingFramedIcon';\nimport { H5 } from '@r1-frontend/ui-kit/atoms/typography/heading';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\nexport type InternetTitleProperties = {\n children: string | ReactElement,\n icon?: ReactElement,\n}\n\nconst InternetTitle = styled(({ children, icon, ...props }: InternetTitleProperties): JSX.Element => {\n return
\n {icon && (\n \n {icon}\n \n )}\n\n
\n до {children} Мбит/с\n
\n
;\n})`\n display: flex;\n flex-direction: row;\n\n align-items: center;\n\n background-color: ${({ theme }: ThemedProperties) => `${theme.colors.system.light}`};\n border-radius: ${({ theme }: ThemedProperties) => `${theme.radii.pixel.l}px`};\n padding: ${({ theme }: ThemedProperties) => `${theme.indents.xxs}px`};\n\n ${RoundingFramedIcon} {\n margin-right: ${({ theme }: ThemedProperties) => `${theme.indents.xxs}px`};\n }\n`;\n\nInternetTitle.displayName = 'MultiPackage_InternetTitle';\n\nexport default InternetTitle;\n","import { ReactElement } from 'react';\nimport styled from 'styled-components';\n\nimport { Text } from '@r1-frontend/ui-kit/atoms/typography/text';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\nexport type SpeedSelectorProperties = {\n title: string,\n items: number[],\n selectedItem: number,\n onSelect: (item: number) => void,\n}\n\nconst SpeedSelector = ({ title, items, selectedItem, onSelect, ...props }: SpeedSelectorProperties): ReactElement => {\n const handleOnClick = (item: number) => () => {\n onSelect(item);\n };\n\n return
\n {title}\n\n
    \n {items.map(item => {\n return \n \n {item}\n \n ;\n })}\n
\n
;\n};\n\nexport default styled(SpeedSelector)`\n display: flex;\n flex-direction: row;\n\n gap: ${({ theme }: ThemedProperties) => `${theme.indents.xxs}px`};\n\n justify-content: flex-start;\n align-items: flex-start;\n\n & > ${Text} {\n justify-content: center;\n flex: 0 0 0;\n }\n\n & ul {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: ${({ theme }: ThemedProperties) => theme.indents.xxxs}px;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n & ul li {\n cursor: pointer;\n padding: ${({ theme }: ThemedProperties) => theme.indents.xxxs}px;\n\n justify-content: center;\n align-items: center;\n border-radius: ${({ theme }: ThemedProperties) => theme.radii.pixel.s}px;\n border: ${({ theme }: ThemedProperties) => `1px dashed ${theme.colors.links.accent}`};\n background-color: ${({ theme }: ThemedProperties) => theme.colors.system.background};\n color: ${({ theme }: ThemedProperties) => theme.colors.text.primary};\n\n outline: inherit;\n }\n\n & ul li.active {\n pointer-events: none;\n border: ${({ theme }: ThemedProperties) => `1px solid ${theme.colors.system.primary}`};\n background-color: ${({ theme }: ThemedProperties) => theme.colors.system.primary};\n }\n & ul li.active ${Text} {\n color: ${({ theme }: ThemedProperties) => theme.colors.text.contrast};\n }\n`;\n","import styled, { css } from 'styled-components';\n\nimport Card from '@r1-frontend/ui-kit/organisms/Package/MultiPackage/Card';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\n/**\n * @param $stretchTheFirstOne property for stretching first item of item list.\n * You may see implementations of sorting at the transformApiTariffsAnswerToMultiPackage\n *\n * @link frontend/apps/b2c-domru/src/features/index/MultiPackageList/transformApiTariffAnswerToMultiPackage.ts\n */\nexport const CardsWrapper = styled.div<{ $stretchTheFirstOne?: boolean }>`\n display: grid;\n // grid не учитывает gap, поэтому контент растягивается за ширину блока\n grid-template-columns: ${({ theme }: ThemedProperties) => `repeat(2, calc(50% - ${theme.indents.xxs / 2}px))`};\n grid-gap: ${({ theme }: ThemedProperties) => `${theme.indents.xxs}px`};\n\n ${({ $stretchTheFirstOne = false }) => {\n return $stretchTheFirstOne\n ? css`\n & ${Card}:first-child {\n grid-column: 1 / span 2;\n }\n `\n : '';\n }};\n`;\n","import { SyntheticEvent, useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport { Button } from '@r1-frontend/ui-kit/atoms/button';\nimport { Global } from '@r1-frontend/ui-kit/atoms/svg/global';\nimport { H3 } from '@r1-frontend/ui-kit/atoms/typography/heading';\nimport { Text } from '@r1-frontend/ui-kit/atoms/typography/text';\nimport { DiscountedPrice } from '@r1-frontend/ui-kit/molecules/Price/Discounted';\nimport Card, { CardProperties } from '@r1-frontend/ui-kit/organisms/Package/MultiPackage/Card';\nimport InternetTitle from '@r1-frontend/ui-kit/organisms/Package/MultiPackage/InternetTitle';\nimport SpeedSelector from '@r1-frontend/ui-kit/organisms/Package/MultiPackage/SpeedSelector';\nimport { HexColor } from '@r1-frontend/ui-kit/themes/colors/types';\nimport darkTheme from '@r1-frontend/ui-kit/themes/theme.dark';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\nimport { CardsWrapper } from './styled';\n\nexport interface MultiPackageProductPrice {\n current: number,\n actual?: number,\n discountPeriod?: number,\n}\n\nexport interface MultiPackageProduct {\n id: number,\n speed: number,\n price: MultiPackageProductPrice,\n items?: CardProperties[],\n}\n\nexport interface MultiPackageProperties {\n /**\n * Фон карточки\n */\n $background: {\n image?: string,\n color?: HexColor,\n },\n /**\n * Заголовок карточки\n */\n name: string,\n /**\n * Описание карточки\n */\n description: string,\n /**\n * Содержимое\n */\n content: Record,\n /**\n * Текущая скорость\n */\n selectedSpeed: number,\n\n /**\n * Текст кнопки\n * @default Выбрать\n */\n buttonText: string,\n\n /**\n * Колбек выбора скорости\n */\n onSpeedSelect(speed: number): void,\n\n /**\n * Колбек нажатия на кнопку\n */\n onSelectClicked(): void,\n\n /**\n * Колбек нажатия на карточку (каналы, оборудование, подписки)\n */\n onCardClick(event: SyntheticEvent, type: CardClickType): void,\n}\n\nconst MultiPackage = styled(({\n name,\n description,\n selectedSpeed,\n content,\n buttonText = 'Выбрать',\n onSpeedSelect,\n onCardClick,\n onSelectClicked,\n ...props\n}: MultiPackageProperties): JSX.Element => {\n const pkg: MultiPackageProduct = useMemo(() => content[selectedSpeed], [selectedSpeed, content]);\n\n const speeds = useMemo(() => Object.values(content).map(p => p.speed), [content]);\n const hasSubscriptions = useMemo(() => pkg.items?.some(item => item.type === 'subscription'), [pkg]);\n\n const onCardClickHandler = (type: string) => (event: SyntheticEvent) => {\n onCardClick(event, type);\n };\n\n return
\n
\n
\n

{name}

\n {description}\n
\n
\n\n
\n }>{String(selectedSpeed)}\n\n \n\n {pkg.items?.length\n ? \n {pkg.items.map(card => {\n return ;\n })}\n \n : null\n }\n\n
\n \n
\n \n
\n
\n
\n
;\n})`\n border-radius: ${({ theme }: ThemedProperties) => `${theme.radii.pixel.xl}px`};\n background-image: ${({ $background }) => $background?.image ? `url(${$background.image})` : 'none'};\n background-color: ${({ $background }) => $background?.color || 'transparent'};\n background-size: cover;\n\n display: flex;\n flex-direction: column;\n overflow: hidden;\n\n & > section:first-child {\n padding: ${({ theme }: ThemedProperties) => `${theme.indents.s}px ${theme.indents.m}px`};\n max-height: 118px;\n height: 100%;\n\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n }\n \n & > section:first-child > div {\n display: block;\n }\n\n & > section:last-child {\n height: 100%;\n background-color: ${({ theme }: ThemedProperties) => `${theme.colors.system.background}`};\n border-radius: 28px; /* discuss about this */\n margin: ${({ theme }: ThemedProperties) => `0 ${theme.indents.xxxs}px ${theme.indents.xxxs}px ${theme.indents.xxxs}px`};\n padding: ${({ theme }: ThemedProperties) => `${theme.indents.xxs}px`};\n\n display: flex;\n flex-direction: column;\n\n gap: ${({ theme }: ThemedProperties) => `${theme.indents.xs}px`};\n }\n\n & > section:last-child footer {\n display: flex;\n flex-direction: column;\n gap: ${({ theme }: ThemedProperties) => `${theme.indents.s}px`};\n margin: ${({ theme }: ThemedProperties) => `auto ${theme.indents.xxxs}px ${theme.indents.xxxs}px`};\n }\n\n & > section:last-child footer > div:last-child {\n display: grid;\n grid-template-columns: 1fr auto;\n gap: ${({ theme }: ThemedProperties) => `${theme.indents.xxs}px`};\n\n ${Button} {\n width: 100%;\n }\n }\n`;\n\nMultiPackage.displayName = 'MultiPackage';\n\nexport { MultiPackage };\n","export enum EAction {\n Initialization = '@multiPackage/initialization',\n Initialized = '@multiPackage/initialized',\n Initialize = '@multiPackage/initialize',\n SetLoading = '@multiPackage/loading/set',\n\n FiltersSetSubject = '@multiPackage/filters/set/subject',\n FiltersSetType = '@multiPackage/filters/set/type',\n FiltersSetTags = '@multiPackage/filters/set/tags',\n\n SetPackageId = '@multiPackage/packageId/set',\n SetCurrentPackageIdForLine = '@multiPackage/selectCurrentPackageId/set',\n SetProductItemType = '@multiPackage/productItemType/set',\n SetChannels = '@multiPackage/channels/set',\n SetChannelsCategory = '@multiPackage/channels/category/set',\n SetChannelsSearchValue = '@multiPackage/channels/search/value/set',\n SetChannelsSearchVisibility = '@multiPackage/channels/search/visibility/set',\n SetSubscriptions = '@multiPackage/subscriptions/set',\n SetEquipment = '@multiPackage/equipment/set',\n\n SetupCallbackPopup = '@multiPackage/callbackPopup/data/set',\n CloseCallbackPopup = '@multiPackage/callbackPopup/close',\n}\n","import { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst closeCallbackPopup = (): IAction => ({\n type: EAction.CloseCallbackPopup,\n payload: null,\n});\n\nexport default closeCallbackPopup;\n","import { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { TFilters, TPackageLines, TTagName } from '~/src/features/index/MultiPackageList/context/initialState';\nimport { IAction } from '~/src/store';\n\nconst initialize = (packageLines: TPackageLines): IAction => {\n const availableTags: string[] = [];\n\n Object.values(packageLines).forEach(line => {\n Object.values(line.content)\n .map(pkg => pkg.items)\n .flat()\n .filter(i => i.type === 'subscription')\n .forEach(sub => {\n if ('tags' in sub && Array.isArray(sub.tags)) {\n availableTags.push(...sub.tags);\n }\n });\n });\n\n const tags = [...new Set(availableTags)].reduce>((acc, cur) => {\n acc[cur] = {\n active: false,\n };\n return acc;\n }, {});\n\n return {\n type: EAction.Initialize,\n payload: {\n packageLines,\n filters: {\n subject: 'apartment',\n type: 'bundle',\n tags: tags,\n },\n },\n };\n};\n\nexport default initialize;\n","import { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { IChannelsState } from '~/src/features/index/MultiPackageList/transformChannels';\nimport { IAction } from '~/src/store';\n\nexport type TSetChannelsPayload = Record\n\nconst setChannels = (channels: TSetChannelsPayload): IAction => ({\n type: EAction.SetChannels,\n payload: {\n channels,\n },\n});\n\nexport default setChannels;\n","import { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst setChannelsCategory = (category: string): IAction => ({\n type: EAction.SetChannelsCategory,\n payload: {\n category,\n },\n});\n\nexport default setChannelsCategory;\n","import { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst setChannelsSearchValue = (search: string): IAction => ({\n type: EAction.SetChannelsSearchValue,\n payload: {\n search,\n },\n});\n\nexport default setChannelsSearchValue;\n","import { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst setChannelsSearchVisibility = (visible: boolean): IAction => ({\n type: EAction.SetChannelsSearchVisibility,\n payload: {\n visible,\n },\n});\n\nexport default setChannelsSearchVisibility;\n","import { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { IAction } from '~/src/store';\n\nexport interface ISetSelectedSpeed {\n packageLineId: number,\n packageId: number,\n}\n\nconst setCurrentPackageIdForLine = (packageLineId: number, packageId: number): IAction => ({\n type: EAction.SetCurrentPackageIdForLine,\n payload: {\n packageLineId,\n packageId,\n },\n});\n\nexport default setCurrentPackageIdForLine;\n","import { TRouterCardProps } from '@r1-frontend/ui-react/organisms/Card/Router/Router';\nimport { TTVSetTopSelectableProps } from '@r1-frontend/ui-react/organisms/Card/TVSetTopSelectable/TVSetTopSelectable';\n\nimport { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { IAction } from '~/src/store';\n\nexport type TPackageEquipment = {\n routers: TRouterCardProps[],\n decoders: TTVSetTopSelectableProps[],\n}\n\nexport type TSetEquipmentPayload = Record\n\nconst setEquipment = (equipment: TSetEquipmentPayload): IAction => {\n return {\n type: EAction.SetEquipment,\n payload: {\n equipment,\n },\n };\n};\n\nexport default setEquipment;\n","import { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst setLoading = (loading: boolean): IAction => ({\n type: EAction.SetLoading,\n payload: {\n loading,\n },\n});\n\nexport default setLoading;\n","import { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst setPackageId = (packageId: number): IAction => ({\n type: EAction.SetPackageId,\n payload: {\n packageId,\n },\n});\n\nexport default setPackageId;\n","import { PackageProductItemType } from '@r1-frontend/api-domru/api-tariffs/v1/web/lines/dto/ResponseDto';\n\nimport { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { IAction } from '~/src/store';\n\nconst setProductItemType = (productType: PackageProductItemType | 'none'): IAction => ({\n type: EAction.SetProductItemType,\n payload: {\n productType,\n },\n});\n\nexport default setProductItemType;\n","import { BaseAnalytics } from '@r1-frontend/analytics/dataLayerPush';\n\ntype TTagMap = Record;\n\nclass FiltersAnalytics extends BaseAnalytics {\n /**\n * Maps entity tag names to their analytics view\n */\n private _tagToAnalyticsDataMap: TTagMap = {\n cinema: {\n title: 'online-cinema',\n description: 'Онлайн-кинотеатры',\n },\n game: {\n title: 'games-and-services',\n description: 'Игры и полезные сервисы',\n },\n };\n\n constructor(category: string) {\n super();\n this.category = category;\n }\n\n clickCottage() {\n this.send('click village');\n }\n\n clickApartment() {\n this.send('click apartment');\n }\n\n addFilterMono() {\n this.send('add filter mono', 'Только интернет');\n }\n\n removeFilterMono() {\n this.send('remove filter mono', 'Только интернет');\n }\n\n addFilterBundle() {\n this.send('add filter bundle', 'С телевидением');\n }\n\n removeFilterBundle() {\n this.send('remove filter bundle', 'С телевидением');\n }\n\n clickTag(name: string, active: boolean) {\n if (!this._tagToAnalyticsDataMap[name]) {\n return;\n }\n\n const action = active ? 'add' : 'remove';\n\n this.send(\n `${action} filter ${this._tagToAnalyticsDataMap[name].title}`,\n this._tagToAnalyticsDataMap[name].description,\n );\n }\n}\n\nexport default FiltersAnalytics;\n","import { stringify } from 'qs';\nimport { UrlObject } from 'url';\n\nimport { BaseAnalytics } from '@r1-frontend/analytics/dataLayerPush';\n\nimport FiltersAnalytics from '~/src/features/index/MultiPackageList/analytics/Filters.analytics';\n\nexport class MultiPackageAnalytics extends BaseAnalytics {\n public filters!: FiltersAnalytics;\n\n constructor(category = 'tariff_card_new') {\n super();\n this.category = category;\n this.filters = new FiltersAnalytics(this.category);\n }\n\n clickChangeSpeed(speed: number) {\n this.send('click_change_speed', `chose_speed_${speed}`);\n }\n\n clickSubscriptionsPopup() {\n this.send('click_popup_subscriptions');\n }\n\n clickEquipmentPopup() {\n this.send('click_popup_equipment');\n }\n\n clickChannelsPopup() {\n this.send('click_popup_channels');\n }\n\n clickDetails() {\n this.send('click_details_info');\n }\n\n clickConnect(route: UrlObject) {\n this.send(\n 'go_to_full_buy',\n `${route.pathname}?${stringify(route.query)}`,\n );\n }\n\n clickViewAllTariffs() {\n this.send('click view all');\n }\n}\n\nconst analytics = new MultiPackageAnalytics();\n\nexport default analytics;\n","import { IAction } from '@r1-frontend/shared/types/Redux';\n\nimport analytics from '~/src/features/index/MultiPackageList/analytics';\nimport { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { TInitialStateFilterSubject } from '~/src/features/index/MultiPackageList/context/initialState';\n\nconst setSubjectFilter = (subject: TInitialStateFilterSubject): IAction => {\n subject === 'apartment'\n ? analytics.filters.clickApartment()\n : analytics.filters.clickCottage();\n\n return {\n type: EAction.FiltersSetSubject,\n payload: {\n subject,\n },\n };\n};\n\nexport default setSubjectFilter;\n","import { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { IAction } from '~/src/store';\n\nexport type TPackageSubscription = {\n title: string,\n description: string,\n image: string,\n}\n\nexport type TSetSubscriptionPayload = Record\n\nconst setSubscriptions = (subscriptions: TSetSubscriptionPayload): IAction => {\n return {\n type: EAction.SetSubscriptions,\n payload: {\n subscriptions,\n },\n };\n};\n\nexport default setSubscriptions;\n","import { IAction } from '@r1-frontend/shared/types/Redux';\n\nimport { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\n\nconst setTagsFilter = (tags: string[]): IAction => ({\n type: EAction.FiltersSetTags,\n payload: {\n tags,\n },\n});\n\nexport default setTagsFilter;\n","import { IAction } from '@r1-frontend/shared/types/Redux';\n\nimport analytics from '~/src/features/index/MultiPackageList/analytics';\nimport { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { TInitialStateFilterType } from '~/src/features/index/MultiPackageList/context/initialState';\n\nconst setTypeFilter = (type: TInitialStateFilterType): IAction => {\n if (type === 'mono') {\n analytics.filters.addFilterMono();\n analytics.filters.removeFilterBundle();\n }\n\n if (type === 'bundle') {\n analytics.filters.addFilterBundle();\n analytics.filters.removeFilterMono();\n }\n\n return {\n type: EAction.FiltersSetType,\n payload: {\n type,\n },\n };\n};\n\nexport default setTypeFilter;\n","import { EAction } from '~/src/features/index/MultiPackageList/context/constants/actions';\nimport { TFilteredLinesReturnType } from '~/src/features/index/MultiPackageList/context/selectors/getFilteredLines';\nimport { IAction } from '~/src/store';\n\nconst setupCallbackPopup = (packageLine: TFilteredLinesReturnType): IAction => ({\n type: EAction.SetupCallbackPopup,\n payload: {\n packageLine,\n },\n});\n\nexport default setupCallbackPopup;\n","import {\n PackageProductItemDto,\n PackageProductItemType,\n PackageProductPriceDto,\n} from '@r1-frontend/api-domru/api-tariffs/v1/web/lines/dto/ResponseDto';\n\nimport { EProductsId } from '@r1-frontend/shared/types/EProductsId';\n\nimport { TSetChannelsPayload } from '~/src/features/index/MultiPackageList/context/actions/setChannels';\nimport { TSetEquipmentPayload } from '~/src/features/index/MultiPackageList/context/actions/setEquipment';\nimport { TSetSubscriptionPayload } from '~/src/features/index/MultiPackageList/context/actions/setSubscriptions';\n\nexport type TInitialStateFilterSubject = 'cottage' | 'apartment';\nexport type TInitialStateFilterType = 'mono' | 'bundle';\nexport type TInitialStateFilterTag = {\n active: boolean,\n}\n\nexport type TTagName = string;\n\nexport type TInitialStateFilterTags = Record\n\nexport type TFilters = {\n subject: TInitialStateFilterSubject,\n type: TInitialStateFilterType,\n tags: TInitialStateFilterTags,\n}\n\nexport type TPackageLineContent = {\n id: number,\n packageName: string,\n isMono: boolean,\n isForCottage: boolean,\n speed: number,\n price: PackageProductPriceDto,\n items: PackageProductItemDto[],\n}\n\ntype TPackageId = number;\n\nexport type TPackageLine = {\n id: number,\n background: {\n image?: string,\n color?: `#${string}`,\n },\n name: string,\n currentPackageId: number,\n content: Record,\n\n position?: number,\n}\n\ntype TPackageLinesId = number;\n\nexport type TPackageLines = Record\n\nexport type TCallbackPopup = {\n isOpen: boolean,\n tariffName: string,\n requestDataParams: { product_id: EProductsId[] },\n}\n\nexport type TInitialState = {\n _loading: boolean,\n _clickedProductItemType: PackageProductItemType | 'none',\n _clickedPackageId: number,\n\n filters: TFilters,\n packageLines: TPackageLines,\n subscriptions: TSetSubscriptionPayload,\n channels: TSetChannelsPayload,\n equipment: TSetEquipmentPayload,\n\n callbackPopup: TCallbackPopup,\n}\n\nexport const initialState: TInitialState = {\n _loading: false,\n // the type of product that had been clicked\n _clickedProductItemType: 'none',\n // the id of package that had been clicked\n _clickedPackageId: 0,\n\n filters: {\n subject: 'apartment',\n type: 'bundle',\n tags: {},\n },\n packageLines: {},\n subscriptions: {\n 0: [],\n },\n channels: {},\n equipment: {},\n\n callbackPopup: {\n isOpen: false,\n tariffName: 'none',\n requestDataParams: { product_id: [0] },\n },\n};\n\nexport default initialState;\n","import deepClone from 'lodash/cloneDeep';\n\nimport { EProductsId } from '@r1-frontend/shared/types/EProductsId';\n\nimport analytics from '~/src/features/index/MultiPackageList/analytics';\nimport * as actions from '~/src/features/index/MultiPackageList/context/actions';\nimport { InferValueTypes } from '~/src/store';\n\nimport { EAction } from './constants/actions';\nimport initialState, { TInitialState } from './initialState';\n\nexport type TAction = ReturnType>\n\nexport const flushCurrentPackageId = (state: TInitialState): TInitialState => {\n const lines = deepClone(state.packageLines);\n Object.values(lines).forEach(line => line.currentPackageId = 0);\n\n return {\n ...state,\n packageLines: lines,\n };\n};\n\nexport const reducer = (state: TInitialState = initialState, action: TAction): TInitialState => {\n switch (action.type) {\n case EAction.Initialize: {\n return {\n ...state,\n packageLines: action.payload.packageLines,\n filters: action.payload.filters,\n };\n }\n case EAction.FiltersSetSubject: {\n const _state = flushCurrentPackageId(state);\n return {\n ..._state,\n filters: {\n ..._state.filters,\n subject: action.payload.subject,\n },\n };\n }\n case EAction.FiltersSetType: {\n const _state = flushCurrentPackageId(state);\n return {\n ..._state,\n filters: {\n ..._state.filters,\n type: action.payload.type,\n },\n };\n }\n case EAction.FiltersSetTags: {\n const _state = flushCurrentPackageId(state);\n const tags = deepClone(_state.filters.tags);\n\n action.payload.tags.forEach(tag => {\n if (!tags[tag]) {\n tags[tag] = {\n active: false,\n };\n }\n\n tags[tag].active = !tags[tag].active;\n analytics.filters.clickTag(tag, tags[tag].active);\n });\n return {\n ...state,\n filters: {\n ..._state.filters,\n tags,\n },\n };\n }\n case EAction.SetPackageId: {\n return {\n ...state,\n _clickedPackageId: action.payload.packageId,\n };\n }\n case EAction.SetCurrentPackageIdForLine: {\n const { packageLineId, packageId } = action.payload;\n\n return {\n ...state,\n packageLines: {\n ...state.packageLines,\n [packageLineId]: {\n ...state.packageLines[packageLineId],\n currentPackageId: packageId,\n },\n },\n };\n }\n case EAction.SetProductItemType: {\n return {\n ...state,\n _clickedProductItemType: action.payload.productType,\n // flushing the property when a popup had closed\n _clickedPackageId: action.payload.productType === 'none' ? 0 : state._clickedPackageId,\n };\n }\n case EAction.SetLoading: {\n return {\n ...state,\n _loading: action.payload.loading,\n };\n }\n case EAction.SetSubscriptions: {\n return {\n ...state,\n subscriptions: {\n ...state.subscriptions,\n ...action.payload.subscriptions,\n },\n };\n }\n case EAction.SetChannels: {\n return {\n ...state,\n channels: {\n ...state.channels,\n ...action.payload.channels,\n },\n };\n }\n case EAction.SetEquipment: {\n return {\n ...state,\n equipment: {\n ...state.equipment,\n ...action.payload.equipment,\n },\n };\n }\n case EAction.SetChannelsCategory: {\n return {\n ...state,\n channels: {\n ...state.channels,\n [state._clickedPackageId]: {\n ...state.channels[state._clickedPackageId],\n selectedCategory: action.payload.category,\n },\n },\n };\n }\n case EAction.SetChannelsSearchValue: {\n return {\n ...state,\n channels: {\n ...state.channels,\n [state._clickedPackageId]: {\n ...state.channels[state._clickedPackageId],\n searchValue: action.payload.search,\n },\n },\n };\n }\n case EAction.SetChannelsSearchVisibility: {\n return {\n ...state,\n channels: {\n ...state.channels,\n [state._clickedPackageId]: {\n ...state.channels[state._clickedPackageId],\n isSearchVisible: action.payload.visible,\n searchValue: '',\n },\n },\n };\n }\n case EAction.SetupCallbackPopup: {\n return {\n ...state,\n callbackPopup: {\n isOpen: true,\n tariffName: action.payload.packageLine.name,\n requestDataParams: {\n product_id: action.payload.packageLine.isMono\n ? [EProductsId.internet]\n : [EProductsId.internet, EProductsId.tv],\n },\n },\n };\n }\n case EAction.CloseCallbackPopup: {\n return {\n ...state,\n callbackPopup: initialState.callbackPopup,\n };\n }\n default:\n return { ...state };\n }\n};\n","import { createContext, ReactNode } from 'react';\nimport useThunkReducer, { ThunkDispatch } from 'react-hook-thunk-reducer';\n\nimport { initialState, TInitialState } from '~/src/features/index/MultiPackageList/context/initialState';\nimport { reducer, TAction } from '~/src/features/index/MultiPackageList/context/reducer';\n\nexport type TContextDispatch = ThunkDispatch;\n\nexport type TContext = {\n state: TInitialState,\n dispatch: TContextDispatch,\n debugMode?: boolean,\n};\n\nexport const Ctx = createContext({\n state: initialState,\n dispatch: () => null,\n debugMode: false,\n});\n\nconst Context = ({ children, debugMode = false }: { children: ReactNode, debugMode?: boolean }): JSX.Element => {\n const [state, dispatch] = useThunkReducer(reducer, initialState);\n\n debugMode && console.log(state);\n\n return (\n \n {children}\n \n );\n};\n\nexport default Context;\n","import { useContext } from 'react';\n\nimport { Ctx, TContextDispatch } from '~/src/features/index/MultiPackageList/context';\n\nexport const useContextDispatch = (): TContextDispatch => {\n const { dispatch } = useContext(Ctx);\n return dispatch;\n};\n","import { useContext } from 'react';\n\nimport { Ctx } from '~/src/features/index/MultiPackageList/context';\nimport { TInitialState } from '~/src/features/index/MultiPackageList/context/initialState';\n\nexport const useContextSelector = (selector: (state: TInitialState) => T) => {\n const { state } = useContext(Ctx);\n return selector(state);\n};\n","import styled from 'styled-components';\n\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport LazyCallBack from '~/src/components/LazyCallBack';\nimport { closeCallbackPopup } from '~/src/features/index/MultiPackageList/context/actions';\nimport { useContextDispatch, useContextSelector } from '~/src/features/index/MultiPackageList/context/hooks';\n\nimport { LazyCallBack as CallbackWrapper } from '~/src/components/LazyCallBack/styled';\n\nexport const CallbackPopup = styled(({ ...props }) => {\n const dispatch = useContextDispatch();\n\n const { isOpen, tariffName, requestDataParams } = useContextSelector(state => state.callbackPopup);\n\n const onClose = () => {\n dispatch(closeCallbackPopup());\n };\n\n return (\n \n \n \n );\n})`\n ${CallbackWrapper} {\n background: ${COLORS.BgMain};\n }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport BaseCheckbox from '@r1-frontend/ui-react/components/controls/baseCheckbox';\nimport Toggle from '@r1-frontend/ui-react/components/controls/Toggle';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { TInitialStateFilterSubject, TInitialStateFilterType } from '~/src/features/index/MultiPackageList/context/initialState';\n\nexport interface TFiltersProperties {\n subject: TInitialStateFilterSubject,\n type: TInitialStateFilterType,\n tags: string[],\n\n onSubjectClick(activeTab: string): void,\n\n onTypeClick(event?: React.ChangeEvent): void,\n\n onTagsClick(event?: React.ChangeEvent): void,\n}\n\nconst toggleTitles = {\n leftText: 'Для квартиры',\n rightText: 'Для частного сектора',\n};\n\nconst Filters = ({\n subject,\n type,\n tags,\n\n onSubjectClick,\n onTypeClick,\n onTagsClick,\n ...props\n}: TFiltersProperties): JSX.Element => {\n return
\n \n\n С телевидением\n Только интернет\n\n Онлайн-кинотеатры\n Игры и полезные сервисы\n
;\n};\n\nexport default styled(Filters)`\n display: flex;\n flex-direction: row;\n gap: 15px;\n\n & label {\n cursor: pointer;\n }\n`;\n","import { TFilters, TInitialState } from '~/src/features/index/MultiPackageList/context/initialState';\n\nconst getFiltersForContainer = (state: TInitialState): Omit & { tags: string[] } => {\n const tagsInState = state.filters.tags;\n\n const resultTags: string[] = [];\n\n if (tagsInState?.cinema?.active) {\n resultTags.push('cinema');\n }\n\n if (tagsInState?.book?.active && tagsInState?.game?.active) {\n resultTags.push('game, book');\n }\n\n return {\n ...state.filters,\n tags: resultTags,\n };\n};\n\nexport default getFiltersForContainer;\n","import React from 'react';\n\nimport Filters from '~/src/features/index/MultiPackageList/components/Filters/index';\nimport { setSubjectFilter, setTypeFilter } from '~/src/features/index/MultiPackageList/context/actions';\nimport { setTagsFilter } from '~/src/features/index/MultiPackageList/context/actions';\nimport { useContextDispatch, useContextSelector } from '~/src/features/index/MultiPackageList/context/hooks';\nimport getFiltersForContainer from '~/src/features/index/MultiPackageList/context/selectors/getFiltersForContainer';\n\nconst FiltersContainer = (): JSX.Element => {\n const { subject, type, tags } = useContextSelector(getFiltersForContainer);\n const dispatch = useContextDispatch();\n\n const handleSubjectClick = (activeTab: string) => {\n dispatch(setSubjectFilter(activeTab === 'Для квартиры' ? 'apartment' : 'cottage'));\n };\n\n const handleTypeClick = (e: React.ChangeEvent) => {\n // @ts-ignore\n dispatch(setTypeFilter(e.currentTarget.value));\n };\n\n const handleTagsClick = (e: React.ChangeEvent) => {\n dispatch(setTagsFilter(e.currentTarget.value.split(', ')));\n };\n\n return ;\n};\n\nexport default FiltersContainer;\n","import { MouseEventHandler, ReactNode, ReactPortal, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport styled, { StyledComponent } from 'styled-components';\n\nimport { ThemedProperties, TTheme } from '@r1-frontend/ui-kit/themes/types';\nimport { useKeyPress } from '@r1-frontend/shared/hooks/useKeyPress';\nimport { useRootElement } from '@r1-frontend/shared/hooks/useRootElement';\nimport { useScrollLock } from '@r1-frontend/shared/hooks/useScrollLock';\n\nexport type TOverlayProps = {\n /**\n * Отображение подложки\n */\n isOpen: boolean,\n\n /**\n * Коллбек, вызываемый при закрытии подложки\n */\n onClose: () => void,\n children?: ReactNode,\n}\n\ntype TOverlay = StyledComponent<\n (props: TOverlayProps) => ReactPortal,\n TOverlayProps,\n { theme: TTheme },\n never\n>;\n\nconst Overlay: TOverlay = styled(\n (props: TOverlayProps) => {\n const ref = useRef(null);\n const root = useRootElement({ id: 'overlay-portal' });\n const { lockScroll, unlockScroll } = useScrollLock();\n\n useEffect(() => {\n props.isOpen ? lockScroll() : unlockScroll();\n return unlockScroll;\n }, [props.isOpen]);\n\n const closeOverlayOnClickOutside: MouseEventHandler = useCallback(\n (event) => event.target === ref.current && props.onClose(),\n [props.onClose],\n );\n\n useKeyPress('Escape', props.onClose);\n\n const overlay = useMemo(\n () => props.isOpen\n ? e.stopPropagation()}\n >\n {props.children}\n \n : null,\n [closeOverlayOnClickOutside, props.isOpen],\n );\n\n return root ? createPortal(overlay, root) : null;\n },\n)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1024;\n\n @keyframes reveal {\n from { opacity: 0; }\n }\n\n animation: reveal 0.3s ease-in;\n background-color: ${({ theme }: ThemedProperties) => theme.colors.overlay};\n`;\n\nOverlay.displayName = 'Overlay';\n\nexport { Overlay };\n","import { css } from 'styled-components';\n\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\nconst pxOrAuto = (value?: number) => value ? `${value}px` : 'auto';\n\nexport type TSizesProps = {\n /**\n * Ширина\n *\n * @default auto\n */\n $width?: number,\n\n /**\n * Минимальная ширина\n *\n * @default 300\n */\n $minWidth?: number,\n\n /**\n * Максимальная ширина\n *\n * @default 100% - safe indent\n */\n $maxWidth?: number,\n\n /**\n * Высота\n *\n * @default auto\n */\n $height?: number,\n\n /**\n * Минимальная высота\n *\n * @default 100\n */\n $minHeight?: number,\n\n /**\n * Максимальная высота\n *\n * @default 100% - safe indent\n */\n $maxHeight?: number,\n}\n\nconst getSizes = () => ({ theme, $width, $minWidth = 300, $maxWidth, $height, $minHeight = 100, $maxHeight }: ThemedProperties) => {\n const maxSize = {\n tablet: `calc(100% - ${theme.indents.xxxxxxl}px)`,\n mobile: `calc(100% - ${theme.indents.xxxxxl}px)`,\n };\n\n /*\n * If max-width/max-height has value, takes it in pixels, otherwise takes a given value\n * */\n const maxWidthOr = (value: string) => {\n return $maxWidth ? `${$maxWidth}px` : value;\n };\n const maxHeightOr = (value: string) => {\n return $maxHeight ? `${$maxHeight}px` : value;\n };\n\n return css`\n width: ${pxOrAuto($width)};\n min-width: max(${$minWidth}px, 200px);\n max-width: min(\n ${maxWidthOr(maxSize.mobile)},\n ${maxSize.mobile}\n );\n \n height: ${pxOrAuto($height)};\n min-height: max(${$minHeight}px, 100px);\n max-height: min(\n ${maxHeightOr(maxSize.mobile)},\n ${maxSize.mobile}\n );\n\n @media (min-width: ${theme.breakpoints.tablet}) {\n max-width: min(\n ${maxWidthOr(maxSize.tablet)},\n ${maxSize.tablet}\n );\n\n max-height: min(\n ${maxHeightOr(maxSize.tablet)},\n ${maxSize.tablet}\n );\n }\n `;\n};\n\nexport default getSizes;\n","import { ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Overlay } from '@r1-frontend/ui-kit/atoms/overlay';\nimport { getSizes } from '@r1-frontend/ui-kit/molecules/Popup/helpers';\nimport { TSizesProps } from '@r1-frontend/ui-kit/molecules/Popup/helpers/getSizes';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\nexport type PopupBaseProps = TSizesProps & {\n /**\n * Отображение попапа\n */\n isOpen: boolean,\n\n /**\n * Коллбек, вызываемый при закрытии попапа\n */\n onClose: () => void,\n\n className?: string,\n children?: ReactNode,\n onClick?: () => void,\n};\n\nconst PopupBase = styled(\n ({ children, onClick, onClose, ...props }: PopupBaseProps): JSX.Element => (\n \n
\n {children}\n
\n
\n ),\n)`\n ${({ theme }: ThemedProperties) => css`\n display: flex;\n justify-content: center;\n align-items: center;\n\n article[role=\"dialog\"] {\n @keyframes elevate {\n from {\n transform: translateY(100%);\n opacity: 0;\n }\n }\n\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n\n ${getSizes()}\n \n margin: ${theme.indents.xxs}px;\n padding: ${theme.indents.m}px;\n gap: ${theme.indents.s}px;\n border-radius: ${theme.radii.pixel.xl}px;\n background-color: ${theme.colors.system.background};\n opacity: 1;\n transform: translateY(0);\n animation: elevate 0.5s cubic-bezier(0.165, 0.84, 0.44, 1);\n overflow: hidden;\n\n @media (min-width: ${theme.breakpoints.tablet}) {\n min-width: 300px;\n max-width: 600px;\n padding: ${theme.indents.l}px;\n gap: ${theme.indents.m}px;\n }\n }\n `};\n`;\n\nPopupBase.displayName = 'PopupBase';\n\nexport { PopupBase };\n","import { ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\nexport type PopupContentProps = {\n children: ReactNode,\n};\n\nconst PopupContent = styled(({ children, ...props }: PopupContentProps) => (\n
\n
{children}
\n
\n))`\n ${({ theme }: ThemedProperties) => css`\n height: 100%;\n margin-right: -${theme.indents.s}px;\n overflow: hidden;\n\n & > section {\n height: 100%;\n padding-right: ${theme.indents.s}px;\n overflow-x: hidden;\n overflow-y: auto;\n overscroll-behavior-y: contain;\n\n scrollbar-gutter: stable;\n\n scrollbar-width: thin;\n scrollbar-color: ${theme.colors.system.deep} transparent;\n\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n &::-webkit-scrollbar-track {\n border: none;\n border-radius: ${theme.radii.pixel.xs}px;\n background-color: ${theme.colors.system.deep};\n }\n\n &::-webkit-scrollbar-thumb {\n border: none;\n border-radius: ${theme.radii.pixel.xs}px;\n background-color: transparent;\n }\n\n &::-webkit-scrollbar-button {\n display: none;\n }\n }\n `};\n`;\n\nPopupContent.displayName = 'PopupContent';\n\nexport { PopupContent };\n","import { createSvg } from '@r1-frontend/ui-kit/atoms/svg/сreateSvg';\n\nconst Close = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return (\n \n \n \n \n );\n};\n\nexport default createSvg(\n Close,\n 'close',\n);\n","import { ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Button } from '@r1-frontend/ui-kit/atoms/button';\nimport { Close } from '@r1-frontend/ui-kit/atoms/svg/main';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\nexport type PopupHeaderProps = {\n children?: ReactNode,\n onClose: () => void,\n};\n\nconst PopupHeader = styled(({ children, onClose, ...props }: PopupHeaderProps) => (\n
\n }\n onClick={onClose}\n />\n {children}\n
\n))`\n ${({ theme }: ThemedProperties) => css`\n button[data-close-activator] {\n float: right;\n margin-left: ${theme.indents.xxs}px;\n }\n `};\n`;\n\nPopupHeader.displayName = 'PopupHeader';\n\nexport { PopupHeader };\n","import { H3 } from '@r1-frontend/ui-kit/atoms/typography/heading';\n\nimport { PopupBase, PopupBaseProps } from './components/PopupBase';\nimport { PopupContent } from './components/PopupContent';\nimport { PopupHeader } from './components/PopupHeader';\n\nexport type TPopupProps = PopupBaseProps & {\n title: string,\n};\n\nexport const Popup = ({\n children,\n ...props\n}: TPopupProps): JSX.Element => (\n \n \n \n \n {children}\n \n);\n","import styled, { css } from 'styled-components';\n\nimport { PopupBase } from '@r1-frontend/ui-kit/molecules/Popup/components/PopupBase';\nimport { PopupContent } from '@r1-frontend/ui-kit/molecules/Popup/components/PopupContent';\nimport { PopupHeader } from '@r1-frontend/ui-kit/molecules/Popup/components/PopupHeader';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\nimport { IImageSource, progressiveBackground } from '@r1-frontend/shared/helpers/progressiveBackground';\n\nimport { PopupBaseProps } from './components/PopupBase';\nimport { getSizes } from './helpers';\n\nexport type TPopupWithImageProps = PopupBaseProps & {\n $image: IImageSource,\n}\n\nconst PopupWithImage = styled(\n ({ children, ...props }: TPopupWithImageProps) => (\n \n \n {children}\n \n ),\n)`\n ${({ theme, $image }: ThemedProperties) => css`\n article[role=\"dialog\"] {\n padding: 0;\n gap: 0;\n\n ${getSizes()}\n }\n\n ${PopupHeader} {\n flex-shrink: 0;\n\n height: 140px;\n padding: ${theme.indents.m}px ${theme.indents.m}px ${theme.indents.s}px;\n\n ${progressiveBackground($image)};\n\n background-position: center;\n background-size: cover;\n background-repeat: no-repeat;\n }\n\n ${PopupContent} {\n padding: ${theme.indents.s}px ${theme.indents.m}px ${theme.indents.m}px;\n }\n\n @media (min-width: ${theme.breakpoints.tablet}) {\n ${PopupHeader} {\n height: 320px;\n }\n\n ${PopupContent} {\n padding: ${theme.indents.m}px ${theme.indents.l}px ${theme.indents.l}px;\n }\n }\n `}\n`;\n\nPopupWithImage.displayName = 'Popup_WithImage';\n\nexport { PopupWithImage };\n","import { createSelector } from 'reselect';\n\nimport { TInitialState } from '~/src/features/index/MultiPackageList/context/initialState';\n\nconst selectChannels = createSelector(\n (state: TInitialState) => state,\n ({ channels, _clickedPackageId, _loading }) => {\n const {\n categories = {},\n selectedCategory,\n searchValue,\n isSearchVisible,\n list,\n } = channels[_clickedPackageId] ?? {};\n\n const selectedFilter = categories[selectedCategory] ?? {\n channels: [],\n };\n\n return {\n loading: _loading,\n selectedFilter,\n filters: Object.values(categories),\n searchValue,\n isSearchVisible,\n channels: isSearchVisible\n ? list.filter((item) =>\n item.name\n .toLowerCase()\n .includes(searchValue?.toLowerCase() ?? ''))\n : selectedFilter.channels,\n };\n },\n);\n\nexport default selectChannels;\n","import reduce from 'lodash/reduce';\nimport { createSelector } from 'reselect';\n\nimport { TInitialState } from '~/src/features/index/MultiPackageList/context/initialState';\n\nconst selectEquipment = createSelector(\n (state: TInitialState) => state,\n ({ equipment, _clickedPackageId }) => {\n const selected = equipment[_clickedPackageId] ?? {\n routers: [],\n decoders: [],\n };\n\n return {\n ...selected,\n length: reduce(selected, (acc, equip) => acc += equip.length, 0),\n };\n },\n);\n\nexport default selectEquipment;\n","import { SyntheticEvent, useEffect, useRef } from 'react';\nimport { batch } from 'react-redux';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { SearchInput } from '@r1-frontend/ui-react/components/input/search';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport Select, { IOption } from '@r1-frontend/ui-react/components/select/select';\nimport { SearchNormal } from '@r1-frontend/ui-react/components/svg/search';\nimport { IndentContainer, ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { setChannelsCategory, setChannelsSearchValue, setChannelsSearchVisibility } from '~/src/features/index/MultiPackageList/context/actions';\nimport { useContextDispatch, useContextSelector } from '~/src/features/index/MultiPackageList/context/hooks';\nimport { selectChannels } from '~/src/features/index/MultiPackageList/context/selectors';\n\nconst ChannelsFilter = () => {\n const { loading, selectedFilter, filters, searchValue, isSearchVisible } = useContextSelector(selectChannels);\n const searchRef = useRef(null);\n const dispatch = useContextDispatch();\n const isTablet = useMatchMediaByWidth(wideBreakpoints.tablet);\n\n useEffect(() => {\n isSearchVisible && searchRef.current?.focus();\n }, [isSearchVisible]);\n\n const onSelectCategory = ({ value }: IOption) => {\n dispatch(setChannelsCategory(value));\n };\n\n const onClearSearch = () => {\n dispatch(setChannelsSearchValue(''));\n searchRef.current?.focus();\n };\n\n const onChangeSearch: React.ChangeEventHandler = (event) => {\n dispatch(setChannelsSearchValue(event.target.value));\n };\n\n const onSearchButtonClick: React.MouseEventHandler = (event) => {\n event.stopPropagation();\n\n batch(() => {\n dispatch(setChannelsSearchVisibility(true));\n dispatch(setChannelsCategory('Все каналы'));\n });\n };\n\n if (loading) {\n return null;\n }\n\n return (\n \n {\n isSearchVisible\n ? e.stopPropagation()}\n isClearBtnHide={!searchValue}\n />\n : \n \n }\n size={'large'}\n bType={'secondary'}\n rounded={!isTablet}\n onClick={onSearchButtonClick}\n >\n {isTablet ? 'Поиск' : null}\n \n \n }\n \n );\n};\n\nexport default ChannelsFilter;\n","import styled from 'styled-components';\n\nimport Image from '@r1-frontend/ui-kit/atoms/embeding/Image';\nimport { TTheme } from '@r1-frontend/ui-kit/themes/types';\n\nexport type IChannelImageProps = React.ImgHTMLAttributes & {\n srcWebp?: string,\n}\n\n/**\n * See (Channels -> Channel -> Cover -> Channel mask) in desin components tree view\n * {@link https://www.figma.com/design/sFp8TTy6VjCZEm8IpaXv4C/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82-%D0%BF%D1%80%D0%BE%D0%B4%D0%B0%D0%B6?node-id=1811-11408&m=dev Maquette}\n */\nconst ChannelImage = ({ alt, src, srcWebp, className, ...props }: IChannelImageProps) => {\n return (\n
\n \n \n \n \n \n \n \n\n {alt}\n
\n );\n};\n\nexport default styled(ChannelImage)`\n width: 43px;\n height: 31px;\n\n img,\n picture {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n clip-path: url(#channelImageClip);\n overflow-clip-margin: content-box;\n overflow: clip;\n }\n\n @media (min-width: ${({ theme }: { theme: TTheme }) => theme.breakpoints.tablet}) {\n width: 51px;\n height: 37px;\n }\n`;\n","import { css } from 'styled-components';\n\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\nimport { TextSizeType } from '@r1-frontend/ui-kit/themes/typography.paragraphs';\n\n// @todo write tests\nexport const getFontSize = (size: TextSizeType) => ({ theme: { typography: { text } } }: ThemedProperties) => {\n return css`\n font-size: ${text[size].fs}px;\n line-height: ${text[size].lh}px;\n `;\n};\n","import styled from 'styled-components';\n\nimport { getFontSize } from './helpers/getFontSize';\n\nconst BaseParagraph = styled.p`\n display: block;\n padding: 0;\n margin: 0;\n color: ${({ theme }) => theme.colors.text.primary};\n`;\n\n/**\n * Основной текст\n * @deprecated\n */\nexport const Paragraph1 = styled(BaseParagraph)`\n ${getFontSize('sm')};\n`;\n\n/**\n * Второстепенный текст\n * @deprecated\n */\nexport const Paragraph2 = styled(BaseParagraph)`\n ${getFontSize('md')};\n`;\n\n/**\n * Вспомогательный текст\n * @deprecated\n */\nexport const Paragraph3 = styled(BaseParagraph)`\n ${getFontSize('lg')};\n`;\n","import styled from 'styled-components';\n\nimport ChannelImage from '@r1-frontend/ui-kit/atoms/embeding/ChannelImage';\nimport { Paragraph1 } from '@r1-frontend/ui-kit/atoms/typography/paragraph';\n\nexport interface IChannelProps {\n link: string,\n title: string,\n image: string,\n onClick?: () => void,\n className?: string,\n}\n\nconst Channel = ({ link, title, image, onClick, className }: IChannelProps) => {\n return (\n \n \n {title}\n \n );\n};\n\nexport default styled(Channel)`\n display: inline-flex;\n align-items: center;\n width: auto;\n text-decoration: none;\n gap: ${({ theme }) => theme.indents.s}px;\n \n ${Paragraph1} {\n color: ${({ theme }) => theme.colors.links.native};\n }\n`;\n","import { Children } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport Channel from '@r1-frontend/ui-kit/molecules/Channels/Channel';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\nimport { useContextSelector } from '~/src/features/index/MultiPackageList/context/hooks';\nimport { selectChannels } from '~/src/features/index/MultiPackageList/context/selectors';\n\n/**\n * Обертка со списком каналов -\n * ограничена по ширине и высоте для добавления скролла\n * и задает размеры для сетки компонентов каналов\n */\nconst ChannelsContainer = styled(({ ...props }): JSX.Element => {\n const { channels, isSearchVisible } = useContextSelector(selectChannels);\n\n return (\n
\n {isSearchVisible && !channels.length && (\n \n Канал, который вы ищете, не входит в данный тариф\n \n )}\n\n
\n {Children.toArray(channels.map(({ url, logo, name }) => (\n
\n \n
\n )))}\n
\n
\n );\n})`\n ${({ theme }: ThemedProperties) => css`\n & > section {\n display: grid;\n grid-template-columns: 1fr;\n row-gap: ${theme.indents.xs}px;\n column-gap: ${theme.indents.l}px;\n }\n\n @media (min-width: ${theme.breakpoints.mobile}) {\n & > section {\n grid-template-columns: repeat(2, 1fr);\n row-gap: ${theme.indents.s}px;\n }\n }\n `};\n \n`;\n\nChannelsContainer.displayName = 'ChannelsPopupContainer';\n\nexport { ChannelsContainer };\n","import Throbber from '@r1-frontend/ui-react/components/loaders/Throbber';\nimport { IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nconst ChannelsThrobber = () => {\n return (\n \n \n \n );\n};\n\nexport default ChannelsThrobber;\n","import { useContextSelector } from '~/src/features/index/MultiPackageList/context/hooks';\n\nimport ChannelsFilter from './ChannelsFilter';\nimport { ChannelsContainer } from './Container';\nimport ChannelsThrobber from './Throbber';\n\nconst Channels = () => {\n const loading = useContextSelector(state => state._loading);\n\n return (\n <>\n \n\n {loading\n ? \n : \n }\n \n );\n};\n\nexport default Channels;\n","import Skeleton from 'react-loading-skeleton';\nimport styled from 'styled-components';\n\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\nconst TopWrapper: React.FC = styled.div`\n margin-bottom: ${({ theme }: ThemedProperties) => theme.indents.s}px;\n`;\n\nconst Wrapper: React.FC = styled.div`\n &:not(:last-child) {\n margin-bottom: ${({ theme }: ThemedProperties) => theme.indents.xxs}px;\n }\n`;\n\nconst PopupSkeleton = ({ ...props }) => {\n return (\n
\n \n \n
\n );\n};\n\nexport default styled(PopupSkeleton)`\n display: block;\n`;\n","import { Children } from 'react';\nimport styled from 'styled-components';\n\nimport { DescribedCost } from '@r1-frontend/ui-react/components/costs';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport RouterCard from '@r1-frontend/ui-react/organisms/Card/Router';\nimport TVSetTopSelectable from '@r1-frontend/ui-react/organisms/Card/TVSetTopSelectable';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { useContextSelector } from '~/src/features/index/MultiPackageList/context/hooks';\nimport { selectEquipment } from '~/src/features/index/MultiPackageList/context/selectors';\n\nconst EquipmentContainer = styled(({ ...props }) => {\n const equpment = useContextSelector(selectEquipment);\n const isTablet = useMatchMediaByWidth(wideBreakpoints.tablet);\n\n return (\n
\n \n {\n Children.toArray(\n equpment.routers.map(props => ),\n )\n }\n {\n Children.toArray(\n equpment.decoders.map(props => ),\n )\n }\n \n
\n );\n})`\n display: block;\n\n ${RouterCard}, ${TVSetTopSelectable} {\n ${DescribedCost}, button {\n display: none;\n }\n }\n`;\n\nEquipmentContainer.displayName = 'EquipmentContainer';\n\nexport { EquipmentContainer };\n","import PopupSkeleton from '~/src/features/index/MultiPackageList/components/Skeleton';\nimport { useContextSelector } from '~/src/features/index/MultiPackageList/context/hooks';\n\nimport { EquipmentContainer } from './Container';\n\nconst Equipment = () => {\n const loading = useContextSelector(state => state._loading);\n\n return (\n loading\n ? \n : \n );\n};\n\nexport default Equipment;\n","// @ts-nocheck\nimport ListItemWithIcon from '@r1-frontend/ui-react/components/List/WithIcon';\nimport { TickCircle } from '@r1-frontend/ui-react/components/svg/main';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nconst MovixPopup = (): JSX.Element => {\n return (\n \n

Видеосервис Movix

\n\n \n \n Более 100 000 фильмов и сериалов и более 19 000 единиц уникального контента*\n \n\n \n Топовые онлайн-кинотеатры, тысячи фильмов и сериалов на одном видеосервисе — в приложении Movix или\n на сайте movix.ru.\n Смотреть контент можно на любом устройстве\n \n\n \n До 170+ ТВ-каналов\n \n\n \n * в сравнении с 9 другими аудиовизуальными сервисами по результатам исследования uFORCE за 15.04.2024-27.05.2024\n \n \n \n );\n};\n\nexport { MovixPopup };\n","import { Children } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\nimport { TariffElement as Card } from '~/src/features/full-buy/TariffElementNew/TariffElement';\nimport { useContextSelector } from '~/src/features/index/MultiPackageList/context/hooks';\nimport { selectSubscriptions } from '~/src/features/index/MultiPackageList/context/selectors';\n\nimport { ImageElement } from '~/src/features/full-buy/TariffElementNew/components/ImageElement/styled';\nimport { TariffElement } from '~/src/features/full-buy/TariffElementNew/styled';\n\nconst SubscriptionsContainer = styled(({ ...props }) => {\n const subscriptions = useContextSelector(selectSubscriptions);\n\n return (\n
\n \n {\n Children.toArray(\n subscriptions.map(subscription => (\n \n )),\n )\n }\n \n
\n );\n})`\n display: block;\n\n & > ${ListContainer} {\n max-width: 600px;\n }\n \n ${({ theme }: ThemedProperties) => css`\n ${TariffElement} {\n padding: ${theme.indents.xxs}px;\n padding-right: ${theme.indents.m}px;\n\n ${ImageElement} {\n align-self: flex-start;\n }\n }\n `}\n`;\n\nSubscriptionsContainer.displayName = 'SubscriptionsContainer';\n\nexport { SubscriptionsContainer };\n","import PopupSkeleton from '~/src/features/index/MultiPackageList/components/Skeleton';\nimport { useContextSelector } from '~/src/features/index/MultiPackageList/context/hooks';\n\nimport { SubscriptionsContainer } from './Container';\n\nconst Subscriptions = () => {\n const loading = useContextSelector(state => state._loading);\n\n return (\n loading\n ? \n : \n );\n};\n\nexport default Subscriptions;\n","import { createSelector } from 'reselect';\n\nimport { TInitialState } from '~/src/features/index/MultiPackageList/context/initialState';\n\nconst selectSubscriptions = createSelector(\n (state: TInitialState) => state,\n ({ subscriptions, _clickedPackageId }) => subscriptions[_clickedPackageId] ?? [],\n);\n\nexport default selectSubscriptions;\n","import { createSelector } from 'reselect';\n\nimport { pluralize } from '@r1-frontend/shared/helpers/pluralize';\n\nimport Channels from '~/src/features/index/MultiPackageList/components/Channels';\nimport Equipment from '~/src/features/index/MultiPackageList/components/Equipment';\nimport { MovixPopup } from '~/src/features/index/MultiPackageList/components/Movix';\nimport Subscriptions from '~/src/features/index/MultiPackageList/components/Subscriptions';\nimport { TInitialState } from '~/src/features/index/MultiPackageList/context/initialState';\nimport { selectEquipment, selectSubscriptions } from '~/src/features/index/MultiPackageList/context/selectors';\n\nconst selectPopupContent = createSelector(\n [\n (state: TInitialState) => state._clickedProductItemType,\n (state: TInitialState) => selectSubscriptions(state),\n (state: TInitialState) => selectEquipment(state),\n ],\n (productType, subscriptions, equpment) => {\n if (!productType) {\n return null;\n }\n\n switch (productType) {\n case 'tv': {\n return {\n title: 'Список телеканалов',\n Component: Channels,\n };\n }\n case 'subscription': {\n return {\n title: `${subscriptions.length} ${pluralize(subscriptions.length, ['подписка', 'подписки', 'подписок'])}`,\n Component: Subscriptions,\n };\n }\n case 'equipment': {\n return {\n title: `${equpment.length} ${pluralize(equpment.length, ['устройство', 'устройства', 'устройств'])} в тарифе`,\n Component: Equipment,\n };\n }\n case 'movix': {\n return {\n image: {\n src: require('~/static/images/movix-popup/movix-header.png'),\n webpSrc: require('~/static/images/movix-popup/movix-header.webp'),\n },\n Component: MovixPopup,\n };\n }\n case 'none':\n default: {\n return null;\n }\n }\n },\n);\n\nexport default selectPopupContent;\n","import { Popup } from '@r1-frontend/ui-kit/molecules/Popup';\nimport { PopupWithImage } from '@r1-frontend/ui-kit/molecules/Popup/WithImage';\n\nimport { setChannelsSearchVisibility, setProductItemType } from '~/src/features/index/MultiPackageList/context/actions';\nimport { useContextDispatch, useContextSelector } from '~/src/features/index/MultiPackageList/context/hooks';\nimport { selectPopupContent } from '~/src/features/index/MultiPackageList/context/selectors';\nimport { useValueByBreakpoint } from '~/src/helpers/hooks/useValueByBreakpoint';\n\nexport const ProductItemPopup = (): JSX.Element | null => {\n const dispatch = useContextDispatch();\n const popupContent = useContextSelector(selectPopupContent);\n\n const height = useValueByBreakpoint({\n desktop: 630,\n tablet: 440,\n mobile: 560,\n });\n\n if (!popupContent) {\n return null;\n }\n\n const closePopup = () => dispatch(setProductItemType('none'));\n\n const onPopupClick = () => {\n dispatch(setChannelsSearchVisibility(false));\n };\n\n if (popupContent.image) {\n return (\n \n \n \n );\n }\n\n return (\n \n \n \n );\n};\n","import { batch } from 'react-redux';\n\nimport { PackageProductItemType } from '@r1-frontend/api-domru/api-tariffs/v1/web/lines/dto/ResponseDto';\n\nimport analytics from '~/src/features/index/MultiPackageList/analytics';\nimport { TContextDispatch } from '~/src/features/index/MultiPackageList/context';\nimport * as actions from '~/src/features/index/MultiPackageList/context/actions';\nimport * as thunk from '~/src/features/index/MultiPackageList/context/actions/thunk';\nimport { InferValueTypes } from '~/src/store';\n\ntype TActionList = ReturnType>;\n\nconst cardActionByType = (packageId: number, type: PackageProductItemType | 'none') => (dispatch: TContextDispatch) => {\n const batchActions: TActionList[] = [actions.setPackageId(packageId), actions.setProductItemType(type)];\n\n switch (type) {\n case 'tv':\n batchActions.push(thunk.getChannels(packageId));\n analytics.clickChannelsPopup();\n break;\n case 'subscription':\n batchActions.push(thunk.getSubscriptions(packageId));\n analytics.clickSubscriptionsPopup();\n break;\n case 'equipment':\n batchActions.push(thunk.getEquipment(packageId));\n analytics.clickEquipmentPopup();\n break;\n default:\n break;\n }\n\n batch(() => {\n batchActions.forEach(dispatch);\n });\n};\n\nexport default cardActionByType;\n","import { TPackageChannel } from '@r1-frontend/api-domru/api-tariffs/v1/packages/[salePackageId]/channels/dto/ResponseDto';\n\nimport { IOption } from '@r1-frontend/ui-react/components/select/select';\n\ninterface IHDCountable {\n hdCount: number,\n}\n\nexport interface IChannelCategory extends IHDCountable, IOption {\n channels: TPackageChannel[],\n}\n\nexport interface IChannelsState extends IHDCountable {\n /**\n * Api response as is, used for search by substring\n */\n list: TPackageChannel[],\n\n /**\n * Api response, grouped by category name, used for category filter\n */\n categories: Record,\n\n /**\n * Selected category name\n */\n selectedCategory: string,\n\n /**\n * Search input value\n */\n searchValue?: string,\n\n /**\n * Is search filter enabled\n */\n isSearchVisible?: boolean,\n}\n\n/**\n * Сreates category label to display in select\n * @param name Category name\n * @param all All channels count\n * @param hd HD channels count\n */\nexport const createCategoryLabel = (name: string, all: number, hd: number) =>\n `${name} (${all}${hd ? ` / ${hd}HD` : ''})`;\n\nexport default function transformChannels(channels: TPackageChannel[]) {\n const state: IChannelsState = {\n list: channels,\n categories: {},\n hdCount: 0,\n selectedCategory: 'Все каналы',\n };\n\n for (const channel of channels) {\n const isHD = channel.quality === 'HD';\n\n /**\n * Count all HD channels of all categories\n */\n state.hdCount += Number(isHD);\n\n /**\n * If channel category already created, we should add channel,\n * increment HD count if channel is HD and update category label\n * with new length and HD count\n */\n if (channel.category in state.categories) {\n state.categories[channel.category].channels.push(channel);\n state.categories[channel.category].hdCount += Number(isHD);\n\n state.categories[channel.category].label = createCategoryLabel(\n channel.category,\n state.categories[channel.category].channels.length,\n state.categories[channel.category].hdCount,\n );\n\n continue;\n }\n\n /**\n * If category is new, wen should create it with single channel in array\n * and init category label\n */\n state.categories[channel.category] = {\n hdCount: Number(isHD),\n channels: [channel],\n label: createCategoryLabel(channel.category, 1, Number(isHD)),\n value: channel.category,\n };\n }\n\n /**\n * After processing all channels we should create another category,\n * which represents all of the channels available\n */\n state.categories[state.selectedCategory] = {\n hdCount: state.hdCount,\n channels: state.list,\n label: createCategoryLabel(\n state.selectedCategory,\n state.list.length,\n state.hdCount,\n ),\n value: state.selectedCategory,\n };\n\n return state;\n}\n","import { doRequest } from '@r1-frontend/do-request';\nimport { getPackageChannels } from '@r1-frontend/api-domru/api-tariffs/v1/packages';\nimport { TResponseDto } from '@r1-frontend/api-domru/api-tariffs/v1/packages/[salePackageId]/channels/dto/ResponseDto';\n\nimport { TContextDispatch } from '~/src/features/index/MultiPackageList/context';\nimport { setChannels, setLoading } from '~/src/features/index/MultiPackageList/context/actions';\nimport { TInitialState } from '~/src/features/index/MultiPackageList/context/initialState';\nimport transformChannels from '~/src/features/index/MultiPackageList/transformChannels';\n\nconst getChannels = (packageId: number) => async(dispatch: TContextDispatch, getState: () => TInitialState) => {\n const channels = getState().channels;\n\n if (!channels[packageId]?.list.length) {\n dispatch(setLoading(true));\n\n const response = await doRequest.apiTariffs(\n getPackageChannels(packageId),\n );\n\n if (response.isSuccess) {\n dispatch(setChannels({\n [packageId]: transformChannels(response.payload),\n }));\n }\n\n dispatch(setLoading(false));\n }\n};\n\nexport default getChannels;\n","export type EquipmentPrice = {\n duration: number,\n value: number,\n type: number,\n}\n\nexport type EquipmentLabel = {\n id: number,\n name: string,\n title: string,\n colors?: {\n text?: string,\n bg?: string,\n },\n}\n\nexport type EquipmentCharacteristic = {\n title: string,\n value: string,\n}\n\nexport enum EquipmentType {\n router = 'router',\n tv = 'tv',\n}\n\nexport type ResponseDto = {\n type: EquipmentType,\n category: string,\n title: string,\n description: string,\n characteristics: EquipmentCharacteristic[],\n prices: EquipmentPrice[],\n images: string[],\n labels: EquipmentLabel[],\n}\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\n/**\n * Получение каналов по salePackageId\n * @param {number} salePackageId - id пакета\n *\n * {@link https://master.api-tariffs.sandbox.d2c.r-one.io/docs#/Packages/PackagesController_channelsByPackageId Documentation}\n */\nexport const getPackageChannels = (salePackageId: number): IRequest => ({\n uri: `/v1/packages/${salePackageId}/channels`,\n method: 'GET',\n withProvider: true,\n});\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nconst equipment = (salePackageId: number): IRequest => ({\n uri: `/v1/packages/${salePackageId}/equipment`,\n method: 'GET',\n withProvider: true,\n});\n\nexport default equipment;\n\nexport type { ResponseDto } from './dto/ResponseDto';\nexport { EquipmentType } from './dto/ResponseDto';\n","import noop from 'lodash/noop';\nimport truncate from 'lodash/truncate';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport retrieveEquipment, { EquipmentType, ResponseDto } from '@r1-frontend/api-domru/api-tariffs/v1/packages/[salePackageId]/equipment';\n\nimport { Label } from '@r1-frontend/ui-react/components/label';\nimport { Flash } from '@r1-frontend/ui-react/components/svg/main';\n\nimport { TContextDispatch } from '~/src/features/index/MultiPackageList/context';\nimport { setEquipment, setLoading } from '~/src/features/index/MultiPackageList/context/actions';\nimport { TPackageEquipment } from '~/src/features/index/MultiPackageList/context/actions/setEquipment';\nimport { TInitialState } from '~/src/features/index/MultiPackageList/context/initialState';\n\nconst getEquipment = (packageId: number) => async(dispatch: TContextDispatch, getState: () => TInitialState) => {\n const equipment = getState().equipment;\n\n if (!(packageId in equipment)) {\n dispatch(setLoading(true));\n\n const response = await doRequest.apiTariffs(\n retrieveEquipment(packageId),\n );\n\n if (response.isSuccess) {\n const actions = {\n onButtonClick: noop,\n onIncrement : noop,\n onDecrement: noop,\n onCostClick: noop,\n };\n\n dispatch(setEquipment({\n [packageId]: response.payload.reduce((acc, equip) => {\n const selectedPrice = equip.prices.find(price => price.duration === 0) ?? equip.prices.sort((a, b) => a.value - b.value)[0];\n\n if (equip.type === EquipmentType.router) {\n acc.routers.push({\n ...actions,\n images: equip.images,\n title: equip.title,\n description: equip.category,\n labels: equip.labels.map(label => (\n \n {label.title}\n \n )),\n characteristics: equip.characteristics.slice(0, 3).map(characteristic => ({\n title: truncate(characteristic.title, { length: 20 }),\n value: truncate(characteristic.value, { length: 10 }),\n Icon: Flash,\n })),\n cost: selectedPrice.value,\n period: selectedPrice.duration,\n });\n }\n\n if (equip.type == EquipmentType.tv) {\n acc.decoders.push({\n ...actions,\n images: equip.images,\n group: equip.category,\n title: equip.title,\n description: equip.description,\n cost: selectedPrice.value,\n period: selectedPrice.duration,\n });\n }\n\n return acc;\n }, {\n routers: [],\n decoders: [],\n }),\n }));\n }\n\n dispatch(setLoading(false));\n }\n};\n\nexport default getEquipment;\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nconst subscriptions = (salePackageId: number): IRequest => ({\n uri: `/v1/packages/${salePackageId}/subscriptions`,\n method: 'GET',\n withProvider: true,\n});\n\nexport default subscriptions;\n\nexport type { ResponseDto } from './dto/ResponseDto';\n","import { doRequest } from '@r1-frontend/do-request';\nimport subscriptions, { ResponseDto } from '@r1-frontend/api-domru/api-tariffs/v1/packages/[salePackageId]/subscriptions';\n\nimport { TContextDispatch } from '~/src/features/index/MultiPackageList/context';\nimport { setLoading, setSubscriptions } from '~/src/features/index/MultiPackageList/context/actions';\nimport { TInitialState } from '~/src/features/index/MultiPackageList/context/initialState';\n\nconst getSubscriptions = (packageId: number) => async(dispatch: TContextDispatch, getState: () => TInitialState) => {\n const state = getState();\n\n if (!state.subscriptions[packageId]?.length) {\n dispatch(setLoading(true));\n\n const response = await doRequest.apiTariffs(\n subscriptions(packageId),\n );\n\n if (response.isSuccess) {\n dispatch(setSubscriptions({\n [packageId]: response.payload.map(subscription => ({\n title: subscription.name,\n description: subscription.description.full,\n image: subscription.image,\n })),\n }));\n }\n\n dispatch(setLoading(false));\n }\n};\n\nexport default getSubscriptions;\n","import { TInitialState } from '~/src/features/index/MultiPackageList/context/initialState';\n\nconst getActiveFilterTags = (state: TInitialState): string[] => {\n return Object.entries(state.filters.tags).reduce((acc, [tagName, { active }]) => {\n if (active) {\n acc.push(tagName);\n }\n\n return acc;\n }, []);\n};\n\nexport default getActiveFilterTags;\n","import { TFilters, TInitialState } from '~/src/features/index/MultiPackageList/context/initialState';\n\nconst getFilters = (state: TInitialState): TFilters => state.filters;\n\nexport default getFilters;\n","import { TInitialState } from '~/src/features/index/MultiPackageList/context/initialState';\n\nconst getLines = (state: TInitialState) => state.packageLines;\n\nexport default getLines;\n","import { createSelector } from 'reselect';\n\nimport { PackageProductItemType } from '@r1-frontend/api-domru/api-tariffs/v1/web/lines/dto/ResponseDto';\n\nimport { MultiPackageProperties } from '@r1-frontend/ui-kit/organisms/Package/MultiPackage';\n\nimport { IMultiPackageListProduct } from '~/src/features/index/MultiPackageList';\nimport getActiveFilterTags from '~/src/features/index/MultiPackageList/context/selectors/getActiveFilterTags';\nimport getFilters from '~/src/features/index/MultiPackageList/context/selectors/getFilters';\nimport getLines from '~/src/features/index/MultiPackageList/context/selectors/getLines';\n\nexport type TFilteredLinesReturnType = (\n Omit<\n MultiPackageProperties,\n 'buttonText' | 'onSpeedSelect' | 'onSelectClicked' | 'onCardClick'\n > & { id: number, key: string, currentPackageId: number, isForCottage: boolean, isMono: boolean, position?: number }\n )\n\nconst getFilteredLines = createSelector(\n [\n getFilters,\n getLines,\n getActiveFilterTags,\n ],\n (\n filters,\n packageLines,\n activeTags,\n ): TFilteredLinesReturnType[] => {\n return Object.values(packageLines)\n .reduce((resultLines, line) => {\n const filteredPackages = Object.values(line.content)\n .filter(pkgData => filters.subject === 'cottage' ? pkgData.isForCottage : !pkgData.isForCottage)\n .filter(pkgData => filters.type === 'mono' ? pkgData.isMono : !pkgData.isMono)\n .filter(pkgData => {\n if (activeTags.length === 0) {\n return true;\n }\n\n const subscription = pkgData.items.filter(item => item.type === 'subscription')[0];\n // if package doesn't contain any subscriptions when the tags active we should not show that package\n if (!subscription) {\n return false;\n }\n return subscription.tags?.some(tag => activeTags.includes(tag));\n });\n\n if (filteredPackages.length === 0) {\n return resultLines;\n }\n\n let selectedPackage = line.currentPackageId ? line.content[line.currentPackageId] : undefined;\n\n // in a case when a speed and some filter were selected by the user we shouldn't rely on the selectedSpeed of a line\n if (!selectedPackage) {\n selectedPackage = filteredPackages?.reduce((acc, curr) => {\n if (!acc) {\n return curr;\n }\n\n return curr.speed < acc.speed ? curr : acc;\n });\n }\n\n const content = filteredPackages\n .reduce>(\n (acc, curr) => {\n acc[curr.speed] = curr;\n return acc;\n }, {},\n );\n\n resultLines.push({\n ...line,\n currentPackageId: selectedPackage.id,\n $background: line.background,\n key: line.id + filteredPackages.map(c => c.id).join(','),\n description: selectedPackage.packageName,\n content,\n selectedSpeed: selectedPackage.speed,\n isForCottage: selectedPackage.isForCottage,\n position: line.position,\n isMono: selectedPackage.isMono,\n });\n\n return resultLines;\n }, []).sort((a, b) => a.position! - b.position!);\n },\n);\n\nexport default getFilteredLines;\n","import { SyntheticEvent, useEffect, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport Link from 'next/link';\nimport { useRouter } from 'next/router';\nimport styled, { css } from 'styled-components';\n\nimport { PackageProductItemType } from '@r1-frontend/api-domru/api-tariffs/v1/web/lines/dto/ResponseDto';\n\nimport { Anchor } from '@r1-frontend/ui-kit/atoms/anchor';\nimport { Button } from '@r1-frontend/ui-kit/atoms/button';\nimport { H1 } from '@r1-frontend/ui-kit/atoms/typography/heading';\nimport { MultiPackage, MultiPackageProduct } from '@r1-frontend/ui-kit/organisms/Package/MultiPackage';\nimport { ThemedProperties } from '@r1-frontend/ui-kit/themes/types';\n\nimport { TariffLineCarousel } from '~/src/components/TariffLineCarousel';\nimport { getFullBuyRoute } from '~/src/features/full-buy/helpers';\nimport isFullBuyVillageAbn from '~/src/features/full-buy/helpers/ab/isFullBuyVillage';\nimport { ETariffFilters } from '~/src/features/full-buy/store/initialState';\nimport { CallbackPopup } from '~/src/features/index/MultiPackageList/components/CallbackPopup';\nimport FiltersContainer from '~/src/features/index/MultiPackageList/components/Filters/Container';\nimport { ProductItemPopup } from '~/src/features/index/MultiPackageList/components/ProductItemPopup';\nimport { initialize, setCurrentPackageIdForLine, setupCallbackPopup } from '~/src/features/index/MultiPackageList/context/actions';\nimport { cardActionByType } from '~/src/features/index/MultiPackageList/context/actions/thunk';\nimport { useContextDispatch, useContextSelector } from '~/src/features/index/MultiPackageList/context/hooks';\nimport { TPackageLines } from '~/src/features/index/MultiPackageList/context/initialState';\nimport getFilteredLines, { TFilteredLinesReturnType } from '~/src/features/index/MultiPackageList/context/selectors/getFilteredLines';\nimport { PATH_BUNDLES_LINK_CITY, PATH_INTERNET_LINK_CITY } from '~/src/features/index/Tariffs/constants';\nimport { TState } from '~/src/store';\nimport { getCurrentCityIn, selectCompanyName } from '~/src/store/selectors/city';\n\nimport analytics from './analytics';\n\nexport interface IMultiPackageListProduct extends MultiPackageProduct {\n packageName: string,\n isForCottage: boolean,\n isMono: boolean,\n}\n\nexport type TMultiPackageListProperties = {\n packageLines: TPackageLines,\n}\n\nconst MultiPackageList = ({ packageLines, ...props }: TMultiPackageListProperties): JSX.Element => {\n const router = useRouter();\n const dispatch = useContextDispatch();\n\n useEffect(() => {\n dispatch(initialize(packageLines));\n }, []);\n\n const { companyName, cityIn } = useSelector((state: TState) => ({\n companyName: selectCompanyName(state),\n cityIn: getCurrentCityIn(state),\n }));\n const _packageLines = useContextSelector(getFilteredLines);\n const filterType = useContextSelector(state => state.filters.type);\n\n const handleCardClick = (packageId: number) => (_e: SyntheticEvent, type: PackageProductItemType) => {\n dispatch(cardActionByType(packageId, type));\n };\n\n // We are using the instance of package line instead of the \"id\" of the package line to ensure that\n // we are working with the correct line and to avoid finding it.\n const speedSelectorHandler = (packageLine: TFilteredLinesReturnType) => (speed: number) => {\n const product = Object.values(packageLine.content).find(c => c.speed === speed);\n\n analytics.clickChangeSpeed(speed);\n\n if (product) {\n dispatch(setCurrentPackageIdForLine(packageLine.id, product.id));\n }\n };\n\n const isFullBuyVillage = useMemo(isFullBuyVillageAbn, []);\n\n const handlePackageSelect = (packageLine: TFilteredLinesReturnType) => {\n const route = getFullBuyRoute({\n salePackageId: `${packageLine.currentPackageId}`,\n filters: packageLine.isForCottage ? [ETariffFilters.COTTAGE] : undefined,\n });\n\n /**\n * ПП в ЧС закрыто АБ тестом fullbuy_village.\n * Если АБ тест отключен, необходимо открывать форму обратного звонка\n */\n if (!isFullBuyVillage && packageLine.isForCottage) {\n return dispatch(setupCallbackPopup(packageLine));\n }\n\n /**\n * @todo Обсудить возможность использования next/link внутри компонента\n */\n router.push(route);\n analytics.clickConnect(route);\n };\n\n const onClickViewAllHandler = () => {\n analytics.clickViewAllTariffs();\n };\n\n return (\n
\n

Провайдер {companyName} в {cityIn}

\n \n \n {_packageLines.map(pl => (\n handlePackageSelect(pl)}\n onCardClick={handleCardClick(pl.currentPackageId)}\n />\n ))}\n \n \n \n \n\n \n \n
\n );\n};\n\nexport default styled(MultiPackageList)`\n width: 100%;\n\n ${H1} {\n ${({ theme }: ThemedProperties) => css`\n margin: ${theme.indents.xl}px 0 ${theme.indents.s}px;\n `};\n }\n\n ${MultiPackage} {\n height: 592px;\n }\n\n & > ${Button} {\n margin: 0 auto;\n }\n`;\n","import MultiPackageList, { TMultiPackageListProperties } from '~/src/features/index/MultiPackageList';\n\nimport MultiPackageContext from './context';\n\nconst MultiPackageWithContext = (props: TMultiPackageListProperties) => {\n return (\n \n \n \n );\n};\n\nexport default MultiPackageWithContext;\n","import { LazyLoadImage } from 'react-lazy-load-image-component';\nimport styled from 'styled-components';\n\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\nexport const Wrapper = styled.div`\n display: grid;\n grid-template-columns: repeat(6, 1fr);\n gap: 32px;\n margin-top: 32px;\n \n @media(max-width: ${wideBreakpoints.laptop}) {\n grid-template-columns: repeat(3, 1fr);\n gap: 24px;\n width: 100%;\n }\n \n @media(max-width: ${wideBreakpoints.mobile}) {\n grid-template-columns: repeat(2, 1fr);\n gap: 9px;\n }\n`;\n\nexport const MenuItem = styled.div`\n flex-direction: column;\n align-items: center;\n color: ${COLORS.Control};\n transition: all .2s ease-in;\n display: inline-block;\n height: 220px;\n position: relative;\n background: ${COLORS.BgSurface};\n border-radius: ${BorderRadius.OuterBlockRadius};\n justify-content: center;\n\n &:hover {\n background: ${COLORS.Outline_Light};\n color: ${COLORS.Logo};\n }\n \n @media(max-width: ${wideBreakpoints.sDesktop}) {\n height: 176px;\n }\n \n @media(max-width: ${wideBreakpoints.mobile}) {\n height: 180px;\n }\n \n a {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n }\n`;\n\nexport const PicBox = styled.div`\n height: 141px;\n width: 100%;\n justify-content: center;\n align-items: flex-end;\n \n picture {\n height: 100%;\n }\n\n @media(max-width: ${wideBreakpoints.sDesktop}) {\n height: 112px;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n height: 120px;\n }\n`;\n\nexport const Pic = styled(LazyLoadImage)`\n height: inherit;\n width: 100%;\n`;\n\nexport const Title = styled.div`\n ${FONTS.H5};\n text-align: center;\n margin: 8px;\n place-content: center;\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n font-size: 14px;\n line-height: 20px;\n }\n\n @media (max-width: ${wideBreakpoints.sMobile}) {\n font-size: 12px;\n line-height: 16px;\n }\n`;\n","import React, { SyntheticEvent, useCallback, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport Link from 'next/link';\n\nimport { IMenuByTypesItem } from '@r1-frontend/api-domru/api-content/v2/menu/by-types';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport WebpImage from '@r1-frontend/ui-react/components/WebpImage';\nimport { CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { truncate } from '@r1-frontend/shared/helpers/truncate';\n\nimport { selectWebUnderMenu } from '~/src/store/selectors/menu/selectMenu';\n\nimport * as ST from './styled';\n\ninterface IProps {\n sortByWeight?: boolean,\n}\n\nconst MAX_MENU_ELEMENTS = 6;\n\nconst WebUnderMenu: React.FC = ({ sortByWeight = true }): JSX.Element | null => {\n const menuItems = useSelector(selectWebUnderMenu);\n\n const onClickMenuItemHandler = useCallback((e: SyntheticEvent, item: IMenuByTypesItem) => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.miniMenuClick,\n action: item.title,\n });\n }, []);\n\n const sortedMenuItems = useMemo(() => {\n const items = [...menuItems];\n if (sortByWeight) {\n return items.sort((a, b) => a.weight < b.weight ? -1 : 1).slice(0, MAX_MENU_ELEMENTS);\n }\n return items;\n }, [menuItems, sortByWeight]);\n\n if (sortedMenuItems?.length <= 2) {\n return null;\n }\n\n return (\n \n {sortedMenuItems?.map((item) => (\n onClickMenuItemHandler(e, item)}\n data-test='web-under-menu-item'\n key={item.id}\n >\n \n \n \n \n \n \n \n \n ))}\n \n );\n};\n\nexport default WebUnderMenu;\n","import styled from 'styled-components';\n\nimport Container 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 Wrapper = styled.div`\n display: block;\n width: 100%;\n overflow: hidden;\n`;\n\nexport const WideContainer = styled(Container)`\n max-width: 100%;\n`;\n\nexport const BannersAndMenuContainer = styled.div`\n width: 100%;\n display: flex;\n margin-top: 41px;\n flex-direction: column;\n`;\n\nexport const ShopItemsTitle = styled.h2`\n ${FONTS.H2};\n color: ${COLORS.TextPrimary};\n margin-bottom: 24px;\n`;\n\n","import { useCallback, useMemo } from 'react';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { IBanner } from '~/src/api/content/banners';\nimport { IPageView } from '~/src/api/content/page/view';\nimport { IShopItem } from '~/src/api/content/shop/getShopItems';\nimport CheckAddressMapConnect from '~/src/components/CheckAddressMapConnect';\nimport InterestingCarousel from '~/src/components/InterestingCarousel';\nimport { IParams } from '~/src/components/InterestingCarousel/InterestingCard';\nimport getDefaultFilter from '~/src/features/index/ab/getDefaultFilter';\nimport PromoBannersSection from '~/src/features/index/Banners/PromoBannersSection';\nimport Banners from '~/src/features/index/Banners/TopBanners';\nimport Connect from '~/src/features/index/Connect';\nimport HitsCarousel from '~/src/features/index/HitsCarousel';\nimport { TPackageLines } from '~/src/features/index/MultiPackageList/context/initialState';\nimport MultiPackageWithContext from '~/src/features/index/MultiPackageList/Wrapper';\nimport Tariffs from '~/src/features/index/Tariffs';\nimport WebUnderMenu from '~/src/features/index/WebUnderMenu';\nimport Promo from '~/src/features/promo';\nimport NoSSR from '~/src/helpers/noSSR';\n\nimport * as ST from './styled';\n\ninterface IProps {\n banners: Record,\n productList: IShopItem[],\n topSalesBlocksInfo?: IPageView,\n isTariffsBetweenBanners: boolean,\n}\n\nexport type TPropsWithTariffCardsRedesignData = ({\n isRedesignedTariffCards: true,\n packageLines: TPackageLines,\n} | {\n isRedesignedTariffCards: false,\n packageLines?: never,\n}) & IProps\n\nconst Index = ({\n banners,\n productList,\n topSalesBlocksInfo,\n isTariffsBetweenBanners,\n isRedesignedTariffCards,\n packageLines,\n}: TPropsWithTariffCardsRedesignData): JSX.Element => {\n const isLaptop = useMatchMediaByWidth(wideBreakpoints.laptop);\n const isMobile = useMatchMediaByWidth(wideBreakpoints.mobile);\n\n const {\n main_promo_double: doublePromoBanners = [],\n main_promo: promoBanner = [],\n ...otherBanners\n } = banners;\n\n const tariffsDefaultFilter = useMemo(getDefaultFilter, []);\n\n const onClickHandler = useCallback((paramsOnClick: IParams) => {\n if (paramsOnClick.title) {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.bannerServices,\n action: 'click_banner',\n label: paramsOnClick.title,\n });\n }\n }, []);\n\n return (\n \n \n \n \n {!isTariffsBetweenBanners &&\n \n }\n \n {isRedesignedTariffCards\n ? \n : \n }\n {isTariffsBetweenBanners &&\n \n \n \n \n }\n \n \n {!!productList.length && (\n <>\n Хиты продаж\n \n \n \n )}\n {topSalesBlocksInfo && topSalesBlocksInfo.preparedContentBlocks?.length > 0 && (\n <>\n \n \n \n )}\n \n \n \n \n \n \n );\n};\n\nexport default Index;\n","import { IAction } from '~/src/store';\n\nimport { ESpecOfferActionTypes } from './constants';\n\nexport const setErrorMessage = (message: string | null): IAction => ({\n type: ESpecOfferActionTypes.setErrorMessage,\n payload: message,\n});\n","import { IAction } from '~/src/store';\n\nimport { ESpecOfferActionTypes } from './constants';\n\nexport const setIsLoadingOffers = (state: boolean): IAction => ({\n type: ESpecOfferActionTypes.setIsLoading,\n payload: state,\n});\n","import { IAction } from '~/src/store';\n\nimport { ESpecOfferActionTypes } from './constants';\n\nexport const setIsPopupOpened = (state: boolean): IAction => ({\n type: ESpecOfferActionTypes.setIsPopupOpened,\n payload: state,\n});\n","import { TSpecOffer } from '~/src/features/specialOffersContainer/types';\nimport { IAction } from '~/src/store';\n\nimport { ESpecOfferActionTypes } from './constants';\n\nexport const setOffers = (state: TSpecOffer[]): IAction => ({\n type: ESpecOfferActionTypes.setOffers,\n payload: state,\n});\n","import { IAction } from '~/src/store';\n\nimport { ESpecOfferActionTypes } from './constants';\n\nexport const setOfferTransaction = (state: string | null): IAction => ({\n type: ESpecOfferActionTypes.setOfferTransaction,\n payload: state,\n});\n","import { TPopupState } from '~/src/features/specialOffersContainer/types';\nimport { IAction } from '~/src/store';\n\nimport { ESpecOfferActionTypes } from './constants';\n\nexport const setPopupState = (state: TPopupState): IAction => ({\n type: ESpecOfferActionTypes.setPopupState,\n payload: state,\n});\n","import { ISpecOffer } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers';\n\nimport { IAction } from '~/src/store';\n\nimport { ESpecOfferActionTypes } from './constants';\n\nexport const setSelectedOfferId = (state: ISpecOffer['requestId']): IAction => ({\n type: ESpecOfferActionTypes.setSelectedOfferId,\n payload: state,\n});\n","\nimport { useCallback } from 'react';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { isClientSide } from '@r1-frontend/shared/helpers/ssr';\n\nconst analiticsSender = (category: string, action: string, label?: string) => {\n isClientSide() && dataLayerPush({\n event: EVENTS.UAevent,\n category,\n action,\n label,\n });\n};\n\n/**\n * Возвращает функцию для отправки аналитики\n */\nexport const useAnalyticsSender = (category: string) => {\n return useCallback((action: string, label?: string): void => {\n analiticsSender(category, action, label);\n }, [category]);\n};\n\n/**\n * Возвращает функцию для отправки аналитики, без useCallback\n */\nexport const getAnalyticsSender = (category: string) => {\n return (action: string, label?: string): void => {\n analiticsSender(category, action, label);\n };\n};\n","import { isServerSide } from '@r1-frontend/shared/helpers/ssr';\n\n// Записывает объект в хранилище sessionStorage\nexport const setSessionStorageByKey = (key: string, params: Record): boolean => {\n if (isServerSide()) {\n return false;\n }\n\n try {\n sessionStorage.setItem(key, JSON.stringify(params));\n return true;\n } catch {\n return false;\n }\n};\n\n// Возвращает объект из хранилища sessionStorage\nexport const getSessionStorageByKey = (key: string): Record | null => {\n if (isServerSide()) {\n return null;\n }\n\n try {\n const values = sessionStorage.getItem(key);\n return values ? JSON.parse(values) : null;\n } catch {\n return null;\n }\n};\n\n// Возвращает объект из хранилища с нужным типом\nexport const getSessionStorageDataWithTypes = (key: string): T | null => {\n if (isServerSide()) {\n return null;\n }\n\n const dataString = sessionStorage.getItem(key);\n\n if (dataString) {\n const parsedData: T = JSON.parse(dataString);\n return parsedData;\n }\n return null;\n};\n\n// Удаляет объект из хранилища по ключу\nexport const removeSessionStorageDataByKey = (key: string): void => {\n if (!isServerSide()) {\n sessionStorage.removeItem(key);\n }\n};\n","export enum ESaleAgentClientName {\n FULL_BUY_SITE = 'FULL_BUY_SITE',\n FULL_BUY_EQUIPMENT_SITE = 'FULL_BUY_EQUIPMENT_SITE',\n}\n","import { EContactDetailTypes, TResetData } from '../index';\nimport { initialState } from '../initialState';\n\nexport const resetAddress = (): TResetData => ({\n type: EContactDetailTypes.RESET_DATA,\n payload: initialState,\n});\n","import { EContactDetailTypes, TFillFioAction } from '../index';\n\nexport const fillFioAction = (fio: string): TFillFioAction => ({\n type: EContactDetailTypes.FILL_FIO,\n payload: {\n editedFio: fio,\n },\n});\n","import { EContactDetailTypes, TFillPhoneAction } from '../index';\n\nexport const fillPhoneAction = (phone: string): TFillPhoneAction => ({\n type: EContactDetailTypes.FILL_PHONE,\n payload: {\n editedPhone: phone,\n },\n});\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 HtmlContentFromApi = styled.div`\n display: block;\n word-break: break-word;\n \n ul, ol {\n display: list-item;\n }\n \n ul {\n list-style: disc;\n }\n \n ol {\n list-style: decimal;\n }\n \n h1 {\n ${FONTS.H2};\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${FONTS.H0}\n }\n }\n\n h2 {\n ${FONTS.H3};\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n ${FONTS.H1}\n }\n }\n\n h3 {\n ${FONTS.H4};\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${FONTS.H3}\n }\n }\n\n h4 {\n ${FONTS.H5};\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${FONTS.H4}\n }\n }\n\n h5, h6 {\n ${FONTS.H6};\n }\n \n p, li {\n ${FONTS.XS};\n \n b {\n ${FONTS.MediumXS};\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n b {\n ${FONTS.MediumS};\n }\n }\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n ${FONTS.S};\n }\n }\n \n a {\n color: ${COLORS.Link}\n }\n \n img {\n max-width: 100%;\n height: auto;\n object-fit: contain;\n }\n`;\n","import * as ST from './styled';\n\ntype THtmlContentFromApiProps = {\n children: string,\n};\n\nconst HtmlContentFromApi = ({ children }: THtmlContentFromApiProps): JSX.Element => {\n return (\n \n );\n};\n\nexport default HtmlContentFromApi;\n","import styled from 'styled-components';\n\nimport { TSvgProps } from '@r1-frontend/ui-react/components/svg/createSvg';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport type TWithIconProps = {\n Icon: (props: TSvgProps) => JSX.Element,\n textColor?: COLORS,\n children: string,\n}\n\nconst WithIcon = ({ Icon, textColor = COLORS.TextInfo, children, ...props }: TWithIconProps): JSX.Element =>
\n
\n {children}\n
;\n\nexport default styled(WithIcon)`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n \n align-items: flex-start;\n \n & > div:first-child {\n flex: 0 0 24px;\n margin-right: 12px;\n margin-top: -6px;\n \n border-radius: 50%;\n background-color: ${COLORS.BgSurface};\n padding: 6px;\n }\n \n ${Paragraph4} {\n margin: 0;\n }\n`;\n","import { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport * as ST from './styled';\n\ninterface ICardHeaderProps {\n title: string,\n description: string,\n}\n\nconst CardHeader = ({\n title,\n description,\n}: ICardHeaderProps): JSX.Element => {\n return (\n \n

{title}

\n \n
\n );\n};\n\nexport default CardHeader;\n","import styled from 'styled-components';\n\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { textOverflowLineClamp } from '@r1-frontend/ui-react/tokens/others/textOverflowLineClamp';\n\nexport const ParagraphWithOverflowLineClamp = styled(Paragraph4)`\n ${textOverflowLineClamp(2)};\n`;\n","import { Paragraph5 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport CardHeader from '@r1-frontend/ui-react/organisms/Card/CardBricks/CardHeader';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\ninterface IStyledHeaderProps {\n group: string,\n title: string,\n description: string,\n}\n\nconst StyledHeader = ({\n group,\n title,\n description,\n}: IStyledHeaderProps): JSX.Element => {\n return (\n \n {group}\n \n \n );\n};\n\nexport default StyledHeader;\n","import { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport StyledHeader from '@r1-frontend/ui-react/organisms/Card/CardBricks/StyledHeader';\n\nimport { TTVSetTopSelectableProps } from './TVSetTopSelectable';\n\nconst DesktopTVSetTopSelectableCard = ({\n group,\n title,\n description,\n}: Omit): JSX.Element => {\n return (\n \n \n \n );\n};\n\nexport default DesktopTVSetTopSelectableCard;\n","import React from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { DescribedCost } from '@r1-frontend/ui-react/components/costs';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport Stepper from '@r1-frontend/ui-react/components/Stepper';\nimport { IndentContainer, withRadius } from '@r1-frontend/ui-react/experimental/containers';\nimport SteppableCardFooter from '@r1-frontend/ui-react/organisms/Card/CardBricks/SteppableCardFooter';\nimport CardImage from '@r1-frontend/ui-react/organisms/Card/CardImage';\nimport * as S from '@r1-frontend/ui-react/organisms/Card/TVSetTopSelectable/styled';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport DesktopTVSetTopSelectable from './Desktop';\n\nexport type TTVSetTopSelectableProps = {\n images: string[],\n group: string,\n title: string,\n description: string,\n\n cost: number,\n period: number,\n\n quantity?: number,\n disabled?: boolean,\n\n onIncrement: () => void,\n onDecrement: () => void,\n isSelected?: boolean,\n\n btnText?: string,\n onButtonClick: () => void,\n onCostClick: () => void,\n\n className?: string,\n}\n\nconst TVSetTopSelectable = (props: TTVSetTopSelectableProps): JSX.Element => {\n const isMobile = useMatchMedia(`(max-width: ${wideBreakpoints.mobile})`);\n\n return (\n
\n \n \n {isMobile\n ? \n : \n }\n \n {!isMobile && \n \n 0 ? props.onCostClick : undefined}\n installmentPeriod={props.period}\n >\n {props.cost}\n \n {props.quantity\n ? \n : \n {props.btnText || 'Добавить'}\n \n }\n \n }\n
\n );\n};\n\nexport default withRadius(TVSetTopSelectable, { $desktop: 32, $mobile: 24 });\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { IndentContainer, RounderContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport TVSetTopSelectable from '@r1-frontend/ui-react/organisms/Card/TVSetTopSelectable/TVSetTopSelectable';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const StyledTVSetTopSelectableCard = styled(TVSetTopSelectable)`\n flex-direction: column;\n background-color: ${COLORS.BgSurface};\n\n width: 164px;\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n width: 304px;\n }\n\n & > ${IndentContainer} > ${RounderContainer} {\n background-color: ${COLORS.TextWhite};\n }\n\n & > ${IndentContainer}:last-child {\n margin-top: auto;\n }\n`;\n\nexport const DesktopFooter = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: flex-end;\n`;\n","import { StyledTVSetTopSelectableCard as TVSetTopCardSelectable } from './styled';\n\nexport default TVSetTopCardSelectable;\n","import ReCAPTCHA from 'react-google-recaptcha';\nimport styled, { css } from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport InputSimple, { nameDecorator, phoneDecorator } from '@r1-frontend/ui-react/components/inputSimple';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const NamePhoneForm = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n`;\n\nexport const namePhoneTemplates = {\n first: css`\n grid-template-columns: repeat(2, minmax(224px, 288px)) min-content;\n grid-template-areas:\n \"name phone button\"\n \"policynote policynote policynote\";\n `,\n second: css`\n grid-template-columns: repeat(2, minmax(224px, 288px));\n grid-template-areas:\n \"name phone\"\n \"policynote policynote\"\n \"button button\";\n `,\n mobile: css`\n grid-template-columns: minmax(224px, 1fr);\n grid-template-areas:\n \"name\"\n \"phone\"\n \"recaptcha\"\n \"policynote\"\n \"button\";\n `,\n};\n\nconst recaptchaNamePhoneTemplates = {\n first: css`\n grid-template-columns: repeat(2, minmax(224px, 288px)) min-content;\n grid-template-areas:\n \"name phone button\"\n \"policynote policynote policynote\"\n \"recaptcha recaptcha recaptcha\";\n `,\n second: css`\n grid-template-columns: repeat(2, minmax(224px, 288px));\n grid-template-areas:\n \"name phone\"\n \"policynote policynote\"\n \"button button\"\n \"recaptcha recaptcha\";\n `,\n mobile: css`\n grid-template-columns: minmax(224px, 1fr);\n grid-template-areas:\n \"name\"\n \"phone\"\n \"recaptcha\"\n \"policynote\"\n \"button\";\n `,\n};\n\nconst phoneTemplates = {\n first: css`\n grid-template-columns: minmax(224px, 288px) min-content;\n grid-template-areas:\n \"phone button\"\n \"policynote policynote\";\n `,\n second: css`\n grid-template-columns: repeat(2, minmax(224px, 288px));\n grid-template-areas:\n \"phone phone\"\n \"policynote policynote\"\n \"button button\";\n `,\n mobile: css`\n grid-template-columns: minmax(224px, 1fr);\n grid-template-areas:\n \"phone\"\n \"policynote\"\n \"button\";\n `,\n};\n\nconst recaptchaPhoneTemplates = {\n first: css`\n grid-template-columns: minmax(224px, 288px) min-content;\n grid-template-areas:\n \"phone button\"\n \"policynote policynote\"\n \"recaptcha recaptcha\";\n `,\n second: css`\n grid-template-columns: repeat(2, minmax(224px, 288px));\n grid-template-areas:\n \"phone phone\"\n \"policynote policynote\"\n \"button button\"\n \"recaptcha recaptcha\";\n `,\n mobile: css`\n grid-template-columns: minmax(224px, 1fr);\n grid-template-areas:\n \"phone\"\n \"recaptcha\"\n \"policynote\"\n \"button\";\n `,\n};\n\nexport type TTemplate = keyof typeof namePhoneTemplates;\n\nexport const GridTemplate = styled.div<{variant: TTemplate, isOnlyPhone: boolean, isRecaptcha: boolean}>`\n display: grid;\n grid-gap: 12px 8px;\n grid-auto-rows: min-content;\n align-items: flex-start;\n ${p => p.isOnlyPhone\n ? p.isRecaptcha ? recaptchaPhoneTemplates[p.variant] : phoneTemplates[p.variant]\n : p.isRecaptcha ? recaptchaNamePhoneTemplates[p.variant] : namePhoneTemplates[p.variant]\n };\n`;\n\nconst Input = styled(InputSimple)`\n margin-bottom: 0;\n\n [data-test=\"placeholder\"] {\n display: none;\n }\n\n [class*=\"InputError\"] {\n padding: 0 5px;\n white-space: nowrap;\n }\n`;\n\nconst NameField = styled(Input)`\n grid-area: name;\n`;\n\nconst PhoneField = styled(Input)`\n grid-area: phone;\n`;\n\nexport const InputName = nameDecorator(NameField);\n\nexport const InputPhone = phoneDecorator(PhoneField);\n\nexport const Button = styled(BaseButton)`\n grid-area: button;\n width: 195px;\n flex: 1 0 auto;\n`;\n\nexport const PolicyNoteWrapper = styled.div<{invertColor?: boolean}>`\n color: ${p => p.invertColor ? COLORS.TextWhite : COLORS.TextSecondary};\n grid-area: policynote;\n margin-left: 0;\n`;\n\nexport const Captcha = styled(ReCAPTCHA)`\n grid-area: recaptcha;\n`;\n","import React, { FC, useCallback, useEffect, useState } from 'react';\n\nimport { btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { PolicyNote } from '@r1-frontend/ui-react/components/PolicyNote';\n\nimport * as ST from './styled';\nexport type { TTemplate } from './styled';\n\ndeclare const grecaptcha: { getResponse: () => string };\n\nexport type TField = {\n value: string,\n isValid: boolean,\n clearInput: () => void,\n}\n\nexport interface ISubmitParams {\n name: TField,\n phone: TField,\n recaptchaToken: string | null,\n}\n\ninterface IFieldParams {\n placeholder: string,\n errorMessage: string,\n}\n\nexport type TFieldNames = 'fio' | 'phone';\n\nexport interface IPropsNamePhoneFormPhone {\n templateVariant?: ST.TTemplate,\n isOnlyPhone?: boolean,\n recapchaSiteKey?: string,\n btnText?: string | React.ReactNode,\n btnType?: btnTypes,\n isLoading?: boolean,\n isDisabled?: boolean,\n invertColor?: boolean,\n policyPath?: string,\n className?: string,\n onButtonClick: (params: ISubmitParams) => void,\n onChange?: (value: TField, fieldName: TFieldNames) => void,\n phoneParams?: IFieldParams,\n nameParams?: IFieldParams,\n}\n\n/**\n * Форма заказа обратного звонка, с попапом результата (отправку аналитики выполняем снаружи формы)\n * @param {boolean} isOnlyPhone - только телефон\n * @param {TTemplate} templateVariant - варианты расположения полей формы\n * @param {string} recapchaSiteKey - ключ для отображения рекапчи\n * @param {boolean} isLoading - отображение сосотояния загрузки\n * @param {boolean} isDisabled - отображение сосотояния блокировки\n * @param {function} onButtonClick - колбэк при клике на кнопку\n * @param {string/ReactNode} btnText - наименование кнопки\n * @param {boolean} invertColor - инвертирует цвета чекбокса\n * @param policyPath - ссылка на политику конфиденциальности\n */\nexport const NamePhoneForm:FC = ({\n templateVariant = 'first',\n isOnlyPhone = false,\n btnText = 'Отправить',\n btnType = btnTypes.ACCENT,\n isLoading,\n isDisabled,\n invertColor,\n recapchaSiteKey = '',\n policyPath = '/policy.pdf',\n phoneParams,\n nameParams,\n onButtonClick,\n onChange,\n className,\n}) => {\n const [phone, setPhone] = useState();\n const [name, setName] = useState();\n const [isValidInputs, setIsValidInputs] = useState(false);\n const [isRecaptcha, setIsRecaptcha] = useState(false);\n const [captchaToken, setCaptchaToken] = useState(null);\n\n useEffect(() => {\n setIsRecaptcha(!!recapchaSiteKey);\n }, [recapchaSiteKey]);\n\n useEffect(() => {\n const isValid = isOnlyPhone ? phone?.isValid : (phone?.isValid && name?.isValid);\n setIsValidInputs(isValid as boolean);\n }, [isOnlyPhone, phone, name]);\n\n const clickHandler = () => {\n if (isLoading || isDisabled || !isValidInputs) {\n return;\n }\n\n const recaptchaToken = isRecaptcha ? grecaptcha?.getResponse() : null;\n\n onButtonClick({\n name: (name as TField),\n phone: (phone as TField),\n recaptchaToken,\n });\n };\n\n const onChangeHandler = useCallback((\n stateInput: TField,\n fieldName: TFieldNames,\n ) => {\n if (stateInput.value === undefined) {\n return;\n }\n\n if (fieldName === 'phone') {\n setPhone(stateInput);\n } else {\n setName(stateInput);\n }\n\n typeof onChange === 'function' && onChange(stateInput, fieldName);\n }, [onChange]);\n\n return (\n \n \n {!isOnlyPhone &&\n onChangeHandler(stateInput, 'fio')}\n placeholder={nameParams?.placeholder || 'Как вас зовут?'}\n errorMessage={nameParams?.errorMessage || 'Ожидаются только буквы и дефисы'}\n disabled={isLoading}\n data-test='field-name'\n />\n }\n onChangeHandler(stateInput, 'phone')}\n placeholder={phoneParams?.placeholder || 'Номер телефона'}\n errorMessage={phoneParams?.errorMessage || 'Телефон в формате +7 (999) 999-99-99'}\n disabled={isLoading}\n data-test='field-phone'\n />\n \n \n \n \n {btnText}\n \n {isRecaptcha &&\n \n }\n \n \n );\n};\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBkPSJNNC40MDc1NCAxOS44MjM0SDEuNTkxODVDMC43MDQ3OTEgMTkuODIzNCAtMC4wMDAzMDUxNzYgMjAuNTMxIC0wLjAwMDMwNTE3NiAyMS40MjEyVjI0LjIyNTVDLTAuMDAwMzA1MTc2IDI1LjExNTggMC43MDQ3OTEgMjUuODIzNCAxLjU5MTg1IDI1LjgyMzRINC40MDc1NEM1LjI5NDYgMjUuODIzNCA1Ljk5OTY5IDI1LjExNTggNS45OTk2OSAyNC4yMjU1VjIxLjQyMTJDNS45OTk2OSAyMC41MzEgNS4yOTQ2IDE5LjgyMzQgNC40MDc1NCAxOS44MjM0Wk00Ljg2MjQ0IDI0LjIyNTVDNC44NjI0NCAyNC40NzY2IDQuNjU3NzQgMjQuNjgyMSA0LjQwNzU0IDI0LjY4MjFIMS41OTE4NUMxLjM0MTY1IDI0LjY4MjEgMS4xMzY5NSAyNC40NzY2IDEuMTM2OTUgMjQuMjI1NVYyMS40MjEyQzEuMTM2OTUgMjEuMTcwMSAxLjM0MTY1IDIwLjk2NDcgMS41OTE4NSAyMC45NjQ3SDQuNDA3NTRDNC42NTc3NCAyMC45NjQ3IDQuODYyNDQgMjEuMTcwMSA0Ljg2MjQ0IDIxLjQyMTJWMjQuMjI1NVoiIGZpbGw9IiMxQTFBMUEiLz4KICA8cGF0aCBkPSJNMTQuMzA5OSAxMC4zMzQ0SDExLjQ5NDJDMTAuNjA3MSAxMC4zMzQ0IDkuOTAyMDQgMTEuMDQyIDkuOTAyMDQgMTEuOTMyMlYxNC43MzY1QzkuOTAyMDQgMTUuNjI2NyAxMC42MDcxIDE2LjMzNDQgMTEuNDk0MiAxNi4zMzQ0SDE0LjMwOTlDMTUuMTk2OSAxNi4zMzQ0IDE1LjkwMiAxNS42MjY3IDE1LjkwMiAxNC43MzY1VjExLjkzMjJDMTUuOTAyIDExLjA0MiAxNS4xOTY5IDEwLjMzNDQgMTQuMzA5OSAxMC4zMzQ0Wk0xNC43NjQ4IDE0LjczNjVDMTQuNzY0OCAxNC45ODc2IDE0LjU2MDEgMTUuMTkzIDE0LjMwOTkgMTUuMTkzSDExLjQ5NDJDMTEuMjQ0IDE1LjE5MyAxMS4wMzkzIDE0Ljk4NzYgMTEuMDM5MyAxNC43MzY1VjExLjkzMjJDMTEuMDM5MyAxMS42ODExIDExLjI0NCAxMS40NzU3IDExLjQ5NDIgMTEuNDc1N0gxNC4zMDk5QzE0LjU2MDEgMTEuNDc1NyAxNC43NjQ4IDExLjY4MTEgMTQuNzY0OCAxMS45MzIyVjE0LjczNjVaIiBmaWxsPSIjMUExQTFBIi8+CiAgPHBhdGggZD0iTTcuODMxNiAxMi43NDE2TDAuNTY1MjU4IDEyLjc0MTZDMC4yNDg1NDMgMTIuNzQxNiAtMC4wMDAzMDUxNzYgMTMuMDAyNCAtMC4wMDAzMDUxNzYgMTMuMzM0M0MtMC4wMDAzMDUxNzYgMTMuNjY2MiAwLjI0ODU0MyAxMy45MjcgMC41NjUyNTggMTMuOTI3TDcuODMxNiAxMy45MjdDOC4xNDgzMiAxMy45MjcgOC4zOTcxNyAxMy42NjYyIDguMzk3MTcgMTMuMzM0M0M4LjM5NzE3IDEzLjAwMjQgOC4xNDgzMiAxMi43NDE2IDcuODMxNiAxMi43NDE2WiIgZmlsbD0iIzFBMUExQSIvPgogIDxwYXRoIGQ9Ik0yNS4yMzcgMTIuNzQxNkwxNy45NzQ1IDEyLjc0MTZDMTcuNjU3NyAxMi43NDE2IDE3LjQwODcgMTMuMDAyNCAxNy40MDg3IDEzLjMzNDNDMTcuNDA4NyAxMy42NjYyIDE3LjY1NzcgMTMuOTI3IDE3Ljk3NDUgMTMuOTI3TDI1LjIzNyAxMy45MjdDMjUuNTUzOCAxMy45MjcgMjUuODAyNyAxMy42NjYyIDI1LjgwMjcgMTMuMzM0M0MyNS44MDI3IDEzLjAwMjQgMjUuNTUzOCAxMi43NDE2IDI1LjIzNyAxMi43NDE2WiIgZmlsbD0iIzFBMUExQSIvPgogIDxwYXRoIGQ9Ik04LjEwNDQzIDIzLjQxNjFMMjUuMjE4OCAyMy40MTYxQzI1LjU0NTYgMjMuNDE2MSAyNS44MDIzIDIzLjE1NTMgMjUuODAyMyAyMi44MjM0QzI1LjgwMjMgMjIuNDkxNSAyNS41NDU2IDIyLjIzMDcgMjUuMjE4OCAyMi4yMzA3TDguMTA0NDMgMjIuMjMwN0M3Ljc3NzY3IDIyLjIzMDcgNy41MjA5MyAyMi40OTE1IDcuNTIwOTMgMjIuODIzNEM3LjUyMDkzIDIzLjE1NTMgNy43Nzc2NyAyMy40MTYxIDguMTA0NDMgMjMuNDE2MVoiIGZpbGw9IiMxQTFBMUEiLz4KICA8cGF0aCBkPSJNMjEuMzk0NiA2LjQyMjYxTDI0LjIxMDMgNi40MjI2MUMyNS4wOTczIDYuNDIyNjEgMjUuODAyNCA1LjcxNSAyNS44MDI0IDQuODI0NzhMMjUuODAyNCAyLjAyMDQzQzI1LjgwMjQgMS4xMzAyMSAyNS4wOTczIDAuNDIyNjA3IDI0LjIxMDMgMC40MjI2MDhMMjEuMzk0NiAwLjQyMjYwOEMyMC41MDc1IDAuNDIyNjA4IDE5LjgwMjQgMS4xMzAyMSAxOS44MDI0IDIuMDIwNDNMMTkuODAyNCA0LjgyNDc4QzE5LjgwMjQgNS43MTUgMjAuNTA3NSA2LjQyMjYxIDIxLjM5NDYgNi40MjI2MVpNMjAuOTM5NyAyLjAyMDQzQzIwLjkzOTcgMS43NjkzNCAyMS4xNDQ0IDEuNTYzOTEgMjEuMzk0NiAxLjU2MzkxTDI0LjIxMDMgMS41NjM5MUMyNC40NjA1IDEuNTYzOTEgMjQuNjY1MiAxLjc2OTM0IDI0LjY2NTIgMi4wMjA0M0wyNC42NjUyIDQuODI0NzhDMjQuNjY1MiA1LjA3NTg3IDI0LjQ2MDUgNS4yODEzIDI0LjIxMDMgNS4yODEzTDIxLjM5NDYgNS4yODEzQzIxLjE0NDQgNS4yODEzIDIwLjkzOTcgNS4wNzU4NyAyMC45Mzk3IDQuODI0NzhMMjAuOTM5NyAyLjAyMDQzWiIgZmlsbD0iIzFBMUExQSIvPgogIDxwYXRoIGQ9Ik0xNy42OTc2IDIuODI5ODNMMC41ODMxOTMgMi44Mjk4M0MwLjI1NjQzNCAyLjgyOTgzIC0wLjAwMDMwNTEzIDMuMDkwNjMgLTAuMDAwMzA1MDcyIDMuNDIyNTZDLTAuMDAwMzA1MDE0IDMuNzU0NDggMC4yNTY0MzQgNC4wMTUyOCAwLjU4MzE5NCA0LjAxNTI4TDE3LjY5NzYgNC4wMTUyN0MxOC4wMjQzIDQuMDE1MjcgMTguMjgxMSAzLjc1NDQ4IDE4LjI4MTEgMy40MjI1NUMxOC4yODExIDMuMDkwNjMgMTguMDI0MyAyLjgyOTgzIDE3LjY5NzYgMi44Mjk4M1oiIGZpbGw9IiMxQTFBMUEiLz4KPC9zdmc+Cg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzUiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAzNSAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMzLjIxOCAwSDIuMzc2NjZDMS4zODMzMiAwIDAuNTkzNzUgMC44MDA0NzIgMC41OTM3NSAxLjgwNzUyVjIxLjk0ODRDMC41OTM3NSAyMi45NTU1IDEuMzgzMzIgMjMuNzU2IDIuMzc2NjYgMjMuNzU2SDMzLjIxOEMzNC4yMTEzIDIzLjc1NiAzNS4wMDA5IDIyLjk1NTUgMzUuMDAwOSAyMS45NDg0VjEuODA3NTJDMzUuMDAwOSAwLjgwMDQ3MiAzNC4yMTEzIDAgMzMuMjE4IDBaTTMzLjcyNzQgMjEuOTQ4NEMzMy43Mjc0IDIyLjIzMjUgMzMuNDk4MiAyMi40NjQ5IDMzLjIxOCAyMi40NjQ5SDIuMzc2NjZDMi4wOTY0OSAyMi40NjQ5IDEuODY3MjYgMjIuMjMyNSAxLjg2NzI2IDIxLjk0ODRWMS44MDc1MkMxLjg2NzI2IDEuNTIzNDggMi4wOTY0OSAxLjI5MTA4IDIuMzc2NjYgMS4yOTEwOEgzMy4yMThDMzMuNDk4MiAxLjI5MTA4IDMzLjcyNzQgMS41MjM0OCAzMy43Mjc0IDEuODA3NTJWMjEuOTQ4NFoiIGZpbGw9IiMxQTFBMUEiLz4KPHBhdGggZD0iTTI3LjYwMDMgMjZINy45ODgzMkM3LjYzMTczIDI2IDcuMzUxNTYgMjYuMjg0IDcuMzUxNTYgMjYuNjQ1NUM3LjM1MTU2IDI3LjAwNyA3LjYzMTczIDI3LjI5MTEgNy45ODgzMiAyNy4yOTExSDI3LjYwMDNDMjcuOTU2OSAyNy4yOTExIDI4LjIzNzEgMjcuMDA3IDI4LjIzNzEgMjYuNjQ1NUMyOC4yMzcxIDI2LjI4NCAyNy45NTY5IDI2IDI3LjYwMDMgMjZaIiBmaWxsPSIjMUExQTFBIi8+CjxwYXRoIGQ9Ik0xNS44NDgyIDExLjMwOTNIMTMuNDYyN1Y5LjQ3NUMxMy40NjI3IDkuMTM5MDQgMTMuMTkwNCA4Ljg2NjcgMTIuODU0NCA4Ljg2NjdDMTIuNTE4NCA4Ljg2NjcgMTIuMjQ2MSA5LjEzOTA0IDEyLjI0NjEgOS40NzVWMTQuMjgwM0MxMi4yNDYxIDE0LjYxNjIgMTIuNTE4NCAxNC44ODg2IDEyLjg1NDQgMTQuODg4NkMxMy4xOTA0IDE0Ljg4ODYgMTMuNDYyNyAxNC42MTYyIDEzLjQ2MjcgMTQuMjgwM1YxMi40NDM1SDE1Ljg0ODJWMTQuMjgwM0MxNS44NDgyIDE0LjYxNjIgMTYuMTIwNSAxNC44ODg2IDE2LjQ1NjUgMTQuODg4NkMxNi43OTI0IDE0Ljg4ODYgMTcuMDY0OCAxNC42MTYyIDE3LjA2NDggMTQuMjgwM1Y5LjQ3NUMxNy4wNjQ4IDkuMTM5MDQgMTYuNzkyNCA4Ljg2NjcgMTYuNDU2NSA4Ljg2NjdDMTYuMTIwNSA4Ljg2NjcgMTUuODQ4MiA5LjEzOTA0IDE1Ljg0ODIgOS40NzVWMTEuMzA5M1oiIGZpbGw9IiMxQTFBMUEiLz4KPHBhdGggZD0iTTIyLjA2MjEgOS4yMTc2NEMyMS42NTY2IDguOTc1NzkgMjEuMDA2MiA4Ljg2NjcgMjAuNDgxNCA4Ljg2NjdIMTkuMTQ0NUMxOC44Njg0IDguODY2NyAxOC42NDQ1IDkuMDkwNTYgMTguNjQ0NSA5LjM2NjdWMTQuMzg4NkMxOC42NDQ1IDE0LjY2NDcgMTguODY4NCAxNC44ODg2IDE5LjE0NDUgMTQuODg4NkgyMC40ODE0QzIxLjAwNjIgMTQuODg4NiAyMS42MzI4IDE0Ljc1NTggMjIuMDYyMSAxNC41MTRDMjIuNDY3NyAxNC4yNzIxIDIyLjgwMTcgMTMuOTMzNiAyMy4wMTYzIDEzLjQ5ODJDMjMuMjU0OSAxMy4wNjI5IDIzLjM1MDMgMTIuNTU1MSAyMy4zNTAzIDExLjk5ODhWMTEuNzMyOEMyMy4zNTAzIDExLjE3NjYgMjMuMjMxIDEwLjY2ODcgMjIuOTkyNSAxMC4yMzM0QzIyLjgwMTcgOS43OTgwNiAyMi40OTE1IDkuNDU5NDggMjIuMDYyMSA5LjIxNzY0Wk0yMi4xMzM3IDEyLjA0NzJDMjIuMTMzNyAxMi42Mjc2IDIxLjk5MDYgMTMuMDg3MSAyMS43NTIgMTMuNDAxNUMyMS41MTM1IDEzLjcxNTkgMjAuOTU4NSAxMy44OTcgMjAuNDgxNCAxMy44OTdIMTkuOTU2QzE5Ljg3MzIgMTMuODk3IDE5LjgwNiAxMy44Mjk5IDE5LjgwNiAxMy43NDdWMTAuMDMyNEMxOS44MDYgOS45NDk2IDE5Ljg3MzIgOS44ODI0NCAxOS45NTYgOS44ODI0NEgyMC40ODE0QzIwLjk1ODUgOS44ODI0NCAyMS40ODk2IDEwLjAzOTkgMjEuNzUyIDEwLjM1NDNDMjEuOTkwNiAxMC42Njg3IDIyLjEzMzcgMTEuMTI4MiAyMi4xMzM3IDExLjc1N1YxMi4wNDcyWiIgZmlsbD0iIzFBMUExQSIvPgo8L3N2Zz4K\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAgMCA2MCA2MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Y2lyY2xlIGN4PSIzMCIgY3k9IjMwIiByPSIzMCIgZmlsbD0iI2Y1ZjhmYiIvPjxwYXRoIGQ9Ik0yMC41NDg4IDI5Ljc4ODhDMjYuMjgyMiAyNS4zNjIxIDMzLjczNTUgMjUuMzYyMSAzOS40Njg4IDI5Ljc4ODgiIHN0cm9rZT0iIzE0MTkyNCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBkPSJNMTYuNjY4IDI1LjE0ODdDMjQuNzQ4IDE4LjkwODcgMzUuMjU0NiAxOC45MDg3IDQzLjMzNDYgMjUuMTQ4NyIgc3Ryb2tlPSIjMTQxOTI0IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yMy4wNTI3IDM0LjY1NDhDMjcuMjUyNyAzMS40MDE1IDMyLjczMjcgMzEuNDAxNSAzNi45MzI3IDM0LjY1NDgiIHN0cm9rZT0iIzE0MTkyNCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBkPSJNMjYuNTM1MiAzOS41MzY0QzI4LjY0MTggMzcuOTA5NyAzMS4zNzUyIDM3LjkwOTcgMzMuNDgxOCAzOS41MzY0IiBzdHJva2U9IiMxNDE5MjQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+Cg==\"","module.exports = \"https://cdn-b2c.dom.ru/b2c-domru/2.358.14/frontend/_next/static/images/movix-header-9db2b4a89d60de0c943460b818bb8b5f.png\";","module.exports = \"https://cdn-b2c.dom.ru/b2c-domru/2.358.14/frontend/_next/static/images/movix-header-52c28bc3e0f00fc44d22699eae7afa0b.webp\";"],"names":["CustomSwiper","styled","NukaCarousel","EMediaWidth","defaultVisibleSlides","desktop","sDesktop","laptop","mobile","children","desktopSlideWidth","mobileSlideWidth","visibleSlides","props","useState","hideArrows","setHideArrows","hideDots","setHideDots","slideWidth","setSlideWidth","isDesktop","useMatchMedia","isSDesktop","isLaptop","isMobile","useEffect","length","withoutArrows","withoutDots","DEFAULT_IMAGE_MAP_WEBP","DEFAULT_IMAGE_MAP_JPG","BgThrobber","Throbber","BorderRadius","EConnectStatuses","DEFAULT","CONNECT","NOT_CONNECT","NOT_GIGABIT","titles","additionalBtnText","texts","alertText","EditableAddressForm","wideBreakpoints","AgreeWrap","BlockWrap","sendGtmEvent","FONTS","COLORS","action","dataLayerPush","event","EVENTS","category","onConfirmBtnClick","dispatch","useDispatch","useSelector","state","isConfirmButtonActive","isAddressFilled","onFillAddress","useCallback","address","fillAddressAction","openCitySelectPopup","openCitySelect","buttonText","ST","AddressInputFields","catchAddressData","disableCityChange","gtmCategory","CATEGORIES","gtmSenderCallback","onClickCityChange","PolicyNote","agreeUrl","POLICY_PAGE_LINK","BaseButton","data-test","type","btnTypes","text","onClick","disabled","memo","isPersonDataFilled","contactDetails","editedPhone","editedFio","Boolean","EditableContactsForm","BtnWrap","Button","onClickChangeAddress","isLoading","setIsLoading","useResultPopup","PopupResult","showResult","fio","phone","isPersonData","csrf","selectCsrf","onSendRequest","resp","doRequest","requestByConnection","petition","product_id","isSuccess","EResultPopupStatus","title","payload","message","PersonForm","onChangeFio","_person","fillFioAction","onChangePhone","_phone","fillPhoneAction","isNeedToBlockInvalidFio","actionButtonProps","AlertWrap","ResultForm","AlertText","Text","connectStatus","router","useRouter","sendAnalytics","useAnalyticsSender","verifiedAddressData","contactAddress","saveVerifiedAddress","status","EVerificationStatus","setSessionStorageByKey","ADDRESS_PARAM_NAME","resetAddress","Alert","Icon","InfoCircle","dangerouslySetInnerHTML","__html","newRoute","getFullBuyRoute","filters","ETariffFilters","push","paddings","getBg","src","padding","CheckAddressConnect","p","imgSrc","getMBg","Title","isWepbSupported","useWebp","addressStatus","currentCity","city","companyName","selectCompanyName","useMemo","addressStr","getAddressByStr","isHouseConnected","gigabitAvail","checkAddressConnect","checkAddress","cityImage","image_map_webp","image_map","defaultImage","className","Form","FormInputs","ButtonSubmit","CallBackEquipment","checkValid","name","value","beenStarted","option","isPopup","isAuth","agreement","setState","validate","dataLayerForCBPhonePush","ACTIONS","requestId","uid","isValidated","fioValidated","isValid","phoneValidated","onSubmit","sendRequest","extParams","formRef","isSending","params","onChangeAgreementHandler","prev","checkAgreement","reset","clearInput","render","this","btnText","textButton","placeholder","errorMessage","onChange","IndentContainer","$united","Component","OrderPopup","setExtParams","selectRouter","materialsEnsId","global_id","tv_equipment_id","tv_equipment_buy","EPriceTypes","tv_equipment_duration","getTypeOfBuy","pluralize","monthPluralize","getRouterName","materialsEnsName","onCloseWrapper","closeClick","renderOrderLine","selectedOption","price","pricePromo","div","label","bind","componentDidUpdate","isOpened","extLabel","isOpen","onClose","RequestForm","PureComponent","BREAKPOINTS","CarouselWrapper","CardWrapper","bgColor","withCellSpacing","css","ImageBlock","LazyLoadImage","isCustom","Description","bg","img","imgWebp","description","link","advertising","paramsOnClick","WebpImage","urlWebp","NonStaticContainer","$position","$bottom","$right","AdvertisingLabelWithTooltip","erid","tooltip","position","href","Wrapper","Arrow","direction","previousSlide","nextSlide","items","isTablet","AdaptiveNukaCarousel","framePadding","cellSpacing","slidesToScroll","customArrow","CustomArrows","map","id","desc","InterestingCard","onLoadSuggestions","suggestFio","suggestions","suggestion","PersonFormComponent","TariffElement","item","titleText","imageProps","btnProps","ImageElement","HtmlContentFromApi","ButtonElement","btnTextDesktop","btnTextMobile","iconNameDesktop","iconNameMobile","isDisabled","onButtonClick","size","btnSizes","iconsSprite","ICONS_PATH","symbolId","imgBgColor","imageSrc","imageAlt","textForImage","bgForImage","channelCount","isMega","alt","ImgWrap","ImageElementWithText","RowWrap","DescriptionWrap","MobileOnlyWrap","DesktopOnlyWrap","withCounts","TitleWrap","BannerRow","Row","notSingle","BannerCol","Col","isDoubleBanner","BannerWrapper","Desc","banners","withEllipsis","renderBannersList","bannerInfo","truncate","descText","xs","PromoBanner","bannerIdx","background","image_background","backgroundWebp","image_background_webp","image","imageWebp","image_webp","textColor","text_color","button_text","buttonType","button_type","tags","route","legal","ageLimit","age_limit","legal_info","legal_info_text_color","actionMap","simple","long","custom","useGaBanner","onDataLayerPush","isFull","onBannerClick","Router","getABNVariant","ETariffTypes","Banner","MainContent","CustomButton","bType","hex2rgb","getBgColorByType","AdditionalContent","AgeMarker","LegalInfo","ImageWrap","banner","backgroundImage","sourceBackgroundImage","useProgressiveImage","timeoutDelay","hasTimeout","$top","e","stopPropagation","legalInfoTextColor","legalInfo","Content","Legal","LegalTitle","LegalDescription","$desktop","$mobile","index","Center","tab_title","tabTitle","tariffCost","format","monthly","simpleBanners","tariff","marketing","first_banner_top_sale","hideCustomBanner","topSaleBanner","topSaleTariff","selectInternetTariffByAlias","isShowTopSaleTariff","simpleBannersForDisplay","slice","key","SimpleTopSale","priceAction","Simple","Long","Custom","FormConnect","FormConnectTitle","ContainerTitleSelect","Message","ok","SNamePhoneForm","NamePhoneForm","OPTIONS","EProductsId","initResult","withRecaptcha","isMobileView","isMiddle","result","setResult","setSelectedOption","startInput","setStartInput","submitHandler","dataParams","resultHandler","TitleSelect","instanceId","options","templateVariant","stateInput","undefined","recapchaSiteKey","RECAPTCHA_SITE_KEY","policyPath","Container","Provider","WrapperText","WrapperIcon","IconImg","ProviderContainer","ProviderElement","ProviderTitle","ProviderText","features","icon","ControlsIcon","WifiIcon","HdIcon","cityIn","feature","Wpapper","List","ListItem","IndexContainerInfo","hasStrInUrl","isLeadGeneration","isLeadGenerationHide","IndexTextConnect","IndexProvider","useOrderPopup","operType","sort","closeOrderPopup","onErrorOrder","popupRequestHandler","dataLayerForCBPhonePushWrapper","error","showOrder","product","ProductCard","categoryTitle","categoryName","shortName","title_short","body","spec","priceOptions","getPriceOptions","convertShopPrices","detailHandler","labels","isCreditAvailable","Anchor","displayName","theme","breakpoints","$small","$withAnimation","transition","tablet","$type","colors","base","system","accent","active","hover","contrast","primary","secondary","head","links","getColorsByType","hasIconOnly","typography","headers","h5","fs","indents","xxs","s","lh","xm","button","span","getColors","getResponsiveSizeStyles","getAnimation","xxxxxs","r1FontWeights","getFontWeightByName","fontWeightName","getFontSize","level","BaseHeader","$weight","H1","H3","withComponent","H5","SvgStyled","role","width","height","xmlns","createSvg","Path","viewBox","SvgComponent","strokeWidth","Svg","g","path","d","strokeLinecap","strokeLinejoin","$size","$color","NBSP","String","fromCharCode","RubleSymbol","parseFloat","Intl","NumberFormat","style","minimumFractionDigits","maximumFractionDigits","is","period","Object","hasOwn","divideByThousand","Price","annually","DiscountedPrice","current","actual","discountPeriod","as","inline","xxxs","srcWebp","picture","source","srcSet","radii","percentage","half","Card","images","count","article","aria-label","RoundingFramedIcon","section","Symbol","React","Image","light","pixel","m","InternetTitle","l","selectedItem","onSelect","handleOnClick","ul","li","CardsWrapper","$stretchTheFirstOne","MultiPackage","pkg","selectedSpeed","content","onSpeedSelect","onCardClick","onSelectClicked","speeds","values","speed","hasSubscriptions","some","darkTheme","Global","SpeedSelector","card","footer","xl","$background","color","EAction","CloseCallbackPopup","packageLines","availableTags","forEach","line","flat","filter","i","sub","Array","isArray","Set","reduce","acc","cur","Initialize","subject","channels","SetChannels","SetChannelsCategory","search","SetChannelsSearchValue","visible","SetChannelsSearchVisibility","packageLineId","packageId","SetCurrentPackageIdForLine","equipment","SetEquipment","loading","SetLoading","SetPackageId","productType","SetProductItemType","FiltersAnalytics","_tagToAnalyticsDataMap","cinema","game","clickCottage","send","clickApartment","addFilterMono","removeFilterMono","addFilterBundle","removeFilterBundle","clickTag","BaseAnalytics","MultiPackageAnalytics","clickChangeSpeed","clickSubscriptionsPopup","clickEquipmentPopup","clickChannelsPopup","clickDetails","clickConnect","stringify","pathname","query","clickViewAllTariffs","analytics","FiltersSetSubject","subscriptions","SetSubscriptions","FiltersSetTags","FiltersSetType","packageLine","SetupCallbackPopup","initialState","_loading","_clickedProductItemType","_clickedPackageId","callbackPopup","tariffName","requestDataParams","flushCurrentPackageId","lines","deepClone","currentPackageId","reducer","_state","tag","selectedCategory","searchValue","isSearchVisible","isMono","Ctx","createContext","debugMode","useThunkReducer","console","log","useContextDispatch","useContext","useContextSelector","selector","CallbackPopup","closeCallbackPopup","DefaultPopup","LazyCallBack","withPopupResult","onCloseResultPopup","CallbackWrapper","toggleTitles","leftText","rightText","onSubjectClick","onTypeClick","onTagsClick","Toggle","fontSize","textsValues","onChangeCallback","activeTab","BaseCheckbox","checked","includes","tagsInState","resultTags","book","getFiltersForContainer","Filters","setSubjectFilter","setTypeFilter","currentTarget","setTagsFilter","split","Overlay","ref","useRef","root","useRootElement","useScrollLock","lockScroll","unlockScroll","closeOverlayOnClickOutside","target","useKeyPress","overlay","onMouseDown","createPortal","pxOrAuto","$width","$minWidth","$maxWidth","$height","$minHeight","$maxHeight","maxSize","xxxxxxl","xxxxxl","maxWidthOr","maxHeightOr","PopupBase","getSizes","PopupContent","main","deep","PopupHeader","header","data-close-activator","Close","Popup","PopupWithImage","$image","progressiveBackground","selectChannels","createSelector","categories","list","selectedFilter","toLowerCase","selectEquipment","selected","routers","decoders","equip","searchRef","useMatchMediaByWidth","focus","SearchInput","onClear","setChannelsSearchValue","isClearBtnHide","ListContainer","$direction","$wrap","Select","setChannelsCategory","SearchNormal","rounded","batch","setChannelsSearchVisibility","svg","defs","clipPath","BaseParagraph","Paragraph1","a","rel","ChannelImage","native","ChannelsContainer","Paragraph4","Children","url","logo","Channel","ChannelsFilter","ChannelsThrobber","TopWrapper","Skeleton","borderRadius","wrapper","EquipmentContainer","equpment","$alignItems","RouterCard","TVSetTopSelectable","DescribedCost","PopupSkeleton","MovixPopup","FullWidthListContainer","$withIndent","ListItemWithIcon","TickCircle","$smaller","SubscriptionsContainer","selectSubscriptions","subscription","selectPopupContent","Channels","Subscriptions","Equipment","require","webpSrc","ProductItemPopup","popupContent","useValueByBreakpoint","closePopup","setProductItemType","batchActions","actions","thunk","createCategoryLabel","all","hd","transformChannels","hdCount","channel","isHD","quality","Number","getState","response","setLoading","uri","method","withProvider","setChannels","EquipmentType","tv","salePackageId","retrieveEquipment","noop","onIncrement","onDecrement","onCostClick","setEquipment","selectedPrice","prices","find","duration","b","Label","characteristics","characteristic","Flash","cost","group","setSubscriptions","full","entries","tagName","getFilters","getLines","getActiveFilterTags","activeTags","resultLines","filteredPackages","pkgData","isForCottage","selectedPackage","curr","c","join","packageName","initialize","getCurrentCityIn","_packageLines","getFilteredLines","filterType","isFullBuyVillage","isFullBuyVillageAbn","FiltersContainer","TariffLineCarousel","pl","setCurrentPackageIdForLine","setupCallbackPopup","handlePackageSelect","_e","cardActionByType","Link","PATH_BUNDLES_LINK_CITY","PATH_INTERNET_LINK_CITY","passHref","MultiPackageContext","MultiPackageList","MenuItem","PicBox","Pic","sortByWeight","menuItems","selectWebUnderMenu","onClickMenuItemHandler","sortedMenuItems","weight","WideContainer","BannersAndMenuContainer","ShopItemsTitle","topSalesBlocksInfo","productList","isTariffsBetweenBanners","isRedesignedTariffCards","doublePromoBanners","main_promo_double","promoBanner","main_promo","otherBanners","tariffsDefaultFilter","getDefaultFilter","onClickHandler","marginBottom","Banners","WebUnderMenu","MultiPackageWithContext","Tariffs","filterForTariff","CheckAddressMapConnect","PromoBannersSection","HitsCarousel","preparedContentBlocks","InterestingCarousel","Promo","include","NoSSR","Connect","setErrorMessage","ESpecOfferActionTypes","setIsLoadingOffers","setIsPopupOpened","setOffers","setOfferTransaction","setPopupState","setSelectedOfferId","analiticsSender","isClientSide","getAnalyticsSender","isServerSide","sessionStorage","setItem","JSON","getSessionStorageByKey","getItem","parse","getSessionStorageDataWithTypes","dataString","removeSessionStorageDataByKey","removeItem","ESaleAgentClientName","FULL_BUY_SITE","FULL_BUY_EQUIPMENT_SITE","EContactDetailTypes","TextWrapper","H4","ParagraphWithOverflowLineClamp","textOverflowLineClamp","Paragraph5","CardHeader","StyledHeader","withRadius","CardImage","SteppableCardFooter","DesktopTVSetTopSelectable","S","quantity","installmentPeriod","Stepper","min","summaryLimitsReached","$bgColor","StyledTVSetTopSelectableCard","RounderContainer","DesktopFooter","namePhoneTemplates","first","second","recaptchaNamePhoneTemplates","phoneTemplates","recaptchaPhoneTemplates","GridTemplate","isOnlyPhone","isRecaptcha","variant","Input","InputSimple","NameField","PhoneField","InputName","nameDecorator","InputPhone","phoneDecorator","PolicyNoteWrapper","invertColor","Captcha","ReCAPTCHA","btnType","phoneParams","nameParams","setPhone","setName","isValidInputs","setIsValidInputs","setIsRecaptcha","captchaToken","setCaptchaToken","onChangeHandler","fieldName","recaptchaToken","grecaptcha","getResponse","sitekey","module","exports"],"sourceRoot":""}