{"version":3,"file":"static/chunks/4766-26763171fc1ca28e.js","mappings":"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","sources":["webpack://_N_E/./src/helpers/hooks/useAnaliticsSender.ts","webpack://_N_E/../../packages/shared/src/hooks/useOnceExecute.ts","webpack://_N_E/../../packages/ui-react/src/components/List/UnorderedList.tsx","webpack://_N_E/../../packages/ui-react/src/components/svg/call/CallCalling.tsx","webpack://_N_E/../../packages/ui-react/src/components/typography/TextWrapper/index.ts","webpack://_N_E/../../packages/shared/src/hooks/useCompletionAnimation.ts","webpack://_N_E/../../packages/ui-react/src/components/MovingBar/constants.ts","webpack://_N_E/../../packages/ui-react/src/components/MovingBar/helpers/buildBaseFigure.ts","webpack://_N_E/../../packages/ui-react/src/components/MovingBar/helpers/buildOverflowFigure.ts","webpack://_N_E/../../packages/ui-react/src/components/MovingBar/helpers/getAreasOfDots.ts","webpack://_N_E/../../packages/ui-react/src/components/MovingBar/helpers/getDotProps.ts","webpack://_N_E/../../packages/ui-react/src/components/MovingBar/MovingBar.tsx","webpack://_N_E/../../packages/ui-react/src/components/MovingBar/AnimateMovingBar.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/SpeedLine/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/SpeedLine/BaseSpeedLine.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/SpeedLine/SpeedLineWithDescription.styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/SpeedLine/SpeedLineWithDescription.tsx","webpack://_N_E/../../node_modules/react-swipeable/es/index.js"],"sourcesContent":["\nimport { useCallback } from 'react';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { isClientSide } from '@r1-frontend/shared/helpers/ssr';\n\nconst analiticsSender = (category: string, action: string, label?: string) => {\n isClientSide() && dataLayerPush({\n event: EVENTS.UAevent,\n category,\n action,\n label,\n });\n};\n\n/**\n * Возвращает функцию для отправки аналитики\n */\nexport const useAnalyticsSender = (category: string) => {\n return useCallback((action: string, label?: string): void => {\n analiticsSender(category, action, label);\n }, [category]);\n};\n\n/**\n * Возвращает функцию для отправки аналитики, без useCallback\n */\nexport const getAnalyticsSender = (category: string) => {\n return (action: string, label?: string): void => {\n analiticsSender(category, action, label);\n };\n};\n","import { useCallback, useState } from 'react';\n\n/**\n * Вызывает функцию callBack не более одного раза.\n * Использование: отправка события аналитики при начале редактирования.\n */\n// todo: Перенести в shared\nexport const useOnceExecute = (callBack: () => void): () => void => {\n const [wasCalled, setWasCalled] = useState(false);\n\n return useCallback(() => {\n !wasCalled && setWasCalled((wasCalled) => {\n if (!wasCalled) {\n callBack();\n }\n\n return true;\n });\n }, [wasCalled, callBack]);\n};\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nconst size = {\n mobile: 6,\n desktop: 8,\n padding: 8,\n};\n\nconst UnorderedList = styled.ul<{ $color?: COLORS }>`\n list-style: none;\n margin: 0;\n padding: 0;\n\n & li {\n position: relative;\n padding-left: ${size.mobile + size.padding}px;\n padding-bottom: 4px;\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n padding-left: ${size.desktop + size.padding}px;\n }\n }\n \n & li:last-child {\n padding-bottom: 0;\n }\n \n ${Paragraph4} {\n color: ${({ $color = COLORS.TextSecondary }) => $color};\n }\n\n & li::before {\n display: inline-block;\n content: '';\n\n width: ${size.mobile}px;\n height: ${size.mobile}px;\n background-color: ${COLORS.Brand_Blue};\n border-radius: 50%;\n margin-right: 8px;\n \n position: absolute;\n top: 0.5em;\n left: 0;\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n width: ${size.desktop}px;\n height: ${size.desktop}px;\n }\n }\n`;\n\nexport default UnorderedList;\n","import { createSvg } from '@r1-frontend/ui-react/components/svg/createSvg';\n\nconst CallCalling = (\n {\n strokeWidth = 1.5,\n },\n): JSX.Element => {\n return (\n <>\n \n \n \n \n \n \n );\n};\n\nexport default createSvg(\n CallCalling,\n 'call-calling',\n);\n","import styled, { css } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { H1, H2, H3, H4, H5 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph1, Paragraph2, Paragraph3, Paragraph4, Paragraph5 } from '@r1-frontend/ui-react/components/typography/paragraph';\n\nconst TextWrapper = styled.div<{ $lastIndent?: boolean }>`\n display: block;\n \n ${H1} {\n margin-bottom: 16px;\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n margin-bottom: 24px;\n }\n }\n \n ${H2} {\n margin-bottom: 8px;\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n margin-bottom: 16px;\n }\n }\n \n ${H3}, ${H4}, ${H5} {\n margin-bottom: 8px;\n }\n \n ${Paragraph1}, ${Paragraph2}, ${Paragraph3}, ${Paragraph4}, ${Paragraph5} {\n margin-bottom: 16px;\n\n ${({ $lastIndent = true }) => $lastIndent\n ? ''\n : css`\n &:last-child {\n margin-bottom: 0px;\n }\n `}\n }\n`;\n\nexport default TextWrapper;\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport type TUseAnimationFrameArgs = {\n callback: (delta: number) => void,\n onEndCallback: () => void,\n duration: number,\n timingFunction?: (time: number) => number,\n}\n\nexport type TUseAnimationFrameState = {\n state: 'waiting' | 'process' | 'start',\n delta: number,\n}\n\n/**\n * @link https://javascript.info/js-animation\n */\nconst useCompletionAnimation = (\n {\n callback,\n onEndCallback,\n timingFunction = (time: number) => time,\n duration,\n }: TUseAnimationFrameArgs,\n) => {\n const [state, setState] = useState({\n state: 'waiting',\n delta: 0,\n });\n const start = useCallback(() => {\n startTimeRef.current = performance.now();\n setState(prev => ({ ...prev, state: 'start' }));\n }, []);\n const rafRef = useRef(0);\n const startTimeRef = useRef(0);\n\n const loop: FrameRequestCallback = (time: number) => {\n let fraction = (time - startTimeRef.current) / duration;\n if (fraction > 1) {\n fraction = 1;\n }\n\n const delta = timingFunction(fraction);\n\n setState(prev => ({ ...prev, delta }));\n callback(delta);\n\n if (fraction < 1) {\n rafRef.current = requestAnimationFrame(loop);\n } else {\n startTimeRef.current = 0;\n setState(prev => ({ ...prev, state: 'waiting' }));\n }\n };\n\n useEffect(() => {\n if (state.state === 'process') {\n rafRef.current = requestAnimationFrame(loop);\n return () => cancelAnimationFrame(rafRef.current);\n }\n\n if (state.state === 'start') {\n setState(prev => ({ ...prev, state: 'process' }));\n }\n\n if (state.state === 'waiting') {\n onEndCallback();\n }\n }, [state]);\n\n return {\n start,\n ...state,\n };\n};\n\nexport default useCompletionAnimation;\n","\n// Curve step for the left (front) and the right (back) side\nexport const curves = {\n front: -2.7,\n back: 17,\n};\n\nexport const controlElementInnerRadius = 8;\nexport const controlElementOuterRadius = controlElementInnerRadius * 1.75;\nexport const halfViewBoxHeight = controlElementOuterRadius;\nexport const viewBoxHeight = controlElementOuterRadius * 2;\nexport const firstDotIndent = 6;\n\nexport const indentFromFirstDotForLeftPointX = 2.5;\nexport const indentFromMiddleForLeftPointY = 2.28;\nexport const indentFromTopForRightPointY = 2.3;\n\nexport const additionalShiftForClick = .05;\n","import { curves } from '../constants';\n\nimport { TPolygonDotsShapes } from './../types';\n\nconst addcl = (point: number): number => point + curves.back;\nconst remcl = (point: number): number => point + curves.front;\n\nconst buildBaseFigure = (d: TPolygonDotsShapes) => {\n const result = [];\n\n // start point\n result.push(`M${d.left.x} ${d.left.top}`);\n // line from the start point to the right top point\n result.push(`L${d.right.x} ${d.right.top}`);\n // curve from the top right point to the right bottom point\n result.push(`C${addcl(d.right.x)} ${d.right.top} ${addcl(d.right.x)} ${d.right.bottom} ${d.right.x} ${d.right.bottom}`);\n // line from the right bottom point to the left bottom point\n result.push(`L${d.left.x} ${d.left.bottom}`);\n // curve from the left bottom point to the start point\n result.push(`C${remcl(d.left.x)} ${d.left.bottom} ${remcl(d.left.x)} ${d.left.top} ${d.left.x} ${d.left.top}`);\n\n return result;\n};\n\nexport default buildBaseFigure;\n","import buildBaseFigure from '@r1-frontend/ui-react/components/MovingBar/helpers/buildBaseFigure';\n\nimport { PointCoordinates, TPolygonDotsShapes, TwoPointCoords } from '../types';\n\nconst calculateOverflowEndPoint = (start: PointCoordinates, end: PointCoordinates, distance: number): PointCoordinates => {\n return {\n x: start.x + (end.x - start.x) * distance,\n y: start.y + (end.y - start.y) * distance,\n };\n};\nconst buildOverflowFigure = (d: TPolygonDotsShapes, distance: number) => {\n const top: TwoPointCoords = { start: { x: d.left.x, y: d.left.top }, end: { x: d.right.x, y: d.right.top } };\n const bot: TwoPointCoords = { start: { x: d.left.x, y: d.left.bottom }, end: { x: d.right.x, y: d.right.bottom } };\n\n const t = calculateOverflowEndPoint(top.start, top.end, distance);\n const b = calculateOverflowEndPoint(bot.start, bot.end, distance);\n\n const result = buildBaseFigure(d);\n result[1] = `L${t.x} ${t.y}`;\n result[2] = `L${b.x} ${b.y}`;\n\n return result;\n};\n\nexport default buildOverflowFigure;\n","const getAreasOfDots = (startPos: number, endPos: number, height: number, dotsCount: number) => {\n const areas = dotsCount;\n const width = endPos - startPos;\n const area = width / (areas - 1);\n\n return [...Array(areas)].map((_, idx) => (\n {\n x: idx * area + startPos - area * .55,\n y: 0,\n width: area,\n height,\n }\n ));\n};\n\nexport default getAreasOfDots;\n","const getDotProps = (startPos: number, endPos: number, dotsCount: number, dotMaxRadius: number) => (currentDot: number): {\n position: number,\n radius: number,\n} => {\n // radius ratio, 8 max between 1 min. you could see design pattern ;-)\n const dotMinRadius = dotMaxRadius / 8;\n // difference between the max and min radius\n const radiusDiff = dotMaxRadius - dotMinRadius;\n const width = Math.abs(endPos - startPos);\n const part = width / (dotsCount - 1);\n const position = part * currentDot + startPos;\n\n return {\n position: position,\n radius: radiusDiff * (position / width) + dotMinRadius,\n };\n};\n\nexport default getDotProps;\n","import { SyntheticEvent, useMemo } from 'react';\nimport { SwipeableHandlers } from 'react-swipeable';\n\nimport buildOverflowFigure from '@r1-frontend/ui-react/components/MovingBar/helpers/buildOverflowFigure';\nimport getAreasOfDots from '@r1-frontend/ui-react/components/MovingBar/helpers/getAreasOfDots';\nimport { TPolygonDotsShapes } from '@r1-frontend/ui-react/components/MovingBar/types';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { hex2rgb } from '@r1-frontend/shared/helpers/hex2rgb';\n\nimport buildBaseFigure from './helpers/buildBaseFigure';\nimport getDotProps from './helpers/getDotProps';\nimport {\n controlElementInnerRadius,\n controlElementOuterRadius,\n curves,\n firstDotIndent, halfViewBoxHeight,\n indentFromFirstDotForLeftPointX, indentFromMiddleForLeftPointY,\n indentFromTopForRightPointY, viewBoxHeight,\n} from './constants';\n\ntype TMovingBarControlElement = {\n useControlElement?: never,\n distance?: never,\n} | {\n useControlElement: boolean,\n distance: number,\n}\n\nexport type TMovingBarProps = {\n onDotClick?: (dotIdx: number) => (e: SyntheticEvent) => void,\n barMainBg?: COLORS,\n barOverflowBg?: COLORS,\n controlElInnerBg?: COLORS,\n controlElOuterBg?: COLORS,\n viewBoxWidth?: number,\n dotsCount?: number,\n dotBg?: COLORS,\n\n onSwipeHandlers?: SwipeableHandlers,\n\n debugMode?: boolean,\n}\n\nconst MovingBar = (\n {\n onDotClick = () => () => true,\n barMainBg = COLORS.Outline_Light,\n barOverflowBg = COLORS.Locked,\n\n dotsCount = 0,\n dotBg = COLORS.Disabled,\n\n controlElInnerBg = COLORS.BgMain,\n controlElOuterBg = COLORS.Logo,\n viewBoxWidth = 250,\n distance = 0,\n\n onSwipeHandlers = {} as SwipeableHandlers,\n\n useControlElement = false,\n debugMode = false,\n }: TMovingBarProps & TMovingBarControlElement,\n): JSX.Element => {\n if (distance > 1 || distance < 0) {\n throw new Error(`@r1-frontend/ui-react. The MovingBar component Error. The \"distance\" argument must be in float range from 0 to 1. Incoming was ${distance}`);\n }\n\n if (dotsCount && dotsCount !== 0 && dotsCount < 2) {\n throw new Error(`@r1-frontend/ui-react. The MovingBar component Error. The \"dotsCount\" argument must be greater than 1 or be 0. Incoming was ${dotsCount}`);\n }\n\n /** polygonDots **/\n const pd: TPolygonDotsShapes = {\n left: {\n x: controlElementOuterRadius - firstDotIndent + indentFromFirstDotForLeftPointX, // отступ от центра первой точки до края начала скругления\n top: halfViewBoxHeight - indentFromMiddleForLeftPointY, // подобрано опытным путем\n bottom: halfViewBoxHeight + indentFromMiddleForLeftPointY, // подобрано опытным путем\n },\n right: {\n x: viewBoxWidth - curves.back / 1.2, // отступ от правой границы\n top: indentFromTopForRightPointY,\n bottom: viewBoxHeight - indentFromTopForRightPointY,\n },\n };\n\n const getDotPropsFn = useMemo(\n () => getDotProps(controlElementOuterRadius, pd.right.x, dotsCount, controlElementInnerRadius),\n [controlElementInnerRadius, controlElementOuterRadius, pd.right.x, dotsCount],\n );\n\n const areasOfDots = useMemo(\n () => getAreasOfDots(pd.left.x, pd.right.x, viewBoxHeight, dotsCount),\n [pd.left.x, pd.right.x, viewBoxHeight, dotsCount],\n );\n\n return (\n \n \n\n {dotsCount && (\n \n {[...Array(dotsCount)].map((_, idx) => {\n const { position, radius } = getDotPropsFn(idx);\n\n return \n \n \n ;\n })}\n \n )}\n\n {useControlElement && (\n \n \n\n {dotsCount && (\n \n {[...Array(dotsCount)].map((_, idx) => {\n const { position, radius } = getDotPropsFn(idx);\n\n return position <= viewBoxWidth * distance && (\n \n );\n })}\n \n )}\n \n )}\n\n {dotsCount && (\n \n {areasOfDots.map((area, idx) => {\n return ;\n })}\n \n )}\n\n {useControlElement && (\n <>\n {/* @ts-ignore */}\n \n \n \n \n \n )}\n \n );\n};\nexport default MovingBar;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useSwipeable } from 'react-swipeable';\n\nimport useCompletionAnimation from '@r1-frontend/shared/hooks/useCompletionAnimation';\n\nimport MovingBar, { TMovingBarProps } from './MovingBar';\n\nconst AnimateMovingBar = (\n {\n viewBoxWidth = 500,\n dotsCount,\n startDot = 0,\n onDotSelected = () => null,\n ...props\n }: Omit & { dotsCount: number, startDot?: number, onDotSelected?: (dot: number) => void },\n): JSX.Element => {\n if (dotsCount < 2) {\n throw new Error('The MovingBar component Error. The \"dotsCount\" argument must be greater than 1');\n }\n\n if (startDot > dotsCount) {\n throw new Error('The MovingBar component Error. The \"selectedDot\" argument value can not be greater than the \"dotsCount\" argument');\n }\n\n const wrapperRef = useRef(null);\n\n const [distance, setDistance] = useState({\n start: 0,\n current: 0,\n needToWalk: 0,\n stepWidth: 1 / (dotsCount - 1),\n });\n\n const animation = useCompletionAnimation({\n duration: 150,\n timingFunction: timeFraction => 1 - Math.sin(Math.acos(timeFraction)),\n callback: (delta) => {\n setDistance(prev => ({ ...prev, current: prev.start + (prev.needToWalk - prev.start) * delta }));\n },\n onEndCallback: () => {\n setDistance(prev => ({ ...prev, start: prev.current }));\n onDotSelected(Math.round((dotsCount - 1) * distance.current));\n },\n });\n const swipeHandlers = useSwipeable({\n onSwiped: () => {\n setDistance(prev => ({ ...prev, start: prev.current }));\n // this lifehack needed for delay call of animation before processing the setDistance\n setTimeout(animation.start);\n },\n onSwiping: ({ dir, deltaX }) => {\n if (dir !== 'Left' && dir !== 'Right') {\n return;\n }\n\n let dist = distance.start + (deltaX / viewBoxWidth);\n\n if (dist > 1) {\n dist = 1;\n }\n\n if (dist < 0) {\n dist = 0;\n }\n\n setDistance(prev => ({ ...prev, current: dist, needToWalk: Math.round(prev.current / prev.stepWidth) * prev.stepWidth }));\n },\n // delta: 10, // min distance(px) before a swipe starts. *See Notes*\n preventScrollOnSwipe: true, // prevents scroll during swipe (*See Details*)\n trackTouch: true, // track touch input\n trackMouse: true, // track mouse input\n rotationAngle: 0, // set a rotation angle\n swipeDuration: Infinity, // allowable duration of a swipe (ms). *See Notes*\n touchEventOptions: { passive: true }, // options for touch listeners (*See Details*)\n });\n\n useEffect(() => {\n if (startDot >= 0) {\n setDistance(prev => ({\n ...prev,\n start: startDot / (dotsCount - 1),\n current: startDot / (dotsCount - 1),\n stepWidth: 1 / (dotsCount - 1),\n }));\n }\n }, [wrapperRef, viewBoxWidth, startDot, dotsCount]);\n\n const handleDotClick = (dotNumber: number) => () => {\n setDistance(prev => ({\n ...prev,\n needToWalk: dotNumber / (dotsCount - 1),\n }));\n setTimeout(animation.start);\n };\n\n return (\n
\n \n
\n );\n};\n\nexport default AnimateMovingBar;\n","import styled, { css } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { H4, H6 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const Wrapper = styled.div`\n display: block;\n\n ${H4} {\n display: inline-block;\n margin-bottom: 4px;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${H4} {\n display: none;\n }\n }\n`;\n\nexport const HeaderWrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: baseline;\n\n & > p {\n display: inline-block;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n & > p {\n display: none;\n }\n }\n`;\n\nexport const Clearfix = styled.div`\n display: block;\n zoom: 1;\n\n &:before,\n &:after {\n content: \"\";\n display: table;\n }\n\n &:after {\n clear: both;\n }\n`;\n\nexport const SpeedItem = styled.div`\n display: block;\n width: 80px;\n flex-grow: 1;\n text-align: center;\n\n ${Paragraph4} {\n display: none;\n color: ${COLORS.TextInfo};\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${Paragraph4} {\n display: block;\n }\n\n ${H4} {\n margin-bottom: 0;\n }\n }\n`;\n\nexport const Block = styled.div`\n display: block;\n\n margin-top: 4px;\n\n & > ${SpeedItem}:nth-child(1) {\n float: left;\n text-align: left;\n }\n\n & > ${SpeedItem}:nth-child(2) {\n float: right;\n text-align: right;\n }\n\n ${H6} {\n color: ${COLORS.TextInfo};\n }\n\n ${H4} {\n display: none;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n margin-top: 12px;\n\n ${H6} {\n display: none;\n }\n\n ${H4} {\n display: block;\n }\n }\n`;\n\nexport const SpeedsWrapper = styled.div<{ $isOdd: boolean }>`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n gap: 0;\n align-items: center;\n justify-content: space-between;\n\n ${({ $isOdd }) => $isOdd\n ? css`\n ${SpeedItem}:nth-child(odd) {\n visibility: hidden;\n }\n `\n : ''\n }\n`;\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport clone from 'lodash/clone';\n\nimport { AnimateMovingBar } from '@r1-frontend/ui-react/components/MovingBar';\nimport { Pre } from '@r1-frontend/ui-react/components/typography/formatting';\nimport { H4, H6 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { TArrayTwoOrMore } from '@r1-frontend/shared/types/Array';\n\nimport * as S from './styled';\n\nexport type TBaseSpeedLineItem = {\n id: number | string,\n speed: number | string,\n price?: number | string,\n\n}\nexport type TBaseSpeedLineProps = {\n items: TArrayTwoOrMore,\n startDot?: number,\n onSelect: (indexOfSelectedElement: number) => void,\n width?: number,\n className?: string,\n\n experimentalModeForConstructor?: boolean,\n}\n\nconst BaseSpeedLine = (\n {\n className,\n items,\n onSelect,\n startDot = 0,\n width,\n\n experimentalModeForConstructor = false,\n }: TBaseSpeedLineProps,\n): JSX.Element => {\n const mainRef = useRef(null);\n const [calculatedWidth, setWidth] = useState(0);\n const [selectedDot, setSelectedDot] = useState(startDot);\n if (items.length < 2) {\n throw new Error('@r1-frontend/ui-react. The BaseSpeedLine component Error. The \"items\" argument must contain 2 or more elements');\n }\n\n const { firstItem, lastItem, leftOverItems, dotsCount, firstLastWidth } = useMemo<{\n firstItem: TBaseSpeedLineItem,\n lastItem: TBaseSpeedLineItem,\n leftOverItems: TBaseSpeedLineItem[],\n dotsCount: number,\n firstLastWidth: string,\n }>(() => {\n const clonedItems = clone(items);\n const dots = items.length;\n const percentageWidth = (100 / (dots - 1)) / 2;\n\n return {\n lastItem: clonedItems.splice(-1, 1)[0],\n firstItem: clonedItems.splice(0, 1)[0],\n leftOverItems: clonedItems,\n dotsCount: dots,\n firstLastWidth: dots === 2 ? 'auto' : `${percentageWidth + percentageWidth / 7.5}%`,\n };\n }, [items]);\n\n useEffect(() => {\n if (mainRef !== null && mainRef.current !== null) {\n setWidth(mainRef.current.offsetWidth);\n }\n }, [mainRef]);\n\n useEffect(() => {\n setSelectedDot(startDot);\n }, [startDot, items]);\n\n const handleSelectedDot = (dotNumber: number) => {\n setSelectedDot(dotNumber);\n onSelect(dotNumber);\n };\n\n return (\n \n \n

{items[selectedDot]?.speed} Мбит/с

\n
\n \n \n \n

{firstItem.speed}

\n
\n                        Мбит/с\n                    
\n
{firstItem.speed}
\n
\n \n

{lastItem.speed}

\n
\n                        Мбит/с\n                    
\n
{lastItem.speed}
\n
\n \n {leftOverItems.map(item => \n

{item.speed}

\n
\n                            Мбит/с\n                        
\n
{item.speed}
\n
)}\n {leftOverItems.length === 0 ? <>  : ''}\n
\n
\n \n
\n );\n};\n\nexport default BaseSpeedLine;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { UnorderedList } from '@r1-frontend/ui-react/components/List';\n\nexport const SpeedLineWithDescriptionWrapper = styled.div`\n display: flex;\n flex-direction: row;\n\n gap: 16px;\n\n & > * {\n width: 100%;\n }\n\n ${UnorderedList} {\n margin-top: 20px;\n }\n\n @media (min-width: ${wideBreakpoints.laptop}) {\n margin-top: 8px;\n }\n`;\n\nexport const HeaderWrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: baseline;\n margin-bottom: 8px;\n \n & > p {\n visibility: hidden;\n }\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n margin-bottom: 12px;\n & > p {\n visibility: visible;\n }\n }\n`;\n","import { ReactNode, useEffect, useState } from 'react';\n\nimport { UnorderedList } from '@r1-frontend/ui-react/components/List';\nimport { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { RoundedBlock } from '@r1-frontend/ui-react/experimental/blocks';\nimport BaseSpeedLine, { TBaseSpeedLineItem, TBaseSpeedLineProps } from '@r1-frontend/ui-react/organisms/SpeedLine/BaseSpeedLine';\nimport { TArrayTwoOrMore } from '@r1-frontend/shared/types/Array';\n\nimport * as ST from './SpeedLineWithDescription.styled';\n\nexport type TSpeedLineItemWithDescription = TBaseSpeedLineItem & {\n alias: string,\n title: string,\n descriptionList: string[],\n price: number,\n}\n\nexport type TSpeedLineWithDescription = TBaseSpeedLineProps & {\n items: TArrayTwoOrMore,\n title?: string | ReactNode,\n\n /**\n * This is a forced decision at the designer's request.\n * It is not good, but it has fast implementation.\n * If designers ask about other implementations, we should arrange a meeting. :facepalm:\n *\n * I'm sorry guys, really.\n */\n experimentalModeForConstructor?: boolean,\n}\n\nconst SpeedLineWithDescription = (\n {\n items,\n title = 'Выберите нужную скорость',\n startDot = 0,\n onSelect,\n\n experimentalModeForConstructor = false,\n\n ...props\n }: TSpeedLineWithDescription,\n): JSX.Element => {\n const [selectedItem, setSelectedItem] = useState(startDot);\n\n useEffect(() => {\n setSelectedItem(startDot);\n }, [items]);\n\n const handleOnSelect = (id: number) => {\n setSelectedItem(id);\n onSelect(id);\n };\n\n return (\n \n \n \n

{title}

\n
\n \n \n {items[selectedItem].descriptionList &&\n items[selectedItem].descriptionList.map(description => (\n \n ))\n }\n \n
\n
\n );\n};\n\nexport default SpeedLineWithDescription;\n","import * as React from 'react';\n\nconst LEFT = \"Left\";\nconst RIGHT = \"Right\";\nconst UP = \"Up\";\nconst DOWN = \"Down\";\n\n/* global document */\nconst defaultProps = {\n delta: 10,\n preventScrollOnSwipe: false,\n rotationAngle: 0,\n trackMouse: false,\n trackTouch: true,\n swipeDuration: Infinity,\n touchEventOptions: { passive: true },\n};\nconst initialState = {\n first: true,\n initial: [0, 0],\n start: 0,\n swiping: false,\n xy: [0, 0],\n};\nconst mouseMove = \"mousemove\";\nconst mouseUp = \"mouseup\";\nconst touchEnd = \"touchend\";\nconst touchMove = \"touchmove\";\nconst touchStart = \"touchstart\";\nfunction getDirection(absX, absY, deltaX, deltaY) {\n if (absX > absY) {\n if (deltaX > 0) {\n return RIGHT;\n }\n return LEFT;\n }\n else if (deltaY > 0) {\n return DOWN;\n }\n return UP;\n}\nfunction rotateXYByAngle(pos, angle) {\n if (angle === 0)\n return pos;\n const angleInRadians = (Math.PI / 180) * angle;\n const x = pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n const y = pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n return [x, y];\n}\nfunction getHandlers(set, handlerProps) {\n const onStart = (event) => {\n const isTouch = \"touches\" in event;\n // if more than a single touch don't track, for now...\n if (isTouch && event.touches.length > 1)\n return;\n set((state, props) => {\n // setup mouse listeners on document to track swipe since swipe can leave container\n if (props.trackMouse && !isTouch) {\n document.addEventListener(mouseMove, onMove);\n document.addEventListener(mouseUp, onUp);\n }\n const { clientX, clientY } = isTouch ? event.touches[0] : event;\n const xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n props.onTouchStartOrOnMouseDown &&\n props.onTouchStartOrOnMouseDown({ event });\n return Object.assign(Object.assign(Object.assign({}, state), initialState), { initial: xy.slice(), xy, start: event.timeStamp || 0 });\n });\n };\n const onMove = (event) => {\n set((state, props) => {\n const isTouch = \"touches\" in event;\n // Discount a swipe if additional touches are present after\n // a swipe has started.\n if (isTouch && event.touches.length > 1) {\n return state;\n }\n // if swipe has exceeded duration stop tracking\n if (event.timeStamp - state.start > props.swipeDuration) {\n return state.swiping ? Object.assign(Object.assign({}, state), { swiping: false }) : state;\n }\n const { clientX, clientY } = isTouch ? event.touches[0] : event;\n const [x, y] = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n const deltaX = x - state.xy[0];\n const deltaY = y - state.xy[1];\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\n const time = (event.timeStamp || 0) - state.start;\n const velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1);\n const vxvy = [deltaX / (time || 1), deltaY / (time || 1)];\n const dir = getDirection(absX, absY, deltaX, deltaY);\n // if swipe is under delta and we have not started to track a swipe: skip update\n const delta = typeof props.delta === \"number\"\n ? props.delta\n : props.delta[dir.toLowerCase()] ||\n defaultProps.delta;\n if (absX < delta && absY < delta && !state.swiping)\n return state;\n const eventData = {\n absX,\n absY,\n deltaX,\n deltaY,\n dir,\n event,\n first: state.first,\n initial: state.initial,\n velocity,\n vxvy,\n };\n // call onSwipeStart if present and is first swipe event\n eventData.first && props.onSwipeStart && props.onSwipeStart(eventData);\n // call onSwiping if present\n props.onSwiping && props.onSwiping(eventData);\n // track if a swipe is cancelable (handler for swiping or swiped(dir) exists)\n // so we can call preventDefault if needed\n let cancelablePageSwipe = false;\n if (props.onSwiping ||\n props.onSwiped ||\n props[`onSwiped${dir}`]) {\n cancelablePageSwipe = true;\n }\n if (cancelablePageSwipe &&\n props.preventScrollOnSwipe &&\n props.trackTouch &&\n event.cancelable) {\n event.preventDefault();\n }\n return Object.assign(Object.assign({}, state), { \n // first is now always false\n first: false, eventData, swiping: true });\n });\n };\n const onEnd = (event) => {\n set((state, props) => {\n let eventData;\n if (state.swiping && state.eventData) {\n // if swipe is less than duration fire swiped callbacks\n if (event.timeStamp - state.start < props.swipeDuration) {\n eventData = Object.assign(Object.assign({}, state.eventData), { event });\n props.onSwiped && props.onSwiped(eventData);\n const onSwipedDir = props[`onSwiped${eventData.dir}`];\n onSwipedDir && onSwipedDir(eventData);\n }\n }\n else {\n props.onTap && props.onTap({ event });\n }\n props.onTouchEndOrOnMouseUp && props.onTouchEndOrOnMouseUp({ event });\n return Object.assign(Object.assign(Object.assign({}, state), initialState), { eventData });\n });\n };\n const cleanUpMouse = () => {\n // safe to just call removeEventListener\n document.removeEventListener(mouseMove, onMove);\n document.removeEventListener(mouseUp, onUp);\n };\n const onUp = (e) => {\n cleanUpMouse();\n onEnd(e);\n };\n /**\n * The value of passive on touchMove depends on `preventScrollOnSwipe`:\n * - true => { passive: false }\n * - false => { passive: true } // Default\n *\n * NOTE: When preventScrollOnSwipe is true, we attempt to call preventDefault to prevent scroll.\n *\n * props.touchEventOptions can also be set for all touch event listeners,\n * but for `touchmove` specifically when `preventScrollOnSwipe` it will\n * supersede and force passive to false.\n *\n */\n const attachTouch = (el, props) => {\n let cleanup = () => { };\n if (el && el.addEventListener) {\n const baseOptions = Object.assign(Object.assign({}, defaultProps.touchEventOptions), props.touchEventOptions);\n // attach touch event listeners and handlers\n const tls = [\n [touchStart, onStart, baseOptions],\n // preventScrollOnSwipe option supersedes touchEventOptions.passive\n [\n touchMove,\n onMove,\n Object.assign(Object.assign({}, baseOptions), (props.preventScrollOnSwipe ? { passive: false } : {})),\n ],\n [touchEnd, onEnd, baseOptions],\n ];\n tls.forEach(([e, h, o]) => el.addEventListener(e, h, o));\n // return properly scoped cleanup method for removing listeners, options not required\n cleanup = () => tls.forEach(([e, h]) => el.removeEventListener(e, h));\n }\n return cleanup;\n };\n const onRef = (el) => {\n // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n // ignore null here\n if (el === null)\n return;\n set((state, props) => {\n // if the same DOM el as previous just return state\n if (state.el === el)\n return state;\n const addState = {};\n // if new DOM el clean up old DOM and reset cleanUpTouch\n if (state.el && state.el !== el && state.cleanUpTouch) {\n state.cleanUpTouch();\n addState.cleanUpTouch = void 0;\n }\n // only attach if we want to track touch\n if (props.trackTouch && el) {\n addState.cleanUpTouch = attachTouch(el, props);\n }\n // store event attached DOM el for comparison, clean up, and re-attachment\n return Object.assign(Object.assign(Object.assign({}, state), { el }), addState);\n });\n };\n // set ref callback to attach touch event listeners\n const output = {\n ref: onRef,\n };\n // if track mouse attach mouse down listener\n if (handlerProps.trackMouse) {\n output.onMouseDown = onStart;\n }\n return [output, attachTouch];\n}\nfunction updateTransientState(state, props, previousProps, attachTouch) {\n // if trackTouch is off or there is no el, then remove handlers if necessary and exit\n if (!props.trackTouch || !state.el) {\n if (state.cleanUpTouch) {\n state.cleanUpTouch();\n }\n return Object.assign(Object.assign({}, state), { cleanUpTouch: undefined });\n }\n // trackTouch is on, so if there are no handlers attached, attach them and exit\n if (!state.cleanUpTouch) {\n return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n }\n // trackTouch is on and handlers are already attached, so if preventScrollOnSwipe changes value,\n // remove and reattach handlers (this is required to update the passive option when attaching\n // the handlers)\n if (props.preventScrollOnSwipe !== previousProps.preventScrollOnSwipe ||\n props.touchEventOptions.passive !== previousProps.touchEventOptions.passive) {\n state.cleanUpTouch();\n return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n }\n return state;\n}\nfunction useSwipeable(options) {\n const { trackMouse } = options;\n const transientState = React.useRef(Object.assign({}, initialState));\n const transientProps = React.useRef(Object.assign({}, defaultProps));\n // track previous rendered props\n const previousProps = React.useRef(Object.assign({}, transientProps.current));\n previousProps.current = Object.assign({}, transientProps.current);\n // update current render props & defaults\n transientProps.current = Object.assign(Object.assign({}, defaultProps), options);\n // Force defaults for config properties\n let defaultKey;\n for (defaultKey in defaultProps) {\n if (transientProps.current[defaultKey] === void 0) {\n transientProps.current[defaultKey] = defaultProps[defaultKey];\n }\n }\n const [handlers, attachTouch] = React.useMemo(() => getHandlers((stateSetter) => (transientState.current = stateSetter(transientState.current, transientProps.current)), { trackMouse }), [trackMouse]);\n transientState.current = updateTransientState(transientState.current, transientProps.current, previousProps.current, attachTouch);\n return handlers;\n}\n\nexport { DOWN, LEFT, RIGHT, UP, useSwipeable };\n//# sourceMappingURL=index.js.map\n"],"names":["analiticsSender","category","action","label","isClientSide","dataLayerPush","event","EVENTS","useAnalyticsSender","useCallback","getAnalyticsSender","useOnceExecute","callBack","useState","wasCalled","setWasCalled","size","UnorderedList","styled","wideBreakpoints","Paragraph4","$color","COLORS","createSvg","strokeWidth","g","id","path","d","strokeMiterlimit","strokeLinecap","strokeLinejoin","TextWrapper","H1","H2","H3","H4","H5","Paragraph1","Paragraph2","Paragraph3","Paragraph5","$lastIndent","css","callback","onEndCallback","timingFunction","time","duration","state","delta","setState","start","startTimeRef","current","performance","now","prev","rafRef","useRef","loop","fraction","requestAnimationFrame","useEffect","cancelAnimationFrame","curves","controlElementOuterRadius","controlElementInnerRadius","halfViewBoxHeight","addcl","point","remcl","result","push","left","x","top","right","bottom","calculateOverflowEndPoint","end","distance","y","bot","t","b","buildBaseFigure","startPos","endPos","height","dotsCount","areas","area","Array","map","_","idx","width","dotMaxRadius","currentDot","dotMinRadius","radiusDiff","Math","abs","position","radius","onDotClick","barMainBg","barOverflowBg","dotBg","controlElInnerBg","controlElOuterBg","viewBoxWidth","onSwipeHandlers","useControlElement","debugMode","Error","pd","viewBoxHeight","getDotPropsFn","useMemo","getDotProps","areasOfDots","getAreasOfDots","svg","viewBox","style","cursor","join","stroke","fill","circle","data-test","cx","cy","r","buildOverflowFigure","hex2rgb","rect","onClick","startDot","onDotSelected","props","wrapperRef","needToWalk","stepWidth","setDistance","animation","useCompletionAnimation","timeFraction","sin","acos","round","swipeHandlers","useSwipeable","onSwiped","setTimeout","onSwiping","dir","deltaX","dist","preventScrollOnSwipe","trackTouch","trackMouse","rotationAngle","swipeDuration","Infinity","touchEventOptions","passive","div","ref","MovingBar","dotNumber","Wrapper","HeaderWrapper","Clearfix","SpeedItem","Block","H6","SpeedsWrapper","$isOdd","items","className","onSelect","experimentalModeForConstructor","mainRef","calculatedWidth","setWidth","selectedDot","setSelectedDot","length","clonedItems","clone","dots","percentageWidth","lastItem","splice","firstItem","leftOverItems","firstLastWidth","offsetWidth","S","as","$withIndent","speed","AnimateMovingBar","Pre","$smaller","Boolean","item","SpeedLineWithDescriptionWrapper","title","selectedItem","setSelectedItem","ST","RoundedBlock","BaseSpeedLine","descriptionList","description","dangerouslySetInnerHTML","__html","defaultProps","initialState","first","initial","swiping","xy","mouseMove","mouseUp","rotateXYByAngle","pos","angle","angleInRadians","PI","cos","getHandlers","set","handlerProps","onStart","isTouch","touches","document","addEventListener","onMove","onUp","clientX","clientY","onTouchStartOrOnMouseDown","Object","assign","slice","timeStamp","deltaY","absX","absY","velocity","sqrt","vxvy","getDirection","toLowerCase","eventData","onSwipeStart","cancelablePageSwipe","cancelable","preventDefault","onEnd","onSwipedDir","onTap","onTouchEndOrOnMouseUp","e","removeEventListener","attachTouch","el","cleanup","baseOptions","tls","forEach","h","o","output","addState","cleanUpTouch","onMouseDown","options","transientState","transientProps","previousProps","defaultKey","handlers","stateSetter","undefined","updateTransientState"],"sourceRoot":""}