{"version":3,"file":"static/chunks/9208-b92e1224ecdf6454.js","mappings":"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","sources":["webpack://_N_E/./src/features/specialOffersContainer/components/LabelsList.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/LkPromotionalPopup/components/Benefit/styled.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/LkPromotionalPopup/components/Benefit/index.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/LkPromotionalPopup/components/Channels/styled.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/LkPromotionalPopup/components/Channels/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/main/Speedometer.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/LkPromotionalPopup/components/Features/styled.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/LkPromotionalPopup/components/Features/index.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/LkPromotionalPopup/styled.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/LkPromotionalPopup/index.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/SpecOfferDetails/components/Advantages/Advantage/styled.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/SpecOfferDetails/components/Advantages/Advantage/index.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/SpecOfferDetails/components/Advantages/getWidthMark.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/SpecOfferDetails/components/Advantages/styled.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/SpecOfferDetails/components/Advantages/index.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/SpecOfferDetails/components/Benefits.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/SpecOfferDetails/components/Characteristics/styled.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/SpecOfferDetails/components/Characteristics/index.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/SpecOfferDetails/components/HeaderImage.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/SpecOfferDetails/components/PromotionTerms.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/SpecOfferDetails/styled.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/SpecOfferDetails/index.tsx","webpack://_N_E/./src/features/specialOffersContainer/hooks/useCallbackMap.ts","webpack://_N_E/./src/features/specialOffersContainer/hooks/useConnectSpeedBonus.ts","webpack://_N_E/./src/features/specialOffersContainer/hooks/useConnectOffer.ts","webpack://_N_E/../../packages/ui-react/src/components/accordions/Accordion/Body.tsx","webpack://_N_E/../../packages/ui-react/src/components/accordions/Accordion/Header.tsx","webpack://_N_E/../../packages/ui-react/src/components/accordions/Accordion/Wrapper.tsx","webpack://_N_E/../../packages/ui-react/src/components/accordions/Accordion/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/controls/radioGroup/index.js","webpack://_N_E/../../packages/ui-react/src/components/svg/devices/Monitor.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/time/Clock.tsx","webpack://_N_E/../../packages/ui-react/src/deprecated/controls/radioButton/index.js"],"sourcesContent":["import { Children } from 'react';\n\nimport { ISpecOfferLabel } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nimport { Label } from '@r1-frontend/ui-react/components/label';\nimport { Clock } from '@r1-frontend/ui-react/components/svg/time';\nimport { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\n\ninterface IProps {\n labels: ISpecOfferLabel[],\n}\n\nconst LabelsList = ({ labels }: IProps): JSX.Element => {\n return (\n \n {Children.toArray(labels.map(({ text, textColor, color: bgColor, type }) => (\n \n )))}\n \n );\n};\n\nexport default LabelsList;\n","import styled from 'styled-components';\n\nimport { ISpecOfferBenefit } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\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\nimport { breakPoints } from '~/src/constants/breakpoints';\n\nexport const BenefitWrapper = styled.div`\n display: flex;\n flex-wrap: nowrap;\n background: ${COLORS.BgSubstrate};\n border-radius: ${BorderRadius.componentRadius};\n padding: 16px;\n`;\n\nexport const BenefitImageContainer = styled.div>`\n width: 68px;\n height: 48px;\n background: ${({ image, imageLabel }) => (!image && imageLabel)\n ? 'transparent'\n : '#F5F5F5'\n };\n \n &,\n & > img {\n border-radius: 12px;\n width: 68px;\n height: 48px;\n }\n\n & > img {\n object-fit: ${({ image, imageLabel }) => (!image && imageLabel)\n ? 'contain'\n : 'cover'\n };\n }\n\n @media (max-width: ${breakPoints.sMobile}) {\n &,\n & > img {\n width: 48px;\n height: 34px;\n }\n }\n`;\n\nexport const BenefitInfoContainer = styled.div`\n display: flex;\n flex-direction: column;\n margin-left: 16px;\n`;\n\nexport const BenefitInfoTitle = styled.label`\n ${FONTS.MediumS}\n`;\n\nexport const BenefitInfoDescription = styled.div`\n ${FONTS.MediumS}\n color: ${COLORS.TextHint};\n`;\n","import React from 'react';\nimport { LazyLoadImage } from 'react-lazy-load-image-component';\n\nimport { ISpecOfferBenefit } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\n\nimport * as ST from './styled';\n\nexport const Benefit = ({\n title,\n image,\n imageLabel,\n description,\n}: Omit) => {\n return (\n \n \n \n \n \n \n {title}\n \n {\n description &&\n \n }\n \n \n );\n};\n","import styled from 'styled-components';\n\nimport { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const ChannelsWrapper = styled.span`\n margin-top: 24px;\n display: inline-flex;\n white-space: pre;\n`;\n\nexport const ChannelsLink = styled(H4)`\n color: ${COLORS.Link};\n margin-left: 6px;\n cursor: pointer;\n`;\n","import React, { useMemo, useState } from 'react';\n\nimport { ISpecOfferChannel } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nimport { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { pluralize } from '@r1-frontend/shared/helpers/pluralize';\nimport { channelPluralize } from '@r1-frontend/shared/helpers/pluralize/predifined';\n\nimport ChannelListPopup from '~/src/components/Bundles/ChannelListPopup';\n\nimport * as ST from './styled';\n\ninterface IOfferChannelsProps {\n channels?: ISpecOfferChannel[],\n}\n\nexport const OfferChannels = ({ channels }: IOfferChannelsProps) => {\n const [isChannelsOpen, setIsChannelsOpen] = useState(false);\n const length = channels?.length || 0;\n\n const offerChannelIds = useMemo(\n () => channels ? (channels).map(({ id }) => id).flat() : [],\n [channels],\n );\n\n const link = useMemo(\n () => `${length} ${pluralize(length, channelPluralize)}`,\n [length],\n );\n\n if (!length) {\n return null;\n }\n\n return (\n <>\n \n В пакет входит
\n setIsChannelsOpen(true)}>\n {link}\n \n \n\n setIsChannelsOpen(false)}\n />\n >\n );\n};\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst Speedometer = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return (\n \n \n \n \n \n );\n};\n\nexport default createSvg(\n Speedometer,\n 'speedometer',\n);\n","import styled from 'styled-components';\n\nexport const FeaturesContainer = styled.div`\n margin-top: 24px;\n flex: 0 1 auto;\n display: flex;\n flex-wrap: wrap;\n row-gap: 32px;\n column-gap: 28px;\n width: 100%;\n height: 100%;\n z-index: 1;\n`;\n\nexport const FeatureRow = styled.div`\n display: flex;\n gap: 28px;\n`;\n\nexport const FeatureContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n`;\n\nexport const FeatureIcon = styled.i`\n margin-right: 8px;\n`;\n","import React, { useMemo } from 'react';\nimport { v4 as createGuid } from 'uuid';\n\nimport { ISpecOfferFeature } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nimport { Monitor } from '@r1-frontend/ui-react/components/svg/devices';\nimport { Speedometer } from '@r1-frontend/ui-react/components/svg/main';\nimport { H5 } from '@r1-frontend/ui-react/components/typography/heading';\n\nimport * as ST from './styled';\n\ninterface IOfferFeaturesProps {\n features: ISpecOfferFeature[],\n}\n\nexport const OfferFeatures = ({ features }: IOfferFeaturesProps) => {\n const pairs = useMemo(() => {\n return features.reduce((acc, val) => {\n if (acc[acc.length - 1] && acc[acc.length - 1].length === 1) {\n return [...acc.slice(0, -1), [acc[acc.length - 1][0], val]];\n }\n return [...acc, [val]];\n }, []);\n }, [features]);\n\n if (!features.length && !pairs.length) {\n return null;\n }\n\n return (\n \n {pairs.map((pair) => (\n \n {pair\n .map(({ type, text }) => {\n const isSpeed = type === 'speed';\n const Icon = isSpeed ? Speedometer : Monitor;\n const key = createGuid();\n\n return (\n \n \n \n \n {text}
\n \n );\n })\n .flat()}\n \n ))}\n \n );\n};\n","import { LazyLoadImage } from 'react-lazy-load-image-component';\nimport styled, { css } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\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 ChildOffersWrapper = styled.div`\n background: ${COLORS.BgSubstrate};\n padding: 16px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n padding-right: 20%;\n margin-bottom: 12px;\n\n & > div > div {\n padding: 0 !important;\n\n label {\n ${FONTS.MediumXS}\n\n input:checked ~ span {\n border-color: ${COLORS.ButtonPrimary} !important;\n background-color: transparent !important;\n\n &:after {\n width: 12px !important;\n height: 12px !important;\n top: 3px !important;\n left: 3px !important;\n background-color: ${COLORS.ButtonPrimary} !important;\n }\n }\n\n span {\n height: 18px;\n width: 18px;\n border-width: 2px;\n border-color: ${COLORS.Outline_Dark}\n }\n }\n }\n`;\n\nexport const PopupSectionTitle = styled.h5<{ inline?: boolean }>`\n ${FONTS.H5}\n ${({ inline }) => !inline && css`\n margin-bottom: 12px;\n `}\n`;\n\nexport const BenefitsContainer = styled.div`\n margin-top: 24px;\n display: flex;\n flex-direction: column;\n width: 100%;\n\n & > div {\n &:not(:last-child) {\n margin-bottom: 4px;\n }\n }\n`;\n\nexport const BodyCard = styled.div`\n padding: 24px 32px 32px 32px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: space-between;\n overflow: hidden;\n z-index: 1;\n`;\n\nexport const ImageBackground = styled.div`\n background: #d6d6d6;\n width: 100%;\n height: auto;\n border-radius: ${BorderRadius.OuterBlockRadius}\n ${BorderRadius.OuterBlockRadius} 0px 0px;\n position: relative;\n`;\n\nexport const HeaderImage = styled(LazyLoadImage)`\n width: 100%;\n object-fit: cover;\n`;\n\nexport const BodyCardBadgesContainer = styled.div`\n width: 0;\n flex-wrap: nowrap;\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n gap: 8px;\n margin-bottom: 4px;\n ${FONTS.XXS};\n text-transform: uppercase;\n`;\n\nexport const ImageCardBadgesContainer = styled(BodyCardBadgesContainer)`\n position: absolute;\n bottom: 0;\n margin-bottom: 24px;\n margin-left: 32px;\n`;\n\nexport const Title = styled.div`\n display: -webkit-box;\n color: ${COLORS.TextPrimary};\n ${FONTS.H3};\n text-transform: none;\n font-weight: bold;\n margin-bottom: 12px;\n`;\n\nexport const Description = styled(Title)`\n color: ${COLORS.TextInfo};\n ${FONTS.S};\n font-weight: normal;\n margin-bottom: 6px;\n width: 100%;\n display: flex;\n flex-direction: column;\n`;\n\nexport const FeaturesContainer = styled.div`\n margin-top: 24px;\n flex: 0 1 auto;\n display: flex;\n flex-wrap: wrap;\n row-gap: 32px;\n column-gap: 28px;\n width: 100%;\n height: 100%;\n z-index: 1;\n`;\n\nexport const AccordionTheme = {\n background: COLORS.BgSubstrate,\n border: COLORS.transparent,\n borderWidth: 0,\n radius: BorderRadius.InnerBlockRadius,\n padding: '6px 24px',\n mobilePadding: '6px 24px',\n\n desktopFont: FONTS.MediumS,\n\n borderIcon: COLORS.BgSubstrate,\n borderIconIsOpen: COLORS.BgSubstrate,\n backgroundIcon: COLORS.BgSubstrate,\n backgroundIconIsOpen: COLORS.BgSubstrate,\n colorArrow: COLORS.Control,\n colorArrowIsOpen: COLORS.Control,\n};\n\nexport const AccordionWrapper = styled.div`\n margin-top: 28px;\n`;\n\nexport const TermsLink = styled.a`\n display: -webkit-box;\n ${FONTS.MediumS};\n text-transform: none;\n font-weight: normal;\n overflow-wrap: anywhere;\n overflow: hidden;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n color: ${COLORS.Link};\n max-height: 4.6em;\n`;\n\nexport const FeatureRow = styled.div`\n display: flex;\n gap: 28px;\n`;\n\nexport const FeatureContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n`;\n\nexport const FeatureIcon = styled.i`\n margin-right: 8px;\n`;\n\nexport const FeatureLabel = styled(Description)`\n color: ${COLORS.TextPrimary};\n ${FONTS.H5};\n font-size: 14px;\n line-height: 20px;\n margin-bottom: 0;\n`;\n\nexport const Price = styled(Title)`\n ${FONTS.H2};\n margin-bottom: 0;\n font-size: 24px;\n line-height: 28px;\n`;\n\nexport const OldPrice = styled(Title)`\n margin-left: 8px;\n ${FONTS.M};\n margin-bottom: 0;\n color: ${COLORS.TextHint};\n text-decoration: line-through;\n line-height: 24px;\n`;\n\nexport const AllPricesContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n`;\n\nexport const PricesContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nexport const BottomContainer = styled.div<{ childLength: number }>`\n flex: 1;\n margin-top: 24px;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: ${({ childLength }) =>\n childLength > 1 ? 'space-between' : 'flex-end'};\n width: 100%;\n gap: 12px;\n`;\n\nexport const Popup = styled(DefaultPopup)`\n ${wideBreakpoints.mobile} {\n top: 100px;\n }\n\n min-height: auto;\n`;\n","/* eslint-disable complexity */\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport {\n EOfferState,\n ISpecOfferBenefit,\n ISpecOfferCost,\n ISpecOfferFeature,\n TPromoChildOffer,\n} from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport RadioGroup from '@r1-frontend/ui-react/components/controls/radioGroup';\nimport { Label } from '@r1-frontend/ui-react/components/label';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport Accordion from '@r1-frontend/ui-react/deprecated/Accordion';\nimport { IndentContainer, ListContainer, NonStaticContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { RubleSymbol } from '@r1-frontend/ui-react/experimental/purchase/cost/Cost/RubleSymbol';\nimport { AdvertisingLabelWithTooltip } from '@r1-frontend/ui-react/organisms/AdvertisingLabelWithTooltip';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport { specialOfferAnalytics } from '~/src/features/specialOffersContainer/analytics';\nimport LabelsList from '~/src/features/specialOffersContainer/components/LabelsList';\nimport { DefaultCallback } from '~/src/features/specialOffersContainer/constants';\nimport { useConnectOffer } from '~/src/features/specialOffersContainer/hooks';\nimport { IProps } from '~/src/features/specialOffersContainer/types';\n\nimport { Benefit } from './components/Benefit';\nimport { OfferChannels } from './components/Channels';\nimport { OfferFeatures } from './components/Features';\n\nimport * as ST from './styled';\n\nexport const LkPromotionalPopup = ({\n offer,\n isPopupOpen,\n callbackMap,\n onClose,\n}: IProps) => {\n const {\n title = '',\n images = [],\n navigation,\n childOffers,\n colorLabels,\n channels,\n advertising,\n state,\n\n /**\n * Нужно для биллинга, следит за состоянием обновления\n * вызванного ~/store/actions/specOffers/index -> viewOffer\n */\n isLoading,\n isConnecting,\n } = offer || {};\n const [detailImage] = images;\n\n const { isLocalLoading, activateButtonText, connectOffer } = useConnectOffer(callbackMap, offer);\n\n const [isTermsOpened, setIsTermsOpened] = useState(false);\n const [selectedChildOfferId, setSelectedChildOfferId] = useState();\n\n const {\n description,\n features = [],\n terms,\n cost,\n benefits,\n } = useMemo(\n () => childOffers?.find(childOffer => childOffer.id === selectedChildOfferId) || offer || ({\n description: '',\n features: [] as ISpecOfferFeature[],\n terms: null,\n cost: null,\n benefits: [] as ISpecOfferBenefit[],\n }),\n [selectedChildOfferId, offer, childOffers],\n );\n\n const isShowButton = useMemo(\n () => navigation?.type !== 'promoPacket' || state !== EOfferState.CONNECTED,\n [navigation?.type, state],\n );\n\n useEffect(() => {\n const [first] = childOffers || [];\n first && setSelectedChildOfferId(first.id);\n }, [childOffers]);\n\n const getCost = useCallback(\n (value: keyof Pick) => cost\n ? `${cost[value]} ${RubleSymbol}${cost.type === 'month' ? '/мес' : ''}`\n : null,\n [cost],\n );\n\n const toggleDetails = () => {\n if (!isTermsOpened && offer) {\n specialOfferAnalytics.showOfferDetails(offer);\n }\n\n setIsTermsOpened(prev => !prev);\n };\n\n return \n \n {advertising && (\n \n e.stopPropagation()}\n companyName={advertising.companyName}\n erid={advertising.erid}\n tooltip={{\n position: 'top-right',\n zIndex: 1024,\n }}\n />\n \n )}\n \n \n \n {colorLabels && (\n \n )}\n \n {title}\n \n\n {!!childOffers?.length && (\n \n ({\n id: childOffer.id,\n value: childOffer.id,\n label: childOffer.title,\n }))}\n selectedValue={selectedChildOfferId}\n onChange={setSelectedChildOfferId}\n />\n \n )}\n\n {description && (\n \n )}\n\n \n \n\n {!!benefits?.length && (\n \n {navigation?.type === 'promoPacket' &&\n \n В стоимость входит:\n \n }\n {\n benefits?.map(({ id: benefitId, ...benefit }) =>\n )\n }\n \n )}\n\n {terms?.description && (\n \n \n \n \n \n {terms?.pdf &&\n Полные условия акции\n }\n \n \n \n \n )}\n\n \n {cost && (\n \n \n {typeof cost.withDiscount !== 'undefined'\n ? <>\n \n {getCost('withDiscount')}\n \n \n {getCost('full')}\n \n >\n : <>\n \n {getCost('full')}\n \n >}\n \n {cost.description && (\n \n )}\n \n )}\n {isShowButton && (\n \n \n \n )}\n \n \n ;\n};\n\nexport default LkPromotionalPopup;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { BlockContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { textOverflowLineClamp } from '@r1-frontend/ui-react/tokens/others/textOverflowLineClamp';\n\nexport const AdvantageWrapper = styled(BlockContainer)<{ isWide: boolean }>`\n overflow: hidden;\n\n ${({ isWide }) => isWide && `\n grid-column: span 2;\n `};\n`;\n\nexport const AdvantageImage = styled.div`\n flex: 0 0;\n flex-basis: 48px;\n height: 48px;\n\n img,\n picture {\n width: 100%;\n height: 100%;\n object-position: center;\n object-fit: contain;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n flex-basis: 56px;\n height: 56px;\n }\n`;\n\nexport const Description = styled(Paragraph4)`\n ${textOverflowLineClamp(4)};\n`;\n","import React from 'react';\n\nimport WebpImage from '@r1-frontend/ui-react/components/WebpImage';\nimport { FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport * as ST from './styled';\n\ninterface IProps {\n isWide: boolean,\n title: string,\n image: {\n url: string,\n urlWebp?: string,\n },\n}\n\nconst Advantage = ({ isWide, image: { url, urlWebp }, title }: IProps): JSX.Element => {\n return (\n \n \n \n \n
\n \n \n \n \n \n );\n};\n\nexport default Advantage;\n","import { ISpecOfferDetailItem } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nconst maxAdvantagesQuantity = 4;\n\nexport interface ISpecOfferAdvantage extends ISpecOfferDetailItem {\n isWide: boolean,\n}\n\nexport const getWidthMark = (items: ISpecOfferDetailItem[]): ISpecOfferAdvantage[] => {\n const advantages = items.slice(0, maxAdvantagesQuantity);\n const withWidthMark: ISpecOfferAdvantage[] = advantages.map(advantage => ({ ...advantage, isWide: true }));\n\n if (withWidthMark.length >= 3) {\n withWidthMark[1].isWide = false;\n withWidthMark[2].isWide = false;\n }\n\n return withWidthMark;\n};\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { textOverflowLineClamp } from '@r1-frontend/ui-react/tokens/others/textOverflowLineClamp';\n\nexport const BlockTitle = styled(H4)`\n ${textOverflowLineClamp(3)};\n`;\n\nexport const AdvantagesGrid = styled.div`\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n gap: 16px;\n }\n`;\n","import React, { Children } from 'react';\n\nimport { ISpecOfferDetails } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nimport { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport Advantage from './Advantage';\nimport { getWidthMark } from './getWidthMark';\n\nimport * as ST from './styled';\n\ninterface IProps {\n advantages: ISpecOfferDetails,\n}\n\nconst AdvantagesList = ({ advantages }: IProps): JSX.Element | null => {\n if (!advantages.items.length) {\n return null;\n }\n\n return (\n \n {advantages.title && (\n {advantages.title}\n )}\n \n {Children.toArray(getWidthMark(advantages.items).map(advantage => ))}\n \n \n );\n};\n\nexport default AdvantagesList;\n","import React, { Children } from 'react';\n\nimport { ISpecOfferBenefitBanner } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { BlockContainer, IndentContainer, ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport Benefit from '~/src/entities/vases/PartnerServices/components/ServiceDetails/components/Benefits/Benefit';\n\ninterface IProps {\n benefits?: ISpecOfferBenefitBanner[],\n className?: string,\n}\n\nconst Benefits = ({ benefits, className }: IProps): JSX.Element | null => {\n const isDesktop = useMatchMediaByWidth(wideBreakpoints.mobile, true);\n\n if (!benefits?.length) {\n return null;\n }\n\n return (\n \n \n \n {Children.toArray(benefits.map(benefit => ))}\n \n \n \n );\n};\n\nexport default Benefits;\n","import styled, { css } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const CharacteristicsName = styled(Paragraph4)`\n white-space: nowrap;\n`;\n\nexport const CharacteristicsDevider = styled.div`\n flex: 1 0 38px;\n height: 14px;\n margin-bottom: 5px;\n border-bottom: 1px dashed ${COLORS.TextSecondary};\n`;\n\nexport const CharacteristicsValue = styled(CharacteristicsName)<{ isFullView: boolean }>`\n ${({ isFullView }) => isFullView\n ? css`\n position: absolute;\n top: 0;\n right: 0;\n width: auto;\n padding: 0 5px;\n border-radius: 5px;\n background-color: ${COLORS.BgSurface};\n `\n : css`\n position: static;\n max-width: 115px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n @media (min-width: ${wideBreakpoints.sMobile}) {\n max-width: 150px;\n }\n `\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n position: static;\n max-width: unset;\n width: auto;\n padding: 0;\n border-radius: unset;\n background-color: unset;\n }\n`;\n","import React, { Children, useEffect, useState } from 'react';\n\nimport { ISpecOfferProperties } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { FullWidthListContainer, ListContainer, NonStaticContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { useClickOutside } from '~/src/helpers/hooks/useClickOutside';\n\nimport * as ST from './styled';\n\nconst defaultHoverIndex = -1;\n\ninterface IProps {\n characteristics?: ISpecOfferProperties,\n}\n\nconst Сharacteristics = ({ characteristics }: IProps): JSX.Element | null => {\n const isDesktop = useMatchMediaByWidth(wideBreakpoints.mobile, true);\n\n const [hoverIndex, setHoverIndex] = useState(defaultHoverIndex);\n\n useEffect(() => {\n if (isDesktop && hoverIndex !== defaultHoverIndex) {\n setHoverIndex(defaultHoverIndex);\n }\n }, [hoverIndex, isDesktop]);\n\n useClickOutside(\n hoverIndex !== defaultHoverIndex,\n () => setHoverIndex(defaultHoverIndex),\n );\n\n if (!characteristics || !characteristics?.items.length) {\n return null;\n }\n\n const showFullView = (idx: number) => {\n if (isDesktop) {\n return;\n }\n setHoverIndex(idx);\n };\n\n const { title, items } = characteristics;\n\n return (\n \n {title}
\n\n \n {Children.toArray(items.map((property, index) => (\n \n \n \n {property.name}\n \n \n showFullView(index)}\n >\n {property.value}\n \n \n \n )))}\n \n \n );\n};\n\nexport default Сharacteristics;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport { IAdvertising, ISpecOfferLabel, ISpecOfferPicture } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport WebpImage from '@r1-frontend/ui-react/components/WebpImage';\nimport { NonStaticContainer, RounderContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { AdvertisingLabelWithTooltip } from '@r1-frontend/ui-react/organisms/AdvertisingLabelWithTooltip';\n\nimport LabelsList from '~/src/features/specialOffersContainer/components/LabelsList';\n\ninterface IImage extends ISpecOfferPicture {\n alt: string,\n}\n\ninterface IProps {\n image: IImage,\n labels?: ISpecOfferLabel[],\n advertising?: IAdvertising,\n className?: string,\n}\n\nconst HeaderImage = ({ image, labels, advertising, className }: IProps): JSX.Element => {\n return (\n \n {!!labels?.length && (\n \n \n \n )}\n\n \n
\n \n\n {advertising && (\n \n e.stopPropagation()}\n companyName={advertising.companyName}\n erid={advertising.erid}\n tooltip={{ position: 'top-right', zIndex: 1024 }}\n />\n \n )}\n \n );\n};\n\nexport default styled(HeaderImage)`\n position: relative;\n width: 100%;\n height: 192px;\n\n img,\n picture {\n width: 100%;\n height: 100%;\n object-position: center;\n object-fit: cover;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n height: 312px;\n }\n`;\n","import React, { useState } from 'react';\n\nimport { ISpecOfferTerm } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nimport * as Accordion from '@r1-frontend/ui-react/components/accordions/Accordion';\nimport { TTheme } from '@r1-frontend/ui-react/components/accordions/Accordion/themes';\nimport { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { FullWidthListContainer, IndentContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nconst accordionTheme: TTheme = {\n border: COLORS.BgSurface,\n background: COLORS.BgSurface,\n radius: BorderRadius.InnerBlockRadius,\n mobileRadius: BorderRadius.InnerBlockRadius,\n padding: '12px 24px',\n mobilePadding: '12px 24px',\n color: COLORS.TextPrimary,\n\n buttonType: 'ghost',\n buttonTypeIsOpen: 'ghost',\n\n borderIcon: COLORS.transparent,\n borderIconIsOpen: COLORS.transparent,\n};\n\ninterface IProps {\n terms?: ISpecOfferTerm,\n onShowTerms?: () => void,\n}\n\nconst PromotionTerms = ({ terms, onShowTerms }: IProps): JSX.Element | null => {\n const [isShowTerms, setIsShowTerms] = useState(false);\n\n if (!terms) {\n return null;\n }\n\n const toggleIsShowTerms = () => {\n if (!isShowTerms && onShowTerms) {\n onShowTerms();\n }\n\n setIsShowTerms(prev => !prev);\n };\n\n return (\n \n \n {terms.title}
\n \n \n \n \n \n {terms.pdf && (\n {terms.pdfTitle}\n )}\n \n \n \n \n );\n};\n\nexport default PromotionTerms;\n","import styled from 'styled-components';\n\nimport { ISpecOffer } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers';\n\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { FullWidthListContainer, IndentContainer, NonStaticContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { textOverflowLineClamp } from '@r1-frontend/ui-react/tokens/others/textOverflowLineClamp';\n\nimport { Content } from '~/src/components/Drawer';\n\nexport const SContent = styled(Content)<{ bgColor: string }>`\n height: 100%;\n background-color: ${({ bgColor }) => bgColor};\n\n & > ${FullWidthListContainer} {\n min-height: 100%;\n\n & > ${NonStaticContainer} {\n margin-top: auto;\n }\n }\n`;\n\nexport const Title = styled(H3)<{ $textColor: ISpecOffer['textColor'] }>`\n color: ${({ $textColor = COLORS.TextPrimary }) => $textColor};\n text-align: center;\n margin: 0 auto;\n ${textOverflowLineClamp(3)};\n`;\n\nexport const FooterContent = styled(IndentContainer)`\n width: 100%;\n background-color: ${COLORS.BgMain};\n`;\n","import { useMemo } from 'react';\n\nimport { EOfferState } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { ButtonGroup } from '@r1-frontend/ui-react/components/buttons/buttonGroup/ButtonGroup';\nimport {\n BlockContainer,\n FullWidthListContainer,\n IndentContainer,\n ListContainer,\n NonStaticContainer,\n} from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport { Drawer } from '~/src/components/Drawer';\nimport { specialOfferAnalytics } from '~/src/features/specialOffersContainer/analytics';\nimport { DefaultCallback } from '~/src/features/specialOffersContainer/constants';\nimport { useConnectOffer } from '~/src/features/specialOffersContainer/hooks';\nimport { IProps } from '~/src/features/specialOffersContainer/types';\n\nimport AdvantagesList from './components/Advantages';\nimport Benefits from './components/Benefits';\nimport Сharacteristics from './components/Characteristics';\nimport HeaderImage from './components/HeaderImage';\nimport PromotionTerms from './components/PromotionTerms';\n\nimport * as ST from './styled';\n\nconst SpecOfferDetails = ({ isPopupOpen, offer, callbackMap, onClose }: IProps): JSX.Element | null => {\n const { isLocalLoading, activateButtonText, connectOffer } = useConnectOffer(callbackMap, offer);\n\n const isShowFooter = useMemo(\n () => offer?.navigation?.type !== 'promoPacket' || offer?.state !== EOfferState.CONNECTED,\n [offer?.navigation?.type, offer?.state],\n );\n\n if (!offer) {\n return null;\n }\n\n const {\n backgroundColor,\n colorLabels,\n imageV2,\n advertising,\n title,\n textColor,\n benefitsV2,\n details,\n properties,\n terms,\n buttonText,\n isLoading,\n isConnecting,\n } = offer;\n\n const showTermsHandler = () => {\n specialOfferAnalytics.showOfferDetails(offer);\n };\n\n return (\n \n \n \n \n {imageV2 && (\n \n \n \n )}\n\n \n \n \n\n \n \n\n \n \n \n\n \n <Сharacteristics characteristics={properties}/>\n\n \n \n \n \n\n {isShowFooter && (\n \n \n \n \n \n \n \n )}\n \n \n \n );\n};\n\nexport default SpecOfferDetails;\n","import { batch, useDispatch, useSelector } from 'react-redux';\nimport { useRouter } from 'next/router';\nimport { stringify } from 'qs';\n\nimport { TSegmentedBannerAlias } from '@r1-frontend/api-domru/spec-offer/v1/banners/dto/responseDto';\nimport { EOfferState } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nimport { specialOfferAnalytics } from '~/src/features/specialOffersContainer/analytics';\nimport { DefaultCallback } from '~/src/features/specialOffersContainer/constants';\nimport { useConnectSpeedBonus } from '~/src/features/specialOffersContainer/hooks/useConnectSpeedBonus';\nimport { setIsPopupOpened, setPopupState } from '~/src/features/specialOffersContainer/store/actions';\nimport { updateOffer } from '~/src/features/specialOffersContainer/store/actions/thunk';\nimport { selectIsOfferTransactionPayed } from '~/src/features/specialOffersContainer/store/selectors';\nimport { TPromoCallbackMap } from '~/src/features/specialOffersContainer/types';\n\n// Типы оборудования по категориям, передаются при создании договора в поле 'equip_product_id'\n// @todo collect all product ids in the project and place it in one place\nexport const equipTypes: Record = {\n 'routers': 5,\n 'router': 5, // This case happens at the additional products of tariff.\n 'private-sector-equipment': 5,\n 'decoder': 53, // This case didn't happen, but anything can happen.\n 'decoders': 53,\n 'yandex-stanciya': 5,\n};\n\nexport const useCallbackMap = (root?: TSegmentedBannerAlias): TPromoCallbackMap => {\n const router = useRouter();\n const dispatch = useDispatch();\n const connectSpeedBonus = useConnectSpeedBonus();\n const isOfferTransactionPayed = useSelector(selectIsOfferTransactionPayed);\n\n return {\n onActivate: () => ({\n callback: async() => {\n dispatch(updateOffer());\n },\n }),\n onPay: ({ paySum, state }) => ({\n on: () => !isOfferTransactionPayed && state !== EOfferState.CONNECTED && (paySum || 0) > 0,\n callback: async() => {\n batch(() => {\n dispatch(setIsPopupOpened(false));\n dispatch(setPopupState('needPayment'));\n });\n },\n }),\n onSetPhone: offer => ({\n on: () => offer.billingState !== 'connected' && (offer.benefits?.some(({ needPhone }) => needPhone) ?? false),\n callback: async() => {\n specialOfferAnalytics.connectWithPhone(offer);\n batch(() => {\n dispatch(setIsPopupOpened(false));\n dispatch(setPopupState('needSetPhone'));\n });\n },\n }),\n onEquipment: ({ navigation, requestId }) => ({\n on: () => navigation?.type === 'equipment',\n loader: 'local',\n callback: async() => {\n if (!navigation?.pricesV2) {\n return;\n }\n\n const {\n id: ensId = 0,\n pricesV2: { duration = 0 },\n category,\n } = navigation;\n\n const productId = equipTypes[category]; // TODO: Fix later, remove equipTypes, need to provide productId from backend and get from navigation object directly\n\n router\n .push(\n `/full-buy-equip?${stringify({\n ensId,\n productId,\n requestId,\n duration,\n category,\n })}`,\n )\n .then(() => {\n dispatch(setIsPopupOpened(false));\n });\n },\n }),\n onMultiSubcription: ({ navigation }) => ({\n on: () => navigation?.type === 'multisubscription',\n loader: 'local',\n callback: () => router\n .push('/lk/multibundle')\n .then(() => {\n dispatch(setIsPopupOpened(false));\n }),\n }),\n onChangeTariff: ({ navigation }) => ({\n on: () => navigation?.type === 'promoPacket',\n loader: 'local',\n callback: () => router\n .push(\n `/lk/change-tariff?${stringify({\n promoid: navigation?.id,\n mode: 'details',\n referrer: `/${root}`,\n })}`,\n )\n .then(() => {\n dispatch(setIsPopupOpened(false));\n }),\n }),\n onPendingRequest: ({ navigation }) => ({\n on: () => navigation?.type === 'pendingConnection',\n loader: 'local',\n callback: () => router\n .push('/lk/orders')\n .then(() => {\n dispatch(setIsPopupOpened(false));\n }),\n }),\n onSpeedBonusConnect: ({ navigation, state }) => ({\n on: () => navigation?.type === 'speedBonusWithRequest' && !!navigation?.shopItemId && state !== EOfferState.CONNECTED,\n loader: 'local',\n callback: () => connectSpeedBonus(navigation),\n }),\n };\n};\n","import { useDispatch, useSelector } from 'react-redux';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { byShopItemId } from '@r1-frontend/api-domru/api-vas/v1/vas';\nimport { IVas } from '@r1-frontend/api-domru/api-vas/v1/vas/byShopItemId/dto/responseDto';\nimport { ISpecOffer } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nimport { setTariff } from '~/src/entities/speed-bonus/context/actions';\nimport { initialize } from '~/src/entities/speed-bonus/context/actions/thunk';\nimport { Plus100Status } from '~/src/entities/speed-bonus/context/constants';\nimport { useContextDispatch } from '~/src/entities/speed-bonus/context/hooks';\nimport { setIsPopupOpened, setPopupState } from '~/src/features/specialOffersContainer/store/actions';\nimport { loadOffers } from '~/src/features/specialOffersContainer/store/actions/thunk';\nimport { TState } from '~/src/store';\nimport { getConfirmedPhones } from '~/src/store/selectors/auth';\n\nexport const useConnectSpeedBonus = () => {\n const dispatch = useDispatch();\n const speedBonusDispatch = useContextDispatch();\n\n const { agreementId, confirmedPhones } = useSelector((state: TState) => ({\n agreementId: state.auth.clientPersonal?.agreementId,\n confirmedPhones: getConfirmedPhones(state),\n }));\n\n const errorHandler = () => {\n dispatch(setIsPopupOpened(false));\n dispatch(setPopupState('connectionError'));\n };\n\n return async(navigation: ISpecOffer['navigation']) => {\n if (!navigation?.shopItemId) {\n return;\n }\n\n const response = await doRequest.apiVas(\n byShopItemId(navigation.shopItemId),\n );\n\n if (response.isSuccess) {\n const currentSpeedBonus = response.payload.variants.find(({ globalId }) => globalId === navigation.id);\n\n if (currentSpeedBonus) {\n const {\n socId,\n globalId,\n status = Plus100Status,\n specialOfferRequestId,\n speed,\n title,\n price,\n connectionFlow,\n shopItemId,\n } = currentSpeedBonus;\n\n speedBonusDispatch(setTariff({\n socId,\n bonusId: globalId,\n speedBonusStatus: Number(status),\n specialOffersRequestIds: specialOfferRequestId ? [specialOfferRequestId] : undefined,\n speed,\n title,\n price: price.full,\n connectionFlow,\n shopItemId,\n }));\n speedBonusDispatch(initialize({\n agreementId,\n contactId: confirmedPhones?.[0].contactId,\n beforeSwitchToConnection: () => dispatch(setIsPopupOpened(false)),\n afterSuccessConnection: () => dispatch(loadOffers()),\n }));\n } else {\n errorHandler();\n }\n } else {\n errorHandler();\n }\n };\n};\n","import { useCallback, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport omit from 'lodash/omit';\n\nimport { ISpecOffer, ISpecOfferNavigation } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/dto/ISpecOffer';\n\nimport { specialOfferAnalytics } from '~/src/features/specialOffersContainer/analytics';\nimport { DefaultCallback } from '~/src/features/specialOffersContainer/constants';\nimport { isCallbackDefined } from '~/src/features/specialOffersContainer/helpers';\nimport { setPopupState } from '~/src/features/specialOffersContainer/store/actions';\nimport { TPromoCallbackMap } from '~/src/features/specialOffersContainer/types';\n\ntype TButtonTextMap = {\n [key in ISpecOfferNavigation['type'] | 'default']: string;\n}\n\ninterface IUseConnectOffer {\n isLocalLoading: boolean,\n activateButtonText: string,\n connectOffer: () => Promise,\n}\n\nexport const useConnectOffer = (callbackMap: TPromoCallbackMap, offer?: ISpecOffer): IUseConnectOffer => {\n const { billingState, navigation } = offer || {};\n\n const dispatch = useDispatch();\n\n const [isLocalLoading, setIsLocalLoading] = useState(false);\n\n const activateButtonText = useMemo(() => {\n const isOfferConnected = billingState === 'connected';\n\n const textMap: TButtonTextMap = {\n equipment: 'Заказать',\n promoPacket: 'Перейти к тарифу',\n pendingConnection: 'Проверить заявку',\n multisubscription: isOfferConnected ? 'Управлять подписками' : 'Выбрать подписки',\n speedBonusWithRequest: isOfferConnected ? 'Отключить' : 'Подключить',\n default: `${isOfferConnected ? 'Отключить' : 'Подключить'} сейчас`,\n };\n\n return textMap[navigation?.type ?? 'default'];\n }, [billingState, navigation?.type]);\n\n const connectOffer = useCallback(async() => {\n if (!offer) {\n return;\n }\n\n try {\n const [filtered] = Object\n .values(omit(callbackMap, [DefaultCallback]))\n .filter(isCallbackDefined)\n .map(factory => factory(offer))\n .filter(({ on }) => on());\n\n const targetCallback = filtered || callbackMap[DefaultCallback](offer);\n\n if (targetCallback) {\n specialOfferAnalytics.instantConnect(offer);\n\n const { loader, callback } = targetCallback;\n\n setIsLocalLoading(loader === 'local');\n await callback();\n }\n } catch {\n dispatch(setPopupState('connectionError'));\n }\n }, [callbackMap, offer, dispatch]);\n\n return { isLocalLoading, activateButtonText, connectOffer };\n};\n","import React from 'react';\n\nimport * as ST from './styled';\n\ninterface IProps {\n isOpen: boolean,\n withDividingBorder: boolean,\n children: JSX.Element | JSX.Element[] | string,\n}\n\nconst Body = ({ isOpen, withDividingBorder, children, ...rest }: IProps): JSX.Element => {\n return \n {withDividingBorder && }\n {children}\n ;\n};\n\nexport default Body;\n","import React, { ReactNode } from 'react';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { SingleArrowDown } from '@r1-frontend/ui-react/components/svg/arrows';\n\nimport { TThemesColors } from './themes';\n\nimport * as ST from './styled';\n\ninterface IPropsHeader {\n onOpen: () => void,\n isOpen: boolean,\n colors: TThemesColors,\n children: ReactNode,\n itemProp?: string,\n itemScope?: boolean,\n itemType?: string,\n showButton?: boolean,\n}\n\nexport const Header = ({ onOpen, isOpen, colors, children, showButton = true, ...rest }: IPropsHeader): JSX.Element => {\n const {\n buttonType = 'white',\n buttonTypeIsOpen = 'secondary',\n colorArrow,\n colorArrowIsOpen,\n backgroundIcon,\n backgroundIconIsOpen,\n borderIcon,\n borderIconIsOpen,\n } = colors;\n\n return (\n \n {children}\n {showButton &&\n \n );\n};\n\ninterface IPropsTitle {\n children: JSX.Element | string,\n itemProp?: string,\n}\n\nexport const Title = ({ children, ...rest }: IPropsTitle): JSX.Element =>\n {children};\n","import React from 'react';\n\nimport * as ST from './styled';\n\nconst Wrapper = ({ ...props }): JSX.Element => {\n return ;\n};\n\nexport default Wrapper;\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\nimport { TColors } from './themes';\n\nexport const Wrapper = styled.div`\n flex-direction: column;\n width: 100%;\n background: ${({ theme }) => theme.background};\n border: 1px solid ${({ theme }) => theme.border ? theme.border : COLORS.GRAY_LIGHT};\n border-width: ${({ theme }) => theme.borderWidth};\n border-radius: ${({ theme }) => theme.radius};\n padding: ${({ theme }) => theme.padding};\n color: ${({ theme }) => theme.color ? theme.color : COLORS.TextPrimary};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n padding: ${({ theme })=> theme.mobilePadding};\n border-radius: ${({ theme }) => theme.mobileRadius};\n }\n`;\n\nexport const TitleContainer = styled.div`\n ${FONTS.L};\n width: 100%;\n justify-content: space-between;\n align-items: center;\n flex-wrap: nowrap;\n cursor: pointer;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.S};\n }\n`;\n\nexport const Title = styled.div`\n flex-grow: 1;\n width: calc(100% - 53px); \n ${({ theme }) => theme.desktopFont || ''};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: calc(100% - 39px);\n ${({ theme }) => theme.mobileFont || ''};\n }\n`;\n\nexport const Icon = styled.span<{\n isOpen?: boolean,\n arrowColor?: TColors | string,\n iconBorder?: TColors | string,\n iconBackground?: TColors | string,\n}>`\n position: relative;\n transform: ${({ isOpen }) => isOpen ? 'scaleY(-1)' : 'none'};\n transition: all 0.2s ease-in;\n svg {\n display: block;\n circle {\n stroke: ${({ iconBorder }) => iconBorder ?? COLORS.GRAY_DARK};\n fill: ${({ iconBackground }) => iconBackground ?? COLORS.GRAY_LIGHT};\n }\n path {\n stroke: ${({ arrowColor }) => arrowColor ?? COLORS.GRAY_DARK};\n }\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n background-size: contain;\n }\n`;\n\nexport const Border = styled.div`\n height: 1px;\n width: 100%;\n background: transparent;\n margin: 8px 0;\n`;\n\nexport const Body = styled.div<{ isOpen: boolean }>`\n width: 100%;\n max-height: ${({ isOpen }) => isOpen ? '100%' : '0'};\n ${FONTS.S};\n overflow: hidden;\n transition: max-height 0.2s ${({ isOpen }) => isOpen ? 'ease-in' : 'ease-out'};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.XS};\n }\n`;\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\n\nimport { COLORS } from '../../../assets/js/constants';\nimport { RadioButton } from '../../../deprecated/controls/radioButton';\n\nconst RadioGroupContainer = styled.div`\n flex-direction: ${props => props.direction ? props.direction : 'column'};\n width: ${props => props.bordered ? '100%' : 'auto'};\n`;\n\nconst border = `1px solid ${COLORS.grey}`;\n\nconst RadioButtonContainer = styled.div`\n padding: 5px 0 8px;\n border-top: ${props => props.bordered ? border : 'none'};\n width: ${props => props.itemWidth ? props.itemWidth : 'auto'};\n &:last-of-type {\n border-bottom: ${props => props.bordered ? border : 'none'};\n }\n`;\n\nclass RadioGroup extends Component {\n render() {\n const { bordered, direction, key, options, itemWidth, name, onChange, selectedValue } = this.props;\n return (\n \n {\n options.map(option =>\n \n \n \n )\n }\n \n );\n }\n}\n\nexport default RadioGroup;\n","import { createSvg } from '../createSvg';\n\nconst Monitor = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return <>\n \n \n \n \n \n \n >;\n};\n\nexport default createSvg(\n Monitor,\n 'monitor',\n);\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst Clock = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return (\n <>\n \n \n \n \n \n \n >\n );\n};\n\nexport default createSvg(\n Clock,\n 'clock',\n);\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\n\nimport { COLORS } from '../../../assets/js/constants';\nimport { FONTS } from '../../../tokens/fonts';\n\nconst RadioButtonNew = styled.label`\n display: block;\n box-sizing: border-box;\n position: relative;\n padding: 10px 0 8px 30px;\n cursor: pointer;\n ${FONTS.S};\n width: 100%;\n opacity: ${props => props.disabled ? 0.3 : 1};\n`;\n\nconst Input = styled.input`\n position: absolute;\n opacity: 0;\n left: -9999px;\n height: 0;\n width: 0;\n`;\n\nconst RadioButtonCheckmark = styled.span`\n position: absolute;\n height: 20px;\n width: 20px;\n top: calc(50% - 10px);\n left: 0;\n border: 1px solid ${COLORS.grey};\n border-radius: 50%;\n transition: all 0.1s ease;\n background: white;\n box-sizing: content-box;\n transition: 0.2s;\n ${RadioButtonNew}:hover ${Input}:not(:checked) ~ & {\n border-color: ${props => props.disabled ? '' : COLORS.darkGrey};\n };\n ${Input}:checked ~ & {\n border-color: ${COLORS.lightGreen};\n background-color: ${COLORS.lightGreen};\n &:after {\n content: \"\";\n position: absolute;\n width: 10px;\n height: 10px;\n top: 5px;\n left: 5px;\n border-radius: 50%;\n background-color: white;\n }\n &:hover {\n border-color: ${COLORS.green};\n background-color: ${COLORS.green};\n }\n }\n`;\n\n/**\n * @deprecated\n * Использовать новый компонент BaseRadio src/components/controls/baseRadio\n * */\nexport class RadioButton extends Component {\n render() {\n const { className, label, value, dataTest, disabled, ...rest } = this.props;\n return (\n \n \n \n {label || value}\n \n );\n }\n}\n"],"names":["labels","ListContainer","$direction","$wrap","$size","Children","map","text","textColor","color","type","Label","bgColor","Clock","size","BenefitWrapper","styled","COLORS","BorderRadius","BenefitImageContainer","image","imageLabel","breakPoints","BenefitInfoContainer","BenefitInfoDescription","FONTS","Benefit","title","description","ST","LazyLoadImage","alt","src","Paragraph4","$withIndent","b","dangerouslySetInnerHTML","__html","ChannelsWrapper","ChannelsLink","H4","OfferChannels","channels","useState","isChannelsOpen","setIsChannelsOpen","length","offerChannelIds","useMemo","id","flat","link","pluralize","channelPluralize","onClick","ChannelListPopup","isOfferChannels","freePackets","isOpen","onClose","createSvg","strokeWidth","g","path","d","strokeMiterlimit","strokeLinecap","strokeLinejoin","FeaturesContainer","FeatureRow","FeatureContainer","FeatureIcon","OfferFeatures","features","pairs","reduce","acc","val","slice","data-test","pair","Icon","Speedometer","Monitor","key","createGuid","H5","ChildOffersWrapper","PopupSectionTitle","inline","css","BenefitsContainer","BodyCard","ImageBackground","HeaderImage","BodyCardBadgesContainer","Title","Description","AccordionTheme","background","border","borderWidth","radius","padding","mobilePadding","desktopFont","borderIcon","borderIconIsOpen","backgroundIcon","backgroundIconIsOpen","colorArrow","colorArrowIsOpen","AccordionWrapper","TermsLink","Price","OldPrice","AllPricesContainer","PricesContainer","BottomContainer","childLength","Popup","DefaultPopup","wideBreakpoints","offer","isPopupOpen","callbackMap","images","navigation","childOffers","colorLabels","advertising","state","isLoading","isConnecting","detailImage","useConnectOffer","isLocalLoading","activateButtonText","connectOffer","isTermsOpened","setIsTermsOpened","selectedChildOfferId","setSelectedChildOfferId","find","childOffer","terms","cost","benefits","isShowButton","EOfferState","useEffect","first","getCost","useCallback","value","RubleSymbol","NonStaticContainer","$desktop","$bottom","$right","$mobile","AdvertisingLabelWithTooltip","e","stopPropagation","companyName","erid","tooltip","position","zIndex","url","visibleByDefault","LabelsList","RadioGroup","options","label","selectedValue","onChange","benefit","benefitId","Accordion","withDividingBorder","customTheme","toggle","specialOfferAnalytics","prev","IndentContainer","$united","$color","pdf","href","filter","Boolean","withDiscount","ButtonGroup","Button","bType","loading","disabled","AdvantageWrapper","BlockContainer","isWide","AdvantageImage","textOverflowLineClamp","urlWebp","rounder","$radius","indent","FullWidthListContainer","$alignItems","WebpImage","img","getWidthMark","items","withWidthMark","advantage","BlockTitle","AdvantagesGrid","advantages","Advantage","className","isDesktop","useMatchMediaByWidth","lightThemeImage","CharacteristicsName","CharacteristicsDevider","CharacteristicsValue","isFullView","characteristics","hoverIndex","setHoverIndex","useClickOutside","$smaller","property","index","$position","$justifyContent","name","idx","RounderContainer","$top","$left","accordionTheme","mobileRadius","buttonType","buttonTypeIsOpen","onShowTerms","isShowTerms","setIsShowTerms","theme","colors","onOpen","as","a","target","rel","pdfTitle","SContent","Content","H3","$textColor","FooterContent","isShowFooter","backgroundColor","imageV2","benefitsV2","details","properties","buttonText","Drawer","Benefits","AdvantagesList","Сharacteristics","PromotionTerms","equipTypes","useCallbackMap","root","router","useRouter","dispatch","useDispatch","connectSpeedBonus","speedBonusDispatch","useContextDispatch","useSelector","agreementId","auth","clientPersonal","confirmedPhones","getConfirmedPhones","errorHandler","setIsPopupOpened","setPopupState","response","currentSpeedBonus","socId","globalId","status","specialOfferRequestId","speed","price","connectionFlow","shopItemId","doRequest","byShopItemId","isSuccess","payload","variants","Plus100Status","setTariff","bonusId","speedBonusStatus","Number","specialOffersRequestIds","undefined","full","initialize","contactId","beforeSwitchToConnection","afterSuccessConnection","loadOffers","useConnectSpeedBonus","isOfferTransactionPayed","selectIsOfferTransactionPayed","onActivate","callback","updateOffer","onPay","paySum","on","batch","onSetPhone","billingState","some","needPhone","onEquipment","requestId","loader","ensId","duration","category","productId","pricesV2","push","stringify","then","onMultiSubcription","onChangeTariff","promoid","mode","referrer","onPendingRequest","onSpeedBonusConnect","setIsLocalLoading","isOfferConnected","equipment","promoPacket","pendingConnection","multisubscription","speedBonusWithRequest","default","Object","filtered","targetCallback","values","omit","DefaultCallback","isCallbackDefined","factory","children","rest","Header","showButton","rounded","arrowColor","iconBackground","iconBorder","SingleArrowDown","props","Wrapper","TitleContainer","mobileFont","Border","Body","RadioGroupContainer","direction","bordered","RadioButtonContainer","itemWidth","render","this","option","RadioButton","bind","checked","dataTest","Component","RadioButtonNew","Input","RadioButtonCheckmark"],"sourceRoot":""}