{"version":3,"file":"static/chunks/1457-949f425f682cef04.js","mappings":"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","sources":["webpack://_N_E/./src/features/specialOffersContainer/containers/popups/LkPromotionalPopupExtra/styled.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/popups/LkPromotionalPopupExtra/index.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/popups/PromoConnectedPopup.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/popups/PromoConnectionPopup.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/popups/PromoErrorPopup.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/popups/PromoNeedPaymentPopup.tsx","webpack://_N_E/../../packages/api-domru/src/spec-offer/v1/spec-offers/set-phone/index.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/popups/PromoNeedSetPhonePopup/styled.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/popups/PromoNeedSetPhonePopup/index.tsx","webpack://_N_E/./src/features/specialOffersContainer/components/DefaultPromoStub.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/LkPromotionalCard/styled.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/LkPromotionalCard/index.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/Carousel/CustomArrows/styled.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/Carousel/CustomArrows/index.tsx","webpack://_N_E/./src/features/specialOffersContainer/containers/Carousel/styled.ts","webpack://_N_E/./src/features/specialOffersContainer/containers/Carousel/index.tsx","webpack://_N_E/./src/features/specialOffersContainer/styled.ts","webpack://_N_E/./src/features/specialOffersContainer/index.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { TickCircle } from '@r1-frontend/ui-react/components/svg/main';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const PopupWrapper = styled.div`\n padding: 32px;\n max-width: 600px;\n display: flex;\n flex-direction: column;\n align-items: start;\n justify-content: space-between;\n`;\n\nexport const PopupSuccessIcon = styled(TickCircle)`\n #contour,\n #guts {\n stroke: ${COLORS.Success};\n }\n`;\n\nexport const PopupErrorIcon = styled.i`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 7px;\n border: 1.5px solid ${COLORS.Locked};\n border-radius: 50%;\n\n & > svg {\n #guts {\n stroke: ${COLORS.Locked};\n }\n }\n`;\n\nexport const PopupTitle = styled.div`\n width: 100%;\n color: ${COLORS.TextPrimary};\n ${FONTS.H3};\n margin: 16px 0;\n max-width: 500px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n max-width: 300px;\n }\n\n @media (max-width: ${wideBreakpoints.sMobile}) {\n max-width: 200px;\n } \n`;\n\nexport const PopupText = styled.div`\n ${FONTS.MediumS};\n color: ${COLORS.TextInfo};\n margin-bottom: 16px;\n`;\n\nexport const PopupButtonsWrapper = styled.div`\n justify-content: start;\n gap: 12px;\n width: 100%;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n flex-direction: column;\n }\n`;\n","import { ReactElement } from 'react';\n\nimport DefaultPopup, { IDefaultPopup } from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { Close } from '@r1-frontend/ui-react/components/svg/main';\n\nimport * as ST from './styled';\n\ninterface IProps extends IDefaultPopup {\n message: string,\n positive?: boolean,\n icon?: boolean,\n text?: string,\n buttons: (onClose: () => void) => ReactElement[],\n}\n\nexport const LkPromotionalPopupExtra = ({\n message,\n positive,\n icon = true,\n text,\n buttons,\n onClose,\n ...props\n}: IProps) => {\n return (\n \n \n {icon && (\n positive\n ? \n : \n \n \n )}\n \n {message}\n \n {text && \n {text}\n }\n \n {buttons(onClose)}\n \n \n \n );\n};\n","import { batch, useDispatch } from 'react-redux';\nimport Link from 'next/link';\n\nimport { ISpecOffer } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { IDefaultPopup } from '@r1-frontend/ui-react/components/popups/defaultPopup';\n\nimport { LkPromotionalPopupExtra } from '~/src/features/specialOffersContainer/containers/popups/LkPromotionalPopupExtra';\nimport { setIsPopupOpened, setPopupState } from '~/src/features/specialOffersContainer/store/actions';\n\nexport const PromoConnectedPopup = ({ offer: { billingState }, ...props }: IDefaultPopup & { offer: ISpecOffer }) => {\n const dispatch = useDispatch();\n\n const clickHandler = () => {\n batch(() => {\n dispatch(setPopupState('none'));\n dispatch(setIsPopupOpened(false));\n });\n };\n\n return (\n [\n \n \n ,\n ]}\n {...props}\n />\n );\n};\n","import { useCallback, 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 PopupResult from '@r1-frontend/ui-react/components/popups/popupResult';\n\nimport { DefaultCallback } from '~/src/features/specialOffersContainer/constants';\nimport { IProps } from '~/src/features/specialOffersContainer/types';\nimport { capitalize } from '~/src/helpers/string';\n\nconst PromoConnectionPopup = ({ isPopupOpen, offer, callbackMap, onClose }: IProps): JSX.Element => {\n const { billingState, isLoading, isConnecting } = offer || {};\n\n const [isLocalLoading, setIsLocalLoading] = useState(false);\n\n const actionText = billingState === 'connected' ? 'отключить' : 'подключить';\n\n const onConnectHandler = useCallback(async() => {\n if (!offer) {\n return;\n }\n\n setIsLocalLoading(true);\n const { callback } = callbackMap['onActivate'](offer);\n await callback().finally(() => setIsLocalLoading(false));\n }, [callbackMap, offer]);\n\n return (\n \n \n \n {capitalize(actionText)}\n \n \n Закрыть\n \n \n \n );\n};\n\nexport default PromoConnectionPopup;\n","import { useSelector } from 'react-redux';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { IDefaultPopup } from '@r1-frontend/ui-react/components/popups/defaultPopup';\n\nimport { LkPromotionalPopupExtra } from '~/src/features/specialOffersContainer/containers/popups/LkPromotionalPopupExtra';\nimport { TState } from '~/src/store';\n\nexport const PromoErrorPopup = (props: IDefaultPopup) => {\n const errorMessage = useSelector((state: TState) => state.specOffers.errorMessage);\n\n return [\n \n Закрыть\n ,\n ]}\n {...props}\n />;\n};\n","import { useMemo } from 'react';\nimport { batch, useDispatch } from 'react-redux';\nimport Link from 'next/link';\nimport { stringify } from 'qs';\nimport { v4 as createGuid } from 'uuid';\n\nimport { ISpecOffer } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { IDefaultPopup } from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { RubleSymbol } from '@r1-frontend/ui-react/tokens/symbols';\n\nimport { createTransaction } from '~/src/features/payments-abn/store/actions';\nimport { specialOfferAnalytics } from '~/src/features/specialOffersContainer/analytics';\nimport { LkPromotionalPopupExtra } from '~/src/features/specialOffersContainer/containers/popups/LkPromotionalPopupExtra';\nimport { setIsPopupOpened, setOfferTransaction, setPopupState } from '~/src/features/specialOffersContainer/store/actions';\n\nexport const PromoNeedPaymentPopup = ({ offer, ...props }: IDefaultPopup & { offer: ISpecOffer }) => {\n const transaction = createGuid();\n\n const paymentUrl = useMemo(() => `/payments?${stringify({ s: offer.paySum, transaction })}`, [offer.paySum, transaction]);\n\n const dispatch = useDispatch();\n\n const onPayHandler = () => {\n batch(() => {\n dispatch(createTransaction(transaction));\n dispatch(setOfferTransaction(transaction));\n dispatch(setPopupState('none'));\n dispatch(setIsPopupOpened(false));\n });\n specialOfferAnalytics.refillBalance(`discounts:${offer.title}`);\n };\n\n return (\n [\n \n \n Пополнить\n \n ,\n \n Закрыть\n ,\n ]}\n {...props}\n />\n );\n};\n","import { TSpecOfferSetPhoneRequest } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/set-phone/dto/requestDto';\n\nimport { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nexport const formatPhone = ([, ...rest]: string) => ['8', ...rest].join('');\n\n/**\n * Добавление номера телефона к договору для подписок (IVI, Кинопоиск и тд) в биллинге\n * @link https://master.spec-offer.sandbox.d2c.r-one.io/docs#/Специальные%20предложения/SpecOfferController_setPhone\n */\nexport const setPhone = (providerId: number, payload: TSpecOfferSetPhoneRequest): IRequest => ({\n uri: `/api/v1/${providerId}/set-phone`,\n method: 'POST',\n withAuth: true,\n withProvider: true,\n body: JSON.stringify(payload),\n});\n","import styled, { css } from 'styled-components';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const PopupSetPhoneWrapper = styled.section<{\n isSelectInputable: boolean,\n useMargin?: boolean,\n}>`\n display: flex;\n width: ${({ isSelectInputable }) => isSelectInputable ? '448px' : '224px'};\n gap: 12px;\n\n ${({ isSelectInputable }) => isSelectInputable && `\n div {\n &:last-child {\n margin-bottom: 0;\n }\n }\n `}\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n flex-direction: column;\n width: 100%;\n }\n\n /**\n * Уберет абсолюты для выпадающего списка, т.к внутри\n * попапа это не нужно\n */\n & > div {\n &:first-child {\n & > div > div {\n &:last-child {\n position: relative;\n margin-top: 10px !important;\n }\n }\n }\n\n &:last-child input {\n ${({ useMargin }) => useMargin && css`\n margin-top: 10px;\n \n @media (max-width: ${wideBreakpoints.mobile}) {\n margin: 0;\n }\n `}\n }\n }\n`;\n\nexport const PopupSetPhoneError = styled.span`\n ${FONTS.MediumXXS}\n color: ${COLORS.Error};\n`;\n\nexport const PopupSetPhoneButton = styled(Button)<{ useMargin?: boolean }>`\n height: fit-content;\n\n ${({ useMargin }) => useMargin && css`\n margin-top: 10px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin: 0;\n }\n `}\n`;\n","import React, { useCallback, useMemo, useState } from 'react';\nimport cookie from 'react-cookies';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { setPhone } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers';\nimport { formatPhone } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/set-phone';\nimport { TSpecOfferSetPhoneResponse } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers/set-phone/dto/responseDto';\n\nimport { IDefaultPopup } from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { CreatablePhoneSelect, IOption } from '@r1-frontend/ui-react/components/select/creatableSelect';\n\nimport { specialOfferAnalytics } from '~/src/features/specialOffersContainer/analytics';\nimport { DefaultCallback } from '~/src/features/specialOffersContainer/constants';\nimport { LkPromotionalPopupExtra } from '~/src/features/specialOffersContainer/containers/popups/LkPromotionalPopupExtra';\nimport { setPopupState } from '~/src/features/specialOffersContainer/store/actions';\nimport { TSpecOffer } from '~/src/features/specialOffersContainer/types';\nimport { TPromoCallbackMap } from '~/src/features/specialOffersContainer/types';\nimport { TState } from '~/src/store';\n\nimport * as ST from './styled';\n\nexport const PromoNeedSetPhonePopup = ({\n offer,\n onActivate,\n ...props\n}: IDefaultPopup & Pick, 'onActivate'> & {\n offer: TSpecOffer,\n }) => {\n const { clientContacts } = useSelector((state: TState) => state.auth);\n\n const [isLocalLoading, setIsLocalLoading] = useState(false);\n const [phoneOptions, setPhoneOptions] = useState(\n (clientContacts?.phone?.filter(({ status }) => status === 'confirmed') || []).map((item) => ({\n label: item.value,\n value: `${item.id}`,\n })),\n );\n const [inputValue, setInputValue] = useState();\n const [selectedPhone, setSelectedPhone] = useState(\n phoneOptions.slice(0, 1)[0] || {\n value: 0,\n label: '',\n },\n );\n const [isNumberUsed, setIsNumberUsed] = useState(false);\n const [useMargin, setUseMargin] = useState(true);\n\n const subscriptions = useMemo(\n () =>\n (offer.benefits || [])\n .filter(({ needPhone }) => needPhone)\n .map(({ title }) => title)\n .join(', '),\n [offer],\n );\n const dispatch = useDispatch();\n\n const onInputChange = useCallback((option: IOption) => {\n setInputValue(option);\n\n const { value } = option;\n const phoneValue = value || '';\n\n if (phoneValue && phoneValue.length < 11) {\n return;\n }\n\n const newOption = {\n value,\n label: value,\n };\n\n setPhoneOptions([\n ...phoneOptions,\n { ...newOption },\n ]);\n setSelectedPhone(newOption);\n }, [phoneOptions]);\n\n const onSetPhone = useCallback(async() => {\n const { value, label } = selectedPhone;\n const providerId = cookie.load('providerId');\n\n const phoneParam = value === label\n ? { phone: formatPhone(value) }\n : { contactId: value };\n\n setIsLocalLoading(true);\n\n const response = await doRequest.specOffer(\n setPhone(providerId, {\n requestId: offer.requestId,\n ...phoneParam,\n }),\n );\n\n setIsLocalLoading(false);\n\n if (!response.isSuccess) {\n specialOfferAnalytics.errorPhoneCheck(offer);\n return dispatch(setPopupState('connectionError'));\n }\n\n const { payload } = response;\n\n setIsNumberUsed(!payload);\n\n if (payload) {\n const { callback } = onActivate(offer);\n\n callback();\n specialOfferAnalytics.successPhoneCheck(offer);\n }\n }, [offer, onActivate, selectedPhone]);\n\n const onPhoneChange = useCallback((option: IOption) => {\n setSelectedPhone(option);\n setInputValue(undefined);\n setIsNumberUsed(false);\n }, []);\n\n return (\n [\n \n setUseMargin(false)}\n onMenuClose={() => setUseMargin(true)}\n masked\n />\n ,\n \n {isNumberUsed\n ? `На данный номер телефона уже подключена подписка ${subscriptions}. Введите другой номер.`\n : null}\n ,\n \n Продолжить\n ,\n ]}\n {...props}\n />\n );\n};\n","import styled from 'styled-components';\n\nimport { Clock } from '@r1-frontend/ui-react/components/svg/time';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nconst DefaultPromoStub = ({ className }: { className?: string }): JSX.Element => (\n \n \n Предложения скоро появятся, а пока посмотрите, что у нас есть\n \n);\n\nexport default styled(DefaultPromoStub)`\n margin-top: 20px;\n margin-bottom: 60px;\n\n & > svg {\n #contour,\n #guts {\n stroke: ${COLORS.ButtonAccent};\n }\n }\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 { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport TextWrapper from '@r1-frontend/ui-react/components/typography/TextWrapper';\nimport { IndentContainer, ListContainer } 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';\nimport { textOverflowLineClamp } from '@r1-frontend/ui-react/tokens/others/textOverflowLineClamp';\n\nexport const CardWrapper = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: 186px 1fr;\n grid-template-areas:\n 'image'\n 'content';\n width: 352px;\n height: 410px;\n border-radius: ${BorderRadius.OuterBlockRadius};\n overflow: hidden;\n cursor: auto;\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n grid-template-rows: 182px 1fr;\n width: 343px;\n height: 399px;\n }\n`;\n\nexport const CardImage = styled.div`\n position: relative;\n grid-area: image;\n\n img,\n picture {\n width: 100%;\n height: 100%;\n object-position: center;\n object-fit: cover;\n }\n`;\n\nexport const ContentWrapper = styled(IndentContainer)`\n grid-area: content;\n background-color: ${COLORS.BgSurface};\n`;\n\nexport const CardContent = styled(ListContainer)`\n height: 100%;\n\n ${TextWrapper} {\n align-items: flex-start;\n\n & > ${H4} {\n ${textOverflowLineClamp(2)};\n }\n\n & > ${Paragraph4} {\n ${textOverflowLineClamp(3)};\n }\n }\n\n ${ListContainer} > button:first-child {\n width: 100%;\n }\n`;\n","import { useCallback, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { push } from '@r1-frontend/analytics/campaignLayer';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { InfoCircleFlip } from '@r1-frontend/ui-react/components/svg/main';\nimport { H4 } 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 WebpImage from '@r1-frontend/ui-react/components/WebpImage';\nimport { FullWidthListContainer, ListContainer, NonStaticContainer } from '@r1-frontend/ui-react/experimental/containers';\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 { setPopupState, setSelectedOfferId } from '~/src/features/specialOffersContainer/store/actions';\nimport { viewOffer } from '~/src/features/specialOffersContainer/store/actions/thunk';\nimport { IOfferWithExtendedAdvertising, TPromoCallbackMap } from '~/src/features/specialOffersContainer/types';\nimport { useElementVisibility } from '~/src/helpers/hooks/useElementVisibility';\n\nimport * as ST from './styled';\n\ninterface IProps {\n offer: IOfferWithExtendedAdvertising,\n callbackMap: TPromoCallbackMap,\n}\n\nconst LkPromotionalCard = ({ offer, callbackMap }: IProps): JSX.Element => {\n const {\n id,\n advertising,\n benefits,\n billingState,\n colorLabels,\n hasInstantConnect,\n imageV2,\n navigation,\n paySum,\n requestId,\n shortDescription,\n title,\n\n isConnecting,\n isLoading,\n } = offer;\n\n const dispatch = useDispatch();\n\n const { isLocalLoading, activateButtonText, connectOffer } = useConnectOffer(callbackMap, offer);\n\n const onInfoClick = () => {\n dispatch(viewOffer(offer));\n };\n\n const onConnectHandler = () => {\n if (!hasInstantConnect) {\n onInfoClick();\n return;\n }\n\n dispatch(setSelectedOfferId(requestId));\n\n if (!navigation?.type) {\n specialOfferAnalytics.instantConnect(offer);\n\n switch (true) {\n case !!paySum:\n dispatch(setPopupState('needPayment'));\n return;\n case billingState !== 'connected' && (benefits?.some(({ needPhone }) => needPhone) ?? false):\n dispatch(setPopupState('needSetPhone'));\n return;\n default:\n dispatch(setPopupState('needConfirmation'));\n return;\n }\n }\n\n connectOffer();\n };\n\n const labels = useMemo(() => {\n if (!colorLabels) {\n return;\n }\n\n return colorLabels.slice(0, 2);\n }, [colorLabels]);\n\n const pushCampaignSpecOfferView = useCallback(() => {\n push({ id, type: 'spec-offer', actionType: 'view' });\n }, [id]);\n\n const specOfferRef = useElementVisibility(pushCampaignSpecOfferView);\n\n return (\n \n \n \n \n {labels && (\n \n )}\n {advertising && (\n \n )}\n \n \n \n {title}/\n \n \n \n \n \n

{title}

\n \n
\n \n \n {hasInstantConnect ? activateButtonText : 'Подробнее'}\n \n {!!hasInstantConnect && (\n }\n disabled={isLoading}\n rounded\n onClick={onInfoClick}\n />\n )}\n \n
\n
\n
\n );\n};\n\nexport default LkPromotionalCard;\n","import styled from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\ntype ArrowDirection = 'left' | 'right';\n\nexport const Wrapper = styled.div`\n display: flex;\n z-index: 3;\n flex-direction: row;\n`;\n\nexport const Arrow = styled.div<{ direction?: ArrowDirection }>`\n @media (max-width: ${wideBreakpoints.mobile}) {\n display: none;\n }\n\n position: relative;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n transition: 0.3s background-color;\n background-color: ${COLORS.BgLight};\n background-image: url('/static/images/icons/arrow_carousel.svg');\n background-position: center;\n background-repeat: no-repeat;\n cursor: pointer;\n opacity: 0.5;\n\n ${({ direction }) =>\n direction === 'left' ? 'transform: rotate(180deg);' : ''}\n :hover {\n background-color: ${COLORS.BgMain};\n opacity: 1;\n }\n`;\n\nexport const ShowAllButton = styled(BaseButton)`\n margin-right: 24px;\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-right: 0px !important;\n }\n`;\n","import React from 'react';\n\nimport { btnSizes, btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { IArrowProps } from '@r1-frontend/ui-react/components/NukaCarousel/DefaultArrow';\n\nimport * as ST from './styled';\n\nexport const CustomArrows = ({ previousSlide, nextSlide }: IArrowProps) => (\n \n \n \n);\n\nexport const CustomArrowsWithShowAll = ({ previousSlide, nextSlide }: IArrowProps) => (\n \n {previousSlide && }\n \n \n);\n","import styled, { css } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport NukaCarousel from '@r1-frontend/ui-react/components/NukaCarousel';\n\nexport const SwiperContainer = styled.div<{ hideControls?: boolean }>`\n width: 100%;\n\n ${({ hideControls }) => hideControls && css`\n .slider .slider-control-centerleft,\n .slider .slider-control-centerright,\n .slider .slider-control-bottomcenter {\n display: none !important;\n }\n `}\n\n .slider .slider-control-centerleft {\n top: -13px !important;\n right: 52px !important;\n left: auto !important;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n right: 0px !important;\n }\n }\n\n .slider .slider-control-centerright {\n top: -13px !important;\n right: 0 !important;\n width: 40px;\n\n > div {\n justify-content: flex-end;\n }\n }\n\n .slider .slider-control-bottomcenter {\n position: relative !important;\n }\n`;\n\nexport const CustomSwiper = styled(NukaCarousel)<{ isLoading?: boolean }>`\n padding-left: 0 !important;\n padding-right: 0 !important;\n\n & section,\n & div {\n outline: none;\n }\n\n & div.slider-frame {\n ${({ isLoading }) => isLoading\n ? css`\n height: 435px !important;\n padding: 0 !important;\n margin: 24px 0 !important;\n `\n : css`\n padding: 24px 0 !important;\n\n @media (max-width: ${wideBreakpoints.sMobile}) {\n padding: 22px 0 !important;\n }\n `\n }\n }\n\n & div.slider-slide {\n height: 410px !important;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n height: 399px !important;\n }\n }\n`;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { batch, shallowEqual, useDispatch, useSelector } from 'react-redux';\n\nimport { TSegmentedBannerAlias } from '@r1-frontend/api-domru/spec-offer/v1/banners/dto/responseDto';\nimport { ISpecOffer } from '@r1-frontend/api-domru/spec-offer/v1/spec-offers';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { specialOfferAnalytics } from '~/src/features/specialOffersContainer/analytics';\nimport { DefaultCallback } from '~/src/features/specialOffersContainer/constants';\nimport LkPromotionalCard from '~/src/features/specialOffersContainer/containers/LkPromotionalCard';\nimport LkPromotionalPopup from '~/src/features/specialOffersContainer/containers/LkPromotionalPopup';\nimport {\n PromoConnectedPopup,\n PromoConnectionPopup,\n PromoErrorPopup,\n PromoNeedPaymentPopup,\n PromoNeedSetPhonePopup,\n} from '~/src/features/specialOffersContainer/containers/popups';\nimport SpecOfferDetails from '~/src/features/specialOffersContainer/containers/SpecOfferDetails';\nimport { getGaLabelByNavigationType, isNewDetailsDesign } from '~/src/features/specialOffersContainer/helpers';\nimport { useCallbackMap } from '~/src/features/specialOffersContainer/hooks';\nimport { setIsPopupOpened, setPopupState } from '~/src/features/specialOffersContainer/store/actions';\nimport { selectOffer } from '~/src/features/specialOffersContainer/store/selectors';\nimport { TSpecOffer } from '~/src/features/specialOffersContainer/types';\nimport { IOfferAdvertising } from '~/src/features/specialOffersContainer/types';\nimport { TState } from '~/src/store';\n\nimport { CustomArrows, CustomArrowsWithShowAll } from './CustomArrows';\n\nimport * as ST from './styled';\n\ninterface IProps {\n isLoading: boolean,\n offers: TSpecOffer[],\n showAllButton?: boolean,\n root?: TSegmentedBannerAlias,\n}\n\nexport const LkPromotionalCardsCarousel = ({ isLoading, offers, showAllButton, root }: IProps) => {\n const { specOffers: { isPopupOpened, popupState }, popupOffer } = useSelector((state: TState) => ({\n specOffers: state.specOffers,\n popupOffer: selectOffer(state),\n }), shallowEqual);\n\n const dispatch = useDispatch();\n\n const callbackMap = useCallbackMap(root);\n\n const isMobile = useMatchMediaByWidth(wideBreakpoints.mobile);\n\n const [labelId, setLabelId] = useState(null);\n\n useEffect(() => {\n if (!offers.length) {\n return;\n }\n\n const titles: ISpecOffer['title'][] = [];\n const types: string[] = [];\n\n offers.forEach(offer => {\n titles.push(offer.title);\n types.push(getGaLabelByNavigationType(offer).replace(' | type:', ''));\n });\n\n specialOfferAnalytics.viewOffersList(`list:[name:${titles.join(', ')}; type:${types.join()}]`);\n }, []);\n\n const onClosePopup = () => {\n batch(() => {\n dispatch(setPopupState('none'));\n dispatch(setIsPopupOpened(false));\n });\n };\n\n const offerCards = useMemo(() => {\n return offers.map(offer => {\n const { id, advertising } = offer;\n\n const offerAdvertising: IOfferAdvertising | undefined = advertising\n ? {\n ...advertising,\n isShown: labelId === id,\n onClick: () => setLabelId(id),\n onClose: () => setLabelId(null),\n }\n : undefined;\n\n return (\n \n );\n });\n }, [offers, labelId, callbackMap]);\n\n const isNewOfferDetails = useMemo(\n () => popupOffer?.isShowNewDetail && isNewDetailsDesign(),\n [popupOffer?.isShowNewDetail],\n );\n\n const promoPopupProps = {\n isPopupOpen: isPopupOpened,\n offer: popupOffer,\n callbackMap: callbackMap,\n onClose: onClosePopup,\n };\n\n return (\n \n setLabelId(null)}\n data-test='lkPromotionalCardsCarousel-root'\n >\n {offerCards}\n \n\n {/* Use LkPromotionalPopup out from LkPromotionalCard because\n controls do not work well inside NukaCarousel */}\n {isNewOfferDetails\n ? \n : \n }\n\n \n \n \n \n \n \n );\n};\n\nexport default LkPromotionalCardsCarousel;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nexport const CarouselContainer = styled.div`\n position: relative;\n width: 100%;\n z-index: 1;\n\n .skeletons-wrapper {\n display: block;\n height: 435px;\n margin-top: 24px;\n white-space: nowrap;\n overflow: hidden;\n }\n\n .skeleton-item {\n display: inline-block;\n width: 352px;\n height: 410px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 343px;\n height: 399px;\n }\n }\n\n .skeleton-item:not(:last-child) {\n margin-right: 32px;\n }\n`;\n","import React, { useEffect } from 'react';\nimport { batch, shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useRouter } from 'next/router';\n\nimport 'react-loading-skeleton/dist/skeleton.css';\n\nimport { TSegmentedBannerAlias } from '@r1-frontend/api-domru/spec-offer/v1/banners/dto/responseDto';\n\nimport { WithSkeleton, WithSkeletonContext } from '@r1-frontend/ui-react/components/loaders/Skeleton';\nimport { H3, H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\n\nimport SpeedBonusConnection from '~/src/entities/speed-bonus';\nimport { specialOfferAnalytics } from '~/src/features/specialOffersContainer/analytics';\nimport DefaultPromoStub from '~/src/features/specialOffersContainer/components/DefaultPromoStub';\nimport LkPromotionalCardsCarousel from '~/src/features/specialOffersContainer/containers/Carousel';\nimport { setIsPopupOpened, setSelectedOfferId } from '~/src/features/specialOffersContainer/store/actions';\nimport { loadOffers } from '~/src/features/specialOffersContainer/store/actions/thunk';\nimport { TState } from '~/src/store';\n\nimport * as ST from './styled';\n\ninterface IOffersProps {\n title: string,\n showAllButton?: boolean,\n headlined?: boolean,\n root?: TSegmentedBannerAlias,\n EmptyComponent?: () => JSX.Element,\n}\n\nconst SpecialOffersContainer = ({\n title,\n showAllButton,\n headlined,\n root,\n EmptyComponent,\n}: IOffersProps) => {\n const dispatch = useDispatch();\n\n const { isLoading, offers } = useSelector((state: TState) => state.specOffers, shallowEqual);\n\n const { query: { offer_id, requestId } } = useRouter();\n\n useEffect(() => {\n dispatch(loadOffers(true));\n }, []);\n\n useEffect(() => {\n const offerByQuery = offers.find(offer => offer.requestId === Number(requestId) || offer.id === Number(offer_id));\n\n if (offerByQuery) {\n specialOfferAnalytics.showPromoDetails(offerByQuery);\n\n if (offerByQuery.isShowNewDetail) {\n specialOfferAnalytics.showOfferWithNewDesign(`discounts:${offerByQuery.title}`);\n }\n\n batch(() => {\n dispatch(setSelectedOfferId(offerByQuery.requestId));\n dispatch(setIsPopupOpened(true));\n });\n }\n }, [offers, offer_id, requestId]);\n\n const PreparedEmptyComponent = typeof EmptyComponent === 'function' ? EmptyComponent : DefaultPromoStub;\n\n return (\n <>\n {headlined\n ?

{title}

\n :

{title}

\n }\n \n \n \n {offers.length\n ? \n \n \n : \n }\n \n \n \n \n );\n};\n\nexport default SpecialOffersContainer;\n"],"names":["PopupWrapper","styled","PopupSuccessIcon","TickCircle","COLORS","PopupErrorIcon","PopupTitle","FONTS","wideBreakpoints","PopupText","PopupButtonsWrapper","LkPromotionalPopupExtra","message","positive","icon","text","buttons","onClose","props","DefaultPopup","ST","data-test","size","strokeWidth","Close","PromoConnectedPopup","offer","billingState","dispatch","useDispatch","clickHandler","batch","setPopupState","setIsPopupOpened","Link","href","passHref","Button","bType","onClick","isPopupOpen","callbackMap","isLoading","isConnecting","useState","isLocalLoading","setIsLocalLoading","actionText","onConnectHandler","useCallback","callback","finally","PopupResult","isOpen","title","ButtonGroup","loading","disabled","capitalize","PromoErrorPopup","errorMessage","useSelector","state","specOffers","PromoNeedPaymentPopup","transaction","createGuid","paymentUrl","useMemo","stringify","s","paySum","onPayHandler","createTransaction","setOfferTransaction","specialOfferAnalytics","RubleSymbol","formatPhone","rest","join","setPhone","providerId","payload","uri","method","withAuth","withProvider","body","JSON","PopupSetPhoneWrapper","isSelectInputable","useMargin","css","PopupSetPhoneError","PopupSetPhoneButton","PromoNeedSetPhonePopup","clientContacts","onActivate","auth","phone","filter","status","map","item","label","value","id","phoneOptions","setPhoneOptions","inputValue","setInputValue","slice","selectedPhone","setSelectedPhone","isNumberUsed","setIsNumberUsed","setUseMargin","subscriptions","benefits","needPhone","onInputChange","option","phoneValue","length","newOption","onSetPhone","phoneParam","response","cookie","contactId","doRequest","requestId","isSuccess","onPhoneChange","undefined","className","CreatablePhoneSelect","placeholder","createLabel","options","onChange","inputPlaceHolder","onMenuOpen","onMenuClose","masked","ListContainer","$direction","$wrap","$size","Clock","Paragraph4","$color","CardWrapper","BorderRadius","CardImage","ContentWrapper","IndentContainer","CardContent","TextWrapper","H4","textOverflowLineClamp","advertising","colorLabels","hasInstantConnect","imageV2","navigation","shortDescription","useConnectOffer","activateButtonText","connectOffer","onInfoClick","viewOffer","labels","pushCampaignSpecOfferView","push","type","actionType","specOfferRef","useElementVisibility","ref","NonStaticContainer","$united","$position","$top","$left","$right","FullWidthListContainer","$justifyContent","LabelsList","AdvertisingLabelWithTooltip","companyName","erid","tooltip","position","isShown","WebpImage","urlWebp","img","src","url","alt","$desktop","$mobile","$lastIndent","$withIndent","dangerouslySetInnerHTML","__html","$smaller","setSelectedOfferId","some","Icon","InfoCircleFlip","rounded","Wrapper","Arrow","direction","ShowAllButton","BaseButton","CustomArrows","previousSlide","nextSlide","CustomArrowsWithShowAll","btnSizes","btnTypes","SwiperContainer","hideControls","CustomSwiper","NukaCarousel","offers","showAllButton","root","popupOffer","selectOffer","shallowEqual","isPopupOpened","popupState","useCallbackMap","isMobile","useMatchMediaByWidth","labelId","setLabelId","useEffect","titles","types","forEach","getGaLabelByNavigationType","replace","onClosePopup","offerCards","offerAdvertising","LkPromotionalCard","isNewOfferDetails","isShowNewDetail","isNewDetailsDesign","promoPopupProps","slideWidth","customArrow","cellSpacing","onDragStart","SpecOfferDetails","LkPromotionalPopup","PromoConnectionPopup","DefaultCallback","CarouselContainer","headlined","EmptyComponent","useRouter","query","offer_id","loadOffers","offerByQuery","find","Number","PreparedEmptyComponent","DefaultPromoStub","H3","as","WithSkeletonContext","WithSkeleton","borderRadius","containerClassName","count","inline","SpeedBonusConnection","LkPromotionalCardsCarousel"],"sourceRoot":""}