{"version":3,"file":"static/chunks/810-c926590952782238.js","mappings":"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","sources":["webpack://_N_E/./src/features/domru-tv/packages/components/DetailsLayout/styled.ts","webpack://_N_E/./src/features/domru-tv/packages/components/DetailsLayout/subscriptions.tsx","webpack://_N_E/./src/features/domru-tv/packages/components/DetailsLayout/tvPackages.tsx","webpack://_N_E/./src/features/domru-tv/packages/components/DetailsLayout/index.tsx","webpack://_N_E/./src/features/domru-tv/packages/components/PageSection/styled.ts","webpack://_N_E/./src/features/domru-tv/packages/components/PageSection/index.tsx","webpack://_N_E/./src/features/domru-tv/packages/components/SubscriptionsLayout/index.tsx","webpack://_N_E/./src/features/domru-tv/packages/hooks/useSectionData.ts","webpack://_N_E/./src/features/domru-tv/packages/helpers/mobileFirstMedia.ts","webpack://_N_E/./src/helpers/hooks/usePrepareQueryData.tsx","webpack://_N_E/./src/helpers/string.js","webpack://_N_E/../../packages/ui-react/src/components/controls/baseSwitcher/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/controls/baseSwitcher/styled.ts","webpack://_N_E/../../packages/ui-react/src/tokens/others/textOverflowLineClamp.ts","webpack://_N_E/../../packages/ui-react/src/assets/img/icons/locked.svg"],"sourcesContent":["import styled from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport WideContainer, { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport SlideCarousel from '@r1-frontend/ui-react/components/SlideCarousel';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport PageSection from '~/src/features/domru-tv/packages/components/PageSection';\n\nexport const LayoutWrapper = styled(WideContainer)`\n flex-direction: column;\n row-gap: 40px;\n margin-top: 24px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-top: 16px;\n padding-left: 7px;\n padding-right: 0px;\n }\n`;\n\nexport const BackButton = styled(BaseButton)`\n align-self: flex-start;\n padding-left: 0;\n`;\n\nexport const HeadRow = styled.div`\n gap: 8px;\n justify-content: space-between;\n align-items: center;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n flex-direction: column;\n align-items: flex-start;\n }\n`;\n\nexport const LayoutTitle = styled.h1`\n ${FONTS.H2};\n margin: 0;\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n ${FONTS.H3};\n }\n`;\n\nexport const FilterBlock = styled.div`\n gap: 16px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n justify-content: space-between;\n gap: 12px;\n }\n`;\n\nexport const FilterLabel = styled.p`\n ${FONTS.MediumS};\n`;\n\nexport const LayoutSection = styled(PageSection)`\n row-gap: 24px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n row-gap: 16px;\n }\n`;\n\nexport const ContentCarousel = styled(SlideCarousel)`\n & > section > div.slider-control-bottomcenter {\n max-width: 100%;\n }\n\n & > section > div.slider-control-centerleft {\n left: -34px !important;\n }\n\n & > section > div.slider-control-centerright {\n right: -34px !important;\n }\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n & > section > div.slider-control-centerleft {\n left: -28px !important;\n }\n\n & > section > div.slider-control-centerright {\n right: -28px !important;\n }\n }\n`;\n","import { Dispatch, SetStateAction, useEffect, useMemo } from 'react';\nimport remove from 'lodash/remove';\n\nimport PageSection from '~/src/features/domru-tv/packages/components/PageSection';\nimport { TSubscriptions, useSectionData } from '~/src/features/domru-tv/packages/hooks/useSectionData';\n\nimport SubscriptionsLayout from '../SubscriptionsLayout';\n\nimport * as ST from './styled';\n\ninterface IProps {\n isHideActive: boolean,\n setIsHideActive: Dispatch>,\n setConnectedItemsQuantity: Dispatch>,\n}\n\nconst SubscriptionsDetails = ({ isHideActive, setIsHideActive, setConnectedItemsQuantity }: IProps): JSX.Element => {\n const { sectionWidgets = [] } = useSectionData('subscriptions', true);\n\n const { connectedItemsQuantity, currentItems } = useMemo(() => {\n const unconnectedItems = [...sectionWidgets];\n const connectedItems = remove(unconnectedItems, widget => widget.activeVas);\n\n return {\n connectedItemsQuantity: connectedItems.length,\n currentItems: isHideActive ? unconnectedItems : sectionWidgets,\n };\n }, [isHideActive, sectionWidgets]);\n\n useEffect(() => {\n setConnectedItemsQuantity(connectedItemsQuantity);\n }, [connectedItemsQuantity, setConnectedItemsQuantity]);\n\n useEffect(() => {\n if (connectedItemsQuantity === sectionWidgets?.length) {\n setIsHideActive(false);\n }\n }, [connectedItemsQuantity, setIsHideActive, sectionWidgets?.length]);\n\n return (\n \n \n \n \n \n );\n};\n\nexport default SubscriptionsDetails;\n","import { Dispatch, SetStateAction, useEffect, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport PageSection from '~/src/features/domru-tv/packages/components/PageSection';\nimport TvPackageCard from '~/src/features/domru-tv/packages/components/TvPackageCard';\nimport { ITvPackage } from '~/src/store/reducers/tvPackages';\nimport { selectPackagesThemes } from '~/src/store/selectors/tvPackages';\n\nimport { ContentCarousel, LayoutSection } from './styled';\n\ninterface IProps {\n isHideActive: boolean,\n setConnectedItemsQuantity: Dispatch>,\n}\n\nconst TvPackagesDetails = ({ isHideActive, setConnectedItemsQuantity }: IProps) => {\n const tvPackagesThemes = useSelector(selectPackagesThemes);\n\n const isMobile = useMatchMedia(`(max-width: ${wideBreakpoints.mobile})`);\n const isTablet = useMatchMedia(`(max-width: ${wideBreakpoints.tablet})`);\n\n const { connectedItemsQuantity, currentItems } = useMemo(() => {\n const connectedItems = new Set();\n\n const unconnectedItems = tvPackagesThemes?.map(item => {\n const unconnectedPackets: ITvPackage[] = [];\n item.packets.forEach(packet => packet.active ? connectedItems.add(packet) : unconnectedPackets.push(packet));\n return {\n ...item,\n packets: unconnectedPackets,\n };\n });\n\n return {\n connectedItemsQuantity: connectedItems.size,\n currentItems: isHideActive ? unconnectedItems : tvPackagesThemes,\n };\n }, [isHideActive, tvPackagesThemes]);\n\n useEffect(() => {\n setConnectedItemsQuantity(connectedItemsQuantity);\n }, [connectedItemsQuantity, setConnectedItemsQuantity]);\n\n return (\n <>\n {currentItems?.map(item => {\n const { id, title, packets } = item;\n\n if (!packets.length) {\n return null;\n }\n\n return (\n \n {title}\n \n \n {packets.map(packet => (\n \n ))}\n \n \n \n );\n })}\n \n );\n};\n\nexport default TvPackagesDetails;\n","import { useEffect, useMemo, useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { btnSizes, btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport BaseSwitcher from '@r1-frontend/ui-react/components/controls/baseSwitcher';\n\nimport PageSection from '~/src/features/domru-tv/packages/components/PageSection';\nimport { TDetailsType } from '~/src/features/domru-tv/packages/types';\nimport { TState } from '~/src/store';\n\nimport SubscriptionsDetails from './subscriptions';\nimport TvPackagesDetails from './tvPackages';\n\nimport * as ST from './styled';\n\ninterface IProps {\n type: TDetailsType,\n onGoBack: () => void,\n hideSwitchers?: boolean,\n}\n\nconst DetailsLayout = ({ type, onGoBack, hideSwitchers }: IProps): JSX.Element => {\n const { auth: { isAuth } } = useSelector((state: TState) => state);\n\n const [isHideActive, setIsHideActive] = useState(!!hideSwitchers);\n const [connectedItemsQuantity, setConnectedItemsQuantity] = useState(0);\n\n const { detailsTitle, detailsContent } = useMemo(() => {\n switch (type) {\n case 'packs':\n return {\n detailsTitle: 'Пакеты каналов',\n detailsContent: ,\n };\n case 'subscriptions':\n return {\n detailsTitle: 'Подписки на онлайн-кинотеатры',\n detailsContent: ,\n };\n default:\n return {\n detailsTitle: '',\n detailsContent: <>,\n };\n }\n }, [isHideActive, type]);\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n\n return (\n \n \n \n \n {detailsTitle}\n {!hideSwitchers && isAuth && connectedItemsQuantity > 0 && (\n \n Не показывать подключенные ({connectedItemsQuantity})\n setIsHideActive(!isHideActive)}\n />\n \n )}\n \n \n {detailsContent}\n \n );\n};\n\nexport default DetailsLayout;\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 { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const PageSection = styled.section`\n display: flex;\n flex-direction: column;\n width: 100%;\n row-gap: 32px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n row-gap: 16px;\n }\n`;\n\nexport const SectionTitle = styled.h2`\n ${FONTS.H3};\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n ${FONTS.H4};\n }\n`;\n\nexport const SectionContent = styled.div`\n width: 100%;\n flex-direction: row;\n align-items: flex-start;\n gap: 32px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n flex-direction: column;\n gap: 16px;\n }\n`;\n\nexport const SectionButton = styled(BaseButton)`\n align-self: center;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n }\n`;\n","import { FC, ReactNode } from 'react';\n\nimport * as ST from './styled';\n\ninterface IProps {\n id?: string,\n className?: string,\n}\n\ninterface IPageSection extends FC {\n Title: typeof ST.SectionTitle,\n Content: typeof ST.SectionContent,\n Button: typeof ST.SectionButton,\n children?: ReactNode,\n}\n\nconst PageSection: IPageSection = ({ id = '', className, children }) => {\n return (\n \n {children}\n \n );\n};\n\nPageSection.Title = ST.SectionTitle;\nPageSection.Content = ST.SectionContent;\nPageSection.Button = ST.SectionButton;\n\nexport default PageSection;\n","import { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { IVasInfo } from '@r1-frontend/api-domru/api-profile/v1/vas/dto/ResponseDto';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nimport { fetchSubscriptions } from '~/src/features/domru-tv/packages/store/actions/fetchSubscriptions';\nimport { usePrepareQueryData } from '~/src/helpers/hooks/usePrepareQueryData';\nimport { IFullMultibundle, IMultibundleAdditional, ISubscriptionAdditional, multiBundleId } from '~/src/store/selectors/vas';\n\nimport MultibundleCard from '../MultiBundleCard';\nimport MultibundleWidget from '../MultibundleWidget';\nimport SubscriptionCard from '../SubscriptionCard';\n\ninterface IProps {\n subscriptions: Array & Partial> & IFullMultibundle>,\n}\n\nconst SubscriptionsLayout = ({ subscriptions }: IProps): JSX.Element => {\n const { subscriptionId } = usePrepareQueryData();\n const dispatch = useDispatch();\n\n const onDataLayerPush = useCallback(() => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.multibundleWidget,\n action: 'click_to_detail_page_btn',\n });\n }, []);\n\n const onClosePopup = useCallback(() => {\n dispatch(fetchSubscriptions());\n }, [dispatch]);\n\n return (\n <>\n {subscriptions?.map(subscription => subscription.vasId === multiBundleId\n ? subscription.activeVas\n ? \n : \n : )}\n \n );\n};\n\nexport default SubscriptionsLayout;\n","import { useMemo } from 'react';\nimport { shallowEqual, useSelector } from 'react-redux';\n\nimport { IVasInfo } from '@r1-frontend/api-domru/api-profile/v1/vas/dto/ResponseDto';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport { getMobileFirstMedia } from '~/src/features/domru-tv/packages/helpers/mobileFirstMedia';\nimport { selectFormattedSubscriptions } from '~/src/features/domru-tv/packages/store/selectors';\nimport { TDetailsType } from '~/src/features/domru-tv/packages/types';\nimport { TState } from '~/src/store';\nimport { ITvPackage } from '~/src/store/reducers/tvPackages';\nimport { selectFormattedTvPackages } from '~/src/store/selectors/tvPackages';\nimport { IFullMultibundle, IMultibundleAdditional, ISubscriptionAdditional, selectMultibundleAndSubscriptions } from '~/src/store/selectors/vas';\n\nenum EVisibleWidgetsQuantity {\n SHORT = 3,\n DEFAULT = 4,\n}\n\nexport type TSubscriptions = Partial> & IVasInfo & IFullMultibundle;\n\ntype TWidgets = ITvPackage | TSubscriptions;\n\nexport const useSectionData = (widgetType: TDetailsType, isShowAll: boolean): {\n isShowSectionButton: boolean,\n sectionWidgets: Array,\n} => {\n const mobileFirstLaptopBp = getMobileFirstMedia('laptop');\n const IsShortWidgetsList = useMatchMedia(`(min-width: ${mobileFirstLaptopBp}) and (max-width: ${wideBreakpoints.sDesktop})`);\n\n const maxVisibleWidgets = useMemo(\n () => IsShortWidgetsList ? EVisibleWidgetsQuantity.SHORT : EVisibleWidgetsQuantity.DEFAULT,\n [IsShortWidgetsList],\n );\n\n const {\n isAuth,\n pureTvPackages: { canConnect, connectedOutTariff, connectedInTariff },\n tvPackages,\n vasSubscriptions: { multibundle, subscriptions },\n shopItems,\n } = useSelector((state: TState) => ({\n isAuth: state.auth.isAuth,\n pureTvPackages: state.tvPackages,\n tvPackages: selectFormattedTvPackages(state),\n vasSubscriptions: selectMultibundleAndSubscriptions(state),\n shopItems: selectFormattedSubscriptions(state),\n }), shallowEqual);\n\n const sectionWidgets = (() => {\n switch (widgetType) {\n case 'packs':\n return isAuth ? [...canConnect, ...connectedOutTariff, ...connectedInTariff] : tvPackages;\n case 'subscriptions':\n return isAuth\n ? multibundle\n ? [multibundle, ...subscriptions]\n : subscriptions\n : shopItems;\n default:\n return [];\n }\n })();\n\n const isGreaterThanVisibility = sectionWidgets?.length > maxVisibleWidgets;\n\n if (!isShowAll) {\n return {\n isShowSectionButton: isGreaterThanVisibility,\n sectionWidgets: isGreaterThanVisibility ? sectionWidgets.slice(0, maxVisibleWidgets) : sectionWidgets,\n };\n }\n\n return {\n isShowSectionButton: false,\n sectionWidgets,\n };\n};\n","import { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\nexport const getMobileFirstMedia = (media: keyof typeof wideBreakpoints): string => `${parseInt(wideBreakpoints[media]) + 1}px`;\n","import { useRouter } from 'next/router';\n\n/**\n * @deprecated использовать useRouter\n */\nexport const usePrepareQueryData = (): Record => {\n const { query } = useRouter();\n const _query: Record = {};\n\n for (const key in query) {\n const _value = query[key];\n _query[key] = _value ? (typeof _value === 'string' ? _value : _value[0]) : '';\n }\n\n return _query;\n};\n","/**\n * @param {string} string\n * @return {string}\n */\nexport const capitalize = string => string.charAt(0).toUpperCase() + string.slice(1);\n\n// TODO: Fix later in https://ticket.ertelecom.ru/browse/WEB-43177\n/**\n* @param {string} text\n* @return {string}\n*/\nexport const clearHTMLTags = (text = '') => text.replace(/<[^>]+>/g, '');\n\nexport const clearNbsp = (text = '') => text.replace(/ /g, '');\n","import React, { FC, useCallback, useState } from 'react';\n\nimport { Label } from './styled';\n\nexport interface IBaseSwitcherProps {\n id?: string,\n name?: string,\n value?: string,\n checked?: boolean,\n disabled?: boolean,\n required?: boolean,\n onChange?: (event: React.ChangeEvent, state?: boolean) => void,\n className?: string,\n [key: string]: unknown,\n}\n\nconst BaseSwitcher: FC = ({\n id,\n name = '',\n value = '',\n checked,\n disabled = false,\n required,\n children,\n onChange,\n className,\n ...props\n}) => {\n const [isChecked, setIsChecked] = useState(checked);\n\n const onChangeHandler = useCallback((event: React.ChangeEvent) => {\n if (!disabled) {\n if (required) {\n if (!isChecked) {\n setIsChecked(true);\n onChange && onChange(event, true);\n }\n } else {\n setIsChecked(!isChecked);\n onChange && onChange(event, !isChecked);\n }\n }\n }, [disabled, isChecked, onChange, required]);\n\n return (\n \n \n {children}\n \n );\n};\n\nexport default BaseSwitcher;\n","import styled from 'styled-components';\n\nimport { hex2rgb } from '@r1-frontend/shared/helpers/hex2rgb';\n\n// @ts-ignore\nimport lockedIcon from '../../../assets/img/icons/locked.svg';\nimport { COLORS } from '../../../tokens/colors';\n\ninterface IStyleProps {\n checked?: boolean,\n disabled: 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 user-select: none;\n\n &:active {\n outline: none;\n }\n\n input[type=\"checkbox\"] {\n appearance: none;\n position: relative;\n flex: 0 0 auto;\n width: 36px;\n height: 20px;\n margin: 0;\n padding: 0;\n background-color: ${COLORS.Disabled};\n border: none;\n border-radius: 10px;\n transition: .3s;\n overflow: hidden;\n outline: none;\n box-sizing: border-box;\n cursor: pointer;\n\n &:before {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background-color: ${COLORS.BgMain};\n transition: .3s;\n }\n\n @media (hover: hover) {\n &:hover,\n &:checked:hover {\n background-color: ${COLORS.Outline_Dark};\n\n &:before {\n background-color: ${COLORS.Link};\n }\n }\n }\n\n &:required:valid {\n background-color: ${COLORS.Locked};\n\n &:before {\n background-color: ${COLORS.BgMain};\n }\n\n &:after {\n content: '';\n position: absolute;\n top: 2px;\n left: 18px;\n width: 16px;\n height: 16px;\n background-color: ${COLORS.Error};\n mask-image: url(${lockedIcon});\n mask-size: 7px 9px;\n mask-position: center;\n mask-repeat: no-repeat;\n transition: .3s;\n }\n }\n\n &:checked {\n background-color: ${COLORS.Control};\n\n &:before {\n left: 18px;\n }\n }\n\n &:disabled,\n &:checked:hover:disabled {\n background-color: ${COLORS.BgSecondary};\n pointer-events: none;\n \n &:before {\n background-color: rgba(${hex2rgb(COLORS.BgMain)}, 0.5);\n }\n }\n }\n`;\n","import { css } from 'styled-components';\n\n/*\n для multiline троеточия используется -webkit-box и -webkit-line-clamp и\n -webkit-box-orient: https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-line-clamp;\n display: inline-block - фикс для IE11\n*/\nexport const textOverflowLineClamp = (lineCount: number) => css`\n display: inline-block;\n display: -webkit-box;\n -webkit-line-clamp: ${lineCount};\n -webkit-box-orient: vertical;\n width: 100%;\n word-wrap: break-word;\n white-space: normal;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOCIgaGVpZ2h0PSIxMCIgdmlld0JveD0iMCAwIDggMTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xIDRIMkg2SDdWOUgxVjRaIiBmaWxsPSIjRkY3QjdCIi8+CjxwYXRoIGQ9Ik0yIDRIMVY5SDdWNEg2TTIgNEMyIDQgMS41IDEgNCAxQzYuNSAxIDYgNCA2IDRNMiA0SDYiIHN0cm9rZT0iI0ZGN0I3QiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=\""],"names":["LayoutWrapper","styled","WideContainer","wideBreakpoints","BackButton","BaseButton","HeadRow","LayoutTitle","FONTS","FilterBlock","FilterLabel","LayoutSection","PageSection","ContentCarousel","SlideCarousel","isHideActive","setIsHideActive","setConnectedItemsQuantity","useSectionData","sectionWidgets","useMemo","unconnectedItems","connectedItemsQuantity","remove","widget","activeVas","length","currentItems","useEffect","ST","SubscriptionsLayout","subscriptions","tvPackagesThemes","useSelector","selectPackagesThemes","isMobile","useMatchMedia","isTablet","connectedItems","Set","map","item","unconnectedPackets","packets","forEach","packet","active","add","push","size","id","title","withoutDots","withoutArrows","slideWidth","cellSpacing","initialSlideHeight","TvPackageCard","tvPacket","type","onGoBack","hideSwitchers","auth","state","isAuth","useState","detailsTitle","detailsContent","TvPackagesDetails","SubscriptionsDetails","data-test","window","scrollTo","btnTypes","btnSizes","text","iconsSprite","symbolId","onClick","BaseSwitcher","checked","onChange","SectionTitle","SectionContent","SectionButton","className","children","Title","Content","Button","usePrepareQueryData","subscriptionId","dispatch","useDispatch","onDataLayerPush","useCallback","dataLayerPush","event","EVENTS","category","CATEGORIES","action","onClosePopup","fetchSubscriptions","subscription","vasId","multiBundleId","MultibundleWidget","multibundle","onBtnClick","serviceId","MultibundleCard","SubscriptionCard","queryId","Number","EVisibleWidgetsQuantity","SHORT","DEFAULT","widgetType","isShowAll","media","mobileFirstLaptopBp","parseInt","IsShortWidgetsList","maxVisibleWidgets","pureTvPackages","tvPackages","selectFormattedTvPackages","vasSubscriptions","selectMultibundleAndSubscriptions","shopItems","selectFormattedSubscriptions","shallowEqual","canConnect","connectedOutTariff","connectedInTariff","isGreaterThanVisibility","isShowSectionButton","slice","useRouter","query","_query","key","_value","capitalize","string","charAt","toUpperCase","clearHTMLTags","replace","clearNbsp","name","value","disabled","required","props","isChecked","setIsChecked","onChangeHandler","Label","input","COLORS","lockedIcon","hex2rgb","textOverflowLineClamp","lineCount","css","module","exports"],"sourceRoot":""}