{"version":3,"file":"static/chunks/pages/_site/[city]/catchup-2da87d74f97a8c7c.js","mappings":"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","sources":["webpack://_N_E/?3b03","webpack://_N_E/../../packages/ui-react/src/components/navigation/dotNavigation/styled.js","webpack://_N_E/../../packages/ui-react/src/components/navigation/dotNavigation/index.js","webpack://_N_E/./src/components/Catchup/Television/styled.js","webpack://_N_E/./src/components/Catchup/Television/Television.js","webpack://_N_E/./src/components/Catchup/SectionArchive/styled.js","webpack://_N_E/./src/components/Catchup/SectionArchive/index.js","webpack://_N_E/./src/components/Catchup/SectionDevices/styled.js","webpack://_N_E/./src/components/Catchup/SectionDevices/index.js","webpack://_N_E/./src/components/Catchup/SectionFAQ/index.js","webpack://_N_E/./src/components/Catchup/SectionFunctions/styled.js","webpack://_N_E/./src/components/Catchup/SectionFunctions/index.js","webpack://_N_E/../../packages/api-domru/src/api-profile/v1/catch-up/catch-up/catch-up-off/index.ts","webpack://_N_E/../../packages/api-domru/src/api-profile/v1/catch-up/catch-up/catch-up-on/index.ts","webpack://_N_E/../../packages/api-domru/src/api-profile/v1/catch-up/get-state-catch-up/index.ts","webpack://_N_E/./src/components/Catchup/SectionOrder/styled.js","webpack://_N_E/./src/components/Catchup/SectionOrder/index.js","webpack://_N_E/./src/store/actions/catchup.ts","webpack://_N_E/./src/components/Catchup/SectionWelcome/styled.js","webpack://_N_E/./src/components/Catchup/SectionWelcome/index.js","webpack://_N_E/./src/features/catchup/swipe.js","webpack://_N_E/./src/features/catchup/index.js","webpack://_N_E/./pages/_site/[city]/catchup.js","webpack://_N_E/./src/helpers/clientInfo.js","webpack://_N_E/./src/helpers/date.js","webpack://_N_E/./src/helpers/layout.js","webpack://_N_E/../../packages/ui-react/src/deprecated/Accordion/themes.js","webpack://_N_E/../../packages/ui-react/src/deprecated/Accordion/index.js","webpack://_N_E/../../packages/ui-react/src/organisms/ForLanding/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/ForLanding/index.js","webpack://_N_E/./src/components/Catchup/images/spinner.svg"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_site/[city]/catchup\",\n function () {\n return require(\"private-next-pages/_site/[city]/catchup.js\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/_site/[city]/catchup\"])\n });\n }\n ","import styled from 'styled-components';\n\nconst BASE_COLOR = '#BDBDBD';\n\nexport const NavItem = styled.div`\n width: ${props => props.dotSize || '12px'};\n height: ${props => props.dotSize || '12px'};\n border-radius: 50%;\n background: ${props => props.fill || BASE_COLOR};\n opacity: ${props => props.active ? '1' : '.5'};\n transition: all .5s ease-in-out;\n cursor: pointer;\n\n &:hover {\n opacity: 1;\n }\n`;\n\nexport const NavList = styled.div`\n display: flex;\n flex-direction: ${props => !props.horizontal ? 'column' : 'row'};\n justify-content: space-around;\n height: 100%;\n width: 100%;\n`;\n","import React, { Component, Fragment } from 'react';\n\nimport ToolTip from '../../tooltip';\nimport { NavItem, NavList } from './styled';\nclass Nav extends Component {\n static defaultProps = {\n horizontal: false,\n showTitle: false,\n titlePosition: 'left',\n activeSelector: 'link',\n }\n\n render() {\n const { horizontal, navList, dotSize, fill, active, showTitle, titlePosition, activateMenu, activeSelector, ...props } = this.props;\n\n const renderNavItem = (item) => (\n activateMenu(item)}\n data-test='nav-item'\n />\n );\n\n return (\n \n {navList.map((item, index) => (\n \n {showTitle\n ? \n {item.title}\n \n : renderNavItem(item)\n }\n \n ))}\n \n );\n }\n}\n\nexport default Nav;\n","import styled, { css, keyframes } from 'styled-components';\n\nimport { getMedia, percent } from '../../../helpers/layout';\n\nexport const TelevisionContainer = styled.div`\n display: inline-block;\n user-select: none;\n`;\n\nexport const TelevisionPicture = styled.picture`\n display: block;\n`;\n\nexport const TelevisionPictureSource = styled.img`\n display: block;\n width: ${percent(1080, 1975)}vh;\n max-width: ${percent(1920, 1975)}vw;\n z-index: 10;\n position: relative;\n pointer-events: none;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n width: ${percent(750, 1260)}vh;\n max-width: ${percent(1366, 1260)}vw;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n max-width: none;\n ${({ mod }) => {\n if (mod === 'sectionFunctions') {\n return css`width: ${percent(768, 1195)}vw;`;\n } else if (mod === 'sectionArchive') {\n return css`width: ${percent(768, 1364)}vw;`;\n } else {\n return css`width: ${percent(768, 1100)}vw;`;\n }\n }}\n }\n\n @media only screen and ${getMedia('phone')} {\n max-width: none;\n ${({ mod }) => {\n if (mod === 'sectionFunctions') {\n return css`width: ${percent(320, 514)}vw;`;\n } else if (mod === 'sectionArchive') {\n return css`width: ${percent(320, 769)}vw;`;\n } else {\n return css`width: ${percent(320, 875)}vw;`;\n }\n }}\n }\n`;\n\nexport const TelevisionContentWrapper = styled.div`\n position: absolute;\n z-index: 1;\n top: ${percent(1195, 29)}%;\n left: ${percent(2588, 542)}%;\n width: ${percent(2588, 1385)}%;\n height: ${percent(1195, 781)}%;\n background-color: #000;\n`;\n\nexport const TelevisionContent = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n`;\n\nexport const TelevisionPoster = styled(TelevisionContent)`\n transition: opacity 0.3s ease-out;\n\n ${({ isPlaying, onClick }) => {\n if (isPlaying) {\n return css`opacity: 0;`;\n } else if (onClick !== undefined) {\n return css`\n cursor: pointer;\n `;\n }\n }}\n\n @media only screen and ${getMedia('tablet')} {\n pointer-events: none;\n }\n`;\n\nconst rotate = keyframes`\n from {\n transform: translate(-50%, -50%) rotate(0deg);\n }\n\n to {\n transform: translate(-50%, -50%) rotate(360deg);\n }\n`;\n\nexport const TelevisionPreloader = styled.img`\n pointer-events: none;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: ${percent(2588, 210)}%;\n animation: ${rotate} 1s linear infinite;\n z-index: 1;\n`;\n\nconst light = keyframes`\n 0% {\n opacity: 0;\n }\n\n 50% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n`;\n\nconst fade = keyframes`\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n`;\n\nexport const TelevisionLight = styled.img`\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n opacity: 0;\n transition: opacity 0.3s ease-out;\n\n &:nth-child(1) {\n opacity: 1;\n }\n\n ${({ isNoDynamic, isPlaying }) => {\n if (isNoDynamic && isPlaying) {\n return css`\n &:nth-child(2),\n &:nth-child(3) {\n animation: ${fade} 0.3s linear forwards;\n }\n `;\n } else if (!isNoDynamic && isPlaying) {\n return css`\n &:nth-child(1) {\n animation: ${light} 1s linear infinite;\n }\n\n &:nth-child(2) {\n animation: ${light} 1s linear infinite 0.5s;\n }\n `;\n }\n }}\n`;\n\nexport const TelevisionLightContainer = styled.div`\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n`;\n","import axios from 'axios';\nimport React, { Component } from 'react';\n\nimport spinner from '../images/spinner.svg';\nimport {\n TelevisionContainer,\n TelevisionContent,\n TelevisionContentWrapper,\n TelevisionLight,\n TelevisionLightContainer,\n TelevisionPicture,\n TelevisionPictureSource,\n TelevisionPoster,\n TelevisionPreloader,\n} from './styled';\n\nconst Sections = {\n sectionMain: {\n poster: '/static/images/catchup/poster-1.jpg',\n },\n sectionFunctions: {\n poster: '/static/images/catchup/poster-2.jpg',\n mp4: '/static/video/catchup/catchup-01.mp4',\n webm: '/static/video/catchup/catchup-01.webm',\n },\n sectionArchive: {\n poster: '/static/images/catchup/poster-3.jpg',\n mp4: '/static/video/catchup/catchup-02.mp4',\n webm: '/static/video/catchup/catchup-02.webm',\n },\n};\n\nexport default class Television extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isLoaded: false,\n isLoading: false,\n isNoDynamic: false,\n isPlaying: false,\n };\n\n this.videoplayer = React.createRef();\n }\n\n getVideoSrc() {\n const { mod } = this.props;\n\n try {\n const videoInfo = Sections[mod];\n\n return (this.videoplayer.current.canPlayType('video/webm') !== '') ? videoInfo.webm : videoInfo.mp4;\n } catch (e) {\n return '';\n }\n }\n\n playVideo() {\n if (this.props.breakpoint === 'tablet' || this.props.breakpoint === 'phone') {\n return;\n}\n\n if (!this.state.isLoading && this.videoplayer.current !== null && !this.state.isPlaying) {\n this.videoplayer.current.currentTime = 0;\n this.videoplayer.current.play();\n this.setState({ isPlaying: true });\n }\n }\n\n stopVideo() {\n if (!this.state.isLoading && this.videoplayer.current !== null && this.state.isPlaying) {\n this.videoplayer.current.pause();\n this.setState({ isPlaying: false });\n }\n }\n\n async loadVideo() {\n if (this.props.breakpoint === 'tablet' || this.props.breakpoint === 'phone') {\n return;\n}\n if (this.state.isLoading) {\n return;\n}\n\n const src = this.getVideoSrc();\n this.setState({ isLoading : true });\n\n if (src === '') {\n return;\n}\n\n try {\n const response = await axios.get(src, {\n responseType: 'blob',\n });\n\n const videoUrl = URL.createObjectURL(response.data);\n this.videoplayer.current.src = videoUrl;\n this.setState({ isLoading : false, isLoaded: true });\n if (this.props.isPlay) {\n setTimeout(() => {\n this.playVideo();\n }, 50);\n }\n } catch (e) {\n this.setState({ isLoading : false });\n }\n }\n\n onTimeUpdate() {\n if (this.videoplayer.current === null) {\n return;\n}\n const { currentTime } = this.videoplayer.current;\n\n if (currentTime >= 2 && currentTime <= 6) {\n if (!this.state.isNoDynamic) {\n this.setState({ isNoDynamic: true });\n }\n } else if (this.state.isNoDynamic) {\n this.setState({ isNoDynamic: false });\n }\n }\n\n componentDidMount() {\n if (this.videoplayer.current !== null) {\n this.loadVideo();\n if (this.props.mod === 'sectionFunctions') {\n this.videoplayer.current.addEventListener('timeupdate', this.onTimeUpdate.bind(this));\n}\n }\n }\n\n componentWillUnmount() {\n if (this.videoplayer.current !== null) {\n if (this.props.mod === 'sectionFunctions') {\n this.videoplayer.current.removeEventListener('timeupdate', this.onTimeUpdate.bind(this));\n}\n }\n }\n\n componentDidUpdate({ isPlay, breakpoint }) {\n if (this.videoplayer.current === null) {\n return;\n}\n\n if (breakpoint !== this.props.breakpoint) {\n if (this.props.breakpoint === 'tablet' || this.props.breakpoint === 'phone') {\n this.stopVideo();\n} else if (!this.state.isLoaded) {\n this.loadVideo();\n } else if (this.props.isPlay) {\n this.playVideo();\n }\n }\n\n if (isPlay !== this.props.isPlay) {\n if (!this.state.isLoaded) {\n this.loadVideo();\n return;\n }\n\n if (!this.props.isPlay) {\n this.stopVideo();\n } else {\n this.playVideo();\n }\n }\n }\n\n render() {\n const { mod, onClick, ...props } = this.props;\n\n const isDark = (mod === 'sectionFunctions' || mod === 'sectionArchive');\n\n const poster = (Sections[mod] !== undefined) ? Sections[mod].poster : null;\n\n return (\n \n \n {(mod === 'sectionFunctions' || mod === 'sectionArchive') && ()}\n\n {poster && ()}\n\n {this.state.isLoading && ()}\n \n\n {isDark && (\n \n \n \n )\n }\n\n {!isDark && (\n \n \n \n )\n }\n\n {mod === 'sectionFunctions' && (\n \n \n \n \n )\n }\n\n {mod === 'sectionArchive' && (\n \n \n \n )\n }\n \n );\n }\n}\n","import { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\nimport styled, { css } from 'styled-components';\n\nimport { getMedia, getMediaMin, percent } from '../../../helpers/layout';\nimport Television from '../Television/Television';\n\nexport const Title = styled.h2`\n ${FONTS.H1};\n color: #F2F2F2;\n\n @media only screen and ${getMedia('desktop', 'phone')} {\n ${FONTS.H2};\n }\n\n @media only screen and ${getMedia('phone')} {\n ${FONTS.H3};\n }\n`;\n\nexport const Text = styled.p`\n ${FONTS.S};\n color: #F2F2F2;\n margin-top: 15px;\n max-width: 83%;\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n margin-top: 19px;\n margin-left: auto;\n margin-right: auto;\n }\n\n @media only screen and ${getMedia('phone')} {\n max-width: none;\n }\n`;\n\nexport const Content = styled.div`\n position: relative;\n z-index: 11;\n display: block;\n margin-left: auto;\n max-width: ${percent(1920, 450)}vw;\n align-self: center;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n max-width: ${percent(1366, 395)}vw;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n margin-left: auto;\n margin-right: auto;\n text-align: center;\n max-width: ${percent(768, 555)}vw;\n }\n\n @media only screen and ${getMedia('phone')} {\n margin-left: 0;\n max-width: none;\n }\n\n @media only screen and (max-aspect-ratio: 4/3) and ${getMediaMin('tablet')} {\n max-width: 80%;\n margin-left: 0;\n padding-bottom: 30vh;\n }\n`;\n\nexport const TelevisionStyled = styled(Television)`\n position: absolute;\n bottom: -5.4vw;\n right: 0;\n z-index: 10;\n transform-origin: center;\n transform: translateX(64%) translateX(-74.9vw) translateY(-1.3%);\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n bottom: -5.5vw;\n transform: translateX(64%) translateX(-73.5vw) translateY(-2.1%);\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n bottom: -7.4vw;\n transform: translateX(8.6%);\n }\n\n @media only screen and ${getMedia('phone')} {\n bottom: 0.5vw;\n transform: translateX(21.3%);\n }\n`;\n\nexport const Label = styled.span`\n position: absolute;\n right: 73px;\n ${FONTS.XXS};\n color: #828282;\n max-width: 100%;\n bottom: 30px;\n z-index: 11;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n right: 44px;\n bottom: 21px;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n right: 60px;\n left: 60px;\n bottom: ${percent(768, 24)}vw;\n }\n\n @media only screen and ${getMedia('phone')} {\n right: 20px;\n left: 20px;\n bottom: ${percent(320, 25)}vw;\n ${FONTS.XS};\n }\n`;\n\nexport const Section = styled.section`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: linear-gradient(0deg, #272A2C 46.74%, #252729 98.96%);\n overflow: hidden;\n display: flex;\n padding: 145px 168px 84px;\n will-change: opacity;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n padding: 54px 79px 18px;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n display: block;\n position: relative;\n padding: 213px 62px ${percent(768, 647)}vw;\n height: auto;\n }\n\n @media only screen and ${getMedia('phone')} {\n display: block;\n position: relative;\n height: auto;\n padding: 116px 20px ${percent(320, 380)}vw;\n }\n\n @media only screen and (max-aspect-ratio: 4/3) and ${getMediaMin('tablet')} {\n display: flex;\n }\n\n @media only screen and ${getMediaMin('tablet')} {\n ${({ isActive, from, to }) => {\n // Переход на первый слайд\n if (!isActive && to === 'main') {\n return css`\n opacity: 0;\n transition: opacity 0s ease-out 1.4s;\n\n ${TelevisionStyled} {\n transform: scale(0.866) translateX(45.07%);\n transition: transform 0.8s cubic-bezier(.58,.06,.31,.79);\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n transform: scale(0.87) translateX(41.9%);\n }\n }\n\n ${Title},\n ${Text} {\n opacity: 0;\n transform: translateY(45px);\n transition: opacity 0.3s ease-out, transform 0.3s ease-out;\n }\n `;\n } else if (!isActive && to === 'advantage') { // Переход на второй слайд\n return css`\n opacity: 0;\n transition: opacity 0s ease-out 1.4s;\n\n ${TelevisionStyled} {\n transform: scale(0.866) translateX(64%) translateX(-58.1vw);\n transition: transform 0.8s cubic-bezier(.58,.06,.31,.79);\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n transform: scale(0.87) translateX(66%) translateX(-57.8vw);\n }\n }\n\n ${Title},\n ${Text} {\n opacity: 0;\n transform: translateY(45px);\n transition: opacity 0.3s ease-out, transform 0.3s ease-out;\n }\n `;\n } else if (isActive && (from === 'main' || from === 'advantage')) { // Приход с первого экрана\n return css`\n transition: opacity 0.4s ease-out 0.8s;\n opacity: 1;\n z-index: 10;\n\n ${Title},\n ${Text} {\n opacity: 1;\n transform: translateY(0);\n }\n\n ${Title} {\n transition: opacity 0.3s ease-out 0.8s, transform 0.3s ease-out 0.8s;\n }\n\n ${Text} {\n transition: opacity 0.3s ease-out 1.1s, transform 0.3s ease-out 1.1s;\n }\n `;\n } else if (isActive) {\n return css`\n transition: opacity 0.4s ease-out;\n opacity: 1;\n z-index: 10;\n\n ${Title},\n ${Text} {\n opacity: 1;\n transform: translateY(0);\n }\n\n ${Title} {\n transition: opacity 0.3s ease-out 0.4s, transform 0.3s ease-out 0.4s;\n }\n\n ${Text} {\n transition: opacity 0.3s ease-out 0.7s, transform 0.3s ease-out 0.7s;\n }\n `;\n } else {\n return css`\n opacity: 0;\n transition: opacity 0.4s ease-out 0.4s;\n\n ${Title},\n ${Text} {\n opacity: 0;\n transform: translateY(45px);\n transition: opacity 0.3s ease-out 0.4s, transform 0.3s ease-out 0.4s;\n }\n `;\n }\n }}\n }\n\n &:after {\n content: \"\";\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: ${percent(1920, 466)}vw;\n background: linear-gradient(0.07deg, #363C45 0.25%, #373C44 14.53%, #373C44 20.61%, #292D34 38.39%, #272C32 50.77%, #2A2E32 71.79%, #25282A 83.88%, #272A2C 110.32%);\n z-index: 1;\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n height: ${percent(768, 330)}vw;\n }\n\n @media only screen and ${getMedia('phone')} {\n height: ${percent(320, 258)}vw;\n }\n }\n`;\n","import React, { Component } from 'react';\n\nimport {\n Content,\n Label,\n Section,\n TelevisionStyled,\n Text,\n Title,\n} from './styled';\nexport default class SectionFunctions extends Component {\n render() {\n const { activeSlide, prevSlide, breakpoint, ...props } = this.props;\n\n const isActive = (activeSlide.link === 'archive');\n const from = (isActive) ? prevSlide.link : null;\n const to = (!isActive) ? activeSlide.link : null;\n\n return (\n
\n \n Пропустили любимый сериал? Найдите его в архиве.\n Все передачи записываются в архив. Смотрите то, что было на ТВ за последние 7 дней.\n \n\n \n \n
\n );\n }\n}\n","import { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\nimport styled, { css, keyframes } from 'styled-components';\n\nimport { getMedia, getMediaMin, percent } from '../../../helpers/layout';\n\nexport const Content = styled.div`\n display: block;\n max-width: ${percent(1920, 523)}vw;\n align-self: flex-end;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n max-width: ${percent(1366, 382)}vw;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n max-width: ${percent(768, 433)}vw;\n }\n\n @media only screen and ${getMedia('phone')} {\n max-width: none;\n }\n\n @media only screen and (max-aspect-ratio: 4/3) and ${getMediaMin('tablet')} {\n align-self: center;\n padding-top: 60vh;\n max-width: 60%;\n }\n`;\n\nexport const Text = styled.p`\n ${FONTS.S};\n color: ${COLORS.TextPrimary};\n max-width: 86%;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n max-width: 99%;\n }\n\n @media only screen and ${getMedia('tablet')} {\n max-width: none;\n }\n\n & + & {\n margin-top: 8px;\n\n @media only screen and ${getMedia('phone')} {\n margin-top: 12px;\n }\n }\n`;\n\nexport const Title = styled.h2`\n ${FONTS.H1};\n color: #333;\n\n @media only screen and ${getMedia('desktop', 'phone')} {\n ${FONTS.H2};\n }\n\n @media only screen and ${getMedia('phone')} {\n ${FONTS.H3};\n }\n\n & + ${Text} {\n margin-top: 20px;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n margin-top: 15px;\n }\n\n @media only screen and ${getMedia('phone')} {\n margin-top: 18px;\n }\n }\n`;\n\nexport const Composition = styled.div`\n position: absolute;\n top: 50%;\n transform: translateY(-46%);\n right: -3.7vw;\n display: inline-block;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n transform: translateY(-47.2%);\n right: -4.3vw;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n transform: none;\n top: auto;\n bottom: 7.9vw;\n right: -6.1vw;\n }\n\n @media only screen and ${getMedia('phone')} {\n transform: none;\n top: auto;\n bottom: 27.9vw;\n right: -13.7vw;\n }\n\n @media only screen and (max-aspect-ratio: 4/3) and ${getMediaMin('tablet')} {\n top: 40%;\n right: -8.3vw;\n }\n`;\n\nexport const PhoneWrapper = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n perspective: 124vw;\n perspective-origin: 107% -65%;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n perspective: 117vw;\n }\n\n @media only screen and ${getMedia('tablet')} {\n display: none;\n }\n`;\n\nexport const PhoneContainer = styled.div`\n position: absolute;\n bottom: ${percent(1159, 161)}%;\n left: ${percent(1538, 872)}%;\n background-color: #000;\n width: ${percent(1538, 370)}%;\n height: ${percent(1159, 157)}%;\n transform-origin: center;\n transform: rotateY(-29deg) rotateX(94deg) rotateY(-2deg);\n`;\n\nexport const TabletWrapper = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n perspective: 117vw;\n perspective-origin: 74% -53%;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n perspective: 113vw;\n }\n\n @media only screen and ${getMedia('tablet')} {\n display: none;\n }\n`;\n\nexport const TabletContainer = styled.div`\n position: absolute;\n bottom: ${percent(1159, 38)}%;\n left: ${percent(1538, 247)}%;\n background-color: #000;\n width: ${percent(1538, 573)}%;\n height: ${percent(1159, 308)}%;\n transform-origin: center;\n transform: rotateY(-30deg) rotateX(94deg) rotateY(-2deg);\n object-fit: cover;\n`;\n\nexport const DesktopWrapper = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n perspective: 198vw;\n perspective-origin: 24% -62%;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n perspective: 186vw;\n }\n\n @media only screen and ${getMedia('tablet')} {\n display: none;\n }\n`;\n\nexport const DesktopContainer = styled.div`\n position: absolute;\n bottom: ${percent(1159, 590)}%;\n left: ${percent(1538, 364)}%;\n background-color: #000;\n width: ${percent(1538, 890)}%;\n height: ${percent(1159, 457)}%;\n transform-origin: center;\n transform: rotateY(-53deg) rotateX(7deg);\n`;\n\nexport const Video = styled.video`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n`;\n\nexport const Poster = styled.picture`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n transition: opacity 0.3s ease-out;\n\n ${({ isPlaying }) => {\n if (isPlaying) {\n return css`opacity: 0;`;\n }\n }}\n`;\n\nexport const PosterSource = styled.img`\n width: 100%;\n height: 100%;\n object-fit: cover;\n`;\n\nexport const Mask = styled.picture`\n display: block;\n\n @media only screen and ${getMedia('tablet')} {\n display: none;\n }\n`;\n\nexport const MaskFull = styled(Mask)`\n display: none;\n\n @media only screen and ${getMedia('tablet')} {\n display: block;\n }\n`;\n\nexport const MaskSource = styled.img`\n position: relative;\n display: block;\n width: ${percent(1920, 1235)}vw;\n z-index: 10;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n width: ${percent(1366, 847)}vw;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n width: ${percent(768, 770)}vw;\n }\n\n @media only screen and ${getMedia('phone')} {\n width: ${percent(320, 364)}vw;\n }\n`;\n\nexport const Label = styled.span`\n position: absolute;\n right: 73px;\n ${FONTS.XXS};\n color: #828282;\n max-width: 100%;\n bottom: 27px;\n z-index: 11;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n right: 45px;\n bottom: 21px;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n right: 60px;\n left: 60px;\n bottom: ${percent(768, 21)}vw;\n }\n\n @media only screen and ${getMedia('phone')} {\n right: 20px;\n left: 20px;\n bottom: ${percent(320, 19)}vw;\n ${FONTS.XXS};\n }\n`;\n\nexport const Section = styled.section`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n display: flex;\n background: linear-gradient(59.34deg, #D6D6D6 0%, #E7E7E7 0.01%, #F7F7F7 41.08%, #EBEBEB 71.84%, #E8E8E8 107.74%);\n padding: 127px 117px 129px;\n will-change: opacity;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n padding: 70px 79px 48px;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n display: block;\n position: relative;\n padding: 133px 62px ${percent(768, 663)}vw;\n height: auto;\n }\n\n @media only screen and ${getMedia('phone')} {\n display: block;\n position: relative;\n height: auto;\n padding: 89px 20px ${percent(320, 371)}vw;\n }\n\n @media only screen and ${getMediaMin('tablet')} {\n ${({ isActive }) => {\n if (isActive) {\n return css`\n transition: opacity 0.4s ease-out;\n opacity: 1;\n z-index: 10;\n\n ${Title},\n ${Text} {\n opacity: 1;\n transform: translateY(0);\n }\n\n ${Title} {\n transition: opacity 0.3s ease-out 0.4s, transform 0.3s ease-out 0.4s;\n }\n\n ${Text} {\n transition: opacity 0.3s ease-out 0.7s, transform 0.3s ease-out 0.7s;\n }\n `;\n } else {\n return css`\n opacity: 0;\n transition: opacity 0.4s ease-out 0.4s;\n\n ${Title},\n ${Text} {\n opacity: 0;\n transform: translateY(45px);\n transition: opacity 0.3s ease-out 0.4s, transform 0.3s ease-out 0.4s;\n }\n `;\n }\n }}\n }\n`;\n\nconst rotate = keyframes`\n from {\n transform: translate(-50%, -50%) rotate(0deg);\n }\n\n to {\n transform: translate(-50%, -50%) rotate(360deg);\n }\n`;\n\nexport const Preloader = styled.img`\n pointer-events: none;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: ${percent(2588, 210)}%;\n animation: ${rotate} 1s linear infinite;\n z-index: 1;\n`;\n","import axios from 'axios';\nimport React, { Component } from 'react';\n\nimport spinner from '../images/spinner.svg';\nimport {\n Composition,\n Content,\n DesktopContainer,\n DesktopWrapper,\n Label,\n Mask,\n MaskFull,\n MaskSource,\n PhoneContainer,\n PhoneWrapper,\n Poster,\n PosterSource,\n Preloader,\n Section,\n TabletContainer,\n TabletWrapper,\n Text,\n Title,\n Video,\n} from './styled';\n\nconst SECTION_NAME = 'devices';\n\nconst PATHS = {\n mask_full_webp: '/static/images/catchup/devices-full.webp',\n mask_full_png: '/static/images/catchup/devices-full.png',\n mask_webp: '/static/images/catchup/devices.webp',\n mask_png: '/static/images/catchup/devices.png',\n poster_jpg: '/static/images/catchup/moana.jpg',\n poster_webp: '/static/images/catchup/moana.webp',\n mp4: '/static/video/catchup/catchup-devices.mp4',\n webm: '/static/video/catchup/catchup-devices.webm',\n};\n\nexport default class SectionDevices extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isLoaded: false,\n isLoading: false,\n isPlaying: false,\n };\n\n this.phone = React.createRef();\n this.tablet = React.createRef();\n this.desktop = React.createRef();\n }\n\n isVideoExist() {\n return (this.phone.current !== null && this.tablet.current !== null && this.tablet.desktop !== null);\n }\n\n getVideoSrc() {\n return (this.phone.current.canPlayType('video/webm') !== '') ? PATHS.webm : PATHS.mp4;\n }\n\n playVideo() {\n if (this.props.breakpoint === 'tablet' || this.props.breakpoint === 'phone' || this.isIE()) {\n return;\n}\n\n if (!this.state.isLoading && this.isVideoExist() && !this.state.isPlaying) {\n this.phone.current.currentTime = 0;\n this.tablet.current.currentTime = 0;\n this.desktop.current.currentTime = 0;\n this.phone.current.play();\n this.tablet.current.play();\n this.desktop.current.play();\n this.setState({ isPlaying: true });\n }\n }\n\n stopVideo() {\n if (!this.state.isLoading && this.isVideoExist() && this.state.isPlaying) {\n setTimeout(() => {\n this.phone.current.pause();\n this.tablet.current.pause();\n this.desktop.current.pause();\n this.setState({ isPlaying: false });\n }, 200);\n }\n }\n\n async loadVideo() {\n if (this.props.breakpoint === 'tablet' || this.props.breakpoint === 'phone') {\n return;\n}\n if (this.state.isLoading) {\n return;\n}\n\n const src = this.getVideoSrc();\n this.setState({ isLoading : true });\n\n try {\n const response = await axios.get(src, {\n responseType: 'blob',\n });\n\n const videoUrl = URL.createObjectURL(response.data);\n\n this.phone.current.src = videoUrl;\n this.tablet.current.src = videoUrl;\n this.desktop.current.src = videoUrl;\n\n this.setState({ isLoading : false, isLoaded: true });\n\n if (this.props.activeSlide.link === SECTION_NAME) {\n setTimeout(() => {\n this.playVideo();\n }, 50);\n }\n } catch (e) {\n this.setState({ isLoading : false });\n }\n }\n\n isIE() {\n return (/MSIE|Trident|Edge/).test(window.navigator.userAgent);\n }\n\n componentDidMount() {\n if (this.isVideoExist() && !this.isIE()) {\n this.loadVideo();\n }\n }\n\n componentDidUpdate({ activeSlide, breakpoint }) {\n const isActive = (this.props.activeSlide.link === SECTION_NAME);\n\n if (breakpoint !== this.props.breakpoint) {\n if (this.props.breakpoint === 'tablet' || this.props.breakpoint === 'phone') {\n this.stopVideo();\n} else if (!this.state.isLoaded) {\n this.loadVideo();\n } else if (isActive) {\n this.playVideo();\n }\n }\n\n if (activeSlide !== this.props.activeSlide) {\n if (!this.state.isLoaded && !this.isIE()) {\n this.loadVideo();\n return;\n }\n\n if (!isActive) {\n this.stopVideo();\n } else {\n this.playVideo();\n }\n }\n }\n\n render() {\n const { activeSlide, prevSlide, ...props } = this.props;\n\n const isActive = (activeSlide.link === SECTION_NAME);\n const from = (isActive) ? prevSlide.link : null;\n const to = (!isActive) ? activeSlide.link : null;\n\n return (\n
\n \n Управляйте просмотром на любом устройстве\n Не успели досмотреть фильм дома на ТВ — поставьте его на паузу и продолжите со смартфона по дороге на работу.\n Услуга работает на телевизорах с ТВ-приставкой, smart-телевизорах, планшетах, смартфонах, ноутбуках и домашних ПК.\n \n\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n\n \n \n \n \n\n \n \n \n \n \n\n \n
\n );\n }\n}\n","import AccordionInstance from '@r1-frontend/ui-react/deprecated/Accordion';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport { getMedia } from '../../../helpers/layout';\n\nexport const Wrap = styled.div`\n display: block;\n min-height: calc(100vh - 136px);\n background: #F7F7F8;\n padding: 100px 120px;\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n padding: 100px 70px;\n min-height: 0;\n }\n\n @media only screen and ${getMedia('phone')} {\n padding: 60px 20px;\n min-height: 0;\n }\n`;\n\nexport const Title = styled.div`\n ${FONTS.H1};\n margin-bottom: 30px;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n ${FONTS.H2};\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n ${FONTS.H2};\n }\n\n @media only screen and ${getMedia('phone')} {\n ${FONTS.H3};\n }\n`;\n\nexport const Accordion = styled(AccordionInstance)`\n margin-bottom: 10px;\n\n &:last-child {\n margin-bottom: 0;\n }\n`;\n\nexport const Content = styled.div`\n display: block;\n ${FONTS.S};\n\n p {\n margin: 10px 0;\n }\n\n ul {\n margin: 10px 0;\n\n li {\n &::before {\n content: \"-\";\n margin-right: 10px;\n }\n }\n }\n`;\n\nconst FAQ = ({ price, ...props }) => \n Частые вопросы\n \n \n

