{"version":3,"file":"static/chunks/8402-e1b0d793c55863e3.js","mappings":"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","sources":["webpack://_N_E/./src/components/DoubleColumnLayout/index.tsx","webpack://_N_E/./src/helpers/hooks/useValueByBreakpoint.ts","webpack://_N_E/../../packages/shared/src/hooks/usePartialList.ts","webpack://_N_E/../../packages/ui-react/src/components/BottomStickyBlock/styled.ts","webpack://_N_E/../../packages/ui-react/src/components/BottomStickyBlock/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/costs/PurchaseOptions/Installment.tsx","webpack://_N_E/../../packages/ui-react/src/components/costs/PurchaseOptions/Purchase.tsx","webpack://_N_E/../../packages/ui-react/src/components/costs/PurchaseOptions/index.tsx","webpack://_N_E/../../packages/ui-react/src/components/select/creatableSelect/index.js","webpack://_N_E/../../packages/ui-react/src/experimental/containers/BlockContainer.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/OrderSummary/Item/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/OrderSummary/OrderLines/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/OrderSummary/index.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/OrderSummary/styled.tsx","webpack://_N_E/../../packages/ui-react/src/organisms/ScrollbarWithIndent/index.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport WideContainer, { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\n\n/**\n * Двухколоночный шаблон для страницы\n */\nexport const DoubleColumnLayout = styled(WideContainer)`\n display: grid;\n flex-wrap: nowrap;\n grid-template-columns: 1fr 480px;\n column-gap: 32px;\n margin-bottom: 30px;\n max-width: 100%;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n grid-template-columns: 1fr 384px;\n }\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n grid-template-columns: 100%;\n }\n`;\n","/* eslint-disable complexity */\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\ninterface IProps {\n desktop: T,\n sDesktop?: T,\n laptop?: T,\n tablet?: T,\n mobile?: T,\n}\n\n/**\n * Проверяет ширину экрана и возвращает значение соответствующее текущему брейкпоинту\n * обязательно только значение для desktop, остальные можно опускать\n * пример: если мобильная ширина - вернет значение переданное для мобилки\n */\nexport const useValueByBreakpoint = ({\n desktop,\n sDesktop,\n laptop,\n tablet,\n mobile,\n}: IProps): T => {\n const isSDesktop = useMatchMediaByWidth(sDesktop ? wideBreakpoints.sDesktop : '');\n const isLaptop = useMatchMediaByWidth(laptop ? wideBreakpoints.laptop : '');\n const isTablet = useMatchMediaByWidth(tablet ? wideBreakpoints.tablet : '');\n const isMobile = useMatchMediaByWidth(mobile ? wideBreakpoints.mobile : '');\n\n switch (true) {\n case (isMobile && !!mobile):\n return mobile || desktop;\n case (isTablet && !!tablet):\n return tablet || desktop;\n case (isLaptop && !!laptop):\n return laptop || desktop;\n case (isSDesktop && !!sDesktop):\n return sDesktop || desktop;\n default:\n return desktop;\n }\n};\n","import { useMemo, useState } from 'react';\n\n/**\n * Возвращает часть списка / весь список.\n * Используется для скрытия части элементов в интерфейсе (скрыть/показать)\n * @param items - переданный список\n * @param partialCount - размер урезанного списка\n * @param startState - начальное состояние true - урезать, false - возвращать весь список\n * @returns [ resultItems - итоговый список\n isPartial - метка, урезанный или нет\n setIsPartial - функция для управления ]\n */\nexport function usePartialList(items: T[], partialCount = 3, startState = true): [T[], boolean, (value: boolean) => void] {\n const [isPartial, setIsPartial] = useState(startState);\n\n const toggleState = (value: boolean) => {\n setIsPartial(value);\n };\n\n return useMemo(() => {\n const resultItems = isPartial ? items.slice(0, partialCount) : items;\n return ([\n resultItems,\n isPartial,\n toggleState,\n ]);\n }, [isPartial, items, partialCount]);\n}\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const PopupCloseButton = styled.button`\n position: absolute;\n right: 14px;\n top: 14px;\n padding: 0;\n border: 0;\n background: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n\n &:before {\n display: block;\n content: \"\";\n width: 12px;\n height: 12px;\n background: url(\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZ\n pZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Z\n nIj4KPHBhdGggZD0iTTEzIDFDNy41MzI2NiA2LjQ2NzM0IDEgMTMgMSAxM00xIDFMMTMgMTMiIHN0cm9rZT0iIzV\n DNUU2MiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9\n pbj0icm91bmQiLz4KPC9zdmc+Cg==\") no-repeat;\n background-size: contain;\n }\n`;\n\nexport const Wrapper = styled.div<{ isShown: boolean }>`\n display: none;\n\n @media (max-width: ${wideBreakpoints.laptop}) {\n display: block;\n }\n\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n\n z-index: ${props => props.isShown ? 201 : 199} ;\n\n ${PopupCloseButton} {\n height: 40px;\n width: 40px;\n background-color: ${COLORS.ButtonSecondary};\n border-radius: 40px;\n top: 32px;\n right: 16px;\n cursor: pointer;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n height: 28px;\n width: 28px;\n }\n }\n`;\n\nexport const Overlay = styled.div`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n overflow: hidden;\n background-color: rgba(0, 0, 0, 0.5);\n cursor: pointer;\n`;\n\nconst Body = styled.div`\n position: absolute;\n bottom: 0;\n width: 100%;\n background-color: ${COLORS.BgSurface};\n border-radius: 32px 32px 0 0;\n align-items: center;\n align-content: center;\n justify-content: space-between;\n z-index: 2;\n`;\n\nexport const Strip = styled.div`\n position: absolute;\n left: calc(50% - 20px);\n top: 10px;\n cursor: pointer;\n\n width: 40px;\n height: 4px;\n background: ${COLORS.Outline_Light};\n border-radius: 12px;\n`;\n\nexport const ActionButton = styled.div`\n cursor: pointer;\n\n padding: 0;\n height: 28px;\n width: 28px;\n border-radius: 50%;\n background-color: ${COLORS.ButtonSecondary};\n \n position: absolute;\n top: 16px;\n right: 16px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const FullBody = styled(Body)`\n padding: 18px 16px 16px 16px;\n \n box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1);\n border: 1px solid ${COLORS.Outline_Light};\n`;\n\nexport const ShortBody = styled(Body)`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n flex-wrap: nowrap;\n\n // 52px for right indent is summarize of open button width (28px) / 8px gap from button / 16px default indent from right side\n padding: 16px 52px 16px 16px;\n\n box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1);\n border: 1px solid ${COLORS.Outline_Light};\n`;\n","import React, { ReactNode, ReactPortal, RefObject, SyntheticEvent, useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { SingleArrowUp } from '@r1-frontend/ui-react/components/svg/arrows';\nimport { Close } from '@r1-frontend/ui-react/components/svg/main';\nimport { createRootElement } from '@r1-frontend/shared/helpers/dom';\n\nimport * as S from './styled';\n\nexport type BottomStickyBlockProps = {\n children?: ReactNode,\n InnerComponent: () => JSX.Element,\n OuterComponent: () => JSX.Element,\n parent?: RefObject,\n onOpen?: () => void,\n onClose?: () => void,\n}\n\nconst BottomStickyBlock = (\n {\n InnerComponent,\n OuterComponent,\n parent,\n onOpen = () => true,\n onClose = () => true,\n }: BottomStickyBlockProps,\n): ReactPortal | null => {\n const [isShown, setIsShown] = useState(false);\n const [popupRoot, setPopupRoot] = useState(null);\n\n useEffect(() => {\n const root = parent ? parent.current : createRootElement('bottom-sticky');\n setPopupRoot(root);\n\n return () => {\n popupRoot && !parent && popupRoot.remove();\n };\n }, []);\n\n const onCloseHandler = (e: SyntheticEvent) => {\n e.stopPropagation();\n setIsShown(false);\n onClose();\n };\n\n const onOpenHandler = (e: SyntheticEvent) => {\n e.stopPropagation();\n setIsShown(true);\n onOpen();\n };\n\n return popupRoot\n ? createPortal(\n \n {isShown\n ? <>\n \n \n \n \n \n \n \n : \n \n \n \n \n }\n ,\n popupRoot,\n )\n : null;\n};\n\nBottomStickyBlock.displayName = 'BottomStickyBlock';\n\nexport default BottomStickyBlock;\n","import styled from 'styled-components';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport BaseRadio from '@r1-frontend/ui-react/components/controls/baseRadio';\nimport { DescribedCost } from '@r1-frontend/ui-react/components/costs';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { IndentContainer, ListContainer, withRadius } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport { TInstallmentOptionProps } from './types';\n\nconst Installment = ({\n options,\n onSelect,\n\n ...props\n}: TInstallmentOptionProps): JSX.Element => {\n return (\n \n \n {Object.entries(options).map(([id, option]) => (\n \n \n {option.cost}\n \n \n ))}\n \n \n );\n};\n\nexport default styled(withRadius(Installment, { $radius: 16 }))`\n background-color: ${COLORS.BgMain};\n cursor: pointer;\n\n label {\n width: 100%;\n }\n\n input[type='radio'] {\n cursor: pointer;\n align-self: center;\n }\n\n & ${ListContainer} + ${ListContainer} ${DescribedCost} {\n cursor: pointer;\n width: 100%;\n flex-direction: row-reverse;\n align-items: center;\n justify-content: space-between;\n flex-wrap: nowrap;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n & ${ListContainer}:first-child ${DescribedCost} {\n cursor: pointer;\n width: 100%;\n flex-direction: row-reverse;\n align-items: center;\n justify-content: space-between;\n }\n }\n\n & ${ListContainer} + ${ListContainer} {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid ${COLORS.BgSecondary};\n }\n\n & ${Button}.selected * {\n color: ${COLORS.TextWhite} !important;\n }\n`;\n","import styled from 'styled-components';\n\nimport BaseRadio from '@r1-frontend/ui-react/components/controls/baseRadio';\nimport { DescribedCost } from '@r1-frontend/ui-react/components/costs';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { IndentContainer, withRadius } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport { TPurchaseOptionProps } from './types';\n\nconst Purchase = ({\n cost,\n period,\n onSelect,\n\n ...props\n}: TPurchaseOptionProps): JSX.Element => {\n return (\n \n \n {cost}\n \n \n );\n};\n\nexport default styled(withRadius(Purchase, { $radius: 16 }))`\n background-color: ${COLORS.BgMain};\n cursor: pointer;\n\n label {\n width: 100%;\n cursor: pointer;\n }\n\n input[type='radio'] {\n cursor: pointer;\n align-self: center;\n }\n\n ${DescribedCost} {\n cursor: pointer;\n }\n\n @media (min-width: ${wideBreakpoints.mobile}) {\n ${DescribedCost} {\n width: 100%;\n flex-direction: row-reverse;\n align-items: center;\n justify-content: space-between;\n }\n }\n`;\n","import React, { useState } from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport styled from 'styled-components';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport { TPeriod, TPurchaseOptionsProps } from '@r1-frontend/ui-react/components/costs/PurchaseOptions/types';\nimport { H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { IndentContainer, ListContainer, withRadius } from '@r1-frontend/ui-react/experimental/containers';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport Installment from './Installment';\nimport Purchase from './Purchase';\n\nconst PO = ({\n options,\n onSelect,\n\n ...props\n}: TPurchaseOptionsProps): JSX.Element => {\n const {\n 1: purchaseOption,\n ...elseOptions\n } = options;\n\n const [selectedOption, setOption] = useState<{ cost: number, period: TPeriod } | undefined>(undefined);\n\n const handleSelect = (cost: number, period: TPeriod) => () => {\n setOption({ cost, period });\n };\n\n const handleConfirm = () => {\n if (selectedOption) {\n onSelect(selectedOption.cost, selectedOption.period);\n }\n };\n\n return (\n \n

Варианты покупки

\n \n {purchaseOption && }\n {!isEmpty(elseOptions) && (\n \n )}\n \n \n
\n );\n};\n\nexport default styled(withRadius(PO, { $radius: 24 }))`\n background-color: ${COLORS.BgSurface};\n width: 100%;\n\n & ${Button} {\n width: 100%;\n }\n`;\n","import MaskedInput from '@r1-frontend/ui-react/components/input';\nimport clone from 'lodash/clone';\nimport React, { Fragment, useCallback, useMemo } from 'react';\nimport Creatable from 'react-select/creatable';\n\nimport InputSimple, { phoneDecorator } from '../../inputSimple';\nimport { replaceValueForPhone } from '../../inputSimple/decorators/helpers/phoneDecorator';\nimport {\n ClearIndicator,\n Control,\n customStyles,\n DropdownIndicator,\n Menu,\n MenuList,\n Option,\n} from '../dropdown';\nimport Select from '../select';\n\nexport function CreatablePhoneSelectV2({\n options,\n placeholder = 'Выберите телефон',\n createOptionPosition = 'first',\n label = '7',\n ...rest\n}) {\n const innerOptions = useMemo(() => {\n return options.map((option) => {\n return {\n ...option,\n label: label + option.label.toString().substring(1),\n };\n });\n }, [options]);\n\n return ;\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction formatCreateLabel(value) {\n return 'Новый телефон ' + value;\n}\n\n/**\n * @param {string} inputValue\n * @param {{action:string}} meta\n * @returns {string|*}\n */\nfunction handleInputChange(inputValue, meta) {\n if (meta.action === 'input-change') {\n return replaceValueForPhone(inputValue);\n }\n return inputValue;\n}\n\nconst InputPhone = phoneDecorator(InputSimple);\n\nexport function CreatablePhoneSelect({\n options,\n onChange,\n value,\n inputValue,\n onInputChange,\n placeholder = 'Выберите телефон',\n inputPlaceHolder = 'Номер телефона',\n createLabel = 'Указать телефон',\n createValue = -1,\n errorMessage = 'Введите телефон в формате +7 (999) 999-99-99',\n onMenuOpen = () => ({}),\n onMenuClose = () => ({}),\n masked,\n hasError,\n}) {\n const clonedOptions = useMemo(() => {\n const clonedOptionsInner = clone(options);\n\n clonedOptionsInner.push({\n label: createLabel,\n value: createValue,\n });\n\n return clonedOptionsInner;\n }, [options, createLabel, createValue]);\n\n const isShowInput = value && value.value === createValue;\n\n const onMaskedInputChange = useCallback(\n (value) =>\n onInputChange({\n value,\n label: value,\n }),\n [onInputChange],\n );\n\n const inputProps = {\n value: inputValue,\n placeholder: inputPlaceHolder,\n onChange: masked ? onMaskedInputChange : onInputChange,\n errorMessage: errorMessage,\n className: 'ym-disable-keys',\n hasError: hasError,\n };\n\n return \n \n {\n isShowInput && (masked\n ? \n : \n )\n }\n ;\n}\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport { getPaddingByIncomingIndent, TContainerProps } from './IndentContainer';\nimport { getRadiusByIncomingProps, TRounderProps } from './RounderContainer';\n\n/**\n * Обертка добавляет компоненту, цвет бэкграунда, скругление и паддинги\n * indent: $united или $mobile & $desktop.\n * rounder: $radius или $desktop & $mobile.\n * bgColor: цвет подложки (default COLORS.BgSurface).\n */\nconst BlockContainer = styled.div<{\n indent: TContainerProps,\n rounder: TRounderProps,\n bgColor?: string,\n}>`\n ${p => getPaddingByIncomingIndent(p.indent)};\n ${p => getRadiusByIncomingProps(p.rounder)};\n background-color: ${p => p.bgColor || COLORS.BgSurface};\n position: relative;\n width: 100%;\n`;\n\nexport default BlockContainer;\n","import React from 'react';\n\nimport { Paragraph4 } from '@r1-frontend/ui-react/components/typography/paragraph';\nimport { Cost } from '@r1-frontend/ui-react/experimental/purchase/cost';\nimport { TOrderSummaryItem } from '@r1-frontend/ui-react/organisms/OrderSummary/types';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport * as S from '../styled';\n\nconst Item = (\n {\n title,\n description,\n cost = '',\n previousCost,\n isMonthly,\n Component = Paragraph4,\n color = COLORS.TextInfo,\n }: TOrderSummaryItem,\n): JSX.Element => {\n return \n \n {title}\n \n {cost}\n \n \n {description ? {description} : null}\n ;\n};\n\nexport default Item;\n","import React from 'react';\n\nimport Item from '@r1-frontend/ui-react/organisms/OrderSummary/Item';\nimport { TOrderSummaryComponent, TOrderSummaryItem } from '@r1-frontend/ui-react/organisms/OrderSummary/types';\n\nimport * as S from '../styled';\n\ninterface IItems {\n items: (TOrderSummaryItem | TOrderSummaryComponent)[],\n}\n\nexport const OrderLines = ({ items }: IItems) => {\n return \n {items.map((item, idx) => {\n if ('props' in item && 'Component' in item) {\n const Component = item.Component;\n\n return ;\n } else {\n return ;\n }\n })}\n ;\n};\n","import React from 'react';\n\nimport { H3 } from '@r1-frontend/ui-react/components/typography/heading';\nimport Item from '@r1-frontend/ui-react/organisms/OrderSummary/Item';\nimport { OrderLines } from '@r1-frontend/ui-react/organisms/OrderSummary/OrderLines';\nimport { TItemTypes } from '@r1-frontend/ui-react/organisms/OrderSummary/types';\n\nimport * as S from './styled';\n\nexport type TOrderSummary = {\n title?: string,\n items: TItemTypes[],\n gapSize?: 'small' | 'large',\n};\n\nconst OrderSummary = (\n {\n title,\n items,\n gapSize = 'large',\n ...props\n }: TOrderSummary,\n): JSX.Element => {\n return (\n \n {title ?

{title}

: null}\n\n {items.map((itemList, idx) => {\n if (itemList === 'separator') {\n return ;\n }\n\n if ((typeof itemList === 'object' || typeof itemList === 'function') && (itemList !== null) && 'total' in itemList) {\n const { title: totalTitle = 'Итого:', ...item } = itemList.total;\n return ;\n }\n\n if (Array.isArray(itemList) && itemList.length > 0) {\n return ;\n }\n\n return null;\n })}\n
\n );\n};\n\nexport default OrderSummary;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { H3, H4 } from '@r1-frontend/ui-react/components/typography/heading';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nexport const Section = styled.section`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`;\n\nexport const Wrapper = styled.div<{ $gapSize: 'small' | 'large' }>`\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: 16px;\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n gap: 24px;\n }\n\n ${Section} {\n ${({ $gapSize }) => $gapSize === 'small' ? 'gap: 4px;' : 'gap: 8px;'}\n }\n`;\n\nexport const Item = styled.div`\n display: flex;\n width: 100%;\n justify-content: space-between;\n align-items: center;\n\n & * {\n :nth-child(3) {\n flex-basis: 100%;\n align-self: flex-start;\n }\n }\n\n ${H4}, ${H3} {\n width: auto;\n margin: 0;\n }\n`;\n\nexport const ItemTop = styled.div`\n display: flex;\n flex-wrap: nowrap;\n width: 100%;\n justify-content: space-between;\n row-gap: 5px;\n`;\n\nexport const Separator = styled.hr`\n height: 1px;\n background-color: ${COLORS.Control};\n width: 100%;\n margin: 0;\n border-width: 0;\n`;\n\nexport const Indentation2SatisfyTheDesignIdea = styled.div`\n display: block;\n height: 12px;\n \n @media (min-width: ${wideBreakpoints.mobile}) {\n height: 16px;\n }\n`;\n","import CustomScrollbar from '@r1-frontend/ui-react/components/CustomScrollbar';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { useMatchMediaByWidth } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nconst scrollIndent = 10; // Отступ скрола от контента\nconst defaultMaxContentHeight = 'calc(100vh - 200px)'; // Ограничения по высоте для контента скролла.\n\ninterface IProps {\n children: JSX.Element | JSX.Element[],\n maxContentHeight?: string,\n}\n\n/**\n * Компонент скрола, с отступом 'scrollIndent' от контента\n */\nexport const ScrollbarWithIndent = ({\n children,\n maxContentHeight = defaultMaxContentHeight,\n}: IProps) => {\n const isMobile = useMatchMediaByWidth(wideBreakpoints.mobile);\n\n return \n {children}\n ;\n};\n"],"names":["DoubleColumnLayout","styled","WideContainer","wideBreakpoints","useValueByBreakpoint","desktop","sDesktop","laptop","tablet","mobile","isSDesktop","useMatchMediaByWidth","isLaptop","isTablet","usePartialList","items","partialCount","startState","useState","isPartial","setIsPartial","toggleState","value","useMemo","slice","PopupCloseButton","Wrapper","props","isShown","COLORS","Overlay","Body","Strip","ActionButton","FullBody","ShortBody","BottomStickyBlock","InnerComponent","OuterComponent","parent","onOpen","onClose","setIsShown","popupRoot","setPopupRoot","useEffect","root","current","createRootElement","remove","onCloseHandler","e","stopPropagation","onOpenHandler","createPortal","S","onClick","data-test","Close","size","SingleArrowUp","displayName","withRadius","options","onSelect","IndentContainer","$united","ListContainer","$size","$direction","Object","entries","map","id","option","BaseRadio","name","onChange","cost","period","disabled","DescribedCost","isReverse","installmentPeriod","$radius","Button","elseOptions","undefined","selectedOption","setOption","handleSelect","H4","purchaseOption","Purchase","isEmpty","Installment","bType","CreatablePhoneSelectV2","placeholder","createOptionPosition","label","rest","innerOptions","toString","substring","Creatable","styles","customStyles","components","IndicatorSeparator","ClearIndicator","Control","DropdownIndicator","Menu","MenuList","Option","formatCreateLabel","onInputChange","handleInputChange","inputValue","meta","action","replaceValueForPhone","InputPhone","phoneDecorator","InputSimple","CreatablePhoneSelect","inputPlaceHolder","createLabel","createValue","errorMessage","onMenuOpen","onMenuClose","masked","hasError","clonedOptions","clonedOptionsInner","clone","push","isShowInput","onMaskedInputChange","useCallback","inputProps","className","Fragment","Select","MaskedInput","type","BlockContainer","p","getPaddingByIncomingIndent","indent","getRadiusByIncomingProps","rounder","bgColor","title","description","previousCost","isMonthly","Component","Paragraph4","color","$color","as","$withIndent","$inline","Cost","OrderLines","item","idx","Item","gapSize","$gapSize","H3","itemList","total","totalTitle","Array","isArray","length","Section","ItemTop","Separator","Indentation2SatisfyTheDesignIdea","ScrollbarWithIndent","children","maxContentHeight","isMobile","CustomScrollbar","view","paddingRight","paddingBottom","autoHeight","autoHeightMin","autoHeightMax","style","width"],"sourceRoot":""}