{"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":""}