{"version":3,"file":"SyllabusListSearch.chunk.4abe3395cf816d5834e4.js","mappings":"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","sources":["webpack://Kristiania.Web/./Features/Configuration/Hooks/useFrontendSettings.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/StudyType.csharp.ts","webpack://Kristiania.Web/./Features/Pages/SyllabusListPage/SyllabusSearchResultItem/SyllabusSearchResultItem.module.css?e28c","webpack://Kristiania.Web/./Features/Pages/SyllabusListPage/SyllabusSearchResultItem/SyllabusSearchResultItem.tsx","webpack://Kristiania.Web/./Features/Pages/SyllabusListPage/SyllabusListSearch.tsx","webpack://Kristiania.Web/./Features/Pages/SyllabusListPage/SyllabusListSearch.module.css?f6df","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/Filters/CollapseFilters.tsx","webpack://Kristiania.Web/./Features/Partials/Filters/Facets/FacetItem.tsx","webpack://Kristiania.Web/./Features/Partials/Filters/Facets/FacetsAccordionList.tsx","webpack://Kristiania.Web/./Features/Partials/Filters/FiltersWrapper.tsx","webpack://Kristiania.Web/./Features/Partials/Filters/FiltersWrapper.module.css?2715","webpack://Kristiania.Web/./Features/Partials/Filters/SimpleFilters.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/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/SelectedFiltersList/SelectedFiltersList.tsx","webpack://Kristiania.Web/./Features/Partials/SelectedFiltersList/SelectedFiltersList.module.css?62b1","webpack://Kristiania.Web/./Features/Partials/StatusIcon/StatusIcon.module.css?8066","webpack://Kristiania.Web/./Features/Partials/StatusIcon/StatusIcon.tsx","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/Filters/Facets/Shared/AccordionListShared.module.css?7ef1","webpack://Kristiania.Web/./Features/Partials/Filters/Filters.module.css?69a3","webpack://Kristiania.Web/./Features/Partials/SearchBase/SearchBase.module.css?0ed0","webpack://Kristiania.Web/./Features/Partials/SearchBox/SearchBox.module.css?bf03"],"sourcesContent":["import { useMemo } from 'react';\nimport { GlobalContextProvider } from '~/Features/Configuration/GlobalContextProvider';\n\nexport const useFrontendSettings = () => useMemo(() => GlobalContextProvider.getFrontendSettings(), []);\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","// 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 StudyType {\n\tCampus = \"campus\",\n\tOnline = \"online\"\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"SyllabusSearchResultItem\":\"y0hgjoh6N10bfAMXkgQE\",\"Info\":\"yqWr5wmy1kBV_6VgPa30\",\"TitleWrapper\":\"EZiInj2BrTZzUD8w6yKz\",\"Title\":\"M2HAj68iw8PnvrFPE9Hc\",\"InfoItem\":\"C8RV4NpDDb3nZdGETJ6D\",\"Status\":\"CkkC0W_6uGihgphnKKEr\"};","import * as React from 'react';\nimport type { SyllabusSearchItem } from '../ViewModel/SyllabusSearchItem.csharp';\nimport { Link } from '~/Features/Partials/Link/Link';\nimport { StudyType } from '~/Features/StudyType.csharp';\nimport { StatusIcon } from '~/Partials/StatusIcon/StatusIcon';\nimport { SvgIcon } from '~/Partials/SvgIcon/SvgIcon';\nimport { assertNever } from '~/Partials/Utils/typeUtils';\nimport styles from './SyllabusSearchResultItem.module.css';\n\nexport interface ProgramAndSubjectResultItemProps {\n value: SyllabusSearchItem;\n}\n\nexport const SyllabusSearchResultItem = (props: ProgramAndSubjectResultItemProps) => {\n const { value } = props;\n const { name, level, locations, studyType, status, url } = value;\n\n const getIconName = (itemType: StudyType) => {\n switch (itemType) {\n case StudyType.Campus:\n return 'map-pin';\n case StudyType.Online:\n return 'globe';\n default:\n assertNever(itemType);\n }\n };\n\n return (\n
\n
\n
\n \n
\n
\n \n {locations.join(', ')}\n
\n
\n \n {level}\n
\n
\n
\n {status.statusText}\n
\n
\n );\n};\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport type { SearchResultResponse } from '../../Search/SearchResultResponse.csharp';\nimport { CollapseFilters } from '~/Partials/Filters/CollapseFilters';\nimport { FacetsAccordionList } from '~/Partials/Filters/Facets/FacetsAccordionList';\nimport { SimpleFilters } from '~/Partials/Filters/SimpleFilters';\nimport { PagedFetchData } from '~/Partials/PagedFetchData/PagedFetchData';\nimport type { SearchState } from '~/Partials/SearchBase/SearchBase';\nimport { SearchBase } from '~/Partials/SearchBase/SearchBase';\nimport searchBaseStyles from '~/Partials/SearchBase/SearchBase.module.css';\nimport { SearchBox } from '~/Partials/SearchBox/SearchBox';\nimport { SelectedFiltersList } from '~/Partials/SelectedFiltersList/SelectedFiltersList';\nimport styles from './SyllabusListSearch.module.css';\nimport { SyllabusSearchResultItem } from './SyllabusSearchResultItem/SyllabusSearchResultItem';\nimport type { SyllabusListSearchProps } from './ViewModel/SyllabusListSearchProps.csharp';\nimport type { SyllabusSearchItem } from './ViewModel/SyllabusSearchItem.csharp';\n\nexport class SyllabusListSearch extends SearchBase {\n render() {\n const { searchUrl, facets, translations } = this.props;\n const { selectedFacets, phrase } = this.state.searchParams;\n\n return (\n
\n
\n this.handleQueryChange(event.target.value)}\n placeholder={translations.searchPlaceholder}\n />\n
\n \n }\n />\n
\n \n
\n
\n \n \n \n
\n
\n

{translations.results}

\n , SyllabusSearchItem>\n searchParams={this.getBaseSearchQueryParameters(this.state.searchParams)}\n baseUrl={searchUrl}\n translations={{ ...translations }}\n debounceTime={200}\n take={10}\n >\n {({ data }) => }\n \n
\n
\n );\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"Search\":\"yP0kccmadf41xBr_5i3B\",\"Top\":\"R4QILVxy7OqRRJATC9lD\",\"Filters\":\"T_jh6EylJEGx4hsFSt8w\",\"Results\":\"Wb8sMhNoqSBIsI9DTGfV\",\"SearchBox\":\"JX5IXdWcqAaSvSES_G3U\"};","// 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","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 classNames from 'classnames';\nimport uniqueId from 'lodash/uniqueId';\nimport * as React from 'react';\nimport type { Facet } from '../../../Search/Facet.csharp';\nimport type { SelectedFacet } from '../../../Search/SelectedFacet.csharp';\nimport { useFrontendSettings } from '~/Features/Configuration/Hooks/useFrontendSettings';\n\ninterface FacetProps {\n facet: Facet;\n selectedFacets: SelectedFacet[];\n onChange: (newFacets: SelectedFacet[]) => void;\n}\n\nexport const FacetItem: React.FunctionComponent> = ({\n facet,\n selectedFacets,\n onChange,\n}) => {\n const { checkboxVariant } = useFrontendSettings();\n\n const selectedFacet = selectedFacets.find(sf => sf.id === facet.id);\n const { id, options } = facet;\n\n const updateSelectedFacetValue = (facetId: string, facetOption: { value: string; isChecked: boolean }) =>\n selectedFacets.map((sf: SelectedFacet) => {\n if (sf.id === facetId) {\n return { ...sf, values: updateFilterValues(sf, facetOption) };\n }\n\n return sf;\n });\n\n const updateFilterValues = (\n selectedFacetToUpdate: SelectedFacet,\n facetOption: { value: string; isChecked: boolean }\n ) => {\n const selectedFacetValues = selectedFacetToUpdate.values;\n\n if (facetOption.isChecked) {\n return [...selectedFacetValues, facetOption.value];\n }\n\n return selectedFacetValues.filter(item => item !== facetOption.value);\n };\n\n const handleOnChange = (facetOption: { value: string; isChecked: boolean }) => {\n const updatedSelectedFacet = updateSelectedFacetValue(id, facetOption);\n onChange(updatedSelectedFacet);\n };\n\n return (\n <>\n {!!options.length && (\n
    \n {options.map(value => {\n const uniqueFacetId = uniqueId('FacetItem__');\n\n return (\n
  • \n
    \n v === value.id)}\n onChange={e =>\n handleOnChange({\n value: e.target.value,\n isChecked: e.target.checked,\n })\n }\n />\n \n
    \n
  • \n );\n })}\n
