{"version":3,"file":"static/chunks/4824-756de9cfb0226978.js","mappings":"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","sources":["webpack://_N_E/../../packages/ui-react/src/components/navigation/scrolling/helpers/index.js","webpack://_N_E/../../packages/ui-react/src/components/navigation/scrolling/styled.js","webpack://_N_E/../../packages/ui-react/src/components/navigation/scrolling/index.js","webpack://_N_E/../../packages/ui-react/src/components/tabs/tab/index.js","webpack://_N_E/../../packages/ui-react/src/components/tabs/tabs/styled.js","webpack://_N_E/../../packages/ui-react/src/components/tabs/tabs/index.js"],"sourcesContent":["export const moveButtons = (event, scrolling) => {\n if (scrolling) {\n const currentX = scrolling.getCurrentTranslateX();\n const trackWidth = scrolling.getTrackWidth();\n const offsetLeft = event.target.offsetLeft;\n const buttonWidth = event.target.clientWidth;\n\n // доля видимой следующей кнопки (чтобы при прокручивании при выборе кнопке было видно и кусочек следующей кнопки)\n const nextButtonOffset = 0.6 * buttonWidth;\n\n // сдвиг вправо при нажатии крайней правой видимой кнопки\n // transform = *ширина видимой области* - *offset правого края кнопки* - *доля видимой справа следующей кнопки*\n let transform = trackWidth - (offsetLeft + buttonWidth) - nextButtonOffset;\n if (transform < currentX) {\n scrolling.transform(transform + 'px');\n } else {\n // сдвиг влево при нажатии крайней левой видимой кнопки\n // transform = *offset левого края кнопки* + *доля видимой слева следующей кнопки*\n transform = -offsetLeft + nextButtonOffset;\n if (offsetLeft - nextButtonOffset < Math.abs(currentX)) {\n scrolling.transform(transform + 'px');\n }\n }\n }\n};\n","import styled from 'styled-components';\n\nexport const Track = styled.div`\n position: relative;\n min-width: 100%;\n display: block;\n overflow: hidden;\n white-space: nowrap;\n cursor: grab;\n`;\n\nexport const List = styled.div`\n display: flex;\n flex-wrap: nowrap;\n transition: transform 0.2s linear;\n`;\n","import React from 'react';\n\nimport { List, Track } from './styled';\n\nconst SPEED = 1.5;\n\nexport default class Scrolling extends React.Component {\n constructor(props) {\n super(props);\n this.scrollingTrackRef = React.createRef();\n this.scrollingListRef = React.createRef();\n }\n\n componentDidMount() {\n if (window) {\n window.addEventListener('resize', this.transformOnResize);\n }\n const { translate } = this.props;\n if (translate) {\n this.transform(translate);\n }\n }\n\n componentWillUnmount() {\n if (window) {\n window.removeEventListener('resize', this.transformOnResize);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { children, translate } = this.props;\n if (children !== prevProps.children) {\n this.transformOnResize();\n }\n if (translate !== prevProps.translate) {\n this.transform(translate);\n }\n }\n\n transform = (x) => {\n const list = this.scrollingListRef.current;\n if (list) {\n list.style.transform = `translateX(${x})`;\n }\n }\n\n setCursor = (isGrabbing) => {\n const sliderRef = this.scrollingListRef.current;\n if (sliderRef) {\n sliderRef.style.cursor = isGrabbing ? 'grabbing' : 'grab';\n sliderRef.style.userSelect = isGrabbing ? 'none' : 'auto';\n }\n }\n\n getCurrentTranslateX = () => {\n const list = this.scrollingListRef.current;\n if (list) {\n return parseInt((list.style.transform || '0').replace('translateX(', ''));\n }\n }\n\n getTrackWidth = () => {\n const list = this.scrollingListRef.current;\n return list ? list.clientWidth : 0;\n }\n\n transformOnResize = () => {\n const currentTransformX = this.getCurrentTranslateX();\n const transformX = (currentTransformX < 0) ? this.getTransformX(currentTransformX) : 0;\n this.transform(transformX);\n }\n\n getTransformX = (currentX) => {\n const list = this.scrollingListRef.current;\n const trackWidth = this.getTrackWidth();\n const lastChildOffset = list.lastChild.offsetLeft + list.lastChild.offsetWidth;\n const maxOffset = lastChildOffset - trackWidth;\n\n const transformX = (trackWidth < lastChildOffset && maxOffset > 0) ? Math.max(currentX, -maxOffset) : 0;\n\n return transformX + 'px';\n }\n\n move = (event, startX, startTransformX) => {\n event.preventDefault();\n const xCoord = event.type === 'touchmove' ? event.touches[0].clientX : event.pageX;\n const walk = xCoord - startX;\n this.setCursor(true);\n\n const transformX = this.getTransformX(Math.min(0, startTransformX + walk * SPEED));\n this.transform(transformX);\n }\n\n startDrag = (event) => {\n const startTransformX = this.getCurrentTranslateX();\n const startX = event.type === 'touchstart' ? event.touches[0].clientX : event.pageX;\n const ref = this.scrollingTrackRef.current;\n\n ref.onmousemove = (e) => this.move(e, startX, startTransformX);\n ref.ontouchmove = (e) => this.move(e, startX, startTransformX);\n }\n\n endDrag = () => {\n this.setCursor(false);\n const ref = this.scrollingTrackRef.current;\n if (typeof ref.onmousemove === 'function') {\n ref.onmousemove = null;\n ref.ontouchmove = null;\n }\n }\n\n render() {\n const { children, ...rest } = this.props;\n\n const dragNDropEvents = {\n onMouseDown: this.startDrag,\n onTouchStart: this.startDrag,\n onMouseUp: this.endDrag,\n onTouchEnd: this.endDrag,\n onMouseLeave: this.endDrag,\n onTouchCancel: this.endDrag,\n };\n\n return (\n e.preventDefault()} {...rest}>\n \n {children}\n \n \n );\n }\n}\n","import React, { Component } from 'react';\nimport styled from 'styled-components';\n\nconst TabBody = styled.div`\n margin: ${props => props.margin || '30px 0'};\n`;\n\nclass Tab extends Component {\n render() {\n const { children, margin } = this.props;\n if (!children) {\n return null;\n }\n return (\n \n {children}\n \n );\n }\n}\n\nexport default Tab;\n","import styled from 'styled-components';\n\nimport { COLORS } from '../../../tokens/colors';\nimport { FONTS } from '../../../tokens/fonts';\n\nexport const TabsWrapper = styled.div`\n display: block;\n user-select: none;\n width: 100%;\n`;\n\nexport const TabsHead = styled.div`\n width: 100%;\n border-bottom: 1px solid ${COLORS.GRAY_LIGHT};\n position: relative;\n`;\n\nexport const TabsHeader = styled.div`\n flex-wrap: nowrap;\n width: 100%;\n justify-content: ${props => props.justify ? 'space-between' : 'flex-start'};\n`;\n\nexport const TabsItem = styled.div`\n display: block;\n padding: 15px 0;\n white-space: nowrap;\n cursor: pointer;\n position: relative;\n ${props => props.active ? FONTS.MediumS : FONTS.S}\n &:not(:last-child) {\n margin-right: 30px;\n }\n &:hover {\n color: ${props => props.active ? COLORS.TextPrimary : props.accentColor || COLORS.Logo};\n }\n`;\n\nexport const Bar = styled.div`\n position: absolute;\n bottom: 0;\n height: 2px;\n background-color: ${props => props.accentColor || COLORS.Control};\n transition: width 0.4s ease-in-out, left 0.4s ease-in-out;\n`;\n\nexport const Badge = styled.span`\n position: absolute;\n background: ${COLORS.LabelsText_1};\n border-radius: 10px;\n ${FONTS.XS};\n height: 20px;\n padding: 0 6px;\n color: white;\n right: -20px;\n top: 3px;\n text-align: center;\n`;\n\nexport const HiddenTab = styled.div`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n border: 0;\n padding: 0;\n opacity: 0;\n white-space: nowrap;\n clip-path: inset(100%);\n clip: rect(0 0 0 0);\n overflow: hidden;\n`;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\n\nimport Scrolling from '../../navigation/scrolling';\nimport { moveButtons } from '../../navigation/scrolling/helpers';\nimport * as ST from './styled';\n\nclass Tabs extends Component {\n static propTypes = {\n activeTab: PropTypes.any,\n children: PropTypes.array,\n label: PropTypes.string,\n onSwitchTab: PropTypes.func,\n withSSR: PropTypes.bool,\n };\n\n static defaultProps = {\n onSwitchTab: () => { },\n };\n\n constructor(props) {\n super(props);\n\n let currentTab = props.activeTab || false;\n if (props.children) {\n const children = Array.isArray(props.children) ? props.children : [props.children];\n currentTab = currentTab ? currentTab : children[0].props.label;\n }\n\n this.state = {\n currentTab: currentTab,\n barStyles: {},\n hasScroll: false,\n };\n\n this.headerRef = React.createRef();\n this.activeTab = React.createRef();\n }\n\n getStyles = () => (this.activeTab.current\n ? {\n width: this.activeTab.current.clientWidth,\n left: this.activeTab.current.offsetLeft,\n }\n : {}\n );\n\n componentDidMount() {\n this.findActiveTab();\n this.setState({\n barStyles: this.getStyles(),\n });\n\n const scrollingListRef = this.scrolling.scrollingListRef.current;\n if (scrollingListRef) {\n scrollingListRef.style.height = '100%';\n }\n }\n\n findActiveTab = () => {\n const { children } = this.props;\n const { currentTab } = this.state;\n let childrenArray = [];\n if (children) {\n childrenArray = Array.isArray(children) ? children : [children];\n }\n // если активная вкладка теперь скрыта\n let activeHeaderItem = currentTab;\n childrenArray.forEach(tab => {\n if (tab && tab.props.label == currentTab && tab.props.hidden) {\n activeHeaderItem = childrenArray.find(item => !item.props.hidden).props.label;\n }\n });\n if (activeHeaderItem != currentTab) {\n this.setState({\n currentTab: activeHeaderItem,\n });\n return true;\n }\n return false;\n }\n\n componentDidUpdate(prevProps) {\n const { activeTab, justify } = this.props;\n const { barStyles } = this.state;\n\n // если активная вкладка скрыта - найти нескрытую\n if (this.findActiveTab()) {\n return;\n }\n\n const scrollingList = this.scrolling?.scrollingListRef?.current;\n\n if (scrollingList && justify) {\n scrollingList.style.justifyContent = 'space-between';\n }\n\n const style = this.getStyles();\n\n if (JSON.stringify(barStyles) !== JSON.stringify(style)) {\n this.setState({\n barStyles: style,\n });\n }\n\n if (activeTab !== prevProps.activeTab) {\n this.setState({\n currentTab: activeTab,\n });\n }\n }\n\n switchTab = (e, tabLabel) => {\n const [rects] = e.target.getClientRects();\n\n const headerWith = this.headerRef.current.offsetWidth;\n const tabOffset = rects.left + rects.width;\n const headersScrollLeft = this.headerRef.current.scrollLeft;\n\n moveButtons(e, this.scrolling);\n\n if (tabOffset > headerWith) {\n this.headerRef.current.scrollLeft = rects.left;\n }\n\n if (rects.left < 0) {\n this.headerRef.current.scrollLeft = headersScrollLeft - Math.abs(rects.left);\n }\n\n this.setState({ currentTab: tabLabel });\n if (this.props.onSwitchTab) {\n this.props.onSwitchTab(tabLabel);\n }\n };\n\n renderHeaders = () => {\n const { children, accentColor, withSSR } = this.props;\n\n let content = null;\n\n const headers = React.Children.map(children, (tab, idx) => {\n if (!tab || tab.hidden) {\n return;\n }\n const { label, badge, ...props } = tab.props;\n const { currentTab } = this.state;\n\n const isCurrentTab = label === currentTab;\n\n if (!withSSR && isCurrentTab) {\n content = tab;\n }\n\n return (\n this.switchTab(e, label)}\n ref={isCurrentTab ? this.activeTab : null}\n {...props}\n >\n {label}\n {badge !== undefined ? {badge} : null}\n \n );\n });\n if (withSSR) {\n content = React.Children.map(children, (tab, index) => (\n tab && tab.props.label === this.state.currentTab\n ?
{tab}
\n : {tab}\n ));\n }\n return { headers, content };\n };\n\n render() {\n const { headers, content } = this.renderHeaders();\n const { accentColor, className } = this.props;\n\n return (\n \n \n \n this.scrolling = scrolling}>\n \n {headers}\n \n \n \n {content}\n \n );\n }\n}\n\nexport default Tabs;\n"],"names":["moveButtons","event","scrolling","currentX","getCurrentTranslateX","trackWidth","getTrackWidth","offsetLeft","target","buttonWidth","clientWidth","nextButtonOffset","transform","Math","abs","Track","styled","List","Scrolling","props","x","list","scrollingListRef","current","style","setCursor","isGrabbing","sliderRef","cursor","userSelect","parseInt","replace","transformOnResize","currentTransformX","transformX","getTransformX","lastChildOffset","lastChild","offsetWidth","maxOffset","max","move","startX","startTransformX","preventDefault","walk","type","touches","clientX","pageX","min","startDrag","ref","scrollingTrackRef","onmousemove","e","ontouchmove","endDrag","React","componentDidMount","window","addEventListener","this","translate","componentWillUnmount","removeEventListener","componentDidUpdate","prevProps","children","render","rest","dragNDropEvents","onMouseDown","onTouchStart","onMouseUp","onTouchEnd","onMouseLeave","onTouchCancel","onDragStart","TabBody","margin","Tab","className","Component","TabsWrapper","TabsHead","COLORS","TabsHeader","justify","TabsItem","active","FONTS","accentColor","Bar","Badge","HiddenTab","Tabs","getStyles","activeTab","width","left","findActiveTab","state","currentTab","childrenArray","Array","isArray","activeHeaderItem","forEach","tab","label","hidden","find","item","setState","switchTab","tabLabel","rects","getClientRects","headerWith","headerRef","tabOffset","headersScrollLeft","scrollLeft","onSwitchTab","renderHeaders","withSSR","content","headers","idx","badge","isCurrentTab","ST","onClick","undefined","index","div","barStyles","hasScroll","height","scrollingList","justifyContent","JSON","stringify","propTypes","PropTypes","defaultProps"],"sourceRoot":""}