{"version":3,"file":"StudyPageNavigation.chunk.276b31351b2cf945a850.js","mappings":"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","sources":["webpack://Kristiania.Web/./Features/StudyPage/Campus/Partials/Navigation/NavigationControls/NavigationControls.tsx","webpack://Kristiania.Web/./Features/StudyPage/Campus/Partials/Navigation/NavigationControls/NavigationControls.module.css?5526","webpack://Kristiania.Web/./Features/StudyPage/Campus/Partials/Navigation/NavigationLink/NavigationLink.tsx","webpack://Kristiania.Web/./Features/StudyPage/Campus/Partials/Navigation/NavigationLink/NavigationLink.module.css?5fdf","webpack://Kristiania.Web/./Features/StudyPage/Campus/Partials/Navigation/NavigationList/NavigationList.tsx","webpack://Kristiania.Web/./Features/StudyPage/Campus/Partials/Navigation/NavigationList/NavigationList.module.css?d829","webpack://Kristiania.Web/./Features/StudyPage/Campus/Partials/Navigation/Navigation.tsx","webpack://Kristiania.Web/./Features/StudyPage/Campus/Partials/Navigation/Utils/useCurrentlyVisibleSection.tsx","webpack://Kristiania.Web/./Features/StudyPage/Campus/Partials/Navigation/Navigation.module.css?a7e2","webpack://Kristiania.Web/./Features/Pages/CampusStudyPage/View/Components/StudyPageNavigation/StudyPageNavigation.tsx","webpack://Kristiania.Web/./Features/StudyPage/Campus/Partials/AdmissionCallToAction/Events/AdmissionCallToActionOverlayStatusChanged.ts","webpack://Kristiania.Web/./Features/StudyPage/Campus/Partials/Navigation/Events/NavigationApplyClick.ts","webpack://Kristiania.Web/./Features/Utils/Hooks/useClickOutsideObserver.ts","webpack://Kristiania.Web/./Features/Utils/Hooks/useIsMounted.ts"],"sourcesContent":["import classNames from 'classnames';\nimport * as React from 'react';\nimport { AdmissionCallToActionOverlayStatusChanged } from '../../AdmissionCallToAction/Events/AdmissionCallToActionOverlayStatusChanged';\nimport { useMessageHandler } from '~/Features/Messaging/useMessageHandler';\nimport { Button } from '~/Partials/Button/Button';\nimport { ButtonSize } from '~/Partials/Button/ButtonSize.csharp';\nimport { ButtonTier } from '~/Partials/Button/ButtonTier.csharp';\nimport { ButtonType } from '~/Partials/Button/ButtonType.csharp';\nimport { SvgIcon } from '~/Partials/SvgIcon/SvgIcon';\nimport { assertNever } from '~/Partials/Utils/typeUtils';\nimport type { Theme } from '~/Utils/Theme';\nimport styles from './NavigationControls.module.css';\n\ninterface NavigationControlsProps {\n isOpen: boolean;\n ariaControlsId: string;\n onExpandClick: () => void;\n onApplyClick: () => void;\n applyButtonLabel: string;\n theme: Theme;\n currentItemLabel?: string;\n}\n\nexport const NavigationControls: React.FC> = props => {\n const { isOpen, children, onApplyClick, onExpandClick, currentItemLabel, applyButtonLabel, ariaControlsId, theme } =\n props;\n const { withRoundedCorners } = theme;\n\n const [callToActionIsDisabled, setCallToActionIsDisabled] = React.useState(false);\n const [callToActionIsNonApplicableLink, setCallToActionIsNonApplicableLink] = React.useState(false);\n\n useMessageHandler(\n AdmissionCallToActionOverlayStatusChanged.id,\n (event: AdmissionCallToActionOverlayStatusChanged) => {\n switch (event.status) {\n case 'disabled':\n setCallToActionIsDisabled(event.newValue);\n break;\n case 'nonApplicableLink':\n setCallToActionIsNonApplicableLink(event.newValue);\n break;\n default:\n assertNever(event.status);\n }\n }\n );\n\n return (\n
\n
\n \n \n {currentItemLabel}\n \n
{children}
\n
\n {!callToActionIsNonApplicableLink && (\n \n {applyButtonLabel}\n \n \n )}\n
\n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"StudyPageNavigationControls\":\"f3fUT0IrasaMyupjyecF\",\"ExpandContainer\":\"Z_AIqAE5FTg0C4PtNlWI\",\"ExpandButton\":\"aHyoea9ydER8kr8YmsYl\",\"ExpandButtonIcon\":\"akMTxQMBzDPii9OqLqzW\",\"ExpandButtonIcon--flipped\":\"eJTEJagWncA1gAQGrCiA\",\"ExpandButtonLabel\":\"PdnxB52bNFluoG4OJ8RK\",\"Content\":\"SknjV3_JGiaDJhsl2Dfh\",\"ApplyButton\":\"bvXg44K9AXWXJD14SF4u\",\"ApplyIcon\":\"FrcMYfdLBuEwAqzT0Beg\"};","import classNames from 'classnames';\nimport type { FC } from 'react';\nimport React from 'react';\nimport type { NavigationAnchor } from '../Utils/types';\nimport { Link } from '~/Partials/Link/Link';\nimport { LinkType } from '~/Partials/Link/LinkType.csharp';\nimport { smoothScrollToSectionById } from '~/Partials/Utils/utils';\nimport styles from './NavigationLink.module.css';\n\nexport interface NavigationLinkProps extends NavigationAnchor {\n isSelected: boolean;\n onClick: () => void;\n}\n\nexport const NavigationLink: FC> = props => {\n const { isSelected, label, onClick, id, ...restOfProps } = props;\n\n const onLinkClick = (e?: React.MouseEvent) => {\n if (e) {\n e.preventDefault();\n smoothScrollToSectionById(id);\n onClick();\n }\n };\n\n return (\n \n {isSelected && }\n {label}\n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"NavigationLink\":\"kG1JeWWJBgpQsb1tvasK\",\"LinkLabel\":\"AQA9Sr67EFDuBgrpQSCz\",\"LinkLabelWrapper\":\"X_HRm4Ly9VwdOY23Xk2k\",\"Dot\":\"CGgXwra_KyI81eeQyKvC\",\"Variant--selected\":\"qFp_VLk_1dmyz1UlAPPw\"};","import classNames from 'classnames';\nimport * as React from 'react';\nimport { NavigationLink } from '../NavigationLink/NavigationLink';\nimport type { NavigationAnchor } from '../Utils/types';\nimport { Collapse } from '~/Partials/Collapse/Collapse';\nimport { List } from '~/Partials/List/List';\nimport type { Theme } from '~/Utils/Theme';\nimport styles from './NavigationList.module.css';\n\ninterface NavigationListProps {\n isOpen: boolean;\n sectionAnchors: NavigationAnchor[];\n onItemClick: () => void;\n ariaControlsId: string;\n label: string;\n theme: Theme;\n currentItem?: NavigationAnchor;\n}\n\nconst navigationVisibleClassName = 'StudyPageNavigation--open';\n\nexport const NavigationList: React.FC = props => {\n const { isOpen, onItemClick, currentItem, sectionAnchors, ariaControlsId, label, theme } = props;\n const { withBoxShadow, withRoundedCorners } = theme;\n\n const renderItem = (item: NavigationAnchor, index: number) => {\n const isSelected = item.id === currentItem?.id;\n\n return (\n
  • \n \n
  • \n );\n };\n\n const addBodyClassNameOnNavigationExpand = React.useCallback(() => {\n if (isOpen) {\n const { body } = document;\n body.classList.add(navigationVisibleClassName);\n }\n }, [isOpen]);\n\n const removeBodyClassNameAfterNavigationCollapse = () => {\n if (!isOpen) {\n const { body } = document;\n body.classList.remove(navigationVisibleClassName);\n }\n };\n\n React.useEffect(() => {\n addBodyClassNameOnNavigationExpand();\n }, [isOpen, addBodyClassNameOnNavigationExpand]);\n\n const labelId = 'sub-menu-label';\n\n return (\n \n \n \n \n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"NavigationList\":\"UXtMUxIKF71KlzCnhoak\",\"Collapse\":\"lZ4Rn3fZklbx5PfXLlbq\",\"NavElement\":\"iiJCOaQiM0P3o7rRvxwA\",\"List\":\"g199KjmEKyuTwAfqEgds\",\"ListItem\":\"ALI_rSLuvqXnArJ4RV8m\",\"Variant--rounded\":\"WAaK2y7f1e7DQSGQAKnH\",\"Variant--shadowed\":\"_3l3L2AXl2eCK4W3guwW\"};","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useTheme } from '~/Features/Layouts/Theme/Context/ThemeContextProvider';\nimport { MessageBroker } from '~/Features/Messaging/MessageBroker';\nimport { useClickOutsideRefObserver } from '~/Utils/Hooks/useClickOutsideObserver';\nimport type { Theme } from '~/Utils/Theme';\nimport { NavigationApplyClick } from './Events/NavigationApplyClick';\nimport styles from './Navigation.module.css';\nimport { NavigationControls } from './NavigationControls/NavigationControls';\nimport { NavigationList } from './NavigationList/NavigationList';\nimport type { NavigationAnchor } from './Utils/types';\nimport { useCurrentlyVisibleSection } from './Utils/useCurrentlyVisibleSection';\n\ninterface NavigationProps {\n sectionAnchors: NavigationAnchor[];\n translations: {\n apply: string;\n label: string;\n home: string;\n };\n theme?: Theme;\n className?: string;\n}\n\nexport const Navigation: React.FC = props => {\n const contextualTheme = useTheme();\n const { sectionAnchors, translations, className, theme = contextualTheme } = props;\n const { withBoxShadow, withRoundedCorners } = theme;\n\n const [isNavigationExpanded, setIsNavigationExpanded] = React.useState(false);\n const navigationRef = React.useRef(null);\n\n const { currentVisibleSectionId } = useCurrentlyVisibleSection(sectionAnchors);\n\n const currentItem = sectionAnchors.find(anchor => anchor.id === currentVisibleSectionId);\n\n const navigationId = 'study-page-navigation';\n\n const handleNavigationExpansion = () => {\n setIsNavigationExpanded(!isNavigationExpanded);\n };\n\n const closeNavigation = () => {\n setIsNavigationExpanded(false);\n };\n\n const onApplyClick = () => {\n MessageBroker.publish(new NavigationApplyClick());\n };\n\n useClickOutsideRefObserver(navigationRef, closeNavigation);\n\n return (\n \n
    \n \n \n \n
    \n \n );\n};\n","import last from 'lodash/last';\nimport * as React from 'react';\nimport type { NavigationAnchor } from './types';\n\nexport function useCurrentlyVisibleSection(sectionAnchors: NavigationAnchor[]) {\n const [currentVisibleSectionId, setCurrentVisibleSectionId] = React.useState(null);\n\n React.useEffect(() => {\n const nodes = sectionAnchors.map(anchor => {\n const { id } = anchor;\n const element = document.getElementById(id);\n\n return { element, id };\n });\n\n const visibilityMap = new Map();\n\n function manageVisibility(entries: IntersectionObserverEntry[]) {\n for (const entry of entries) {\n visibilityMap.set(entry.target.id, entry.isIntersecting);\n }\n }\n\n function manageFirstVisibleElement() {\n const [visibleElementId] = Array.from(visibilityMap.entries())\n .filter(([, value]) => value)\n .map(([key]) => key);\n\n setCurrentVisibleSectionId(visibleElementId ?? last(nodes)?.id);\n }\n\n const observer = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n manageVisibility(entries);\n manageFirstVisibleElement();\n },\n {\n rootMargin: '-128px 0px 0px 0px',\n threshold: [0, 1],\n }\n );\n\n nodes.forEach(node => {\n if (node.element) {\n visibilityMap.set(node.id, false);\n observer.observe(node.element);\n }\n });\n\n return () => observer.disconnect();\n }, [sectionAnchors]);\n\n return { currentVisibleSectionId };\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"Navigation\":\"EryEuVsEgw2ZJFHaJJRV\",\"Inner\":\"fQuRBbsLCF6OdJuNHrkI\",\"Variant--rounded\":\"RcJTg4nVmLyDpIuVK0le\",\"Variant--shadowed\":\"TbdeGLEyxRERDCfjeJI8\"};","import * as React from 'react';\nimport type { StudyPageNavigationViewModel } from '../../../ViewModel/StudyPageNavigation/StudyPageNavigationViewModel.csharp';\nimport { Navigation } from '~/Features/StudyPage/Campus/Partials/Navigation/Navigation';\n\nexport const StudyPageNavigation: React.FC = props => {\n const { sections, translations } = props;\n const { navigationLabel, apply, home } = translations;\n\n const sectionAnchors = sections.map(section => ({ id: section.id, label: section.label }));\n\n return (\n \n );\n};\n","import { Event } from '~/Features/Messaging/types';\n\nexport const AdmissionCallToActionOverlayStatuses = ['disabled', 'nonApplicableLink'] as const;\nexport type AdmissionCallToActionOverlayStatus = (typeof AdmissionCallToActionOverlayStatuses)[number];\n\nexport class AdmissionCallToActionOverlayStatusChanged extends Event {\n public static readonly id = 'AdmissionCallToActionOverlayStatusChanged';\n\n constructor(\n public readonly status: AdmissionCallToActionOverlayStatus,\n public readonly newValue: boolean\n ) {\n super(AdmissionCallToActionOverlayStatusChanged.id);\n }\n}\n","import { Event } from '~/Features/Messaging/types';\n\nexport class NavigationApplyClick extends Event {\n public static readonly id = 'NavigationApplyClick';\n\n constructor() {\n super(NavigationApplyClick.id);\n }\n}\n","import type { RefObject } from 'react';\nimport { useEffect } from 'react';\nimport { useVariableWithStableRef } from './useVariableWithStableRef';\n\nexport function useClickOutsideElementObserver(element: TElement | null, callback: () => void) {\n const handlerRef = useVariableWithStableRef(callback);\n\n useEffect(() => {\n const handleClick = (event: MouseEvent) => {\n if (!(event.target instanceof Node)) {\n return;\n }\n\n function isChildOfReferencedElement(elem: Node): boolean {\n return element !== null && element.contains(elem);\n }\n\n // We check if the target element is still present in document because it might happen\n // that click event causes component to unmount and simply checking if element contains the target\n // would give false negatives.\n // element's event handler => unmounting => this event handler\n function isAttachedToDocument(elem: Node): boolean {\n return document.body.contains(elem);\n }\n\n const isClickOutside = !isChildOfReferencedElement(event.target) && isAttachedToDocument(event.target);\n isClickOutside && handlerRef.current?.();\n };\n\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, [element, handlerRef]);\n}\n\nexport function useClickOutsideRefObserver(\n ref: RefObject,\n callback: () => void\n) {\n useClickOutsideElementObserver(ref.current, callback);\n}\n","import { useEffect, useState } from 'react';\n\nexport const useIsMounted = () => {\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n return isMounted;\n};\n"],"names":["NavigationControls","props","isOpen","children","onApplyClick","onExpandClick","currentItemLabel","applyButtonLabel","ariaControlsId","theme","withRoundedCorners","callToActionIsDisabled","setCallToActionIsDisabled","React","callToActionIsNonApplicableLink","setCallToActionIsNonApplicableLink","useMessageHandler","AdmissionCallToActionOverlayStatusChanged","id","event","status","newValue","assertNever","className","Button","type","ButtonType","Clear","onClick","SvgIcon","classNames","iconName","disabled","size","ButtonSize","Medium","tier","ButtonTier","Secondary","Solid","NavigationLink","isSelected","label","restOfProps","_objectWithoutProperties","_excluded","Link","_extends","LinkType","e","preventDefault","smoothScrollToSectionById","href","concat","labelClassName","navigationVisibleClassName","NavigationList","onItemClick","currentItem","sectionAnchors","withBoxShadow","addBodyClassNameOnNavigationExpand","body","document","classList","add","labelId","Collapse","onRest","removeBodyClassNameAfterNavigationCollapse","remove","List","items","renderItem","item","index","key","Navigation","contextualTheme","useTheme","translations","isNavigationExpanded","setIsNavigationExpanded","navigationRef","currentVisibleSectionId","setCurrentVisibleSectionId","nodes","map","anchor","element","getElementById","visibilityMap","Map","observer","IntersectionObserver","entries","entry","set","target","isIntersecting","manageVisibility","_last","visibleElementId","Array","from","filter","_ref","value","_ref2","last","manageFirstVisibleElement","rootMargin","threshold","forEach","node","observe","disconnect","useCurrentlyVisibleSection","find","navigationId","closeNavigation","useClickOutsideRefObserver","ref","apply","MessageBroker","publish","NavigationApplyClick","handleNavigationExpansion","home","StudyPageNavigation","sections","navigationLabel","section","Event","constructor","super","useClickOutsideElementObserver","callback","handlerRef","useVariableWithStableRef","useEffect","handleClick","_handlerRef$current","elem","Node","contains","isAttachedToDocument","current","call","addEventListener","removeEventListener","useIsMounted","isMounted","setIsMounted","useState"],"sourceRoot":""}