Услуга доступна Клиентам со Smart TV и приставками:

\n
    \n
  • Movix и Movix Pro
  • \n
  • Humax 9000i
  • \n
  • Humax 7000i
  • \n
  • Kaon HD 6000i
  • \n
  • Mag 250/G-Box и IMAQLIQ
  • \n
\n

Также воспользоваться услугой можно на сайте и в мобильном приложении Дом.ру Movix.

\n
\n
\n \n \n

Передачи доступны на каналах и пакетах каналов, которые входят в ваш тариф. На местных каналах и канале «Дом.ру Гид HD» услуга недоступна.

\n
\n
\n \n \n

Стоимость услуги — {price} р/мес. Минимальный срок подключения услуги — 30 дней.

\n
\n
\n
;\n\nexport default FAQ;\n","import { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\nimport styled, { css } from 'styled-components';\n\nimport { getMedia, getMediaMin, percent } from '~/src/helpers/layout';\n\nimport Television from '../Television/Television';\n\nexport const Content = styled.div`\n text-align: center;\n position: relative;\n z-index: 11;\n margin-left: auto;\n margin-right: auto;\n display: block;\n\n @media only screen and ${getMedia('phone')} {\n text-align: left;\n }\n`;\n\nexport const Title = styled.h2`\n ${FONTS.H1};\n color: #F2F2F2;\n margin-left: auto;\n margin-right: auto;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n ${FONTS.H2};\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n ${FONTS.H2};\n max-width: 80%;\n }\n\n @media only screen and ${getMedia('phone')} {\n ${FONTS.H3};\n }\n`;\n\nexport const Text = styled.p`\n ${FONTS.S};\n color: #F2F2F2;\n margin-top: 14px;\n max-width: 668px;\n width: 52%;\n margin-left: auto;\n margin-right: auto;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n ${FONTS.S};\n width: 100%;\n max-width: 65%;\n margin-top: 18px;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n ${FONTS.S};\n width: 100%;\n max-width: 80%;\n margin-top: 19px;\n }\n\n @media only screen and ${getMedia('phone')} {\n ${FONTS.S};\n width: 100%;\n max-width: 100%;\n margin-top: 17px;\n }\n`;\n\nexport const TelevisionStyled = styled(Television)`\n position: absolute;\n bottom: -5.4vw;\n right: 0;\n z-index: 10;\n transform-origin: center;\n transform: scale(0.866) translateX(64%) translateX(-58.1vw);\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n bottom: -5.5vw;\n transform: scale(0.87) translateX(66%) translateX(-57.8vw);\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n bottom: -0.1vw;\n transform: translateX(19.8%);\n }\n\n @media only screen and ${getMedia('phone')} {\n bottom: 17.5vw;\n transform: translateX(21.3%);\n }\n`;\n\nexport const Label = styled.span`\n position: absolute;\n right: 68px;\n ${FONTS.XXS};\n color: #828282;\n max-width: 100%;\n bottom: 30px;\n z-index: 11;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n right: 44px;\n bottom: 21px;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n right: 60px;\n left: 60px;\n bottom: ${percent(768, 40)}vw;\n }\n\n @media only screen and ${getMedia('phone')} {\n right: 20px;\n left: 20px;\n bottom: ${percent(320, 24)}vw;\n ${FONTS.XS};\n }\n`;\n\nexport const Section = styled.section`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: linear-gradient(0deg, #272A2C 46.74%, #252729 98.96%);\n overflow: hidden;\n padding: ${percent(1920, 145)}vw 148px 150px;\n will-change: opacity;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n padding: ${percent(1366, 123)}vw 79px 18px;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n display: block;\n position: relative;\n padding: 213px 62px ${percent(768, 640)}vw;\n height: auto;\n }\n\n @media only screen and ${getMedia('phone')} {\n display: block;\n position: relative;\n height: auto;\n padding: 116px 20px ${percent(320, 336)}vw;\n }\n\n @media only screen and (max-aspect-ratio: 4/3) and ${getMediaMin('tablet')} {\n display: flex;\n align-items: center;\n padding-bottom: 30vh;\n }\n\n @media only screen and ${getMediaMin('tablet')} {\n ${({ isActive, from, to }) => {\n // Уход на первый экран\n if (!isActive && to === 'main') {\n return css`\n opacity: 0;\n transition: opacity 0s ease-out 1.4s;\n\n ${TelevisionStyled} {\n transform: scale(0.866) translateX(45.07%);\n transition: transform 0.8s cubic-bezier(.58,.06,.31,.79);\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n transform: scale(0.87) translateX(41.9%);\n }\n }\n\n ${Title},\n ${Text} {\n opacity: 0;\n transform: translateY(45px);\n transition: opacity 0.3s ease-out, transform 0.3s ease-out;\n }\n `;\n } else if (!isActive && to === 'archive') { // Уход на третий экран\n return css`\n opacity: 0;\n transition: opacity 0s ease-out 1.4s;\n\n ${TelevisionStyled} {\n transform: translateX(64%) translateX(-74.9vw) translateY(-1.3%);\n transition: transform 0.8s cubic-bezier(.58,.06,.31,.79);\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n transform: translateX(64%) translateX(-73.5vw) translateY(-2.1%);\n }\n }\n\n ${Title},\n ${Text} {\n opacity: 0;\n transform: translateY(45px);\n transition: opacity 0.3s ease-out, transform 0.3s ease-out;\n }\n `;\n } else if (isActive && (from === 'archive' || from === 'main')) { // Приход с третего экрана или первого экрана\n return css`\n transition: opacity 0.4s ease-out 0.8s;\n opacity: 1;\n z-index: 10;\n\n ${Title},\n ${Text} {\n opacity: 1;\n transform: translateY(0);\n }\n\n ${Title} {\n transition: opacity 0.3s ease-out 0.8s, transform 0.3s ease-out 0.8s;\n }\n\n ${Text} {\n transition: opacity 0.3s ease-out 1.1s, transform 0.3s ease-out 1.1s;\n }\n `;\n } else if (isActive) {\n return css`\n transition: opacity 0.4s ease-out;\n opacity: 1;\n z-index: 10;\n\n ${Title},\n ${Text} {\n opacity: 1;\n transform: translateY(0);\n }\n\n ${Title} {\n transition: opacity 0.3s ease-out 0.4s, transform 0.3s ease-out 0.4s;\n }\n\n ${Text} {\n transition: opacity 0.3s ease-out 0.7s, transform 0.3s ease-out 0.7s;\n }\n `;\n } else {\n return css`\n opacity: 0;\n transition: opacity 0.4s ease-out 0.4s;\n\n ${Title},\n ${Text} {\n opacity: 0;\n transform: translateY(45px);\n transition: opacity 0.3s ease-out 0.4s, transform 0.3s ease-out 0.4s;\n }\n `;\n }\n }}\n }\n\n &:after {\n content: \"\";\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: ${percent(1920, 466)}vw;\n background: linear-gradient(0.07deg, #363C45 0.25%, #373C44 14.53%, #373C44 20.61%, #292D34 38.39%, #272C32 50.77%, #2A2E32 71.79%, #25282A 83.88%, #272A2C 110.32%);\n z-index: 1;\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n height: ${percent(768, 330)}vw;\n }\n\n @media only screen and ${getMedia('phone')} {\n height: ${percent(320, 258)}vw;\n }\n }\n`;\n","import React, { Component } from 'react';\n\nimport {\n Content,\n Label,\n Section,\n TelevisionStyled,\n Text,\n Title,\n} from './styled';\nexport default class SectionFunctions extends Component {\n render() {\n const { activeSlide, prevSlide, breakpoint, ...props } = this.props;\n\n const isActive = (activeSlide.link === 'advantage');\n const from = (isActive) ? prevSlide.link : null;\n const to = (!isActive) ? activeSlide.link : null;\n\n return (\n
\n \n Свобода от расписания эфира. Без рекламы.\n \n Отвлекли от решающего гола? Отмотайте эфир назад.\n Перематывайте рекламу во время захватывающего боевика.\n И ставьте его на паузу, если нужно ответить на звонок.\n \n \n\n \n \n
\n );\n }\n}\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { RequestDto } from './dto/RequestDto';\n\nconst catchUpOff = (body: RequestDto): IRequest => ({\n uri: '/v1/catch-up/catch-up-off',\n method: 'POST',\n withProvider: true,\n withAuth: true,\n body: JSON.stringify(body),\n});\n\nexport type { RequestDto };\nexport type { ResponseDto } from './dto/ResponseDto';\n\nexport default catchUpOff;\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { RequestDto } from './dto/RequestDto';\n\nconst catchUpOn = (body: RequestDto): IRequest => ({\n uri: '/v1/catch-up/catch-up-on',\n method: 'POST',\n withProvider: true,\n withAuth: true,\n body: JSON.stringify(body),\n});\n\nexport type { RequestDto };\nexport type { ResponseDto } from './dto/ResponseDto';\n\nexport default catchUpOn;\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { RequestDto } from './dto/RequestDto';\n\n/**\n * Статус Catch-up\n * https://master.api-profile.sandbox.d2c.r-one.io/docs/v1#/Catch%20Up/1b2fd31f9131c9a7a8694ccf35ef8850\n */\nconst getStateCatchUp = (queryParams: RequestDto): IRequest => ({\n uri: '/v1/catch-up/get-state-catch-up',\n method: 'GET',\n withAuth: true,\n withProvider: true,\n queryParams,\n});\n\nexport type { ResponseDto } from './dto/ResponseDto';\n\nexport default getStateCatchUp;\n\n","import { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\nimport styled, { css } from 'styled-components';\n\nimport { getMedia, getMediaMin, percent } from '../../../helpers/layout';\n\nexport const Background = styled.picture`\n position: absolute;\n display: block;\n bottom: 0;\n left: 0;\n z-index: 10;\n transform: translate(-6.3%,-4.3%);\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n transform: translate(-10.6%, -1.7%);\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n transform: translateX(-7.2%);\n }\n\n @media only screen and ${getMedia('phone')} {\n transform: translateX(-7.2%);\n bottom: ${percent(320, 11)}vw;\n }\n`;\n\nexport const BackgroundSource = styled.img`\n display: block;\n width: ${percent(1080, 1255)}vh;\n max-width: ${percent(1920, 1255)}vw;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n width: ${percent(750, 855)}vh;\n max-width: ${percent(1366, 855)}vw;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n width: ${percent(768, 775)}vw;\n max-width: none;\n }\n\n @media only screen and ${getMedia('phone')} {\n width: ${percent(320, 357)}vw;\n max-width: none;\n }\n`;\n\nexport const Content = styled.div`\n width: 100%;\n max-width: ${percent(1920, 485)}vw;\n margin-left: auto;\n display: block;\n align-self: center;\n position: relative;\n z-index: 11;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n max-width: ${percent(1366, 451)}vw;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n max-width: ${percent(768, 522)}vw;\n margin-right: auto;\n }\n\n @media only screen and ${getMedia('phone')} {\n max-width: none;\n margin-left: 0;\n }\n`;\n\nexport const Form = styled.form`\n background: #FFFFFF;\n border-radius: 4px;\n width: 100%;\n padding: 50px 40px;\n\n @media only screen and ${getMedia('phone')} {\n padding: 40px 26px;\n }\n`;\n\nexport const Title = styled.div`\n ${FONTS.H2};\n margin-bottom: 40px;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n ${FONTS.H3};\n margin-bottom: 35px;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n ${FONTS.H2};\n margin-bottom: 40px;\n }\n\n @media only screen and ${getMedia('phone')} {\n ${FONTS.H4};\n margin-bottom: 30px;\n }\n`;\n\nexport const Plug = styled.div`\n justify-content: space-between;\n align-items: center;\n ${FONTS.S};\n margin-bottom: 40px;\n\n &:last-child {\n margin-bottom: 0;\n }\n\n @media only screen and ${getMedia('phone')} {\n flex-direction: column;\n align-items: flex-start;\n }\n`;\n\nexport const Button = styled(BaseButton)`\n align-self: flex-start;\n width: auto;\n ${FONTS.MediumS};\n\n @media only screen and ${getMedia('phone')} {\n width: 100%;\n }\n`;\n\n\nexport const Cost = styled.div`\n display: block;\n\n & + ${Button} {\n @media only screen and ${getMedia('phone')} {\n margin-top: 30px;\n }\n }\n`;\n\nexport const CostLink = styled.span`\n border-bottom: 1px solid #1e81d6;\n color: #1e81d6;\n cursor: pointer;\n`;\n\n\nexport const Price = styled.div`\n display: inline-block;\n ${FONTS.L};\n`;\n\nexport const Currency = styled.span`\n ${FONTS.S};\n`;\n\nexport const Note = styled.div`\n align-items: center;\n ${FONTS.XS};\n background: url(\"/static/images/icons/gift-blue.svg\") 0 0 no-repeat;\n background-size: 27px auto;\n min-height: 27px;\n padding-left: 36px;\n\n a {\n border-bottom: 1px solid;\n }\n`;\n\nexport const Support = styled.div`\n display: block;\n color: ${COLORS.TextPrimary};\n position: relative;\n margin-top: 30px;\n padding-left: 30px;\n\n @media only screen and ${getMedia('phone')} {\n margin-top: 27px;\n padding-left: 33px;\n }\n\n &::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 5px;\n background: #56CCF2;\n border-radius: 10px;\n }\n`;\n\nexport const Phone = styled.div`\n text-decoration: none;\n color: #2D9CDB;\n display: inline-block;\n`;\n\nexport const Section = styled.section`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n display: flex;\n background: linear-gradient(65.13deg, #C4C4C4 -10.21%, #D3D5D9 -3.3%, #D5D5D5 46.55%, #FCFCFC 104.65%);\n padding: 127px 199px 129px;\n will-change: opacity;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n padding: 70px 79px 56px;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n display: block;\n position: relative;\n padding: 185px 62px ${percent(768, 525)}vw;\n height: auto;\n }\n\n @media only screen and ${getMedia('phone')} {\n display: block;\n position: relative;\n height: auto;\n padding: 108px 20px ${percent(320, 282)}vw;\n }\n\n @media only screen and ${getMediaMin('tablet')} {\n ${({ isActive }) => {\n if (isActive) {\n return css`\n transition: opacity 0.4s ease-out;\n opacity: 1;\n z-index: 10;\n\n ${Form},\n ${Support} {\n opacity: 1;\n transform: translateY(0);\n }\n\n ${Form} {\n transition: opacity 0.3s ease-out 0.4s, transform 0.3s ease-out 0.4s;\n }\n\n ${Support} {\n transition: opacity 0.3s ease-out 0.7s, transform 0.3s ease-out 0.7s;\n }\n `;\n } else {\n return css`\n opacity: 0;\n transition: opacity 0.4s ease-out 0.4s;\n\n ${Form},\n ${Support} {\n opacity: 0;\n transform: translateY(45px);\n transition: opacity 0.3s ease-out 0.4s, transform 0.3s ease-out 0.4s;\n }\n `;\n }\n }}\n }\n\n @media only screen and (max-aspect-ratio: 4/3) and ${getMediaMin('tablet')} {\n padding-bottom: 30vh;\n }\n`;\n","import { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\nimport catchUpOff from '@r1-frontend/api-domru/api-profile/v1/catch-up/catch-up/catch-up-off';\nimport catchUpOn from '@r1-frontend/api-domru/api-profile/v1/catch-up/catch-up/catch-up-on';\nimport { doRequest } from '@r1-frontend/do-request';\nimport { EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { BaseButton, btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport PopupResult from '@r1-frontend/ui-react/components/popups/popupResult';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\nimport PopupNoAuth from '~/src/components/Popups/NoAuth';\nimport { ddmmyyyy } from '~/src/helpers/date';\nimport NoSSR from '~/src/helpers/noSSR';\nimport { getCatchUpStatusState } from '~/src/store/actions/catchup';\nimport { openChat } from '~/src/store/actions/chat';\n\nimport {\n Background,\n BackgroundSource,\n Button,\n Content,\n Cost,\n CostLink,\n Currency,\n Form,\n Note,\n Phone,\n Plug,\n Price,\n Section,\n Support,\n Title,\n} from './styled';\n\nclass SectionOrder extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n popupNoAuthIsOpen: false,\n price: props.price,\n current_price: null,\n activate: false,\n availiable: false,\n date_to: null,\n unset_from: null,\n result: null,\n };\n }\n\n componentDidMount() {\n this.updateCatchUpState();\n }\n\n componentDidUpdate({ auth }) {\n if (JSON.stringify(auth.clientPersonal) !== JSON.stringify(this.props.auth.clientPersonal)) {\n this.updateCatchUpState();\n }\n }\n\n updateCatchUpState = async() => {\n const {\n auth: { isAuth, clientPersonal },\n } = this.props;\n\n if (!isAuth || !clientPersonal.agreementId) {\n return;\n }\n await this.props.getCatchUpStatusState(clientPersonal.agreementId);\n const info = this.props.catchup.info['0'];\n if (info) {\n const {\n activate,\n availiable,\n current_price,\n date_to,\n included_agr,\n price,\n unset_from,\n } = this.props.catchup.info['0'];\n\n this.setState({\n activate: Boolean(Number(activate)),\n availiable: Boolean(Number(availiable)),\n current_price,\n date_to,\n included_agr: Boolean(Number(included_agr)),\n price,\n unset_from,\n });\n }\n }\n\n sendAnalytics = (params) => dataLayerPush({\n event: EVENTS.UAevent,\n category: 'service catchup',\n label: '',\n ...params,\n });\n\n togglePopup = popupNoAuthIsOpen => {\n this.setState({ popupNoAuthIsOpen });\n };\n\n onPlug = async(e) => {\n if (e.cancelable) {\n e.preventDefault();\n }\n const { auth: { isAuth, clientPersonal } } = this.props;\n\n this.sendAnalytics({ action: 'btn click on connect' });\n\n if (isAuth) {\n const resp = await doRequest.apiProfile(\n catchUpOn({ agreement_id: clientPersonal.agreementId }),\n );\n if (resp.isSuccess) {\n this.updateCatchUpState(); // Обновляем статус формы\n\n this.setState({\n result: {\n title: 'Услуга «Управляй просмотром» успешно подключена',\n type: 'success',\n text: '',\n },\n });\n\n this.sendAnalytics({ action: 'success application client' });\n } else {\n const { error } = resp;\n const result = {\n title: 'Возникла ошибка при подключении',\n type: 'error',\n text: Написать в \n чат техподдержки\n ,\n };\n\n if (error.code === 'INSUFFICIENT_CREDIT_BALANCE') {\n result.title = error.message || 'Недостаточно средств для подключения услуги';\n result.text = 'Пожалуйста, пополните счёт.';\n } else if (error.code === 'SERVICE_ALREADY_ACTIVATE') {\n result.title = error.message || 'Услуга уже активирована на договоре';\n }\n\n this.setState({ result });\n\n this.sendAnalytics({ action: 'error application client' });\n }\n } else {\n this.sendAnalytics({ action: 'new user request' });\n this.togglePopup(true);\n }\n };\n\n onUnPlug = async(e) => {\n if (e.cancelable) {\n e.preventDefault();\n }\n const { auth: { clientPersonal } } = this.props;\n const resp = await doRequest.apiProfile(\n catchUpOff({ agreement_id: clientPersonal.agreementId }),\n );\n if (resp.isSuccess) {\n this.updateCatchUpState(); // Обновляем статус формы\n this.sendAnalytics({ action: 'turn off service' });\n\n this.setState({\n result: {\n title: 'Услуга «Управляй просмотром» успешно отключена',\n type: 'success',\n text: '',\n },\n });\n } else {\n const { error } = resp;\n const result = {\n title: 'Возникла ошибка при отключении услуги',\n type: 'error',\n text: Написать в \n чат техподдержки\n ,\n };\n\n if (error.code === 'INITIAL_PERIOD_STILL_ACTIVE') {\n result.text = '';\n\n const period = error.message.split('чем через');\n if (period[1]) {\n result.title = `Отключить услугу можно через${period[1].replace('.', '')}`;\n }\n }\n\n this.setState({ result });\n }\n };\n\n onCloseResult = () => {\n this.setState({\n result: null,\n });\n };\n\n onClickMovixPro = () => {\n this.sendAnalytics({\n action: 'btn click on movix pro',\n });\n };\n\n onClickChat = () => {\n this.sendAnalytics({ action: 'btn click on chat' });\n this.props.openChat();\n };\n\n onClickRequest = () => {\n this.sendAnalytics({\n action: 'new user request',\n });\n };\n\n render() {\n const { auth: { isAuth }, city: { phone }, activeSlide, prevSlide, ...props } = this.props;\n const { popupNoAuthIsOpen, result, price, current_price, activate, availiable, included_agr, date_to, unset_from } = this.state;\n const hasResult = Boolean(result);\n const dateTo = ddmmyyyy(new Date(date_to ? Number(date_to + '000') : 0));\n const unsetFrom = ddmmyyyy(new Date(unset_from ? Number(unset_from + '000') : 0));\n const isActive = (activeSlide.link === 'order');\n const from = (isActive) ? prevSlide.link : null;\n const to = (!isActive) ? activeSlide.link : null;\n\n return (\n
\n \n
\n {isAuth && \n {Boolean(activate) && Boolean(availiable) && \n Управление услугой<br/>«Управляй просмотром»\n \n \n {date_to !== '' &&

Текущая услуга доступна до {dateTo}

}\n

Абонентская плата: {current_price} ₽/мес.

\n
\n {unset_from\n ?

Отключение услуги возможно после {unsetFrom}

\n : \n }\n {\n activate && included_agr &&

Входит в тариф

\n }\n
\n
\n
}\n\n {!availiable && \n Управление услугой<br/>«Управляй просмотром»\n \n \n Услуга недоступна для подключения. Пожалуйста, обратитесь в \n службу поддержки.\n \n \n }\n
}\n\n {(!isAuth || (Boolean(availiable) && !activate)) && \n Подключение услуги<br/>«Управляй просмотром»\n \n \n
Ежемесячный платеж
\n {price} Р/мес\n
\n \n
\n \n

\n 1 месяц в подарок при покупке приставки{' '}\n \n Movix Pro\n .\n

\n
\n
}\n\n {hasResult && \n this.onCloseResult(result.type)}\n >\n {result.text}\n \n }\n\n {!isAuth && \n this.togglePopup(false)}\n open={popupNoAuthIsOpen}\n onClickRequest={this.onClickRequest}\n />\n }\n
\n \n Остались вопросы? Позвоните {phone}\n \n
\n \n \n \n \n
\n );\n }\n}\n\nconst mapStateToProps = ({ city, auth, catchup }) => ({\n city: city.currentCity,\n auth,\n catchup,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n openChat: () => dispatch(openChat()),\n getCatchUpStatusState: (agreement_id) => dispatch(getCatchUpStatusState(agreement_id)),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(SectionOrder);\n","import { doRequest } from '@r1-frontend/do-request';\nimport getStateCatchUp, { ResponseDto } from '@r1-frontend/api-domru/api-profile/v1/catch-up/get-state-catch-up';\n\nimport { TAppThunkDispatch } from '~/src/store';\nimport { ECatchUpActionTypes } from '~/src/store/reducers/catchup';\n\n// Получение текущего статуса\nconst saveCatchUpState = (stateStatus: ResponseDto) => ({\n type: ECatchUpActionTypes.SET_CATCHUP_STATUS_STATE,\n payload: stateStatus,\n});\n\nexport const getCatchUpStatusState = (\n agreement_id: number,\n) => {\n return async(dispatch: TAppThunkDispatch): Promise => {\n const resp = await doRequest.apiProfile(\n getStateCatchUp({ agreement_id }),\n );\n if (!resp.isSuccess) {\n return;\n }\n dispatch(saveCatchUpState(resp.payload));\n };\n};\n","import { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\nimport styled, { css } from 'styled-components';\n\nimport { getMedia, getMediaMin, percent } from '../../../helpers/layout';\nimport Television from '../Television/Television';\n\nexport const Content = styled.div`\n display: block;\n align-self: center;\n position: relative;\n z-index: 10;\n max-width: ${percent(1920, 830)}vw;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n max-width: ${percent(1366, 615)}vw;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n max-width: ${percent(768, 515)}vw;\n display: block;\n }\n\n @media only screen and ${getMedia('phone')} {\n max-width: none;\n display: block;\n }\n`;\n\nexport const Slogan = styled.span`\n ${FONTS.H2};\n color: ${COLORS.TextPrimary};\n display: block;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n ${FONTS.H3};\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n ${FONTS.XXL};\n }\n\n @media only screen and ${getMedia('phone')} {\n ${FONTS.S};\n }\n`;\n\nexport const Title = styled.h1`\n ${FONTS.H0};\n color: ${COLORS.TextPrimary};\n margin-top: 4px;\n margin-bottom: 0;\n display: block;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n ${FONTS.H1};\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n ${FONTS.H1};\n }\n\n @media only screen and ${getMedia('phone')} {\n ${FONTS.H2};\n margin-top: 10px;\n }\n`;\n\nexport const Text = styled.p`\n ${FONTS.L};\n color: ${COLORS.TextPrimary};\n margin-top: 36px;\n display: block;\n max-width: 75%;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n ${FONTS.S};\n margin-top: 28px;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n ${FONTS.S};\n margin-top: 26px;\n max-width: none;\n }\n\n @media only screen and ${getMedia('phone')} {\n ${FONTS.S};\n margin-top: 24px;\n max-width: 93%;\n }\n`;\n\nexport const Footnote = styled(Text)`\n ${FONTS.S};\n\n @media only screen and ${getMedia('desktop')} {\n ${FONTS.XXS};\n }\n`;\n\nexport const ButtonWrapper = styled.div`\n display: inline-flex;\n margin-top: 42px;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n margin-top: 37px;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n margin-top: 32px;\n }\n\n @media only screen and ${getMedia('phone')} {\n margin-top: 38px;\n }\n\n & > * {\n @media only screen and ${getMedia('phone')} {\n min-width: 210px;\n }\n }\n`;\n\nexport const TelevisionStyled = styled(Television)`\n position: absolute;\n bottom: -5.4vw;\n right: 0;\n z-index: 10;\n transform-origin: center;\n transform: scale(0.866) translateX(45.07%);\n will-change: transform;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n bottom: -5.5vw;\n transform: scale(0.87) translateX(41.9%);\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n bottom: -8.1vw;\n transform: translateX(39%);\n }\n\n @media only screen and ${getMedia('phone')} {\n bottom: -18.1vw;\n transform: translateX(51.2%);\n }\n`;\n\nexport const Section = styled.section`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 127px 114px 96px;\n background: linear-gradient(0deg, #E5E8EC 46.74%, #E5E7EC 98.96%);\n overflow: hidden;\n display: flex;\n will-change: opacity;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n padding: 140px 79px 18px;\n }\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n display: block;\n position: relative;\n padding: 138px 62px ${percent(768, 459)}vw;\n height: auto;\n }\n\n @media only screen and ${getMedia('phone')} {\n display: block;\n position: relative;\n height: auto;\n padding: 108px 20px ${percent(320, 408)}vw;\n }\n\n @media only screen and ${getMediaMin('tablet')} {\n ${({ isActive, from, to }) => {\n // Переход на второй слайд\n if (!isActive && to === 'advantage') {\n return css`\n opacity: 0;\n transition: opacity 0s ease-out 1.4s;\n\n ${TelevisionStyled} {\n transform: scale(0.866) translateX(64%) translateX(-58.1vw);\n transition: transform 0.8s cubic-bezier(.58,.06,.31,.79);\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n transform: scale(0.87) translateX(66%) translateX(-57.8vw);\n }\n }\n\n ${Slogan},\n ${Title},\n ${Text},\n ${ButtonWrapper} {\n opacity: 0;\n transform: translateY(45px);\n transition: opacity 0.3s ease-out, transform 0.3s ease-out;\n }\n `;\n } else if (!isActive && to === 'archive') { // Переход на третий слайд\n return css`\n opacity: 0;\n transition: opacity 0s ease-out 1.4s;\n\n ${TelevisionStyled} {\n transform: translateX(64%) translateX(-74.9vw) translateY(-1.3%);\n transition: transform 0.8s cubic-bezier(.58,.06,.31,.79);\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n transform: translateX(64%) translateX(-73.5vw) translateY(-2.1%);\n }\n }\n\n ${Slogan},\n ${Title},\n ${Text},\n ${ButtonWrapper} {\n opacity: 0;\n transform: translateY(45px);\n transition: opacity 0.3s ease-out, transform 0.3s ease-out;\n }\n `;\n } else if (isActive && (from === 'advantage' || from === 'archive')) { // Приход с второго или третего экрана\n return css`\n transition: opacity 0.4s ease-out 0.8s;\n opacity: 1;\n z-index: 10;\n\n ${Slogan},\n ${Title},\n ${Text},\n ${ButtonWrapper} {\n opacity: 1;\n transform: translateY(0);\n }\n\n ${Slogan},\n ${Title} {\n transition: opacity 0.3s ease-out 0.8s, transform 0.3s ease-out 0.8s;\n }\n\n ${Text},\n ${ButtonWrapper} {\n transition: opacity 0.3s ease-out 1.1s, transform 0.3s ease-out 1.1s;\n }\n `;\n } else if (isActive) {\n return css`\n transition: opacity 0.4s ease-out;\n opacity: 1;\n z-index: 10;\n\n ${Slogan},\n ${Title},\n ${Text},\n ${ButtonWrapper} {\n opacity: 1;\n transform: translateY(0);\n }\n\n ${Slogan},\n ${Title} {\n transition: opacity 0.3s ease-out 0.4s, transform 0.3s ease-out 0.4s;\n }\n\n ${Text},\n ${ButtonWrapper} {\n transition: opacity 0.3s ease-out 0.7s, transform 0.3s ease-out 0.7s;\n }\n `;\n } else {\n return css`\n opacity: 0;\n transition: opacity 0.4s ease-out 0.4s;\n\n ${Slogan},\n ${Title},\n ${Text},\n ${ButtonWrapper} {\n opacity: 0;\n transform: translateY(45px);\n transition: opacity 0.3s ease-out 0.4s, transform 0.3s ease-out 0.4s;\n }\n `;\n }\n }}\n }\n\n &:after {\n content: \"\";\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: ${percent(1920, 466)}vw;\n background: linear-gradient(0.06deg, #F2F6FF 0.25%, #F3F7FF 17.55%, #EEF2FC 24.7%, #E1E7F3 34.71%, #DBE1EE 40.99%, #DBE1EF 44.41%, #E2E6F1 54.67%, rgba(224, 226, 230, 0.5) 80.08%, rgba(230, 232, 236, 0.5) 102.12%);\n z-index: 1;\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n height: ${percent(768, 330)}vw;\n }\n\n @media only screen and ${getMedia('phone')} {\n height: ${percent(320, 258)}vw;\n }\n }\n`;\n","import { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\nimport { PRODUCTS, SERVICE } from '~/src/constants';\nimport { connectedProducts } from '~/src/helpers/clientInfo';\n\nimport {\n ButtonWrapper,\n Content,\n Footnote,\n Section,\n Slogan,\n TelevisionStyled,\n Text,\n Title,\n} from './styled';\n\nclass SectionWelcome extends Component {\n setButtonText = () => {\n const connectedProduct = connectedProducts(this.props.auth, PRODUCTS.content, SERVICE.viewManagement);\n if (this.props.auth.isAuth && connectedProduct) {\n return 'Управление услугой';\n }\n return 'Подключить услугу';\n }\n\n render() {\n const { activeSlide, prevSlide, onTelevisionClick, onButtonClick, breakpoint, catchup, ...props } = this.props;\n\n const isActive = (activeSlide.link === 'main');\n const from = (isActive) ? prevSlide.link : null;\n const to = (!isActive) ? activeSlide.link : null;\n\n return (\n
\n \n Услуга «Управляй просмотром»\n Архив передач ТВ каналов\n Ставьте фильм или матч на паузу, если нужно отлучиться. Перематывайте рекламу. Смотрите в архиве передач то, что пропустили на ТВ.\n *Услуга доступна на всех ТВ-каналах, кроме местных каналов (с 21 по 32 кнопку),\n канала MyZen 4K и первых 20 ТВ-каналов (каналы первого и второго мультиплекса).\n По решению правообладателей трансляция этих каналов в режиме «Управляй просмотром»\n приостановлена через мобильные приложения Дом.ру Movix для iOS, Android, Смарт ТВ и на сайте movix.ru.\n \n {!catchup.info['0']?.activate && \n \n }\n \n\n \n
\n );\n }\n}\n\nconst mapStateToProps = ({ city, auth, catchup }) => ({\n city: city.currentCity,\n auth,\n catchup,\n});\n\nexport default connect(\n mapStateToProps,\n)(SectionWelcome);\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\n\nconst SwipeContainer = styled.div``;\n\n/**\n * Функция определения события swipe на элементе.\n * @param {Object} el - элемент DOM.\n * @param {Object} settings - объект с предварительными настройками.\n */\nconst swipe = function(el, settings) {\n\n // настройки по умолчанию\n settings = { minDist: 60,\n maxDist: 120,\n maxTime: 700,\n minTime: 50,\n lockTrack: true, ...settings };\n\n // коррекция времени при ошибочных значениях\n if (settings.maxTime < settings.minTime) {\n settings.maxTime = settings.minTime + 500;\n}\n if (settings.maxTime < 100 || settings.minTime < 50) {\n settings.maxTime = 700;\n settings.minTime = 50;\n }\n\n let dir, // направление свайпа (horizontal, vertical)\n swipeType, // тип свайпа (up, down, left, right)\n dist, // дистанция, пройденная указателем\n isMouse = false, // поддержка мыши (не используется для тач-событий)\n isMouseDown = false, // указание на активное нажатие мыши (не используется для тач-событий)\n startX = 0, // начало координат по оси X (pageX)\n distX = 0, // дистанция, пройденная указателем по оси X\n startY = 0, // начало координат по оси Y (pageY)\n distY = 0, // дистанция, пройденная указателем по оси Y\n startTime = 0; // время начала касания\n const support = { // поддерживаемые браузером типы событий\n pointer: !!('PointerEvent' in window || ('msPointerEnabled' in window.navigator)),\n touch: !!(typeof window.orientation !== 'undefined' ||\n (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i).test(navigator.userAgent) ||\n 'ontouchstart' in window || navigator.msMaxTouchPoints || 'maxTouchPoints' in window.navigator > 1 ||\n 'msMaxTouchPoints' in window.navigator > 1),\n };\n\n /**\n * Опредление доступных в браузере событий: pointer, touch и mouse.\n * @returns {Object} - возвращает объект с доступными событиями.\n */\n const getSupportedEvents = function() {\n if (support.touch) {\n return {\n type: 'touch',\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n cancel: 'touchcancel',\n };\n }\n return {\n type: 'mouse',\n start: 'mousedown',\n move: 'mousemove',\n end: 'mouseup',\n leave: 'mouseleave',\n };\n };\n\n /**\n * Объединение событий mouse/pointer и touch.\n * @param e {Event} - принимает в качестве аргумента событие.\n * @returns {TouchList|Event} - возвращает либо TouchList, либо оставляет событие без изменения.\n */\n const eventsUnify = function(e) {\n return e.changedTouches ? e.changedTouches[0] : e;\n };\n\n /**\n * Обрабочик начала касания указателем.\n * @param e {Event} - получает событие.\n */\n const checkStart = function(e) {\n const event = eventsUnify(e);\n if (support.touch && typeof e.touches !== 'undefined' && e.touches.length !== 1) {\n return;\n} // игнорирование касания несколькими пальцами\n dir = 'none';\n swipeType = 'none';\n dist = 0;\n startX = event.pageX;\n startY = event.pageY;\n startTime = new Date().getTime();\n if (isMouse) {\n isMouseDown = true;\n} // поддержка мыши\n if (settings.lockTrack) {\n e.preventDefault();\n}\n };\n\n /**\n * Обработчик движения указателя.\n * @param e {Event} - получает событие.\n */\n const checkMove = function(e) {\n if (isMouse && !isMouseDown) {\n return;\n} // выход из функции, если мышь перестала быть активна во время движения\n const event = eventsUnify(e);\n distX = event.pageX - startX;\n distY = event.pageY - startY;\n if (Math.abs(distX) > Math.abs(distY)) {\n dir = (distX < 0) ? 'left' : 'right';\n} else {\n dir = (distY < 0) ? 'up' : 'down';\n}\n if (settings.lockTrack) {\n e.preventDefault();\n}\n };\n\n /**\n * Обработчик окончания касания указателем.\n * @param e {Event} - получает событие.\n */\n const checkEnd = function(e) {\n if (isMouse && !isMouseDown) { // выход из функции и сброс проверки нажатия мыши\n return;\n }\n const endTime = new Date().getTime();\n const time = endTime - startTime;\n if (time >= settings.minTime && time <= settings.maxTime) { // проверка времени жеста\n if ((Math.abs(distX) >= settings.minDist && Math.abs(distY) <= settings.maxDist) ||\n (Math.abs(distY) >= settings.minDist && Math.abs(distX) <= settings.maxDist)) {\n swipeType = dir; // опредление типа свайпа как \"top\" или \"down\", \"left\" или \"right\"\n }\n }\n dist = (dir === 'left' || dir === 'right') ? Math.abs(distX) : Math.abs(distY); // опредление пройденной указателем дистанции\n\n // генерация кастомного события swipe\n if (swipeType !== 'none' && dist >= settings.minDist) {\n const swipeEvent = new CustomEvent('swipe', {\n bubbles: true,\n cancelable: true,\n detail: {\n full: e, // полное событие Event\n dir: swipeType, // направление свайпа\n dist: dist, // дистанция свайпа\n time: time, // время, потраченное на свайп\n },\n });\n el.dispatchEvent(swipeEvent);\n }\n if (settings.lockTrack) {\n e.preventDefault();\n}\n };\n\n // добавление поддерживаемых событий\n const events = getSupportedEvents();\n\n // проверка наличия мыши\n if ((support.pointer && !support.touch) || events.type === 'mouse') {\n isMouse = true;\n}\n\n // добавление обработчиков на элемент\n el.addEventListener(events.start, checkStart);\n el.addEventListener(events.move, checkMove);\n el.addEventListener(events.end, checkEnd);\n};\n\nclass Swipe extends Component {\n slideTrackRef = React.createRef();\n\n componentDidMount() {\n const { setting, callBack } = this.props;\n const elem = this.slideTrackRef?.current;\n\n swipe(elem, setting);\n elem.addEventListener('swipe', callBack);\n }\n\n componentWillUnmount() {\n const { callBack } = this.props;\n const elem = this.slideTrackRef?.current;\n elem?.removeEventListener('swipe', callBack);\n }\n\n render() {\n const { children, ...rest } = this.props;\n\n return (\n \n { children }\n \n );\n }\n}\n\nexport default Swipe;\n","import { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\nimport { EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport DotNavigation from '@r1-frontend/ui-react/components/navigation/dotNavigation';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport HeaderLanding from '@r1-frontend/ui-react/organisms/ForLanding';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport styled, { css } from 'styled-components';\n\nimport SectionArchive from '~/src/components/Catchup/SectionArchive';\nimport SectionDevices from '~/src/components/Catchup/SectionDevices';\nimport SectionFAQ from '~/src/components/Catchup/SectionFAQ';\nimport SectionFunctions from '~/src/components/Catchup/SectionFunctions';\nimport SectionOrder from '~/src/components/Catchup/SectionOrder';\nimport SectionWelcome from '~/src/components/Catchup/SectionWelcome';\nimport { PRODUCTS, SERVICE } from '~/src/constants';\nimport Swipe from '~/src/features/catchup/swipe';\nimport { connectedProducts } from '~/src/helpers/clientInfo';\nimport { getCurrentBreakpoint, getMedia } from '~/src/helpers/layout';\n\nconst SECTIONS = [\n {\n title: 'Описание',\n link: 'main',\n theme: 'whiteTransparent',\n id: 'sectionMain',\n },\n {\n title: 'Возможности',\n link: 'advantage',\n theme: 'black',\n id: 'sectionAdvantage',\n },\n {\n title: 'Архив',\n link: 'archive',\n theme: 'black',\n id: 'sectionArchive',\n },\n {\n title: 'Устройства',\n link: 'devices',\n theme: 'whiteTransparent',\n id: 'sectionDevices',\n },\n {\n title: 'Подключить услугу',\n link: 'order',\n theme: 'whiteTransparent',\n id: 'sectionOrder',\n },\n];\n\nconst Container = styled(Swipe)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 100%;\n\n @media ${getMedia('tablet')} {\n left: 0;\n position: relative;\n height: auto;\n width: 100%;\n display: block;\n }\n`;\n\nconst Header = styled(HeaderLanding)`\n position: fixed;\n top: 0;\n left: ${p => p.withNewMenu ? '0' : '125px'};\n right: 0;\n width: auto;\n z-index: 19;\n transition-property: background;\n transition-duration: 0.4s;\n transition-timing-function: ease-out;\n padding-left: 114px;\n padding-right: 114px;\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n padding-left: 80px;\n padding-right: 80px;\n }\n\n @media ${getMedia('tablet')} {\n padding-left: 18px;\n padding-right: 18px;\n left: 0;\n top: 50px;\n }\n\n @media (max-width: 767px) {\n top: 100px;\n }\n`;\n\nconst HeaderLink = styled.a`\n margin-right: 45px;\n text-decoration: none;\n ${FONTS.S};\n transition: color 0.4s ease-out;\n\n ${({ isActive, theme }) => {\n if (isActive) {\n return css`color: #56CCF2;`;\n } else if (theme === 'black') {\n return css`color: ${COLORS.TextWhite};`;\n } else {\n return css`color: ${COLORS.TextPrimary};`;\n }\n }}\n\n ${({ transitionDelay }) => {\n return css`transition-delay: ${transitionDelay}s;`;\n }}\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n ${FONTS.XS};\n margin-right: 35px;\n };\n\n @media only screen and ${getMedia('tablet', 'phone')} {\n display: none;\n\n &[href=\"#faq\"] {\n display: block;\n }\n };\n\n @media only screen and ${getMedia('phone')} {\n display: none;\n }\n`;\n\nconst Dots = styled(DotNavigation)`\n position: fixed;\n right: 73px;\n z-index: 19;\n top: 50%;\n height: auto;\n width: auto;\n display: block;\n transform: translateY(-50%);\n\n @media only screen and ${getMedia('desktop', 'tablet')} {\n right: 40px;\n }\n\n @media only screen and ${getMedia('tablet')} {\n display: none;\n }\n\n & > * + * {\n margin-top: 14px;\n }\n`;\n\nconst FAQPopup = styled(DefaultPopup)`\n * {\n font-family: inherit;\n }\n`;\n\nclass CatchupLayout extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n popupFAQIsOpen: false,\n breakpoint: getCurrentBreakpoint(),\n activeIndex: 0,\n prevIndex: 0,\n };\n\n this.isAnimationEnd = true;\n }\n\n next() {\n if (this.state.activeIndex < SECTIONS.length - 1) {\n this.change(this.state.activeIndex + 1);\n }\n }\n\n prev() {\n if (this.state.activeIndex > 0) {\n this.change(this.state.activeIndex - 1);\n }\n }\n\n getDeltaY = (event) => {\n if (event.wheelDelta && !event.deltaY) {\n this.getDeltaY = (event) => {\n return event.wheelDelta * -1;\n };\n } else {\n this.getDeltaY = (event) => {\n return event.deltaY;\n };\n }\n\n return this.getDeltaY(event);\n }\n\n onWheel = (e) => {\n const delta = this.getDeltaY(e);\n if (delta > 0) {\n this.next();\n } else if (delta < 0) {\n this.prev();\n }\n }\n\n checkBreakPoint = () => {\n const current = getCurrentBreakpoint();\n if (this.state.breakpoint !== current) {\n this.setState({ breakpoint: current });\n }\n }\n\n onResize = () => {\n if (this.resizeTimeout !== undefined) {\n clearTimeout(this.resizeTimeout);\n }\n\n this.resizeTimeout = setTimeout(() => {\n this.checkBreakPoint();\n this.updateSectionsOffsets();\n }, 100);\n }\n\n getIndexSection(section) {\n const keys = Object.keys(SECTIONS);\n for (let i = 0; i <= keys.length; i += 1) {\n if (SECTIONS[keys[i]].link === section.link) {\n return i;\n }\n }\n\n return 0;\n }\n\n dotClick = (activePage) => {\n const index = this.getIndexSection(activePage);\n this.change(index);\n }\n\n toggleFAQPopup = popupFAQIsOpen => {\n this.setState({ popupFAQIsOpen });\n };\n\n headerFaqClick = e => {\n if (e.cancelable) {\n e.preventDefault();\n }\n\n if (this.state.breakpoint !== 'tablet') {\n this.toggleFAQPopup(true);\n } else {\n document.getElementById('sectionFaq').scrollIntoView({ block: 'center', behavior: 'smooth' });\n }\n }\n\n onScroll = () => {\n if (this.state.breakpoint !== 'tablet' && this.state.breakpoint !== 'phone') {\n return;\n }\n\n if (this.scrollTimeout !== undefined) {\n clearTimeout(this.scrollTimeout);\n }\n\n this.scrollTimeout = setTimeout(() => {\n const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n\n let activeSection;\n for (let i = 0; i < this.sectionsOffsets.length; i += 1) {\n if (scrollTop >= this.sectionsOffsets[i].top) {\n activeSection = this.sectionsOffsets[i];\n }\n }\n\n this.setState({\n prevIndex: this.state.activeIndex,\n activeIndex: this.getIndexSection(activeSection),\n });\n }, 50);\n }\n\n headerButtonClick = () => {\n if ((this.state.breakpoint === 'tablet' || this.state.breakpoint === 'phone')) {\n document.getElementById('sectionOrder').scrollIntoView({ block: 'start', behavior: 'smooth' });\n } else {\n const index = this.getIndexSection({ link: 'order' });\n this.change(index);\n }\n }\n\n onButtonClickSectionWelcome = e => {\n if (e.cancelable) {\n e.preventDefault();\n }\n this.headerButtonClick();\n dataLayerPush({\n event: EVENTS.UAevent,\n category: 'service catchup',\n label: '',\n action: 'btn click on connect on the first screen',\n });\n };\n\n changeSlideSwipe = ({ detail }) => {\n if (detail.full.pointerType === 'mouse') {\n return;\n }\n\n if (detail.dir === 'up' || detail.dir === 'left') {\n this.next();\n } else if (detail.dir === 'down' || detail.dir === 'right') {\n this.prev();\n }\n }\n\n change(activeIndex) {\n if (this.state.breakpoint === 'tablet' || this.state.breakpoint === 'phone') {\n return;\n }\n if (this.isAnimationEnd === false) {\n return;\n }\n this.isAnimationEnd = false;\n\n this.setState({\n prevIndex: this.state.activeIndex,\n activeIndex,\n });\n\n setTimeout(() => {\n this.isAnimationEnd = true;\n }, 1500);\n }\n\n onKeyUp = (e) => {\n if (e.keyCode === 39 || e.keyCode === 40) {\n this.next();\n } else if (e.keyCode === 37 || e.keyCode === 38) {\n this.prev();\n }\n }\n\n componentDidMount() {\n document.addEventListener('mousewheel', this.onWheel);\n document.addEventListener('wheel', this.onWheel);\n document.addEventListener('MozMousePixelScroll', this.onWheel);\n document.addEventListener('keyup', this.onKeyUp);\n window.addEventListener('resize', this.onResize);\n window.addEventListener('scroll', this.onScroll);\n\n this.checkBreakPoint();\n\n if (this.state.breakpoint === 'tablet' || this.state.breakpoint === 'phone') {\n this.updateSectionsOffsets();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousewheel', this.onWheel);\n document.removeEventListener('wheel', this.onWheel);\n document.removeEventListener('MozMousePixelScroll', this.onWheel);\n document.removeEventListener('keyup', this.onKeyUp);\n window.removeEventListener('resize', this.onResize);\n window.removeEventListener('scroll', this.onScroll);\n }\n\n getOffsetElement(element_) {\n const rect = element_.getBoundingClientRect();\n const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n return rect.top + scrollTop;\n }\n\n updateSectionsOffsets() {\n this.sectionsOffsets = SECTIONS.map((section) => {\n const element = document.getElementById(section.id);\n\n return {\n id: section.id,\n top: this.getOffsetElement(element) - 55,\n link: section.link,\n };\n });\n }\n\n getDelay(prevSection, activeSection) {\n if (this.state.breakpoint === 'tablet' || this.state.breakpoint === 'phone') {\n return 0;\n }\n\n if (prevSection === 'main' && activeSection === 'advantage') {\n return 0.8;\n } else if (prevSection === 'advantage' && activeSection === 'main') {\n return 0.8;\n } else if (prevSection === 'advantage' && activeSection === 'archive') {\n return 0.8;\n } else if (prevSection === 'archive' && activeSection === 'advantage') {\n return 0.8;\n } else if (prevSection === 'main' && activeSection === 'archive') {\n return 0.8;\n } else if (prevSection === 'archive' && activeSection === 'main') {\n return 0.8;\n } else {\n return 0;\n }\n }\n\n setButtonText = () => {\n const connectedProduct = connectedProducts(this.props.auth, PRODUCTS.content, SERVICE.viewManagement);\n if (this.props.auth.isAuth && connectedProduct) {\n if (this.state.breakpoint === 'phone') {\n return 'Отключить';\n }\n return 'Управление услугой';\n }\n if (this.state.breakpoint === 'phone') {\n return 'Подключить';\n }\n return 'Подключить услугу';\n }\n\n\n render() {\n const { price, ...props } = this.props;\n const { activeIndex, prevIndex, breakpoint, headerMenu, popupFAQIsOpen } = this.state;\n\n const activeSection = SECTIONS[activeIndex];\n const prevSection = SECTIONS[prevIndex];\n const theme = activeSection.theme;\n const animationDelay = this.getDelay(prevSection.link, activeSection.link);\n\n return \n \n\n \n Частые вопросы\n \n\n \n\n {\n this.next();\n }}\n />\n \n \n \n \n { popupFAQIsOpen && }\n\n this.toggleFAQPopup(false)}\n isOpen={popupFAQIsOpen}\n >\n \n \n ;\n }\n}\n\nconst mapStateToProps = ({ city, auth }) => ({\n city: city.currentCity,\n auth,\n});\n\nexport default connect(\n mapStateToProps,\n)(CatchupLayout);\n","import React from 'react';\n\nimport Layout from '~/src/features/_layout';\nimport CatchupLayout from '~/src/features/catchup';\nimport * as base from '~/src/helpers/basePageFunc';\nimport { getCurrentCity, selectCompanyName } from '~/src/store/selectors/city';\n\nclass Catchup extends React.Component {\n\n // @TODO удалил странную логику, оставил хардкод для НЗ, разобраться в рамках WEB-43437\n static async getInitialProps(options) {\n await base.initialProps(options);\n const telearchivePrice = 90;\n const state = options.store.getState();\n const city = getCurrentCity(state);\n const companyName = selectCompanyName(state);\n\n return {\n price: telearchivePrice,\n city,\n companyName,\n };\n }\n\n render() {\n const { city, price, companyName, ...props } = this.props;\n\n return (\n \n \n \n );\n }\n\n}\n\nexport default Catchup;\n","import isEmpty from 'lodash/isEmpty';\n\n/**\n * Перевод объекта адреса в строку\n * @param obj\n */\nexport function addressToString({ city, street, house, building, flat }) {\n const result = [];\n\n Boolean(city) && (result.push(`г. ${city}`));\n Boolean(street) && (result.push(`ул. ${street}`));\n Boolean(house) && (result.push(`д. ${house}${building ? `/${building}` : ''}`));\n Boolean(flat) && (result.push(`кв. ${flat}`));\n\n return result.join(', ');\n}\n\n/**\n * Проверка наличия услуги на договоре\n * @param data obj\n * @param productID int\n * @param serviceID int\n * @returns {boolean}\n */\nexport function connectedProducts(data, productID, serviceID) {\n if (data && data.clientProducts && data.clientProducts.services) {\n const product = data.clientProducts.services.find(item => item.productId === productID);\n // услуга недоступна для подключения\n if (product.terminalResources === null) {\n return false;\n }\n const service = product.terminalResources.find(item => item.id === serviceID);\n return !!(service && Object.keys(service).length > 0);\n }\n}\n\n/**\n * Определяем есть ли в продуктах тарифы домофонии\n * productsInfoItem - экземпляр productInfo.p75\n */\nexport const hasProductServices = (serviceArr, productsInfoItem) => {\n if (serviceArr == null) {\n return false;\n }\n const hasMainServices = serviceArr.filter(service => [5, 12, 32, 53].includes(service.productId));\n return !isEmpty(serviceArr.filter(service => service.productId === productsInfoItem.productId)) && isEmpty(hasMainServices);\n};\n\n/**\n * Извлечение айди города из транзакции биллинга. Формат транзакции - айди плюс 11 символов. Например: 49FEKMD53LF91\n * @param transactionId\n * @returns {boolean|number}\n */\nexport const getCityIdByTransaction = (transactionId) => {\n if (!transactionId) {\n return false;\n }\n\n const stringedVal = transactionId.toString();\n\n return parseInt(stringedVal.substring(0, stringedVal.length - 11));\n};\n","import dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\ndayjs.extend(customParseFormat);\n\nconst months = [\n 'января',\n 'февраля',\n 'марта',\n 'апреля',\n 'мая',\n 'июня',\n 'июля',\n 'августа',\n 'сентября',\n 'октября',\n 'ноября',\n 'декабря',\n];\n\nexport const hhmm = date => {\n const hh = String(date.getHours()).padStart(2, '0');\n const mm = String(date.getMinutes()).padStart(2, '0');\n\n return `${hh}:${mm}`;\n};\n\n/**\n * Дата, месяц\n * @param {Date} date\n * @returns {string} '01.09'\n */\nexport const dateWithoutYear = date => date.toLocaleString('ru-RU', { day: 'numeric', month: 'numeric' });\n\n/** Дата, месяц, год строкой месяц\n * @param {Date | number} date - дата\n * @return {string} '01.09.2021'\n */\nexport const ddmmyyyy = date => {\n const dd = String(date.getDate()).padStart(2, '0');\n const mm = String(date.getMonth() + 1).padStart(2, '0');\n const yyyy = date.getFullYear();\n\n return dd + '.' + mm + '.' + yyyy;\n};\n\n/**\n * Дата, месяц, год строкой месяц в родительном падеже\n * @param {Date} date - дата\n * @param {boolean} isGenitive - в родительном\n * @return {string} дата вида '10 января 2020'\n */\nexport function ddmmmmyyyy(date, isGenitive = true, withUTC = false) {\n if (date instanceof Date) {\n let dd;\n if (withUTC) {\n dd = String(date.getUTCDate()).padStart(2, '0');\n } else {\n dd = String(date.getDate()).padStart(2, '0');\n }\n const mmmm = monthString(date, !isGenitive);\n const yyyy = date.getFullYear();\n\n return dd + ' ' + mmmm + ' ' + yyyy;\n }\n throw Error('аргумент date должен быть экземплятором класса Date');\n}\n\n/**\n * День месяца, числом\n * @param {string} date - дата строкой '03.09.2021'\n * @return {number} день вида 3\n */\nexport const dd = date => {\n const dateArr = date.split('.');\n return parseInt(dateArr[0], 10);\n};\n\n/**\n * Дата, месяц строкой\n * @param {string} date - дата строкой '03.09.2021'\n * @return {string} дата вида '3 сентября'\n */\nexport const ddmm = date => {\n const dateArr = date.split('.');\n const dd = parseInt(dateArr[0], 10);\n const mm = months[parseInt(dateArr[1] - 1)];\n\n return dd + ' ' + mm;\n};\n\n/**\n * @param {Date} date\n * @param {Boolean} padStart\n * @return {string} '03 сентября'\n */\nexport function ddmmm(date, padStart = true) {\n let dd = date.getDate().toString();\n if (padStart) {\n dd = dd.padStart(2, '0');\n }\n const mmm = months[date.getMonth()];\n return `${dd} ${mmm}`;\n}\n\n/**\n * get month string from date\n * @param {Date} date\n * @param {boolean} plain\n * @returns {string}\n */\nexport const monthString = (date, plain = true) => {\n switch (date.getMonth()) {\n case 0:\n return plain ? 'январь' : 'января';\n case 1:\n return plain ? 'февраль' : 'февраля';\n case 2:\n return plain ? 'март' : 'марта';\n case 3:\n return plain ? 'апрель' : 'апреля';\n case 4:\n return plain ? 'май' : 'мая';\n case 5:\n return plain ? 'июнь' : 'июня';\n case 6:\n return plain ? 'июль' : 'июля';\n case 7:\n return plain ? 'август' : 'августа';\n case 8:\n return plain ? 'сентябрь' : 'сентября';\n case 9:\n return plain ? 'октябрь' : 'октября';\n case 10:\n return plain ? 'ноябрь' : 'ноября';\n case 11:\n return plain ? 'декабрь' : 'декабря';\n }\n};\n\n/**\n * @param {Date} date\n * @param {Number} nextMonthCount\n * @param {Boolean} isPlain\n * @returns {string}\n */\nexport function getMonthName(date, nextMonthCount = 0, isPlain = true) {\n const innerDate = new Date(date);\n if (nextMonthCount > 0) {\n innerDate.setMonth(innerDate.getMonth() + nextMonthCount);\n }\n return monthString(innerDate, isPlain);\n}\n\n/**\n * Месяц в Родительном падеже\n * @param {Number} num - номер месяца начиная с 0\n * @return {string}\n */\nexport const getNameMonth = num => {\n return months[num];\n};\n\n/**\n * Преобразование даты формата 11.12.2019 в формат 2019-12-11 или наоборот\n * @param {string} date - дата в формате 11.12.2019 или 2019-12-11\n * @return {string}\n */\nexport const formatDate = (date) => {\n // разделитель - тире или точка\n return date.indexOf('-') !== -1\n ? date.split('-').reverse().join('.')\n : date.split('.').reverse().join('-');\n};\n\n/**\n * Парсим дату вида \"25.06.2020 12:38:30\", \"25.06.2020 4:38\" или \"25.06.2020\"\n * @param {string} string\n * @return {Date}\n */\nexport function parseRusDate(string) {\n // 1 2 3 4 5 6 7\n const regExp = /^(\\d{2})\\.(\\d{2})\\.(\\d{4})(\\s(\\d{1,2}):(\\d{2}):?(\\d{2})?)?$/g;\n const matched = regExp.exec(string.trim());\n\n if (matched == null) {\n throw Error('Некорректная строка c датой');\n }\n\n if (matched[4] == null) {\n return new Date(Date.UTC(matched[3], +matched[2] - 1, matched[1], 0, 0, 0));\n } else {\n return new Date(Date.UTC(matched[3], +matched[2] - 1, matched[1], matched[5], matched[6], matched[7] || 0));\n }\n}\n\n/**\n * @param {Date} date\n * @return {string} \"2020-12-20\"\n */\nexport function toISODateString(date) {\n return dayjs(date).format('YYYY-MM-DD');\n}\n\n\n/** TODO - аналог addDays убрать дубль, ps:addDays - более понятное название, оставить его\n * Новая дата + count дней\n * @deprecated use addDays\n * @param {number} count\n * @param {Date} date\n * @return {Date}\n */\nexport function dateNextDay(count, date = new Date()) {\n const now = new Date(date);\n now.setDate(now.getDate() + count);\n return now;\n}\n\n/** TODO - аналог dateNextDay убрать дубль\n * Добавляет к дате указанное кол-во дней\n * @param {Date} date\n * @param {number} days\n * @returns {Date}\n */\nexport const addDays = (date, days) => {\n const dateTo = new Date(date);\n dateTo.setDate(dateTo.getDate() + days);\n return dateTo;\n};\n\nexport const generateArrayOfYears = (threshold = 9) => {\n const max = new Date().getFullYear();\n const min = max - threshold;\n const years = [];\n\n for (let i = max; i >= min; i--) {\n years.push(i);\n }\n\n return years;\n};\n\n/** Вычисление даты с прибавлением нескольких месяцев\n * @param {number | string | Date} dateValue - дата\n * @param {number} amount - количество месяцев\n * @return {Date}\n */\nexport const addMonths = (dateValue, amount) => {\n const date = new Date(dateValue);\n const dayOfMonth = date.getDate();\n\n const endOfDesiredMonth = new Date(dateValue);\n endOfDesiredMonth.setTime(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n\n if (dayOfMonth >= daysInMonth) {\n return endOfDesiredMonth;\n } else {\n date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return date;\n }\n};\n\n/** Приведение даты к формату 'ru-RU'\n * @param {number | string | Date} date - дата\n * @return {string} '22.30.15'\n */\nexport const dateToLocaleRu = (date) => new Date(date).toLocaleDateString('ru-RU');\n\nexport const daysDifinition = {\n yesterday: 'вчера',\n today: 'сегодня',\n tomorrow: 'завтра',\n afterTomorrow: 'послезавтра',\n};\n\n/**\n * Возвращает Сегодня/Завтра/Послезавтра/Вчера\n * @param {number} diffDay - разница в днях между датами (\"11.10.2020\" - \"10.10.2020\" равна 1 день)\n * @return {string} 'Сегодня' || ''\n */\nexport const getDateDefinition = (diffDay) => {\n switch (true) {\n case (diffDay === -1):\n return daysDifinition.yesterday;\n case (diffDay === 0):\n return daysDifinition.today;\n case (diffDay === 1):\n return daysDifinition.tomorrow;\n case (diffDay === 2):\n return daysDifinition.afterTomorrow;\n default:\n return '';\n }\n};\n","const breakpoints = {\n desktop: 1750,\n tablet: 859,\n phone: 600,\n};\n\n/**\n * Получение процента ребенка относительно родителя\n * @param {Number}\n * @param {Number}\n * @return {Number}\n */\n\nexport function percent(parent, child) {\n return child * 100 / parent;\n}\n\n/**\n * Получение media query\n * @param {String} - один из ключей breakpoints\n * @param {String} - один из ключей breakpoints\n * @return {String}\n */\n\nexport function getMedia(from, to) {\n if (to !== undefined) {\n return `(max-width: ${breakpoints[from]}px) and (min-width: ${breakpoints[to] + 1}px)`;\n}\n return `(max-width: ${breakpoints[from]}px)`;\n}\n\n/**\n * Получение media query min\n * @param {String} - один из ключей breakpoints\n * @return {String}\n */\n\nexport function getMediaMin(from) {\n return `(min-width: ${breakpoints[from] + 1}px)`;\n}\n\n/**\n * Получение текущего брекпоинта\n * @return {String}\n */\n\nexport function getCurrentBreakpoint() {\n const keys = Object.keys(breakpoints);\n let current = keys[0];\n\n try {\n keys.forEach((key) => {\n if (window.matchMedia(`(max-width: ${breakpoints[key]}px)`).matches) {\n current = key;\n }\n });\n\n return current;\n } catch (e) {\n return current;\n }\n}\n","import { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nconst themes = {\n bordered: {\n background: COLORS.BgMain,\n borderWidth: '1px',\n radius: '4px',\n padding: '20px',\n mobilePadding: '15px',\n color: COLORS.TextPrimary,\n },\n simple: {\n background: 'transparent',\n borderWidth: '1px 0',\n radius: '0px',\n padding: '20px 0',\n mobilePadding: '15px 0',\n color: COLORS.TextPrimary,\n },\n light: {\n border: COLORS.BgLight,\n background: COLORS.BgLight,\n color: COLORS.TextPrimary,\n colorArrow: COLORS.GRAY_DARK,\n backgroundIcon: COLORS.BgSecondary,\n borderIcon: COLORS.BgSecondary,\n colorArrowIsOpen: COLORS.GRAY_DARK,\n backgroundIconIsOpen: COLORS.Outline_Light,\n borderIconIsOpen: COLORS.Outline_Light,\n radius: BorderRadius.componentRadius,\n padding: '20px 24px',\n mobilePadding: '15px',\n storyColor: COLORS.BgMain,\n },\n dark: {\n border: COLORS.Control,\n background: COLORS.Control,\n color: COLORS.TextWhite,\n colorArrow: COLORS.Control,\n backgroundIcon: COLORS.GRAY_DARK,\n borderIcon: COLORS.GRAY_DARK,\n colorArrowIsOpen: COLORS.Control,\n backgroundIconIsOpen: COLORS.TextWhite,\n borderIconIsOpen: COLORS.TextWhite,\n radius: BorderRadius.componentRadius,\n padding: '20px 24px',\n mobilePadding: '15px',\n storyColor: '#3D3D3D',\n },\n};\n\nexport default themes;\n","import { 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';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport styled, { ThemeProvider } from 'styled-components';\n\nimport themes from './themes.js';\n\nconst Wrapper = styled.div`\n flex-direction: column;\n width: 100%;\n background: ${props => props.theme.background};\n border: 1px solid ${({ theme }) => theme.border ? theme.border : COLORS.GRAY_LIGHT};\n border-width: ${props => props.theme.borderWidth};\n border-radius: ${props => props.theme.radius};\n padding: ${props => props.theme.padding};\n color: ${({ theme }) => theme.color ? theme.color : COLORS.TextPrimary};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n padding: ${props => props.theme.mobilePadding};\n }\n`;\n\nconst AccordionTitle = styled.div`\n ${FONTS.L};\n width: 100%;\n justify-content: space-between;\n align-items: center;\n flex-wrap: nowrap;\n cursor: pointer;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.S};\n }\n`;\n\nconst Title = styled.div`\n flex-grow: 1;\n width: calc(100% - 53px); \n ${props => props.theme.desktopFont || ''};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: calc(100% - 39px);\n ${props => props.theme.mobileFont || ''};\n }\n`;\n\nconst Icon = styled.span`\n position:relative;\n margin-left: 20px;\n flex: 0 0 36px;\n height: 36px;\n border-radius: 50%;\n transform: ${props => props.open ? 'none' : 'scaleY(-1)'};\n transition: all 0.2s ease-in;\n svg {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n circle {\n stroke: ${({ borderIcon }) => borderIcon ? borderIcon : COLORS.GRAY_DARK};\n fill: ${({ backgroundIcon }) => backgroundIcon ? backgroundIcon : COLORS.GRAY_LIGHT};\n }\n path {\n stroke: ${({ colorArrow }) => colorArrow ? colorArrow : COLORS.GRAY_DARK};\n }\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-left: 15px;\n background-size: contain;\n }\n`;\n\nconst Border = styled.div`\n height: 1px;\n width: 100%;\n background: transparent;\n margin: 8px 0;\n`;\n\nconst AccordionBody = styled.div`\n width: 100%;\n max-height: ${props => props.open ? '100%' : '0'};\n ${FONTS.S};\n overflow: hidden;\n transition: max-height 0.2s ${props => props.open ? 'ease-in' : 'ease-out'};\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.XS};\n }\n`;\n\nconst DEFAULT_THEME = 'light';\n\n/**\n * @deprecated\n * use instead @r1-frontend/ui-react/src/components/accordions/Accordion\n */\nexport default class Accordion extends React.Component {\n static propTypes = {\n defaultOpen: PropTypes.bool,\n open: PropTypes.bool,\n withDividingBorder: PropTypes.bool,\n toggle: PropTypes.func,\n customTheme: PropTypes.object,\n };\n\n static defaultProps = {\n defaultOpen: false,\n withDividingBorder: true,\n theme: DEFAULT_THEME,\n customTheme: {},\n toggle: () => {},\n };\n\n constructor(props) {\n super(props);\n this.state = {\n open: props.defaultOpen,\n };\n }\n\n toggle = () => {\n this.props.toggle();\n this.setState(state => ({\n open: !state.open,\n }));\n }\n\n render() {\n const { children, title, open = this.state.open, onOpen = this.toggle, theme, customTheme, withDividingBorder, ...rest } = this.props;\n let colors = themes[theme] || themes[DEFAULT_THEME];\n if (customTheme) {\n colors = { ...colors, ...customTheme };\n }\n return (\n \n \n \n {title}\n \n \n \n \n \n \n \n \n {withDividingBorder && }\n {children}\n \n \n \n );\n }\n}\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/assets/js/constants';\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nexport const Container = styled.div<{ fill?: string, transitionDelay?: number }>`\n width: 100%;\n padding: 0 150px;\n box-sizing: border-box;\n background: ${ ({ fill }) => fill ? fill : COLORS.white };\n box-shadow: 0 4px 4px rgba(0, 0, 0, 0.03);\n height: 68px;\n justify-content: space-between;\n align-items: center;\n transition: all 0.4s ease-in-out;\n flex-wrap: nowrap;\n transition-delay: ${ ({ transitionDelay }) => transitionDelay ? `${transitionDelay}s` : '0s' };\n\n @media (max-width: 1400px) {\n height: 55px;\n padding: 0 115px;\n }\n @media (max-width: 1000px) {\n padding: 0 60px;\n }\n @media (max-width: 600px) {\n padding: 0 20px;\n }\n`;\n\nexport const ActionButton = styled(BaseButton)`\n @media (max-width: 1400px) {\n height: 33px;\n padding: 4px 15px;\n }\n`;\n\nexport const Title = styled.div<{ styles: { fontColor: string }, transitionDelay: number }>`\n ${FONTS.XXL};\n color: ${p => p.styles.fontColor };\n transition: color 0.4s ease-in-out;\n transition-delay: ${p => p.transitionDelay ? p.transitionDelay : 0 }s;\n\n @media (max-width: 1400px) {\n ${FONTS.L};\n }\n @media (max-width: 600px) {\n ${FONTS.XS};\n }\n`;\n\nexport const MenuContainer = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n`;\n\nexport const MenuItem = styled.div<{\n styles: { fontColor: string, activeItem?: string },\n activeElem: boolean,\n transitionDelay: number,\n}>`\n margin-right:45px;\n cursor: pointer;\n text-decoration: none;\n color: ${ ({ activeElem, styles }) => activeElem ? styles.activeItem : styles.fontColor };\n transition: color 0.4s ease-in-out;\n transition-delay: ${ ({ transitionDelay }) => transitionDelay ? `${transitionDelay}s` : '0s' };\n ${FONTS.S};\n @media (max-width: 1400px) {\n margin-right: 25px;\n }\n @media (max-width: 1100px) {\n display: none;\n }\n`;\n\nexport const MenuList = styled.div`\n display: flex;\n`;\n","import React, { Component } from 'react';\n\nimport { COLORS } from '../../assets/js/constants';\nimport { btnTypes } from '../../components/buttons/baseButton';\nimport * as ST from './styled';\n\nconst headerTheme = {\n white: {\n fill: COLORS.white,\n fontColor: COLORS.black,\n activeItem: COLORS.blue,\n },\n whiteTransparent: {\n fill: 'rgba(255, 255, 255, 0.9)',\n fontColor: COLORS.black,\n activeItem: COLORS.blue,\n },\n black: {\n fill: 'rgba(0, 0, 0, 0.9)',\n fontColor: COLORS.white,\n activeItem: '#56ccf2',\n },\n};\n\nclass Header extends Component {\n static defaultProps = {\n theme: 'white',\n activeSelector: 'link',\n }\n\n render() {\n const { transitionDelay, title, menuList, actionTitle, actionCallback, active, children, theme, activateMenu, activeSelector, ...props } = this.props;\n\n const styles = headerTheme[theme];\n\n let menu;\n if (menuList) {\n menu = menuList.map((item, index) => activateMenu(item) }\n styles={ styles }\n >{ item.title });\n }\n\n return (\n \n { title }\n \n { children }\n { menuList ? { menu } : null }\n { actionTitle\n ? \n : null }\n \n \n );\n }\n}\n\nexport default Header;\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzUiIGhlaWdodD0iNzUiIHZpZXdCb3g9IjAgMCA3NSA3NSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggb3BhY2l0eT0iMC41IiBkPSJNNzUgMzcuNUM3NSA1OC4yMTA3IDU4LjIxMDcgNzUgMzcuNSA3NUMxNi43ODkzIDc1IDAgNTguMjEwNyAwIDM3LjVDMCAxNi43ODkzIDE2Ljc4OTMgMCAzNy41IDBDNTguMjEwNyAwIDc1IDE2Ljc4OTMgNzUgMzcuNVpNNy41IDM3LjVDNy41IDU0LjA2ODUgMjAuOTMxNSA2Ny41IDM3LjUgNjcuNUM1NC4wNjg1IDY3LjUgNjcuNSA1NC4wNjg1IDY3LjUgMzcuNUM2Ny41IDIwLjkzMTUgNTQuMDY4NSA3LjUgMzcuNSA3LjVDMjAuOTMxNSA3LjUgNy41IDIwLjkzMTUgNy41IDM3LjVaIiBmaWxsPSIjNjU2NTY1Ii8+CjxwYXRoIG9wYWNpdHk9IjAuNSIgZD0iTTM3LjUgMy43NTAwMUMzNy41IDEuNjc4OTQgMzkuMTgzMSAtMC4wMTk0MTg1IDQxLjI0MzggMC4xODczMzhDNDYuOTAxNyAwLjc1NTAyNiA1Mi4zNzM5IDIuNjA0MDkgNTcuMjM2NyA1LjYxNDA3QzYzLjE2NTcgOS4yODM5OSA2Ny45NTQgMTQuNTM0MyA3MS4wNjM5IDIwLjc3NTNDNzQuMTczNyAyNy4wMTYzIDc1LjQ4MTkgMzQuMDAwOCA3NC44NDE1IDQwLjk0NDJDNzQuMjAxIDQ3Ljg4NzcgNzEuNjM3NCA1NC41MTUgNjcuNDM4NCA2MC4wODE5QzYzLjIzOTQgNjUuNjQ4OCA1Ny41NzE1IDY5LjkzNDYgNTEuMDcxMyA3Mi40NTgxQzQ0LjU3MSA3NC45ODE2IDM3LjQ5NTkgNzUuNjQyOCAzMC42NDA2IDc0LjM2NzNDMjMuNzg1NCA3My4wOTE5IDE3LjQyMTUgNjkuOTMwMyAxMi4yNjM4IDY1LjIzNzhDOC4wMzM2MyA2MS4zODkxIDQuNzUyMjUgNTYuNjM1NiAyLjY1MTkgNTEuMzUxNEMxLjg4NjkyIDQ5LjQyNjggMy4wNTc0OCA0Ny4zNDE4IDUuMDQ4ODQgNDYuNzcyOEM3LjA0MDIgNDYuMjAzOCA5LjA5NDM2IDQ3LjM2OTcgOS45MDcyMyA0OS4yNzQ2QzExLjU5MjggNTMuMjI0NSAxNC4xMTMgNTYuNzgwNiAxNy4zMTExIDU5LjY5MDJDMjEuNDM3MiA2My40NDQzIDI2LjUyODMgNjUuOTczNSAzMi4wMTI1IDY2Ljk5MzlDMzcuNDk2NyA2OC4wMTQyIDQzLjE1NjggNjcuNDg1MyA0OC4zNTcgNjUuNDY2NUM1My41NTcyIDYzLjQ0NzcgNTguMDkxNSA2MC4wMTkgNjEuNDUwNyA1NS41NjU1QzY0LjgwOTkgNTEuMTEyIDY2Ljg2MDggNDUuODEwMSA2Ny4zNzMyIDQwLjI1NTRDNjcuODg1NSAzNC43MDA3IDY2LjgzOSAyOS4xMTMxIDY0LjM1MTEgMjQuMTIwM0M2MS44NjMyIDE5LjEyNzUgNTguMDMyNiAxNC45MjcyIDUzLjI4OTQgMTEuOTkxM0M0OS42MTMgOS43MTU2OCA0NS41MDEzIDguMjY5NSA0MS4yNDAzIDcuNzM0MDdDMzkuMTg1NCA3LjQ3NTg1IDM3LjUgNS44MjEwNyAzNy41IDMuNzUwMDFaIiBmaWxsPSIjQzRDNEM0Ii8+Cjwvc3ZnPgo=\""],"names":["window","__NEXT_P","push","NavItem","styled","props","dotSize","fill","active","NavList","horizontal","Nav","render","this","navList","showTitle","titlePosition","activateMenu","activeSelector","renderNavItem","item","onClick","data-test","map","index","Fragment","ToolTip","stateful","parent","position","arrow","title","Component","defaultProps","TelevisionContainer","TelevisionPicture","TelevisionPictureSource","percent","getMedia","mod","css","TelevisionContentWrapper","TelevisionContent","TelevisionPoster","isPlaying","undefined","rotate","keyframes","TelevisionPreloader","light","fade","TelevisionLight","isNoDynamic","TelevisionLightContainer","Sections","sectionMain","poster","sectionFunctions","mp4","webm","sectionArchive","Television","state","isLoaded","isLoading","videoplayer","React","getVideoSrc","videoInfo","current","canPlayType","e","playVideo","breakpoint","currentTime","play","setState","stopVideo","pause","loadVideo","src","response","videoUrl","axios","responseType","URL","createObjectURL","data","isPlay","setTimeout","onTimeUpdate","componentDidMount","addEventListener","bind","componentWillUnmount","removeEventListener","componentDidUpdate","isDark","ref","muted","loop","as","draggable","alt","spinner","source","srcSet","type","Title","FONTS","Text","Content","getMediaMin","TelevisionStyled","Label","Section","isActive","from","to","SectionFunctions","activeSlide","prevSlide","link","COLORS","Composition","PhoneWrapper","PhoneContainer","TabletWrapper","TabletContainer","DesktopWrapper","DesktopContainer","Video","Poster","PosterSource","Mask","MaskFull","MaskSource","Preloader","SECTION_NAME","PATHS","SectionDevices","phone","tablet","desktop","isVideoExist","isIE","test","navigator","userAgent","Wrap","Accordion","AccordionInstance","price","p","ul","li","body","uri","method","withProvider","withAuth","JSON","stringify","queryParams","Background","BackgroundSource","Form","Plug","Button","BaseButton","Cost","CostLink","Price","Currency","Note","Support","Phone","SectionOrder","updateCatchUpState","isAuth","clientPersonal","activate","availiable","current_price","date_to","included_agr","unset_from","auth","agreementId","getCatchUpStatusState","catchup","info","Boolean","Number","sendAnalytics","params","dataLayerPush","event","EVENTS","category","label","togglePopup","popupNoAuthIsOpen","onPlug","resp","error","result","cancelable","preventDefault","action","doRequest","catchUpOn","agreement_id","isSuccess","text","onClickChat","code","message","onUnPlug","period","catchUpOff","split","replace","onCloseResult","onClickMovixPro","openChat","onClickRequest","city","hasResult","dateTo","ddmmyyyy","Date","unsetFrom","br","btnTypes","div","a","target","rel","href","NoSSR","PopupResult","isOpen","onClose","PopupNoAuth","close","open","connect","currentCity","dispatch","getStateCatchUp","stateStatus","payload","ECatchUpActionTypes","Slogan","Footnote","ButtonWrapper","SectionWelcome","setButtonText","connectedProduct","connectedProducts","PRODUCTS","SERVICE","onTelevisionClick","onButtonClick","SwipeContainer","Swipe","slideTrackRef","setting","callBack","elem","el","settings","minDist","maxDist","maxTime","minTime","lockTrack","dir","swipeType","dist","isMouse","isMouseDown","startX","distX","startY","distY","startTime","support","orientation","msMaxTouchPoints","eventsUnify","changedTouches","events","start","move","end","cancel","leave","touches","length","pageX","pageY","getTime","Math","abs","time","swipeEvent","CustomEvent","bubbles","detail","full","dispatchEvent","swipe","children","rest","SECTIONS","theme","id","Container","Header","HeaderLanding","withNewMenu","HeaderLink","transitionDelay","Dots","DotNavigation","FAQPopup","DefaultPopup","CatchupLayout","getDeltaY","wheelDelta","deltaY","onWheel","delta","next","prev","checkBreakPoint","getCurrentBreakpoint","onResize","resizeTimeout","clearTimeout","updateSectionsOffsets","dotClick","activePage","getIndexSection","change","toggleFAQPopup","popupFAQIsOpen","headerFaqClick","document","getElementById","scrollIntoView","block","behavior","onScroll","scrollTimeout","activeSection","scrollTop","pageYOffset","documentElement","i","sectionsOffsets","top","prevIndex","activeIndex","headerButtonClick","onButtonClickSectionWelcome","changeSlideSwipe","pointerType","onKeyUp","keyCode","isAnimationEnd","section","keys","Object","getOffsetElement","element_","rect","getBoundingClientRect","element","getDelay","prevSection","headerMenu","animationDelay","style","menuList","actionCallback","actionTitle","SectionArchive","orderSection","SectionFAQ","width","Catchup","companyName","Layout","name","description","withMenu","withFooter","withChat","getInitialProps","options","base","store","getState","getCurrentCity","selectCompanyName","addressToString","street","house","building","flat","join","productID","serviceID","clientProducts","services","product","find","productId","terminalResources","service","dayjs","customParseFormat","months","hhmm","date","hh","String","getHours","padStart","mm","getMinutes","dateWithoutYear","toLocaleString","day","month","getDate","getMonth","getFullYear","ddmmmmyyyy","isGenitive","withUTC","dd","getUTCDate","mmmm","monthString","yyyy","Error","dateArr","parseInt","ddmm","ddmmm","toString","mmm","plain","getNameMonth","num","formatDate","indexOf","reverse","parseRusDate","string","matched","exec","trim","UTC","toISODateString","format","dateNextDay","count","now","setDate","addDays","days","generateArrayOfYears","threshold","max","min","years","addMonths","dateValue","amount","dayOfMonth","endOfDesiredMonth","setTime","setMonth","setFullYear","dateToLocaleRu","toLocaleDateString","daysDifinition","getDateDefinition","diffDay","breakpoints","child","forEach","key","matchMedia","matches","bordered","background","borderWidth","radius","padding","mobilePadding","color","simple","border","colorArrow","backgroundIcon","borderIcon","colorArrowIsOpen","backgroundIconIsOpen","borderIconIsOpen","BorderRadius","storyColor","dark","Wrapper","wideBreakpoints","AccordionTitle","desktopFont","mobileFont","Icon","Border","AccordionBody","DEFAULT_THEME","toggle","defaultOpen","onOpen","customTheme","withDividingBorder","colors","themes","ThemeProvider","itemProp","svg","viewBox","xmlns","circle","cx","cy","r","strokeWidth","transform","path","d","strokeMiterlimit","strokeLinecap","strokeLinejoin","itemScope","itemType","propTypes","PropTypes","ActionButton","styles","fontColor","MenuContainer","MenuItem","activeElem","activeItem","MenuList","headerTheme","white","whiteTransparent","black","menu","ST","module","exports"],"sourceRoot":""}