{"version":3,"sources":["webpack://@verndale/toolkit/./src/js/helpers/index.js","webpack://@verndale/toolkit/./src/js/helpers/motion.js","webpack://@verndale/toolkit/./src/js/modules/react/AcademicCalendar/components/DropdownFilter.js","webpack://@verndale/toolkit/./src/js/modules/react/FacultyListing/FacultyListingCard.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/ListingContext.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/CoveoSearchEngine.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/filterProtocol.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/ResultLink.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/ResultsPerPage.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/SearchUrlManager.js","webpack://@verndale/toolkit/./src/js/components/react/Dropdown.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/Sort.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/ArticleResultCard.js","webpack://@verndale/toolkit/./src/js/modules/react/FormListing/FormCard.js","webpack://@verndale/toolkit/./src/js/modules/react/ProgramListing/ProgramSchoolCard.js","webpack://@verndale/toolkit/./src/js/modules/react/SearchResultsListing/SearchCard.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/ResultList.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/Clear.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/ResultsSummaryInformation.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/Pagination.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/SearchBox.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/Tab.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/Facets/Facet.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/KeySearcher.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/KeywordSearchCard.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/FiltersPanel.js","webpack://@verndale/toolkit/./src/js/modules/react/AcademicCalendar/components/DropdownJumpLinks.js","webpack://@verndale/toolkit/./src/js/modules/react/AcademicCalendar/index.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/components/DidYouMean.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/ResultsListing.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/index.js","webpack://@verndale/toolkit/./src/js/modules/react/ResultsListing/useCoveoEngine.js"],"names":[],"mappings":"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","file":"scripts/1956.820b3f7f76da1c1bb9f0.js","sourcesContent":["// /**\n// * debounce function\n// * Delays the processing of the event\n// */\nexport const debounce = (callback, wait) => {\n let timerId;\n return (...args) => {\n clearTimeout(timerId);\n timerId = setTimeout(() => {\n callback(...args);\n }, wait);\n };\n};\n\nexport const throttle = (callback, wait) => {\n let inThrottle;\n return (...args) => {\n if (!inThrottle) {\n callback(...args);\n inThrottle = true;\n setTimeout(() => {\n inThrottle = false;\n }, wait);\n }\n };\n};\n// /**\n// * Checks if an element is focusable\n// *\n// * @param {Object} el - HTML element you want to check if it's focusable\n// */\nexport const isFocusable = el => {\n if (\n el.tabIndex > 0 ||\n (el.tabIndex === 0 && el.getAttribute('tabIndex') !== null)\n ) {\n return true;\n }\n\n if (el.disabled) {\n return false;\n }\n\n /* eslint-disable indent */\n switch (el.nodeName) {\n case 'A':\n return !!el.href && el.rel !== 'ignore';\n case 'INPUT':\n return el.type !== 'hidden' && el.type !== 'file';\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n /* eslint-enable indent */\n};\n\n// /**\n// * Key code list object\n// */\nexport const keyCode = {\n TAB: 9,\n RETURN: 13,\n ESC: 27,\n SPACE: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n};\n\n// /**\n// * Breakpoints list object\n// */\nexport const breakpoints = {\n mobile: 360,\n tablet: 768,\n tabletLandscape: 1024,\n desktop: 1280,\n wide: 1600\n};\n\n// /**\n// * Bicentennial Swiper Object\n// */\n\nexport const bicentennialSwiperConfig = {\n allowTouchMove: false,\n autoHeight: false,\n rewind: true,\n slidesPerView: 1,\n spaceBetween: 0,\n speed: 1000,\n watchOverflow: true,\n watchSlidesProgress: true\n}\n\n// /**\n// * Convert Unicode characters inside a string to their actual characters\n// */\n\nexport const convertUnicode = (input) => {\n if (typeof input === 'string') {\n return input.replace(/\\\\+u([0-9a-fA-F]{4})/g, (a, b) =>\n String.fromCharCode(parseInt(b, 16)))\n }\n return input;\n};\n","import { animate } from 'motion';\n\nexport const open = (element, duration = 1, easing = [0.19, 1, 0.22, 1]) =>\n animate(\n element,\n {\n maxHeight: `${element.scrollHeight}px`,\n opacity: 1\n },\n {\n duration,\n easing\n }\n );\n\nexport const close = (element, duration = 1, easing = [0.19, 1, 0.22, 1]) =>\n animate(\n element,\n {\n maxHeight: 0,\n opacity: 0\n },\n {\n duration,\n easing\n }\n );\n\nexport const hideOpacity = (\n element,\n duration = 1,\n delay = 0,\n easing = [0.19, 1, 0.22, 1]\n) =>\n animate(\n element,\n {\n opacity: 0\n },\n {\n duration,\n delay,\n easing\n }\n );\n\nexport const showOpacity = (\n element,\n duration = 1,\n delay = 0,\n easing = [0.19, 1, 0.22, 1]\n) =>\n animate(\n element,\n {\n opacity: 1\n },\n {\n duration,\n delay,\n easing\n }\n );\n\nexport const show = (\n element,\n duration = 1,\n delay = 0,\n easing = [0.19, 1, 0.22, 1]\n) =>\n animate(\n element,\n {\n maxBlockSize: 'unset'\n },\n {\n duration,\n delay,\n easing\n }\n );\n\nexport const hide = (\n element,\n maxBlockSize = 0,\n duration = 1,\n delay = 0,\n easing = [0.19, 1, 0.22, 1]\n) =>\n animate(\n element,\n {\n maxBlockSize\n },\n {\n duration,\n delay,\n easing\n }\n );\n\nexport const showFromBottom = (\n element,\n delay = 0.2,\n duration = 0.2,\n easing = [0.11, 0, 0.5, 0]\n) =>\n animate(\n element,\n {\n opacity: 1,\n translateY: 0\n },\n {\n delay,\n duration,\n easing\n }\n );\n\nexport const hideFromTop = (\n element,\n delay = 0.2,\n duration = 0.2,\n easing = [0.11, 0, 0.5, 0]\n) =>\n animate(\n element,\n {\n opacity: 0,\n translateY: 30\n },\n {\n delay,\n duration,\n easing\n }\n );\n\nexport const hideToRight = (\n element,\n delay = 0.2,\n duration = 0.2,\n easing = [0.11, 0, 0.5, 0]\n) =>\n animate(\n element,\n {\n opacity: 0,\n translateX: 90\n },\n {\n delay,\n duration,\n easing\n }\n );\n\nexport const hideToLeft = (\n element,\n delay = 0.2,\n duration = 0.2,\n easing = [0.11, 0, 0.5, 0]\n) =>\n animate(\n element,\n {\n opacity: 0,\n translateX: -90\n },\n {\n delay,\n duration,\n easing\n }\n );\n","import React, { useState, useEffect, useContext, useId } from 'react';\nimport PropTypes from 'prop-types';\nimport { buildFacet } from '@coveo/headless';\nimport useCoveoEngine from '../../ResultsListing/useCoveoEngine';\nimport ListingContext from '../../ResultsListing/ListingContext';\n\nconst DropdownFilter = ({ onChange }) => {\n const {\n dropdownFilterFacet,\n dropdownFilterFacetTitle,\n dropdownFilterLabel,\n dropdownFilterAllLabel,\n dropdownFilterHide,\n dropdownFilterSort,\n CLEAR_EVENT\n } = useContext(ListingContext);\n\n if (dropdownFilterHide) {\n return null;\n }\n\n const engine = useContext(useCoveoEngine);\n\n const [controller, setController] = useState(null);\n const [state, setState] = useState(null);\n\n const id = useId();\n\n const fragment = window.location.hash.slice(1);\n const parameters = new URLSearchParams(fragment);\n let parameter = parameters.get(`f[${dropdownFilterFacet}]`);\n const extraParameter = parameters.get(`f[${dropdownFilterFacet}_1]`);\n\n // eslint-disable-next-line no-eval\n const desiredOrder = eval(dropdownFilterSort);\n\n if (extraParameter) {\n parameter = extraParameter;\n }\n\n const [selectedOption, setSelectedOption] = useState(\n parameter || dropdownFilterFacetTitle\n );\n\n const handleClear = () => {\n setSelectedOption(dropdownFilterFacetTitle);\n onChange?.(null);\n };\n\n useEffect(() => {\n if (engine) {\n const _controller = buildFacet(engine, {\n options: {\n field: dropdownFilterFacet\n }\n });\n setController(_controller);\n setState(_controller.state);\n _controller.subscribe(() => {\n setState(_controller.state);\n });\n\n if (CLEAR_EVENT) window.addEventListener(CLEAR_EVENT, handleClear);\n\n return () => {\n if (CLEAR_EVENT) window.removeEventListener(CLEAR_EVENT, handleClear);\n };\n }\n }, []);\n\n const handleChange = e => {\n if (e.target.value === 'all') {\n const value = state?.values.find(option => option.state === 'selected');\n if (value) {\n setSelectedOption('all');\n controller.toggleSingleSelect(value);\n onChange?.(null);\n }\n } else {\n const value = state?.values.find(\n option => option.value === e.target.value\n );\n setSelectedOption(value.value);\n controller.toggleSingleSelect(value);\n onChange?.(value.value);\n }\n };\n\n return (\n <>\n {state?.values?.length > 0 ? (\n
\n \n \n {selectedOption === dropdownFilterFacetTitle && (\n \n )}\n {dropdownFilterAllLabel &&\n selectedOption !== dropdownFilterFacetTitle && (\n \n )}\n {desiredOrder !== undefined\n ? state?.values?.length > 0 &&\n (desiredOrder.length > 0\n ? state.values\n .filter(value => desiredOrder.includes(value.value))\n .sort(\n (a, b) =>\n desiredOrder.indexOf(a.value) -\n desiredOrder.indexOf(b.value)\n )\n : state.values\n ).map(value => (\n \n ))\n : state?.values?.map(value => (\n \n ))}\n \n
\n ) : null}\n \n );\n};\n\nDropdownFilter.propTypes = {\n onChange: PropTypes.func\n};\n\nexport default DropdownFilter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ResultLink from '../ResultsListing/components/ResultLink';\nimport { convertUnicode } from '../../../helpers';\n\nconst FacultyListingCard = ({\n mobileImage,\n image,\n alt,\n banner,\n link,\n name,\n lastName,\n title,\n departments,\n schools,\n result\n}) => (\n
\n
\n
\n \n \n {alt}\n \n {banner ? (\n

\n ) : null}\n
\n
\n {banner ? (\n

\n ) : null}\n

\n \n

\n

\n {departments ? (\n

\n ) : null}\n {schools ? (\n

\n ) : null}\n
\n
\n
\n);\n\nFacultyListingCard.propTypes = {\n mobileImage: PropTypes.string,\n image: PropTypes.string,\n alt: PropTypes.string,\n banner: PropTypes.string,\n link: PropTypes.string,\n name: PropTypes.string,\n lastName: PropTypes.string,\n title: PropTypes.string,\n departments: PropTypes.arrayOf(PropTypes.string),\n schools: PropTypes.arrayOf(PropTypes.string),\n result: PropTypes.object.isRequired\n};\n\nexport default FacultyListingCard;\n","import { createContext } from 'react';\n\nconst ResultsContext = createContext('');\n\nexport default ResultsContext;\n","import {\n buildSearchEngine,\n getSampleSearchEngineConfiguration\n} from '@coveo/headless';\n\n// eslint-disable-next-line import/prefer-default-export\nexport function coveoSearchEngine(\n organizationID,\n apiKey,\n pipeline,\n searchHub,\n debug = true\n) {\n const engine = buildSearchEngine({\n configuration:\n organizationID && apiKey\n ? {\n organizationId: organizationID,\n accessToken: apiKey,\n search: {\n pipeline,\n searchHub\n }\n }\n : getSampleSearchEngineConfiguration(), // for testing purposes\n loggerOptions: debug ? { level: 'info' } : { level: 'error' }\n });\n\n return engine;\n}\n","export default function filterProtocol(uri) {\n // Filters out dangerous URIs that can create XSS attacks such as `javascript:`.\n const isAbsolute = /^(https?|ftp|file|mailto|tel):/i.test(uri);\n const isRelative = /^(\\/|\\.\\/|\\.\\.\\/)/.test(uri);\n\n return isAbsolute || isRelative ? uri : '';\n}\n","import { buildInteractiveResult } from '@coveo/headless';\nimport React, { useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport useCoveoEngine from '../useCoveoEngine';\nimport filterProtocol from '../filterProtocol';\nimport { convertUnicode } from '../../../../helpers';\n\nconst ResultLink = ({ result, content, className, isDownload, link, isLocked }) => {\n const engine = useContext(useCoveoEngine);\n\n const interactiveResult = buildInteractiveResult(engine, {\n options: { result }\n });\n\n useEffect(() => () => interactiveResult.cancelPendingSelect(), []);\n return (\n interactiveResult.select()}\n onContextMenu={() => interactiveResult.select()}\n onMouseDown={() => interactiveResult.select()}\n onMouseUp={() => interactiveResult.select()}\n onTouchStart={() => interactiveResult.beginDelayedSelect()}\n onTouchEnd={() => interactiveResult.cancelPendingSelect()}\n dangerouslySetInnerHTML={{ __html: convertUnicode(content) }}\n >\n );\n};\n\nResultLink.propTypes = {\n result: PropTypes.object.isRequired,\n content: PropTypes.string,\n className: PropTypes.string,\n isDownload: PropTypes.bool,\n link: PropTypes.string,\n isLocked: PropTypes.bool\n};\n\nexport default ResultLink;\n","import React, { useEffect, useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { buildResultsPerPage } from '@coveo/headless';\nimport useCoveoEngine from '../useCoveoEngine';\nimport ListingContext from '../ListingContext';\nimport { breakpoints } from '../../../../helpers';\n\nconst ResultsPerPage = props => {\n const engine = useContext(useCoveoEngine);\n const { resultsPerPage, resultsPerPageMobile } = useContext(ListingContext);\n\n const [controller, setController] = useState(null);\n const [, setState] = useState(null);\n const [numberOfResults, setNumberOfResults] = useState(null);\n\n const getSize = () => {\n if (resultsPerPageMobile) {\n return window.matchMedia(`(max-width: ${breakpoints.tablet - 1}px)`)\n .matches\n ? resultsPerPageMobile\n : resultsPerPage;\n }\n\n return resultsPerPage;\n };\n\n const handleResize = () => {\n setNumberOfResults(parseInt(getSize(), 10));\n };\n\n useEffect(() => {\n controller?.set(numberOfResults);\n }, [numberOfResults]);\n\n useEffect(() => {\n if (engine) {\n const _controller = buildResultsPerPage(engine, {\n initialState: { numberOfResults: parseInt(getSize(), 10) }\n });\n setController(_controller);\n setState(_controller.state);\n _controller.subscribe(() => setState(_controller.state));\n\n if (!props.deactivateResize) {\n window.addEventListener('resize', handleResize);\n }\n\n return () => {\n if (!props.deactivateResize) {\n window.removeEventListener('resize', handleResize);\n }\n };\n }\n }, []);\n\n return <>;\n};\n\nResultsPerPage.propTypes = {\n deactivateResize: PropTypes.bool\n};\n\nexport default ResultsPerPage;\n","import { buildUrlManager } from '@coveo/headless';\n\n// eslint-disable-next-line import/prefer-default-export\nexport function bindUrlManager(engine) {\n const fragment = () => window.location.hash.slice(1);\n\n const urlManager = buildUrlManager(engine, {\n initialState: { fragment: fragment() }\n });\n const onHashChange = () => {\n urlManager.synchronize(fragment());\n };\n\n window.addEventListener('hashchange', onHashChange);\n const unsubscribeManager = urlManager.subscribe(() => {\n const hash = `#${urlManager.state.fragment}`;\n // eslint-disable-next-line no-restricted-globals\n history.pushState(null, document.title, hash);\n });\n\n return () => {\n window.removeEventListener('hashchange', onHashChange);\n unsubscribeManager();\n };\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nconst Dropdown = ({ selectedOption, options = [], onChange, innerLabel }) => {\n const getDisplayLabel = () => {\n if (selectedOption) {\n if (innerLabel) {\n return `${innerLabel} ${selectedOption.label.toLowerCase()}`;\n }\n return `${selectedOption.label}`;\n }\n return null;\n };\n\n const [selectLabel, setSelectLabel] = useState(getDisplayLabel());\n\n const handleOptionChange = e => {\n const option = options.find(el => el.value === e.target.value);\n onChange(option);\n };\n\n useEffect(() => {\n setSelectLabel(getDisplayLabel());\n }, [selectedOption]);\n\n return (\n \n \n {options.map((option, i) => (\n \n ))}\n \n );\n};\n\nDropdown.propTypes = {\n selectedOption: PropTypes.shape({\n value: PropTypes.PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool\n ]),\n label: PropTypes.string\n }),\n options: PropTypes.arrayOf(PropTypes.object),\n onChange: PropTypes.func.isRequired,\n innerLabel: PropTypes.string\n};\n\nexport default Dropdown;\n","import React, { useState, useEffect, useContext } from 'react';\nimport {\n buildSort,\n buildFieldSortCriterion,\n buildDateSortCriterion,\n buildRelevanceSortCriterion,\n SortOrder\n} from '@coveo/headless';\nimport PropTypes from 'prop-types';\nimport Dropdown from '../../../../components/react/Dropdown';\nimport useCoveoEngine from '../useCoveoEngine';\nimport ListingContext from '../ListingContext';\n\n\nconst Sort = ({ visible }) => {\n const { sortFields, sortBy, defaultSort } = useContext(ListingContext);\n\n if (!sortFields) {\n return;\n }\n\n let customSort;\n let hasDefaultSort = false;\n const engine = useContext(useCoveoEngine);\n const [controller, setController] = useState(null);\n const [, setState] = useState(null);\n const sortCriterionFields = JSON.parse(sortFields).reduce(\n (_sortFields, field) => {\n _sortFields[field.label] = buildFieldSortCriterion(\n field.value,\n field.direction === 'ascending'\n ? SortOrder.Ascending\n : SortOrder.Descending\n );\n return _sortFields;\n },\n {}\n );\n\n const relevanceSortCriterion = buildRelevanceSortCriterion();\n const dateSortCriterionDescending = buildDateSortCriterion(\n SortOrder.Descending\n );\n const dateSortCriterionAscending = buildDateSortCriterion(\n SortOrder.Ascending\n );\n\n const fragment = window.location.hash.slice(1);\n const parameters = new URLSearchParams(fragment);\n const parameter = parameters.get('sortCriteria');\n\n let isCustomFacet = false;\n\n if (parameter) {\n const sortedBy = parameter.trim().split(/\\s+/);\n\n isCustomFacet = sortedBy[0][0] === '@';\n\n customSort = buildFieldSortCriterion(\n sortedBy[0].replace('@', ''),\n sortedBy[1]\n );\n } else if (defaultSort) {\n const newDefaultSort = JSON.parse(defaultSort);\n\n customSort = buildFieldSortCriterion(\n newDefaultSort.value,\n newDefaultSort.direction\n );\n\n hasDefaultSort = true;\n }\n\n const [sortOptions, setSortOptions] = useState(\n JSON.parse(sortFields).reduce((options, option) => {\n const object = {\n direction: option.direction,\n label: option.label,\n value: option.direction ? option.label : option.value\n };\n\n if (customSort && !hasDefaultSort) {\n if (\n (isCustomFacet &&\n option.direction === customSort.order &&\n option.value === customSort.field) ||\n (!isCustomFacet &&\n customSort.field === 'date' &&\n option.value.includes('date'))\n ) {\n object.selected = true;\n }\n } else {\n object.selected = option.selected;\n }\n\n options.push(object);\n return options;\n }, [])\n );\n\n useEffect(() => {\n if (engine) {\n const _controller = buildSort(engine, {\n initialState: { criterion: customSort || relevanceSortCriterion }\n });\n setController(_controller);\n setState(_controller.state);\n _controller.subscribe(() => {\n setState(_controller.state);\n });\n }\n }, []);\n\n const handleSortChange = (val, direction, label) => {\n switch (val) {\n case 'relevance':\n controller?.sortBy(relevanceSortCriterion);\n break;\n case 'datedescending':\n controller?.sortBy(dateSortCriterionDescending);\n break;\n case 'dateascending':\n controller?.sortBy(dateSortCriterionAscending);\n break;\n default:\n if (direction && sortCriterionFields[label]) {\n controller?.sortBy(sortCriterionFields[label]);\n } else {\n controller?.sortBy(relevanceSortCriterion);\n }\n break;\n }\n\n setSortOptions(prev =>\n prev.map(option => {\n if (option.value === val) {\n return { ...option, selected: true };\n }\n return { ...option, selected: false };\n })\n );\n };\n\n return (\n <>\n {visible && sortOptions && (\n opt.selected === true)}\n onChange={opt =>\n handleSortChange(opt.value, opt.direction, opt.label)\n }\n />\n )}\n \n );\n};\n\nSort.propTypes = {\n visible: PropTypes.bool\n}\n\nexport default Sort;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport ListingContext from '../ListingContext';\nimport ResultLink from './ResultLink';\nimport { convertUnicode } from '../../../../helpers';\n\nconst ArticleResultCard = ({\n heading,\n readingTime,\n teaser,\n articleDateInfo,\n url,\n tags,\n listingImage,\n result\n}) => {\n const { readingTimeSuffix, publishedPrefix } = useContext(ListingContext);\n\n return (\n
\n {listingImage.url && (\n \n )}\n
\n {readingTime && (\n \n )}\n

