{"version":3,"file":"static/chunks/4745-3479b7f186db1c94.js","mappings":"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","sources":["webpack://_N_E/./src/components/ButtonWithTimer/index.tsx","webpack://_N_E/./src/features/lk/vases/types/EVasCategory.ts","webpack://_N_E/./src/store/selectors/service.ts","webpack://_N_E/./src/features/domru-tv/packages/helpers/epgPackageFormatter.ts","webpack://_N_E/./src/store/selectors/tvPackages.ts","webpack://_N_E/./src/store/selectors/vas.ts","webpack://_N_E/../../packages/api-domru/src/api-profile/v1/vas/dto/ResponseDto.ts","webpack://_N_E/../../packages/api-domru/src/phone-validator/validation/send.ts","webpack://_N_E/../../packages/api-domru/src/phone-validator/validation/validate.ts","webpack://_N_E/../../packages/shared/src/hooks/useTimer.ts","webpack://_N_E/../../packages/ui-react/src/components/KebabMenu/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/KebabMenu/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/controls/baseCheckbox/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/controls/baseCheckbox/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/controls/baseControlsData.ts","webpack://_N_E/../../packages/ui-react/src/assets/img/check-promo.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/check-white.svg","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/three-dots.svg"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport dayjs, { UnitTypeLongPlural } from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { NBSP } from '@r1-frontend/ui-react/tokens/symbols';\nimport { TTimeStatus } from '@r1-frontend/shared/hooks/useTimer';\n\ndayjs.extend(duration);\n\ninterface ITimerConfig {\n units: Partial<{ [unit in Exclude | 'weeks']: number }>,\n format?: string,\n postfix: string,\n}\n\nconst timerConfig: ITimerConfig = {\n units: {},\n postfix: '',\n};\n\ninterface IProps {\n status: TTimeStatus,\n onBtnClick: () => void,\n isLoading?: boolean,\n isDisabled?: boolean,\n autoStart?: boolean,\n seconds: number,\n onStart: (seconds: number) => void,\n}\n\nexport const ButtonWithTimer = ({\n status,\n onBtnClick,\n isLoading,\n isDisabled,\n autoStart = false,\n seconds,\n onStart,\n}: IProps): JSX.Element => {\n const startHandler = () => {\n if (seconds === 0) {\n onStart(60);\n onBtnClick();\n }\n };\n\n useEffect(() => {\n if (autoStart) {\n startHandler();\n }\n }, [autoStart]);\n\n const timerText = useMemo(() => {\n const _minutes = ~~(seconds / 60);\n\n timerConfig.units.minutes = _minutes;\n timerConfig.units.seconds = seconds % 60;\n timerConfig.format = _minutes ? 'm:ss' : 's';\n timerConfig.postfix = _minutes ? 'мин' : 'сек';\n\n const timer = dayjs.duration(timerConfig.units).format(timerConfig.format);\n\n return `Повторный код через ${timer}${NBSP}${timerConfig.postfix}`;\n }, [seconds]);\n\n return (\n \n {status === 'progress' ? timerText : 'Отправить код еще раз'}\n \n );\n};\n","export enum EVasCategory {\n 'antiviruses' = '6.1',\n 'onlineCinemas' = '6.2',\n 'watchControl' = '6.4',\n 'watchEverywhere' = '6.12',\n 'games' = '6.13',\n 'partnerService' = '6.6',\n 'multimedia' = '6.21',\n 'speedBonuses' = '3',\n 'bundles' = '11',\n 'tv' = '1',\n 'service' = '5',\n}\n\nexport enum EVasContentType {\n 'antiviruses' = 1,\n 'onlineCinemas' = 2,\n 'games' = 13,\n 'partnerService' = 6,\n 'multimedia' = 21,\n}\n","import { createSelector } from 'reselect';\n\nimport { IServices } from '@r1-frontend/api-domru/api-profile/v2/info/all/dto/ResponseDto';\n\nimport { PRODUCTS } from '~/src/constants';\nimport { TState } from '~/src/store';\nimport { IClientPersonal } from '~/src/store/reducers/auth';\n\nexport const selectClientServices = (state: TState): IServices[] | null => {\n return state.auth.clientProducts?.services || null;\n};\n\n/**\n * Получить agreementId\n *\n * @function\n * @name store.selectors.service.selectClientAgreementId\n * @param {object} state - Состояние\n * @returns {number}\n */\nexport const selectClientAgreementId = (state: TState): IClientPersonal['agreementId'] | null => {\n return state.auth.clientPersonal?.agreementId || null;\n};\n\nexport const selectActiveServicesIds = createSelector(\n selectClientServices,\n (items) => {\n if (items == null) {\n return [];\n }\n return items\n .reduce((acc, val) => {\n if (val.activated === 1) {\n acc.push(val.productId);\n }\n return acc;\n }, []);\n },\n);\n\nexport const selectNotSuspendServicesIds = createSelector(\n selectClientServices,\n (items) => {\n if (!items) {\n return [];\n }\n return items\n .reduce((acc, val) => {\n if (val.suspendStatus === 0) {\n acc.push(val.productId);\n }\n return acc;\n }, []);\n },\n);\n\nexport const selectInternetService = createSelector(\n selectClientServices,\n (items: IServices[] | null) => items ? items.find((item) => item.productId === PRODUCTS.internet) : null,\n);\n\nexport const selectTerminalResource = function(state: TState): number | null {\n const internetServiceItem = selectInternetService(state);\n if (!internetServiceItem) {\n return null;\n }\n return internetServiceItem.terminalResources[0].id;\n};\n","import { EChannelQuality, IEpgTvPacket, ITvPackage } from '~/src/store/reducers/tvPackages';\n\nexport const epg2ProfileTvPackage = (data: IEpgTvPacket[]): ITvPackage[] => {\n return data.map(epgPackage => {\n const { id, alias, body, channels, image680x280, price, themes, title, weight } = epgPackage;\n\n const { channelsCount, channelsCountHd } = channels?.reduce((acc, channel) => {\n acc.channelsCount++;\n\n channel.quality === EChannelQuality.HD && acc.channelsCountHd++;\n\n return acc;\n }, {\n channelsCount: 0,\n channelsCountHd: 0,\n });\n\n return {\n id: +id,\n active: 0,\n alias,\n cost: price,\n channelsCount,\n channelsCountHd,\n description: body,\n image: image680x280,\n name: title,\n tryAndBuy: null,\n channels,\n themes,\n weight,\n };\n });\n};\n","import { createSelector } from 'reselect';\n\nimport { epg2ProfileTvPackage } from '~/src/features/domru-tv/packages/helpers/epgPackageFormatter';\nimport { TState } from '~/src/store';\nimport { IPackageTheme, ITvPackage } from '~/src/store/reducers/tvPackages';\n\nexport interface IChannel {\n [key: string]: any,\n}\n\nexport function selectPackagesInTariff(state: TState): Array {\n return state.tvPackages.connectedInTariff;\n}\n\nexport function selectAllProfileTvPackages(state: TState): Array {\n return [...state.tvPackages.connectedInTariff, ...state.tvPackages.connectedOutTariff, ...state.tvPackages.canConnect];\n}\n\nexport const selectFormattedTvPackages = createSelector(\n (state: TState) => state.tvPackages.allPackages,\n tvPackages => epg2ProfileTvPackage(tvPackages),\n);\n\nexport const selectPackagesThemes = createSelector(\n [\n (state: TState) => state.auth.isAuth,\n selectAllProfileTvPackages,\n selectFormattedTvPackages,\n ],\n (isAuth, profileTvPackages, epgTvPackages) => {\n const tvPackages = isAuth ? profileTvPackages : epgTvPackages;\n\n const themesTitles: string[] = [];\n const noThemePackages: IPackageTheme = {\n id: 0,\n title: 'Прочие',\n packets: [],\n };\n\n const themePackages = tvPackages.reduce((acc: IPackageTheme[], tvPackage) => {\n if (tvPackage.themes?.length) {\n tvPackage.themes.forEach(pakcageTheme => {\n if (!themesTitles.includes(pakcageTheme.title)) {\n themesTitles.push(pakcageTheme.title);\n const newTheme = {\n ...pakcageTheme,\n packets: [tvPackage],\n };\n acc.push(newTheme);\n } else {\n acc.forEach(_theme => {\n if (pakcageTheme.title === _theme.title) {\n _theme.packets.push(tvPackage);\n }\n });\n }\n });\n } else {\n noThemePackages.packets.push(tvPackage);\n }\n\n return acc;\n }, []);\n\n return [...themePackages.sort((a, b) => a.id - b.id), noThemePackages];\n },\n);\n\nexport function selectTrialPackage(state: TState): ITvPackage | null {\n return state.tvPackages.trialPackage;\n}\n","import groupBy from 'lodash/groupBy';\nimport orderBy from 'lodash/orderBy';\nimport remove from 'lodash/remove';\nimport { createSelector } from 'reselect';\n\nimport { EVasesPromoCodes, IAdditionalProps, IVasInfo } from '@r1-frontend/api-domru/api-profile/v1/vas/dto/ResponseDto';\n\nimport { TState } from '~/src/store';\n\nexport const selectAllVas = createSelector(\n (state: TState) => state.vas,\n vasInfo => {\n return [...vasInfo.default, ...vasInfo.antivirus].sort((a, b) => b.includedAgr - a.includedAgr);\n },\n);\n\nexport const multiBundleId = 1468;\n\ninterface IPriceOptionItem {\n count: number,\n price: number,\n discount?: number,\n}\n\nexport interface IMultibundleAdditional extends IAdditionalProps {\n priceOptions: IPriceOptionItem[],\n subscriptionsSocIds: {\n active: number[],\n inactive: number[],\n },\n}\n\nexport interface ISubscriptionAdditional extends IAdditionalProps {\n multiBundle?: {\n socId: number,\n exclusive: 0 | 1,\n phone: null | string,\n active: 0 | 1,\n },\n}\n\ntype TSubscriptions = IMultibundleAdditional & ISubscriptionAdditional;\n\nexport interface IFullMultibundle extends IVasInfo {\n subscriptions: IVasInfo[],\n widgetOrder?: EVasOrder,\n}\n\nexport const selectMultibundleAndSubscriptions = createSelector(\n (state: TState) => state.vas?.subscriptions as unknown as IVasInfo[],\n (vasSubscriptions) => {\n const groupedSubscriptions = groupBy(vasSubscriptions, ({ vasId }) => vasId === multiBundleId);\n const subscriptions: IVasInfo[] = groupedSubscriptions.false;\n\n if (groupedSubscriptions.true?.length) {\n const multibundle: IVasInfo = groupedSubscriptions.true[0];\n const subscriptionsInMultibundle = remove(\n subscriptions,\n sub => sub.additionalProps.multiBundle && multibundle.additionalProps.subscriptionsSocIds.active.includes(sub.additionalProps.multiBundle.socId),\n );\n const fullMultibundle: IFullMultibundle = { ...multibundle, subscriptions: subscriptionsInMultibundle };\n\n return {\n multibundle: fullMultibundle,\n subscriptions,\n };\n }\n\n return {\n multibundle: null,\n subscriptions,\n };\n },\n);\n\nexport const selectInactiveSubscriptions = createSelector(\n [\n (state: TState) => state.vas.isLoadingSubscriptions,\n selectMultibundleAndSubscriptions,\n ],\n (isLoadingSubscriptions, { multibundle, subscriptions }) => ({\n multibundle,\n subscriptions: subscriptions?.filter(({ activeVas }) => !activeVas),\n isLoadingSubscriptions,\n }),\n);\n\nenum EVasTypes {\n contents = 'contents',\n ipAddress = 'ip_address',\n speedBonus = 'speed_bonus',\n tvPacks = 'tv_packs',\n multibundle = 'multibundle',\n}\n\nexport enum EVasOrder {\n default = -1,\n multibundle = 0,\n tvPackets = 1,\n standart = 2,\n promoCode = 3,\n speedBonus = 4,\n staticIp = 5,\n watchControl = 6,\n watchEverywhere = 7,\n antivirus = 8,\n}\n\nconst contentTypeIds = {\n antivirus: [1, 3, 9],\n subscription: 2,\n watchControl: 4,\n watchEverywhere: 12,\n};\n\nexport interface IVasWithOrder extends IVasInfo {\n widgetOrder: EVasOrder,\n subscriptions?: IVasInfo[],\n}\n\nexport const selectVasByOrder = createSelector(\n selectAllVas,\n allVases => {\n const vases = [...allVases];\n\n if (vases.length) {\n const multibundle = remove(vases, vas => vas.type === EVasTypes.multibundle)[0] as unknown as IVasInfo;\n const multibundleFull: IVasWithOrder | undefined = multibundle\n ? { ...multibundle, widgetOrder: EVasOrder.multibundle, subscriptions: [] }\n : undefined;\n\n const vasWithOrder = vases.reduce((acc: IVasWithOrder[], currentVas) => {\n const vas: IVasWithOrder = { ...currentVas, widgetOrder: EVasOrder.default };\n\n if (vas.type === EVasTypes.contents) {\n if (vas.contentTypeId === contentTypeIds.subscription) {\n const subscription = { ...vas } as unknown as IVasWithOrder;\n const { multiBundle } = subscription.additionalProps;\n\n if (\n multibundleFull &&\n multiBundle &&\n multibundleFull.additionalProps.subscriptionsSocIds.active.includes(multiBundle?.socId)\n ) {\n multibundleFull.subscriptions?.push(subscription);\n } else {\n subscription.widgetOrder = EVasOrder.standart;\n acc.push(subscription);\n }\n } else {\n switch (true) {\n case (vas.contentTypeId === EVasesPromoCodes.gamer || vas.contentTypeId === EVasesPromoCodes.voucher || vas.promocode):\n vas.widgetOrder = EVasOrder.promoCode;\n break;\n case (contentTypeIds.antivirus.includes(vas.contentTypeId)):\n vas.widgetOrder = EVasOrder.antivirus;\n break;\n case (vas.contentTypeId === contentTypeIds.watchControl):\n vas.widgetOrder = EVasOrder.watchControl;\n break;\n case (vas.contentTypeId === contentTypeIds.watchEverywhere):\n vas.widgetOrder = EVasOrder.watchEverywhere;\n break;\n }\n acc.push(vas);\n }\n } else {\n switch (true) {\n case (vas.type === EVasTypes.speedBonus):\n vas.widgetOrder = EVasOrder.speedBonus;\n break;\n case (vas.type === EVasTypes.ipAddress):\n vas.widgetOrder = EVasOrder.staticIp;\n break;\n case (vas.type === EVasTypes.tvPacks && vas.contentTypeId === 0):\n vas.widgetOrder = EVasOrder.tvPackets;\n break;\n }\n acc.push(vas);\n }\n\n return acc;\n }, []);\n\n const orderedVasList = orderBy(vasWithOrder, ['includedAgr', 'widgetOrder'], ['desc', 'asc']);\n return multibundleFull ? [multibundleFull, ...orderedVasList] : orderedVasList;\n }\n\n return [];\n },\n);\n\nconst WARFACE_SOC_ID = 4692;\n\nexport const selectActiveVas = createSelector(\n selectVasByOrder,\n /**\n * ad-hoc\n * временно фильтруем активные подписки, исключая Warface, так как он\n * приходит на новых рельсах api-widget\n *\n * Причины:\n *\n * 1. Пока не можем вывести подписки GamerBase из-за проблем в категориях контента (задача на ресерч WEB-44141)\n * 2. Если скроем игровые подписки по contentTypeId в запросе v1/vas, то скроется и Warface, а он необходим\n */\n (vases) => vases.filter(({ activeVas, socId }) => activeVas && socId !== WARFACE_SOC_ID),\n);\n\nexport const WATCH_CONTROL_SERVICE_ID = 1978;\n\nexport const selectIsWatchControlAvailable = createSelector(\n selectVasByOrder,\n (vases) => vases.some(\n ({ serviceId, activeVas }) => serviceId === WATCH_CONTROL_SERVICE_ID && !activeVas,\n ),\n);\n\n/**\n * Returns only those services whose retrieval is not yet implemented in api-widgets\n *\n * Filters services based on three parameters:\n *\n * contentTypeId, one of:\n * 4 - watchControl\n * 6 - voucher\n * 12 - watchEverywhere\n * 13 - gamer\n *\n * type = ip_address or multibundle\n *\n * promocode = 1\n */\nexport const selectActiveVasForWidgets = createSelector(\n selectActiveVas,\n vases => vases.filter(\n ({ type, contentTypeId, promocode }) => ['ip_address', 'multibundle'].includes(type) ||\n [4, 6, 12, 13].includes(contentTypeId) ||\n promocode === 1,\n ),\n);\n","export enum EDuration {\n MONTHS = 1,\n DAYS = 5,\n}\n\nexport interface IVasTryAndBuy {\n cost: number,\n discount: number,\n duration: number,\n durationTypeId: EDuration,\n raId: number,\n}\n\nexport interface IVasStopper {\n cost: number,\n discount: number,\n duration?: number,\n durationTypeId?: number,\n image: string,\n raId: number,\n}\n\nexport interface IAdditionalProps {\n [key: string]: Record | unknown[] | undefined,\n}\n\nexport interface IPricesV2 {\n discount: number,\n duration: number | null,\n lifeTimePromoTypeId: EDuration | null,\n lifeTimePromo?: string,\n raGroups: number[],\n type: string | number,\n value: number,\n [key: string]: unknown,\n}\n\nexport interface IPropContentData {\n asIs: number,\n name: string,\n title: string,\n type: string,\n title_short: string,\n value: Array<{\n title: string, value: string,\n }>,\n}\n\nexport interface IContentData {\n alias: string,\n body: string,\n props?: IPropContentData[],\n title_short?: string,\n image_for_tariff_card?: string,\n image_widgets?: string,\n image?: string,\n title?: string,\n body_full?: string,\n [key: string]: unknown,\n}\n\nexport interface IVasUrls {\n id: number,\n manual: number,\n name: string,\n owner_id: number,\n type: 'youtube' | 'doc' | 'landing',\n url: string,\n}\n\nexport enum EVasesPromoCodes {\n /**\n * ContentTypeId игровых подписок\n */\n gamer = 13,\n voucher = 6,\n /**\n * SocId подписки GFN\n */\n gfn = 3152,\n}\n\nexport interface IVasInfo {\n advertising: {\n companyName: string,\n erid: string,\n } | null,\n activeFrom: string,\n activeTo: string,\n activeVas: number,\n additionalProps: T,\n buttonText: string,\n buttonLink: string,\n camModules: string,\n changeDate: string,\n closeDateRa: string,\n contentData?: IContentData | null,\n connectPlans: string,\n contentTypeId: number,\n dateClose: string,\n flag: number,\n getPhone?: 0 | 1,\n image: string,\n imageWebp: string,\n includedAgr: number,\n materials: string,\n mobileVas: number,\n nameRa: string,\n nameVas: string,\n promocode: 1 | 0,\n priceRa: number,\n priceVas: number,\n pricesV2?: IPricesV2[],\n raId: number,\n serviceId: number,\n socId: number,\n stopper?: IVasStopper,\n tryAndBuy?: IVasTryAndBuy | null,\n type: string,\n urls: IVasUrls[],\n vasId: number,\n}\n","import { TValidationType } from '@r1-frontend/api-domru/phone-validator/validation/dto/TValidationType';\n\nimport { IRequest } from '@r1-frontend/shared/types/IRequest';\n\ninterface ISend {\n phone: string,\n type: TValidationType,\n}\n\n/*\n* Отправка запроса на валидацию\n* https://master.phone-validator.sandbox.d2c.r-one.io/docs/#/validation/ValidationController_validate\n* */\nexport const send = (queryParams: ISend): IRequest => ({\n uri: '/validation/send',\n method: 'GET',\n queryParams: queryParams,\n});\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\ninterface IValidate {\n phone: string,\n code: string,\n}\n\n/*\n* Проверка валидации телефона по коду\n* https://master.phone-validator.sandbox.d2c.r-one.io/docs/#/validation/ValidationController_validate\n* */\nexport const validate = (queryParams: IValidate): IRequest => ({\n uri: '/validation/validate',\n method: 'GET',\n queryParams,\n});\n","import { useRef, useState } from 'react';\n\nexport type TTimeStatus = 'waiting' | 'progress';\n\ninterface IReturnOptions {\n timeStatus: TTimeStatus,\n seconds: number,\n start: (seconds: number) => void,\n stop: () => void,\n}\n\n/**\n * Таймер обратного отсчета\n * @returns {[string, number, function: void, function: void]} Текущий статус, текущая секунда, колбэк запуска, колбэк остановки\n */\nexport const useTimer = (): IReturnOptions => {\n const [{\n currentSecond,\n state,\n }, setState] = useState<{ currentSecond: number, state: TTimeStatus }>({\n currentSecond: 0,\n state: 'waiting',\n });\n const intervalId = useRef | null>(null);\n\n const handleTick = () => {\n setState(prev => {\n if (prev.currentSecond > 1) {\n return { ...prev, currentSecond: prev.currentSecond - 1 };\n } else {\n return { ...prev, currentSecond: 0, state: 'waiting' };\n }\n });\n };\n\n const handleStop = () => {\n if (intervalId.current) {\n clearInterval(intervalId.current);\n intervalId.current = null;\n }\n };\n\n const start = (seconds: number) => {\n handleStop();\n setState(prev => ({ ...prev, currentSecond: seconds, state: 'progress' }));\n intervalId.current = setInterval(handleTick, 1000);\n };\n\n const stop = () => {\n setState(prev => ({ ...prev, state: 'waiting' }));\n handleStop();\n };\n\n return { timeStatus: state, seconds: currentSecond, start, stop };\n};\n","import styled from 'styled-components';\n\nimport threeDots from '@r1-frontend/ui-react/assets/img/icons/three-dots.svg';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const KebabMenu = styled.div`\n position: relative;\n justify-content: center;\n align-items: center;\n width: 20px;\n height: 20px;\n background-image: url(${threeDots});\n background-repeat: no-repeat;\n background-position: center;\n cursor: pointer;\n`;\n\nexport const MenuPopup = styled.div`\n position: absolute;\n top: 23px;\n right: -8px;\n min-width: 157px;\n border-radius: ${BorderRadius.componentRadius};\n overflow: hidden;\n background-color: ${COLORS.BgMain};\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);\n z-index: 1;\n`;\n\nexport const MenuRow = styled.div`\n width: 100%;\n padding: 12px 24px;\n ${FONTS.XS};\n white-space: nowrap;\n cursor: pointer;\n user-select: none;\n\n &:hover {\n background-color: ${COLORS.GRAY_LIGHT};\n }\n`;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport * as ST from './styled';\n\nexport interface IKebabItem {\n value: string,\n label: string,\n}\n\nexport interface KebabMenuProps {\n menuItems: IKebabItem[],\n onSelectMenu: (item: IKebabItem) => void,\n onClickMenu?: (menuStatus: boolean) => void,\n className?: string,\n}\n\n/**\n * Выпадающее меню с троеточием\n * @param menuItems пункты меню\n * @param onSelectMenu при выборе пункта меню\n * @param onClickMenu при раскрытии меню\n * @param className\n */\nexport const KebabMenu = ({\n menuItems,\n onSelectMenu,\n onClickMenu,\n className,\n}: KebabMenuProps): JSX.Element => {\n const [isOpen, setIsOpen] = useState(false);\n const menuRef = useRef(null);\n\n const onSelect = useCallback((elem: React.MouseEvent, item: IKebabItem) => {\n elem.stopPropagation();\n\n if (typeof onSelectMenu === 'function') {\n onSelectMenu(item);\n }\n\n setIsOpen(false);\n }, [onSelectMenu]);\n\n const onClick = useCallback(() => {\n setIsOpen(!isOpen);\n onClickMenu && onClickMenu(!isOpen);\n }, [isOpen, onClickMenu]);\n\n const onClickOutside = useCallback((elem) => {\n const dataName = elem.target?.getAttribute('data-name');\n\n const isNotMenuRow = !(dataName && (dataName === 'menu-row'));\n\n if (isNotMenuRow && (elem.target !== menuRef?.current)) {\n setIsOpen(false);\n }\n }, []);\n\n useEffect(() => {\n if (isOpen) {\n document.addEventListener('pointerdown', onClickOutside, true);\n }\n return () => document.removeEventListener('pointerdown', onClickOutside, true);\n }, [onClickOutside, isOpen]);\n\n return (\n \n {isOpen &&\n \n {menuItems.map((item, index) => {\n return (\n ) => onSelect(elem, item)}\n >\n {item.label}\n \n );\n })}\n \n }\n \n );\n};\n","import 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 {children}\n \n );\n};\n\nexport default BaseCheckbox;\n","import { FONTS } from '../../tokens/fonts';\n\nexport type TControlSize = 'S' | 'XS' | 'XXS';\nexport type TControlDirection = 'left' | 'right';\n\ninterface ISizeProps {\n inputSize: number,\n radioCheckSize: number,\n font: string,\n rMargin: number,\n}\n\ninterface ICheckboxSizeProps extends ISizeProps {\n iconWidth: number,\n iconHeight: number,\n promoIconSize: number,\n}\n\ntype ICheckboxSizes = {\n [key in TControlSize]: Partial;\n}\n\nexport const getSizes = (size: TControlSize, data: ICheckboxSizes): Partial => data[size];\n\nexport const checkboxSizes: ICheckboxSizes = {\n S: {\n inputSize: 24,\n font: FONTS.MediumS,\n rMargin: 12,\n iconWidth: 13,\n iconHeight: 9,\n promoIconSize: 11,\n },\n XS: {\n inputSize: 20,\n font: FONTS.MediumXS,\n rMargin: 8,\n iconWidth: 11,\n iconHeight: 7,\n promoIconSize: 9,\n },\n XXS: {\n inputSize: 16,\n font: FONTS.MediumXXS,\n rMargin: 8,\n iconWidth: 9,\n iconHeight: 6,\n promoIconSize: 7,\n },\n};\n\nexport const radioSizes: ICheckboxSizes = {\n S: {\n inputSize: 24,\n radioCheckSize: 10,\n font: FONTS.MediumS,\n rMargin: 12,\n },\n XS: {\n inputSize: 20,\n radioCheckSize: 8,\n font: FONTS.MediumXS,\n rMargin: 8,\n },\n XXS: {\n inputSize: 16,\n radioCheckSize: 6,\n font: FONTS.MediumXXS,\n rMargin: 8,\n },\n};\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuNzQ2MjE2IDYuMDM2ODhDMC43NDYyMTYgNS42MjI2NyAxLjA4MiA1LjI4Njg4IDEuNDk2MjIgNS4yODY4OEgxMC43MTYyQzExLjEzMDQgNS4yODY4OCAxMS40NjYyIDUuNjIyNjcgMTEuNDY2MiA2LjAzNjg4QzExLjQ2NjIgNi40NTEwOSAxMS4xMzA0IDYuNzg2ODggMTAuNzE2MiA2Ljc4Njg4SDEuNDk2MjJDMS4wODIgNi43ODY4OCAwLjc0NjIxNiA2LjQ1MTA5IDAuNzQ2MjE2IDYuMDM2ODhaIiBmaWxsPSIjRTMwODEzIi8+CjxwYXRoIGQ9Ik02LjEwNjIyIDExLjM5NjlDNS42OTIgMTEuMzk2OSA1LjM1NjIyIDExLjA2MTEgNS4zNTYyMiAxMC42NDY5TDUuMzU2MjIgMS40MjY4OEM1LjM1NjIyIDEuMDEyNjcgNS42OTIgMC42NzY4OCA2LjEwNjIyIDAuNjc2ODhDNi41MjA0MyAwLjY3Njg4IDYuODU2MjIgMS4wMTI2NyA2Ljg1NjIyIDEuNDI2ODhMNi44NTYyMiAxMC42NDY5QzYuODU2MjIgMTEuMDYxMSA2LjUyMDQzIDExLjM5NjkgNi4xMDYyMiAxMS4zOTY5WiIgZmlsbD0iI0UzMDgxMyIvPgo8L3N2Zz4K\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxNCAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy41NjA3IDFDMTMuODUzNiAxLjI5Mjg5IDEzLjg1MzYgMS43Njc3NyAxMy41NjA3IDIuMDYwNjZMNi4yNDYyNyA5LjA2MzdDNS45NTM0MiA5LjM1NjU1IDUuNDc4NjMgOS4zNTY2IDUuMTg1NzIgOS4wNjM4MUwwLjg0MTU5MiA0LjcyMTA2QzAuNTQ4NjM4IDQuNDI4MjMgMC41NDg1MzggMy45NTMzNSAwLjg0MTM2OSAzLjY2MDRDMS4xMzQyIDMuMzY3NDQgMS42MDkwNyAzLjM2NzM0IDEuOTAyMDMgMy42NjAxOEw1LjcxNTgzIDcuNDcyODNMMTIuNSAxQzEyLjc5MjkgMC43MDcxMDcgMTMuMjY3OCAwLjcwNzEwNyAxMy41NjA3IDFaIiBmaWxsPSIjRkFGQUZBIi8+Cjwvc3ZnPgo=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIiBmaWxsPSIjMTgxQjIxIi8+CjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIiIGZpbGw9IiMxODFCMjEiLz4KPGNpcmNsZSBjeD0iMTkiIGN5PSIxMiIgcj0iMiIgZmlsbD0iIzE4MUIyMSIvPgo8L3N2Zz4K\""],"names":["dayjs","duration","timerConfig","units","postfix","ButtonWithTimer","status","onBtnClick","isLoading","isDisabled","autoStart","seconds","onStart","startHandler","useEffect","timerText","useMemo","_minutes","minutes","format","timer","NBSP","Button","size","bType","onClick","disabled","loading","EVasCategory","EVasContentType","selectClientServices","state","auth","clientProducts","services","selectClientAgreementId","clientPersonal","agreementId","selectNotSuspendServicesIds","createSelector","items","reduce","acc","val","activated","push","productId","suspendStatus","selectInternetService","find","item","PRODUCTS","selectTerminalResource","internetServiceItem","terminalResources","id","epg2ProfileTvPackage","data","map","epgPackage","alias","body","channels","image680x280","price","themes","title","weight","channel","channelsCount","quality","EChannelQuality","channelsCountHd","active","cost","description","image","name","tryAndBuy","selectPackagesInTariff","tvPackages","connectedInTariff","selectFormattedTvPackages","allPackages","selectPackagesThemes","isAuth","connectedOutTariff","canConnect","profileTvPackages","epgTvPackages","themesTitles","noThemePackages","packets","themePackages","tvPackage","length","forEach","pakcageTheme","includes","_theme","newTheme","sort","a","b","selectTrialPackage","trialPackage","selectAllVas","vas","vasInfo","default","antivirus","includedAgr","multiBundleId","selectMultibundleAndSubscriptions","subscriptions","vasSubscriptions","groupedSubscriptions","groupBy","vasId","false","true","multibundle","subscriptionsInMultibundle","remove","sub","additionalProps","multiBundle","subscriptionsSocIds","socId","selectInactiveSubscriptions","isLoadingSubscriptions","filter","activeVas","EVasTypes","contents","EVasOrder","tvPackets","standart","promoCode","speedBonus","staticIp","watchControl","watchEverywhere","contentTypeIds","subscription","selectVasByOrder","allVases","vases","type","multibundleFull","widgetOrder","undefined","vasWithOrder","currentVas","contentTypeId","EVasesPromoCodes","promocode","ipAddress","tvPacks","orderedVasList","orderBy","selectActiveVas","selectIsWatchControlAvailable","some","serviceId","selectActiveVasForWidgets","EDuration","MONTHS","DAYS","gamer","voucher","gfn","send","queryParams","uri","method","validate","useTimer","useState","currentSecond","setState","intervalId","useRef","handleTick","prev","handleStop","current","clearInterval","timeStatus","start","setInterval","stop","KebabMenu","styled","threeDots","MenuPopup","BorderRadius","COLORS","MenuRow","FONTS","menuItems","onSelectMenu","onClickMenu","className","isOpen","setIsOpen","menuRef","onSelect","useCallback","elem","stopPropagation","onClickOutside","dataName","target","getAttribute","document","addEventListener","removeEventListener","ST","ref","data-name","data-test","index","data-id","label","value","getCheckboxSizes","getSizes","checkboxSizes","Label","p","font","invertColor","inputSize","withLabel","rMargin","checkMark","iconWidth","iconHeight","checkType","css","promoMark","promoIconSize","checked","required","children","onChange","props","onChangeHandler","event","input","S","XS","XXS","radioSizes","radioCheckSize","module","exports"],"sourceRoot":""}