{"version":3,"file":"static/chunks/386-a8b36fe538495384.js","mappings":"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","sources":["webpack://_N_E/./src/api/common-types/additional-products.types.ts","webpack://_N_E/./src/components/AdaptiveNukaCarousel/styled.ts","webpack://_N_E/./src/components/AdaptiveNukaCarousel/index.tsx","webpack://_N_E/./src/components/DoubleColumnLayout/index.tsx","webpack://_N_E/./src/features/full-buy/components/OrderSummary/TariffDetailedInfo.tsx","webpack://_N_E/./src/features/full-buy/store/helpers/getListDescription.ts","webpack://_N_E/./src/features/full-buy/store/helpers/tariffTransformerHelpers.ts","webpack://_N_E/./src/features/full-buy/store/transformShopItem.ts","webpack://_N_E/./src/features/full-buy/store/tariffTransformer.ts","webpack://_N_E/./src/store/reducers/popups/actions.ts","webpack://_N_E/./src/store/reducers/popups/selectors.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/entities/src/ContactDetail/actions/setConfirmedPhone.ts","webpack://_N_E/../../packages/entities/src/ContactDetail/selectors/selectIsPhoneConfirmed.ts","webpack://_N_E/../../packages/ui-react/src/components/BottomStickyBlock/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/BottomStickyBlock/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/KebabMenu/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/KebabMenu/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/call/CallCalling.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/OrderSummary/Item/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/OrderSummary/OrderLines/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/OrderSummary/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/OrderSummary/styled.tsx","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/three-dots.svg"],"sourcesContent":["import { IShopItem } from '~/src/api/content/shop/getShopItems';\n\n// @deprecated use @r1-frontend/shared/types\nexport interface IProductPrice {\n duration: number | null,\n value: number,\n type: 1 | 5,\n sort: number | null,\n}\n\n// @deprecated use @r1-frontend/shared/types\ninterface IProductTv {\n id: number,\n city_id: number,\n billing_city_id: number,\n materials_ens_id: number,\n mat_name: string,\n posess_price: number,\n leasing_mon_price: number,\n rent_price: number | null,\n leasing_dur: number,\n leasing_mon_price_two: number,\n leasing_dur_two: number,\n alias: string | null,\n description: string,\n description_main: string,\n image: string,\n available_site: 1 | 0,\n available_mobile: 1 | 0,\n label: string,\n youtube: string,\n url: string,\n additional_condition: string,\n image_for_tariff_card: string,\n image_for_tariff_card_height: number,\n image_for_tariff_card_width: number,\n imageFull: string,\n imageCardFull: string,\n prices: IProductPrice[],\n urls: unknown[],\n}\n\ninterface IProductRouter {\n additionalImages: string[],\n alias?: string,\n color: string,\n cubeEquipment: null,\n description: string,\n equipmentCount: number,\n image_for_tariff_card: null,\n image_for_tariff_card_height: null,\n image_for_tariff_card_width: null,\n isGigabit: 0 | 1,\n labelName: string,\n leasingDuration: number,\n leasingDurationSec: number,\n leasingPrice: number,\n leasingPriceSec: number,\n mainImage: string,\n image: string,\n materialsEnsId: number,\n materialsEnsName: string,\n posessPrice: number,\n prices: IProductPrice[],\n properties: unknown,\n routerSquare: number,\n router_groups: null,\n sort: number,\n sortWeight: number,\n speed: number,\n url: string,\n urls: unknown[],\n}\n\n// @deprecated use @r1-frontend/shared/types TAdditional\nexport interface IAdditional {\n id: number,\n tariff_type: string,\n product_id: number,\n product_type: string,\n required: 1 | 0,\n leasing_duration: number,\n description: unknown,\n manual: 1 | 0,\n billing_city_id: number,\n is_visible: 1 | 0,\n name: unknown,\n shopItem: IShopItem,\n price: number,\n base_price: number | null,\n first_month_price: number | null,\n}\n\n// @deprecated use @r1-frontend/shared/types\nexport enum EProductTypeStr {\n TV = 'tv',\n ROUTER = 'router',\n}\n\n// @deprecated use @r1-frontend/shared/types\nexport interface IAdditionalProductTv extends IAdditional {\n product_type: EProductTypeStr.TV,\n product: IProductTv,\n}\n\n// @deprecated use @r1-frontend/shared/types\nexport interface IAdditionalProductRouter extends IAdditional {\n product_type: EProductTypeStr.ROUTER,\n product: IProductRouter,\n}\n\nexport type TAdditionalProduct = IAdditionalProductTv | IAdditionalProductRouter;\n","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","import styled from 'styled-components';\n\nimport WideContainer, { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\n/**\n * Двухколоночный шаблон для страницы\n */\nexport const DoubleColumnLayout = styled(WideContainer)`\n display: grid;\n flex-wrap: nowrap;\n grid-template-columns: 1fr 480px;\n column-gap: 32px;\n margin-bottom: 30px;\n max-width: 100%;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n grid-template-columns: 1fr 384px;\n }\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n grid-template-columns: 100%;\n }\n`;\n","import { useState } from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { InfoCircleFlip } from '@r1-frontend/ui-react/components/svg/main';\nimport ControlElement from '@r1-frontend/ui-react/components/typography/controlElement';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\nimport { IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { Cost } from '@r1-frontend/ui-react/experimental/purchase/cost';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { getPluralize } from '@r1-frontend/shared/helpers/pluralize';\nimport { monthPluralize } from '@r1-frontend/shared/helpers/pluralize/predifined';\n\nexport type TTariffDetailedInfoProps = {\n period: number,\n startPrice: number,\n finalPrice: number,\n};\n\nconst periodText = getPluralize(monthPluralize);\n\nconst TariffDetailedInfo = (\n {\n period,\n startPrice,\n finalPrice,\n }: TTariffDetailedInfoProps,\n): JSX.Element => {\n const [isOpen, changePopupState] = useState(false);\n\n const handleClosePopup = () => {\n changePopupState(false);\n };\n\n const handleOpenPopup = () => {\n changePopupState(true);\n };\n\n return (\n <>\n \n Цена на {period} месяца, далее {finalPrice}\n \n\n \n \n \n

Условия промо-периода

\n \n Первые {period} {periodText(period)} после подключения стоимость тарифа будет{'\\n\\r'}\n {startPrice},  далее {finalPrice}.\n \n
\n\n \n \n \n
\n
\n \n );\n};\n\nexport default TariffDetailedInfo;\n","export const getListDescription = (description = '') => {\n // Убираем теги, разделяем на предложения с сохранением точки.\n return description?.replace(/<\\/?p>/g, '')\n .split(/(?<=\\.\\s)/)\n .filter(item => item.length > 0) || [];\n};\n","import { EProductTypeStr, TAdditionalProduct } from '~/src/api/common-types/additional-products.types';\nimport { IOfferContent } from '~/src/api/common-types/offerContent.types';\nimport { TTariffPackage } from '~/src/api/common-types/sale-package';\nimport { EShopCategory } from '~/src/api/content/shop/getShopItems';\nimport { IAdvantages } from '~/src/entities/formattedTariff';\nimport { getListDescription } from '~/src/features/full-buy/store/helpers/getListDescription';\nimport { TProduct, transformShopItem } from '~/src/features/full-buy/store/transformShopItem';\n\n/**\n * Возвращает используемые свойства из description\n * @todo describe returned type\n */\nexport const getPropsFromDescription = (description: TTariffPackage['description'], tariff_name_display?: string) => {\n const {\n alias,\n title,\n tariff_name,\n color,\n color_text,\n image_background,\n tariffLines,\n tariffTags,\n } = description;\n\n return {\n alias,\n title: title || tariff_name_display || tariff_name,\n sort_on_bundles: 'sort_on_bundles' in description ? description.sort_on_bundles : null,\n bgColor: color,\n colorText: color_text,\n image_background,\n image_background_webp: 'image_background_webp' in description ? description.image_background_webp : null,\n tariffLineAlias: tariffLines?.map(item => item.alias) || [],\n tariffTags: tariffTags.filter(el => typeof el === 'string'),\n };\n};\n\nexport interface IAdditionalProduct extends TProduct {\n required: 0 | 1,\n\n basePrice: number,\n firstMonthPrice: number | null,\n}\n\n/**\n * Конвертит additionalProducts -> product\n */\nexport const transformAdditionalProducts = (additionalProducts: TAdditionalProduct[]): IAdditionalProduct[] => {\n return additionalProducts.map(item => {\n const product = transformShopItem(item.shopItem);\n // Подбираем цену по периоду, если не найдена берем price\n const price = { duration: item.leasing_duration, cost: item.price || 0 };\n const priceByDuration = product.prices.find(el => el.duration === item.leasing_duration) || price;\n\n return ({\n id: item.product_id,\n category: item.product_type === EProductTypeStr.TV ? EShopCategory.Decoders : item.product_type,\n title: product.title,\n categoryTitle: product.categoryTitle,\n description: product.description,\n body: product.body,\n image: product.image,\n images: product.images,\n props: product.props,\n labels: product.labels,\n image_width: product.image_width,\n image_height: product.image_height,\n image_webp: product.image_webp,\n prices: product.prices,\n selectedPrice: priceByDuration,\n quantity: item.required ? 1 : 0, // TODO добавить тест на это изменение, критично для создания договора\n required: item.required,\n name: item.shopItem.name,\n\n basePrice: item?.base_price || 0,\n firstMonthPrice: 'first_month_price' in item && typeof item.first_month_price === 'number' ? item.first_month_price : null,\n });\n });\n};\n\nexport interface ISubscription {\n id: number,\n title: string,\n\n image_width: number,\n image_height: number,\n\n image: string,\n image_webp?: string,\n\n imageForFullBuy?: string | null,\n imageForFullBuyWebp?: string | null,\n bodyForFullBuy?: string,\n fullDescriptionList: string[],\n extendBodyForFullBuy?: string | null,\n image_mobile: string,\n sort: number,\n images?: string[] | null, // TODO - проверить наличие этого свойства в подписках.\n width?: number, // TODO - проверить наличие этого свойства в подписках.\n}\n/**\n * Возвращет подписки (tariff.offerContents)\n * isSupportsWebp - если true для свойства image подставляется картинка из image_webp иначе из image\n */\nexport const transformSubscription = (subscriptions: IOfferContent[], isSupportsWebp: boolean): ISubscription[] => {\n return subscriptions.map((subscription) => ({\n id: subscription.id,\n title: subscription.title,\n bodyForFullBuy: subscription.body_for_full_buy,\n fullDescriptionList: getListDescription(subscription.extend_body_for_full_buy ? subscription.extend_body_for_full_buy : ''),\n extendBodyForFullBuy: subscription.extend_body_for_full_buy,\n\n // Содержит картинку в формате webp если браузер поддерживает\n image: isSupportsWebp ? (subscription.image_webp || subscription.image) : subscription.image,\n image_mobile: isSupportsWebp ? (subscription.image_mobile_webp || subscription.image_mobile) : subscription.image_mobile,\n imageForFullBuy: isSupportsWebp ? (subscription.extend_image_for_full_buy_webp || subscription.extend_image_for_full_buy) : subscription.extend_image_for_full_buy,\n\n image_width: subscription.image_width,\n image_height: subscription.image_height,\n\n // TODO Свойства можно будет убрать, там где была проверка на webp\n image_webp: subscription.image_webp,\n imageForFullBuyWebp: subscription.extend_image_for_full_buy_webp,\n sort: subscription.sort,\n }));\n};\n\n/**\n * Возвращает скорость скачивания\n */\nexport const getSpeedDescription = (items: IAdvantages[]): string => {\n if (items?.length) {\n const parseString = 'скорость скачивания';\n const matches = items?.filter((item) => item?.description?.toLowerCase().includes(parseString) === true);\n if (matches?.length && matches[0]?.description) {\n return matches[0].description;\n }\n }\n\n return '';\n};\n","import { IShopItem, IShopLabel } from '~/src/api/content/shop/getShopItems';\n\ninterface IEquipmentProp2 {\n title: string,\n name?: string,\n type?: string,\n value: string,\n asIs?: 0 | 1 | number,\n}\n\n/**\n * @param cost стоимость оборудования\n * @param duration длительность рассрочки, если рассрочки нет, то 0\n * параметр duration - передается при создании договора, цена не передается.\n */\nexport type TPrice = {\n cost: number,\n duration: number,\n}\n\n/**\n * @param quantity выбранное количество\n * @param selectedPrice выбранная цена\n */\nexport interface TProduct {\n id: number,\n category: string,\n categoryTitle: string,\n title: string,\n description: string,\n body: string,\n image: string,\n images: string[],\n labels: IShopLabel[],\n props: IEquipmentProp2[],\n\n image_width?: number,\n image_height?: number,\n image_webp?: string,\n\n prices: TPrice[],\n selectedPrice: TPrice,\n\n quantity: number,\n}\n\n/**\n * Подготавливает данные из api shop/items\n * category - может быть родительской или дочерней, если дочерняя берем parentName иначе name\n */\nexport const transformShopItem = (shopItem: IShopItem): TProduct => {\n // duration = 0 - для полной стомости\n const prices = shopItem.pricesV2.map(price => ({\n cost: price.value,\n duration: price.duration ? price.duration : 0,\n }));\n\n const [firstPrice] = prices;\n\n // Если есть родительская категория заполнено parentName иначе name\n const categoryName = shopItem.category?.parentName || shopItem.category?.name;\n\n return {\n id: shopItem.global_id || shopItem.id, // Для категории product global_id пустой например для 'category/products'\n category: categoryName || '',\n categoryTitle: shopItem.category?.title || '',\n title: shopItem.title,\n description: shopItem.body_full,\n body: shopItem.body,\n props: shopItem.props?.map(({ value = '', asIs = 0, ...prop }) => ({\n ...prop,\n value: Array.isArray(value) ? value.join('') : value, // TODO, требуется замена на shopItems v2 - там только строковые значения для характеристик\n asIs,\n })) || [],\n labels: shopItem.labels || [],\n\n image: shopItem.image || '',\n images: shopItem.images,\n image_width: shopItem.image_width,\n image_height: shopItem.image_height,\n image_webp: shopItem.image_webp,\n\n prices,\n selectedPrice: firstPrice,\n\n quantity: 0,\n };\n};\n","import { IBundlePackage } from '@r1-frontend/shared/types/tariff/bundle/IBundlePackage';\nimport { IRecommendedPacket } from '@r1-frontend/shared/types/tariff/IRecommendedPacket';\nimport { IInternetPackage } from '@r1-frontend/shared/types/tariff/mono/IInternetPackage';\n\nimport {\n ISalePackageLinks,\n ISubscriptionsSummary,\n TSalePackage,\n} from '~/src/api/common-types/sale-package';\nimport { TBooleanFromApi } from '~/src/api/common-types/TBooleanFromApi';\nimport { TConnectionPrice } from '~/src/features/full-buy/store/initialState';\n\nimport {\n getPropsFromDescription,\n getSpeedDescription,\n IAdditionalProduct,\n ISubscription,\n transformAdditionalProducts,\n transformSubscription,\n} from './helpers/tariffTransformerHelpers';\n\n// TODO рефакторинг, заменить все наименования свойств на camelCase\nexport interface IFullBuyTariff {\n isMono: boolean,\n isCottage: TBooleanFromApi,\n sale_package_id: number, // @todo избавиться от использования внешнего параметра в кач-ве выбранного элемента, завязаться на внутреннюю сущность (id)\n alias: string,\n title: string,\n tariff_name: string, // @todo избавиться от префикса, избыточен. Оставить name\n bgColor: string,\n colorText: string,\n image_background: string | null,\n image_background_webp: string | null,\n tariffLineAlias: string[],\n additionalProducts: IAdditionalProduct[],\n subscriptions: ISubscription[],\n sort_on_bundles: number | null,\n\n // price of tariff\n price: number, // @todo объединить все стоимость под одним родителем `{ prices: { main, promo, connection } }`, etc...\n // promo price of tariff\n promoPrice: number,\n // promo period of tariff\n promoPeriod: number,\n\n connectionPrice: {\n isDiscounted: boolean,\n base: number,\n discounted: number,\n\n // calculated cost value by the discount value, if true then will be a discounted otherwise will a base\n // created for the createAgreement method and the comment for a request\n final: number,\n },\n\n speed: number, // @todo объединить все скорость под одним родителем `{ speeds: { download, upload } }`\n available_on_address_restrict: boolean, // Флаг доступность тарифа на адресе с максимальной скоростью в 100 Мб/сек\n\n channelCount: number, // @todo объединить все количественные значения каналов под одним родителем `{ channels: { count, hdCount, sdCount } }`, etc...\n hdCount: number,\n sdCount: number,\n\n freePackets: number,\n downloadSpeed: string,\n recommendedPackets: IRecommendedPacket[],\n\n salePackageLinks: ISalePackageLinks[], // TODO доработать на беке?, возвращать данные по подпискам для текущего тарифа\n subscriptionsSummary: ISubscriptionsSummary[], // TODO доработать на беке, указать количество требуемых подписок для текущего тарифа, а не по всем\n tariffTags: string[],\n salePackageConnectionPrice: TConnectionPrice,\n}\n\n/**\n * Общие свойства для bundle и mono\n */\nexport const transformTariff = (tariffPackage: IBundlePackage | IInternetPackage, isSupportsWebp: boolean) => {\n const tariff_name_display = 'tariff_name_display' in tariffPackage ? tariffPackage.tariff_name_display : undefined;\n const description = getPropsFromDescription(tariffPackage.description, tariff_name_display);\n\n const {\n discountedConnectionPrice = 0,\n baseConnectionPrice = 0,\n } = tariffPackage.salePackageConnectionPrice || {};\n\n const hasDiscount = discountedConnectionPrice !== baseConnectionPrice && discountedConnectionPrice > 0;\n\n return {\n sale_package_id: tariffPackage.sale_package_id,\n tariff_name: tariffPackage.tariff_name,\n\n additionalProducts: transformAdditionalProducts(tariffPackage.additionalProducts),\n // If we have sale packages (also known as subscriptions or VASes), we will not need to show an offer contents.\n subscriptions: tariffPackage?.salePackageLinks?.length > 0 ? [] : transformSubscription(tariffPackage.offerContents, isSupportsWebp),\n\n downloadSpeed: getSpeedDescription(tariffPackage.advantages),\n\n salePackageLinks: tariffPackage.salePackageLinks,\n subscriptionsSummary: tariffPackage.subscriptionsSummary,\n\n connectionPrice: {\n isDiscounted: hasDiscount,\n base: baseConnectionPrice,\n discounted: discountedConnectionPrice,\n final: hasDiscount ? discountedConnectionPrice : baseConnectionPrice,\n },\n\n salePackageConnectionPrice: {\n base: tariffPackage.salePackageConnectionPrice?.baseConnectionPrice,\n withDiscount: tariffPackage.salePackageConnectionPrice?.discountedConnectionPrice,\n },\n\n // Флаг доступность тарифа на адресе с максимальной скоростью в 100 Мб/сек\n available_on_address_restrict: 'available_on_address_restrict' in tariffPackage\n ? Boolean(tariffPackage.available_on_address_restrict)\n : 'available_on_address_restrict' in tariffPackage.description\n ? Boolean(tariffPackage.description.available_on_address_restrict)\n : false,\n\n ...description,\n };\n};\n\n\nexport const transformBundleTariff = (tariffPackage: IBundlePackage, isSupportsWebp: boolean): IFullBuyTariff => {\n const commonProps = transformTariff(tariffPackage, isSupportsWebp);\n return {\n ...commonProps,\n\n isMono: false,\n isCottage: tariffPackage.salePackage2in1.is_cottage,\n\n speed: tariffPackage.speed_int,\n\n price: tariffPackage.salePackage2in1.price_final,\n promoPrice: tariffPackage.salePackage2in1?.promo_price_final,\n promoPeriod: tariffPackage.salePackage2in1?.promo_duration_final,\n recommendedPackets: tariffPackage.salePackage2in1.recommendedPackets,\n channelCount: tariffPackage.channelCount,\n hdCount: tariffPackage.salePackage2in1.hd_count,\n sdCount: tariffPackage.salePackage2in1.sd_count,\n freePackets: tariffPackage.salePackage2in1.free_packets,\n };\n};\n\nexport const transformInternetTariff = (tariffPackage: IInternetPackage, isSupportsWebp: boolean): IFullBuyTariff => {\n const commonProps = transformTariff(tariffPackage, isSupportsWebp);\n\n return {\n ...commonProps,\n\n isMono: true,\n isCottage: tariffPackage.is_cottage,\n\n speed: tariffPackage.speed,\n\n price: tariffPackage.price_final,\n promoPrice: tariffPackage.promo_price_final,\n promoPeriod: tariffPackage.promo_duration_final,\n recommendedPackets: tariffPackage.recommendedPackets,\n channelCount: 0,\n hdCount: 0,\n sdCount: 0,\n freePackets: tariffPackage.free_packets,\n };\n};\n\n/**\n * Возвращает только используемые в ПП свойства, сглаживает структуру тарифа\n * Трансформер должен вызываться на стороне браузера (не SSR), так как проверяется поддержка webp\n */\nexport const tariffTransformer = (tariffPackage: TSalePackage, isSupportsWebp: boolean): IFullBuyTariff => {\n return 'salePackage2in1' in tariffPackage\n ? transformBundleTariff(tariffPackage, isSupportsWebp)\n : transformInternetTariff(tariffPackage, isSupportsWebp);\n};\n","import { ActionTypes } from './index';\n\ntype TAnyObject = Record;\n\nexport const showPopup = (popupId: string, data?: TAnyObject) => ({\n type: ActionTypes.SHOW_POPUP,\n payload: {\n popupId,\n data: data,\n },\n});\n\nexport const hidePopup = (popupId: string) => ({\n type: ActionTypes.HIDE_POPUP,\n payload: {\n popupId,\n },\n});\n\nexport const resetPopup = () => ({\n type: ActionTypes.RESET_POPUP,\n payload: {},\n});\n\nexport const setPopupData = (popupId: string, data: TAnyObject) => ({\n type: ActionTypes.SET_POPUP_DATA,\n payload: {\n popupId,\n data,\n },\n});\n","import { TState } from '~/src/store';\n\nimport { IPopupData } from './index';\n\nexport const getPopupData = (state: TState, popupId: string): IPopupData => {\n const popup = state.popups[popupId];\n\n return popup || {};\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 { EContactDetailTypes, TConfirmPhone } from '../index';\nimport { EVerificationStatus } from '../initialState';\n\nexport const setConfirmedPhone = (phone: string): TConfirmPhone => ({\n type: EContactDetailTypes.SET_CONFIRMED_PHONE,\n payload: {\n confirmedPhone: {\n phone,\n status: EVerificationStatus.verified,\n },\n },\n});\n","import { EVerificationStatus, IContactDetailsState } from '../initialState';\n\nexport const selectIsPhoneConfirmed = (state: IContactDetailsState): boolean => {\n const {\n contactDetails: {\n editedPhone,\n confirmedPhone,\n },\n } = state;\n\n if (!editedPhone) {\n return false;\n }\n\n return confirmedPhone.status === EVerificationStatus.verified && editedPhone === confirmedPhone.phone;\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';\n\nexport const PopupCloseButton = styled.button`\n position: absolute;\n right: 14px;\n top: 14px;\n padding: 0;\n border: 0;\n background: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n\n &:before {\n display: block;\n content: \"\";\n width: 12px;\n height: 12px;\n background: url(\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZ\n pZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Z\n nIj4KPHBhdGggZD0iTTEzIDFDNy41MzI2NiA2LjQ2NzM0IDEgMTMgMSAxM00xIDFMMTMgMTMiIHN0cm9rZT0iIzV\n DNUU2MiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9\n pbj0icm91bmQiLz4KPC9zdmc+Cg==\") no-repeat;\n background-size: contain;\n }\n`;\n\nexport const Wrapper = styled.div<{ isShown: boolean }>`\n display: none;\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n display: block;\n }\n\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n\n z-index: ${props => props.isShown ? 201 : 199} ;\n\n ${PopupCloseButton} {\n height: 40px;\n width: 40px;\n background-color: ${COLORS.ButtonSecondary};\n border-radius: 40px;\n top: 32px;\n right: 16px;\n cursor: pointer;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n height: 28px;\n width: 28px;\n }\n }\n`;\n\nexport const Overlay = styled.div`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n overflow: hidden;\n background-color: rgba(0, 0, 0, 0.5);\n cursor: pointer;\n`;\n\nconst Body = styled.div`\n position: absolute;\n bottom: 0;\n width: 100%;\n background-color: ${COLORS.BgSurface};\n border-radius: 32px 32px 0 0;\n align-items: center;\n align-content: center;\n justify-content: space-between;\n z-index: 2;\n`;\n\nexport const Strip = styled.div`\n position: absolute;\n left: calc(50% - 20px);\n top: 10px;\n cursor: pointer;\n\n width: 40px;\n height: 4px;\n background: ${COLORS.Outline_Light};\n border-radius: 12px;\n`;\n\nexport const ActionButton = styled.div`\n cursor: pointer;\n\n padding: 0;\n height: 28px;\n width: 28px;\n border-radius: 50%;\n background-color: ${COLORS.ButtonSecondary};\n \n position: absolute;\n top: 16px;\n right: 16px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const FullBody = styled(Body)`\n padding: 18px 16px 16px 16px;\n \n box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1);\n border: 1px solid ${COLORS.Outline_Light};\n`;\n\nexport const ShortBody = styled(Body)`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n flex-wrap: nowrap;\n\n // 52px for right indent is summarize of open button width (28px) / 8px gap from button / 16px default indent from right side\n padding: 16px 52px 16px 16px;\n\n box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1);\n border: 1px solid ${COLORS.Outline_Light};\n`;\n","import React, { ReactNode, ReactPortal, RefObject, SyntheticEvent, useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { SingleArrowUp } from '@r1-frontend/ui-react/components/svg/arrows';\nimport { Close } from '@r1-frontend/ui-react/components/svg/main';\nimport { createRootElement } from '@r1-frontend/shared/helpers/dom';\n\nimport * as S from './styled';\n\nexport type BottomStickyBlockProps = {\n children?: ReactNode,\n InnerComponent: () => JSX.Element,\n OuterComponent: () => JSX.Element,\n parent?: RefObject,\n onOpen?: () => void,\n onClose?: () => void,\n}\n\nconst BottomStickyBlock = (\n {\n InnerComponent,\n OuterComponent,\n parent,\n onOpen = () => true,\n onClose = () => true,\n }: BottomStickyBlockProps,\n): ReactPortal | null => {\n const [isShown, setIsShown] = useState(false);\n const [popupRoot, setPopupRoot] = useState(null);\n\n useEffect(() => {\n const root = parent ? parent.current : createRootElement('bottom-sticky');\n setPopupRoot(root);\n\n return () => {\n popupRoot && !parent && popupRoot.remove();\n };\n }, []);\n\n const onCloseHandler = (e: SyntheticEvent) => {\n e.stopPropagation();\n setIsShown(false);\n onClose();\n };\n\n const onOpenHandler = (e: SyntheticEvent) => {\n e.stopPropagation();\n setIsShown(true);\n onOpen();\n };\n\n return popupRoot\n ? createPortal(\n \n {isShown\n ? <>\n \n \n \n \n \n \n \n : \n \n \n \n \n }\n ,\n popupRoot,\n )\n : null;\n};\n\nBottomStickyBlock.displayName = 'BottomStickyBlock';\n\nexport default BottomStickyBlock;\n","import styled from 'styled-components';\n\nimport threeDots from '@r1-frontend/ui-react/assets/img/icons/three-dots.svg';\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 KebabMenu = styled.div`\n position: relative;\n justify-content: center;\n align-items: center;\n width: 20px;\n height: 20px;\n background-image: url(${threeDots});\n background-repeat: no-repeat;\n background-position: center;\n cursor: pointer;\n`;\n\nexport const MenuPopup = styled.div`\n position: absolute;\n top: 23px;\n right: -8px;\n min-width: 157px;\n border-radius: ${BorderRadius.componentRadius};\n overflow: hidden;\n background-color: ${COLORS.BgMain};\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);\n z-index: 1;\n`;\n\nexport const MenuRow = styled.div`\n width: 100%;\n padding: 12px 24px;\n ${FONTS.XS};\n white-space: nowrap;\n cursor: pointer;\n user-select: none;\n\n &:hover {\n background-color: ${COLORS.GRAY_LIGHT};\n }\n`;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport * as ST from './styled';\n\nexport interface IKebabItem {\n value: string,\n label: string,\n}\n\nexport interface KebabMenuProps {\n menuItems: IKebabItem[],\n onSelectMenu: (item: IKebabItem) => void,\n onClickMenu?: (menuStatus: boolean) => void,\n className?: string,\n}\n\n/**\n * Выпадающее меню с троеточием\n * @param menuItems пункты меню\n * @param onSelectMenu при выборе пункта меню\n * @param onClickMenu при раскрытии меню\n * @param className\n */\nexport const KebabMenu = ({\n menuItems,\n onSelectMenu,\n onClickMenu,\n className,\n}: KebabMenuProps): JSX.Element => {\n const [isOpen, setIsOpen] = useState(false);\n const menuRef = useRef(null);\n\n const onSelect = useCallback((elem: React.MouseEvent, item: IKebabItem) => {\n elem.stopPropagation();\n\n if (typeof onSelectMenu === 'function') {\n onSelectMenu(item);\n }\n\n setIsOpen(false);\n }, [onSelectMenu]);\n\n const onClick = useCallback(() => {\n setIsOpen(!isOpen);\n onClickMenu && onClickMenu(!isOpen);\n }, [isOpen, onClickMenu]);\n\n const onClickOutside = useCallback((elem) => {\n const dataName = elem.target?.getAttribute('data-name');\n\n const isNotMenuRow = !(dataName && (dataName === 'menu-row'));\n\n if (isNotMenuRow && (elem.target !== menuRef?.current)) {\n setIsOpen(false);\n }\n }, []);\n\n useEffect(() => {\n if (isOpen) {\n document.addEventListener('pointerdown', onClickOutside, true);\n }\n return () => document.removeEventListener('pointerdown', onClickOutside, true);\n }, [onClickOutside, isOpen]);\n\n return (\n \n {isOpen &&\n \n {menuItems.map((item, index) => {\n return (\n ) => onSelect(elem, item)}\n >\n {item.label}\n \n );\n })}\n \n }\n \n );\n};\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst CallCalling = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return (\n <>\n \n \n \n \n \n \n );\n};\n\nexport default createSvg(\n CallCalling,\n 'call-calling',\n);\n","import React from 'react';\n\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { Cost } from '@r1-frontend/ui-react/experimental/purchase/cost';\nimport { TOrderSummaryItem } from '@r1-frontend/ui-react/organisms/OrderSummary/types';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport * as S from '../styled';\n\nconst Item = (\n {\n title,\n description,\n cost = '',\n previousCost,\n isMonthly,\n Component = Paragraph4,\n color = COLORS.TextInfo,\n }: TOrderSummaryItem,\n): JSX.Element => {\n return \n \n {title}\n \n {cost}\n \n \n {description ? {description} : null}\n ;\n};\n\nexport default Item;\n","import React from 'react';\n\nimport Item from '@r1-frontend/ui-react/organisms/OrderSummary/Item';\nimport { TOrderSummaryComponent, TOrderSummaryItem } from '@r1-frontend/ui-react/organisms/OrderSummary/types';\n\nimport * as S from '../styled';\n\ninterface IItems {\n items: (TOrderSummaryItem | TOrderSummaryComponent)[],\n}\n\nexport const OrderLines = ({ items }: IItems) => {\n return \n {items.map((item, idx) => {\n if ('props' in item && 'Component' in item) {\n const Component = item.Component;\n\n return ;\n } else {\n return ;\n }\n })}\n ;\n};\n","import React from 'react';\n\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport Item from '@r1-frontend/ui-react/organisms/OrderSummary/Item';\nimport { OrderLines } from '@r1-frontend/ui-react/organisms/OrderSummary/OrderLines';\nimport { TItemTypes } from '@r1-frontend/ui-react/organisms/OrderSummary/types';\n\nimport * as S from './styled';\n\nexport type TOrderSummary = {\n title?: string,\n items: TItemTypes[],\n gapSize?: 'small' | 'large',\n};\n\nconst OrderSummary = (\n {\n title,\n items,\n gapSize = 'large',\n ...props\n }: TOrderSummary,\n): JSX.Element => {\n return (\n \n {title ?

{title}

: null}\n\n {items.map((itemList, idx) => {\n if (itemList === 'separator') {\n return ;\n }\n\n if ((typeof itemList === 'object' || typeof itemList === 'function') && (itemList !== null) && 'total' in itemList) {\n const { title: totalTitle = 'Итого:', ...item } = itemList.total;\n return ;\n }\n\n if (Array.isArray(itemList) && itemList.length > 0) {\n return ;\n }\n\n return null;\n })}\n
\n );\n};\n\nexport default OrderSummary;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { H3, H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const Section = styled.section`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`;\n\nexport const Wrapper = styled.div<{ $gapSize: 'small' | 'large' }>`\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: 16px;\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n gap: 24px;\n }\n\n ${Section} {\n ${({ $gapSize }) => $gapSize === 'small' ? 'gap: 4px;' : 'gap: 8px;'}\n }\n`;\n\nexport const Item = styled.div`\n display: flex;\n width: 100%;\n justify-content: space-between;\n align-items: center;\n\n & * {\n :nth-child(3) {\n flex-basis: 100%;\n align-self: flex-start;\n }\n }\n\n ${H4}, ${H3} {\n width: auto;\n margin: 0;\n }\n`;\n\nexport const ItemTop = styled.div`\n display: flex;\n flex-wrap: nowrap;\n width: 100%;\n justify-content: space-between;\n row-gap: 5px;\n`;\n\nexport const Separator = styled.hr`\n height: 1px;\n background-color: ${COLORS.Control};\n width: 100%;\n margin: 0;\n border-width: 0;\n`;\n\nexport const Indentation2SatisfyTheDesignIdea = styled.div`\n display: block;\n height: 12px;\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n height: 16px;\n }\n`;\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIiBmaWxsPSIjMTgxQjIxIi8+CjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIiIGZpbGw9IiMxODFCMjEiLz4KPGNpcmNsZSBjeD0iMTkiIGN5PSIxMiIgcj0iMiIgZmlsbD0iIzE4MUIyMSIvPgo8L3N2Zz4K\""],"names":["EProductTypeStr","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","DoubleColumnLayout","WideContainer","wideBreakpoints","periodText","getPluralize","monthPluralize","period","startPrice","finalPrice","isOpen","changePopupState","handleClosePopup","ControlElement","type","Icon","InfoCircleFlip","onClick","Cost","isMonthly","DefaultPopup","onClose","IndentContainer","$desktop","$mobile","TextWrapper","H3","Paragraph4","$color","COLORS","ButtonGroup","Button","bType","size","getListDescription","description","replace","split","filter","item","transformAdditionalProducts","additionalProducts","map","product","shopItem","prices","pricesV2","price","cost","value","duration","firstPrice","categoryName","category","parentName","name","id","global_id","categoryTitle","title","body_full","body","asIs","prop","Array","isArray","join","labels","image","images","image_width","image_height","image_webp","selectedPrice","quantity","transformShopItem","leasing_duration","priceByDuration","find","el","product_id","product_type","EShopCategory","required","basePrice","base_price","firstMonthPrice","first_month_price","transformSubscription","subscriptions","isSupportsWebp","subscription","bodyForFullBuy","body_for_full_buy","fullDescriptionList","extend_body_for_full_buy","extendBodyForFullBuy","image_mobile","image_mobile_webp","imageForFullBuy","extend_image_for_full_buy_webp","extend_image_for_full_buy","imageForFullBuyWebp","sort","getSpeedDescription","items","matches","toLowerCase","includes","transformTariff","tariffPackage","tariff_name_display","undefined","alias","tariff_name","color","color_text","image_background","tariffLines","tariffTags","sort_on_bundles","bgColor","colorText","image_background_webp","tariffLineAlias","getPropsFromDescription","salePackageConnectionPrice","discountedConnectionPrice","baseConnectionPrice","hasDiscount","sale_package_id","salePackageLinks","offerContents","downloadSpeed","advantages","subscriptionsSummary","connectionPrice","isDiscounted","base","discounted","final","withDiscount","available_on_address_restrict","Boolean","transformInternetTariff","commonProps","isMono","isCottage","is_cottage","speed","price_final","promoPrice","promo_price_final","promoPeriod","promo_duration_final","recommendedPackets","channelCount","hdCount","sdCount","freePackets","free_packets","tariffTransformer","salePackage2in1","speed_int","hd_count","sd_count","transformBundleTariff","showPopup","popupId","data","ActionTypes","payload","hidePopup","resetPopup","getPopupData","state","popups","fillFioAction","fio","EContactDetailTypes","editedFio","fillPhoneAction","phone","editedPhone","setConfirmedPhone","confirmedPhone","status","EVerificationStatus","selectIsPhoneConfirmed","contactDetails","PopupCloseButton","Wrapper","isShown","Overlay","Body","Strip","ActionButton","FullBody","ShortBody","BottomStickyBlock","InnerComponent","OuterComponent","parent","onOpen","setIsShown","popupRoot","setPopupRoot","root","current","createRootElement","remove","onCloseHandler","e","stopPropagation","onOpenHandler","createPortal","S","data-test","Close","SingleArrowUp","displayName","KebabMenu","threeDots","MenuPopup","BorderRadius","MenuRow","FONTS","menuItems","onSelectMenu","onClickMenu","className","setIsOpen","menuRef","useRef","onSelect","useCallback","elem","onClickOutside","dataName","target","getAttribute","document","addEventListener","removeEventListener","ST","ref","data-name","index","data-id","label","createSvg","strokeWidth","g","path","d","strokeMiterlimit","strokeLinecap","strokeLinejoin","previousCost","Component","as","$withIndent","$inline","OrderLines","idx","Item","gapSize","$gapSize","itemList","total","totalTitle","Section","H4","ItemTop","Separator","Indentation2SatisfyTheDesignIdea","module","exports"],"sourceRoot":""}