{"version":3,"file":"static/chunks/1974-24084fc8de5bb8c7.js","mappings":"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","sources":["webpack://_N_E/./src/features/payments-abn/store/selectors/selectIsPaymentValid.ts","webpack://_N_E/./src/features/payments-abn/components/CardPayment/styled.ts","webpack://_N_E/./src/features/payments-abn/components/CardPayment/index.tsx","webpack://_N_E/./src/features/payments-abn/components/CardPayment/useCardPayment.tsx","webpack://_N_E/./src/features/payments-abn/components/CardPayment/SaveNewCard.tsx","webpack://_N_E/./src/features/payments-abn/store/selectors/emails.ts","webpack://_N_E/./src/features/payments-abn/components/PaymentForms/components/EmailInput/styled.ts","webpack://_N_E/./src/features/payments-abn/components/PaymentForms/components/EmailInput/index.tsx","webpack://_N_E/./src/features/payments-abn/components/PaymentMethodCards/styled.ts","webpack://_N_E/./src/features/payments-abn/components/PaymentMethodCards/index.tsx","webpack://_N_E/./src/helpers/hooks/useAnaliticsSender.ts","webpack://_N_E/./src/store/actionCreators/loyalty.ts","webpack://_N_E/./src/store/actions/loyalty.ts","webpack://_N_E/../../packages/api-domru/src/api-loyalty/v1/program/info.ts","webpack://_N_E/../../packages/ui-react/src/components/controls/baseCheckbox/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/controls/baseCheckbox/index.tsx","webpack://_N_E/../../packages/ui-react/src/assets/img/check-promo.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/check-white.svg"],"sourcesContent":["import { MAX_PAYMENT } from '~/src/constants';\nimport { getIsAbnLoyaltyProgramEnabled } from '~/src/features/domru-bonus/constants/abnVariants';\nimport { EValidityStatus } from '~/src/features/payments-abn/store/actionCreators';\nimport { TState } from '~/src/store';\n\nconst isAbnProgramTermsEnabled = getIsAbnLoyaltyProgramEnabled();\n\n/**\n * Проверяет возможность совершения платежа\n */\nexport const selectIsPaymentValid = (state: TState): boolean => {\n const { paymentSum, isUseBonuses, bonusesValue, isConnectAutoPay, paymentSumValidity } = state.payment.paymentData;\n const loyalty = state.loyalty;\n const { info: { bonuses } } = loyalty;\n\n const requiredBonusesToPay = isAbnProgramTermsEnabled\n ? paymentSum / 0.2\n : paymentSum;\n\n return isConnectAutoPay\n ? (paymentSum >= 0 &&\n paymentSum <= (isUseBonuses ? MAX_PAYMENT + Math.min(bonusesValue, bonuses) : MAX_PAYMENT) &&\n bonusesValue <= Math.min(bonuses, requiredBonusesToPay))\n : paymentSumValidity.isValid === EValidityStatus.IS_VALID && !!paymentSum && bonusesValue <= bonuses && bonusesValue <= requiredBonusesToPay;\n};\n","import styled, { css } from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const PayButton = styled(BaseButton)<{ isOnlyBonuses: boolean }>`\n align-self: flex-start;\n ${({ isOnlyBonuses }) => isOnlyBonuses && css`\n color: ${COLORS.TextWhite};\n background-color: none;\n background: radial-gradient(63.45% 90.07% at 28.3% 105.36%, #ED3D3D 0%, rgba(237, 61, 61, 0) 100%),\n linear-gradient(105.23deg, #B9CF31 15.62%, #FA00FF 106.65%);\n\n &:hover {\n background-color: none;\n background: radial-gradient(63.45% 90.07% at 28.3% 105.36%, #ED3D3D 0%, rgba(237, 61, 61, 0) 100%),\n linear-gradient(105.23deg, #B9CF31 15.62%, #FA00FF 106.65%);\n opacity: .7;\n }\n `};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n align-self: auto;\n }\n`;\n","import { useCallback, useMemo, useState } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useRouter } from 'next/router';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport { IPayResponse, pay } from '@r1-frontend/api-domru/api-loyalty/v1/program/pay';\n\nimport { btnSizes, btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { PolicyNote } from '@r1-frontend/ui-react/components/PolicyNote';\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { RubleSymbol } from '@r1-frontend/ui-react/experimental/purchase/cost/Cost/RubleSymbol';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { POLICY_PAGE_LINK } from '~/src/constants';\nimport { selectCardPaySum } from '~/src/features/payments-abn/components/SeasonTicketPayment/store/selectors/selectPaymentSum';\nimport { pushDataLayer } from '~/src/features/payments-abn/helpers/pushDataLayer';\nimport { IPaymentResult, setPaymentResult } from '~/src/features/payments-abn/store/actionCreators';\nimport {\n bindedCardAutoPayConnect,\n bindedCardPayment,\n newCardAutoPayConnect,\n newCardPayment,\n} from '~/src/features/payments-abn/store/actions';\nimport { selectIsPaymentValid } from '~/src/features/payments-abn/store/selectors/selectIsPaymentValid';\nimport { IQueryPaymentParams } from '~/src/features/payments-abn/types';\nimport { getAnalyticsSender } from '~/src/helpers/hooks/useAnaliticsSender';\nimport { TState } from '~/src/store';\nimport { getClientAll } from '~/src/store/actions/auth/getClientAll';\nimport { getLoyaltyInfo } from '~/src/store/actions/loyalty';\nimport selectProviderId from '~/src/store/selectors/selectProviderId';\n\nimport { useCardPayment } from './useCardPayment';\n\nimport { PayButton } from './styled';\n\n/**\n * Оплата с помощью карты\n * Реализует оплату новой картой и ранее сохраненной картой\n * @param children - для прокидывания формы оплаты\n * @todo разделить оплату новой и оплату сохраненной картой добавить фрейм в компонент для оплаты новой картой\n */\nconst CardPayment = ({ children }: { children?: JSX.Element }): JSX.Element | null => {\n /**\n * @param requestId используется при покупке оборудования (доставка), для прокидывания идентификатора заказа в \"платеж\"\n */\n\n const { query: { requestId = '', transaction, s: queryPaySum } } = useRouter();\n\n useCardPayment();\n\n const {\n auth: { accessToken, isAuth },\n payment: {\n paymentData: { paymentSum, isUseBonuses, bonusesValue, isConnectAutoPay },\n isSaveCard,\n method,\n result,\n analitycsData,\n },\n isValid,\n providerId,\n cardPaymentSum,\n } = useSelector((state: TState) => ({\n auth: state.auth,\n payment: state.payment,\n isValid: selectIsPaymentValid(state),\n providerId: selectProviderId(state),\n cardPaymentSum: selectCardPaySum(state),\n }), shallowEqual);\n\n const sendAnalytics = getAnalyticsSender(analitycsData?.category || '');\n\n const isOnlyBonuses = !cardPaymentSum && isUseBonuses && !!bonusesValue;\n\n const dispatch = useDispatch();\n\n const isMobile = useMatchMedia(`(max-width: ${wideBreakpoints.mobile})`);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const methodType = method?.methodType;\n const isAutoPayConnected = method?.isAutoPayConnected;\n\n const onBonusesPayment = useCallback(async() => {\n const isOnlyBonusesPayment = isOnlyBonuses && ((methodType === 'new-card' && !isSaveCard) || (methodType === 'card' && !isConnectAutoPay));\n\n const resp = await doRequest.apiLoyalty(\n pay(providerId, { bonusValue: bonusesValue }),\n );\n\n const respData: IPaymentResult = {\n ...result,\n isBonusesSuccess: resp.isSuccess,\n isOpenPopup: isOnlyBonusesPayment,\n };\n dispatch(getLoyaltyInfo());\n dispatch(setPaymentResult(respData));\n // TODO прояснить для чего выполняется\n if (isOnlyBonusesPayment) {\n dispatch(getClientAll());\n }\n }, [accessToken, dispatch, isConnectAutoPay, isOnlyBonuses, isSaveCard, methodType, bonusesValue, result]);\n\n const onNewCardPayment = useCallback(() => {\n pushDataLayer('click payment by new card', isSaveCard ? `save card${isConnectAutoPay ? ' and autopayment on' : ''}` : '');\n\n if (cardPaymentSum) {\n dispatch(newCardPayment({ deliveryRequestId: requestId }));\n } else if (isConnectAutoPay || isSaveCard) {\n dispatch(newCardAutoPayConnect());\n }\n }, [isSaveCard, isConnectAutoPay, cardPaymentSum, requestId, dispatch]);\n\n const onBindedCardPayment = useCallback(() => {\n pushDataLayer('click payment by old card', isConnectAutoPay ? 'autopayment on' : '');\n\n if (cardPaymentSum) {\n dispatch(bindedCardPayment({ deliveryRequestId: requestId, transaction, transactionSum: queryPaySum }));\n } else if (isConnectAutoPay) {\n dispatch(bindedCardAutoPayConnect());\n }\n }, [isConnectAutoPay, cardPaymentSum, requestId, transaction, queryPaySum, dispatch]);\n\n const onClickHandler = useCallback(async() => {\n // TODO перенести логику оплаты в thunk-экшен\n setIsLoading(true);\n\n sendAnalytics('click_payment', analitycsData?.label);\n\n if (isUseBonuses && bonusesValue) {\n await onBonusesPayment();\n }\n\n if (cardPaymentSum || isConnectAutoPay || isSaveCard) {\n methodType === 'card' ? onBindedCardPayment() : onNewCardPayment();\n }\n\n setIsLoading(false);\n }, [\n cardPaymentSum,\n bonusesValue,\n methodType,\n isSaveCard,\n isUseBonuses,\n isConnectAutoPay,\n analitycsData?.label,\n onBonusesPayment,\n onNewCardPayment,\n onBindedCardPayment,\n sendAnalytics,\n ]);\n\n const currentBtnText = useMemo(() => {\n if (!paymentSum) {\n return isConnectAutoPay ? 'Подключить автоплатёж' : 'Оплатить';\n }\n if (isConnectAutoPay && !isMobile && !isAutoPayConnected && !requestId) {\n return isOnlyBonuses ? 'Оплатить бонусами и подключить автоплатёж' : `Оплатить ${paymentSum} ${RubleSymbol} и подключить автоплатёж`;\n } else {\n return isOnlyBonuses ? 'Оплатить бонусами' : `Оплатить ${paymentSum} ${RubleSymbol}`;\n }\n }, [isConnectAutoPay, isAutoPayConnected, isMobile, isOnlyBonuses, paymentSum, requestId]);\n\n if (!(method?.methodType === 'card' || method?.methodType === 'new-card')) {\n return null;\n }\n\n return (\n \n Детали оплаты
\n\n {children}\n\n \n {!isAuth &&\n \n }\n \n \n \n );\n};\n\nexport default CardPayment;\n","import { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport flatMap from 'lodash/flatMap';\n\nimport { IBindingCard } from '@r1-frontend/api-domru/api-profile/v2/info/all/dto/ResponseDto';\n\nimport { EAdditionalMethodId, IMethodData } from '@r1-frontend/ui-react/organisms/Payment/PaymentMethod';\nimport PaymentMethod from '@r1-frontend/ui-react/organisms/Payment/PaymentMethod';\n\nimport { addCardMethods } from '~/src/features/payments-abn/store/actions/addNewPayMethods';\nimport { selectCardsWithPaySystem } from '~/src/features/payments-abn/store/selectors/cards';\nimport { TState } from '~/src/store';\n\nimport { SaveNewCard } from './SaveNewCard';\n\nconst newCardMethod: IMethodData = {\n id: EAdditionalMethodId.newCard,\n methodType: 'new-card',\n label: '',\n value: 'new-card',\n imagePath: '/static/images/payments-abn/new-card.png',\n imageAlt: 'Логотип банковской карты',\n isAutoPayConnected: false,\n isIcon: true,\n additionalBlock: SaveNewCard,\n widget: PaymentMethod,\n};\n\n/**\n * Добавляет методы оплаты ранее сохраненными картами\n */\nexport const useCardPayment = (): void => {\n const dispatch = useDispatch();\n\n const { isAuth, items } = useSelector((state: TState) => ({\n isAuth: state.auth.isAuth,\n items: selectCardsWithPaySystem(state),\n }), shallowEqual);\n\n newCardMethod.label = isAuth ? 'Новая карта' : 'Картой';\n\n const { isCards, cardGroups } = items || {};\n\n if (isCards) {\n const _cards: IBindingCard[] = flatMap(cardGroups, 'cardsList');\n\n _cards.sort(_card => _card.autoPayStatus ? -1 : 1);\n\n const result: IMethodData[] = _cards.map(_card => (\n {\n id: _card.id.toString(),\n methodType: 'card',\n label: _card.numberWithPaySystem || '',\n value: 'card',\n imagePath: `/static/images/payments-abn/${_card.paySystem ? 'pay-systems/' + _card.paySystem : 'stub'}.png`,\n imageAlt: `Логотип ${_card.paySystem || 'банковской карты'}`,\n isAutoPayConnected: _card.autoPayStatus,\n widget: PaymentMethod,\n }\n ));\n\n if (result.length) {\n dispatch(addCardMethods([...result, newCardMethod]));\n }\n } else {\n dispatch(addCardMethods([newCardMethod]));\n }\n};\n","import { useDispatch, useSelector } from 'react-redux';\n\nimport BaseCheckbox from '@r1-frontend/ui-react/components/controls/baseCheckbox';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { ListContainer } from '@r1-frontend/ui-react/experimental/containers';\n\nimport { toggleConnectAutoPayStatus, toggleSaveCardStatus } from '~/src/features/payments-abn/store/actionCreators';\nimport { TState } from '~/src/store';\n\nexport const SaveNewCard = (): JSX.Element => {\n const {\n auth: { isAuth },\n payment: {\n isSaveCard,\n },\n } = useSelector((state: TState) => state);\n\n const dispatch = useDispatch();\n\n\n const onToggleSaveCard = () => {\n dispatch(toggleSaveCardStatus(!isSaveCard));\n dispatch(toggleConnectAutoPayStatus(!isSaveCard));\n };\n\n return (\n \n Данные карты нужно будет ввести после нажатия на кнопку «Оплатить»\n {isAuth && (\n \n Сохранить карту после оплаты\n \n )}\n \n );\n};\n","import { createSelector } from 'reselect';\n\nimport { EContactStatuses } from '@r1-frontend/api-domru/api-profile/v2/info/all/dto/ResponseDto';\n\nimport { TState } from '~/src/store';\n\nexport const confirmedEmails = createSelector(\n (state: TState) => state.auth.clientContacts?.email,\n emails => {\n return emails?.length\n ? emails\n .filter(_email => _email.status === EContactStatuses.confirmed && !!_email.value)\n .map(_email => ({ value: _email.id, label: _email.value }))\n : [];\n },\n);\n","import styled from 'styled-components';\n\nimport InputSimple from '@r1-frontend/ui-react/components/inputSimple';\n\nexport const InputEmail = styled(InputSimple)`\n margin: 0;\n`;\n","import { useState } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\n\nimport { VALIDATION_REGEXP } from '@r1-frontend/ui-react/components/input/input';\nimport Select, { IOption } from '@r1-frontend/ui-react/components/select/select';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { FullWidthListContainer } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport {\n fillEmail,\n selectEmail,\n} from '~/src/features/payments-abn/store/actionCreators';\nimport { confirmedEmails } from '~/src/features/payments-abn/store/selectors/emails';\nimport { TState } from '~/src/store';\n\nimport * as ST from './styled';\n\n/**\n * Форма для ввода email\n */\nexport const EmailInput = ({ ...rest }): JSX.Element => {\n const dispatch = useDispatch();\n\n const { paymentData, emails } = useSelector((state: TState) => ({\n paymentData: state.payment.paymentData,\n emails: confirmedEmails(state),\n }), shallowEqual);\n\n const { email } = paymentData;\n\n const [bufferEmail, setBufferEmail] = useState('');\n const [isEmailValid, setIsEmailValid] = useState(true);\n\n const onChangeEmailHandler = (event: React.ChangeEvent) => {\n setBufferEmail(event.target.value);\n };\n\n const onBlurEmailHandler = (event: React.FocusEvent) => {\n if (VALIDATION_REGEXP.email.test(event.target.value) || event.target.value === '') {\n setIsEmailValid(true);\n dispatch(fillEmail(event.target.value));\n } else {\n setIsEmailValid(false);\n }\n };\n\n return (\n \n Email для отправки чека\n {typeof email === 'string'\n ? \n : \n );\n};\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport SlideCarousel from '@r1-frontend/ui-react/components/SlideCarousel';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const MethodCarousel = styled(SlideCarousel)`\n margin-left: -4px;\n`;\n\nexport const SaveCardBlock = styled.div`\n flex-direction: column;\n flex-wrap: nowrap;\n gap: 12px;\n`;\n\nexport const SaveCardInfo = styled.p`\n ${FONTS.S};\n color: ${COLORS.TextPrimary};\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n ${FONTS.XS};\n }\n`;\n\n","\nimport { useEffect, useLayoutEffect } from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport isEqual from 'lodash/isEqual';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { IMethodData } from '@r1-frontend/ui-react/organisms/Payment/PaymentMethod';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { pushDataLayer } from '~/src/features/payments-abn/helpers/pushDataLayer';\nimport { clearPaymentMethods, setPaymentMethod, setPaymentResult, toggleConnectAutoPayStatus, toggleSaveCardStatus } from '~/src/features/payments-abn/store/actionCreators';\nimport { initialPaymentResult } from '~/src/features/payments-abn/store/reducers';\nimport { TState } from '~/src/store';\n\nimport { ActionSectionContent, ActionSectionTitle, ActionSectionWrapper } from '~/src/features/payments-abn/styled';\nimport * as ST from './styled';\n\n/**\n * Выводит карточки для переключения способов оплаты\n */\nexport const PaymentMethodCards = ({ isShowTitle = true }: { isShowTitle?: boolean }): JSX.Element | null => {\n const dispatch = useDispatch();\n\n const {\n isAuth,\n methods,\n currentMethod,\n result,\n } = useSelector((state: TState) => ({\n isAuth: state.auth.isAuth,\n methods: state.payment.methods,\n currentMethod: state.payment.method,\n result: state.payment.result,\n }), shallowEqual);\n\n useLayoutEffect(() => {\n dispatch(clearPaymentMethods());\n }, []);\n\n useEffect(() => {\n if (!currentMethod) {\n const [first] = methods;\n dispatch(setPaymentMethod(first));\n }\n }, [currentMethod, methods]);\n\n const isTablet = useMatchMedia(`(max-width: ${wideBreakpoints.tablet})`);\n\n const currentSlideIndex = methods.findIndex(method => method.id === currentMethod?.id);\n\n const onSelectMethod = (method: IMethodData) => {\n pushDataLayer(`click payment by ${method.methodType}`, '');\n dispatch(setPaymentMethod(method));\n const cardStatus = isAuth && method.methodType === 'new-card';\n dispatch(toggleSaveCardStatus(cardStatus));\n dispatch(toggleConnectAutoPayStatus(cardStatus));\n\n if (!isEqual(result, initialPaymentResult)) {\n dispatch(setPaymentResult(initialPaymentResult));\n }\n };\n\n const AdditionalBlock = currentMethod?.additionalBlock;\n\n if (result.frameUrl) {\n return null;\n }\n\n return (\n \n {isShowTitle && Cпособы оплаты}\n \n \n {methods.map(method => {\n const PayWidget = method.widget;\n\n if (!PayWidget) {\n return null;\n }\n\n return ;\n })}\n \n {AdditionalBlock\n ? \n : null\n }\n \n \n );\n};\n","\nimport { useCallback } from 'react';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { isClientSide } from '@r1-frontend/shared/helpers/ssr';\n\nconst analiticsSender = (category: string, action: string, label?: string) => {\n isClientSide() && dataLayerPush({\n event: EVENTS.UAevent,\n category,\n action,\n label,\n });\n};\n\n/**\n * Возвращает функцию для отправки аналитики\n */\nexport const useAnalyticsSender = (category: string) => {\n return useCallback((action: string, label?: string): void => {\n analiticsSender(category, action, label);\n }, [category]);\n};\n\n/**\n * Возвращает функцию для отправки аналитики, без useCallback\n */\nexport const getAnalyticsSender = (category: string) => {\n return (action: string, label?: string): void => {\n analiticsSender(category, action, label);\n };\n};\n","import { IInfo } from '@r1-frontend/api-domru/api-loyalty/v1/program/info';\n\nimport { IAction } from '~/src/store';\nimport { LOYALTY_AVAILABILITY, LOYALTY_INFO } from '~/src/store/actionTypes/loyalty';\nimport { IAvailiabilityData } from '~/src/store/reducers/loyalty';\n\nexport const setLoyaltyAvailability = (data: IAvailiabilityData): IAction => {\n return {\n type: LOYALTY_AVAILABILITY,\n payload: data,\n };\n};\n\nexport const setLoyaltyInfo = (info: IInfo): IAction => {\n return {\n type: LOYALTY_INFO,\n payload: info,\n };\n};\n","import { doRequest } from '@r1-frontend/do-request';\nimport {\n availability,\n EAvailability,\n IAvailability,\n} from '@r1-frontend/api-domru/api-loyalty/v1/program/availability';\nimport { IInfo, info } from '@r1-frontend/api-domru/api-loyalty/v1/program/info';\n\nimport { TDispatch, TGetState } from '~/src/store';\nimport { setLoyaltyAvailability, setLoyaltyInfo } from '~/src/store/actionCreators/loyalty';\nimport selectProviderId from '~/src/store/selectors/selectProviderId';\n\nexport function getLoyaltyAvailability() {\n return async(dispatch: TDispatch, getState: TGetState): Promise => {\n const state = getState();\n const providerId = selectProviderId(state);\n const plAvailable = state.city.currentCity.plAvailable;\n\n if (plAvailable) {\n const resp = await doRequest.apiLoyalty(\n availability(providerId),\n );\n\n if (resp.isSuccess) {\n const { available } = resp.payload;\n const isRegistered = available === EAvailability.REGISTRED;\n\n dispatch(setLoyaltyAvailability({\n available,\n isAvailable: available === EAvailability.AVAILABLE,\n isRegistered,\n }));\n\n if (isRegistered) {\n await getLoyaltyInfo()(dispatch, getState);\n }\n }\n }\n };\n}\n\nexport function getLoyaltyInfo() {\n return async(dispatch: TDispatch, getState: TGetState): Promise => {\n const state = getState();\n const providerId = selectProviderId(state);\n\n const resp = await doRequest.apiLoyalty(\n info(providerId),\n );\n\n if (resp.isSuccess) {\n dispatch(setLoyaltyInfo(resp.payload));\n }\n };\n}\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nexport interface IInfo {\n loyaltyNumber: string,\n loyaltyLevel: number,\n nextLevelDate: string,\n loyaltyCash: number,\n bonuses: number,\n expireDate: string,\n expireBonuses: number,\n progressBar: number,\n registrationDate: string,\n cashbackPercentAfterLevelUp: number,\n maxLoyaltyCash: number,\n /**\n * Дата, до которой нужно внести платеж, чтобы получить кешбэк\n * Для договоров со схемой оплаты НСН дата = null\n * @see https://kb.ertelecom.ru/pages/viewpage.action?pageId=510826945\n */\n dateToPay?: string | null,\n}\n\n/*\n* Информация о программе лояльности\n* https://master.api-loyalty.sandbox.d2c.r-one.io/docs/v1#/Loyalty%20Program/95af4e7003e4622dcc2579c1c5ff77bf\n* */\nexport const info = (providerId: number): IRequest => ({\n uri: '/v1/program/info',\n method: 'GET',\n withAuth: true,\n headers: { providerId: `${providerId}` },\n});\n","import styled, { css } from 'styled-components';\n\n// @ts-ignore\nimport promoMark from '../../../assets/img/check-promo.svg';\n// @ts-ignore\nimport checkMark from '../../../assets/img/check-white.svg';\nimport { COLORS } from '../../../tokens/colors';\nimport { checkboxSizes, getSizes, TControlSize } from '../baseControlsData';\n\nimport { TCheckboxType } from './index';\n\nconst BORDER_WIDTH = 2;\n\nconst getCheckboxSizes = (size: TControlSize) => getSizes(size, checkboxSizes);\n\ntype IStyleProps = {\n size: TControlSize,\n checkType: TCheckboxType,\n invertColor?: boolean,\n disabled: boolean,\n withLabel: boolean,\n}\n\nexport const Label = styled.label`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n margin: 0;\n padding: 0;\n ${p => getCheckboxSizes(p.size).font};\n color: ${({ disabled, invertColor }) =>\n disabled\n ? COLORS.TextDisabled\n : invertColor\n ? COLORS.TextWhite\n : COLORS.TextPrimary };\n user-select: none;\n cursor: ${p => p.disabled ? 'initial' : 'pointer'};\n\n input[type=\"checkbox\"] {\n appearance: none;\n position: relative;\n flex: 0 0 auto;\n width: ${p => getCheckboxSizes(p.size).inputSize}px;\n height: ${p => getCheckboxSizes(p.size).inputSize}px;\n margin: 0;\n margin-right: ${p => p.withLabel ? getCheckboxSizes(p.size).rMargin + 'px' : 0 };\n padding: 0;\n background-color: ${COLORS.BgMain};\n border-width: ${BORDER_WIDTH}px;\n border-style: solid;\n border-color: ${COLORS.Brand_Blue};\n border-radius: 6px;\n transition: .3s;\n outline: none;\n box-sizing: border-box;\n cursor: inherit;\n\n @media (hover: hover) {\n &:hover {\n border-color: ${COLORS.Link};\n }\n }\n\n &:required:invalid {\n border-color: ${COLORS.Error};\n background-color: ${COLORS.BgError};\n\n @media (hover: hover) {\n &:hover {\n border-color: ${COLORS.Link};\n background-color: ${COLORS.BgMain};\n }\n }\n }\n\n &:disabled {\n border-color: ${COLORS.GRAY_LIGHT};\n background-color: ${COLORS.GRAY_LIGHT};\n cursor: default;\n pointer-events: none;\n\n @media (hover: hover) {\n &:hover {\n border-color: ${COLORS.GRAY_LIGHT};\n }\n }\n }\n\n &:checked {\n border-color: ${ ({ invertColor }) => invertColor ? COLORS.BgSurface : COLORS.Control};\n background-color: ${ ({ invertColor }) => invertColor ? COLORS.BgSurface : COLORS.Control};\n\n &:after {\n content: '';\n position: absolute;\n top: -1px;\n left: -1px;\n width: calc(100% + ${BORDER_WIDTH}px);\n height: calc(100% + ${BORDER_WIDTH}px);\n background-color: ${ ({ invertColor }) => invertColor ? COLORS.Control : COLORS.BgMain};\n mask-image: url(${checkMark});\n mask-size: ${p => `${getCheckboxSizes(p.size).iconWidth}px ${getCheckboxSizes(p.size).iconHeight}px`};\n mask-position: center;\n mask-repeat: no-repeat;\n }\n\n @media (hover: hover) {\n &:hover {\n border-color: ${COLORS.Link};\n background-color: ${COLORS.Outline_Dark};\n }\n }\n\n &:disabled {\n border-color: ${COLORS.GRAY_LIGHT};\n background-color: ${COLORS.GRAY_LIGHT};\n pointer-events: none;\n\n &:after {\n background-color: ${COLORS.GRAY_DARK};\n }\n }\n }\n\n ${({ size, checkType }) => checkType === 'promo' && css`\n border-color: ${COLORS.Brand_Blue};\n\n &:before {\n content: '';\n position: absolute;\n top: -1px;\n left: -1px;\n width: calc(100% + ${BORDER_WIDTH}px);\n height: calc(100% + ${BORDER_WIDTH}px);\n background-color: ${COLORS.Brand_Blue};\n mask-image: url(${promoMark});\n mask-size: ${getCheckboxSizes(size).promoIconSize}px;\n mask-position: center;\n mask-repeat: no-repeat;\n }\n\n @media (hover: hover) {\n &:hover {\n border-color: ${COLORS.Link};\n background-color: ${COLORS.Outline_Dark};\n\n &:before {\n background-color: ${COLORS.BgMain};\n }\n }\n }\n\n &:required:invalid {\n &:before {\n background-color: ${COLORS.Error};\n }\n }\n\n &:focus-visible {\n border-color: ${COLORS.Link};\n background-color: ${COLORS.Outline_Dark};\n\n &:before {\n background-color: ${COLORS.BgMain};\n }\n }\n\n &:checked:before,\n &:required:invalid:hover:before {\n display: none;\n }\n\n &:disabled {\n border-color: ${COLORS.GRAY_LIGHT};\n background-color: ${COLORS.GRAY_LIGHT};\n pointer-events: none;\n\n &:before {\n display: none;\n }\n\n @media (hover: hover) {\n &:hover {\n background-color: ${COLORS.GRAY_DARK};\n }\n }\n }\n `};\n }\n`;\n","import React, { FC, useCallback } from 'react';\n\nimport { TControlSize } from '../baseControlsData';\n\nimport { Label } from './styled';\n\nexport type TCheckboxType = 'default' | 'promo';\n\nexport interface ICheckboxProps {\n size?: TControlSize,\n checkType?: TCheckboxType,\n invertColor?: boolean,\n id?: string,\n name?: string,\n value?: string,\n checked?: boolean,\n disabled?: boolean,\n required?: boolean,\n onChange?: (event?: React.ChangeEvent) => void,\n className?: string,\n [key: string]: unknown,\n}\n\nconst BaseCheckbox: FC = ({\n size = 'XS',\n checkType = 'default',\n id,\n name = '',\n value = '',\n checked,\n disabled = false,\n required,\n children,\n onChange,\n className,\n ...props\n}) => {\n const onChangeHandler = useCallback((event: React.ChangeEvent) => {\n if (!disabled) {\n onChange && onChange(event);\n }\n }, [disabled, onChange]);\n\n return (\n \n );\n};\n\nexport default BaseCheckbox;\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuNzQ2MjE2IDYuMDM2ODhDMC43NDYyMTYgNS42MjI2NyAxLjA4MiA1LjI4Njg4IDEuNDk2MjIgNS4yODY4OEgxMC43MTYyQzExLjEzMDQgNS4yODY4OCAxMS40NjYyIDUuNjIyNjcgMTEuNDY2MiA2LjAzNjg4QzExLjQ2NjIgNi40NTEwOSAxMS4xMzA0IDYuNzg2ODggMTAuNzE2MiA2Ljc4Njg4SDEuNDk2MjJDMS4wODIgNi43ODY4OCAwLjc0NjIxNiA2LjQ1MTA5IDAuNzQ2MjE2IDYuMDM2ODhaIiBmaWxsPSIjRTMwODEzIi8+CjxwYXRoIGQ9Ik02LjEwNjIyIDExLjM5NjlDNS42OTIgMTEuMzk2OSA1LjM1NjIyIDExLjA2MTEgNS4zNTYyMiAxMC42NDY5TDUuMzU2MjIgMS40MjY4OEM1LjM1NjIyIDEuMDEyNjcgNS42OTIgMC42NzY4OCA2LjEwNjIyIDAuNjc2ODhDNi41MjA0MyAwLjY3Njg4IDYuODU2MjIgMS4wMTI2NyA2Ljg1NjIyIDEuNDI2ODhMNi44NTYyMiAxMC42NDY5QzYuODU2MjIgMTEuMDYxMSA2LjUyMDQzIDExLjM5NjkgNi4xMDYyMiAxMS4zOTY5WiIgZmlsbD0iI0UzMDgxMyIvPgo8L3N2Zz4K\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxNCAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy41NjA3IDFDMTMuODUzNiAxLjI5Mjg5IDEzLjg1MzYgMS43Njc3NyAxMy41NjA3IDIuMDYwNjZMNi4yNDYyNyA5LjA2MzdDNS45NTM0MiA5LjM1NjU1IDUuNDc4NjMgOS4zNTY2IDUuMTg1NzIgOS4wNjM4MUwwLjg0MTU5MiA0LjcyMTA2QzAuNTQ4NjM4IDQuNDI4MjMgMC41NDg1MzggMy45NTMzNSAwLjg0MTM2OSAzLjY2MDRDMS4xMzQyIDMuMzY3NDQgMS42MDkwNyAzLjM2NzM0IDEuOTAyMDMgMy42NjAxOEw1LjcxNTgzIDcuNDcyODNMMTIuNSAxQzEyLjc5MjkgMC43MDcxMDcgMTMuMjY3OCAwLjcwNzEwNyAxMy41NjA3IDFaIiBmaWxsPSIjRkFGQUZBIi8+Cjwvc3ZnPgo=\""],"names":["isAbnProgramTermsEnabled","getIsAbnLoyaltyProgramEnabled","selectIsPaymentValid","state","payment","paymentData","paymentSum","isUseBonuses","bonusesValue","isConnectAutoPay","paymentSumValidity","info","loyalty","bonuses","requiredBonusesToPay","MAX_PAYMENT","Math","min","isValid","EValidityStatus","PayButton","styled","BaseButton","isOnlyBonuses","css","COLORS","wideBreakpoints","children","useRouter","query","requestId","transaction","s","useCardPayment","useSelector","auth","providerId","selectProviderId","cardPaymentSum","selectCardPaySum","shallowEqual","accessToken","isAuth","isSaveCard","method","result","analitycsData","sendAnalytics","getAnalyticsSender","category","dispatch","useDispatch","isMobile","useMatchMedia","useState","isLoading","setIsLoading","methodType","isAutoPayConnected","onBonusesPayment","useCallback","isOnlyBonusesPayment","resp","respData","doRequest","pay","bonusValue","isBonusesSuccess","isSuccess","isOpenPopup","getLoyaltyInfo","setPaymentResult","getClientAll","onNewCardPayment","pushDataLayer","newCardPayment","deliveryRequestId","newCardAutoPayConnect","onBindedCardPayment","bindedCardPayment","transactionSum","queryPaySum","bindedCardAutoPayConnect","onClickHandler","label","currentBtnText","useMemo","RubleSymbol","FullWidthListContainer","$direction","$size","H3","$withIndent","PolicyNote","data-test","buttonText","agreeUrl","POLICY_PAGE_LINK","type","btnTypes","size","btnSizes","text","onClick","disabled","newCardMethod","id","EAdditionalMethodId","value","imagePath","imageAlt","isIcon","additionalBlock","ListContainer","Paragraph4","BaseCheckbox","checked","onChange","toggleSaveCardStatus","toggleConnectAutoPayStatus","widget","PaymentMethod","items","selectCardsWithPaySystem","isCards","cardGroups","_cards","flatMap","sort","_card","autoPayStatus","map","toString","numberWithPaySystem","paySystem","length","addCardMethods","confirmedEmails","createSelector","clientContacts","email","emails","filter","_email","status","EContactStatuses","InputEmail","InputSimple","EmailInput","rest","bufferEmail","setBufferEmail","isEmailValid","setIsEmailValid","$smaller","$color","ST","inputType","event","target","onBlur","VALIDATION_REGEXP","fillEmail","isNotValid","errorMessage","Select","options","option","selectEmail","MethodCarousel","SlideCarousel","PaymentMethodCards","FONTS","isShowTitle","methods","currentMethod","useLayoutEffect","clearPaymentMethods","useEffect","first","setPaymentMethod","isTablet","currentSlideIndex","findIndex","onSelectMethod","cardStatus","isEqual","initialPaymentResult","AdditionalBlock","frameUrl","ActionSectionWrapper","ActionSectionTitle","ActionSectionContent","className","withoutArrows","withoutDots","slideWidth","cellSpacing","initialSlideHeight","slideIndex","PayWidget","isChecked","analiticsSender","action","isClientSide","dataLayerPush","EVENTS","useAnalyticsSender","setLoyaltyInfo","LOYALTY_INFO","payload","getLoyaltyAvailability","getState","available","isRegistered","city","currentCity","plAvailable","availability","EAvailability","data","isAvailable","LOYALTY_AVAILABILITY","uri","withAuth","headers","getCheckboxSizes","getSizes","checkboxSizes","Label","p","font","invertColor","inputSize","withLabel","rMargin","checkMark","iconWidth","iconHeight","checkType","promoMark","promoIconSize","name","required","props","onChangeHandler","input","module","exports"],"sourceRoot":""}