\n )}\n \n );\n};\n","import * as React from 'react';\nimport type { Facet } from '../../../Search/Facet.csharp';\nimport type { SelectedFacet } from '../../../Search/SelectedFacet.csharp';\nimport { AccordionItem } from '../../AccordionComponent/AccordionItem';\nimport { List } from '../../List/List';\nimport { FacetItem } from './FacetItem';\nimport styles from './Shared/AccordionListShared.module.css';\n\ninterface FacetAccordionListProps {\n facets: Facet[];\n selectedFacets: SelectedFacet[];\n handleFacetChange: (newFacets: SelectedFacet[]) => void;\n initialExpanded?: boolean;\n}\n\nexport const FacetsAccordionList: React.FunctionComponent> = ({\n facets,\n selectedFacets,\n handleFacetChange,\n initialExpanded = false,\n}) => (\n \n facet.options?.length > 0 && (\n
  • \n \n
    \n \n
    \n \n
  • \n )\n }\n />\n);\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';\nimport styles from './Filters.module.css';\nimport { FiltersWrapper } from './FiltersWrapper';\n\ninterface SimpleFiltersTranslations {\n filters: string;\n}\n\ninterface FiltersProps {\n translations: SimpleFiltersTranslations;\n children: ReactNode;\n}\n\nexport const SimpleFilters: React.FunctionComponent> = ({\n translations,\n children,\n}) => (\n \n
    {children}
    \n
    \n);\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","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 * 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\"};","// extracted by mini-css-extract-plugin\nexport default {\"StatusIcon\":\"SwlIxgFwdrDmCjtNRdOG\",\"Icon\":\"iyWMDHr5ef9ZCaGHsiAN\",\"Variant--yellow\":\"bTjf2KP2kzrLGl5cF6Nm\",\"Variant--green\":\"DeIlhnKaRQl4iZJ6v9tx\",\"Variant--grey\":\"LN_6QNuOLnRkHxZnVJXw\",\"Variant--red\":\"XwSb4lYukwzn0Ynld3Gk\"};","import classNames from 'classnames';\nimport * as React from 'react';\nimport type { ReactNode } from 'react';\nimport type { MyPageStatusColoredIcon } from '../MyPageInfoList/MyPageStatusColoredIcon.csharp';\nimport styles from './StatusIcon.module.css';\n\ninterface StatusIconProps {\n icon: MyPageStatusColoredIcon;\n children: ReactNode;\n}\n\nexport const StatusIcon: React.FunctionComponent> = props => {\n const { icon, children } = props;\n\n return (\n
    \n
    \n {children}\n
    \n );\n};\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 {\"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 {\"SearchBase\":\"t1Mc7fFNhnMDRImE2LTM\",\"Filters--desktop\":\"KCW6oKtZgEZZs17wdvcA\",\"Filters--mobile\":\"X_hXjkRJoFPc8bAQBbpt\",\"Results\":\"Q2tMFNenFntPd0EMl7dQ\"};","// 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\"};"],"names":["useFrontendSettings","useMemo","GlobalContextProvider","getFrontendSettings","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","StudyType","SyllabusSearchResultItem","props","value","name","level","locations","studyType","status","url","React","className","Link","href","label","styles","SvgIcon","iconName","itemType","Campus","Online","assertNever","getIconName","join","StatusIcon","icon","statusIcon","statusText","SyllabusListSearch","SearchBase","render","searchUrl","facets","translations","selectedFacets","phrase","state","searchParams","classNames","searchBaseStyles","SearchBox","variant","withPageWrapper","onChange","handleQueryChange","target","placeholder","searchPlaceholder","CollapseFilters","filters","FacetsAccordionList","handleFacetChange","SelectedFiltersList","onRemoveFacet","removeFilterDescription","removeFilter","SimpleFilters","initialExpanded","Results","results","PagedFetchData","getBaseSearchQueryParameters","baseUrl","_objectSpread","debounceTime","take","_ref","data","AccordionExpander","children","expanded","iconType","color","otherProps","_objectWithoutProperties","_excluded","Button","_extends","type","ButtonType","Clear","concat","ButtonContent","Content","resolveIcon","Icon","AccordionItem","index","contentClassName","externallyExpanded","contentSpacing","lazyRender","isExpandable","theme","themeDefaultValues","withRoundedCorners","withBoxShadow","setExpanded","accordionId","uniqueId","content","onToggleClick","onCollapsed","useAccordionContentRenderer","lazy","shouldRenderContent","setShouldRenderContent","onHeaderClicked","renderExpander","baseExpanderProps","onClick","disabled","undefined","headerContent","expanderClassName","renderCustomExpander","Collapse","isOpen","onRest","ContentInner","shouldDisplayFilters","buttonOpenedClassname","contentExpandedClassname","isOpened","setIsOpened","isExpanded","setIsExpanded","toggleCollapse","FiltersWrapper","hideFilters","showFilters","FacetItem","facet","checkboxVariant","selectedFacet","find","sf","options","updateFilterValues","selectedFacetToUpdate","facetOption","selectedFacetValues","values","isChecked","item","length","map","uniqueFacetId","key","checked","some","v","e","updatedSelectedFacet","updateSelectedFacetValue","facetId","handleOnChange","htmlFor","List","items","renderItem","_facet$options","Item","wrapper","InfiniteScroll","loading","hasError","hasMoreData","topThreshold","loadMoreData","renderData","infiniteScrollTriggerRef","useInfiniteScroll","hasNextPage","onLoadMore","rootMargin","ref","PaginationStatus","allowRetry","hasNoResults","role","searching","error","tryAgain","noResultsFound","showMore","_props$initialData","_props$initialData2","super","newDataSeparatorId","componentDidUpdate","oldProps","initSkip","formatQueryParameters","setState","skip","handleLoadNewItems","getSearchQueryString","buildAbsoluteUrlWithQueryParameters","toString","handleLoadNewData","newData","onTotalCountChanged","totalCount","ExecutionContext","IsServerSide","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","arguments","cancelToken","makeNetworkRequestDebounce","makeNetworkRequest","cancel","debounce","method","timeout","axiosWrapper","request","axios","CancelToken","token","then","res","toggleLoading","catch","isCancel","console","componentDidMount","fetchData","QueryParametersChanged","queryParams","storedInHistory","params","param","getQueryParametersFromUrl","result","toUrl","newUrl","search","append","changeQueryParametersInActiveUrl","queryParameters","addHistoryEntry","ThrowIfServerSide","urlWithSearchParams","window","location","pathname","URL","history","pushState","replaceState","useQueryParametersObserver","onlyStoredInHistory","setQueryParams","useState","TwoWayMapping","reverseMap","Object","keys","findReverse","FacetsQueryParameterConverter","queryParameterNamesAndTranslationsTwoWayMapping","convertFromUserReadableQueryParameter","split","pop","convertToUserReadableQueryParameter","valueLabel","findLabelForQueryParameterValue","replaceNotFriendlyCharacters","parameterNamesToTranslationsMapping","accumulator","toLowerCase","isNaN","Number","findFacetOptionWithMatchingId","expectedId","f","option","queryParameterConverter","initSelectedFacetState","searchCriteria","getBaseSearchCriteria","phraseParam","x","selectedFacetsResult","newItem","emptyFacets","indexOf","newSearchValue","handleSearchParamsChange","prevPros","prevState","translatedQueryParams","defaultValue","searchBoxClassName","onKeyDown","otherDownshiftOptions","Header","HeaderInner","getLabelForFacet","facetVal","visibleFacets","previousValue","facetType","splice","text","format","template","replace","match","toLocaleString","getContentLocale","useIsMounted","isMounted","setIsMounted","useEffect","variable","variableRef","useRef"],"sourceRoot":""}