{"version":3,"file":"300.d6930736eb1e754c.js","sources":["webpack://career-platform-front/./src/components/EmptyState/EmptyStateCourses/index.tsx","webpack://career-platform-front/./src/components/EmptyState/EmptyStateTemplate/styles.less?5a08","webpack://career-platform-front/./src/components/EmptyState/EmptyStateTemplate/index.tsx","webpack://career-platform-front/./src/components/EmptyState/styles.less?4774","webpack://career-platform-front/./src/components/EmptyState/index.tsx","webpack://career-platform-front/./src/components/ProgressCircle/styles.less?66f4","webpack://career-platform-front/./src/components/ProgressCircle/index.tsx","webpack://career-platform-front/./src/hooks/useScrollToAnchor.tsx","webpack://career-platform-front/./src/components/EmptyState/EmptyStateCareerTrack/index.tsx","webpack://career-platform-front/./src/widgets/CareerTrack/AccordionCareerTrack/index.tsx","webpack://career-platform-front/./src/widgets/CareerTrack/utils.ts","webpack://career-platform-front/./src/widgets/CareerTrack/CardProfession/styles.less?9d0b","webpack://career-platform-front/./src/widgets/CareerTrack/CardProfession/index.tsx","webpack://career-platform-front/./src/components/CardEdProgram/CardEdProgramSmall/styles.less?62f5","webpack://career-platform-front/./src/components/CardEdProgram/CardEdProgramSmall/index.tsx","webpack://career-platform-front/./src/widgets/CareerTrack/CarouselCourses/styles.less?5792","webpack://career-platform-front/./src/widgets/CareerTrack/CarouselCourses/index.tsx","webpack://career-platform-front/./src/widgets/CareerTrack/BottomsheetProfession/styles.less?d90b","webpack://career-platform-front/./src/widgets/CareerTrack/BottomsheetProfession/index.tsx","webpack://career-platform-front/./src/widgets/CareerTrack/CardProfessionGraph/styles.less?d204","webpack://career-platform-front/./src/widgets/CareerTrack/CardProfessionGraph/index.tsx","webpack://career-platform-front/./src/widgets/CareerTrack/CurvyArrow/styles.less?2278","webpack://career-platform-front/./src/widgets/CareerTrack/CurvyArrow/index.tsx","webpack://career-platform-front/./src/widgets/CareerTrack/GraphCareerTrack/styles.less?3677","webpack://career-platform-front/./src/widgets/CareerTrack/GraphCareerTrack/index.tsx","webpack://career-platform-front/./src/widgets/CareerTrack/styles.less?a10f","webpack://career-platform-front/./src/widgets/CareerTrack/index.tsx"],"sourcesContent":["import { translation, TranslatedComponent } from '@hh.ru/front-static-app';\n\nimport EmptyStateTemplate from 'src/components/EmptyState/EmptyStateTemplate';\nimport getDataQa from 'src/utils/getDataQa';\n\nconst TrlKeys = {\n title: 'career-platform.components.empty-state.courses.title',\n};\n\nconst EmptyStateCourses: TranslatedComponent = ({ trls }) => {\n return ;\n};\nexport default translation(EmptyStateCourses);\n","// extracted by css-extract-rspack-plugin\nexport default {\"card\":\"hIXlCKz___card\",\"content\":\"xA6GPJ3___content\",\"circles\":\"kF2ImID___circles\"};","import { FC, PropsWithChildren, ReactNode } from 'react';\n\nimport { Title } from '@hh.ru/magritte-ui';\n\nimport styles from './styles.less';\n\ninterface EmptyStateTemplateProps {\n title: string;\n description?: ReactNode;\n}\n\nconst EmptyStateTemplate: FC> = ({ title, description, children }) => (\n
\n
\n
\n \n {title}\n \n {children}\n
\n
\n);\n\nexport default EmptyStateTemplate;\n","// extracted by css-extract-rspack-plugin\nexport default {\"link\":\"IGjj9Bd___link\"};","import { translation, TranslatedComponent } from '@hh.ru/front-static-app';\nimport { Button, useBreakpoint, VSpacing } from '@hh.ru/magritte-ui';\n\nimport { EMAIL_SUPPORT } from 'src/modules/emails';\n\nimport EmptyStateTemplate from 'src/components/EmptyState/EmptyStateTemplate';\n\nimport styles from './styles.less';\n\nconst TrlKeys = {\n title: 'career-platform.components.empty-state.title',\n description: 'career-platform.components.empty-state.description',\n button: 'career-platform.components.empty-state.button',\n};\n\nconst handleClick = () => window.location.reload();\n\nconst EmptyState: TranslatedComponent = ({ trls }) => {\n const { isMobile } = useBreakpoint();\n return (\n \n {trls[TrlKeys.description]}{' '}\n \n {EMAIL_SUPPORT}\n \n \n }\n >\n \n \n \n );\n};\n\nexport default translation(EmptyState);\n","// extracted by css-extract-rspack-plugin\nexport default {\"circle\":\"UyKbCk7___circle\",\"circle_neutral\":\"OYBIXA7___circle_neutral\",\"circleNeutral\":\"OYBIXA7___circle_neutral\",\"circle-base\":\"nryOgux___circle-base\",\"circleBase\":\"nryOgux___circle-base\",\"circle-indicator\":\"Nu8qPli___circle-indicator\",\"circleIndicator\":\"Nu8qPli___circle-indicator\",\"circle_positive\":\"b69o4G____circle_positive\",\"circlePositive\":\"b69o4G____circle_positive\",\"circle-inner\":\"qKBVJSF___circle-inner\",\"circleInner\":\"qKBVJSF___circle-inner\",\"move-path-in-scope\":\"snd6o6s___move-path-in-scope\",\"movePathInScope\":\"snd6o6s___move-path-in-scope\"};","import { FC, ReactNode } from 'react';\nimport { useInView } from 'react-intersection-observer';\nimport classNames from 'classnames';\n\nimport styles from './styles.less';\n\nfunction polarToCartesian(centerX: number, centerY: number, radius: number, angleInDegrees: number) {\n const angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180.0;\n\n return {\n x: centerX + radius * Math.cos(angleInRadians),\n y: centerY + radius * Math.sin(angleInRadians),\n };\n}\n\nfunction buildArc(x: number, y: number, radius: number, startAngle: number, endAngle: number) {\n const start = polarToCartesian(x, y, radius, endAngle);\n const end = polarToCartesian(x, y, radius, startAngle);\n\n const largeArcFlag = endAngle - startAngle <= 180 ? '0' : '1';\n\n const d = ['M', start.x, start.y, 'A', radius, radius, 0, largeArcFlag, 0, end.x, end.y].join(' ');\n\n return d;\n}\n\ninterface ProgressCircleProps {\n style: 'neutral' | 'positive';\n percent: number;\n size: 60 | 80;\n children?: ReactNode;\n}\n\nconst ProgressCircle: FC = ({ style, percent, size, children }) => {\n const [circleRef, circleInView] = useInView({ triggerOnce: true, threshold: 0.3 });\n\n const buildArgXY = size / 2;\n const radius = size === 80 ? 37 : 23;\n\n const classes = classNames(styles.circle, {\n [styles[`circle_${style}`]]: true,\n });\n\n return (\n
\n \n \n \n {percent > 0 && circleInView && (\n \n )}\n \n \n {children}\n
\n );\n};\n\nexport default ProgressCircle;\n","import { useEffect } from 'react';\n\n/**\n * Хук добавляющий\n * - плавный скролл при клике на ссылку с якорем (опционально)\n * - плавный скролл до якоря после загрузки страницы\n * - лечит ошибку когда браузер не реагирует на якорь в URL\n */\n\ninterface UseScrollToAnchorProps {\n offsetTop?: number;\n addHandlerClick?: boolean;\n}\n\nconst useScrollToAnchor = ({ offsetTop = 0, addHandlerClick = false }: UseScrollToAnchorProps = {}) => {\n useEffect(() => {\n const handleScrollToAnchor = (anchorName: string) => {\n const node = document.getElementById(anchorName);\n if (node) {\n window.scrollTo({\n behavior: 'smooth',\n top: node.offsetTop - offsetTop,\n });\n }\n };\n\n // Прокрутка при загрузке\n if (window.location.hash) {\n const anchorName = window.location.hash.replace('#', '');\n handleScrollToAnchor(anchorName);\n }\n\n // Прокрутка при клике по ссылке с якорем\n let handleClick: ((e: MouseEvent) => void) | null = null;\n\n if (addHandlerClick) {\n handleClick = (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n if (target.tagName.toLowerCase() === 'a') {\n const anchor = target.getAttribute('href');\n if (anchor?.startsWith('#')) {\n e.preventDefault();\n const anchorName = anchor.replace('#', '');\n window.history.pushState(null, '', anchor);\n handleScrollToAnchor(anchorName);\n }\n }\n };\n document.addEventListener('click', handleClick);\n }\n\n return () => {\n if (handleClick) {\n document.removeEventListener('click', handleClick);\n }\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n};\n\nexport default useScrollToAnchor;\n","import { translation, TranslatedComponent } from '@hh.ru/front-static-app';\n\nimport EmptyStateTemplate from 'src/components/EmptyState/EmptyStateTemplate';\n\nconst TrlKeys = {\n title: 'career-platform.components.empty-state.career-track.title',\n description: 'career-platform.components.empty-state.career-track.description',\n};\n\nconst EmptyStateCareerTrack: TranslatedComponent = ({ trls }) => {\n return ;\n};\n\nexport default translation(EmptyStateCareerTrack);\n","import { translation, TranslatedComponent } from '@hh.ru/front-static-app';\nimport { Accordion, Text, useBreakpoint } from '@hh.ru/magritte-ui';\n\nconst TrlKeys = {\n title: 'career-platform.widgets.careerTrack.accordion.title',\n description: 'career-platform.widgets.careerTrack.accordion.description',\n};\n\nconst AccordionCareerTrack: TranslatedComponent = ({ trls }) => {\n const { isXS, isS } = useBreakpoint();\n const isMobile = isXS || isS;\n return (\n {trls[TrlKeys.title]}}\n >\n {trls[TrlKeys.description]}\n \n );\n};\n\nexport default translation(AccordionCareerTrack);\n","import { TagStyle } from '@hh.ru/magritte-ui';\n\nexport const getTagStyleByIndex = (length: number, i: number): TagStyle => {\n if (i / length < 0.33) {\n return 'special';\n }\n if (i / length < 0.66) {\n return 'positive';\n }\n return 'neutral';\n};\n","// extracted by css-extract-rspack-plugin\nexport default {\"button-group\":\"rClnJvB___button-group\",\"buttonGroup\":\"rClnJvB___button-group\",\"salary\":\"_LLTprT___salary\",\"tag-wrapper\":\"WN5Kd35___tag-wrapper\",\"tagWrapper\":\"WN5Kd35___tag-wrapper\"};","import { useElementShown } from '@hh.ru/analytics-js';\nimport professionInfoCardButtonClick from '@hh.ru/analytics-js-events/build/career_platform/profession/profession_info_card_button_click';\nimport professionInfoCardElementShown from '@hh.ru/analytics-js-events/build/career_platform/profession/profession_info_card_element_shown';\nimport { translation, format, TranslatedComponent } from '@hh.ru/front-static-app';\nimport { Button, Card, Tag, Text, Title, useBreakpoint } from '@hh.ru/magritte-ui';\nimport { useSelectorNonNullable } from '@hh.ru/redux-create-reducer';\nimport { SPALink } from '@hh.ru/redux-spa-middleware';\n\nimport { getProfessionRouteHref } from 'src/app/routesUtils';\nimport { ProfessionId } from 'src/types/profession';\nimport { getCurrencyRange } from 'src/utils/currency';\nimport { getTagStyleByIndex } from 'src/widgets/CareerTrack/utils';\n\nimport styles from './styles.less';\n\ninterface CardProfessionProps {\n selectedProfessionIndex: number | null;\n hideButtons?: boolean;\n}\n\nconst TrlKeys = {\n salaryDescription: 'career-platform.widgets.careerTrack.professionCard.salaryDescription',\n toCourses: 'career-platform.widgets.careerTrack.professionCard.toCourses',\n toProfession: 'career-platform.widgets.careerTrack.professionCard.toProfession',\n};\n\nconst CardProfession: TranslatedComponent = ({ selectedProfessionIndex, hideButtons, trls }) => {\n const targetProfessions = useSelectorNonNullable((state) => state.widgetCareerTrack.targetProfessionList || []);\n const targetProfession = selectedProfessionIndex !== null ? targetProfessions[selectedProfessionIndex] : null;\n const professionId = useSelectorNonNullable((state) => state.widgetCareerTrack.sourceProfession.id);\n\n const { isXS, isS } = useBreakpoint();\n const isMobile = isXS || isS;\n\n const handleClickToCourses = () => {\n if (targetProfession) {\n professionInfoCardButtonClick({\n buttonName: 'profession_info_card_course',\n professionId,\n professionCardId: targetProfession?.profession.id,\n });\n }\n };\n\n const handleClickToProfession = () => {\n if (targetProfession) {\n professionInfoCardButtonClick({\n buttonName: 'profession_info_card_detail',\n professionId,\n professionCardId: targetProfession?.profession.id,\n });\n }\n };\n\n const cardRef = useElementShown(professionInfoCardElementShown, {\n professionId,\n professionCardId: targetProfession?.profession.id as unknown as ProfessionId,\n });\n\n if (!targetProfession || selectedProfessionIndex === null) {\n return null;\n }\n\n return (\n \n \n {/* TODO: fix ts error after magritte-ui update */}\n {/* @ts-expect-error */}\n \n {targetProfession.probability}%\n \n \n \n {targetProfession.profession.name}\n \n
\n \n {getCurrencyRange(\n targetProfession.salary.from,\n targetProfession.salary.to,\n targetProfession.salary.currency\n )}\n \n
\n \n {format(trls[TrlKeys.salaryDescription], { '{0}': targetProfession.grade.name.toLowerCase() })}\n \n\n {!hideButtons && (\n
\n \n {trls[TrlKeys.toCourses]}\n \n \n {trls[TrlKeys.toProfession]}\n \n
\n )}\n
\n );\n};\nexport default translation(CardProfession);\n","// extracted by css-extract-rspack-plugin\nexport default {\"course-content\":\"xQokF9f___course-content\",\"courseContent\":\"xQokF9f___course-content\",\"logo\":\"s3wBkOo___logo\",\"title\":\"hSieHfF___title\"};","import { useElementShown } from '@hh.ru/analytics-js';\nimport cardCourseElementShown from '@hh.ru/analytics-js-events/build/career_platform/courses/card_course_element_shown';\nimport { translation, TranslatedComponent } from '@hh.ru/front-static-app';\nimport { CheckableCard, Text } from '@hh.ru/magritte-ui';\n\nimport CardEdProgramBreadcrumbsInfo from 'src/components/CardEdProgram/common/CardEdProgramBreadcrumbsInfo';\nimport { cardEdProgramButtonLinkExternalHandler } from 'src/components/CardEdProgram/common/CardEdProgramButtonLinkExternal';\nimport CardEdProgramLogoPromoCompany from 'src/components/CardEdProgram/common/CardEdProgramLogoPromoCompany';\nimport { EdProgramDto, EdProgramCoursePurpose, isEdProgramTypeFollowLink } from 'src/types/EdProgram';\nimport getDataQa from 'src/utils/getDataQa';\nimport getKebabCase from 'src/utils/getKebabCase';\nimport pluralize from 'src/utils/pluralize';\n\nimport styles from './styles.less';\n\ninterface CardEdProgramSmallProps {\n edProgram: EdProgramDto;\n}\n\nconst TrlKeys = {\n breadcrumbs: {\n profession: 'career-platform.components.card-course.breadcrumbs.profession',\n skill: 'career-platform.components.card-course.breadcrumbs.skill',\n },\n date: {\n SECOND: {\n one: 'career-platform.pluralize.second.one',\n some: 'career-platform.pluralize.second.some',\n many: 'career-platform.pluralize.second.many',\n },\n MINUTE: {\n one: 'career-platform.pluralize.minute.one',\n some: 'career-platform.pluralize.minute.some',\n many: 'career-platform.pluralize.minute.many',\n },\n HOURS: {\n one: 'career-platform.pluralize.hours.one',\n some: 'career-platform.pluralize.hours.some',\n many: 'career-platform.pluralize.hours.many',\n },\n DAYS: {\n one: 'career-platform.pluralize.days.one',\n some: 'career-platform.pluralize.days.some',\n many: 'career-platform.pluralize.days.many',\n },\n WEEKS: {\n one: 'career-platform.pluralize.weeks.one',\n some: 'career-platform.pluralize.weeks.some',\n many: 'career-platform.pluralize.weeks.many',\n },\n MONTHS: {\n one: 'career-platform.pluralize.months.one',\n some: 'career-platform.pluralize.months.some',\n many: 'career-platform.pluralize.months.many',\n },\n YEARS: {\n one: 'career-platform.pluralize.years.one',\n some: 'career-platform.pluralize.years.some',\n many: 'career-platform.pluralize.years.many',\n },\n },\n};\n\nconst CardEdProgramSmall: TranslatedComponent = ({ edProgram, trls }) => {\n const isCourseByProfession = edProgram.purpose === EdProgramCoursePurpose.Profession;\n\n const getBreadcrumbsInfo = () => {\n const result = [isCourseByProfession ? trls[TrlKeys.breadcrumbs.profession] : trls[TrlKeys.breadcrumbs.skill]];\n\n if (edProgram.level) {\n const level = [edProgram.level.from, edProgram.level.to].filter(Boolean).join('→');\n result.push(level);\n }\n\n if (edProgram.duration) {\n result.push(\n pluralize({\n count: edProgram.duration.value,\n one: trls[TrlKeys.date[edProgram.duration.type].one],\n some: trls[TrlKeys.date[edProgram.duration.type].some],\n many: trls[TrlKeys.date[edProgram.duration.type].many],\n useCount: true,\n })\n );\n }\n\n return result;\n };\n\n const handleClick = () => {\n if (isEdProgramTypeFollowLink(edProgram)) {\n cardEdProgramButtonLinkExternalHandler(edProgram);\n }\n };\n\n const ref = useElementShown(cardCourseElementShown, {\n courseName: edProgram.name,\n streamName: edProgram?.stream?.name,\n providerId: edProgram?.provider?.id || null,\n providerName: edProgram?.provider?.name || null,\n cardType: edProgram.purpose,\n professionId: edProgram.profession?.id || null,\n priceDetails: JSON.stringify(edProgram.priceDetails),\n });\n\n if (!isEdProgramTypeFollowLink(edProgram)) {\n return null;\n }\n\n return (\n \n
\n {edProgram.provider && (\n
\n \n
\n )}\n
\n \n {edProgram.name}\n \n
\n \n
\n \n );\n};\n\nexport default translation(CardEdProgramSmall);\n","// extracted by css-extract-rspack-plugin\nexport default {\"courses-list\":\"ixQB_LZ___courses-list\",\"coursesList\":\"ixQB_LZ___courses-list\"};","import { FC } from 'react';\n\nimport { CheckableCardScrollableContainer } from '@hh.ru/magritte-ui';\n\nimport CardEdProgramSmall from 'src/components/CardEdProgram/CardEdProgramSmall';\nimport { EdProgramDto } from 'src/types/EdProgram';\n\nimport styles from './styles.less';\n\ninterface CarouselCoursesProps {\n edProgram: EdProgramDto[];\n}\n\nconst CarouselCourseselPrograms: FC = ({ edProgram }) => {\n return (\n \n
\n {edProgram.map((course) => (\n \n ))}\n
\n
\n );\n};\n\nexport default CarouselCourseselPrograms;\n","// extracted by css-extract-rspack-plugin\nexport default {\"bottomsheet-content\":\"JXcpHje___bottomsheet-content\",\"bottomsheetContent\":\"JXcpHje___bottomsheet-content\",\"title\":\"CByQtxy___title\"};","import { useEffect, useMemo, useState } from 'react';\n\nimport { translation, format, TranslatedComponent } from '@hh.ru/front-static-app';\nimport { BottomSheet, BottomSheetFooter, Button, Title } from '@hh.ru/magritte-ui';\nimport { useSelectorNonNullable } from '@hh.ru/redux-create-reducer';\nimport { SPALink } from '@hh.ru/redux-spa-middleware';\n\nimport { getProfessionRouteHref } from 'src/app/routesUtils';\nimport AccordionCareerTrack from 'src/widgets/CareerTrack/AccordionCareerTrack';\nimport CardProfession from 'src/widgets/CareerTrack/CardProfession';\nimport CarouselCourseselPrograms from 'src/widgets/CareerTrack/CarouselCourses';\n\nimport styles from './styles.less';\n\ninterface BottomsheetProfessionProps {\n selectedProfessionIndex: number | null;\n onClose: () => void;\n}\n\nconst TrlKeys = {\n carouselCoursesTitle: 'career-platform.widgets.careerTrack.carouselCourses.title',\n toCourses: 'career-platform.widgets.careerTrack.professionCard.toCourses',\n toProfession: 'career-platform.widgets.careerTrack.professionCard.toProfession',\n close: 'career-platform.widgets.careerTrack.professionCard.close',\n};\n\nconst BottomsheetProfession: TranslatedComponent = ({\n selectedProfessionIndex,\n onClose,\n trls,\n}) => {\n const careerTrack = useSelectorNonNullable((state) => state.widgetCareerTrack);\n const targetProfession = useMemo(\n () => (selectedProfessionIndex !== null ? careerTrack?.targetProfessionList[selectedProfessionIndex] : null),\n [selectedProfessionIndex, careerTrack]\n );\n\n const [visibleBottomsheet, setVisibleBottomsheet] = useState(!!targetProfession);\n\n const handleCloseBottomsheet = () => {\n setVisibleBottomsheet(false);\n setTimeout(onClose, 400);\n };\n\n useEffect(() => {\n setVisibleBottomsheet(!!targetProfession);\n }, [targetProfession]);\n\n if (!targetProfession) {\n return null;\n }\n\n return (\n \n \n {trls[TrlKeys.toCourses]}\n \n \n {trls[TrlKeys.toProfession]}\n \n \n \n }\n >\n
\n \n \n {!!targetProfession.courses.length && (\n <>\n
\n \n {' '}\n {format(trls[TrlKeys.carouselCoursesTitle], {\n '{0}': targetProfession.profession.name,\n })}\n \n
\n \n \n )}\n
\n \n );\n};\n\nexport default translation(BottomsheetProfession);\n","// extracted by css-extract-rspack-plugin\nexport default {\"content\":\"gLe9w5s___content\",\"center-content\":\"Y6dmrmC___center-content\",\"centerContent\":\"Y6dmrmC___center-content\",\"profession-card\":\"QCl3P8D___profession-card\",\"professionCard\":\"QCl3P8D___profession-card\",\"sticky\":\"WmZNUY5___sticky\",\"tag\":\"zjCJf2J___tag\"};","import { forwardRef } from 'react';\nimport classNames from 'classnames';\n\nimport { CheckableCard, Tag, TagStyle, Text } from '@hh.ru/magritte-ui';\n\nimport { ProfessionDto } from 'src/types/profession';\n\nimport styles from './styles.less';\n\ninterface CardProfessionGraphProps {\n checked: boolean;\n profession: ProfessionDto;\n probability?: number;\n onChange?: () => void;\n readOnly?: boolean;\n sticky?: boolean;\n tagStyle?: TagStyle;\n 'data-qa'?: string;\n}\n\nconst CardProfessionGraph = forwardRef(\n ({ checked, onChange, probability, profession, sticky, tagStyle, readOnly, ...props }, ref) => {\n return (\n \n \n
\n {probability && (\n \n {/* TODO: fix ts error after magritte-ui update */}\n {/* @ts-expect-error */}\n {probability}%\n \n )}\n {profession.name}\n
\n \n
\n );\n }\n);\nexport default CardProfessionGraph;\n","// extracted by css-extract-rspack-plugin\nexport default {\"curvy-arrow\":\"P5tYxYn___curvy-arrow\",\"curvyArrow\":\"P5tYxYn___curvy-arrow\",\"active\":\"_1i5YNx___active\"};","import { useEffect, FC, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\nimport classNames from 'classnames';\n\nimport styles from './styles.less';\n\nconst svgPath = (start: Point, end: Point): string => {\n const widthDiff = Math.abs(start.x - end.x);\n const heightDiff = Math.abs(end.y - start.y);\n const third = widthDiff / 3; // треть ширины\n const sixth = third / 2;\n\n const downwards = end.y > start.y;\n\n // красивый угол не работает если точки слишком близко по y\n // поэтому подменяем простой кривой на маленьких delta y;\n if (heightDiff - third < 0) {\n return `\n M ${start.x},${start.y}\n L ${start.x + third},${start.y}\n C ${start.x + third + third},${start.y} ${start.x + third},${end.y} ${start.x + third + third},${end.y}\n L ${end.x},${end.y}\n `;\n }\n\n // вертикальная линия 1/3 ширины\n // кривая 1/6 ширины и высоты\n // горизонтальная линия\n // кривая 1/6 ширины и высоты\n // горизонтальная линия\n return `\n M ${start.x},${start.y}\n L ${start.x + third},${start.y}\n Q ${start.x + third + sixth},${start.y} ${start.x + third + sixth},${start.y + (downwards ? +sixth : -sixth)}\n L ${start.x + third + sixth},${end.y - (downwards ? sixth : -sixth)}\n Q ${start.x + third + sixth},${end.y} ${start.x + third + third},${end.y}\n L ${end.x},${end.y}\n `;\n};\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport interface CurvyArrowProps {\n start: HTMLElement;\n end: HTMLElement;\n isActive?: boolean;\n debug?: boolean;\n host: HTMLElement;\n}\n\nconst getPointsInHostCoordSystem = (host: HTMLElement, start: HTMLElement, end: HTMLElement): [Point, Point] => {\n const hostRect = host.getBoundingClientRect();\n const startRect = start.getBoundingClientRect();\n const endRect = end.getBoundingClientRect();\n // переводим в систему координат хоста\n return [\n {\n x: startRect.x - hostRect.x + startRect.width,\n y: startRect.y - hostRect.y,\n },\n {\n x: endRect.x - hostRect.x,\n y: endRect.y - hostRect.y,\n },\n ];\n};\n\nconst getActualPointsWithBias = (start: Point, end: Point, biasYstart: number, biasYend: number): [Point, Point] => {\n return [\n {\n x: 0,\n y: biasYstart + start.y,\n },\n { x: end.x - start.x, y: end.y - start.y + biasYend + start.y },\n ];\n};\n\nconst CurvyArrow: FC = ({ host, start, end, isActive }) => {\n const [Hstart, Hend] = getPointsInHostCoordSystem(host, start, end);\n const [startWithBias, endWithBias] = getActualPointsWithBias(\n Hstart,\n Hend,\n start.getBoundingClientRect().height / 2,\n end.getBoundingClientRect().height / 2\n );\n const height = useMemo(() => host.getBoundingClientRect().height, [host]);\n const width = endWithBias.x + 10; // с запасом чтобы было видно circle\n\n const d = svgPath(startWithBias, endWithBias);\n\n useEffect(() => {\n host.style.position = 'relative';\n }, [host]);\n\n return createPortal(\n \n \n \n \n \n ,\n host\n );\n};\n\nexport default CurvyArrow;\n","// extracted by css-extract-rspack-plugin\nexport default {\"target-list\":\"UvJZqrF___target-list\",\"targetList\":\"UvJZqrF___target-list\",\"source\":\"dUaQv2A___source\"};","import { useEffect, useRef, useState, FC, useCallback } from 'react';\n\nimport { GridColumn, GridRow, useBreakpoint } from '@hh.ru/magritte-ui';\nimport { useSelectorNonNullable } from '@hh.ru/redux-create-reducer';\n\nimport getDataQa from 'src/utils/getDataQa';\nimport CardProfessionGraph from 'src/widgets/CareerTrack/CardProfessionGraph';\nimport CurvyArrow, { CurvyArrowProps } from 'src/widgets/CareerTrack/CurvyArrow';\nimport { getTagStyleByIndex } from 'src/widgets/CareerTrack/utils';\n\nimport styles from './styles.less';\n\ninterface GraphCareerTrackProps {\n selectedProfessionIndex: number | null;\n onSelectProfession: (index: number | null) => void;\n}\n\nconst DATA_QA_BLOCK = 'career-graph';\n\nconst GraphCareerTrack: FC = ({ selectedProfessionIndex, onSelectProfession }) => {\n const sourceRef = useRef(null);\n const hostRef = useRef(null);\n const targetRefs = useRef([]);\n const [arrowListProps, setArrowListProps] = useState([]);\n\n const { isXS, isS } = useBreakpoint();\n const isMobile = isXS || isS;\n\n const { sourceProfession, targetProfessionList } = useSelectorNonNullable((state) => state.widgetCareerTrack);\n\n const handleRecalc = useCallback(() => {\n if (!sourceRef.current || !hostRef.current || !targetRefs.current) {\n return;\n }\n setArrowListProps(\n targetRefs.current.map(\n (ref) =>\n ({\n start: sourceRef.current,\n host: hostRef.current,\n end: ref,\n }) as CurvyArrowProps\n )\n );\n }, []);\n\n useEffect(() => {\n handleRecalc();\n }, [handleRecalc]);\n\n const handleTargetClick = (i: number) => {\n if (selectedProfessionIndex === i) {\n onSelectProfession(null);\n return;\n }\n onSelectProfession(i);\n };\n\n useEffect(() => {\n window.addEventListener('resize', handleRecalc);\n window.addEventListener('scroll', handleRecalc);\n\n return () => {\n window.removeEventListener('resize', handleRecalc);\n window.removeEventListener('scroll', handleRecalc);\n };\n }, [handleRecalc]);\n\n return (\n
\n \n \n
\n \n
\n
\n \n {!isMobile &&\n targetProfessionList.map(\n (_, i) =>\n arrowListProps[i] && (\n \n )\n )}\n \n \n
\n {targetProfessionList.map((target, i) => (\n (targetRefs.current[i] = ref!)}\n checked={selectedProfessionIndex === i}\n tagStyle={getTagStyleByIndex(targetProfessionList.length, i)}\n onChange={() => handleTargetClick(i)}\n probability={target.probability}\n profession={target.profession}\n data-qa={getDataQa(DATA_QA_BLOCK, 'target', target.profession.id)}\n />\n ))}\n
\n
\n
\n
\n );\n};\n\nexport default GraphCareerTrack;\n","// extracted by css-extract-rspack-plugin\nexport default {\"container\":\"hCszbtX___container\",\"header\":\"pup9D_N___header\",\"sidebar\":\"Lulbson___sidebar\",\"content\":\"Qcl6ZvW___content\",\"carousel-courses-title\":\"zYHO4oY___carousel-courses-title\",\"carouselCoursesTitle\":\"zYHO4oY___carousel-courses-title\"};","import { useState } from 'react';\n\nimport professionTrackButtonClick from '@hh.ru/analytics-js-events/build/career_platform/profession/profession_track_button_click';\nimport { translation, format, TranslatedComponent } from '@hh.ru/front-static-app';\nimport { GridColumn, GridRow, Title, useBreakpoint } from '@hh.ru/magritte-ui';\nimport { useSelectorNonNullable } from '@hh.ru/redux-create-reducer';\n\nimport EmptyStateCareerTrack from 'src/components/EmptyState/EmptyStateCareerTrack';\nimport getDataQa from 'src/utils/getDataQa';\n\nimport AccordionCareerTrack from 'src/widgets/CareerTrack/AccordionCareerTrack';\nimport BottomsheetProfession from 'src/widgets/CareerTrack/BottomsheetProfession';\nimport CardProfession from 'src/widgets/CareerTrack/CardProfession';\nimport CarouselCourseselPrograms from 'src/widgets/CareerTrack/CarouselCourses';\nimport GraphCareerTrack from 'src/widgets/CareerTrack/GraphCareerTrack';\n\nimport styles from './styles.less';\n\nconst TrlKeys = {\n title: 'career-platform.widgets.careerTrack.title',\n description: 'career-platform.widgets.careerTrack.description',\n carouselCoursesTitle: 'career-platform.widgets.careerTrack.carouselCourses.title',\n};\n\nconst DATA_QA_BLOCK = 'career-track';\n\nconst CareerTrack: TranslatedComponent = ({ trls }) => {\n const careerTrack = useSelectorNonNullable((state) => state.widgetCareerTrack);\n const [selectedProfessionIndex, setSelectedProfessionIndex] = useState(null);\n\n const { isXS, isS } = useBreakpoint();\n const isMobile = isXS || isS;\n\n const targetProfession =\n selectedProfessionIndex !== null ? careerTrack?.targetProfessionList[selectedProfessionIndex] : null;\n\n if (!careerTrack?.sourceProfession || !careerTrack.targetProfessionList.length) {\n return ;\n }\n\n const handleSelectProfession = (index: number | null) => {\n if (typeof index === 'number') {\n const targetProfession = careerTrack.targetProfessionList[index];\n professionTrackButtonClick({\n professionId: targetProfession.profession.id,\n professionName: targetProfession.profession.name,\n salaryFrom: targetProfession.salary.from,\n salaryTo: targetProfession.salary.to,\n streamName: targetProfession.profession.stream.name,\n });\n }\n setSelectedProfessionIndex(index);\n };\n\n return (\n
\n {isMobile && (\n setSelectedProfessionIndex(null)}\n />\n )}\n
\n \n {trls[TrlKeys.title]}\n \n
\n \n \n
\n {isMobile && }\n \n
\n
\n \n \n \n
\n {!isMobile && targetProfession && !!targetProfession.courses.length && (\n
\n
\n \n {format(trls[TrlKeys.carouselCoursesTitle], {\n '{0}': targetProfession.profession.name,\n })}\n \n
\n \n
\n )}\n
\n );\n};\n\nexport default translation(CareerTrack);\n"],"names":["TrlKeys","EmptyStateCourses","_ref","trls","_jsx","EmptyStateTemplate","title","getDataQa","displayName","translation","description","children","className","styles","_jsxs","Title","size","Element","alignment","handleClick","window","location","reload","EmptyState","isMobile","useBreakpoint","_Fragment","href","EMAIL_SUPPORT","VSpacing","default","gteS","Button","mode","onClick","stretched","polarToCartesian","centerX","centerY","radius","angleInDegrees","angleInRadians","Math","PI","x","cos","y","sin","buildArc","startAngle","endAngle","start","end","largeArcFlag","join","ProgressCircle","style","percent","circleRef","circleInView","useInView","triggerOnce","threshold","buildArgXY","classes","classNames","circle","ref","width","height","circleInner","xmlns","viewBox","fill","circleBase","d","strokeWidth","strokeLinecap","circleIndicator","pathLength","strokeDashoffset","strokeDasharray","offsetTop","addHandlerClick","arguments","length","undefined","useEffect","handleScrollToAnchor","anchorName","node","document","getElementById","scrollTo","behavior","top","hash","replace","e","target","tagName","toLowerCase","anchor","getAttribute","startsWith","preventDefault","history","pushState","addEventListener","removeEventListener","EmptyStateCareerTrack","AccordionCareerTrack","isXS","isS","Accordion","borderRadius","padding","Text","typography","getTagStyleByIndex","i","CardProfession","selectedProfessionIndex","hideButtons","targetProfessions","useSelectorNonNullable","state","widgetCareerTrack","targetProfessionList","targetProfession","professionId","sourceProfession","id","cardRef","useElementShown","professionInfoCardElementShown","professionCardId","profession","Card","showBorder","Tag","probability","name","getCurrencyRange","salary","from","to","currency","format","grade","SPALink","getProfessionRouteHref","section","isSeoLink","handleClickToCourses","professionInfoCardButtonClick","buttonName","handleClickToProfession","skill","SECOND","one","some","many","MINUTE","HOURS","DAYS","WEEKS","MONTHS","YEARS","CardEdProgramSmall","_edProgram$stream","_edProgram$provider","_edProgram$provider2","_edProgram$profession","edProgram","isCourseByProfession","purpose","EdProgramCoursePurpose","cardCourseElementShown","courseName","streamName","stream","providerId","provider","providerName","cardType","priceDetails","JSON","stringify","isEdProgramTypeFollowLink","CheckableCard","checked","readOnly","toneHover","type","cardEdProgramButtonLinkExternalHandler","labelDataQa","getKebabCase","CardEdProgramLogoPromoCompany","iconSrc","icon","CardEdProgramBreadcrumbsInfo","items","getBreadcrumbsInfo","result","level","filter","Boolean","push","duration","pluralize","count","value","useCount","CarouselCourseselPrograms","CheckableCardScrollableContainer","map","course","BottomsheetProfession","onClose","careerTrack","useMemo","visibleBottomsheet","setVisibleBottomsheet","useState","handleCloseBottomsheet","setTimeout","BottomSheet","visible","footer","BottomSheetFooter","courses","_generatedConstant","onChange","sticky","tagStyle","props","flexible","forwardRef","CurvyArrow","host","isActive","Hstart","Hend","getPointsInHostCoordSystem","hostRect","getBoundingClientRect","startRect","endRect","startWithBias","endWithBias","getActualPointsWithBias","biasYstart","biasYend","svgPath","widthDiff","abs","heightDiff","third","sixth","downwards","position","createPortal","left","min","cx","cy","r","DATA_QA_BLOCK","GraphCareerTrack","onSelectProfession","sourceRef","useRef","hostRef","targetRefs","arrowListProps","setArrowListProps","handleRecalc","useCallback","current","GridRow","GridColumn","xs","s","m","xl","flexibleContent","CardProfessionGraph","_","handleTargetClick","CareerTrack","setSelectedProfessionIndex","dataQaTitle","dataQaDescription","l","index","professionTrackButtonClick","professionName","salaryFrom","salaryTo"],"mappings":"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"}