{"version":3,"file":"ApplicationProcessSectionBlock.chunk.6681321a83cdb1b9d7a6.js","mappings":"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","sources":["webpack://Kristiania.Web/./Features/StudyPage/Campus/Sections/ApplicationProcessSection/ApplicationProcessSection.tsx","webpack://Kristiania.Web/./Features/StudyPage/Campus/Sections/ApplicationProcessSection/ApplicationProcessSection.module.css?2645","webpack://Kristiania.Web/./Features/Blocks/ApplicationProcessSectionBlock/View/ApplicationProcessSectionBlock.tsx","webpack://Kristiania.Web/./Features/Blocks/CardsSectionBlock/View/Utils/CardsSectionBlockUtils.ts","webpack://Kristiania.Web/./Features/Layouts/Components/PageSection/PageSection.tsx","webpack://Kristiania.Web/./Features/Layouts/Components/PageSection/PageSection.module.css?557e","webpack://Kristiania.Web/./Features/Layouts/Components/PageSectionHeading/PageSectionHeading.tsx","webpack://Kristiania.Web/./Features/Layouts/Components/PageSectionHeading/PageSectionHeading.module.css?ed34","webpack://Kristiania.Web/./Features/Partials/CardsSection/CardsSection.module.css?4acb","webpack://Kristiania.Web/./Features/Partials/Card/Card.module.css?d9ae","webpack://Kristiania.Web/./Features/Partials/Card/Card.tsx","webpack://Kristiania.Web/./Features/Partials/CardsSection/CardsSectionTabs/CardsSectionTabs.tsx","webpack://Kristiania.Web/./Features/Partials/CardsSection/CardsSectionTabs/CardsSectionTabs.module.css?4e33","webpack://Kristiania.Web/./Features/Partials/CardsSection/CardsSection.tsx","webpack://Kristiania.Web/./Features/Partials/TabList/Tab.tsx","webpack://Kristiania.Web/./Features/Partials/TabList/TabList.tsx","webpack://Kristiania.Web/./Features/Partials/Tabs/StyledTabs.module.css?b512","webpack://Kristiania.Web/./Features/Partials/Tabs/StyledTabs.tsx","webpack://Kristiania.Web/./Features/Partials/Tabs/TabPanel.tsx","webpack://Kristiania.Web/./Features/Partials/Tabs/Tabs.tsx","webpack://Kristiania.Web/./Features/Partials/Tabs/Tabs.module.css?c8db","webpack://Kristiania.Web/./Features/Partials/Tabs/tabUtils.ts","webpack://Kristiania.Web/./Features/Utils/MouseButton.ts","webpack://Kristiania.Web/./Features/Utils/Hooks/useClickProxyAllowingTextSelection.ts","webpack://Kristiania.Web/./Features/Utils/Hooks/useIsInView.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { CardsSectionProps } from '~/Features/Partials/CardsSection/CardsSection';\nimport { CardsSection } from '~/Features/Partials/CardsSection/CardsSection';\nimport type { StrictOmit } from '~/Partials/Utils/typeUtils';\nimport styles from './ApplicationProcessSection.module.css';\n\nexport interface ApplicationProcessSectionProps extends StrictOmit<CardsSectionProps, 'colorVariant' | 'className'> {\n id: string;\n}\n\nexport const ApplicationProcessSection: React.FC<ApplicationProcessSectionProps> = props => (\n <CardsSection {...props} colorVariant=\"light\" className={styles.ApplicationProcessSection} />\n);\n","// extracted by mini-css-extract-plugin\nexport default {\"ApplicationProcessSection\":\"uhYaMSQDrGni1cKDFsLT\"};","import * as React from 'react';\nimport type { ApplicationProcessSectionBlockViewModel } from '../ViewModel/ApplicationProcessSectionBlockViewModel.csharp';\nimport { mapTabs } from '~/Blocks/CardsSectionBlock/View/Utils/CardsSectionBlockUtils';\nimport { ApplicationProcessSection } from '~/Features/StudyPage/Campus/Sections/ApplicationProcessSection/ApplicationProcessSection';\n\nexport const ApplicationProcessSectionBlock: React.FC<ApplicationProcessSectionBlockViewModel> = props => {\n const { tabs, ...otherProps } = props;\n\n return <ApplicationProcessSection {...otherProps} tabs={mapTabs(tabs)} />;\n};\n","import type { CardsSectionTabBlockViewModel } from '../../ViewModel/CardsSectionTab/CardsSectionTabBlockViewModel.csharp';\nimport type { CardsSectionTabItemBlockViewModel } from '../../ViewModel/CardsSectionTabItem/CardsSectionTabItemBlockViewModel.csharp';\nimport type { CardProps } from '~/Partials/Card/Card';\nimport type { CardsSectionTabContent } from '~/Partials/CardsSection/CardsSectionTabs/CardsSectionTabs';\n\nexport const mapTabs = (tabs: CardsSectionTabBlockViewModel[]): CardsSectionTabContent[] => {\n const mapTabItems = (items: CardsSectionTabItemBlockViewModel[]): CardProps[] =>\n items.map(item => ({\n heading: item.heading,\n content: item.content,\n link: item.link,\n }));\n\n return tabs.map(tab => ({\n heading: tab.heading,\n items: mapTabItems(tab.items),\n }));\n};\n","import * as React from 'react';\nimport styles from './PageSection.module.css';\n\nexport interface PageSectionProps {\n id?: string;\n className?: string;\n}\n\nexport const PageSection: React.FC<React.PropsWithChildren<PageSectionProps>> = props => {\n const { id, className, children } = props;\n\n return (\n <section id={id} className={className}>\n <div className={styles.Wrapper}>\n <div className={styles.Inner}>{children}</div>\n </div>\n </section>\n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"Wrapper\":\"Fov3KMlE7osNR74JI44t\",\"Inner\":\"Wf6h4ZdN2S9XvO6RoMCf\"};","import classNames from 'classnames';\nimport React from 'react';\nimport type { HtmlString } from '~/Features/Types/HtmlString.csharp';\nimport { HtmlHeading } from '~/Partials/Controls/HtmlHeading';\nimport styles from './PageSectionHeading.module.css';\n\ninterface PageSectionHeadingProps {\n heading: HtmlString;\n className?: string;\n}\n\nexport const PageSectionHeading: React.FC<PageSectionHeadingProps> = props => {\n const { heading, className } = props;\n\n return <HtmlHeading type=\"h2\" className={classNames(styles.PageSectionHeading, className)} html={heading} />;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"PageSectionHeading\":\"FrR9v_ssranAjR5kDzwF\"};","// extracted by mini-css-extract-plugin\nexport default {\"CardsSection\":\"NnFtz8yGDNGgm4iXtNTA\",\"ListWrapper\":\"UPddEtslXEXlHwduN5H6\",\"Heading\":\"p7xl62mHk9cu52oWqtzj\",\"TeaserWrapper\":\"Qr_bydYPAMBGRcTc8g3A\",\"Teaser\":\"Q4l24cbBS_P0H6xU1dCm\",\"Variant--light\":\"mNPOnqSYSg5fB3hFZFBL\",\"Variant--dark\":\"G8iAg5OiXLnkW0D37PLf\"};","// extracted by mini-css-extract-plugin\nexport default {\"Card\":\"fW7BjZXoaXbSWeqUTxGB\",\"Link\":\"geY8iJSFnAov0Sq77FMv\",\"Heading\":\"eALIYeXTWaMdoAl95ChI\",\"Content\":\"ngto1lep4Jqeq0RnHHLJ\",\"LinkIcon\":\"us4kACIbMAE6qyr9G6zl\",\"Variant--rounded\":\"LmkNaNqgeL9tRmSZSQEw\",\"Variant--light\":\"_p6utBGm9dNd5z3_Zqa2\",\"Variant--dark\":\"YwtOaa5HCKBkdE7Lk_UF\"};","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useTheme } from '~/Features/Layouts/Theme/Context/ThemeContextProvider';\nimport type { HtmlString } from '~/Features/Types/HtmlString.csharp';\nimport { HtmlDiv } from '~/Partials/Controls/HtmlDiv';\nimport { HtmlHeading } from '~/Partials/Controls/HtmlHeading';\nimport { Link } from '~/Partials/Link/Link';\nimport { LinkType } from '~/Partials/Link/LinkType.csharp';\nimport type { LinkViewModel } from '~/Partials/Link/LinkViewModel.csharp';\nimport { SvgIcon } from '~/Partials/SvgIcon/SvgIcon';\nimport { useClickProxyAllowingTextSelection } from '~/Utils/Hooks/useClickProxyAllowingTextSelection';\nimport type { Theme } from '~/Utils/Theme';\nimport styles from './Card.module.css';\nimport type { CardColorVariant } from './CardColorVariant';\n\nexport interface CardProps {\n link: LinkViewModel;\n heading?: HtmlString;\n content?: HtmlString;\n theme?: Pick<Theme, 'withRoundedCorners'>;\n colorVariant?: CardColorVariant;\n className?: string;\n contentClassName?: string;\n}\n\nexport const Card: React.FC<CardProps> = props => {\n const contextualTheme = useTheme();\n const {\n heading,\n content,\n link,\n className,\n contentClassName,\n theme = contextualTheme,\n colorVariant = 'light',\n } = props;\n\n const { clickableRef, onProxyMouseDown, onProxyMouseUp } = useClickProxyAllowingTextSelection<HTMLAnchorElement>();\n\n const { withRoundedCorners } = theme;\n const richtextVariant = colorVariant === 'light' ? 'dark' : 'light';\n\n return (\n <div\n role=\"none\"\n onMouseDown={onProxyMouseDown}\n onMouseUp={onProxyMouseUp}\n tabIndex={-1}\n className={classNames(\n styles.Card,\n styles[`Variant--${colorVariant}`],\n withRoundedCorners && styles['Variant--rounded'],\n className\n )}\n >\n {heading && <HtmlHeading type=\"h3\" html={heading} className={styles.Heading} />}\n {content && (\n <HtmlDiv\n className={classNames(\n styles.Content,\n 'RichtextContent',\n `RichtextContent--${richtextVariant}`,\n contentClassName\n )}\n html={content}\n />\n )}\n <Link {...link} showIsExternal={false} ref={clickableRef} type={LinkType.Clear} className={styles.Link}>\n <span className=\"visuallyHidden\">{link.label}</span>\n <SvgIcon iconName=\"arrow-right-circle\" className={styles.LinkIcon} />\n </Link>\n </div>\n );\n};\n","import classNames from 'classnames';\nimport first from 'lodash/first';\nimport uniqueId from 'lodash/uniqueId';\nimport * as React from 'react';\nimport type { CardsSectionColorVariant } from '../CardsSectionColorVariant';\nimport type { CardProps } from '~/Partials/Card/Card';\nimport { Card } from '~/Partials/Card/Card';\nimport { List } from '~/Partials/List/List';\nimport type { ScrollableTabsTranslations } from '~/Partials/Tabs/StyledTabs';\nimport { StyledTabs } from '~/Partials/Tabs/StyledTabs';\nimport type { TabsItemProps } from '~/Partials/Tabs/Tabs';\nimport styles from './CardsSectionTabs.module.css';\n\nexport interface CardsSectionTabContent {\n heading: string;\n items: Omit<CardProps, 'colorVariant'>[];\n}\n\nexport interface CardsSectionTabsProps {\n label: string;\n tabContents: CardsSectionTabContent[];\n translations: ScrollableTabsTranslations;\n colorVariant?: CardsSectionColorVariant;\n listWrapperClassName?: string;\n}\n\nexport const CardsSectionTabs: React.FC<CardsSectionTabsProps> = props => {\n const { label, tabContents, translations, listWrapperClassName, colorVariant = 'light' } = props;\n\n const tabs: TabsItemProps[] = tabContents.map(content => ({\n tabKey: uniqueId('tab__'),\n tabName: content.heading,\n tabContent: (\n <List\n className={styles.TabContent}\n items={content.items}\n renderItem={item => (\n <li key={uniqueId('tabItem__')}>\n <Card\n className={styles.Card}\n contentClassName={styles.CardContent}\n {...item}\n colorVariant={colorVariant}\n />\n </li>\n )}\n />\n ),\n }));\n\n const firstItem = first(tabs);\n\n if (!firstItem) {\n throw new Error('At least one tab has to be present');\n }\n\n return (\n <StyledTabs\n translations={translations}\n tabsListClassName={styles.TabList}\n selectedTab={firstItem.tabKey}\n tabs={tabs}\n colorVariant={colorVariant}\n name={label}\n TabListWrapper={tabListWrapperProps => (\n <div className={classNames(styles.ListWrapper, listWrapperClassName)}>\n {tabListWrapperProps.children}\n </div>\n )}\n />\n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"ListWrapper\":\"zcuZKWJNQG9sdTxbSyML\",\"TabList\":\"QqfABz0jv7crGhqvIJlQ\",\"TabContent\":\"VphcdOhVwpXxhvvPmAiw\",\"Card\":\"lPTNRKMIaRtTkcBpsbyw\",\"CardContent\":\"ltzsAOJkolz790xTYqeY\"};","import classNames from 'classnames';\nimport * as React from 'react';\nimport { PageSection } from '~/Features/Layouts/Components/PageSection/PageSection';\nimport { PageSectionHeading } from '~/Features/Layouts/Components/PageSectionHeading/PageSectionHeading';\nimport type { HtmlString } from '~/Features/Types/HtmlString.csharp';\nimport { HtmlDiv } from '~/Partials/Controls/HtmlDiv';\nimport styles from './CardsSection.module.css';\nimport type { CardsSectionColorVariant } from './CardsSectionColorVariant';\nimport type { CardsSectionTabContent, CardsSectionTabsProps } from './CardsSectionTabs/CardsSectionTabs';\nimport { CardsSectionTabs } from './CardsSectionTabs/CardsSectionTabs';\n\nexport interface CardsSectionProps extends Pick<CardsSectionTabsProps, 'translations'> {\n heading: HtmlString;\n tabsLabel: string;\n tabs: CardsSectionTabContent[];\n id?: string;\n teaser?: HtmlString;\n colorVariant?: CardsSectionColorVariant;\n className?: string;\n}\n\nexport const CardsSection: React.FC<CardsSectionProps> = props => {\n const { id, heading, teaser, tabsLabel, tabs, translations, colorVariant = 'light', className } = props;\n const richtextVariant = colorVariant === 'light' ? 'dark' : 'light';\n\n return (\n <PageSection id={id} className={classNames(styles.CardsSection, styles[`Variant--${colorVariant}`], className)}>\n {heading && <PageSectionHeading heading={heading} className={styles.Heading} />}\n {teaser && (\n <div className={styles.TeaserWrapper}>\n <HtmlDiv\n className={classNames(styles.Teaser, 'RichtextContent', `RichtextContent--${richtextVariant}`)}\n html={teaser}\n />\n </div>\n )}\n {tabs.length > 0 && (\n <CardsSectionTabs\n label={tabsLabel}\n tabContents={tabs}\n translations={translations}\n colorVariant={colorVariant}\n listWrapperClassName={styles.ListWrapper}\n />\n )}\n </PageSection>\n );\n};\n","import * as React from 'react';\nimport type { ReactNode } from 'react';\nimport { Button } from '../Button/Button';\nimport { buildTabId, buildTabPanelId } from '../Tabs/tabUtils';\nimport { scrollToElement } from '~/Features/Partials/Utils/utils';\n\nexport type TabKey = React.Key;\n\ninterface TabProps {\n children: ReactNode;\n tabKey: TabKey;\n selected: boolean;\n onSelect: (tabKey: TabKey) => void;\n className?: string;\n}\n\nexport const Tab: React.FC<React.PropsWithChildren<TabProps>> = props => {\n const { children, tabKey, selected, onSelect, className } = props;\n\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n const hasUserInteractedRef = React.useRef(false);\n\n const id = buildTabId(tabKey);\n const panelId = buildTabPanelId(tabKey);\n\n React.useEffect(() => {\n if (!hasUserInteractedRef.current) {\n return;\n }\n\n hasUserInteractedRef.current = false;\n\n if (selected && buttonRef.current) {\n scrollToElement(buttonRef.current, 'smooth', 'nearest', 'center');\n }\n }, [selected]);\n\n const onClick = () => {\n hasUserInteractedRef.current = true;\n onSelect(tabKey);\n };\n\n return (\n <Button\n id={id}\n ref={buttonRef}\n onClick={onClick}\n key={id}\n role=\"tab\"\n aria-selected={selected}\n aria-controls={panelId}\n className={className}\n >\n {children}\n </Button>\n );\n};\n","import * as React from 'react';\nimport type { ReactNode } from 'react';\nimport { tabbable } from 'tabbable';\nimport { Key } from 'ts-keycode-enum';\nimport { scrollToElement } from '~/Partials/Utils/utils';\n\ninterface TabListProps {\n children: ReactNode;\n name: string;\n id?: string;\n className?: string;\n ref?: React.Ref<HTMLDivElement>;\n}\n\nconst handleFocusChange = (event: React.KeyboardEvent, element: HTMLElement) => {\n element.focus();\n scrollToElement(element, 'smooth', 'nearest', 'center');\n\n // Disable default scroll behavior on arrow keys\n event.preventDefault();\n};\n\nexport const TabList = React.forwardRef<HTMLDivElement, React.PropsWithChildren<TabListProps>>((props, ref) => {\n const { children, name, id, className } = props;\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.keyCode === Key.LeftArrow || e.keyCode === Key.RightArrow) {\n if (typeof ref !== 'object' || ref === null) {\n throw new Error('Callback refs are not supported.');\n }\n\n if (!ref.current) {\n return;\n }\n\n const tabbableDescendants = tabbable(ref.current);\n const currentFocusedElement = tabbableDescendants.find(el => el === document.activeElement);\n\n if (currentFocusedElement && tabbableDescendants.length > 1) {\n if (e.keyCode === Key.LeftArrow) {\n if (currentFocusedElement.previousSibling) {\n handleFocusChange(e, currentFocusedElement.previousSibling as HTMLElement);\n } else {\n handleFocusChange(e, tabbableDescendants[tabbableDescendants.length - 1] as HTMLElement);\n }\n } else if (e.keyCode === Key.RightArrow) {\n if (currentFocusedElement.nextSibling) {\n handleFocusChange(e, currentFocusedElement.nextSibling as HTMLElement);\n } else {\n handleFocusChange(e, tabbableDescendants[0] as HTMLElement);\n }\n }\n }\n }\n };\n\n return (\n // eslint-disable-next-line jsx-a11y/interactive-supports-focus\n <div role=\"tablist\" id={id} ref={ref} className={className} onKeyDown={handleKeyDown} aria-label={name}>\n {children}\n </div>\n );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"TabPanel\":\"pIVKSl48xvxhvIFaVOWG\",\"TabListWrapper\":\"pvts98xa0OkTLpIU1H_7\",\"TabList\":\"jp3mlTjnWllHYH08nQlW\",\"TabList--rounded\":\"Wx5bXIVB15ZoMKXfA5H5\",\"Tab\":\"zbh0qfHfBsYc5dxA3h5a\",\"Tab--selected\":\"Ny2XmdzuJKxD96WqEGuz\",\"Arrow\":\"eWHGi6Mny_JULzuSiA9c\",\"Arrow--prev\":\"nKRCOZxozB9q4kVkNbC9\",\"Arrow--next\":\"bPqgZ6BxIluZSVVXRd91\",\"Variant--light\":\"dRTaaYN3ZUOGkvUTID_V\",\"ArrowIcon\":\"o7btmPNnqHIC4HVcB9dW\",\"Variant--dark\":\"k1IqHAN_tTjB9u6C3hsy\"};","import classNames from 'classnames';\nimport * as React from 'react';\nimport { Button } from '../Button/Button';\nimport { SvgIcon } from '../SvgIcon/SvgIcon';\nimport { useTheme } from '~/Features/Layouts/Theme/Context/ThemeContextProvider';\nimport { ButtonType } from '~/Partials/Button/ButtonType.csharp';\nimport { useIsInView } from '~/Utils/Hooks/useIsInView';\nimport styles from './StyledTabs.module.css';\nimport type { TabsProps } from './Tabs';\nimport { Tabs } from './Tabs';\n\ninterface StyledTabsBaseProps extends TabsProps {\n colorVariant?: 'light' | 'dark';\n}\n\nexport interface ScrollableTabsTranslations {\n scrollStart: string;\n scrollEnd: string;\n}\n\ninterface StyledTabsWithArrowsProps extends StyledTabsBaseProps {\n translations: ScrollableTabsTranslations;\n arrows?: true;\n}\n\ninterface StyledTabsWithoutArrowsProps extends StyledTabsBaseProps {\n translations: never;\n arrows: false;\n}\n\nexport type StyledTabsProps = StyledTabsWithArrowsProps | StyledTabsWithoutArrowsProps;\n\nexport const StyledTabs: React.FC<React.PropsWithChildren<StyledTabsProps>> = props => {\n const theme = useTheme();\n const {\n className,\n tabsListClassName,\n colorVariant = 'light',\n arrows = true,\n translations,\n tabs,\n TabListWrapper: ParentTabListWrapper = React.Fragment,\n ...restProps\n } = props;\n\n const { withRoundedCorners } = theme;\n\n const tabListRef = React.useRef<HTMLDivElement>(null);\n\n const TabListWrapper = React.useMemo<React.FC<React.PropsWithChildren>>(() => {\n if (!arrows) {\n return ParentTabListWrapper;\n }\n\n return tabListWrapperProps => {\n const { children } = tabListWrapperProps;\n\n return (\n <ParentTabListWrapper>\n <TabListWrapperWithArrows translations={translations} tabListRef={tabListRef}>\n {children}\n </TabListWrapperWithArrows>\n </ParentTabListWrapper>\n );\n };\n }, [ParentTabListWrapper, translations, arrows, tabs]);\n\n return (\n <Tabs\n {...restProps}\n tabs={tabs.map(tab => ({\n ...tab,\n tabClassName: classNames(styles.Tab, tab.tabClassName),\n tabSelectedClassName: classNames(styles['Tab--selected'], tab.tabSelectedClassName),\n }))}\n className={classNames(styles[`Variant--${colorVariant}`], className)}\n tabsListClassName={classNames(\n styles.TabList,\n withRoundedCorners && styles['TabList--rounded'],\n tabsListClassName\n )}\n panelClassName={styles.TabPanel}\n tabListRef={tabListRef}\n TabListWrapper={TabListWrapper}\n />\n );\n};\n\ninterface TabListWrapperWithArrowsProps extends Pick<StyledTabsWithArrowsProps, 'translations'> {\n tabListRef: React.RefObject<HTMLDivElement>;\n}\n\nconst TabListWrapperWithArrows: React.FC<React.PropsWithChildren<TabListWrapperWithArrowsProps>> = props => {\n const { children, tabListRef, translations } = props;\n\n const startRef = React.useRef<Element>();\n const endRef = React.useRef<Element>();\n\n React.useEffect(() => {\n if (!tabListRef.current) {\n return;\n }\n\n const tabListChildren = Array.from(tabListRef.current.children);\n const length = tabListChildren.length;\n\n if (length > 0) {\n startRef.current = tabListChildren[0];\n endRef.current = tabListChildren[length - 1];\n }\n }, [tabListRef]);\n\n const observerOptions = {\n threshold: 0.99,\n root: tabListRef.current,\n };\n\n const isStartVisible = useIsInView(startRef, observerOptions);\n const isEndVisible = useIsInView(endRef, observerOptions);\n\n const handleScrollEnd = () => {\n if (tabListRef.current) {\n tabListRef.current.scrollLeft = tabListRef.current.scrollWidth;\n }\n };\n\n const handleScrollStart = () => {\n if (tabListRef.current) {\n tabListRef.current.scrollLeft = 0;\n }\n };\n\n const renderArrowScrollStart = () => (\n <Button\n onClick={handleScrollStart}\n type={ButtonType.Clear}\n aria-label={translations.scrollStart}\n className={classNames(styles.Arrow, styles['Arrow--prev'])}\n disabled={isStartVisible}\n >\n <SvgIcon iconName=\"chevron-left\" className={styles.ArrowIcon} />\n </Button>\n );\n\n const renderArrowScrollEnd = () => (\n <Button\n onClick={handleScrollEnd}\n type={ButtonType.Clear}\n aria-label={translations.scrollEnd}\n className={classNames(styles.Arrow, styles['Arrow--next'])}\n disabled={isEndVisible}\n >\n <SvgIcon iconName=\"chevron-right\" className={styles.ArrowIcon} />\n </Button>\n );\n\n return (\n <div className={styles.TabListWrapper}>\n {renderArrowScrollStart()}\n {children}\n {renderArrowScrollEnd()}\n </div>\n );\n};\n","import * as React from 'react';\nimport type { TabKey } from '~/Partials/TabList/Tab';\nimport { buildTabId, buildTabPanelId } from '~/Partials/Tabs/tabUtils';\n\nexport interface TabPanelProps {\n tabKey: TabKey;\n className?: string;\n}\n\nexport const TabPanel: React.FC<React.PropsWithChildren<TabPanelProps>> = props => {\n const { tabKey, className, children } = props;\n\n return (\n <div id={buildTabPanelId(tabKey)} className={className} role=\"tabpanel\" aria-labelledby={buildTabId(tabKey)}>\n {children}\n </div>\n );\n};\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport type { ReactNode } from 'react';\nimport type { TabKey } from '../TabList/Tab';\nimport { Tab } from '../TabList/Tab';\nimport { TabList } from '../TabList/TabList';\nimport { TabPanel } from './TabPanel';\nimport styles from './Tabs.module.css';\n\nexport interface TabsItemProps {\n tabKey: TabKey;\n tabName: string;\n tabContent: ReactNode;\n tabClassName?: string;\n tabSelectedClassName?: string;\n}\n\nexport interface TabsProps {\n name: string;\n selectedTab: TabKey;\n tabs: TabsItemProps[];\n children?: ReactNode;\n onSelect?(tabKey: TabKey): void;\n className?: string;\n tabsListClassName?: string;\n panelsClassName?: string;\n panelClassName?: string;\n TabListWrapper?: React.FC<React.PropsWithChildren>;\n beforeTabs?: ReactNode;\n afterTabs?: ReactNode;\n tabListRef?: React.RefObject<HTMLDivElement>;\n}\n\nexport const Tabs: React.FC<React.PropsWithChildren<TabsProps>> = props => {\n const {\n className,\n tabsListClassName,\n panelsClassName,\n panelClassName,\n tabs,\n selectedTab,\n name,\n onSelect,\n TabListWrapper = React.Fragment,\n tabListRef,\n } = props;\n\n const [currentTab, setCurrentTab] = React.useState(selectedTab || tabs[0].tabKey);\n\n React.useEffect(() => setCurrentTab(selectedTab), [selectedTab]);\n\n const handleSelect = (tabKey: TabKey) => {\n setCurrentTab(tabKey);\n onSelect && onSelect(tabKey);\n };\n\n const isTabSelected = (tabKey: TabKey) => tabKey === currentTab;\n\n const renderTab = (tabProps: TabsItemProps) => {\n const { tabName, tabClassName, tabSelectedClassName, tabKey } = tabProps;\n const isSelected = isTabSelected(tabKey);\n\n return (\n <Tab\n key={tabKey}\n tabKey={tabKey}\n className={classNames(tabClassName, isSelected && tabSelectedClassName)}\n selected={isSelected}\n onSelect={handleSelect}\n >\n {tabName}\n </Tab>\n );\n };\n\n const renderPanel = (tabProps: TabsItemProps) => {\n const { tabContent, tabKey } = tabProps;\n\n return (\n <TabPanel\n key={tabKey}\n tabKey={tabKey}\n className={classNames(panelClassName, !isTabSelected(tabKey) && styles['Panel--inactive'])}\n >\n {tabContent}\n </TabPanel>\n );\n };\n\n const renderTabList = () => (\n <TabList name={name} className={tabsListClassName} ref={tabListRef}>\n {tabs.map(renderTab)}\n </TabList>\n );\n\n return (\n <div className={classNames(className)}>\n <TabListWrapper>{renderTabList()}</TabListWrapper>\n <div className={classNames(styles.Panels, panelsClassName)}>{tabs.map(renderPanel)}</div>\n </div>\n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"Panels\":\"jaWakwTlr083IlabBh3w\",\"Panel--inactive\":\"gtro7ZD8xMPr5ZbrapYm\"};","import type { TabKey } from '~/Partials/TabList/Tab';\nimport { replaceNotFriendlyCharacters } from '~/Partials/Utils/utils';\n\nexport const buildTabId = (tabKey: TabKey) => `tab_${replaceNotFriendlyCharacters(tabKey.toString().toLowerCase())}`;\nexport const buildTabPanelId = (tabKey: TabKey) =>\n `tabPanel_${replaceNotFriendlyCharacters(tabKey.toString().toLowerCase())}`;\n","export const enum MouseButton {\n Left = 0,\n Middle = 1,\n Right = 2,\n}\n","import isEmpty from 'lodash/isEmpty';\nimport * as React from 'react';\nimport { findClosestParent } from '~/Partials/Utils/utils';\nimport { MouseButton } from '~/Utils/MouseButton';\n\nconst isNonEmpty = (selection: Selection | null): selection is Selection => !isEmpty(selection?.toString());\n\nconst isLabel = (element: Element): element is HTMLLabelElement => element.tagName.toLowerCase() === 'label';\n\nconst willBeHandledByAssociatedElement = (eventTarget: Element, clickableElement: HTMLElement) => {\n const nearestLabel = findClosestParent(eventTarget, isLabel);\n\n if (nearestLabel === null) {\n return false;\n }\n\n const associatedElementId = nearestLabel.getAttribute('for');\n\n if (!associatedElementId) {\n return false;\n }\n\n return associatedElementId === clickableElement.id;\n};\n\nconst portalContainerId = 'portal-container';\n\n// Due to event propagation from portal to React tree we have to manually exclude these events.\n// https://github.com/facebook/react/issues/11387\nconst willBubbleOutsideOfPortal = (eventTarget: Node | null, clickableElement: HTMLElement) => {\n let potentialPortalContainer = eventTarget;\n let previouslyCheckedElement: Node | null = null;\n\n while (potentialPortalContainer) {\n if (potentialPortalContainer instanceof HTMLElement && potentialPortalContainer.id === portalContainerId) {\n // If we find a container, we are sure that the previous element is a root element for one of the portals.\n // Then we only check whether the clickable element is part of that particular portal's tree so that\n // multiple portals do not interfere with each other.\n // If previouslyCheckedElement is null it means that event target is portal container itself.\n // Then we treat an event as if it would bubble outside the portal.\n return !previouslyCheckedElement || !previouslyCheckedElement.contains(clickableElement);\n }\n\n previouslyCheckedElement = potentialPortalContainer;\n potentialPortalContainer = potentialPortalContainer.parentElement;\n }\n\n return false;\n};\n\nconst shouldIgnoreEvent = (eventTarget: EventTarget, clickableElement: HTMLElement | null) =>\n clickableElement === null ||\n !(eventTarget instanceof Element) ||\n clickableElement.contains(eventTarget) ||\n willBeHandledByAssociatedElement(eventTarget, clickableElement) ||\n willBubbleOutsideOfPortal(eventTarget, clickableElement);\n\nexport const useClickProxyAllowingTextSelection = <TClickableElement extends HTMLElement>() => {\n const clickableRef = React.useRef<TClickableElement>(null);\n\n const onProxyMouseDown = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (shouldIgnoreEvent(event.target, clickableRef.current)) {\n return;\n }\n\n if (event.button === MouseButton.Left) {\n const userSelection = getSelection();\n\n if (isNonEmpty(userSelection)) {\n userSelection.removeAllRanges();\n }\n }\n\n if (event.button === MouseButton.Middle) {\n event.preventDefault();\n }\n };\n\n const onProxyMouseUp = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (shouldIgnoreEvent(event.target, clickableRef.current)) {\n return;\n }\n\n if (event.button === MouseButton.Left) {\n if (isNonEmpty(getSelection())) {\n return;\n }\n\n clickableRef.current?.click();\n clickableRef.current?.focus();\n }\n\n if (event.button === MouseButton.Middle) {\n const eventCopy = new MouseEvent('click', { button: event.button, bubbles: true });\n\n clickableRef.current?.dispatchEvent(eventCopy);\n }\n };\n\n return { clickableRef, onProxyMouseDown, onProxyMouseUp };\n};\n","import * as React from 'react';\n\nexport function useIsInView(elementRef: React.RefObject<Element | undefined>, initOptions: IntersectionObserverInit) {\n const { threshold = 0, root = null, rootMargin = '0px' } = initOptions;\n\n const [intersectionEntry, setIntersectionEntry] = React.useState<IntersectionObserverEntry>();\n\n React.useEffect(() => {\n const node = elementRef?.current;\n\n if (!node) {\n return;\n }\n\n const updateEntry = ([callbackEntry]: IntersectionObserverEntry[]) => {\n setIntersectionEntry(callbackEntry);\n };\n\n const observer = new IntersectionObserver(updateEntry, {\n threshold,\n root,\n rootMargin,\n });\n\n observer.observe(node);\n\n return () => {\n observer.disconnect();\n };\n }, [root, threshold, rootMargin, elementRef]);\n\n return intersectionEntry?.isIntersecting ?? false;\n}\n"],"names":["ApplicationProcessSection","props","React","CardsSection","_extends","colorVariant","className","ApplicationProcessSectionBlock","tabs","otherProps","_objectWithoutProperties","_excluded","mapTabs","map","tab","heading","items","item","content","link","PageSection","id","children","PageSectionHeading","HtmlHeading","type","classNames","html","Card","contextualTheme","useTheme","contentClassName","theme","clickableRef","onProxyMouseDown","onProxyMouseUp","useClickProxyAllowingTextSelection","withRoundedCorners","richtextVariant","role","onMouseDown","onMouseUp","tabIndex","styles","concat","Heading","HtmlDiv","Content","Link","showIsExternal","ref","LinkType","Clear","label","SvgIcon","iconName","LinkIcon","CardsSectionTabs","tabContents","translations","listWrapperClassName","tabKey","uniqueId","tabName","tabContent","List","renderItem","key","firstItem","first","Error","StyledTabs","tabsListClassName","selectedTab","name","TabListWrapper","tabListWrapperProps","teaser","tabsLabel","TeaserWrapper","Teaser","length","ListWrapper","Tab","selected","onSelect","buttonRef","hasUserInteractedRef","buildTabId","panelId","buildTabPanelId","current","scrollToElement","Button","onClick","handleFocusChange","event","element","focus","preventDefault","TabList","onKeyDown","e","keyCode","Key","LeftArrow","RightArrow","tabbableDescendants","tabbable","currentFocusedElement","find","el","document","activeElement","previousSibling","nextSibling","arrows","ParentTabListWrapper","restProps","tabListRef","TabListWrapperWithArrows","Tabs","_objectSpread","tabClassName","tabSelectedClassName","panelClassName","TabPanel","startRef","endRef","tabListChildren","Array","from","observerOptions","threshold","root","isStartVisible","useIsInView","isEndVisible","handleScrollStart","scrollLeft","ButtonType","scrollStart","Arrow","disabled","ArrowIcon","handleScrollEnd","scrollWidth","scrollEnd","panelsClassName","currentTab","setCurrentTab","handleSelect","isTabSelected","tabProps","isSelected","replaceNotFriendlyCharacters","toString","toLowerCase","MouseButton","isNonEmpty","selection","isEmpty","isLabel","tagName","shouldIgnoreEvent","eventTarget","clickableElement","Element","contains","willBeHandledByAssociatedElement","nearestLabel","findClosestParent","associatedElementId","getAttribute","willBubbleOutsideOfPortal","potentialPortalContainer","previouslyCheckedElement","HTMLElement","parentElement","target","button","Left","userSelection","getSelection","removeAllRanges","Middle","_clickableRef$current","_clickableRef$current2","click","_clickableRef$current3","eventCopy","MouseEvent","bubbles","dispatchEvent","elementRef","initOptions","_intersectionEntry$is","rootMargin","intersectionEntry","setIntersectionEntry","node","observer","IntersectionObserver","_ref","callbackEntry","observe","disconnect","isIntersecting"],"sourceRoot":""}