\n \n

\n {teaser && (\n

\n )}\n {articleDateInfo && (\n \n )}\n {tags && (\n
\n {tags.map((tag, i) => (\n 1 && i !== tags.length - 1 ? `${tag}, ` : tag\n }`\n }}\n >\n ))}\n
\n )}\n
\n
\n );\n};\n\nArticleResultCard.propTypes = {\n heading: PropTypes.string,\n readingTime: PropTypes.string,\n articleDateInfo: PropTypes.string,\n teaser: PropTypes.string,\n url: PropTypes.string,\n listingImage: PropTypes.object,\n tags: PropTypes.array,\n result: PropTypes.object.isRequired\n};\n\nexport default ArticleResultCard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ResultLink from '../ResultsListing/components/ResultLink';\n\nconst FormResultCard = ({\n icon,\n url,\n fileUrl,\n heading,\n departments,\n date,\n lastUpdatedLabel,\n result\n}) => (\n \n
\n
\n {icon.alt}\n
\n
\n

\n \n

\n {departments ? (\n

\n ) : null}\n

\n
\n
\n \n);\n\nFormResultCard.propTypes = {\n icon: PropTypes.object,\n url: PropTypes.string,\n fileUrl: PropTypes.string,\n heading: PropTypes.string,\n departments: PropTypes.array,\n date: PropTypes.string,\n lastUpdatedLabel: PropTypes.string,\n result: PropTypes.object.isRequired\n};\n\nexport default FormResultCard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ResultLink from '../ResultsListing/components/ResultLink';\nimport { convertUnicode } from '../../../helpers';\n\nconst ProgramSchoolCard = ({ name, degree, result, link }) => (\n \n
\n

\n \n

\n

\n
\n \n);\n\nProgramSchoolCard.propTypes = {\n degree: PropTypes.arrayOf(PropTypes.string),\n name: PropTypes.string,\n link: PropTypes.string,\n result: PropTypes.object.isRequired\n};\n\nexport default ProgramSchoolCard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ResultLink from '../ResultsListing/components/ResultLink';\nimport { convertUnicode } from '../../../helpers';\n\nconst SearchListingCard = ({ title, copy, label, securityRoles, userRole, result, url }) => {\n let isLocked = false;\n\n if (securityRoles?.length > 0) {\n const splitSecurityRoles = securityRoles[0].split(',');\n if (!splitSecurityRoles.includes(userRole)) {\n isLocked = true;\n }\n }\n\n return (\n
\n \n

\n \n

\n

\n
\n );\n};\n\nSearchListingCard.propTypes = {\n label: PropTypes.string,\n title: PropTypes.string,\n copy: PropTypes.string,\n securityRoles: PropTypes.array,\n userRole: PropTypes.string,\n url: PropTypes.string,\n result: PropTypes.object.isRequired\n};\n\nexport default SearchListingCard;\n","import React, { useState, useEffect, useContext } from 'react';\nimport { buildResultList, loadQueryActions } from '@coveo/headless';\nimport ArticleResultCard from './ArticleResultCard';\nimport FormResultCard from '../../FormListing/FormCard';\nimport ProgramSchoolCard from '../../ProgramListing/ProgramSchoolCard';\nimport FacultyListingCard from '../../FacultyListing/FacultyListingCard';\nimport ListingContext from '../ListingContext';\nimport useCoveoEngine from '../useCoveoEngine';\nimport SearchListingCard from '../../SearchResultsListing/SearchCard';\n\nconst ResultList = () => {\n const engine = useContext(useCoveoEngine);\n const [, setController] = useState(null);\n const [state, setState] = useState(null);\n\n const { typeOfResultCard, cardFields, lastUpdatedLabel, lockValue } =\n useContext(ListingContext);\n const cardFieldsObj = cardFields ? JSON.parse(cardFields) : [];\n\n useEffect(() => {\n if (engine) {\n const _controller = buildResultList(engine, {\n options: {\n fieldsToInclude: Object.values(cardFieldsObj)\n }\n });\n setController(_controller);\n setState(_controller.state);\n _controller.subscribe(() => {\n setState(_controller.state);\n });\n const data = localStorage.getItem('coveo_standalone_search_box_data');\n if (data) {\n const { updateQuery } = loadQueryActions(engine);\n const { value } = JSON.parse(data);\n engine.dispatch(updateQuery({ q: value }));\n localStorage.removeItem('coveo_standalone_search_box_data');\n }\n }\n }, []);\n\n const formatDate = dateNumber => {\n const date = new Date(dateNumber);\n return `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`;\n };\n const createTags = result => {\n let tags = [];\n if (result.raw[cardFieldsObj?.mainCategory]) {\n tags.push(result.raw[cardFieldsObj.mainCategory]);\n }\n if (result.raw[cardFieldsObj?.topics]) {\n tags = [...tags, ...result.raw[cardFieldsObj.topics]];\n }\n return tags;\n };\n\n return (\n <>\n {state && state.results?.length > 0 && !state?.isLoading && (\n \n {state?.results?.map((result, i) => (\n // --------- HANDLE OTHER TYPES OF CARDS HERE ----------\n
  • \n {typeOfResultCard === 'faculty' && (\n \n )}\n {typeOfResultCard === 'article' && (\n \n )}\n {typeOfResultCard === 'blog' && (\n \n )}\n {typeOfResultCard === 'form' && (\n \n )}\n {typeOfResultCard === 'program' && (\n \n )}\n {typeOfResultCard === 'search' && (\n \n )}\n
  • \n ))}\n \n )}\n \n );\n};\n\nexport default ResultList;\n","import React, { useState, useEffect, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { buildBreadcrumbManager, buildQuerySummary } from '@coveo/headless';\nimport useCoveoEngine from '../useCoveoEngine';\nimport ListingContext from '../ListingContext';\n\n\nconst Clear = ({ manualShowClear, manualShowClearReset }) => {\n const { clearFiltersLabel, CLEAR_EVENT } =\n useContext(ListingContext);\n const engine = useContext(useCoveoEngine);\n\n const [controller, setController] = useState(null);\n const [state, setState] = useState(null);\n\n const [, setSearchController] = useState(null);\n const [searchState, setSearchState] = useState(null);\n\n useEffect(() => {\n if (engine) {\n const _controller = buildBreadcrumbManager(engine, {\n options: { field: 'clear' }\n });\n setController(_controller);\n setState(_controller.state);\n _controller.subscribe(() => {\n setState(_controller.state);\n });\n\n const _searchController = buildQuerySummary(engine);\n setSearchController(_searchController);\n setSearchState(_searchController.state);\n _searchController.subscribe(() => {\n setSearchState(_searchController.state);\n });\n }\n }, []);\n\n const handleClearAllFilters = () => {\n controller.deselectAll();\n manualShowClearReset?.();\n\n const event = new Event(CLEAR_EVENT);\n window.dispatchEvent(event);\n };\n\n return (\n <>\n {state?.hasBreadcrumbs || searchState?.hasQuery || manualShowClear ? (\n \n {clearFiltersLabel}\n \n ) : null}\n \n\n );\n};\n\nClear.propTypes = {\n manualShowClear: PropTypes.bool,\n manualShowClearReset: PropTypes.func\n};\n\nexport default Clear;\n","import React, { useState, useEffect, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { buildQuerySummary } from '@coveo/headless';\nimport useCoveoEngine from '../useCoveoEngine';\nimport ListingContext from '../ListingContext';\nimport Clear from './Clear';\n\n\nconst ResultsSummaryInformation = ({ wrapperClass, showClearLabel }) => {\n const engine = useContext(useCoveoEngine);\n const { noResultsMessage } = useContext(ListingContext);\n\n const [, setController] = useState(null);\n const [state, setState] = useState(null);\n\n useEffect(() => {\n if (engine) {\n const _controller = buildQuerySummary(engine);\n setController(_controller);\n setState(_controller.state);\n _controller.subscribe(() => {\n setState(_controller.state);\n });\n }\n }, []);\n\n const RenderHasResults = () => {\n const infoString = `Viewing ${state?.firstResult} - ${state?.lastResult\n } of ${state?.total} ${state?.lastResult === 1 ? 'result' : 'results'} ${state?.query.length > 0 ? 'for' : ''\n }`;\n return (\n

    \n {infoString} {state?.query}\n

    \n );\n };\n\n const RenderNoResults = () =>

    {noResultsMessage}

    ;\n\n return (\n
    \n
    \n {state?.hasResults ? : }\n
    \n {\n showClearLabel && \n }\n
    \n );\n};\n\nResultsSummaryInformation.propTypes = {\n wrapperClass: PropTypes.string,\n showClearLabel: PropTypes.bool\n};\n\nexport default ResultsSummaryInformation;\n","import React, { useState, useEffect, useContext, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { scrollIntoView } from 'seamless-scroll-polyfill';\nimport { buildPager } from '@coveo/headless';\n\nimport useCoveoEngine from '../useCoveoEngine';\nimport ListingContext from '../ListingContext';\n\nconst Pagination = ({ isMobile }) => {\n const engine = useContext(useCoveoEngine);\n const { nextArrowLabel, previousArrowLabel } = useContext(ListingContext);\n const [controller, setController] = useState(null);\n const [state, setState] = useState(null);\n const paginationRef = useRef(null);\n\n useEffect(() => {\n if (engine) {\n const _controller = buildPager(engine, {\n options: { numberOfPages: isMobile ? 3 : 5 }\n });\n setController(_controller);\n setState(_controller.state);\n _controller.subscribe(() => {\n setState(_controller.state);\n });\n }\n }, []);\n\n const scrollToTop = () => {\n const listContainer = paginationRef.current?.closest('.results-listing');\n if (listContainer) {\n scrollIntoView(listContainer, {\n behavior: 'smooth',\n block: 'start'\n });\n }\n };\n\n const handleGoToPreviousPage = e => {\n if (state?.hasPreviousPage) controller.previousPage();\n e.currentTarget.blur();\n scrollToTop();\n };\n\n const handleGoToNextPage = e => {\n if (state?.hasNextPage) controller.nextPage();\n e.currentTarget.blur();\n scrollToTop();\n };\n\n const handleGoToLastPage = e => {\n if (state?.maxPage) controller.selectPage(state.maxPage);\n e.currentTarget.blur();\n scrollToTop();\n };\n\n const handleGoToFirstPage = e => {\n if (state?.maxPage) controller.selectPage(1);\n e.currentTarget.blur();\n scrollToTop();\n };\n\n const handleGoToPage = (e, pageNumber) => {\n controller.selectPage(pageNumber);\n e.currentTarget.blur();\n scrollToTop();\n };\n\n return (\n <>\n {state?.maxPage > 1 && (\n \n
      \n
    • \n \n \n \n \n \n
    • \n {((isMobile && state?.currentPage >= 3 && state.maxPage > 3) ||\n (!isMobile && state?.currentPage > 3 && state.maxPage > 5)) && (\n
    • \n \n 1\n \n
    • \n )}\n {((isMobile && state?.currentPage > 3 && state?.maxPage > 3) ||\n (!isMobile && state?.currentPage > 4 && state?.maxPage > 5)) && (\n
    • ...
    • \n )}\n {state?.currentPages.map((pageNumber, i) => (\n
    • \n handleGoToPage(e, pageNumber)}\n className={`pagination__item ${\n state?.currentPage === pageNumber\n ? 'pagination__item--current'\n : ''\n }`}\n >\n {pageNumber}\n \n
    • \n ))}\n {((isMobile &&\n state?.currentPage < state?.maxPage - 2 &&\n state?.maxPage !== 3) ||\n (!isMobile &&\n state?.currentPage < state?.maxPage - 3 &&\n state?.maxPage !== 5)) &&
    • ...
    • }\n {((isMobile &&\n state?.currentPage < state?.maxPage - 1 &&\n state?.maxPage > 3) ||\n (!isMobile &&\n state?.currentPage < state?.maxPage - 2 &&\n state?.maxPage > 5)) && (\n
    • \n \n {state?.maxPage}\n \n
    • \n )}\n
    • \n \n \n \n \n \n
    • \n
    \n \n )}\n \n );\n};\n\nPagination.propTypes = {\n isMobile: PropTypes.bool\n};\n\nexport default Pagination;\n","import React, { useState, useEffect, useContext, useId } from 'react';\nimport PropTypes from 'prop-types';\nimport { buildSearchBox } from '@coveo/headless';\nimport useCoveoEngine from '../useCoveoEngine';\nimport ListingContext from '../ListingContext';\n\n\nconst SearchBox = ({\n onNewSearch,\n hiddenLabel,\n clearValue,\n handleClearedValue\n}) => {\n const engine = useContext(useCoveoEngine);\n const { searchInputLabel, searchInputPlaceholder, searchBtnLabel, CLEAR_EVENT } =\n useContext(ListingContext);\n const [controller, setController] = useState(null);\n const [state, setState] = useState(null);\n const [clearTriggered, setClearTriggered] = useState(false);\n const isEnterKey = e => e.key === 'Enter';\n const id = useId();\n\n const minQueryLengthForSuggestions = 3;\n\n useEffect(() => {\n if (engine) {\n const _controller = buildSearchBox(engine, {\n id: 'results-listing-search-box',\n enableQuerySyntax: true\n });\n setController(_controller);\n setState(_controller.state);\n _controller.subscribe(() => {\n setState(_controller.state);\n });\n }\n }, []);\n\n const submitQuery = () => {\n if (typeof onNewSearch === 'function') onNewSearch();\n controller.submit();\n setClearTriggered(false);\n };\n\n const handleKeyDown = e => {\n if (isEnterKey(e)) {\n submitQuery();\n }\n };\n\n const handleSuggestionsKeyDown = e => {\n if (\n e.key === 'ArrowDown' &&\n state.suggestions.length > 0 &&\n state.value?.length >= minQueryLengthForSuggestions\n ) {\n e.preventDefault();\n const focusedElement = document.querySelector(\n '.coveo-search-results__search-box-suggestion:focus'\n );\n const firstSuggestion = document.querySelector(\n '.coveo-search-results__search-box-suggestion:first-child'\n );\n const lastSuggestion = document.querySelector(\n '.coveo-search-results__search-box-suggestion:last-child'\n );\n\n if (focusedElement === null) {\n firstSuggestion.focus();\n } else if (focusedElement === lastSuggestion) {\n // firstSuggestion.focus();\n document\n .getElementsByClassName('keyword-search-card__input').item(0)\n .focus();\n } else {\n focusedElement.nextSibling.focus();\n }\n }\n\n if (\n e.key === 'ArrowUp' &&\n state.suggestions.length > 0 &&\n state.value.length >= minQueryLengthForSuggestions\n ) {\n e.preventDefault();\n const focusedElement = document.querySelector(\n '.coveo-search-results__search-box-suggestion:focus'\n );\n const firstSuggestion = document.querySelector(\n '.coveo-search-results__search-box-suggestion:first-child'\n );\n const lastSuggestion = document.querySelector(\n '.coveo-search-results__search-box-suggestion:last-child'\n );\n\n if (focusedElement === null) {\n lastSuggestion.focus();\n } else if (focusedElement === firstSuggestion) {\n // lastSuggestion.focus();\n document\n .getElementsByClassName('keyword-search-card__input').item(0)\n .focus();\n } else {\n focusedElement.previousSibling.focus();\n }\n }\n \n }\n\n const handleSearchButtonClick = () => {\n submitQuery();\n };\n\n const handleInputChange = e => {\n controller.updateText(e.target.value);\n };\n\n const handleClear = () => {\n setClearTriggered(true);\n }\n\n useEffect(() => {\n if (clearTriggered || clearValue) {\n controller.updateText('');\n submitQuery();\n handleClearedValue?.();\n }\n }, [clearTriggered, clearValue]);\n\n useEffect(() => {\n window.addEventListener(CLEAR_EVENT, () => handleClear());\n }, []);\n\n const suggestionStyle = {\n cursor: 'pointer',\n };\n\n const handleSuggestionClick = (e, suggestion) => {\n e.preventDefault();\n controller.selectSuggestion(suggestion);\n };\n\n return (\n <>\n {state && (\n
    \n
    \n \n {searchInputLabel}\n \n
    { handleSuggestionsKeyDown(e) }}\n >\n handleKeyDown(e)}\n placeholder={searchInputPlaceholder}\n autoComplete='off'\n />\n
    \n = 1\n ? 'keyword-search-card__submit'\n : 'keyword-search-card__submit keyword-search-card__submit--disabled'\n }\n aria-label={searchBtnLabel}\n disabled={!(state.value.length >= 1)}\n onClick={handleSearchButtonClick}\n >\n \n \n \n \n
    \n {state.suggestions.length > 0 &&\n state.value.length >= minQueryLengthForSuggestions && (\n
    \n {state.suggestions.map(suggestion => (\n handleSuggestionClick(e, suggestion.rawValue)}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n handleSuggestionClick(e, suggestion.rawValue);\n }\n }}\n dangerouslySetInnerHTML={{\n __html: suggestion.highlightedValue\n }}\n onMouseDown={e => e.preventDefault()}\n >\n ))}\n
    \n )}\n
    \n
    \n
    \n )}\n \n );\n};\n\nSearchBox.propTypes = {\n hiddenLabel: PropTypes.bool,\n clearValue: PropTypes.bool,\n handleClearedValue: PropTypes.func,\n onNewSearch: PropTypes.func\n};\n\nexport default SearchBox;\n","import React, { useState, useEffect, useContext } from 'react';\nimport { buildTab, buildQueryExpression } from '@coveo/headless';\nimport useCoveoEngine from '../useCoveoEngine';\nimport ListingContext from '../ListingContext';\n\nconst Tab = () => {\n const engine = useContext(useCoveoEngine);\n const { school } = useContext(ListingContext);\n const [, setController] = useState(null);\n const [, setState] = useState(null);\n\n useEffect(() => {\n if (engine && school) {\n const messageExpression = buildQueryExpression()\n .addStringField({\n field: 'mcphs_schools',\n operator: 'isExactly',\n values: [school]\n })\n .toQuerySyntax();\n const _controller = buildTab(engine, {\n initialState: { isActive: true },\n options: {\n id: school,\n expression: messageExpression\n }\n });\n setController(_controller);\n setState(_controller.state);\n _controller.subscribe(() => {\n setState(_controller.state);\n });\n }\n }, []);\n\n return <>;\n};\n\nexport default Tab;\n","import PropTypes from 'prop-types';\nimport React, { useState, useEffect, useRef, useContext, useId } from 'react';\nimport { buildFacet } from '@coveo/headless';\nimport { open, close } from '../../../../../helpers/motion';\nimport useCoveoEngine from '../../useCoveoEngine';\nimport ListingContext from '../../ListingContext';\nimport { convertUnicode } from '../../../../../helpers';\n\nconst Facet = ({ facetField, facetTitle }) => {\n const engine = useContext(useCoveoEngine);\n const { noFacetsMessage, seeMoreLabel, seeLessLabel } =\n useContext(ListingContext);\n const [expanded, setExpanded] = useState(false);\n const facetTriggeRef = useRef();\n const facetListRef = useRef();\n const [controller, setController] = useState(null);\n const [state, setState] = useState(null);\n const [showMore, setShowMore] = useState(false);\n const [showLess, setShowLess] = useState(false);\n const listId = useId();\n\n useEffect(() => {\n if (engine) {\n const _controller = buildFacet(engine, {\n options: {\n numberOfValues: 10,\n field: facetField,\n sortCriteria: 'alphanumeric'\n }\n });\n setController(_controller);\n setState(_controller.state);\n _controller.subscribe(() => {\n setState(_controller.state);\n if (_controller.state.hasActiveValues) setExpanded(true);\n });\n }\n }, []);\n\n useEffect(() => {\n if (expanded) {\n // open\n facetListRef.current.style.removeProperty('padding');\n open(facetListRef.current, 0.5).finished.then(() => {\n facetListRef.current.style.maxHeight = 'none';\n });\n } else {\n // close\n facetListRef.current.style.padding = '0';\n close(facetListRef.current, 0.5).finished.then(() => {});\n }\n }, [expanded]);\n\n useEffect(() => {\n if (showMore && state?.canShowMoreValues) {\n controller.showMoreValues();\n }\n if (showLess && state?.canShowLessValues) {\n controller.showLessValues();\n }\n }, [state]);\n\n const handleShowMore = () => {\n setShowLess(false);\n setShowMore(true);\n controller.showMoreValues();\n };\n\n const handleShowLess = () => {\n setShowMore(false);\n setShowLess(true);\n controller.showLessValues();\n };\n\n return (\n
    \n
    \n setExpanded(!expanded)}\n ref={facetTriggeRef}\n >\n {facetTitle}\n
    \n \n
    \n
    \n \n );\n};\n\nFacet.propTypes = {\n facetField: PropTypes.string.isRequired,\n facetTitle: PropTypes.string.isRequired\n};\n\nexport default Facet;\n","import React, {\n useState,\n forwardRef,\n useImperativeHandle,\n useContext\n} from 'react';\n\nimport PropTypes from 'prop-types';\n\nimport {\n loadSearchActions,\n loadAdvancedSearchQueryActions,\n loadSearchAnalyticsActions,\n} from '@coveo/headless';\n\nimport useCoveoEngine from '../useCoveoEngine';\nimport ListingContext from '../ListingContext';\n\nconst KeySearcher = forwardRef(({ setActive }, ref) => {\n const engine = useContext(useCoveoEngine);\n const { keySearcherLabel, firstLetterFilterFacet, advancedQuery } =\n useContext(ListingContext);\n const [selectedLetter, setSelectedLetter] = useState('');\n const alpha = Array.from(Array(26)).map((e, i) => i + 65);\n const alphabet = alpha.map(x => String.fromCharCode(x));\n const { executeSearch } = engine\n ? loadSearchActions(engine)\n : { executeSearch: null };\n const advancedQuerySearchActionCreator = engine\n ? loadAdvancedSearchQueryActions(engine)\n : null;\n\n const { logSearchboxSubmit } = engine\n ? loadSearchAnalyticsActions(engine)\n : { executeSearch: null };\n\n useImperativeHandle(ref, () => ({\n deselectAllKeys() {\n setSelectedLetter('');\n engine?.dispatch(\n advancedQuerySearchActionCreator.registerAdvancedSearchQueries({\n aq: advancedQuery\n })\n );\n\n setActive(false);\n engine?.dispatch(executeSearch(logSearchboxSubmit()));\n }\n }));\n\n const handleKeyClicked = e => {\n if (selectedLetter === e.currentTarget.value) {\n setSelectedLetter('');\n engine?.dispatch(\n advancedQuerySearchActionCreator.registerAdvancedSearchQueries({\n aq: advancedQuery\n })\n );\n setActive(false);\n engine?.dispatch(executeSearch(logSearchboxSubmit()));\n } else {\n setSelectedLetter(e.currentTarget.value);\n e.currentTarget.blur();\n engine?.dispatch(\n advancedQuerySearchActionCreator.registerAdvancedSearchQueries({\n aq: `${advancedQuery} @${firstLetterFilterFacet}/= \"^[${e.currentTarget.value.toLowerCase()}${e.currentTarget.value.toUpperCase()}].*\"`\n })\n );\n setActive(true);\n engine?.dispatch(executeSearch(logSearchboxSubmit()));\n }\n };\n\n return (\n
    \n
    \n {keySearcherLabel}\n
    \n {alphabet.map((x, i) => (\n
    \n \n
    \n ))}\n
    \n
    \n
    \n );\n});\n\nKeySearcher.displayName = 'KeySearcher';\n\nKeySearcher.propTypes = {\n setActive: PropTypes.func\n};\n\nexport default KeySearcher;\n","import React, { useState, useEffect, useRef, useContext } from 'react';\nimport { buildBreadcrumbManager } from '@coveo/headless';\nimport SearchBox from './SearchBox';\nimport KeySearcher from './KeySearcher';\nimport useCoveoEngine from '../useCoveoEngine';\nimport ListingContext from '../ListingContext';\nimport Clear from './Clear';\n\nconst KeywordSearchCard = () => {\n const { filtersCardTitle, keySearcherLabel } =\n useContext(ListingContext);\n const engine = useContext(useCoveoEngine);\n\n const [controller, setController] = useState(null);\n const [, setState] = useState(null);\n const [showClear, setShowClear] = useState(false);\n\n const [clearValue, setClearValue] = useState(false);\n const keySearcherRef = useRef(null);\n\n useEffect(() => {\n if (engine) {\n const _controller = buildBreadcrumbManager(engine, {\n options: { field: 'clear' }\n });\n setController(_controller);\n setState(_controller.state);\n _controller.subscribe(() => {\n setState(_controller.state);\n });\n }\n }, []);\n\n const handleClearAllFilters = () => {\n setShowClear(false);\n setClearValue(true);\n keySearcherRef?.current?.deselectAllKeys();\n };\n\n const handleNewSearch = () => {\n controller.deselectAll();\n setShowClear(false);\n keySearcherRef?.current?.deselectAllKeys();\n };\n\n const handleClearedValue = () => {\n setClearValue(false);\n };\n\n return (\n
    \n
    \n
    \n \n {filtersCardTitle}\n \n \n
    \n \n {keySearcherLabel && (\n \n )}\n
    \n
    \n );\n};\n\nexport default KeywordSearchCard;\n","import React, {\n useEffect,\n useRef,\n useState,\n useImperativeHandle,\n forwardRef,\n useContext,\n useId\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';\nimport { animate } from 'motion';\nimport Facet from './Facets/Facet';\nimport KeywordSearchCard from './KeywordSearchCard';\nimport { open, close } from '../../../../helpers/motion';\nimport ListingContext from '../ListingContext';\n\nconst FiltersPanel = forwardRef(({ filtersContainerRef }, ref) => {\n const id = useId();\n const { facets, mobileFiltersPanelTitle } = useContext(ListingContext);\n\n const [filtersExpanded, setFiltersExpanded] = useState(false);\n const [sectionBottom, setSectionBottom] = useState(false);\n const [sectionTop, setSectionTop] = useState(false);\n\n const filtersButtonRef = useRef();\n const filtersPanelRef = useRef();\n\n let firstClose = true;\n\n useImperativeHandle(ref, () => ({\n setBottom(val) {\n setSectionBottom(val);\n },\n setTop(val) {\n setSectionTop(val);\n }\n }));\n\n const handleResize = () => {\n if (!window.matchMedia('(max-width: 767px)').matches) {\n filtersPanelRef.current.style = null;\n filtersPanelRef.current.hidden = false;\n }\n };\n\n useEffect(() => {\n handleResize();\n\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n useEffect(() => {\n if (window.matchMedia('(max-width: 767px)').matches) {\n if (filtersExpanded) {\n // open\n filtersContainerRef?.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start'\n });\n filtersPanelRef.current.hidden = false;\n animate(\n filtersPanelRef.current,\n { minHeight: 'calc(100vh - 70px)' },\n { duration: 0.5, delay: 0, ease: 'easeInOut' }\n );\n open(filtersPanelRef.current, 0.5).finished.then(() => {\n filtersPanelRef.current.style.maxHeight = 'calc(100vh - 70px)';\n filtersPanelRef.current.style.overflow = 'scroll';\n disableBodyScroll(filtersContainerRef.current, {\n allowTouchMove: () => true\n });\n });\n } else {\n // close\n animate(\n filtersPanelRef.current,\n { minHeight: 0 },\n { duration: 0.5, delay: 0, ease: 'easeInOut' }\n );\n close(filtersPanelRef.current, 0.5).finished.then(() => {\n enableBodyScroll(filtersContainerRef.current);\n if (!firstClose) {\n filtersContainerRef?.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start'\n });\n } else {\n firstClose = false;\n }\n filtersPanelRef.current.hidden = true;\n });\n }\n }\n }, [filtersExpanded]);\n\n return (\n <>\n \n \n {facets.map((facet, i) => (\n \n ))}\n \n setFiltersExpanded(!filtersExpanded)}\n >\n {mobileFiltersPanelTitle}\n
    \n \n \n \n
    \n \n \n );\n});\n\nFiltersPanel.displayName = 'FiltersPanel';\n\nFiltersPanel.propTypes = {\n filtersContainerRef: PropTypes.object.isRequired\n};\n\nexport default FiltersPanel;\n","import React, { useState, useContext, useId } from 'react';\nimport ListingContext from '../../ResultsListing/ListingContext';\n\nconst DropdownJumpLink = () => {\n const { dropdownFilterFacetTitle, dropdownFilterLabel, jumpOptions } =\n useContext(ListingContext);\n const [selectedOption, setSelectedOption] = useState(\n dropdownFilterFacetTitle\n );\n const id = useId();\n\n const handleChange = e => {\n const value = jumpOptions.find(option => option.id === e.target.value);\n setSelectedOption(value.title);\n\n const element = document.querySelector(`#${value.id}`);\n\n if (element) {\n const y = element.getBoundingClientRect().top + window.scrollY;\n\n window.scroll({\n top: y - 100,\n behavior: 'smooth'\n });\n }\n };\n\n return (\n
    \n \n \n \n {jumpOptions?.map(value => (\n \n ))}\n \n
    \n );\n};\n\nexport default DropdownJumpLink;\n","import React, { useEffect, useState, useContext, useRef } from 'react';\nimport { buildResultList } from '@coveo/headless';\nimport ResultList from '../ResultsListing/components/ResultList';\nimport SearchBox from '../ResultsListing/components/SearchBox';\nimport DropdownJumpLink from './components/DropdownJumpLinks';\nimport useCoveoEngine from '../ResultsListing/useCoveoEngine';\nimport { breakpoints, debounce } from '../../../helpers';\n\nconst AcademicCalendar = () => {\n const engine = useContext(useCoveoEngine);\n const [, setController] = useState(null);\n const [, setState] = useState(null);\n const [modificator, setModificator] = useState('');\n const container = useRef(null);\n\n let root;\n let distanceUpdated = false;\n let isSticky = false;\n let distanceToContainer = 0;\n let headerOffset = 0;\n let extraOffset = 0;\n\n const setOffset = () => {\n if (root) {\n if (\n window.matchMedia(`(max-width: ${breakpoints.tablet - 1}px)`).matches\n ) {\n headerOffset = getComputedStyle(root).getPropertyValue(\n '--header-mobile-height'\n );\n headerOffset = parseInt(headerOffset, 10) + 5;\n } else {\n headerOffset = getComputedStyle(root).getPropertyValue(\n '--header-mobile-height'\n );\n headerOffset = parseInt(headerOffset, 10) + 50;\n }\n\n headerOffset = headerOffset || 0;\n extraOffset = headerOffset ? 0 : 25;\n }\n };\n\n const handleScroll = () => {\n if (!distanceUpdated) {\n distanceToContainer =\n window.pageYOffset + container.current.getBoundingClientRect().top;\n distanceUpdated = true;\n setOffset();\n }\n\n const currentScrollPosition = document.documentElement.scrollTop;\n\n if (\n currentScrollPosition > distanceToContainer - headerOffset &&\n !isSticky\n ) {\n setModificator('academic-calendar--sticky');\n isSticky = true;\n if (\n window.matchMedia(`(max-width: ${breakpoints.tablet - 1}px)`).matches\n ) {\n window.requestAnimationFrame(() => {\n window.scrollBy(0, 55 + headerOffset);\n });\n }\n }\n if (\n (currentScrollPosition <\n distanceToContainer - headerOffset - extraOffset &&\n isSticky) ||\n currentScrollPosition === 0\n ) {\n setModificator('');\n isSticky = false;\n }\n };\n\n const handleResize = () => {\n distanceToContainer =\n window.pageYOffset + container.current.getBoundingClientRect().top;\n setOffset();\n };\n\n useEffect(() => {\n if (engine) {\n const _controller = buildResultList(engine);\n setController(_controller);\n setState(_controller.state);\n _controller.subscribe(() => {\n setState(_controller.state);\n });\n }\n\n window.addEventListener('scroll', handleScroll);\n window.addEventListener('resize', debounce(handleResize));\n\n root = document.querySelector(':root');\n }, []);\n\n return (\n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n );\n};\n\nexport default AcademicCalendar;\n","import React, { useState, useEffect, useContext } from 'react';\nimport { buildDidYouMean } from '@coveo/headless';\nimport useCoveoEngine from '../useCoveoEngine';\nimport ListingContext from '../ListingContext';\n\nconst DidYouMean = () => {\n const engine = useContext(useCoveoEngine);\n const { searchFor, searchCorrected, searchYouMean } =\n useContext(ListingContext);\n\n const [controller, setController] = useState(null);\n const [state, setState] = useState(null);\n\n useEffect(() => {\n if (engine) {\n const _controller = buildDidYouMean(engine);\n setController(_controller);\n setState(_controller.state);\n _controller.subscribe(() => {\n setState(_controller.state);\n });\n }\n }, []);\n\n if (state?.originalQuery.length === 0) {\n return <>;\n }\n\n if (!state?.hasQueryCorrection) {\n return (\n

    \n {searchFor}\n {` ${state?.originalQuery}`}\n

    \n );\n }\n\n if (state?.wasAutomaticallyCorrected) {\n return (\n <>\n

    \n {searchFor}\n {` ‘${state.queryCorrection.wordCorrections[0].originalWord}’`}{' '}\n {searchCorrected}\n {` ‘${state?.wasCorrectedTo}’`}\n

    \n \n );\n }\n\n return (\n <>\n

    \n {searchFor}\n {` ${state?.originalQuery} `}\n

    \n

    \n {searchYouMean}{' '}\n controller.applyCorrection()}\n >\n {state?.queryCorrection?.correctedQuery}\n \n

    \n \n );\n};\n\nexport default DidYouMean;\n","import React, { useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { buildContext, loadAdvancedSearchQueryActions } from '@coveo/headless';\nimport { coveoSearchEngine } from './components/CoveoSearchEngine';\nimport { bindUrlManager } from './components/SearchUrlManager';\nimport ResultList from './components/ResultList';\nimport ResultsSummaryInformation from './components/ResultsSummaryInformation';\nimport Pagination from './components/Pagination';\nimport ResultsPerPage from './components/ResultsPerPage';\nimport SearchBox from './components/SearchBox';\nimport Tab from './components/Tab';\nimport Sort from './components/Sort';\nimport FiltersPanel from './components/FiltersPanel';\nimport AcademicCalendar from '../AcademicCalendar';\nimport DropdownFilter from '../AcademicCalendar/components/DropdownFilter';\nimport DidYouMean from './components/DidYouMean';\n\nimport ResultsContext from './ListingContext';\nimport CoveoEngineContext from './useCoveoEngine';\n\nexport const CLEAR_EVENT = 'clear';\n\nconst ResultsListing = props => {\n const {\n coveoOrganizationId,\n coveoApiKey,\n coveoPipeline,\n coveoSearchHub,\n coveoSource,\n templates,\n typeOfResultCard,\n searchHeading,\n facetsInfo,\n dropdownJumpOptions,\n isEditMode,\n innerContent,\n programFilterFacet,\n programId,\n securityField,\n securityValues,\n coveoContext\n } = props;\n\n const isProgramQuery = programFilterFacet && programId;\n\n const buildAdvancedQuery = () => {\n let _advancedQuery = '';\n\n if (coveoSource) {\n _advancedQuery = `@source=\"${coveoSource}\"`;\n }\n\n if (templates) {\n const templatesObj = JSON.parse(templates);\n _advancedQuery += `; @mcphs_template=\"${templatesObj.reduce(\n (string, template) => `${string}|${template}`,\n ''\n )}\"`;\n } else {\n _advancedQuery += '; @mcphs_template /= \".\"';\n }\n\n if (isProgramQuery) {\n _advancedQuery += ` @${programFilterFacet} = \"${programId}\"`;\n }\n\n if (securityField) {\n if (securityValues) {\n const values = securityValues.split(',');\n const preQuery = `@${securityField} = \"\"`;\n let valuesQuery = '';\n\n if (values.length > 1) {\n valuesQuery = `@${securityField} = (${values.join(' OR ')})`;\n _advancedQuery = ` ${_advancedQuery} AND ( ${preQuery} OR ${valuesQuery} ) `;\n } else {\n _advancedQuery = ` ${_advancedQuery} AND ( ${preQuery} OR @${securityField} = \"${values[0]}\" ) `;\n }\n } else {\n _advancedQuery += ` @${securityField} = \"\"`;\n }\n }\n\n return _advancedQuery;\n };\n\n const facets = facetsInfo ? JSON.parse(facetsInfo) : {};\n const jumpOptions = dropdownJumpOptions\n ? JSON.parse(dropdownJumpOptions)\n : [];\n const advancedQuery = buildAdvancedQuery();\n\n const [context] = useState({\n ...props,\n facets,\n jumpOptions,\n advancedQuery,\n CLEAR_EVENT\n });\n\n const coveoHeadlessSearchEngine =\n coveoOrganizationId && coveoApiKey\n ? coveoSearchEngine(\n coveoOrganizationId,\n coveoApiKey,\n coveoPipeline,\n coveoSearchHub,\n false\n ) // set 3rd argument to true if you want to debug\n : coveoSearchEngine();\n const filtersContainerRef = useRef();\n const filterPanelRef = useRef();\n const advancedQuerySearchActionCreator = coveoHeadlessSearchEngine\n ? loadAdvancedSearchQueryActions(coveoHeadlessSearchEngine)\n : null;\n\n if (coveoContext) {\n const contextObj = buildContext(coveoHeadlessSearchEngine);\n contextObj?.set(JSON.parse(coveoContext));\n }\n\n useEffect(() => {\n if (!isEditMode) {\n bindUrlManager(coveoHeadlessSearchEngine);\n coveoHeadlessSearchEngine?.dispatch(\n advancedQuerySearchActionCreator.registerAdvancedSearchQueries({\n aq: buildAdvancedQuery()\n })\n );\n coveoHeadlessSearchEngine.executeFirstSearch();\n }\n }, []);\n\n const callbackFunction = entries => {\n const [entry] = entries;\n filterPanelRef.current.setBottom(entry.isIntersecting);\n };\n\n const callbackFunction2 = entries => {\n const [entry] = entries;\n filterPanelRef.current.setTop(entry.isIntersecting);\n };\n\n const options = {\n root: null,\n rootMargin: '-85% 0px 0px',\n threshold: 0\n };\n\n const options2 = {\n root: null,\n rootMargin: '0px 0px -40%',\n threshold: 0\n };\n\n const observer =\n !innerContent && new IntersectionObserver(callbackFunction, options);\n const observer2 =\n !innerContent && new IntersectionObserver(callbackFunction2, options2);\n\n const handleResize = () => {\n if (typeOfResultCard !== 'calendar' && !innerContent) {\n if (window.matchMedia('(max-width: 767px)').matches) {\n observer.observe(filtersContainerRef.current);\n observer2.observe(filtersContainerRef.current);\n } else {\n observer.unobserve(filtersContainerRef.current);\n observer2.unobserve(filtersContainerRef.current);\n }\n }\n };\n\n useEffect(() => {\n if (window.matchMedia('(max-width: 767px)').matches) {\n if (filtersContainerRef.current) {\n observer.observe(filtersContainerRef.current);\n observer2.observe(filtersContainerRef.current);\n return () => {\n observer.unobserve(filtersContainerRef.current);\n observer2.unobserve(filtersContainerRef.current);\n };\n }\n }\n }, [filtersContainerRef, options, options2]);\n\n useEffect(() => {\n handleResize();\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n const [coveoEngine] = useState(isEditMode ? null : coveoHeadlessSearchEngine);\n const sortComponents = ['article', 'blog', 'search', 'form'];\n const filterComponents = ['program', 'faculty'];\n\n return (\n // ------- HANDLES FORM AND ARTICLE LISTINGS -------\n \n \n \n {typeOfResultCard === 'search' && (\n
    \n

    {searchHeading}

    \n \n
    \n )}\n {!innerContent && filtersContainerRef ? (\n \n \n \n
    \n
    \n \n \n \n {filterComponents.includes(typeOfResultCard) && (\n \n )}\n
    \n
    \n \n \n \n
    \n
    \n \n \n ) : (\n <>\n {!innerContent ? (\n
    \n \n \n
    \n ) : (\n
    \n \n
    \n \n
    \n \n \n {filterComponents.includes(typeOfResultCard) && (\n \n )}\n
    \n
    \n
    \n \n \n \n
    \n
    \n )}\n \n )}\n
    \n
    \n );\n};\n\nResultsListing.propTypes = {\n coveoOrganizationId: PropTypes.string.isRequired, // required to ensure we use organization id and stop using sample data in production\n coveoApiKey: PropTypes.string.isRequired, // required to ensure we use organization apiKey and stop using sample data in production\n coveoPipeline: PropTypes.string.isRequired, // required to ensure we use organization id and stop using sample data in production\n coveoSearchHub: PropTypes.string.isRequired,\n coveoDebug: PropTypes.string,\n filtersCardTitle: PropTypes.string.isRequired,\n searchInputPlaceholder: PropTypes.string.isRequired,\n searchInputLabel: PropTypes.string.isRequired,\n searchBtnLabel: PropTypes.string.isRequired,\n clearFiltersLabel: PropTypes.string,\n noFacetsMessage: PropTypes.string,\n facetsInfo: PropTypes.string,\n typeOfResultCard: PropTypes.string.isRequired,\n noResultsMessage: PropTypes.string.isRequired,\n firstLetterFilterFacet: PropTypes.string,\n resultsPerPage: PropTypes.string.isRequired,\n keySearcherLabel: PropTypes.string,\n calendarSemesterFacet: PropTypes.string,\n calendarSemesterTitle: PropTypes.string,\n previousArrowLabel: PropTypes.string,\n nextArrowLabel: PropTypes.string,\n dropdownJumpOptions: PropTypes.string,\n searchHeading: PropTypes.string,\n searchFor: PropTypes.string,\n searchYouMean: PropTypes.string,\n isEditMode: PropTypes.string,\n innerContent: PropTypes.string,\n cardFields: PropTypes.string,\n coveoSource: PropTypes.string,\n programFilterFacet: PropTypes.string,\n programId: PropTypes.string,\n templates: PropTypes.string,\n sortBy: PropTypes.string,\n securityField: PropTypes.string,\n securityValues: PropTypes.string,\n lockValue: PropTypes.string,\n coveoContext: PropTypes.string\n};\n\nexport default ResultsListing;\n","import React from 'react';\nimport ResultsListing from './ResultsListing';\n\nexport default React.memo(ResultsListing);\n","import { createContext } from 'react';\n\nconst useCoveoEngine = createContext('');\n\nexport default useCoveoEngine;\n"],"sourceRoot":""}