{"version":3,"file":"AreasOfExpertise.chunk.303bb1ebc6f4cf1aa3ee.js","mappings":"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","sources":["webpack://Kristiania.Web/./Features/Configuration/Hooks/useFrontendSettings.ts","webpack://Kristiania.Web/./Features/Configuration/Utils/languageUtils.ts","webpack://Kristiania.Web/./Features/ExecutionContext.ts","webpack://Kristiania.Web/./Features/Configuration/Utils/pageContextProvider.ts","webpack://Kristiania.Web/./Features/Layouts/Theme/Context/ThemeContextProvider.tsx","webpack://Kristiania.Web/./Features/Layouts/Theme/Utils/pageThemeProvider.ts","webpack://Kristiania.Web/./Features/Layouts/Theme/Hooks/usePageTheme.ts","webpack://Kristiania.Web/./Features/Messaging/MessageBroker.ts","webpack://Kristiania.Web/./Features/Messaging/types.ts","webpack://Kristiania.Web/./Features/Messaging/useMessageHandler.ts","webpack://Kristiania.Web/./Features/Partials/Filters/AlphabeticalIndex.tsx","webpack://Kristiania.Web/./Features/Partials/Filters/AlphabeticalIndex.module.css?97c4","webpack://Kristiania.Web/./Features/Partials/Filters/Facets/FacetsCheckboxList.tsx","webpack://Kristiania.Web/./Features/Partials/Filters/Facets/FacetsCheckboxList.module.css?4354","webpack://Kristiania.Web/./Features/Partials/Filters/AlphabeticalCheckboxList.tsx","webpack://Kristiania.Web/./Features/Partials/Filters/AlphabeticalCheckboxList.module.css?58f8","webpack://Kristiania.Web/./Features/Pages/AreasOfExpertisePage/AreasOfExpertiseSearchResults.tsx","webpack://Kristiania.Web/./Features/Pages/AreasOfExpertisePage/useAreasOfExpertiseQuery.ts","webpack://Kristiania.Web/./Features/Pages/AreasOfExpertisePage/AreasOfExpertiseSearchResults.module.css?58f9","webpack://Kristiania.Web/./Features/Pages/AreasOfExpertisePage/SearchableFacet.tsx","webpack://Kristiania.Web/./Features/Pages/AreasOfExpertisePage/AreasOfExpertiseSearchBox.tsx","webpack://Kristiania.Web/./Features/Pages/AreasOfExpertisePage/AreasOfExpertiseSearchBox.module.css?7060","webpack://Kristiania.Web/./Features/Pages/AreasOfExpertisePage/AreasOfExpertise.tsx","webpack://Kristiania.Web/./Features/Pages/AreasOfExpertisePage/AreasOfExpertise.module.css?9de8","webpack://Kristiania.Web/./Features/Partials/AccordionComponent/AccordionItem.module.css?ed1d","webpack://Kristiania.Web/./Features/Partials/AccordionComponent/Components/AccordionExpander.module.css?8ad8","webpack://Kristiania.Web/./Features/Partials/AccordionComponent/Components/AccordionExpander.tsx","webpack://Kristiania.Web/./Features/Partials/AccordionComponent/AccordionItem.tsx","webpack://Kristiania.Web/./Features/Partials/AccordionComponent/Hooks/useAccordionContentRenderer.tsx","webpack://Kristiania.Web/./Features/Partials/ActivityIndicator/ActivityIndicator.module.css?6d48","webpack://Kristiania.Web/./Features/Partials/ActivityIndicator/ActivityIndicator.tsx","webpack://Kristiania.Web/./Features/Partials/Button/Button.tsx","webpack://Kristiania.Web/./Features/Partials/Button/ButtonSize.csharp.ts","webpack://Kristiania.Web/./Features/Partials/Button/ButtonTier.csharp.ts","webpack://Kristiania.Web/./Features/Partials/Button/ButtonType.csharp.ts","webpack://Kristiania.Web/./Features/Partials/Collapse/useCollapse.ts","webpack://Kristiania.Web/./Features/Partials/Collapse/Collapse.tsx","webpack://Kristiania.Web/./Features/Partials/EmployeeCard/EmployeeCard.module.css?4cf5","webpack://Kristiania.Web/./Features/Partials/EmployeeCard/EmployeeCard.tsx","webpack://Kristiania.Web/./Features/Partials/FetchData/Queries/ApiResponseError.ts","webpack://Kristiania.Web/./Features/Partials/FetchData/Queries/MappingError.ts","webpack://Kristiania.Web/./Features/Partials/FetchData/Queries/useAxiosQuery.ts","webpack://Kristiania.Web/./Features/Partials/FetchData/Queries/ReactQueryClientProvider.ts","webpack://Kristiania.Web/./Features/Partials/FetchData/Queries/withQueryContext.tsx","webpack://Kristiania.Web/./Features/Partials/FetchData/Queries/QueryValidationError.ts","webpack://Kristiania.Web/./Features/Partials/FetchData/Utils/errorUtils.ts","webpack://Kristiania.Web/./Features/Partials/FetchData/axiosWrapper.ts","webpack://Kristiania.Web/./Features/Partials/Filters/ChoiceAutoComplete.tsx","webpack://Kristiania.Web/./Features/Partials/Filters/CollapseFilters.tsx","webpack://Kristiania.Web/./Features/Partials/Filters/Facets/FacetsUtils.ts","webpack://Kristiania.Web/./Features/Partials/Filters/FiltersWrapper.tsx","webpack://Kristiania.Web/./Features/Partials/Filters/FiltersWrapper.module.css?2715","webpack://Kristiania.Web/./Features/Partials/List/List.tsx","webpack://Kristiania.Web/./Features/Partials/PagedFetchData/InfiniteScroll.tsx","webpack://Kristiania.Web/./Features/Partials/PagedFetchData/PagedFetchData.module.css?ff5b","webpack://Kristiania.Web/./Features/Partials/PagedFetchData/PaginationStatus/PaginationStatus.module.css?ec87","webpack://Kristiania.Web/./Features/Partials/PagedFetchData/PaginationStatus/PaginationStatus.tsx","webpack://Kristiania.Web/./Features/Partials/PagedFetchData/PagedFetchData.tsx","webpack://Kristiania.Web/./Features/Partials/PagedFetchData/SearchCriteriaUtils.ts","webpack://Kristiania.Web/./Features/Partials/Picture/Utils/constructImageSharpUrl.tsx","webpack://Kristiania.Web/./Features/Partials/Picture/Picture.tsx","webpack://Kristiania.Web/./Features/Partials/Picture/Picture.module.css?5ded","webpack://Kristiania.Web/./Features/Partials/RequestHelper/RequestHelper.tsx","webpack://Kristiania.Web/./Features/Partials/SearchBase/Events/QueryParametersChanged.ts","webpack://Kristiania.Web/./Features/Partials/SearchBase/QueryParameterUtils.ts","webpack://Kristiania.Web/./Features/Partials/SearchBase/TwoWayMapping.ts","webpack://Kristiania.Web/./Features/Partials/SearchBase/FacetsQueryParameterConverter.ts","webpack://Kristiania.Web/./Features/Partials/SearchBase/SearchBase.tsx","webpack://Kristiania.Web/./Features/Partials/SearchBox/SearchBox.tsx","webpack://Kristiania.Web/./Features/Partials/SearchBox/SearchBoxResults/SearchBoxResults.tsx","webpack://Kristiania.Web/./Features/Partials/SearchBox/SearchBoxResults/SearchBoxResultsRow/SearchBoxResultsRow.tsx","webpack://Kristiania.Web/./Features/Partials/SearchBox/SearchBoxResults/SearchBoxResultsRow/SearchBoxResultsRow.module.css?8f92","webpack://Kristiania.Web/./Features/ApplicationApplets/Shared/Format/TextFormat.ts","webpack://Kristiania.Web/./Features/Partials/SelectedFiltersList/SelectedFiltersList.tsx","webpack://Kristiania.Web/./Features/Partials/SelectedFiltersList/SelectedFiltersList.module.css?62b1","webpack://Kristiania.Web/./Features/Partials/SvgIcon/SvgIcon.tsx","webpack://Kristiania.Web/./Features/Partials/SvgIcon/SvgIconBase.tsx","webpack://Kristiania.Web/./Features/Partials/SvgIcon/Utils/Utils.ts","webpack://Kristiania.Web/./Features/Partials/Utils/debounceAsync.ts","webpack://Kristiania.Web/./Features/Partials/Utils/utils.ts","webpack://Kristiania.Web/./Features/Txt/TxtBase.tsx","webpack://Kristiania.Web/./Features/Utils/Hooks/useIsMounted.ts","webpack://Kristiania.Web/./Features/Utils/Hooks/useVariableWithStableRef.ts","webpack://Kristiania.Web/./Features/Partials/Button/Button.module.css?462a","webpack://Kristiania.Web/./Features/Partials/Filters/Facets/Shared/AccordionListShared.module.css?7ef1","webpack://Kristiania.Web/./Features/Partials/Filters/Filters.module.css?69a3","webpack://Kristiania.Web/./Features/Partials/SearchBox/SearchBox.module.css?bf03","webpack://Kristiania.Web/./Features/Partials/SearchBox/SearchBoxResults/SearchBoxResults.module.css?a773"],"sourcesContent":["import { useMemo } from 'react';\nimport { GlobalContextProvider } from '~/Features/Configuration/GlobalContextProvider';\n\nexport const useFrontendSettings = () => useMemo(() => GlobalContextProvider.getFrontendSettings(), []);\n","import { GlobalContextProvider } from '~/Features/Configuration/GlobalContextProvider';\nimport { mapToLocale } from '~/Partials/Locale/Locale';\n\nexport const getContentLanguage = () => GlobalContextProvider.getContentLanguage();\n\nexport const getContentLocale = () => mapToLocale(getContentLanguage());\n","class ExecutionContext {\n public static IsServerSide(): boolean {\n // Episerver Spa Core defines window shim on server side but does not assign `window` property to itself\n return typeof window === 'undefined' || typeof window.window === 'undefined';\n }\n\n public static ThrowIfServerSide(): void {\n if (ExecutionContext.IsServerSide()) {\n throw new Error(\"Method shouldn't be used in server side\");\n }\n }\n}\n\nexport default ExecutionContext;\n","import { GlobalContextProvider } from '../GlobalContextProvider';\nimport type { PageContext } from './PageContext';\n\nexport const getPageContext = (): PageContext | undefined => {\n if (GlobalContextProvider.isSpaPage()) {\n return 'spa';\n }\n\n if (GlobalContextProvider.isModernPage()) {\n return 'modernPage';\n }\n\n return 'public';\n};\n","import * as React from 'react';\nimport { usePageTheme } from '../Hooks/usePageTheme';\nimport type { Theme } from '~/Utils/Theme';\n\nconst ThemeContext = React.createContext(null);\n\nexport interface ThemeContextProviderProps {\n theme: Theme;\n}\n\nexport const ThemeContextProvider: React.FC> = props => {\n const { theme, children } = props;\n\n return {children};\n};\n\nexport const useTheme = () => {\n const context = React.useContext(ThemeContext);\n const pageTheme = usePageTheme();\n\n if (!context) {\n // Fallback to page-level theme as we don't have a top level component that we can use to wrap the entire tree\n return pageTheme;\n }\n\n return context;\n};\n","import type { PageContext } from '~/Features/Configuration/Utils/PageContext';\nimport { themeDefaultValues, themeModernValues } from '~/Utils/Theme';\n\nexport const getPageTheme = (context?: PageContext) => {\n switch (context) {\n case 'spa':\n case 'modernPage':\n return themeModernValues;\n default:\n return themeDefaultValues;\n }\n};\n","import { getPageTheme } from '../Utils/pageThemeProvider';\nimport { getPageContext } from '~/Features/Configuration/Utils/pageContextProvider';\n\nexport const usePageTheme = () => getPageTheme(getPageContext());\n","import type { Message, MessageHandler } from '~/Features/Messaging/types';\n\nexport class MessageBroker {\n private static MessageHandlersByMessageId: { [id: string]: MessageHandler[] } = {};\n\n public static subscribe(handler: MessageHandler, messageId: string): void {\n const handlers = this.MessageHandlersByMessageId[messageId];\n\n if (handlers) {\n handlers.push(handler);\n } else {\n this.MessageHandlersByMessageId[messageId] = [handler];\n }\n }\n\n public static unsubscribe(handler: MessageHandler, messageId: string): void {\n const handlers = this.MessageHandlersByMessageId[messageId];\n\n if (handlers) {\n this.MessageHandlersByMessageId[messageId] = handlers.filter(h => h !== handler);\n }\n }\n\n public static publish(message: Message): void {\n const handlers = this.GetMessageHandlers(message.id);\n\n handlers.forEach(handler => handler.handle(message));\n }\n\n public static schedulePublish(message: Message, delay: number): void {\n setTimeout(() => MessageBroker.publish(message), delay);\n }\n\n private static GetMessageHandlers(messageId: string): MessageHandler[] {\n return this.MessageHandlersByMessageId[messageId] || [];\n }\n}\n","export abstract class Message {\n protected constructor(public readonly id: string) {}\n}\n\nexport abstract class Event extends Message {}\n\nexport interface MessageHandler {\n handle(message: Message): void;\n}\n\nexport interface EventHandler {\n handle: ((event: TEvent) => void) | (() => void);\n}\n","import { useLayoutEffect } from 'react';\nimport { MessageBroker } from '~/Features/Messaging/MessageBroker';\nimport type { Message, MessageHandler } from '~/Features/Messaging/types';\nimport { useVariableWithStableRef } from '~/Utils/Hooks/useVariableWithStableRef';\n\nexport const useMessageHandler = (messageId: string, onMessage: MessageHandler['handle']) => {\n const onMessageRef = useVariableWithStableRef(onMessage);\n\n // We use LayoutEffect here because it is important that the handler is subscribed before the first message is published.\n // It could happen if the children of the component that uses this hook publish a message in their useEffect.\n useLayoutEffect(() => {\n const handler = {\n handle: (event: Message) => onMessageRef.current(event),\n };\n\n MessageBroker.subscribe(handler, messageId);\n\n return () => MessageBroker.unsubscribe(handler, messageId);\n }, [onMessageRef, messageId]);\n};\n","import * as React from 'react';\nimport { Button } from '../Button/Button';\nimport styles from './AlphabeticalIndex.module.css';\n\ninterface AlphabeticalIndexProps {\n itemsPresentOnList: string[];\n handleLetterClick: (letter: string) => void;\n alphabet: string;\n}\n\nexport const AlphabeticalIndex: React.FC> = ({\n itemsPresentOnList,\n handleLetterClick,\n alphabet,\n}) => {\n const alphabetList = alphabet.split('');\n const usedFirstLetters = itemsPresentOnList\n .map(i => i.charAt(0).toUpperCase())\n .filter((v, i, a) => a.indexOf(v) === i); // distinct\n\n const isLetterPresent = (letter: string): boolean => usedFirstLetters.indexOf(letter) !== -1;\n\n const onLetterClick = (letter: string): void => {\n if (!isLetterPresent(letter)) {\n return;\n }\n\n handleLetterClick(letter);\n };\n\n return (\n
    \n {alphabetList.map(letter => {\n const letterPresent = isLetterPresent(letter);\n\n return (\n
  • \n {letterPresent ? (\n \n ) : (\n

    {letter}

    \n )}\n
  • \n );\n })}\n
\n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"AlphabeticalIndex\":\"Axfpx_2aDPG6hFp6w3xn\",\"Letter\":\"T41lTiXcHZqaHjgxVmHm\"};","import classNames from 'classnames';\nimport groupBy from 'lodash/groupBy';\nimport * as React from 'react';\nimport type { FacetOption } from '../../../Search/FacetOption.csharp';\nimport type { SelectedFacet } from '../../../Search/SelectedFacet.csharp';\nimport { AccordionItem } from '../../AccordionComponent/AccordionItem';\nimport { ChoiceAutoComplete } from '../ChoiceAutoComplete';\nimport { List } from '~/Partials/List/List';\nimport styles from './FacetsCheckboxList.module.css';\nimport baseStyles from './Shared/AccordionListShared.module.css';\n\ninterface FacetsCheckboxListProps {\n selectedFacet: SelectedFacet;\n facetOptions: FacetOption[];\n handleFacetClick: (selectedFacet: SelectedFacet) => void;\n}\n\nexport const FacetsCheckboxList: React.FC> = ({\n selectedFacet,\n facetOptions,\n handleFacetClick,\n}) => {\n const facetsGroupedByFirstLetter = groupBy(facetOptions, option => option.label.charAt(0).toUpperCase());\n\n const renderCheckboxList = () => (\n (\n
  • \n
    \n {firstLetter}
    }\n >\n {renderItems(facetsGroupedByFirstLetter[firstLetter])}\n \n
  • \n )}\n />\n );\n\n const handleInputChange = (values: string[]) => {\n const newSelectedFacet = { id: selectedFacet.id, values } as SelectedFacet;\n !!handleFacetClick && handleFacetClick(newSelectedFacet);\n };\n\n const renderItems = (items: FacetOption[]) => (\n \n );\n\n return <>{renderCheckboxList()};\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"FacetsCheckboxList\":\"opCpveIB4QR245N8zwIA\",\"Anchor\":\"r08ekQXuVomZwH37DFhg\",\"Item\":\"tJdu6lR5E3veyPpoJODZ\",\"LetterList\":\"lym_IPkKYZ3LbLnQB4dk\"};","import * as React from 'react';\nimport type { Facet } from '../../Search/Facet.csharp';\nimport type { SelectedFacet } from '../../Search/SelectedFacet.csharp';\nimport { SvgIcon } from '../SvgIcon/SvgIcon';\nimport { smoothScrollToSectionById } from '../Utils/utils';\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 styles from './AlphabeticalCheckboxList.module.css';\nimport { AlphabeticalIndex } from './AlphabeticalIndex';\nimport { FacetsCheckboxList } from './Facets/FacetsCheckboxList';\nimport { updateSelectedFacetValue } from './Facets/FacetsUtils';\n\ninterface AlphabeticalCheckboxListTranslations {\n close: string;\n hits: string;\n}\n\ninterface AlphabeticalCheckboxListProps {\n facet: Facet;\n selectedFacets: SelectedFacet[];\n hitsValue: number;\n handleFacetChange: (newFacets: SelectedFacet[]) => void;\n toggleFilters: () => void;\n translations: AlphabeticalCheckboxListTranslations;\n alphabet: string;\n}\n\nexport const AlphabeticalCheckboxList: React.FC> = ({\n facet,\n selectedFacets,\n handleFacetChange,\n hitsValue,\n toggleFilters,\n translations,\n alphabet,\n}) => {\n const handleFacetClick = (selectedFacet: SelectedFacet) => {\n const updatedSelectedFacet = updateSelectedFacetValue(selectedFacets, selectedFacet);\n handleFacetChange(updatedSelectedFacet);\n };\n\n const scrollToLetter = (letter: string) => {\n smoothScrollToSectionById(`Letter__${letter}`);\n };\n\n return (\n <>\n
    \n
    \n \n \n {`${hitsValue} ${translations.hits}`}\n \n
    \n o.label)}\n handleLetterClick={scrollToLetter}\n alphabet={alphabet}\n />\n
    \n selectedFacet.id === facet.id) || ({} as SelectedFacet)\n }\n facetOptions={facet.options}\n handleFacetClick={handleFacetClick}\n />\n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"ActionHeader\":\"wck7w_rYq6VECooaTlGH\",\"CloseAction\":\"o_lXgXSljBmNvcjQGE_n\",\"CloseButton\":\"DCyMhj4uXPSfRGKSx3to\"};","import * as React from 'react';\nimport type { SelectedFacet } from '~/Features/Search/SelectedFacet.csharp';\nimport { useAreasOfExpertiseQuery } from '~/Pages/AreasOfExpertisePage/useAreasOfExpertiseQuery';\nimport { withQueryContext } from '~/Partials/FetchData/Queries/withQueryContext';\nimport { SearchBoxResults } from '~/Partials/SearchBox/SearchBoxResults/SearchBoxResults';\nimport { SearchBoxResultsRow } from '~/Partials/SearchBox/SearchBoxResults/SearchBoxResultsRow/SearchBoxResultsRow';\nimport styles from './AreasOfExpertiseSearchResults.module.css';\n\ninterface AreasOfExpertiseSearchResultsProps {\n phrase: string;\n selectedFacet: SelectedFacet[];\n shouldMakeRequest: boolean;\n searchUrl: string;\n errorTranslation: string;\n}\n\nconst AreasOfExpertiseSearchResultsInternal: React.FC<\n React.PropsWithChildren\n> = props => {\n const { phrase, selectedFacet, shouldMakeRequest, searchUrl, errorTranslation } = props;\n\n const { isLoading, hasError, data } = useAreasOfExpertiseQuery(searchUrl, phrase, selectedFacet, shouldMakeRequest);\n\n return (\n \n \n \n );\n};\n\nexport const AreasOfExpertiseSearchResults = withQueryContext(AreasOfExpertiseSearchResultsInternal);\n","import type { EmployeeSearchResult } from '~/Features/Search/Employee/EmployeeSearchResult.csharp';\nimport type { SearchCriteria } from '~/Features/Search/SearchCriteria.csharp';\nimport type { SearchResultResponse } from '~/Features/Search/SearchResultResponse.csharp';\nimport type { SelectedFacet } from '~/Features/Search/SelectedFacet.csharp';\nimport { useAxiosQuery } from '~/Partials/FetchData/Queries/useAxiosQuery';\nimport { getBaseSearchQueryParameters } from '~/Partials/PagedFetchData/SearchCriteriaUtils';\nimport { buildAbsoluteUrlWithQueryParameters } from '~/Partials/SearchBase/QueryParameterUtils';\n\nexport function useAreasOfExpertiseQuery(\n searchUrl: string,\n phrase: string,\n selectedFacets: SelectedFacet[],\n shouldMakeRequest: boolean\n) {\n const constructUrl = (searchParams: SearchCriteria) =>\n buildAbsoluteUrlWithQueryParameters(searchUrl, [\n ...getBaseSearchQueryParameters(searchParams),\n { name: 'skip', value: '0' },\n ]);\n\n const url = constructUrl({\n phrase,\n selectedFacets,\n });\n\n const result = useAxiosQuery>(\n url,\n ['AreasOfExpertise', selectedFacets, phrase],\n {\n queryOptions: {\n enabled: shouldMakeRequest,\n },\n }\n );\n\n return {\n isLoading: result.isLoading,\n hasError: result.hasError,\n data: result.data,\n };\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"List\":\"ieZT7Zb387hpDHcL9t8i\",\"SearchBoxResultsRow\":\"VcPmAhJTQWeeWjT3s4Bx\",\"Link\":\"Vt1NkuNWjAHYS7Q1OBHY\"};","import * as React from 'react';\nimport type { Facet } from '../../Search/Facet.csharp';\nimport type { SelectedFacet } from '../../Search/SelectedFacet.csharp';\nimport { ChoiceAutoComplete } from '~/Partials/Filters/ChoiceAutoComplete';\n\nexport interface SearchableFacetsListProps {\n searchPhrase: string;\n selectedFacets: SelectedFacet;\n facet: Facet;\n onHandleInputChange?: (values: SelectedFacet) => void;\n className?: string;\n}\n\nexport const SearchableFacetsList: React.FC> = ({\n searchPhrase,\n selectedFacets,\n facet,\n onHandleInputChange,\n className,\n}) => {\n const filteredValues = facet.options\n .filter(i => !searchPhrase || i.label.toLowerCase().indexOf(searchPhrase.toLowerCase()) !== -1)\n .slice(0, 6);\n\n const handleInputChange = (values: string[]) => {\n const selectedFacet = { id: facet.id, values } as SelectedFacet;\n\n !!onHandleInputChange && onHandleInputChange(selectedFacet);\n };\n\n return (\n \n );\n};\n","import classNames from 'classnames';\nimport type { DownshiftState, StateChangeOptions } from 'downshift';\nimport Downshift from 'downshift';\nimport * as React from 'react';\nimport { Key } from 'ts-keycode-enum';\nimport type { Facet } from '../../Search/Facet.csharp';\nimport type { SelectedFacet } from '../../Search/SelectedFacet.csharp';\nimport { Button } from '~/Partials/Button/Button';\nimport { updateSelectedFacetValue } from '~/Partials/Filters/Facets/FacetsUtils';\nimport { SearchBox } from '~/Partials/SearchBox/SearchBox';\nimport searchBaseStyles from '~/Partials/SearchBox/SearchBox.module.css';\nimport { SvgIcon } from '~/Partials/SvgIcon/SvgIcon';\nimport styles from './AreasOfExpertiseSearchBox.module.css';\nimport { AreasOfExpertiseSearchResults } from './AreasOfExpertiseSearchResults';\nimport { SearchableFacetsList } from './SearchableFacet';\n\ninterface AreasOfExpertiseSearchBoxTranslations {\n searchFor: string;\n openSearchOf: string;\n errorTranslation: string;\n}\n\nexport interface AreasOfExpertiseSearchBoxProps {\n translations: AreasOfExpertiseSearchBoxTranslations;\n searchPhrase: string;\n searchUrl: string;\n facets: Facet[];\n selectedFacets: SelectedFacet[];\n onSearchPhraseClick?: (searchPhrase: string) => void;\n onSelectedFacetsChanged?: (selectedFacet: SelectedFacet[]) => void;\n}\n\nexport const AreasOfExpertiseSearchBox: React.FC> = props => {\n const {\n translations,\n facets,\n searchPhrase,\n searchUrl,\n selectedFacets,\n onSearchPhraseClick,\n onSelectedFacetsChanged,\n } = props;\n\n const [phrase, setPhrase] = React.useState(searchPhrase || '');\n const [selectedFacet, setSelectedFacet] = React.useState(selectedFacets || []);\n\n React.useEffect(() => {\n setSelectedFacet(selectedFacets);\n }, [selectedFacets]);\n\n React.useEffect(() => {\n setPhrase(searchPhrase);\n }, [searchPhrase]);\n\n const onPhraseChange = (newPhrase: string) => {\n setPhrase(newPhrase);\n };\n\n const onSelectedFacetChange = (facet: SelectedFacet) => {\n const updatedSelectedFacet = updateSelectedFacetValue(selectedFacets, facet);\n !!onSelectedFacetsChanged && onSelectedFacetsChanged(updatedSelectedFacet);\n };\n\n const stateReducer = (state: DownshiftState, changes: StateChangeOptions) => {\n switch (changes.type) {\n case Downshift.stateChangeTypes.blurInput:\n return {\n ...changes,\n isOpen: true,\n highlightedIndex: state.highlightedIndex,\n };\n default:\n return changes;\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.keyCode === Key.Enter) {\n onSearchCall();\n }\n };\n\n const onSearchCall = () => {\n !!onSearchPhraseClick && onSearchPhraseClick(phrase);\n };\n\n return (\n
    \n \n {downshiftProps => {\n const { isOpen, getToggleButtonProps, getInputProps, getMenuProps } = downshiftProps;\n\n return (\n
    \n {!isOpen && (\n
    \n
    \n \n
    \n {phrase || translations.searchFor}\n \n
    \n
    \n
    \n )}\n {isOpen && (\n {\n handleKeyDown(event);\n },\n onChange: (event: React.ChangeEvent) => {\n onPhraseChange(event.target.value);\n },\n })}\n className={styles.ClearBox}\n >\n
    \n {isOpen && (\n <>\n {facets.map(facet => (\n z.id === facet.id) ||\n ({} as SelectedFacet)\n }\n onHandleInputChange={onSelectedFacetChange}\n className={styles.FacetList}\n />\n ))}\n \n \n )}\n
    \n \n )}\n
    \n );\n }}\n
    \n
    \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"SearchBox\":\"hHmMzbCAlGFbeOOetpiv\",\"Header\":\"W_FsX3LxhzdPvQ4xo5LQ\",\"Opener\":\"uqeveMb8LuCw3AB0hp4A\",\"PhraseInfo\":\"pGMmdW00j2VkmSI9mIhw\",\"SearchButton\":\"MwRt9cHq8_OmefsC_Rs0\",\"ClearBox\":\"HFRk80Ay3oBi5u8FsFqw\",\"Dropdown\":\"c9_utDd_2fHqPhdH2myG\",\"FacetList\":\"VvDcxHvPOTb_F4j8x3TB\",\"HeaderInner\":\"o8ci_peuV9TxsXHlVZ3k\"};","import * as React from 'react';\nimport type { EmployeeSearchResult } from '../../Search/Employee/EmployeeSearchResult.csharp';\nimport type { SearchCriteria } from '../../Search/SearchCriteria.csharp';\nimport type { SearchResultResponse } from '../../Search/SearchResultResponse.csharp';\nimport { EmployeeCard } from '~/Partials/EmployeeCard/EmployeeCard';\nimport { AlphabeticalCheckboxList } from '~/Partials/Filters/AlphabeticalCheckboxList';\nimport { CollapseFilters } from '~/Partials/Filters/CollapseFilters';\nimport { PagedFetchData } from '~/Partials/PagedFetchData/PagedFetchData';\nimport type { SearchState } from '~/Partials/SearchBase/SearchBase';\nimport { SearchBase } from '~/Partials/SearchBase/SearchBase';\nimport { SelectedFiltersList } from '~/Partials/SelectedFiltersList/SelectedFiltersList';\nimport styles from './AreasOfExpertise.module.css';\nimport { AreasOfExpertiseSearchBox } from './AreasOfExpertiseSearchBox';\nimport type { AreasOfExpertiseProps } from './ViewModel/AreasOfExpertiseProps.csharp';\n\nexport interface AreasOfExpertiseState extends SearchState {\n internalSearchParams: SearchCriteria;\n totalCount: number;\n}\n\nexport class AreasOfExpertise extends SearchBase {\n render() {\n const { facets, translations, searchUrl } = this.props;\n const { searchParams, totalCount } = this.state;\n const { selectedFacets, phrase } = searchParams;\n\n const handleSearchPhraseClick = (searchPhrase: string) => {\n this.handleQueryChange(searchPhrase);\n };\n\n const handleTotalCountChange = (totalCount: number) => this.setState({ totalCount });\n\n return (\n
    \n \n
    \n void) => (\n <>\n {facets.map(facet => (\n \n ))}\n \n )}\n />\n
    \n
    \n \n
    \n

    {translations.results}

    \n , EmployeeSearchResult>\n baseUrl={searchUrl}\n searchParams={this.getBaseSearchQueryParameters(searchParams)}\n debounceTime={200}\n take={24}\n translations={translations}\n onTotalCountChanged={handleTotalCountChange}\n >\n {({ data }) => }\n \n
    \n
    \n
    \n );\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"AreasOfExpertise\":\"QatFWoj9q8KVpXEgT_mZ\",\"Filters\":\"sooib2KdD37isGDojxUh\",\"FiltersButton--collapseOpened\":\"IdzO7Ni7nXVUzZOm2wRQ\",\"Body\":\"uWPJhv_o3FdcDOafPWKY\",\"Result\":\"lQ_snjKYlJAwljFxse6x\"};","// extracted by mini-css-extract-plugin\nexport default {\"Content\":\"ZgXVgEgkOVHpOr6mpnZu\",\"ContentInner\":\"pxYchGNIM3U95N_8sY2T\",\"Variant--solid\":\"zsrYitxhmI4Rdxl8AcId\",\"Variant--dark\":\"islhpR1mAUILJUWXwzyQ\",\"Variant--light\":\"jKXXdVBjCJtZSjGaH5W6\",\"Variant--white\":\"te60PfIJAvlwZ2RBbGqe\",\"Variant--darkGrey\":\"TexQCEpa1Pxt8vxuAnSg\",\"Variant--grey\":\"IwFUcB57MlFBnob9VBaL\",\"Variant--hidden\":\"o80VkuFKdpLspcd2K6XW\",\"Variant--outline\":\"Olc6nSAggSyJcD4ibmtm\",\"Variant--none\":\"C5aub0yOxUDkiCFlS8yJ\",\"Variant--fullWidth\":\"xDVLidDZzMTkaeSrHdsG\",\"Variant--withBoxShadow\":\"xHFDbzdAVfTKh2HoSe66\",\"Variant--rounded\":\"sV6oYIkpAq8t5nvh8d6L\"};","// extracted by mini-css-extract-plugin\nexport default {\"AccordionExpander\":\"GNG_gRf6Dl3NsaHoWAUO\",\"ButtonContent\":\"YSRmfctHOQ5noBfQfMH5\",\"Content\":\"DnD1xRazitrvmLCwsQvo\",\"Icon\":\"MFUfNtxb_KMTBmiHESl8\",\"Variant--solid\":\"OyyOerhMVj5mV5WQNX5V\",\"Variant--light\":\"upGiZW1ExBMMWpFJfoEk\",\"Variant--outline\":\"tp0nNQ3GB8nINm8Qt10r\",\"Variant--dark\":\"KOz68aX_1HLGwsoctqxH\",\"Variant--grey\":\"NcVBerSqctjTNIFktrBz\",\"Variant--hidden\":\"UM1jfJqOS1COdaoBDFKC\",\"Variant--white\":\"xZxJs8W876NY1tCMuMwq\",\"Variant--rounded\":\"rKI7GwQpi4Grhjcbx6c7\"};","import classNames from 'classnames';\nimport * as React from 'react';\nimport type { AccordionIcon } from '../Types/AccordionIcon';\nimport type { AccordionColor } from '~/Partials/AccordionComponent/Types/AccordionColor';\nimport type { AccordionVariant } from '~/Partials/AccordionComponent/Types/AccordionItemVariant';\nimport type { ButtonProps } from '~/Partials/Button/Button';\nimport { Button } from '~/Partials/Button/Button';\nimport { ButtonType } from '~/Partials/Button/ButtonType.csharp';\nimport { SvgIcon } from '~/Partials/SvgIcon/SvgIcon';\nimport { assertNever } from '~/Partials/Utils/typeUtils';\nimport styles from './AccordionExpander.module.css';\n\nexport interface BaseAccordionExpanderProps\n extends Required> {\n expanded: boolean;\n variant?: AccordionVariant;\n color?: AccordionColor;\n className?: string;\n}\n\nexport interface AccordionExpanderProps extends BaseAccordionExpanderProps {\n iconType?: AccordionIcon;\n}\n\nexport const AccordionExpander: React.FC> = props => {\n const {\n children,\n expanded,\n iconType = 'default',\n variant = 'solid',\n color = 'grey',\n className,\n ...otherProps\n } = props;\n\n const resolveIcon = () => {\n switch (iconType) {\n case 'chevron':\n return expanded ? 'chevron-up' : 'chevron-down';\n case 'default':\n return expanded ? 'minus' : 'plus';\n default:\n assertNever(iconType);\n }\n };\n\n return (\n \n
    \n
    {children}
    \n \n
    \n \n );\n};\n","import classNames from 'classnames';\nimport uniqueId from 'lodash/uniqueId';\nimport * as React from 'react';\nimport type { ReactNode } from 'react';\nimport { assertNever } from '../Utils/typeUtils';\nimport { Collapse } from '~/Partials/Collapse/Collapse';\nimport type { Theme } from '~/Utils/Theme';\nimport { themeDefaultValues } from '~/Utils/Theme';\nimport styles from './AccordionItem.module.css';\nimport { AccordionExpander } from './Components/AccordionExpander';\nimport type { AccordionExpanderProps, BaseAccordionExpanderProps } from './Components/AccordionExpander';\nimport { useAccordionContentRenderer } from './Hooks/useAccordionContentRenderer';\nimport type { AccordionIcon } from './Types/AccordionIcon';\nimport type { AccordionSpacing } from './Types/AccordionSpacing';\n\ninterface BaseAccordionItemProps extends Pick {\n children: ReactNode;\n index?: string;\n initialExpanded?: boolean;\n isExpandable?: boolean;\n theme?: Theme;\n contentSpacing?: AccordionSpacing;\n externallyExpanded?: boolean;\n lazyRender?: boolean;\n className?: string;\n contentClassName?: string;\n}\n\nexport interface DefaultAccordionItemProps extends BaseAccordionItemProps {\n headerContent: ReactNode;\n expanderClassName?: string;\n iconType?: AccordionIcon;\n type?: 'default';\n}\n\nexport interface CustomAccordionItemProps extends BaseAccordionItemProps {\n renderCustomExpander: (expanderProps: BaseAccordionExpanderProps) => ReactNode;\n type: 'custom';\n}\n\nexport type AccordionItemProps = DefaultAccordionItemProps | CustomAccordionItemProps;\n\nexport const AccordionItem: React.FC> = props => {\n const {\n children,\n index,\n className,\n contentClassName,\n externallyExpanded,\n type,\n contentSpacing,\n lazyRender = false,\n initialExpanded = false,\n isExpandable = true,\n variant = 'solid',\n color = 'grey',\n theme = themeDefaultValues,\n } = props;\n const { withRoundedCorners, withBoxShadow } = theme;\n\n const [expanded, setExpanded] = React.useState(initialExpanded);\n const accordionId = index || uniqueId('AccordionItem__');\n\n React.useEffect(() => {\n externallyExpanded && setExpanded(true);\n }, [externallyExpanded]);\n\n const { content, onToggleClick, onCollapsed } = useAccordionContentRenderer(children, lazyRender, expanded);\n\n const onHeaderClicked = () => {\n onToggleClick();\n setExpanded(!expanded);\n };\n\n const renderExpander = () => {\n const baseExpanderProps: BaseAccordionExpanderProps = {\n onClick: onHeaderClicked,\n 'aria-expanded': expanded,\n 'aria-controls': accordionId,\n expanded,\n disabled: !isExpandable,\n color,\n variant,\n };\n\n switch (type) {\n case 'default':\n case undefined:\n const { iconType, headerContent, expanderClassName } = props;\n\n return (\n \n {headerContent}\n \n );\n case 'custom':\n const { renderCustomExpander } = props;\n\n return renderCustomExpander(baseExpanderProps);\n default:\n assertNever(props);\n }\n };\n\n return (\n \n {renderExpander()}\n \n
    \n {content}\n
    \n
    \n \n );\n};\n","import * as React from 'react';\nimport type { ReactNode } from 'react';\n\nexport const useAccordionContentRenderer = (children: ReactNode, lazy: boolean, expanded: boolean) => {\n const [shouldRenderContent, setShouldRenderContent] = React.useState(!lazy);\n\n React.useEffect(() => {\n setShouldRenderContent(!lazy || expanded);\n }, [lazy]);\n\n const onToggleClick = () => {\n if (lazy && !shouldRenderContent) {\n setShouldRenderContent(true);\n }\n };\n\n const onCollapsed = () => {\n if (lazy && !expanded) {\n setShouldRenderContent(false);\n }\n };\n\n return {\n content: shouldRenderContent ? children : null,\n onToggleClick,\n onCollapsed,\n };\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"Inner\":\"EwPhzUN1NfTBa1XOsTE6\",\"ActivityIndicatorRotate\":\"ZNgVI5R_Ahgk3DnOyUhN\",\"Inner--cover\":\"TVMntCe8qkWIdDcQxQb6\",\"Outer\":\"FxrXNHIEItswETCvk14E\",\"Children\":\"rK8S3lKkJdvsHyzk1dZ1\"};","import classNames from 'classnames';\nimport * as React from 'react';\nimport styles from './ActivityIndicator.module.css';\n\nexport interface ActivityIndicatorProps {\n cover?: boolean;\n active?: boolean;\n modal?: boolean;\n children?: string | React.ReactNode;\n}\n\nconst ModalWrapper: React.FC> = props => {\n const { visible, children } = props;\n\n return (\n \n {children}\n \n );\n};\n\nexport const ActivityIndicator: React.FC> = React.memo(props => {\n const { modal = true, cover, active = true, children } = props;\n\n const Wrapper = modal ? ModalWrapper : React.Fragment;\n const wrapperProps = modal ? { visible: active } : {}; // react.Fragment cannot have any props\n\n return (\n \n \n {children && (\n {children}\n )}\n \n );\n});\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport type { ReactNode } from 'react';\nimport type { StrictOmit } from '../Utils/typeUtils';\nimport { useTheme } from '~/Features/Layouts/Theme/Context/ThemeContextProvider';\nimport type { Theme } from '~/Utils/Theme';\nimport styles from './Button.module.css';\nimport type { ButtonSize } from './ButtonSize.csharp';\nimport type { ButtonTier } from './ButtonTier.csharp';\nimport { ButtonType } from './ButtonType.csharp';\n\ntype HtmlButtonType = 'submit' | 'reset' | 'button';\n\nexport interface DefaultButtonProps {\n children: ReactNode;\n className?: string;\n htmltype?: HtmlButtonType;\n /* STYLES PROPS */\n size?: ButtonSize;\n tier?: ButtonTier;\n type?: ButtonType;\n theme?: Theme;\n}\n\ntype NativeButtonAttributes = Pick<\n React.ButtonHTMLAttributes,\n | 'aria-selected'\n | 'aria-controls'\n | 'aria-expanded'\n | 'role'\n | 'aria-haspopup'\n | 'aria-describedby'\n | 'aria-label'\n | 'tabIndex'\n | 'title'\n | 'id'\n | 'disabled'\n | 'draggable'\n | 'onClick'\n | 'onFocus'\n | 'onMouseDown'\n>;\n\nexport type ButtonProps = DefaultButtonProps & NativeButtonAttributes;\n\nexport const Button = React.forwardRef((props, ref) => {\n const { children, theme, ...passThroughProps } = props;\n const { type } = passThroughProps;\n\n if (type && type !== ButtonType.Clear) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n {children}\n \n );\n});\n\ntype RawButtonProps = StrictOmit;\n\nconst RawButton = React.forwardRef((props, ref) => {\n const { className, children, size, tier, type, htmltype = 'button', ...otherProps } = props;\n\n const getButtonClassName = () =>\n classNames(\n type && styles[`Variant--${type}`],\n tier && styles[`Variant--${tier}`],\n size && styles[`Variant--${size}`],\n className\n );\n\n return (\n \n );\n});\n\nconst ThemedButton = React.forwardRef((props, ref) => {\n const contextualTheme = useTheme();\n const { children, className, theme = contextualTheme, ...additionalProps } = props;\n\n const { withBoxShadow, withRoundedCorners } = theme;\n\n return (\n \n {children}\n \n );\n});\n","// This code was generated by a Reinforced.Typings tool.\n// Changes to this file may cause incorrect behavior and will be lost if\n// the code is regenerated.\n\nexport enum ButtonSize {\n\tXSmall = \"xSmall\",\n\tResponsiveFromXSmallToSmall = \"responsiveFromXSmallToSmall\",\n\tSmall = \"small\",\n\tResponsiveFromSmallToMedium = \"responsiveFromSmallToMedium\",\n\tResponsiveFromSmallToLarge = \"responsiveFromSmallToLarge\",\n\tResponsiveFromMediumToSmall = \"responsiveFromMediumToSmall\",\n\tMedium = \"medium\",\n\tResponsiveFromMediumToLarge = \"responsiveFromMediumToLarge\",\n\tResponsiveFromLargeToSmall = \"responsiveFromLargeToSmall\",\n\tLarge = \"large\",\n\tResponsiveFromLargeToXLarge = \"responsiveFromLargeToXLarge\",\n\tXLarge = \"xLarge\"\n}\n","// This code was generated by a Reinforced.Typings tool.\n// Changes to this file may cause incorrect behavior and will be lost if\n// the code is regenerated.\n\nexport enum ButtonTier {\n\tPrimary = \"primary\",\n\tSecondary = \"secondary\",\n\tTertiary = \"tertiary\",\n\tRed = \"red\",\n\tLegacyPrimary = \"legacyPrimary\"\n}\n","// This code was generated by a Reinforced.Typings tool.\n// Changes to this file may cause incorrect behavior and will be lost if\n// the code is regenerated.\n\nexport enum ButtonType {\n\tSolid = \"solid\",\n\tOutline = \"outline\",\n\tClear = \"clear\"\n}\n","import type { RefObject } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useIsMounted } from '~/Utils/Hooks/useIsMounted';\n\nexport interface UseCollapseProps {\n isOpen: boolean;\n content: RefObject;\n}\n\n// In case of nested collapse components, we need to inherit the visibility from the parent so that\n// focusable children inside expanded collapses nested inside collapsed collapses are not focusable.\n// Unfortunately, jest is not able to simulate this behavior thus we are not able to test it.\ntype InheritVisibility = undefined;\n\ntype Visibility = 'hidden' | InheritVisibility;\ntype Overflow = 'hidden' | 'visible';\n\nconst getHeight = (content: RefObject) => {\n if (content && content.current && content.current.scrollHeight) {\n return `${content.current.scrollHeight}px`;\n }\n\n return '0px';\n};\n\nexport const useCollapse = (props: UseCollapseProps) => {\n const { isOpen, content } = props;\n\n const [height, setHeight] = useState(isOpen ? 'auto' : '0');\n const [overflow, setOverflow] = useState(isOpen ? 'visible' : 'hidden');\n const [visibility, setVisibility] = useState(isOpen ? undefined : 'hidden');\n const isMounted = useIsMounted();\n\n const toggleStyles = () => {\n if (isOpen) {\n setHeight('auto');\n setOverflow('visible');\n setVisibility(undefined);\n } else {\n setVisibility('hidden');\n }\n };\n\n useEffect(() => {\n if (isOpen) {\n setVisibility(undefined);\n\n if (!isMounted) {\n setHeight('auto');\n setOverflow('visible');\n } else {\n setHeight(getHeight(content));\n }\n } else if (isMounted) {\n setHeight(getHeight(content));\n\n // The magic:\n // Setting collapsed style after setting height to enable smooth transition based on height.\n // It must be wrapped with setTimeout to ensure that the state update is not batched with the height update.\n setTimeout(() => {\n window.requestAnimationFrame(() => {\n setOverflow('hidden');\n setHeight('0');\n });\n });\n }\n }, [isOpen]);\n\n return {\n toggleStyles,\n style: {\n overflow,\n visibility,\n height,\n },\n };\n};\n","/*\n * Based on: https://github.com/SparebankenVest/react-css-collapse\n */\n\nimport * as React from 'react';\nimport type { AriaAttributes } from 'react';\nimport { useCollapse } from './useCollapse';\n\nexport interface CollapseProps extends AriaAttributes {\n children: React.ReactNode;\n isOpen?: boolean;\n onRest?: () => void;\n className?: string;\n withMarginTransition?: boolean;\n}\n\nexport const Collapse: React.FC = props => {\n const { children, onRest, isOpen = false, className, withMarginTransition, ...rest } = props;\n\n const content = React.useRef(null);\n\n const { toggleStyles, style } = useCollapse({\n isOpen,\n content,\n });\n\n const onTransitionEnd = (event: React.TransitionEvent) => {\n if (event.target === content.current && event.propertyName === 'height') {\n toggleStyles();\n\n onRest?.();\n }\n };\n\n const styles = {\n willChange: withMarginTransition ? 'height, margin' : 'height',\n ...style,\n };\n\n return (\n
    \n {children}\n
    \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"EmployeeCard\":\"lEJuinvPSICSsd9P1kHa\",\"Content\":\"Cg8v1uEgKR0iH6NmW8vK\",\"Heading\":\"B3T0IaddiWcrVEAKTkvc\",\"Details\":\"cCFXNw2OZ1SeKz3JZPvu\",\"JobTitles\":\"OvyTzH7DyRFUYFx69ONp\",\"JobTitle\":\"o2u7LkI4jcl27RKgGSx9\",\"Image\":\"eSnN4cld6XHynKKquWmO\",\"Variant--topBottomLetter\":\"tZFo_P18mHOMdnBwqe9J\",\"IconFirstName\":\"HcC9Ceage06ff0Z6q0bl\",\"IconLastName\":\"Lk3fYyKmfobDO4KEICMI\",\"Variant--bottomTopLetter\":\"Kv0k6tuCxsoGbhq2ssZA\"};","import classNames from 'classnames';\nimport * as React from 'react';\nimport { List } from '../List/List';\nimport type { PictureProps } from '../Picture/Picture';\nimport { Picture } from '../Picture/Picture';\nimport type { IconName } from '../SvgIcon/SvgIcon';\nimport { SvgIcon } from '../SvgIcon/SvgIcon';\nimport type { LetterLocation } from '~/Blocks/HeroLegacy/LetterLocation.csharp';\nimport styles from './EmployeeCard.module.css';\n\nexport interface EmployeeCardProps {\n firstName: string;\n lastName: string;\n jobTitles: string[];\n linkUrl: string;\n letterLocation?: LetterLocation;\n picture?: PictureProps;\n}\n\nexport const EmployeeCard: React.FC> = React.memo(props => {\n const { firstName, lastName, jobTitles, linkUrl, picture, letterLocation } = props;\n\n return (\n \n
    \n {picture && }\n {firstName && (\n \n )}\n {lastName && (\n \n )}\n
    \n
    \n

    \n {firstName} {lastName}\n

    \n\n {jobTitles && (\n
    \n (\n
  • \n {item}\n
  • \n )}\n />\n
    \n )}\n
    \n \n );\n});\n","import { isErrorWithName } from '~/Partials/Utils/utils';\n\nconst errorName = 'ApiResponseError';\n\nexport class ApiResponseError extends Error {\n constructor(message: string) {\n super(message);\n this.name = errorName;\n }\n}\n\nexport const isApiResponseError = (error: unknown): error is ApiResponseError => isErrorWithName(error, errorName);\n","import { isErrorWithName } from '~/Partials/Utils/utils';\n\nexport const errorName = 'MappingError';\n\nexport class MappingError extends Error {\n constructor(error: unknown) {\n // @ts-expect-error 'cause' is theoretically only supported for ES2022 and above but it will not break anything for unsupported\n super('An error occurred while mapping the response data', { cause: error });\n this.name = errorName;\n }\n}\n\nexport const isMappingError = (error: unknown): error is MappingError => isErrorWithName(error, errorName);\n","import type { QueryKey, UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport type { CancelTokenSource } from 'axios';\nimport axios from 'axios';\nimport { getSafeErrorMessage } from '../Utils/errorUtils';\nimport { axiosWrapper } from '~/Partials/FetchData/axiosWrapper';\nimport { debounceAsync } from '~/Partials/Utils/debounceAsync';\nimport type { StrictOmit } from '~/Partials/Utils/typeUtils';\nimport { MappingError } from './MappingError';\nimport type { DependantQueryData } from './types';\n\nexport const withCancellation = async (\n request: (source: CancelTokenSource) => Promise,\n signal: AbortSignal\n): Promise => {\n const source = axios.CancelToken.source();\n const handler = () => source.cancel();\n\n signal.addEventListener('abort', handler);\n\n try {\n return await request(source);\n } finally {\n signal.removeEventListener('abort', handler);\n }\n};\n\nexport interface DebounceOptions {\n useDebounce?: boolean;\n wait?: number;\n}\n\ninterface DependantQueriesDataProvider {\n getDependantQueriesData?: (data: TData) => DependantQueryData[];\n}\n\nexport interface AxiosQueryOptions\n extends DependantQueriesDataProvider {\n queryParams?: object;\n queryOptions?: StrictOmit<\n UseQueryOptions,\n 'queryKey' | 'queryFn' | 'select' | 'meta'\n >;\n debounceOptions?: DebounceOptions;\n method?: 'GET' | 'POST';\n}\n\nexport interface AxiosQueryResult extends StrictOmit, 'isError' | 'error'> {\n hasError: boolean;\n errorMessage: string | undefined;\n}\n\nexport function useAxiosQuery(\n url: string,\n queryKey: TQueryKey,\n options?: AxiosQueryOptions\n): AxiosQueryResult;\n\nexport function useAxiosQuery(\n url: string,\n queryKey: QueryKey,\n options: AxiosQueryOptions,\n dataSelector: (data: TResponseData) => TData\n): AxiosQueryResult;\n\nexport function useAxiosQuery(\n url: string,\n queryKey: TQueryKey,\n options?: AxiosQueryOptions,\n dataSelector?: (data: TResponseData) => TData\n): AxiosQueryResult {\n const {\n queryParams,\n debounceOptions,\n queryOptions,\n method = 'GET',\n ...dependantQueriesDataProvider\n } = { ...options };\n const { useDebounce = true, wait = 300 } = { ...debounceOptions };\n const queryClient = useQueryClient();\n\n const axiosRequest = (source: CancelTokenSource) =>\n axiosWrapper\n .request({\n url,\n method,\n cancelToken: source.token,\n params: queryParams,\n })\n .then(response => {\n try {\n return dataSelector ? dataSelector(response.data) : response.data;\n } catch (error) {\n throw new MappingError(error);\n }\n });\n\n const request = useDebounce ? debounceAsync(axiosRequest, wait) : axiosRequest;\n\n const queryResult = useQuery({\n queryKey,\n queryFn: async context => {\n const { signal, meta } = context;\n const { getDependantQueriesData } = meta as DependantQueriesDataProvider;\n\n const data = await withCancellation(source => request(source), signal);\n\n if (getDependantQueriesData) {\n const otherQueriesData = getDependantQueriesData(data);\n\n for (const otherQueryData of otherQueriesData) {\n queryClient.setQueryData(otherQueryData.queryKey, otherQueryData.data);\n }\n }\n\n return data;\n },\n meta: dependantQueriesDataProvider,\n ...queryOptions,\n });\n\n return {\n ...queryResult,\n hasError: queryResult.isError,\n errorMessage: getSafeErrorMessage(queryResult.error),\n };\n}\n","import { QueryClient } from '@tanstack/react-query';\nimport { isAxiosError } from 'axios';\nimport { isMappingError } from './MappingError';\n\nconst mightBeTransientErrorStatusCode = (statusCode: number) => {\n switch (statusCode) {\n case 401:\n case 403:\n return false;\n default:\n return true;\n }\n};\n\nconst isTransientError = (error: unknown) =>\n !isMappingError(error) &&\n (!isAxiosError(error) || !error.response?.status || mightBeTransientErrorStatusCode(error.response.status));\n\nexport class ReactQueryClientProvider {\n private static client: QueryClient;\n\n private static FIVE_MINUTES = 300 * 1000;\n\n public static getClient = () => {\n if (!ReactQueryClientProvider.client) {\n ReactQueryClientProvider.client = new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: ReactQueryClientProvider.FIVE_MINUTES,\n refetchInterval: ReactQueryClientProvider.FIVE_MINUTES,\n refetchOnWindowFocus: query =>\n query.isStale() && (query.state.status !== 'error' || isTransientError(query.state.error)),\n retry: (failureCount, error) => failureCount < 3 && isTransientError(error),\n },\n },\n });\n }\n\n return ReactQueryClientProvider.client;\n };\n}\n","import { QueryClientProvider } from '@tanstack/react-query';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\nimport * as React from 'react';\nimport { ReactQueryClientProvider } from '~/Partials/FetchData/Queries/ReactQueryClientProvider';\n\nexport function withQueryContext(\n Component: React.FC>\n): React.FC> {\n return (props: TProps) => (\n \n \n \n \n );\n}\n","import { isErrorWithName } from '~/Partials/Utils/utils';\n\nconst errorName = 'QueryValidationError';\n\nexport class QueryValidationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = errorName;\n }\n}\n\nexport const isQueryValidationError = (error: unknown): error is QueryValidationError =>\n isErrorWithName(error, errorName);\n","import { isAxiosError } from 'axios';\nimport { isApiResponseError } from '~/Partials/FetchData/Queries/ApiResponseError';\nimport { isQueryValidationError } from '~/Partials/FetchData/Queries/QueryValidationError';\n\nexport const getSafeErrorMessage = (error: unknown, fallbackMessage?: string) => {\n if (error) {\n if (isQueryValidationError(error)) {\n return error.message;\n }\n\n if (isApiResponseError(error)) {\n return error.message;\n }\n\n return fallbackMessage;\n }\n\n return undefined;\n};\n\nexport const isForbiddenForProxyLoginUser = (error: unknown) => isAxiosError(error) && error.response?.status === 403;\n","import axios from 'axios';\nimport { getContentLanguage } from '~/Features/Configuration/Utils/languageUtils';\n\nexport const axiosWrapper = axios.create({\n paramsSerializer: {\n indexes: null, // key=value instead of key[]=value\n },\n});\n\naxiosWrapper.interceptors.request.use(config => {\n const contentLanguage = getContentLanguage();\n\n if (contentLanguage) {\n config.headers.set('X-Api-Language', contentLanguage);\n }\n\n return config;\n});\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useFrontendSettings } from '~/Features/Configuration/Hooks/useFrontendSettings';\nimport { updateFilterValues } from './Facets/FacetsUtils';\n\ninterface ChoiceAutoCompleteVariants {\n definitions: { id: string; label?: string }[];\n selectedValues: string[];\n onChange: (values: string[]) => void;\n inputNodeId: string;\n className?: string;\n}\n\nexport const ChoiceAutoComplete: React.FC> = ({\n definitions,\n selectedValues,\n inputNodeId,\n onChange,\n className,\n}) => {\n const { checkboxVariant } = useFrontendSettings();\n\n const handleInputChange = (e: React.ChangeEvent) => {\n const { name } = e.target;\n const newValues = updateFilterValues(selectedValues, name);\n\n onChange(newValues);\n };\n\n return (\n
      \n {definitions.map(definition => {\n const id = `${inputNodeId}-${definition.id}`;\n\n return (\n
    • \n
      \n \n \n
      \n
    • \n );\n })}\n
    \n );\n};\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport type { ReactNode } from 'react';\nimport { Button } from '../Button/Button';\nimport { SvgIcon } from '../SvgIcon/SvgIcon';\nimport { Collapse } from '~/Partials/Collapse/Collapse';\nimport styles from './Filters.module.css';\nimport { FiltersWrapper } from './FiltersWrapper';\n\ninterface FiltersTranslations {\n hideFilters: string;\n showFilters: string;\n filters: string;\n}\n\ninterface CollapseFiltersProps {\n translations: FiltersTranslations;\n filters: ReactNode | ((toggleFilters: () => void) => ReactNode);\n shouldDisplayFilters?: () => boolean;\n buttonOpenedClassname?: string;\n contentExpandedClassname?: string;\n}\n\nexport const CollapseFilters: React.FunctionComponent> = props => {\n const { translations, filters, shouldDisplayFilters, buttonOpenedClassname, contentExpandedClassname } = props;\n const [isOpened, setIsOpened] = React.useState(false);\n const [isExpanded, setIsExpanded] = React.useState(false);\n const toggleCollapse = () => setIsOpened(!isOpened);\n\n return (\n <>\n {(shouldDisplayFilters === undefined || shouldDisplayFilters()) && (\n \n <>\n \n {isOpened ? (\n <>\n {translations.hideFilters}\n \n ) : (\n <>\n {translations.showFilters}\n \n )}\n \n setIsExpanded(!isExpanded)}\n >\n {typeof filters === 'function' ? filters(toggleCollapse) : filters}\n \n \n \n )}\n \n );\n};\n","import type { SelectedFacet } from '../../../Search/SelectedFacet.csharp';\n\nconst updateSelectedFacetValue = (selectedFacets: SelectedFacet[], newSelectedFacets: SelectedFacet) => {\n const oldSelectedFacets = selectedFacets.filter(z => z.id !== newSelectedFacets.id);\n\n return [...oldSelectedFacets, newSelectedFacets];\n};\n\nconst updateFilterValues = (selectedFacetValues: string[], optionId: string) => {\n if (selectedFacetValues.indexOf(optionId) === -1) {\n return [...selectedFacetValues, optionId];\n }\n\n return selectedFacetValues.filter(item => item !== optionId);\n};\n\nexport { updateSelectedFacetValue, updateFilterValues };\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport styles from './FiltersWrapper.module.css';\n\ninterface FiltersWrapperTranslations {\n filters: string;\n}\n\nexport interface FiltersWrapperProps {\n children: React.ReactElement;\n translations: FiltersWrapperTranslations;\n wrapper?: boolean;\n}\n\nexport const FiltersWrapper: React.FunctionComponent> = props => {\n const { children, translations, wrapper = true } = props;\n\n return (\n
    \n

    {translations.filters}

    \n
    \n
    {children}
    \n
    \n
    \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"Wrapper\":\"KAl816cvhCOyP34jgQyZ\",\"Variant--wrapper\":\"DptV4VPqXGfjF0e5wN7f\",\"Outer\":\"lpnXan5QohHunTRWN8e4\",\"Inner\":\"EbO_uUsJjnT1L2k8lJFw\"};","import * as React from 'react';\nimport type { ReactNode } from 'react';\n\ninterface ListProps extends Pick, 'role' | 'tabIndex' | 'onKeyDown'> {\n items: ReadonlyArray;\n renderItem: (item: T, index: number) => ReactNode;\n className?: string;\n}\n\nconst ListComponent = (props: ListProps, ref?: React.Ref) => {\n const { items, renderItem, className, ...otherProps } = props;\n\n return (\n
      \n {items.map((item, index) => renderItem(item, index))}\n
    \n );\n};\n\ntype GenericForwardRefList = (\n props: ListProps & { ref?: React.Ref }\n) => React.ReactElement;\n\nexport const List = React.forwardRef(ListComponent) as GenericForwardRefList;\n","import * as React from 'react';\nimport type { ReactNode } from 'react';\nimport useInfiniteScroll from 'react-infinite-scroll-hook';\n\nexport interface InfiniteScrollProps {\n hasError: boolean;\n loading: boolean;\n hasMoreData: boolean;\n loadMoreData: VoidFunction;\n renderData: () => ReactNode;\n topThreshold?: number;\n}\n\nexport const InfiniteScroll: React.FC> = props => {\n const { loading, hasError, hasMoreData, topThreshold = 400, loadMoreData, renderData, children } = props;\n\n const [infiniteScrollTriggerRef] = useInfiniteScroll({\n loading,\n hasNextPage: hasMoreData,\n onLoadMore: loadMoreData,\n disabled: hasError,\n rootMargin: `0px 0px ${topThreshold}px`,\n });\n\n return (\n
    \n {renderData()}\n
    {children}
    \n
    \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"CountInfo\":\"oT24jQmP02EXgX5mmNPg\"};","// extracted by mini-css-extract-plugin\nexport default {\"PaginationStatus\":\"VQF0u2qRs2qtpyVLGNYs\",\"StatusButton\":\"YBPRkb9AIKTsMfnifn6d\",\"DownArrow\":\"cVzq0GUVWaVur9PebxdU\"};","import * as React from 'react';\nimport { Button } from '../../Button/Button';\nimport { ButtonType } from '../../Button/ButtonType.csharp';\nimport { SvgIcon } from '../../SvgIcon/SvgIcon';\nimport styles from './PaginationStatus.module.css';\n\nexport interface BasePaginationStatusTranslations {\n showMore: string;\n error: string;\n searching: string;\n noResultsFound: string;\n}\n\nexport interface PaginationStatusWithRetryTranslations extends BasePaginationStatusTranslations {\n tryAgain: string;\n}\n\ninterface BasePaginationStatusProps {\n hasError: boolean;\n loading: boolean;\n hasMoreData: boolean;\n loadMoreData: VoidFunction;\n hasNoResults: boolean;\n}\n\ninterface PaginationStatusWithRetryProps extends BasePaginationStatusProps {\n translations: PaginationStatusWithRetryTranslations;\n allowRetry: true;\n}\n\ninterface PaginationStatusWithoutRetryProps extends BasePaginationStatusProps {\n translations: BasePaginationStatusTranslations;\n allowRetry?: false;\n}\n\nexport type PaginationStatusProps = PaginationStatusWithRetryProps | PaginationStatusWithoutRetryProps;\n\nexport const PaginationStatus: React.FC> = props => {\n const { loading, hasError, allowRetry, hasMoreData, loadMoreData, hasNoResults, translations } = props;\n\n return (\n
    \n {loading || hasError || hasNoResults ? (\n <>\n {loading &&

    {translations.searching}

    }\n {hasError && (\n <>\n

    {translations.error}

    \n {allowRetry && hasMoreData && (\n \n )}\n \n )}\n {hasNoResults &&

    {translations.noResultsFound}

    }\n \n ) : (\n hasMoreData && (\n \n )\n )}\n
    \n );\n};\n","import uniqueId from 'lodash/uniqueId';\nimport * as React from 'react';\nimport type { ReactNode } from 'react';\nimport ExecutionContext from '../../ExecutionContext';\nimport type { SearchResultResponse } from '../../Search/SearchResultResponse.csharp';\nimport { FormattedText } from '../../Txt/TxtBase';\nimport { RequestHelper } from '../RequestHelper/RequestHelper';\nimport type { QueryParameter } from '~/Partials/SearchBase/QueryParameterUtils';\nimport { buildAbsoluteUrlWithQueryParameters, formatQueryParameters } from '~/Partials/SearchBase/QueryParameterUtils';\nimport { InfiniteScroll } from './InfiniteScroll';\nimport styles from './PagedFetchData.module.css';\nimport type {\n BasePaginationStatusTranslations,\n PaginationStatusWithRetryTranslations,\n} from './PaginationStatus/PaginationStatus';\nimport { PaginationStatus } from './PaginationStatus/PaginationStatus';\n\ninterface PagedFetchDataTranslations {\n showingFromTo: string;\n noResultsFound: string;\n showingNumber?: string;\n showingOf?: string;\n}\n\ninterface BasePagedFetchDataProps {\n baseUrl: string;\n take: number;\n searchParams?: QueryParameter[];\n debounceTime?: number;\n initSkip?: number;\n autoRun?: boolean;\n initialData?: SearchResultResponse;\n children?: (params: { data: ElementsType }) => ReactNode;\n allDataRender?: (params: { data: ElementsType[] }) => ReactNode;\n onTotalCountChanged?: (totalCount: number) => void;\n listClassName?: string;\n}\n\ninterface PagedFetchDataWithInfiniteLoadProps extends BasePagedFetchDataProps {\n translations: PagedFetchDataTranslations & PaginationStatusWithRetryTranslations;\n loadOnScroll: true;\n}\n\ninterface PagedFetchDataWithManualLoadProps extends BasePagedFetchDataProps {\n translations: PagedFetchDataTranslations & BasePaginationStatusTranslations;\n loadOnScroll?: false;\n}\n\nexport type PagedFetchDataProps =\n | PagedFetchDataWithInfiniteLoadProps\n | PagedFetchDataWithManualLoadProps;\n\ninterface PagedFetchDataState {\n data: ElementsType[];\n skip: number;\n loading: boolean;\n totalCount?: number;\n error?: string;\n}\n\nexport class PagedFetchData<\n ResponseType extends SearchResultResponse,\n ElementsType,\n> extends React.PureComponent, PagedFetchDataState> {\n newDataSeparatorId: string;\n\n static defaultProps = {\n initSkip: 0,\n };\n\n constructor(props: PagedFetchDataProps) {\n super(props);\n\n const initialItems = props.initialData?.items || [];\n const totalCount = props.initialData?.totalCount;\n\n this.state = {\n data: initialItems,\n skip: 0,\n totalCount,\n loading: false,\n error: undefined,\n };\n\n this.newDataSeparatorId = uniqueId('NewDataSeparator__');\n }\n\n componentDidUpdate = (oldProps: PagedFetchDataProps) => {\n const { searchParams, initSkip = 0 } = this.props;\n\n const haveParamsChanged = () => {\n if (oldProps.searchParams === undefined && searchParams === undefined) {\n return false;\n }\n\n if (oldProps.searchParams === undefined || searchParams === undefined) {\n return true;\n }\n\n return formatQueryParameters(oldProps.searchParams) !== formatQueryParameters(searchParams);\n };\n\n if (haveParamsChanged()) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ data: [], skip: initSkip });\n }\n };\n\n handleLoadNewItems = () => {\n const { initSkip = 0 } = this.props;\n const { data } = this.state;\n\n this.setState({ skip: initSkip + data.length, error: undefined });\n };\n\n getSearchQueryString = () => {\n const { baseUrl, take, searchParams = [] } = this.props;\n const { skip, error } = this.state;\n\n return error\n ? ''\n : buildAbsoluteUrlWithQueryParameters(baseUrl, [\n ...searchParams,\n { name: 'skip', value: skip.toString() },\n { name: 'take', value: take.toString() },\n ]);\n };\n\n handleLoadNewData = (newData: ResponseType) => {\n const { onTotalCountChanged } = this.props;\n const { data } = this.state;\n this.setState({ data: data.concat(newData.items), totalCount: newData.totalCount });\n\n if (!ExecutionContext.IsServerSide()) {\n const newDataSeparator = document.getElementById(this.newDataSeparatorId);\n\n if (newDataSeparator) {\n newDataSeparator.focus({ preventScroll: true });\n }\n }\n\n !!onTotalCountChanged && onTotalCountChanged(newData.totalCount);\n };\n\n handleLoadDataError = (error: string) => {\n this.setState({ error, loading: false });\n };\n\n handleToggleLoading = (loadStatus: boolean) => {\n this.setState({ loading: loadStatus });\n };\n\n render() {\n const {\n debounceTime,\n children,\n translations,\n autoRun,\n initSkip = 0,\n loadOnScroll,\n allDataRender,\n listClassName,\n } = this.props;\n const { data, totalCount, error, loading, skip } = this.state;\n const dataLength = data.length + initSkip;\n const hasMoreData = (!autoRun && !totalCount) || (!!totalCount && totalCount !== dataLength);\n const hasNoResults = !loading && !error && dataLength === 0;\n\n const { showingFromTo, showingNumber, showingOf } = translations;\n\n const separatorIndex = skip - initSkip;\n\n const renderData = () =>\n data.length > 0 && (\n <>\n {!!allDataRender && allDataRender({ data })}\n {!!children && (\n
      \n {data.map((item, key) => (\n // eslint-disable-next-line react/no-array-index-key\n \n {key === separatorIndex && skip !== initSkip && (\n \n {FormattedText(showingFromTo, { from: key + 1, to: data.length })}\n \n )}\n {/* eslint-disable-next-line react/no-array-index-key */}\n
    • {children({ data: item })}
    • \n
      \n ))}\n
    \n )}\n \n );\n\n const hasError = !!error;\n\n const basePaginationStatusModel = {\n loading,\n hasError,\n hasMoreData,\n loadMoreData: this.handleLoadNewItems,\n hasNoResults,\n };\n\n return (\n <>\n \n url={this.getSearchQueryString()}\n debounceTime={debounceTime}\n autoRun={autoRun}\n onLoadData={(d: ResponseType) => this.handleLoadNewData(d)}\n onLoadDataError={(e: string) => this.handleLoadDataError(e)}\n onToggleLoading={(loadStatus: boolean) => this.handleToggleLoading(loadStatus)}\n />\n {!!data.length && !!totalCount && !!showingNumber && !!showingOf && (\n
    \n {`${showingNumber} ${data.length} ${showingOf} ${totalCount}`}\n
    \n )}\n {loadOnScroll ? (\n \n \n \n ) : (\n <>\n {renderData()}\n \n \n )}\n \n );\n }\n}\n","import type { SearchCriteria } from '../../Search/SearchCriteria.csharp';\nimport type { QueryParameter } from '../SearchBase/QueryParameterUtils';\nimport type { SelectedFacet } from '~/Features/Search/SelectedFacet.csharp';\n\nexport type ConversionFunction = (item: QueryParameter) => QueryParameter;\n\nexport const phraseParameterName = 'phrase';\n\nexport const getBaseSearchQueryParameters = (searchParams: SearchCriteria) => {\n const initialArray: QueryParameter[] = searchParams.phrase\n ? [{ name: phraseParameterName, value: searchParams.phrase }]\n : [];\n\n const convertToQueryParameter = (name: string, value: string) => ({ name, value });\n\n const combineIntoQueryParameters = (currentValue: QueryParameter[], facet: SelectedFacet) => [\n ...currentValue,\n ...facet.values.map(facetValue => convertToQueryParameter(facet.id, facetValue)),\n ];\n\n return searchParams.selectedFacets\n .filter(facet => facet.values.length > 0)\n .reduce(combineIntoQueryParameters, initialArray);\n};\n","export const constructImageSharpUrl = (baseUrl: string, width: number) => `${baseUrl}?width=${width}`;\n","import classNames from 'classnames';\nimport clamp from 'lodash/clamp';\nimport * as React from 'react';\nimport type { Theme } from '~/Utils/Theme';\nimport { themeDefaultValues } from '~/Utils/Theme';\nimport styles from './Picture.module.css';\nimport { constructImageSharpUrl } from './Utils/constructImageSharpUrl';\n\nexport interface PictureSource {\n allowedWidths: number[];\n sizes: string[];\n}\n\nexport interface PictureProfile {\n sources: PictureSource[];\n defaultWidth: number;\n}\n\nexport interface FocalPoint {\n x: number;\n y: number;\n}\n\nexport interface BaseImage {\n url: string;\n alt: string;\n focalPoint?: FocalPoint;\n lazyLoading?: boolean;\n}\n\nexport interface PictureDefinition extends BaseImage {\n profile: PictureProfile;\n}\n\nexport interface PictureProps extends PictureDefinition {\n theme?: Pick;\n className?: string;\n}\n\nexport const Picture: React.FC> = props => {\n const { url, alt, focalPoint, profile, className, theme = themeDefaultValues, lazyLoading = true } = props;\n\n const { withRoundedCorners } = theme;\n\n const createPicture = (pictureUrl: string, pictureAlt: string, pictureProfile: PictureProfile) => {\n const [mainSource] = pictureProfile.sources;\n const sourceSizes = mainSource.sizes.join(', ');\n const sourceSrcSets = mainSource.allowedWidths\n .map(width => `${constructImageSharpUrl(pictureUrl, width)} ${width}w`)\n .join(', ');\n\n const getPosition = (point: FocalPoint) => {\n const xPosition = clamp(point.x, 0, 1);\n const yPosition = clamp(point.y, 0, 1);\n\n return `${xPosition * 100}% ${yPosition * 100}%`;\n };\n\n return (\n \n \n \n \n );\n };\n\n return (\n
    \n {createPicture(url, alt, profile)}\n
    \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"Picture\":\"slJnKPGAAIKofsQwQBjL\",\"Variant--rounded\":\"vPKYJ9xnnqorRitmkm3i\"};","import type { Canceler } from 'axios';\nimport axios, { isCancel } from 'axios';\nimport debounce from 'lodash/debounce';\nimport * as React from 'react';\nimport { axiosWrapper } from '~/Partials/FetchData/axiosWrapper';\n\ninterface RequestHelperProps {\n url: string;\n debounceTime?: number;\n autoRun?: boolean;\n method?: 'get' | 'post';\n timeout?: number;\n onLoadData?: (data: ResponseType) => void | undefined;\n onLoadDataError?: (error: string) => void;\n onToggleLoading?: (loadStatus: boolean) => void;\n data?: RequestDataType;\n}\n\nexport class RequestHelper extends React.PureComponent<\n RequestHelperProps\n> {\n static defaultProps: Partial> = {\n debounceTime: 0,\n autoRun: true,\n method: 'get',\n timeout: 0,\n };\n\n cancelToken: Canceler | undefined = undefined;\n\n makeNetworkRequestDebounce: ReturnType | undefined = undefined;\n\n makeNetworkRequest = () => {\n const { debounceTime } = this.props;\n\n this.makeNetworkRequestDebounce && this.makeNetworkRequestDebounce.cancel();\n this.makeNetworkRequestDebounce = debounce(() => {\n const { url, method = 'get', timeout, onLoadData, onLoadDataError, data } = this.props;\n axiosWrapper\n .request({\n url,\n method,\n data,\n timeout,\n cancelToken: new axios.CancelToken(token => {\n this.cancelToken = token;\n }),\n })\n .then(res => {\n this.toggleLoading(false);\n this.cancelToken = undefined;\n onLoadData && onLoadData(res.data);\n })\n .catch(e => {\n if (isCancel(e)) {\n return;\n }\n\n onLoadDataError && onLoadDataError(e.message);\n\n console.error(e);\n });\n }, debounceTime);\n\n this.makeNetworkRequestDebounce();\n };\n\n toggleLoading = (loadStatus: boolean) => {\n const { onToggleLoading } = this.props;\n onToggleLoading && onToggleLoading(loadStatus);\n };\n\n componentDidMount = () => {\n const { autoRun } = this.props;\n\n if (autoRun) {\n this.fetchData();\n }\n };\n\n componentDidUpdate = (oldProps: RequestHelperProps) => {\n const { url } = this.props;\n\n if (url && oldProps.url !== url) {\n this.fetchData();\n }\n };\n\n fetchData = () => {\n if (this.cancelToken) {\n this.cancelToken();\n }\n\n this.toggleLoading(true);\n this.makeNetworkRequest();\n };\n\n render() {\n return null;\n }\n}\n","import type { QueryParameter } from '../QueryParameterUtils';\nimport { Event } from '~/Features/Messaging/types';\n\nexport class QueryParametersChanged extends Event {\n public static readonly id = 'QueryParametersChanged';\n\n constructor(\n public queryParams: QueryParameter[],\n public storedInHistory: boolean\n ) {\n super(QueryParametersChanged.id);\n }\n}\n","import { useState } from 'react';\nimport ExecutionContext from '../../ExecutionContext';\nimport { toUrl } from '../Utils/utils';\nimport { MessageBroker } from '~/Features/Messaging/MessageBroker';\nimport { useMessageHandler } from '~/Features/Messaging/useMessageHandler';\nimport { QueryParametersChanged } from '~/Partials/SearchBase/Events/QueryParametersChanged';\n\nexport type QueryParameter = { name: string; value: string };\n\nexport const formatQueryParameters = (params: QueryParameter[]) =>\n params.length === 0 ? '' : `?${params.map(param => `${param.name}=${param.value}`).join('&')}`;\n\nexport const getQueryParametersFromUrl = (url: string): QueryParameter[] => {\n const result = [] as QueryParameter[];\n\n if (ExecutionContext.IsServerSide()) {\n return result;\n }\n\n const params = toUrl(url).searchParams;\n params.forEach((value, key) => result.push({ name: key, value }));\n\n return result;\n};\n\nexport const buildAbsoluteUrlWithQueryParameters = (baseUrl: string, queryParams: QueryParameter[]) => {\n if (ExecutionContext.IsServerSide() || queryParams.length === 0) {\n return baseUrl;\n }\n\n const newUrl = toUrl(baseUrl);\n newUrl.search = '';\n\n queryParams.forEach(param => newUrl.searchParams.append(param.name, param.value));\n\n return newUrl.toString();\n};\n\nexport const changeQueryParametersInActiveUrl = (queryParameters: QueryParameter[], addHistoryEntry = true) => {\n ExecutionContext.ThrowIfServerSide();\n\n const urlWithSearchParams = buildAbsoluteUrlWithQueryParameters(window.location.pathname, queryParameters);\n\n if (addHistoryEntry) {\n document.URL !== urlWithSearchParams && window.history.pushState('', '', urlWithSearchParams);\n } else {\n window.history.replaceState('', '', urlWithSearchParams);\n }\n\n MessageBroker.publish(new QueryParametersChanged(queryParameters, addHistoryEntry));\n};\n\nexport const useQueryParametersObserver = (onlyStoredInHistory = true) => {\n const [queryParams, setQueryParams] = useState([]);\n\n useMessageHandler(QueryParametersChanged.id, (event: QueryParametersChanged) => {\n if (onlyStoredInHistory && !event.storedInHistory) {\n return;\n }\n\n setQueryParams(event.queryParams);\n });\n\n return queryParams;\n};\n","export class TwoWayMapping {\n private readonly reverseMap: Record;\n\n private readonly map: Record;\n\n constructor(map: Record) {\n this.map = map;\n this.reverseMap = {};\n\n Object.keys(map).forEach(key => {\n const value = map[key];\n this.reverseMap[value] = key;\n });\n }\n\n public find(item: string) {\n return this.map[item];\n }\n\n public findReverse(item: string) {\n return this.reverseMap[item];\n }\n}\n","import type { Facet } from '../../Search/Facet.csharp';\nimport type { ConversionFunction } from '../PagedFetchData/SearchCriteriaUtils';\nimport { replaceNotFriendlyCharacters } from '../Utils/utils';\nimport { TwoWayMapping } from './TwoWayMapping';\n\nexport class FacetsQueryParameterConverter {\n private readonly facets: Facet[];\n\n private readonly queryParameterNamesAndTranslationsTwoWayMapping: TwoWayMapping;\n\n constructor(facets: Facet[]) {\n this.facets = facets;\n const parameterNamesToTranslationsMapping = facets.reduce((accumulator: Record, facet) => {\n accumulator[facet.id] = replaceNotFriendlyCharacters(facet.label.toLowerCase());\n\n return accumulator;\n }, {});\n this.queryParameterNamesAndTranslationsTwoWayMapping = new TwoWayMapping(parameterNamesToTranslationsMapping);\n }\n\n public convertFromUserReadableQueryParameter: ConversionFunction = item => {\n const name = this.queryParameterNamesAndTranslationsTwoWayMapping.findReverse(item.name) || item.name;\n const value = item.value.split('-').pop() || item.value;\n\n return { name, value };\n };\n\n public convertToUserReadableQueryParameter: ConversionFunction = item => {\n const name = this.queryParameterNamesAndTranslationsTwoWayMapping.find(item.name) || item.name;\n const valueLabel = this.findLabelForQueryParameterValue(item.value, item.name);\n const value = valueLabel ? `${replaceNotFriendlyCharacters(valueLabel)}-${item.value}` : item.value;\n\n return { name, value };\n };\n\n private findLabelForQueryParameterValue(value: string, facetId: string) {\n if (isNaN(Number(value))) {\n return undefined;\n }\n\n const facet = this.findFacetOptionWithMatchingId(this.facets, facetId, value);\n\n return facet ? facet.label : undefined;\n }\n\n private findFacetOptionWithMatchingId(facets: Facet[], facetId: string, expectedId: string) {\n const facet = facets.find(f => f.id === facetId);\n\n return facet && facet.options.find(option => option.id === expectedId);\n }\n}\n","import * as React from 'react';\nimport ExecutionContext from '../../ExecutionContext';\nimport type { Facet } from '../../Search/Facet.csharp';\nimport type { SearchCriteria } from '../../Search/SearchCriteria.csharp';\nimport type { SelectedFacet } from '../../Search/SelectedFacet.csharp';\nimport { getBaseSearchQueryParameters, phraseParameterName } from '../PagedFetchData/SearchCriteriaUtils';\nimport { FacetsQueryParameterConverter } from './FacetsQueryParameterConverter';\nimport { changeQueryParametersInActiveUrl, getQueryParametersFromUrl } from './QueryParameterUtils';\n\ninterface SearchBaseProps {\n phrase: string;\n facets: Facet[];\n searchUrl: string;\n selectedFacets?: SelectedFacet[];\n}\n\nexport interface SearchState {\n searchParams: SearchCriteria;\n}\n\nexport abstract class SearchBase

    extends React.Component {\n private queryParameterConverter: FacetsQueryParameterConverter;\n\n constructor(props: P) {\n super(props);\n\n const { phrase, facets, selectedFacets } = this.props;\n\n this.state = {\n searchParams: {\n phrase: phrase || '',\n selectedFacets: this.initSelectedFacetState(facets, selectedFacets || []),\n },\n } as S;\n\n this.queryParameterConverter = new FacetsQueryParameterConverter(facets);\n }\n\n componentDidMount(): void {\n if (ExecutionContext.IsServerSide()) {\n return;\n }\n\n const searchCriteria: undefined | SearchCriteria = this.getBaseSearchCriteria(document.URL);\n\n if (!searchCriteria) {\n return;\n }\n\n if (searchCriteria.selectedFacets.length) {\n this.handleSearchParamsChange(searchCriteria);\n } else if (searchCriteria.phrase) {\n this.handleQueryChange(searchCriteria.phrase);\n }\n }\n\n componentDidUpdate(prevPros: SearchBaseProps, prevState: SearchState) {\n if (ExecutionContext.IsServerSide()) {\n return;\n }\n\n const { searchParams } = this.state;\n\n if (prevState.searchParams !== searchParams) {\n const queryParams = getBaseSearchQueryParameters(searchParams);\n const translatedQueryParams = queryParams.map(param =>\n this.queryParameterConverter.convertToUserReadableQueryParameter(param)\n );\n\n changeQueryParametersInActiveUrl(translatedQueryParams, false);\n }\n }\n\n initSelectedFacetState = (facets: Facet[], selectedFacets: SelectedFacet[]): SelectedFacet[] =>\n facets.map(facet => {\n const selectedFacet = selectedFacets.filter(sf => sf.id === facet.id);\n\n if (selectedFacet.length === 1) {\n return selectedFacet[0];\n }\n\n return {\n id: facet.id,\n values: [] as string[],\n };\n });\n\n protected getBaseSearchQueryParameters = (searchCriteria: SearchCriteria) =>\n getBaseSearchQueryParameters(searchCriteria);\n\n protected getBaseSearchCriteria = (url: string) => {\n const {\n searchParams: { selectedFacets },\n } = this.state;\n\n const queryParams = getQueryParametersFromUrl(url);\n\n if (queryParams.length === 0) {\n return undefined;\n }\n\n const phraseParam = queryParams.find(x => x.name === phraseParameterName);\n const phrase = phraseParam && phraseParam.value;\n const facetParams = queryParams.filter(x => x.name !== phraseParameterName);\n\n const selectedFacetsResult: SelectedFacet[] = facetParams.reduce((result: SelectedFacet[], item) => {\n const newItem = this.queryParameterConverter.convertFromUserReadableQueryParameter(item);\n const { name, value } = newItem;\n const facet = result.find(x => x.id === name);\n\n if (facet) {\n facet.values = [...facet.values, value];\n } else {\n result.push({ id: name, values: [value] });\n }\n\n return result;\n }, []);\n const emptyFacets = selectedFacets.filter(item => selectedFacetsResult.map(x => x.id).indexOf(item.id) === -1);\n const facets = selectedFacetsResult.concat(emptyFacets);\n\n return {\n phrase,\n selectedFacets: facets,\n } as SearchCriteria;\n };\n\n protected handleQueryChange = (newSearchValue: string) => {\n const { searchParams } = this.state;\n this.setState({\n searchParams: { ...searchParams, phrase: newSearchValue },\n });\n };\n\n protected handleFacetChange = (selectedFacets: SelectedFacet[]) => {\n const { searchParams } = this.state;\n this.setState({\n searchParams: { ...searchParams, selectedFacets },\n });\n };\n\n protected handleSearchParamsChange = (searchCriteria: SearchCriteria) => {\n this.setState({\n searchParams: searchCriteria,\n });\n };\n}\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport styles from './SearchBox.module.css';\n\nexport interface SearchBoxProps {\n value: string;\n placeholder: string;\n onChange: (event: React.ChangeEvent) => void;\n type?: string;\n autoFocus?: boolean;\n defaultValue?: string;\n className?: string;\n searchBoxClassName?: string;\n variant?: 'default' | 'fullWidth';\n withPageWrapper?: boolean;\n onKeyDown?: (key: React.KeyboardEvent) => void;\n}\n\nexport const SearchBox: React.FC> = React.memo(props => {\n const {\n type = 'text',\n value,\n defaultValue,\n placeholder,\n onChange,\n className,\n searchBoxClassName,\n variant = 'default',\n withPageWrapper,\n children,\n onKeyDown,\n ...otherDownshiftOptions\n } = props;\n\n return (\n \n

    \n
    \n \n {children}\n
    \n
    \n \n );\n});\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport type { ReactNode } from 'react';\nimport { ActivityIndicator } from '../../ActivityIndicator/ActivityIndicator';\nimport styles from './SearchBoxResults.module.css';\n\nexport interface SearchBoxResultsProps {\n loading: boolean;\n children: ReactNode;\n error?: string;\n errorTranslation?: ReactNode;\n className?: string;\n}\n\nexport const SearchBoxResults: React.FunctionComponent> = props => {\n const { error, errorTranslation, className, loading, children } = props;\n\n const renderList = () => {\n if (error) {\n return (\n \n {errorTranslation} {error}\n \n );\n }\n\n if (loading) {\n return (\n \n \n \n );\n }\n\n return children;\n };\n\n return
    {renderList()}
    ;\n};\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport type { MouseEventHandler, ReactNode } from 'react';\nimport { joinValuesWithSeparator } from '~/Features/ApplicationApplets/Shared/Format/TextFormat';\nimport { Button } from '~/Partials/Button/Button';\nimport styles from './SearchBoxResultsRow.module.css';\n\ninterface SearchBoxResultsRowProps {\n heading: string;\n info: string[];\n disabled?: boolean;\n onClick?: MouseEventHandler;\n selectedInfo?: ReactNode;\n children?: ReactNode;\n className?: string;\n}\n\nexport const SearchBoxResultsRow: React.FunctionComponent = props => {\n const { heading, info, disabled = false, onClick, selectedInfo, children, className } = props;\n\n return (\n
    \n
    \n

    {heading}

    \n {!!info &&
    {joinValuesWithSeparator(info)}
    }\n
    \n\n {disabled && !!selectedInfo && {selectedInfo}}\n {!!onClick && (\n \n )}\n
    \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"SearchBoxResultsRow\":\"kqlINoQRlZP75BA4zQYC\",\"SearchBoxResultsRow--selected\":\"L9LPKVt4JLmTdfhPlIC0\",\"Heading\":\"DjTFtmkgiXM71KFnga3s\",\"Info\":\"QkCxxEGDCGDGe1WmzPnZ\",\"SelectedInfo\":\"_RFt560VWIoyyoNu3T2V\",\"Button\":\"WKOgUnYZ9WWiiXIRrsJ5\",\"Variant--selected\":\"SNFPyfD_MwPWQGTcIoeU\"};","import { isTruthy } from '~/Partials/Utils/utils';\n\nexport const joinValuesWithSeparator = (value: string[], separator = '|') =>\n value.filter(isTruthy).join(` ${separator} `);\n","import * as React from 'react';\nimport type { Facet } from '../../Search/Facet.csharp';\nimport type { SelectedFacet } from '../../Search/SelectedFacet.csharp';\nimport { Button } from '../Button/Button';\nimport { SvgIcon } from '../SvgIcon/SvgIcon';\nimport styles from './SelectedFiltersList.module.css';\n\ninterface SelectedFiltersListProps {\n facets: Facet[];\n selectedFacets: SelectedFacet[];\n onRemoveFacet: (selectedFacets: SelectedFacet[]) => void;\n removeFilterDescription: string;\n}\n\nconst removeFilter = (\n facet: { id: string; value: string },\n selectedFacets: SelectedFacet[],\n onRemoveFacet: (selectedFacets: SelectedFacet[]) => void\n) => {\n const selectedFacet = selectedFacets.find(facetType => facetType.id === facet.id);\n\n if (selectedFacet) {\n const index = selectedFacet.values.indexOf(facet.value);\n\n if (index >= 0) {\n selectedFacet.values.splice(index, 1);\n }\n }\n\n onRemoveFacet(selectedFacets);\n};\n\nconst getLabelForFacet = (facetValue: string, facetId: string, facets: Facet[]) => {\n const selectedFacet = facets.find(facet => facet.id === facetId);\n\n if (selectedFacet) {\n const facetVal = selectedFacet.options.find(facet => facet.id === facetValue);\n\n return facetVal && facetVal.label;\n }\n};\n\nexport const SelectedFiltersList: React.FC> = ({\n selectedFacets,\n onRemoveFacet,\n removeFilterDescription,\n facets,\n}) => {\n const visibleFacets = selectedFacets\n .filter(sf => facets.some(f => f.id === sf.id))\n .map(selectedFacet =>\n selectedFacet.values.map(v => ({\n value: v,\n id: selectedFacet.id,\n label: getLabelForFacet(v, selectedFacet.id, facets),\n }))\n )\n .reduce((previousValue, currentValue) => [...previousValue, ...currentValue], []);\n\n return (\n
      \n {visibleFacets.length > 0 &&\n visibleFacets.map(facet => (\n
    • \n {facet.label || facet.value}\n removeFilter(facet, selectedFacets, onRemoveFacet)}\n className={styles.IconRemove}\n >\n \n {removeFilterDescription}\n \n
    • \n ))}\n
    \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"SelectedFiltersList\":\"ClV1d8GWGDl2k_XOvniA\",\"Item\":\"pHqyHjkfKrGRcrEDP9U8\",\"FilterValue\":\"Ia2GDfOlpYgE97snh9TQ\",\"IconRemove\":\"MAkcLxPZ8pcUol1zYb0N\"};","import * as React from 'react';\nimport type { IconsEnum } from '~/Features/IconsEnum.csharp';\nimport { SvgIconBase } from './SvgIconBase';\nimport { assetPathBuilder } from './Utils/Utils';\n\nexport type IconName = `${IconsEnum}`;\n\nexport interface SvgIconProps {\n iconName: `${IconsEnum}`;\n className?: string;\n}\n\nexport const SvgIcon: React.FC> = props => {\n const { iconName, className } = props;\n const iconPath = assetPathBuilder(iconName);\n\n return ;\n};\n","import classNames from 'classnames';\nimport type { FC } from 'react';\nimport React from 'react';\n\ninterface SvgIconBaseProps {\n path: string;\n className?: string;\n}\n\nexport const SvgIconBase: FC> = props => {\n const { path, className } = props;\n\n return (\n \n \n \n \n \n );\n};\n","export const assetPathBuilder = (iconName: string, filled = false) => {\n const formattedIconName = iconNameMapper(iconName);\n const formattedAssetsPath = formatPath(assetsPath, false);\n const formattedBuildHash = formatPath(buildHash);\n const filledResources = filled ? 'Filled' : '';\n\n return `${formattedAssetsPath}/iconsSprite${filledResources}${formattedBuildHash}.svg#sprite-${formattedIconName}`;\n};\n\nconst formatPath = (path?: string, withDot = true) => (path ? `${withDot ? '.' : ''}${path}` : '');\n\nexport const iconNameMapper = (iconName: string) => {\n switch (iconName) {\n case 'å':\n return 'aring';\n case 'æ':\n return 'ae';\n case 'ø':\n return 'oslash';\n default:\n return iconName;\n }\n};\n","export function debounceAsync Promise = (...args: any[]) => Promise>(\n callback: Callback,\n wait: number\n): (...args: Parameters) => Promise {\n let timeoutId: ReturnType;\n\n return (...args: any[]) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n return new Promise((resolveOuter, rejectOuter) => {\n const timeoutPromise = new Promise(resolveInner => {\n timeoutId = setTimeout(resolveInner, wait);\n });\n timeoutPromise\n .then(async () => {\n resolveOuter(await callback(...args));\n })\n .catch(e => {\n if (isCancel(e)) {\n return;\n }\n\n rejectOuter(e);\n });\n });\n };\n}\n\nconst isCancel = (value: any) => !!(value && value.__CANCEL__);\n","import type { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport omit from 'lodash/omit';\nimport type { RefObject } from 'react';\nimport ExecutionContext from '../../ExecutionContext';\nimport type { Money } from '../../Money.csharp';\nimport { axiosWrapper } from '../FetchData/axiosWrapper';\nimport { getContentLanguage } from '~/Features/Configuration/Utils/languageUtils';\nimport type { Falsy, StrictOmit } from '~/Partials/Utils/typeUtils';\n\nexport const omitProperty = (\n object: TObj,\n ...args: TArgs[]\n): StrictOmit => omit(object, args);\n\n/**\n * compare values\n * TODO: this is temporary solution.\n * make it better and faster or use some small lib\n */\nexport function checkEquals(a: T, b: T) {\n try {\n /** FIXME:\n * JSON.stringify \"ignores\" functions so there\n * is no sense to compare functions.. will always be true\n */\n return JSON.stringify(a) === JSON.stringify(b);\n } catch (e) {\n return false;\n }\n}\n\n/* TODO - needs some work with it */\n\n// Replace with new makePostRequest\nexport async function makePostRequestOld(\n url: string,\n params: ParamsType,\n config: AxiosRequestConfig = {}\n) {\n // No try-catch on purposes.\n const response = await axiosWrapper.post(url, params, config);\n\n return response as AxiosResponse;\n}\n\nexport function objectAssignToEmptyFields>(\n source: TObject,\n fields: TFields\n) {\n /* TODO: test & doc & make code more readable maybe? */\n return Object.entries(source).reduce((acc, [key, oldVal]) => {\n const newVal = fields[key as keyof TObject];\n\n // Only non-boolean \"falsy\" value will be replaced.\n const isOldValueEmpty = () => !oldVal && typeof oldVal !== 'boolean';\n\n // And only if new value is \"truthy\" or boolean\n const isNewValueNonEmpty = () => !!newVal || typeof newVal === 'boolean';\n\n return {\n ...acc,\n [key]: isOldValueEmpty() && isNewValueNonEmpty() ? newVal : oldVal,\n };\n }, {} as TObject);\n}\n\nexport function cloneArrayAndUpdateSingleItem(source: T[], item: T, updateFunction: (oldItem: T) => T) {\n const index = source.indexOf(item);\n const updatedItem = updateFunction(item);\n\n return [...source.slice(0, index), updatedItem, ...source.slice(index + 1)];\n}\n\nexport const moneyToString = (money: Money) => {\n const amountFormatted = formatAmount(money.amount);\n const currencyFormatted = formatCurrency(money.currencyCode);\n\n return money.currencyCode === 'NOK'\n ? `${currencyFormatted} ${amountFormatted}`\n : `${amountFormatted} ${currencyFormatted}`;\n};\n\nconst formatAmount = (amount: number) => {\n const parts = amount.toString().split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n return parts.join('.');\n};\n\nconst formatCurrency = (currency: string) => (currency === 'NOK' ? 'kr' : currency);\n\nexport const formatNumber = (value: number) => value.toLocaleString(getContentLanguage());\n\nexport const redirect = (url: string) => {\n if (ExecutionContext.IsServerSide()) {\n return;\n }\n\n window.location.href = url.indexOf('/') === 0 ? `${window.location.origin}${url}` : url;\n};\n\nexport const reload = () => {\n if (ExecutionContext.IsServerSide()) {\n return;\n }\n\n window.location.reload();\n};\n\nexport const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\nexport const getElementById = (id: string) => {\n if (!ExecutionContext.IsServerSide()) {\n return document.getElementById(id);\n }\n};\nexport const scrollToElement = (\n element: HTMLElement,\n behavior: ScrollBehavior = 'smooth',\n block?: ScrollLogicalPosition,\n inline?: ScrollLogicalPosition\n) => {\n if (!ExecutionContext.IsServerSide()) {\n element.scrollIntoView({\n behavior,\n block,\n inline,\n });\n }\n};\n\nexport const smoothScrollToSectionById = (id: string) => {\n const section = getElementById(id);\n\n if (section) {\n scrollToElement(section);\n }\n};\n\nexport const smoothScrollToSectionByRef = (ref: RefObject) => {\n if (ref.current) {\n scrollToElement(ref.current);\n }\n};\n\nexport const scrollToTop = () => scrollTo(0, 0);\n\nexport const isTruthy = (item: T | Falsy): item is T => !!item;\n\nexport const getCurrentUrl = () => (ExecutionContext.IsServerSide() ? undefined : window.location.href);\n\nexport const toUrl = (url: string) => {\n ExecutionContext.ThrowIfServerSide();\n\n return new URL(url, `${location.protocol}//${location.hostname}${location.port ? `:${location.port}` : ''}`);\n};\n\nfunction legacyCopyTextToClipboard(text: string) {\n const textArea = document.createElement('textarea');\n textArea.value = text;\n\n // Avoid scrolling to bottom\n textArea.style.top = '0';\n textArea.style.left = '0';\n textArea.style.position = 'fixed';\n\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n document.execCommand('copy');\n document.body.removeChild(textArea);\n}\n\nexport async function copyTextToClipboard(text: string) {\n // eslint-disable-next-line compat/compat -- we first check whether the browser supports the clipboard API\n navigator.clipboard ? await navigator.clipboard.writeText(text) : legacyCopyTextToClipboard(text);\n}\n\nexport function combineValidAttributeValues(...values: (string | undefined)[]) {\n const validValues = values.filter(isTruthy);\n\n return validValues.length === 0 ? undefined : validValues.join(' ');\n}\n\nexport const repeat = (item: TItem, count: number) => Array(count).fill(item);\n\nexport const repeatWithId = (item: TItem, count: number) =>\n repeat(item, count).map((element, index) => ({ id: index.toString(), ...element }));\n\nexport const createArray = (factory: (index: number) => TItem, count: number) =>\n Array.from({ length: count }).map((_, index) => factory(index));\n\nexport const replaceNotFriendlyCharacters = (str: string) => str.replace(/[ -/:-@[-`{-}]+/g, '-');\n\nexport const capitalize = (str: T) =>\n (str ? str[0].toUpperCase() + str.slice(1) : str) as Capitalize;\n\nexport const getLastElementOfArray = (array?: TItem[]) =>\n !array || array.length === 0 ? undefined : array[array.length - 1];\n\nexport const stripFromHTMLNode = (rawHtml: string, node: 'p') =>\n rawHtml.replace(new RegExp(`<${node}>|`, 'g'), '');\n\nexport const firstKey = (map: Map) => {\n const result = map.keys().next();\n\n return result.done ? undefined : result.value;\n};\n\nexport const hasAny = (items: TItem[], predicate: (item: TItem) => boolean) =>\n items.find(predicate) !== undefined;\n\nexport const areEqual = (first: string, second: string, ignoreCase = false) =>\n first.localeCompare(second, undefined, { sensitivity: ignoreCase ? 'accent' : 'variant' }) === 0;\n\nexport const isSafari = () => {\n if (ExecutionContext.IsServerSide()) {\n return false;\n }\n\n // eslint-disable-next-line compat/compat -- this is client-side code\n const userAgent = navigator.userAgent.toLowerCase();\n\n return userAgent.includes('safari') && !userAgent.includes('chrome') && !userAgent.includes('crios');\n};\n\nexport const findClosestParent = (\n element: Element,\n predicate: (element: Element) => element is TElement\n): TElement | null => {\n let potentialResult: Element | null = element;\n\n while (potentialResult) {\n if (predicate(potentialResult)) {\n return potentialResult;\n }\n\n potentialResult = potentialResult.parentElement;\n }\n\n return null;\n};\n\nexport const isInteractiveElement = (element: HTMLElement) => {\n const formTags = ['button', 'input', 'select', 'textarea'];\n const linkTags = ['a', 'area'];\n\n const normalizedTagName = element.tagName.toLowerCase();\n\n return (\n (formTags.includes(normalizedTagName) && !element.hasAttribute('disabled')) ||\n (linkTags.includes(normalizedTagName) && element.hasAttribute('href'))\n );\n};\n\nexport const hashValue = async (value: string) => {\n ExecutionContext.ThrowIfServerSide();\n\n const encoder = new TextEncoder();\n const data = encoder.encode(value);\n // eslint-disable-next-line compat/compat -- this is client-side code\n const hashBuffer = await crypto.subtle.digest('SHA-256', data);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n\n return hashArray.map(num => num.toString(16).padStart(2, '0')).join('');\n};\n\nexport const isErrorWithName = (error: unknown, errorName: string) =>\n typeof error === 'object' && error !== null && 'name' in error && error.name === errorName;\n\nexport const urlJoin = (...parts: string[]) => parts.join('/').replace('//', '/');\n","import { getContentLocale } from '~/Features/Configuration/Utils/languageUtils';\n\nexport type FormatArgs = Record;\n\nexport interface TxtProps {\n id: keyof T;\n values?: FormatArgs;\n}\n\n/**\n * Apply variables to string with {} placeholders\n * ex. format(`{price} is {amount}`, { price: 'Price', amount: 30 })\n */\nconst format = (template: string, values: FormatArgs) =>\n template.replace(/{(\\w+)}/g, (match, index) =>\n typeof values[index] !== 'undefined' ? values[index].toLocaleString(getContentLocale()) : match\n );\n\nexport const FormattedText = (text: string, values?: FormatArgs) => (text && values ? format(text, values) : text);\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","import { useEffect, useRef } from 'react';\n\nexport function useVariableWithStableRef(variable: T) {\n const variableRef = useRef(variable);\n\n useEffect(() => {\n variableRef.current = variable;\n }, [variable]);\n\n return variableRef;\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"Variant--solid\":\"yEK9biWpMxeKit4W3SEn\",\"Variant--primary\":\"HIBx2TMQpGodNFRbYUAk\",\"Variant--secondary\":\"hk2sUgQrAH9UK8YJmMUQ\",\"Variant--tertiary\":\"LVwfmt8Qy2xfZW7GrHx_\",\"Variant--red\":\"ivQTZ0V5t2YuYK5Qpk4D\",\"Variant--legacyPrimary\":\"qUo0GcsHJo5KTx2OLXFs\",\"Variant--outline\":\"AMdryBi_G8WFVbcuUzSv\",\"Variant--clear\":\"NtmtjnwY8FdZxOUBkRwT\",\"Variant--xSmall\":\"vig35dbpPkTmO944SAkM\",\"Variant--responsiveFromXSmallToSmall\":\"QBEt0HHyiENeo4C99_KK\",\"Variant--small\":\"HdV_AOE4D0H4dDOGneuZ\",\"Variant--responsiveFromSmallToMedium\":\"gnwHhMF21kTUQhGmA_GV\",\"Variant--responsiveFromSmallToLarge\":\"wyUhxzdCNOoIbxwuJ88A\",\"Variant--responsiveFromMediumToSmall\":\"wmwaxVhV5DtqaahJfW48\",\"Variant--responsiveFromMediumToLarge\":\"DKSTnxlifpUboSUUkkBn\",\"Variant--responsiveFromLargeToSmall\":\"Cq7zjNdjnEgUyXZm8rWy\",\"Variant--large\":\"Pf5HgbFCxXwoDDfyfLsp\",\"Variant--responsiveFromLargeToXLarge\":\"gi055KUm9OAjwL1tWkgX\",\"Variant--xLarge\":\"aRoFX7mW8Ru2eLodlj6k\",\"Variant--rounded\":\"I0dQ9KoNo8oj51pfedVE\",\"Variant--shadowed\":\"cJMgeHEGyMPOPNoeRPfY\"};","// extracted by mini-css-extract-plugin\nexport default {\"List\":\"rDGVNwgLzKIbRsk0o5gg\",\"Item\":\"_h6l0gIwlyjd_40OjSKx\"};","// extracted by mini-css-extract-plugin\nexport default {\"Content\":\"Bgl9KVniVQmUzgMcE17F\",\"Button\":\"eWidAv9t5rtdJzuDE5kH\"};","// extracted by mini-css-extract-plugin\nexport default {\"SearchBox\":\"SZAuVN3ZOyeQkcKpZbtI\",\"Header\":\"_GKtNjT67n_k3vRfoceo\",\"HeaderInner\":\"lFvPQh8yloMAhCbiETXi\",\"Variant--default\":\"DhnOnuKFG5HwmRDY8_WP\",\"Variant--fullWidth\":\"hVgCJSb4Pdkp2bDKYXWu\",\"Variant--withPageWrapper\":\"fEKDqRFTfUNCMmK3MBpG\"};","// extracted by mini-css-extract-plugin\nexport default {\"SearchBoxResults\":\"pRkYv7QBxC8VbonRrCXL\",\"Message\":\"YK0iwJngug4ZbYKTDyWg\"};"],"names":["useFrontendSettings","useMemo","GlobalContextProvider","getFrontendSettings","getContentLanguage","getContentLocale","mapToLocale","ExecutionContext","IsServerSide","window","ThrowIfServerSide","Error","ThemeContext","React","ThemeContextProvider","props","theme","children","Provider","value","useTheme","context","pageTheme","themeModernValues","themeDefaultValues","getPageTheme","isSpaPage","isModernPage","MessageBroker","subscribe","handler","messageId","handlers","this","MessageHandlersByMessageId","push","unsubscribe","filter","h","publish","message","GetMessageHandlers","id","forEach","handle","schedulePublish","delay","setTimeout","Message","constructor","Event","useMessageHandler","onMessage","onMessageRef","useVariableWithStableRef","useLayoutEffect","event","current","AlphabeticalIndex","_ref","itemsPresentOnList","handleLetterClick","alphabet","alphabetList","split","usedFirstLetters","map","i","charAt","toUpperCase","v","a","indexOf","isLetterPresent","letter","className","letterPresent","key","Button","onClick","onLetterClick","FacetsCheckboxList","selectedFacet","facetOptions","handleFacetClick","facetsGroupedByFirstLetter","groupBy","option","label","handleInputChange","values","newSelectedFacet","List","items","Object","keys","renderItem","firstLetter","idx","classNames","baseStyles","Item","concat","AccordionItem","index","initialExpanded","headerContent","ChoiceAutoComplete","selectedValues","definitions","onChange","inputNodeId","AlphabeticalCheckboxList","facet","selectedFacets","handleFacetChange","hitsValue","toggleFilters","translations","SvgIcon","iconName","close","tier","ButtonTier","LegacyPrimary","type","ButtonType","Solid","size","ButtonSize","XSmall","hits","options","o","smoothScrollToSectionById","find","updatedSelectedFacet","updateSelectedFacetValue","AreasOfExpertiseSearchResults","withQueryContext","phrase","shouldMakeRequest","searchUrl","errorTranslation","isLoading","hasError","data","url","searchParams","buildAbsoluteUrlWithQueryParameters","getBaseSearchQueryParameters","name","result","useAxiosQuery","queryOptions","enabled","useAreasOfExpertiseQuery","SearchBoxResults","error","undefined","loading","employee","linkUrl","SearchBoxResultsRow","heading","firstName","lastName","info","jobTitles","school","href","SearchableFacetsList","searchPhrase","onHandleInputChange","filteredValues","toLowerCase","slice","AreasOfExpertiseSearchBox","facets","onSearchPhraseClick","onSelectedFacetsChanged","setPhrase","setSelectedFacet","onSelectedFacetChange","onSearchCall","Downshift","stateReducer","state","changes","stateChangeTypes","blurInput","_objectSpread","isOpen","highlightedIndex","downshiftProps","getToggleButtonProps","getInputProps","getMenuProps","searchBaseStyles","SearchBox","_extends","openSearchOf","searchFor","placeholder","defaultValue","autoFocus","onKeyDown","keyCode","Key","Enter","newPhrase","target","z","AreasOfExpertise","SearchBase","render","totalCount","handleQueryChange","CollapseFilters","buttonOpenedClassname","filters","hideFilters","SelectedFiltersList","removeFilterDescription","removeFilter","onRemoveFacet","results","PagedFetchData","baseUrl","debounceTime","take","onTotalCountChanged","setState","EmployeeCard","AccordionExpander","expanded","iconType","variant","color","otherProps","_objectWithoutProperties","_excluded","Clear","styles","ButtonContent","Content","resolveIcon","assertNever","Icon","contentClassName","externallyExpanded","contentSpacing","lazyRender","isExpandable","withRoundedCorners","withBoxShadow","setExpanded","accordionId","uniqueId","content","onToggleClick","onCollapsed","useAccordionContentRenderer","lazy","shouldRenderContent","setShouldRenderContent","onHeaderClicked","renderExpander","baseExpanderProps","disabled","expanderClassName","renderCustomExpander","Collapse","onRest","ContentInner","ModalWrapper","visible","style","display","ActivityIndicator","modal","cover","active","Wrapper","wrapperProps","ref","passThroughProps","ThemedButton","RawButton","htmltype","_excluded2","contextualTheme","additionalProps","_excluded3","getHeight","scrollHeight","withMarginTransition","rest","toggleStyles","height","setHeight","useState","overflow","setOverflow","visibility","setVisibility","isMounted","useIsMounted","useEffect","requestAnimationFrame","useCollapse","willChange","onTransitionEnd","propertyName","picture","letterLocation","Image","Picture","IconFirstName","IconLastName","Heading","Details","JobTitles","item","JobTitle","errorName","ApiResponseError","super","isApiResponseError","isErrorWithName","MappingError","cause","isMappingError","withCancellation","async","request","signal","source","axios","CancelToken","cancel","addEventListener","removeEventListener","queryKey","dataSelector","_options","queryParams","debounceOptions","method","dependantQueriesDataProvider","useDebounce","wait","queryClient","useQueryClient","axiosRequest","axiosWrapper","cancelToken","token","params","then","response","debounceAsync","queryResult","useQuery","queryFn","meta","getDependantQueriesData","otherQueriesData","otherQueryData","setQueryData","isError","errorMessage","getSafeErrorMessage","isTransientError","_error$response","isAxiosError","status","statusCode","mightBeTransientErrorStatusCode","ReactQueryClientProvider","Component","QueryClientProvider","client","getClient","ReactQueryDevtools","initialIsOpen","_ReactQueryClientProvider","FIVE_MINUTES","QueryClient","defaultOptions","queries","staleTime","refetchInterval","refetchOnWindowFocus","query","isStale","retry","failureCount","fallbackMessage","isQueryValidationError","isForbiddenForProxyLoginUser","create","paramsSerializer","indexes","interceptors","use","config","contentLanguage","headers","set","checkboxVariant","e","newValues","updateFilterValues","definition","checked","htmlFor","shouldDisplayFilters","contentExpandedClassname","isOpened","setIsOpened","isExpanded","setIsExpanded","toggleCollapse","FiltersWrapper","showFilters","newSelectedFacets","selectedFacetValues","optionId","wrapper","ListComponent","InfiniteScroll","hasMoreData","topThreshold","loadMoreData","renderData","infiniteScrollTriggerRef","useInfiniteScroll","hasNextPage","onLoadMore","rootMargin","PaginationStatus","allowRetry","hasNoResults","role","searching","tryAgain","noResultsFound","showMore","_props$initialData","_props$initialData2","newDataSeparatorId","componentDidUpdate","oldProps","initSkip","formatQueryParameters","skip","handleLoadNewItems","length","getSearchQueryString","toString","handleLoadNewData","newData","newDataSeparator","document","getElementById","focus","preventScroll","handleLoadDataError","handleToggleLoading","loadStatus","initialItems","initialData","autoRun","loadOnScroll","allDataRender","listClassName","dataLength","showingFromTo","showingNumber","showingOf","separatorIndex","tabIndex","FormattedText","from","to","basePaginationStatusModel","RequestHelper","onLoadData","d","onLoadDataError","onToggleLoading","defaultProps","phraseParameterName","initialArray","reduce","combineIntoQueryParameters","currentValue","facetValue","constructImageSharpUrl","width","alt","focalPoint","profile","lazyLoading","createPicture","pictureUrl","pictureAlt","pictureProfile","mainSource","sources","sourceSizes","sizes","join","sourceSrcSets","allowedWidths","srcSet","src","defaultWidth","objectPosition","point","xPosition","clamp","x","yPosition","y","getPosition","arguments","makeNetworkRequestDebounce","makeNetworkRequest","debounce","timeout","res","toggleLoading","catch","isCancel","console","componentDidMount","fetchData","QueryParametersChanged","storedInHistory","param","getQueryParametersFromUrl","toUrl","newUrl","search","append","changeQueryParametersInActiveUrl","queryParameters","addHistoryEntry","urlWithSearchParams","location","pathname","URL","history","pushState","replaceState","useQueryParametersObserver","onlyStoredInHistory","setQueryParams","TwoWayMapping","reverseMap","findReverse","FacetsQueryParameterConverter","queryParameterNamesAndTranslationsTwoWayMapping","convertFromUserReadableQueryParameter","pop","convertToUserReadableQueryParameter","valueLabel","findLabelForQueryParameterValue","replaceNotFriendlyCharacters","parameterNamesToTranslationsMapping","accumulator","facetId","isNaN","Number","findFacetOptionWithMatchingId","expectedId","f","queryParameterConverter","initSelectedFacetState","sf","searchCriteria","getBaseSearchCriteria","phraseParam","selectedFacetsResult","newItem","emptyFacets","newSearchValue","handleSearchParamsChange","prevPros","prevState","translatedQueryParams","searchBoxClassName","withPageWrapper","otherDownshiftOptions","Header","HeaderInner","selectedInfo","separator","isTruthy","joinValuesWithSeparator","getLabelForFacet","facetVal","visibleFacets","some","previousValue","facetType","splice","iconPath","assetPathBuilder","SvgIconBase","path","xlinkHref","filled","formattedIconName","iconNameMapper","formattedAssetsPath","formatPath","assetsPath","formattedBuildHash","buildHash","filledResources","callback","timeoutId","_len","args","Array","_key","clearTimeout","Promise","resolveOuter","rejectOuter","resolveInner","__CANCEL__","omitProperty","object","omit","checkEquals","b","JSON","stringify","makePostRequestOld","post","objectAssignToEmptyFields","fields","entries","acc","oldVal","newVal","cloneArrayAndUpdateSingleItem","updateFunction","updatedItem","moneyToString","money","amountFormatted","formatAmount","amount","currencyFormatted","formatCurrency","currencyCode","parts","replace","currency","formatNumber","toLocaleString","redirect","origin","reload","ms","resolve","scrollToElement","element","behavior","block","inline","scrollIntoView","section","smoothScrollToSectionByRef","scrollToTop","scrollTo","getCurrentUrl","protocol","hostname","port","copyTextToClipboard","text","navigator","clipboard","writeText","textArea","createElement","top","left","position","body","appendChild","select","execCommand","removeChild","legacyCopyTextToClipboard","combineValidAttributeValues","_len2","_key2","validValues","createArray","factory","count","_","str","capitalize","getLastElementOfArray","array","stripFromHTMLNode","rawHtml","node","RegExp","firstKey","next","done","hasAny","predicate","isSafari","userAgent","includes","findClosestParent","potentialResult","parentElement","isInteractiveElement","normalizedTagName","tagName","hasAttribute","hashValue","TextEncoder","encode","hashBuffer","crypto","subtle","digest","Uint8Array","num","padStart","urlJoin","_len3","_key3","format","template","match","setIsMounted","variable","variableRef","useRef"],"sourceRoot":""}