<html><head></head><body>{"version":3,"file":"SearchTags-BFqdLfAE.js","sources":["../../src/scripts/components/react-components/Pagination.tsx","../../src/scripts/modules/react-modules/Listings/types.ts","../../src/scripts/modules/react-modules/Listings/Facets/FacetDate.tsx","../../src/scripts/modules/react-modules/Listings/utils.ts","../../src/scripts/modules/react-modules/Listings/ECommerceCoursesAndProductsListing/useGetEcommerceCoursesAndProductsListing.ts","../../src/scripts/modules/react-modules/Listings/Facets/useFacetChangeHandler.ts","../../src/scripts/modules/react-modules/Listings/Facets/useIsChecked.ts","../../src/scripts/modules/react-modules/Listings/Search.tsx","../../src/scripts/modules/react-modules/Listings/Facets/useClearAllFacets.ts","../../src/scripts/modules/react-modules/Listings/Facets/FacetsMobile.tsx","../../src/scripts/modules/react-modules/Listings/BlogAndNewsListing/BlogAndNewsCard.tsx","../../src/scripts/modules/react-modules/Listings/ECommerceCoursesAndProductsListing/EcommerceCoursesCard.tsx","../../src/scripts/modules/react-modules/Listings/ECommerceCoursesAndProductsListing/EcommerceProductsCard.tsx","../../src/scripts/modules/react-modules/Listings/EventListing/EventListingCard.tsx","../../src/scripts/modules/react-modules/Listings/OfficeAndServicesListing/OfficesAndServicesCard.tsx","../../src/scripts/modules/react-modules/Listings/PeopleDirectoryListing/PeopleDirectoryCard.tsx","../../src/scripts/components/react-components/ScrollIndicator/index.tsx","../../src/scripts/modules/react-modules/Listings/ProgramsAndCertificatesListing/ProgramAndCertificatesCard.tsx","../../src/scripts/modules/react-modules/Listings/ResourcesListing/ResourcesListingCard.tsx","../../src/scripts/modules/react-modules/Listings/SearchListing/SearchCard.tsx","../../src/scripts/modules/react-modules/Listings/Listing.tsx","../../src/scripts/modules/react-modules/Listings/SearchTags.tsx"],"sourcesContent":["import React from 'react';\r\n\r\nexport enum PaginationType {\r\n  ShowMore = 'show-more',\r\n  Pagination = 'pagination'\r\n}\r\nexport type PaginationProps = {\r\n  pagination: {\r\n    skip: number;\r\n    limit: number;\r\n    total: number;\r\n  };\r\n  onPageChange: (page: number | string) =&gt; void;\r\n  type: PaginationType;\r\n  showAllPaginationLabel?: string;\r\n};\r\n\r\nconst Pagination = ({\r\n  onPageChange,\r\n  type,\r\n  showAllPaginationLabel,\r\n  pagination\r\n}: PaginationProps) =&gt; {\r\n  const currentPage = pagination.skip / pagination.limit + 1;\r\n  const totalPages = Math.ceil(pagination.total / +pagination.limit);\r\n  const showBtns = totalPages &gt; 5;\r\n\r\n  const generatePages = () =&gt; {\r\n    let pages = [];\r\n    if (totalPages &lt;= 5) {\r\n      for (let i = 1; i &lt;= totalPages; i++) {\r\n        pages.push(i);\r\n      }\r\n    } else {\r\n      if (currentPage &lt;= 3) {\r\n        pages = [1, 2, 3, '...', totalPages];\r\n      } else if (currentPage &gt; 3 &amp;&amp; currentPage &lt; totalPages - 3) {\r\n        pages = [1, '...', currentPage - 1, currentPage, currentPage + 1, '...', totalPages];\r\n      } else {\r\n        pages = [\r\n          1,\r\n          '...',\r\n          totalPages - 4,\r\n          totalPages - 3,\r\n          totalPages - 2,\r\n          totalPages - 1,\r\n          totalPages\r\n        ];\r\n      }\r\n    }\r\n    return pages;\r\n  };\r\n\r\n  const handlePageClick = (page: number | string) =&gt; {\r\n    if (page !== '...') {\r\n      onPageChange(page);\r\n    }\r\n  };\r\n\r\n  if (pagination.total &lt;= pagination.limit) {\r\n    return null;\r\n  }\r\n\r\n  if (type === PaginationType.ShowMore) {\r\n    if (currentPage * pagination.limit &gt;= pagination.total) {\r\n      return null;\r\n    }\r\n\r\n    return (\r\n      <div classname='\"pagination\"'>\r\n        <button =="" btn--secondary\"="" classname='\"btn' onclick="{()"> onPageChange(currentPage + 1)}&gt;\r\n          {showAllPaginationLabel}\r\n          <div classname='\"btn-decorator\"'>\r\n            <span classname='\"btn-decorator-inner\"'></span>\r\n            <span classname='\"btn-decorator-outer\"'></span>\r\n          </div>\r\n        </button>\r\n      </div>\r\n    );\r\n  }\r\n\r\n  return (\r\n    <div classname='\"pagination\"'>\r\n      {showBtns &amp;&amp; (\r\n        <button\r\n =="" onclick="{()"> handlePageClick(currentPage - 1)}\r\n          disabled={currentPage === 1}\r\n          className={`pagination__button--prev ${currentPage === 1 ? 'disabled' : ''}`}\r\n          aria-label=\"Previous page\"\r\n        &gt;\r\n          <svg 0="" 24="" 24\"="" classname='\"checkbox-check\"' role='\"presentation\"' viewBox='\"0'>\r\n            <use xlinkhref='\"#chevron-left\"'></use>\r\n          </svg>\r\n        \r\n      )}\r\n\r\n      <ul classname='\"pagination__list\"'>\r\n        {generatePages().map((page, index) =&gt; (\r\n          <li\r\n ${page="==" ''}`}\r\n="" 'pagination__item--current'="" :="" ?="" classname="{`pagination__item" currentpage="" key="{index}\r\n">\r\n            <a\r\n =="" key="{index}\r\n" onclick="{()"> handlePageClick(page)}\r\n              className={`pagination__link primary-copy `}\r\n            &gt;\r\n              {page}\r\n            \r\n          \r\n        ))}\r\n      </a\r\n></li\r\n></ul>\r\n\r\n      {showBtns &amp;&amp; (\r\n        <button\r\n =="" onclick="{()"> handlePageClick(currentPage + 1)}\r\n          disabled={currentPage === totalPages}\r\n          className={`pagination__button--prev ${currentPage === totalPages ? 'disabled' : ''}`}\r\n          aria-label=\"Next page\"\r\n        &gt;\r\n          <svg 0="" 24="" 24\"="" classname='\"checkbox-check\"' role='\"presentation\"' viewBox='\"0'>\r\n            <use xlinkhref='\"#chevron-right\"'></use>\r\n          </svg>\r\n        \r\n      )}\r\n    </button\r\n></button\r\n></div>\r\n  );\r\n};\r\n\r\nexport default Pagination;\r\n","import {\n  ArticleDetailPage,\n  CourseProduct,\n  EventDetailPage,\n  OfficesAndServicesDetailPage,\n  PeopleDetailPage,\n  ProgramDetailPage,\n  ResourceDetailPage\n} from '../../../../codegenGenerated/optigraphql/generated';\nimport { ProductsCardProps } from './ECommerceCoursesAndProductsListing/EcommerceProductsCard';\nimport { SearchCardProps } from './SearchListing/SearchCard';\n\nexport interface ListingCommonProps {\n  noResultsLabel: string;\n  clearAllLabel: string;\n  tagsNoResultsLabel: string;\n  searchPlaceholder: string;\n  resultsNumberLabel: string;\n  resultsNumber: string;\n  sortByRelevanceLabel: string;\n  sortByRecentLabel: string;\n  sortByAlphabeticalLabel: string;\n  mobileShowResultsLabel: string;\n  mobileFilterNarrowLabel: string;\n  mobileAppliedFiltersLabel: string;\n  minDatePlaceholder: string;\n  maxDatePlaceholder: string;\n  showAllPaginationLabel: string;\n  imgFallback?: string;\n}\n\nexport type FacetsCommonProps = {\n  listingType?: string | ListingTypes;\n  facets: FacetProps[];\n  pagination: { skip: number; limit: number; total: number };\n  setPagination: (pagination: { skip: number; limit: number; total: number }) =&gt; void;\n  setFilters: (facets: FacetProps[]) =&gt; void;\n};\n\nexport type FacetProps = {\n  id: string;\n  type: string;\n  title: string;\n  items: FacetPropsItems[];\n  value: string | string[] | null;\n};\n\nexport type FacetPropsItems = {\n  id: string;\n  value: string;\n  count?: number;\n  title?: string;\n  disabled?: boolean;\n};\n\nexport type ListingParams = {\n  orderBy?: string;\n  searchTerm?: string;\n  facets?: FacetProps[];\n  pagination?: {\n    total: number;\n    limit: number;\n    skip: number;\n  };\n};\n\nexport enum SortOptions {\n  ASC = 'ASC',\n  DESC = 'DESC',\n  RELEVANCE = 'RELEVANCE',\n  AZ = 'A-Z'\n}\n\nexport enum ListingTypes {\n  RESOURCES_LISTING = 'RESOURCES_LISTING',\n  PROGRAMS_CERTS_LISTING = 'PROGRAMS_CERTS_LISTING',\n  ECOMMERCE_COURSES_LISTING = 'ECOMMERCE_COURSES_LISTING',\n  SEARCH_LISTING = 'SEARCH_LISTING',\n  PEOPLE_LISTING = 'PEOPLE_LISTING',\n  BLOG_AND_NEWS_LISTING = 'BLOG_AND_NEWS_LISTING',\n  OFFICES_SERVICES_LISTING = 'OFFICES_SERVICES_LISTING',\n  EVENT_LISTING = 'EVENT_LISTING'\n}\n\ntype RankingType = 'RELEVANCE' | 'SEMANTIC';\ntype OrderType = 'ASC' | 'DESC';\n\nexport type OrderByValue = { _ranking: RankingType } | { [key: string]: OrderType | RankingType };\n\nexport type ListingResultTypes =\n  | EventDetailPage[]\n  | ResourceDetailPage[]\n  | ArticleDetailPage[]\n  | SearchCardProps[]\n  | OfficesAndServicesDetailPage[]\n  | ProgramDetailPage[]\n  | CourseProduct[]\n  | ProductsCardProps[]\n  | PeopleDetailPage[]\n  | null;\n\nexport type commonListTypesMerged = ListingSlice_ProgramsAndCerts;\n\ninterface BaseListingSlice {\n  orderBy: string;\n  searchTerm: string;\n  facets: FacetProps[];\n  pagination: {\n    total: number;\n    limit: number;\n    skip: number;\n  };\n  setOrderBy: (order: string) =&gt; void;\n  setSearchTerm: (searchTerm: string) =&gt; void;\n  setFilters: (filters: FacetProps[]) =&gt; void;\n  setPagination: (pagination: { limit: number; skip: number; total: number }) =&gt; void;\n  reset: () =&gt; void;\n}\n\ntype Suffixes =\n  | 'Event'\n  | 'Resource'\n  | 'Search'\n  | 'ProgramsAndCerts'\n  | 'ECommerceCoursesAndProducts'\n  | 'PeopleDirectory';\n\nexport type ListingSlice<t extends="" suffixes=""> = {\n  [K in keyof BaseListingSlice as `${string &amp; K}_${T}`]: BaseListingSlice[K];\n} &amp; {\n  _from: string;\n} &amp; {\n  [key: string]: string | object | object[] | null;\n};\n\ntype ListingSlice_Event = ListingSlice&lt;'Event'&gt;;\ntype ListingSlice_Resource = ListingSlice&lt;'Resource'&gt;;\ntype ListingSlice_Search = ListingSlice&lt;'Search'&gt;;\ntype ListingSlice_ProgramsAndCerts = ListingSlice&lt;'ProgramsAndCerts'&gt;;\ntype ListingSlice_ECommerceCoursesAndProducts = ListingSlice&lt;'ECommerceCoursesAndProducts'&gt;;\ntype ListingSlice_PeopleDirectory = ListingSlice&lt;'PeopleDirectory'&gt;;\n\nexport type {\n  ListingSlice_ECommerceCoursesAndProducts,\n  ListingSlice_Event,\n  ListingSlice_PeopleDirectory,\n  ListingSlice_ProgramsAndCerts,\n  ListingSlice_Resource,\n  ListingSlice_Search\n};\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { iOS, isMobile, isTablet } from '../../../../helpers';\r\nimport { FacetProps, FacetPropsItems } from '../types';\r\n\r\ntype OwnProps = {\r\n  id: string;\r\n  title?: string;\r\n  value: string | Date;\r\n  onSelectionChange: (id: string, value: string) =&gt; void;\r\n  selectedFilters: FacetProps[] | FacetPropsItems[];\r\n  minDate?: string;\r\n  maxDate?: string;\r\n};\r\n\r\nconst FacetDate = ({ id, title, value, onSelectionChange, minDate, maxDate }: OwnProps) =&gt; {\r\n  // Temporary state to hold the raw input value\r\n  const [tempValue, setTempValue] = useState('');\r\n  const [isTabletMobileiOS, setIsTabletOrLess] = useState(false);\r\n  const [inputType, setInputType] = useState(\r\n    isTabletMobileiOS &amp;&amp; tempValue !== '' ? 'date' : 'text'\r\n  );\r\n  const inputRef = useRef<htmlinputelement>(null);\r\n\r\n  // Effect to format the initial value or any external changes to it\r\n  useEffect(() =&gt; {\r\n    setInputType(value ? 'date' : 'text');\r\n\r\n    if (id === 'maxDate' &amp;&amp; minDate &amp;&amp; maxDate) {\r\n      // if maxDaate is lower than minDate, set maxDate to minDate\r\n      if (new Date(maxDate) &lt; new Date(minDate)) {\r\n        setTempValue(setFormattedDate(maxDate, 'yyyy-mm-dd'));\r\n        onSelectionChange('minDate', tempValue);\r\n      }\r\n    }\r\n\r\n    setTempValue(setFormattedDate(value, 'yyyy-mm-dd'));\r\n  }, [value]);\r\n\r\n  const setFormattedDate = (value: Date | string, format: string) =&gt; {\r\n    if (value) {\r\n      const date = new Date(value);\r\n      const day = date.getUTCDate();\r\n      const month = date.getUTCMonth() + 1;\r\n      const year = date.getUTCFullYear();\r\n\r\n      if (format === 'yyyy-mm-dd') {\r\n        return `${year}-${month &lt; 10 ? '0' + month : month}-${day &lt; 10 ? '0' + day : day}`;\r\n      }\r\n\r\n      return `${day &lt; 10 ? '0' + day : day}/${month &lt; 10 ? '0' + month : month}/${year}`;\r\n    }\r\n\r\n    return '';\r\n  };\r\n\r\n  const handleChange = (e: { target: { value: string } }) =&gt; {\r\n    const rawValue = e.target.value;\r\n    setTempValue(rawValue); // Update the temporary state with the raw input value\r\n\r\n    // Assuming formattedDate formats the date as needed and setValue updates your application state\r\n    const formattedDate = setFormattedDate(rawValue, 'yyyy-mm-dd');\r\n\r\n    // Execute search or any action immediately upon selection\r\n    if (onSelectionChange) {\r\n      onSelectionChange(id, formattedDate);\r\n    }\r\n  };\r\n\r\n  useEffect(() =&gt; {\r\n    setIsTabletOrLess((isTablet() || isMobile()) &amp;&amp; iOS());\r\n  }, []);\r\n\r\n  useEffect(() =&gt; {\r\n    if (isTabletMobileiOS) {\r\n      if (inputType === 'text' &amp;&amp; inputRef.current) {\r\n        setInputType('text');\r\n        // inputRef.current.showPicker();\r\n      } else {\r\n        setInputType('date');\r\n      }\r\n    }\r\n  }, [inputType, isTabletMobileiOS]);\r\n\r\n  const handleFocus = (e: React.FocusEvent<htmlinputelement>) =&gt; {\r\n    e.target.type = 'date';\r\n    try {\r\n      e.target.showPicker();\r\n    } catch (error) {\r\n      console.warn('showPicker() is not supported or allowed in this context:', error);\r\n      e.target.focus();\r\n    }\r\n  };\r\n\r\n  if (isTabletMobileiOS) {\r\n    return (\r\n      <div classname='\"listing__facet' listing__facet--borderless\"="">\r\n        {title &amp;&amp; (\r\n          <label classname='\"listing-label' htmlfor="{id}" listing-label--ios\"="">\r\n            {title}\r\n          </label>\r\n        )}\r\n\r\n        <input\r\n !="=" 'left'="" 'maxdate'="" :="" ?="" aria-label="{title}\r\n" classname='\"listing-input' for="" id="{id}\r\n" input="" ios="" is="" listing-input__date="" listing-input__date--ios\"\r\n="" max="{id" maxdate="" needed="" not="" onchange="{handleChange}\r\n" placeholder="{'dd/mm/yyyy'}\r\n" ref="{inputRef}\r\n" since="" state="" style="{{" supported\r\n="" temporary="" textalign:="" the="" this="" type='\"date\"\r\n' undefined}="" use="" value="{tempValue}" value\r\n="" }}\r\n="">\r\n\r\n        <svg classname='\"listing-input__date-icon' listing-input__date-icon--ios\"="" role='\"presentation\"'>\r\n          <use xlinkhref='\"#calendar\"'></use>\r\n        </svg>\r\n      </input\r\n></div>\r\n    );\r\n  }\r\n\r\n  return (\r\n    <div classname='\"listing__facet' listing__facet--borderless\"="">\r\n      {title &amp;&amp; (\r\n        <label classname='\"listing-label\"' hidden="" htmlfor="{id}">\r\n          {title}\r\n        </label>\r\n      )}\r\n\r\n      <input\r\n !="=" 'maxdate'="" :="" =="" ?="" aria-label="{title}\r\n" classname='\"listing-input' for="" id="{id}\r\n" input="" listing-input__date\"\r\n="" max="{id" maxdate="" onblur="{()" onchange="{handleChange}\r\n" onfocus="{handleFocus}\r\n" placeholder="{title}\r\n" ref="{inputRef}\r\n" state="" temporary="" the="" type="{inputType}\r\n" undefined}\r\n="" use="" value="{tempValue}" value\r\n=""> {\r\n          if (isTabletMobileiOS) return;\r\n          setInputType('text');\r\n        }}\r\n      /&gt;\r\n\r\n      <svg classname='\"listing-input__date-icon\"' role='\"presentation\"'>\r\n        <use xlinkhref='\"#calendar\"'></use>\r\n      </svg>\r\n    </input\r\n></div>\r\n  );\r\n};\r\n\r\nexport default FacetDate;\r\n","// Transform the data to the format expected by the Facets component\nimport { FilterCategoryModelFacet } from '../../../../codegenGenerated/optigraphql/generated';\nimport { ECommerceCoursesAndProductsFacetTypes } from './ECommerceCoursesAndProductsListing/useGetEcommerceCoursesAndProductsListing';\nimport { EventFacetTypes } from './EventListing/useGetEventsListing';\nimport { PeopleDirectoryFacetTypes } from './PeopleDirectoryListing/useGetPeopleDirectoryListing';\nimport { ProgramsAndCertificatesFacetTypes } from './ProgramsAndCertificatesListing/useGetProgramsAndCertsListing';\nimport { ResourceFacetTypes } from './ResourcesListing/useGetResourcesListing';\nimport { BlogFacetTypes } from './BlogAndNewsListing/useGetBlogAndNewsListing';\nimport {\n  commonListTypesMerged,\n  FacetProps,\n  FacetPropsItems,\n  ListingSlice_ECommerceCoursesAndProducts,\n  ListingSlice_Event,\n  ListingSlice_PeopleDirectory,\n  ListingSlice_ProgramsAndCerts,\n  ListingSlice_Resource,\n  ListingSlice_Search\n} from './types';\n\nexport const transformToFacetPropsItems = (data: FilterCategoryModelFacet): FacetPropsItems[] =&gt; {\n  const { Categories } = data ?? {};\n\n  if (!Categories) return [];\n\n  // Handle the case where we have IdTitle array\n  if (Categories.IdTitle) {\n    return Categories.IdTitle.map(item =&gt; {\n      const [id, name] = item?.name?.split('|') ?? ['', ''];\n      return { id, value: name, count: item?.count ?? 0 };\n    }).sort((a, b) =&gt; a.value.localeCompare(b.value));\n  }\n\n  // Handle the case where we have separate Id and Title arrays\n  if (Categories.Id &amp;&amp; Categories.Title &amp;&amp; Categories.Id.length === Categories.Title.length) {\n    const items: FacetPropsItems[] = [];\n\n    for (let i = 0; i &lt; Categories.Id.length; i++) {\n      const idItem = Categories.Id[i];\n      const titleItem = Categories.Title[i];\n\n      if (idItem?.name &amp;&amp; titleItem?.name) {\n        items.push({\n          id: idItem.name,\n          value: titleItem.name,\n          count: idItem.count ?? 0\n        });\n      }\n    }\n\n    return items.sort((a, b) =&gt; a.value.localeCompare(b.value));\n  }\n\n  return [];\n};\n\n// Common function to find a facet by ID\nexport const findFacetById = (id: string, facets: FacetProps[] | FacetPropsItems[]) =&gt;\n  facets.find(facet =&gt; facet.id === id);\n\nexport const getFacetValueById = (\n  facets: FacetProps[],\n  id:\n    | EventFacetTypes\n    | ResourceFacetTypes\n    | ProgramsAndCertificatesFacetTypes\n    | ECommerceCoursesAndProductsFacetTypes\n    | PeopleDirectoryFacetTypes\n    | BlogFacetTypes\n): string[] | null =&gt; {\n  const facet = facets.find(facet =&gt; facet.id === id);\n  return facet?.value as string[] | null;\n};\n\nexport const getElementsWithSuffix = (obj: commonListTypesMerged, suffix: string) =&gt; {\n  const result: { [key: string]: string | object | object[] | null } = {};\n  const suffixLength = suffix.length;\n\n  for (const key in obj) {\n    if (key.endsWith(suffix)) {\n      // Extract the base key (excluding the suffix)\n      const baseKey = key.slice(0, -suffixLength);\n      result[baseKey] = obj[key as keyof ListingSlice_Event];\n    }\n  }\n\n  result['_from'] = suffix;\n\n  return result;\n};\n\n/**\n * This function is used to get the initial state of the application from the URL search parameters.\n * If the URL search parameters contain a '_from' key, the function will parse its value and use it to update the initial state.\n * The function will iterate over the keys of the initial state and update their values if a corresponding key is found in the URL search parameters.\n * If a key in the URL search parameters corresponds to the 'facets' key in the initial state, the function will update the 'facets' array in the initial state with the values from the URL search parameters.\n * If the URL search parameters do not contain a '_from' key, or if the URL search parameters are empty, the function will return the initial state as is.\n *\n * @param {commonListTypesMerged} initialState - The initial state of the application.\n * @returns {commonListTypesMerged} The updated initial state.\n */\nexport const getInitialState = (\n  initialState:\n    | ListingSlice_Event\n    | ListingSlice_Resource\n    | ListingSlice_Search\n    | ListingSlice_ECommerceCoursesAndProducts\n    | ListingSlice_PeopleDirectory\n    | ListingSlice_ProgramsAndCerts\n) =&gt; {\n  if (window.location.search.slice(1)) {\n    const searchParams = new URLSearchParams(window.location.search.slice(1));\n    const listing = JSON.parse(searchParams.get('_from') as string);\n    if (listing) {\n      const suffixLength = listing.length;\n\n      for (const key in initialState) {\n        const baseKey = key.slice(0, -suffixLength);\n        const queryParamValue = searchParams.get(baseKey);\n\n        if (queryParamValue) {\n          if (baseKey !== 'facets') {\n            initialState[key] = JSON.parse(queryParamValue as string);\n          } else {\n            const array2Map = new Map(\n              JSON.parse(queryParamValue as string).map((item: Partial<facetprops>) =&gt; [\n                item.id,\n                item.value\n              ])\n            );\n\n            if (initialState?.[key] &amp;&amp; Array.isArray(initialState[key])) {\n              // Iterate over array1 and update the value if found in array2Map\n              initialState[key] = (initialState[key] as FacetProps[])?.map((item: FacetProps) =&gt; {\n                if (array2Map.has(item.id)) {\n                  item.value = array2Map.get(item.id) as FacetProps['value'];\n                }\n                return item;\n              });\n            }\n          }\n        }\n      }\n\n      return initialState;\n    } else {\n      return initialState;\n    }\n  } else {\n    return initialState;\n  }\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { GraphQLClient } from 'graphql-request';\nimport { useEffect, useMemo, useCallback, useState } from 'react';\nimport {\n  CourseListingDocument,\n  CourseListingQuery,\n  ProductListingDocument,\n  ProductListingQuery,\n  CourseProduct,\n  StandardProduct,\n  CourseProductOrderByInput,\n  StandardProductOrderByInput,\n  CourseProductFacet,\n  StandardProductFacet,\n  Ranking\n} from '../../../../../codegenGenerated/optigraphql/generated';\nimport { getEnvGQLUrl } from '../../../../helpers';\nimport { ListingParams } from '../types';\nimport { getFacetValueById } from '../utils';\n\nexport enum ECommerceCoursesAndProductsFacetTypes {\n  Categories = 'Categories',\n  AreaOfStudyFacet = 'AreaOfStudyFacet',\n  ProductTypeFacet = 'ProductTypeFacet'\n}\n\ntype CourseQueryParams = {\n  numberOfResults: number;\n  skip: number;\n  searchTerm: string | null;\n  searchTermBoost: string | null;\n  orderBy: CourseProductOrderByInput;\n  areaOfStudyFacet: string[] | null;\n};\n\ntype ProductQueryParams = {\n  numberOfResults: number;\n  skip: number;\n  searchTerm: string | null;\n  searchTermBoost: string | null;\n  orderBy: StandardProductOrderByInput;\n  productTypeFacet: string[] | null;\n};\n\ntype CombinedFacets = {\n  AreaOfStudyFacet?: CourseProductFacet['AreaOfStudyFacet'];\n  ProductTypeFacet?: StandardProductFacet['ProductTypeFacet'];\n};\n\nexport const useGetEcommerceCoursesAndProductsListing = (params?: ListingParams) =&gt; {\n  const graphQLClient = new GraphQLClient(getEnvGQLUrl());\n  const [accumulatedResults, setAccumulatedResults] = useState&lt;\n    Array<courseproduct standardproduct="" |="">\n  &gt;([]);\n  const [combinedFacets, setCombinedFacets] = useState<combinedfacets>({});\n\n  const { orderBy, pagination, searchTerm, facets = [] } = params || {};\n\n  // Add effect to handle resetting accumulated results\n  useEffect(() =&gt; {\n    // Reset accumulated results when any parameter except pagination.skip changes\n    setAccumulatedResults([]);\n  }, [orderBy, searchTerm, facets, pagination?.limit]);\n\n  const selectedType = getFacetValueById(facets, ECommerceCoursesAndProductsFacetTypes.Categories);\n  const isCourses = selectedType?.[0] === 'courses';\n  const isFirstLoad = !selectedType || selectedType.length === 0;\n\n  const orderByValue = useMemo(() =&gt; {\n    if (!orderBy) return {};\n    switch (orderBy) {\n      case 'RELEVANCE':\n        return { _ranking: 'SEMANTIC' as Ranking };\n      case 'ASC':\n        return { StartPublish: 'ASC' as const };\n      case 'DESC':\n        return { StartPublish: 'DESC' as const };\n      case 'A-Z':\n        return isCourses ? { CourseSubjectId: 'ASC' as const } : { DisplayName: 'ASC' as const };\n      default:\n        return { _ranking: 'SEMANTIC' as Ranking };\n    }\n  }, [orderBy, isCourses]);\n\n  const getQueryParams = useCallback(\n    (forCourses: boolean) =&gt; {\n      if (!pagination) return null;\n\n      const baseParams = {\n        numberOfResults: pagination.limit,\n        skip: pagination.skip,\n        searchTerm: searchTerm === '' ? null : (searchTerm ?? null),\n        searchTermBoost: searchTerm ? `%${searchTerm}%` : null,\n        orderBy: orderByValue\n      };\n\n      if (forCourses) {\n        return {\n          ...baseParams,\n          areaOfStudyFacet: facets\n            ? getFacetValueById(facets, ECommerceCoursesAndProductsFacetTypes.AreaOfStudyFacet)\n            : null\n        } as CourseQueryParams;\n      } else {\n        return {\n          ...baseParams,\n          productTypeFacet: facets\n            ? getFacetValueById(facets, ECommerceCoursesAndProductsFacetTypes.ProductTypeFacet)\n            : null\n        } as ProductQueryParams;\n      }\n    },\n    [pagination, searchTerm, orderByValue, facets]\n  );\n\n  // Query for courses\n  const coursesQuery = useQuery<courselistingquery, error="">({\n    queryKey: [\n      'ecommerceCourses',\n      orderBy,\n      pagination?.skip,\n      pagination?.limit,\n      searchTerm,\n      JSON.stringify(facets)\n    ],\n    queryFn: async () =&gt; {\n      const params = getQueryParams(true);\n      if (!params) throw new Error('Invalid params');\n      return graphQLClient.request(CourseListingDocument, params as CourseQueryParams);\n    },\n    refetchOnWindowFocus: false,\n    enabled: isFirstLoad || isCourses\n  });\n\n  // Query for products\n  const productsQuery = useQuery<productlistingquery, error="">({\n    queryKey: [\n      'ecommerceProducts',\n      orderBy,\n      pagination?.skip,\n      pagination?.limit,\n      searchTerm,\n      JSON.stringify(facets)\n    ],\n    queryFn: async () =&gt; {\n      const params = getQueryParams(false);\n      if (!params) throw new Error('Invalid params');\n      return graphQLClient.request(ProductListingDocument, params as ProductQueryParams);\n    },\n    refetchOnWindowFocus: false,\n    enabled: isFirstLoad || !isCourses\n  });\n\n  useEffect(() =&gt; {\n    if (isFirstLoad) {\n      // Combine facets from both queries\n      const coursesFacets = coursesQuery.data?.CourseProduct?.facets || {};\n      const productsFacets = productsQuery.data?.StandardProduct?.facets || {};\n\n      console.log('Initial Load Facets:', {\n        coursesFacets,\n        productsFacets\n      });\n\n      setCombinedFacets({\n        ...coursesFacets,\n        ...productsFacets\n      });\n    } else {\n      // Use facets from the active query\n      const currentData = isCourses\n        ? coursesQuery.data?.CourseProduct?.facets\n        : productsQuery.data?.StandardProduct?.facets;\n\n      console.log('Active Query Facets:', {\n        isCourses,\n        currentData\n      });\n\n      setCombinedFacets(currentData || {});\n    }\n  }, [isFirstLoad, isCourses, coursesQuery.data, productsQuery.data]);\n\n  useEffect(() =&gt; {\n    const currentData = isCourses\n      ? coursesQuery.data?.CourseProduct\n      : productsQuery.data?.StandardProduct;\n\n    if (currentData?.items &amp;&amp; Array.isArray(currentData.items)) {\n      const newItems = currentData.items.filter(\n        (item: unknown): item is CourseProduct | StandardProduct =&gt; item !== null\n      );\n      if (!pagination?.skip || pagination.skip === 0) {\n        // Reset results if we're starting from the first page\n        setAccumulatedResults(newItems);\n      } else {\n        // Append new results to existing ones\n        setAccumulatedResults(prev =&gt; [...prev, ...newItems]);\n      }\n    }\n  }, [isCourses, coursesQuery.data, productsQuery.data, pagination?.skip]);\n\n  const isLoading = isFirstLoad\n    ? coursesQuery.isFetching || productsQuery.isFetching\n    : isCourses\n      ? coursesQuery.isFetching\n      : productsQuery.isFetching;\n\n  const error = isFirstLoad\n    ? coursesQuery.error || productsQuery.error\n    : isCourses\n      ? coursesQuery.error\n      : productsQuery.error;\n\n  const currentData = isCourses\n    ? coursesQuery.data?.CourseProduct\n    : productsQuery.data?.StandardProduct;\n\n  return {\n    status: error ? 'error' : isLoading ? 'loading' : 'success',\n    error: error as Error,\n    results: accumulatedResults,\n    total: currentData?.total || 0,\n    facets: combinedFacets\n  };\n};\n","import { useCallback } from 'react';\nimport { ECommerceCoursesAndProductsFacetTypes } from '../ECommerceCoursesAndProductsListing/useGetEcommerceCoursesAndProductsListing';\nimport { FacetProps } from '../types';\n\ntype OwnProps = {\n  facets: FacetProps[];\n  isEcommerceListing: boolean;\n  isProgramListing: boolean;\n  pagination: {\n    skip: number;\n    limit: number;\n    total: number;\n  };\n  setFilters: (filters: FacetProps[]) =&gt; void;\n  setPagination: (pagination: { skip: number; limit: number; total: number }) =&gt; void;\n};\n\nconst useFacetChangeHandler = ({\n  facets,\n  isEcommerceListing,\n  isProgramListing,\n  pagination,\n  setFilters,\n  setPagination\n}: OwnProps) =&gt; {\n  const onSelectionChangeHandler = useCallback(\n    (selectedFacetID: string, value: string | null) =&gt; {\n      if (\n        isEcommerceListing &amp;&amp;\n        selectedFacetID === ECommerceCoursesAndProductsFacetTypes.Categories\n      ) {\n        facets.forEach(facet =&gt; {\n          if (facet.id !== ECommerceCoursesAndProductsFacetTypes.Categories) {\n            facet.value = null;\n          }\n        });\n      }\n\n      let dateRangeType = '';\n      setFilters(\n        facets.map(facet =&gt; {\n          if (selectedFacetID === 'minDate' || selectedFacetID === 'maxDate') {\n            dateRangeType = selectedFacetID === 'minDate' ? 'minDate' : 'maxDate';\n            selectedFacetID = 'date-range';\n          }\n\n          if (facet.id !== selectedFacetID) {\n            return facet;\n          }\n\n          switch (facet.type) {\n            case 'accordion': {\n              let newValue = facet.value || [];\n              newValue = Array.isArray(newValue) ? newValue : [newValue];\n\n              if (newValue.includes(value as string)) {\n                newValue = newValue.filter(item =&gt; item !== value);\n                newValue = newValue.length &gt; 0 ? newValue : [];\n              } else {\n                newValue = newValue.concat(value as string);\n              }\n\n              return { ...facet, value: newValue.length &gt; 0 ? newValue : null };\n            }\n            case 'select':\n            case 'custom-radio': {\n              let newValue = facet.value &amp;&amp; Array.isArray(facet.value) ? [...facet.value] : [];\n\n              if (isEcommerceListing || isProgramListing) {\n                newValue = [value as string];\n              } else {\n                if (newValue.includes(value as string) &amp;&amp; value !== 'all') {\n                  newValue = newValue.filter(item =&gt; item !== value &amp;&amp; item !== 'all');\n                } else if (value === 'all') {\n                  newValue = ['all'];\n                } else {\n                  newValue = newValue.filter(item =&gt; item !== 'all');\n                  newValue = [value as string];\n                }\n              }\n\n              newValue = newValue.filter(item =&gt; item !== '');\n              return { ...facet, value: newValue.length &gt; 0 ? newValue : null };\n            }\n\n            case 'custom-select-search':\n            case 'custom-select': {\n              let newValue = facet.value &amp;&amp; Array.isArray(facet.value) ? [...facet.value] : [];\n\n              newValue = value?.split(',') || [];\n              newValue = newValue.filter(item =&gt; item !== '');\n\n              return { ...facet, value: newValue.length &gt; 0 ? newValue : null };\n            }\n\n            case 'date': {\n              const minDate = facet?.items?.find(f =&gt; f.id === 'minDate');\n              const maxDate = facet?.items?.find(f =&gt; f.id === 'maxDate');\n              if (dateRangeType === 'minDate' &amp;&amp; minDate) {\n                minDate.value = value!;\n              } else {\n                maxDate!.value = value!;\n              }\n\n              return {\n                ...facet,\n                items: [\n                  { id: 'minDate', value: minDate!.value, title: minDate!.title },\n                  { id: 'maxDate', value: maxDate!.value, title: maxDate!.title }\n                ],\n                value: null\n              };\n            }\n\n            default:\n              return { ...facet, value: value };\n          }\n        })\n      );\n\n      // Reset the pagination\n      setPagination({ skip: 0, limit: pagination.limit, total: pagination.total });\n    },\n    [facets, isEcommerceListing, isProgramListing, pagination, setFilters, setPagination]\n  );\n\n  return onSelectionChangeHandler;\n};\n\nexport default useFacetChangeHandler;\n","import { useCallback } from 'react';\r\nimport { FacetProps, FacetPropsItems } from '../types';\r\ninterface OwnProps {\r\n  facets: FacetProps[];\r\n  isProgramListing: boolean;\r\n}\r\n\r\nconst useIsChecked = ({ facets, isProgramListing }: OwnProps) =&gt; {\r\n  const isChecked = useCallback(\r\n    (item: FacetPropsItems, id: string) =&gt; {\r\n      let facetID = id;\r\n      let facetItem = item.id;\r\n\r\n      if (isProgramListing &amp;&amp; item.id &amp;&amp; item.id.includes('on-campus')) {\r\n        facetID = 'CampusLocationFacet';\r\n        facetItem = item.id.replace('on-campus-', '');\r\n\r\n        if (facetItem === 'all') {\r\n          const facet = facets.find(facet =&gt; facet.id === facetID);\r\n\r\n          if (\r\n            (facet?.value &amp;&amp; facet?.value?.length &gt; 0) ||\r\n            facet?.value?.length === facet?.items.length\r\n          ) {\r\n            return true;\r\n          }\r\n\r\n          return false;\r\n        }\r\n      }\r\n\r\n      const facet = facets.find(facet =&gt; facet.id === facetID);\r\n      return facet?.value ? (facet.value as string[]).includes(facetItem) : false;\r\n    },\r\n    [facets, isProgramListing]\r\n  );\r\n\r\n  return isChecked;\r\n};\r\n\r\nexport default useIsChecked;\r\n","import React, { useEffect, useState } from 'react';\nimport { ListingTypes, SortOptions } from './types';\n\ninterface OwnProps {\n  searchPlaceholder: string;\n  searchTerm: string;\n  pagination: {\n    skip: number;\n    limit: number;\n    total: number;\n  };\n  ariaLabel?: string;\n  setStoreSearchTerm: (searchTerm: string) =&gt; void;\n  setPagination: (pagination: { skip: number; limit: number; total: number }) =&gt; void;\n  setSortBy?: (sort: string) =&gt; void;\n  listingType?: ListingTypes;\n}\n\nconst Search = ({\n  searchPlaceholder,\n  searchTerm,\n  pagination,\n  listingType,\n  setStoreSearchTerm,\n  setPagination,\n  setSortBy,\n  ariaLabel\n}: OwnProps) =&gt; {\n  const [searchText, setSearchText] = useState('');\n\n  const setRelevanceSort = () =&gt; {\n    if (\n      listingType === ListingTypes.RESOURCES_LISTING ||\n      listingType === ListingTypes.BLOG_AND_NEWS_LISTING ||\n      listingType === ListingTypes.SEARCH_LISTING ||\n      listingType === ListingTypes.ECOMMERCE_COURSES_LISTING\n    ) {\n      setSortBy &amp;&amp; setSortBy(SortOptions.RELEVANCE);\n    }\n  };\n\n  useEffect(() =&gt; {\n    if (searchTerm) {\n      setSearchText(searchTerm);\n      setRelevanceSort();\n    }\n  }, [searchTerm]);\n\n  const doSearch = () =&gt; {\n    setRelevanceSort();\n    setStoreSearchTerm(searchText);\n\n    // Reset the pagination\n    setPagination({ skip: 0, limit: pagination.limit, total: pagination.total });\n\n    // raise event for search tracking\n    document.dispatchEvent(\n      new CustomEvent('uor_search_performed', {\n        bubbles: true,\n        detail: { text: searchText }\n      })\n    );\n  };\n\n  const handleKeyDown = (event: React.KeyboardEvent<htmlinputelement>) =&gt; {\n    if (event.key === 'Enter') {\n      event.preventDefault();\n      doSearch();\n    } else {\n      setSearchText(event.currentTarget.value);\n    }\n  };\n\n  const handleXKeyDown = (event: React.KeyboardEvent<svgelement>) =&gt; {\n    if (event.key === ' ' &amp;&amp; svgSearch !== '#search') {\n      event.preventDefault();\n      clearSearch();\n    }\n  };\n\n  const clearSearch = () =&gt; {\n    setSearchText('');\n    setStoreSearchTerm('');\n    if (setSortBy) {\n      setSortBy('');\n\n      if (listingType === ListingTypes.SEARCH_LISTING) {\n        setSortBy(SortOptions.ASC);\n      }\n\n      if (\n        listingType === ListingTypes.RESOURCES_LISTING ||\n        listingType === ListingTypes.ECOMMERCE_COURSES_LISTING\n      ) {\n        setSortBy(SortOptions.AZ);\n      }\n    }\n  };\n\n  const svgSearch = searchText ? '#close' : '#search';\n\n  return (\n    <div classname='\"listing__search-wrapper\"'>\n      <input\n =="" onchange="{event" placeholder="{searchPlaceholder}\n" type='\"text\"\n'> setSearchText(event.currentTarget.value)}\n        onKeyDown={handleKeyDown}\n        value={searchText}\n        className=\"listing-input listing-input__search\"\n        aria-label={ariaLabel ? ariaLabel : 'Enter Keyword'}\n      /&gt;\n\n      <svg\n '#search'="" '0="" 0="" 24="" 24'="" 32="" 32'}\n="" :="" =="=" ?="" classname='\"listing-input__search-icon\"\n' clearsearch}\n="" dosearch="" onclick="{svgSearch" onkeydown="{handleXKeyDown}\n" role='\"button\"\n' tabindex="{0}\n" viewbox="{svgSearch">\n        <use xlinkhref="{svgSearch}"></use>\n      \n    </svg\n></input\n></div>\n  );\n};\n\nexport default Search;\n","import { useCallback } from 'react';\nimport { FacetProps } from '../types';\n\ninterface OwnProps {\n  facets: FacetProps[];\n  isEcommerceListing: boolean;\n  isPeopleListing: boolean;\n}\n\nconst useClearAllFacets = ({ facets, isEcommerceListing, isPeopleListing }: OwnProps) =&gt; {\n  const filterFacets = useCallback(() =&gt; {\n    return facets.map(facet =&gt; {\n      // Always preserve ProgramTypeFacet value\n      if (facet.id === 'ProgramTypeFacet') {\n        return facet;\n      }\n\n      if (facet.value) {\n        if (isEcommerceListing || isPeopleListing) {\n          if (facet.type !== 'custom-radio') {\n            return { ...facet, value: null };\n          }\n        } else {\n          if (facet.id === 'date-range') {\n            // Reset date range items\n            const items = facet.items.map(item =&gt; {\n              return { ...item, value: '' };\n            });\n\n            return {\n              ...facet,\n              items,\n              value: null\n            };\n          }\n\n          return { ...facet, value: null };\n        }\n      }\n\n      return facet;\n    });\n  }, [facets, isEcommerceListing, isPeopleListing]);\n\n  return filterFacets;\n};\n\nexport default useClearAllFacets;\n","import React, { useEffect, useState } from 'react';\nimport { Checkbox } from '../../../../components/react-components/Checkbox';\n\nimport {\n  FacetProps,\n  FacetPropsItems,\n  FacetsCommonProps,\n  ListingTypes,\n  SortOptions\n} from '../types';\n// import SelectSort from './SelectSort';\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger\n} from '../../../../components/react-components/Accordion';\nimport KeySearcher from '../../../../components/react-components/KeySearch';\nimport { ECommerceCoursesAndProductsFacetTypes } from '../ECommerceCoursesAndProductsListing/useGetEcommerceCoursesAndProductsListing';\nimport Search from '../Search';\nimport { findFacetById, getFacetValueById } from '../utils';\nimport FacetDate from './FacetDate';\nimport useClearAllFacets from './useClearAllFacets';\nimport useFacetChangeHandler from './useFacetChangeHandler';\nimport useIsChecked from './useIsChecked';\n// import FacetDate from './FacetDate';\n// import useFacetChangeHandler from './useFacetChangeHandler';\nimport { FacetData } from './FacetAccordion';\n\ntype OwnProps = {\n  sortOptions?:\n    | {\n        label: string;\n        value: string;\n      }[]\n    | null;\n  mobileShowResultsLabel: string;\n  clearAllLabel: string;\n  mobileFilterNarrowLabel: string;\n  mobileAppliedFiltersLabel: string;\n  minDatePlaceholder?: string;\n  maxDatePlaceholder?: string;\n  orderBy?: string;\n  defaultSortValue?: string;\n  setOrderBy?: (orderBy: string) =&gt; void;\n  dropdownSearchLabel?: string;\n  searchPlaceholder?: string;\n  setSearchTerm?: (searchTerm: string) =&gt; void;\n  searchTerm?: string;\n  unavailableLetters?: string[];\n  facetsData?: FacetData;\n  defaultFilter?: string;\n  isFirstLoad?: boolean;\n} &amp; FacetsCommonProps;\n\nconst FacetsMobile = ({\n  sortOptions,\n  mobileShowResultsLabel,\n  clearAllLabel,\n  mobileFilterNarrowLabel,\n  mobileAppliedFiltersLabel,\n  facets,\n  orderBy,\n  pagination,\n  setPagination,\n  setOrderBy,\n  setFilters,\n  listingType,\n  searchPlaceholder,\n  setSearchTerm,\n  searchTerm,\n  unavailableLetters,\n  facetsData,\n  defaultFilter,\n  isFirstLoad = false\n}: OwnProps) =&gt; {\n  const [displayMobileFilter, setDisplayMobileFilter] = useState(false);\n  const [filtersApplied, setFiltersApplied] = useState(0);\n  const isProgramListing = listingType === ListingTypes.PROGRAMS_CERTS_LISTING;\n  const isEcommerceListing = listingType === ListingTypes.ECOMMERCE_COURSES_LISTING;\n  const isPeopleDirectoryListing = listingType === ListingTypes.PEOPLE_LISTING;\n  const isSearchListing = listingType === ListingTypes.SEARCH_LISTING;\n  const isPeopleListing = listingType === ListingTypes.PEOPLE_LISTING;\n  const [value, setValue] = useState('');\n  const [updatedFacets, setUpdatedFacets] = useState(facets);\n\n  const filterFacets = useClearAllFacets({ facets, isEcommerceListing, isPeopleListing });\n\n  const toggleMobileFilter = () =&gt; {\n    setDisplayMobileFilter(!displayMobileFilter);\n    document.body.classList.toggle('no-scroll');\n  };\n\n  useEffect(() =&gt; {\n    const handleKeyDown = (event: KeyboardEvent) =&gt; {\n      if (event.key === 'Escape') {\n        setDisplayMobileFilter(false);\n      }\n    };\n\n    window.addEventListener('keydown', handleKeyDown);\n\n    setValue(sortOptions &amp;&amp; sortOptions.length &gt; 1 ? 'sort' : facets[0].id);\n\n    return () =&gt; {\n      window.removeEventListener('keydown', handleKeyDown);\n    };\n  }, []);\n\n  useEffect(() =&gt; {\n    if (facets.length) {\n      calcSelectedFilters();\n    }\n  }, [facets]);\n\n  useEffect(() =&gt; {\n    if (facetsData) {\n      const newUpdatedFacets = facets.map(facet =&gt; ({\n        ...facet,\n        items: facet.items.map(item =&gt; ({\n          ...item,\n          count:\n            facetsData[facet.id]?.Categories.IdTitle?.find(f =&gt; f.name.split('|')[1] === item.value)\n              ?.count || 0\n        }))\n      }));\n\n      setUpdatedFacets(newUpdatedFacets);\n    }\n  }, [facetsData, facets]);\n\n  const onSelectionChangeHandler = useFacetChangeHandler({\n    facets,\n    isEcommerceListing,\n    isProgramListing,\n    pagination,\n    setFilters,\n    setPagination\n  });\n\n  const isChecked = useIsChecked({ facets, isProgramListing });\n\n  const showResults = () =&gt; {\n    calcSelectedFilters();\n    setDisplayMobileFilter(false);\n    document.body.classList.remove('no-scroll');\n  };\n\n  const calcSelectedFilters = () =&gt; {\n    let selectedFiltersLen = 0;\n    // we need to get the item.value of each on the facets that are filled (value is not empty)\n    const selectedFilters = facets.reduce((acc: string[], item: FacetProps) =&gt; {\n      if (item.value &amp;&amp; Array.isArray(item.value)) {\n        (item.value as string[]).forEach((value: string) =&gt; {\n          acc.push(value);\n        });\n      } else if (item.value) {\n        acc.push(item.value as string);\n      }\n      return acc;\n    }, []);\n\n    selectedFiltersLen += selectedFilters.length;\n\n    if (searchTerm &amp;&amp; searchTerm.length &gt; 0) {\n      selectedFiltersLen += 1;\n    }\n\n    setFiltersApplied(selectedFiltersLen);\n  };\n\n  const clearResults = () =&gt; {\n    const filtered = filterFacets().map(facet =&gt; {\n      if (facet.id === 'ProgramTypeFacet' &amp;&amp; defaultFilter &amp;&amp; !isFirstLoad) {\n        return { ...facet, value: [defaultFilter] };\n      }\n      return facet;\n    });\n    setFilters(filtered);\n    document.body.classList.remove('no-scroll');\n    setDisplayMobileFilter(false);\n  };\n\n  const programsListingOnValueChange = (itemID: string, facetID: string) =&gt; {\n    const isOnCampusLocationFacet = itemID.includes('on-campus');\n    const tempID = isOnCampusLocationFacet ? 'CampusLocationFacet' : facetID;\n    const value = findFacetById(tempID, facets) as FacetPropsItems;\n    let selectedValues = Array.isArray(value?.value) ? (value?.value as string[]) : [];\n\n    if (isOnCampusLocationFacet &amp;&amp; itemID.includes('all')) {\n      const onCampusItems = facets.find(facet =&gt; facet.id === 'CampusLocationFacet')?.items;\n\n      // if it includes on-campus-all, we select all the on-campus locations values from facet\n      if (selectedValues.length === onCampusItems?.length) {\n        selectedValues = [];\n      } else {\n        selectedValues = onCampusItems?.map(item =&gt; item.id) || [];\n      }\n    } else {\n      const tempID = isOnCampusLocationFacet ? itemID.replace('on-campus-', '') : itemID;\n      if (selectedValues.includes(tempID)) {\n        selectedValues = selectedValues.filter(item =&gt; item !== tempID);\n      } else {\n        selectedValues.push(tempID);\n      }\n    }\n\n    onSelectionChangeHandler(tempID, selectedValues.join(','));\n  };\n\n  const programsListingClassName = (itemID: string, type?: string) =&gt; {\n    if (itemID.includes('on-campus')) {\n      const facet = facets.find(facet =&gt; facet.id === 'CampusLocationFacet');\n      if (type === 'checkbox') {\n        if (itemID.includes('all')) {\n          return facet?.value?.length === facet?.items.length\n            ? 'check-item__all'\n            : 'check-item__partial';\n        }\n        return '';\n      }\n\n      return itemID.includes('all')\n        ? 'program-select__item program-select__item__all'\n        : 'program-select__item program-select__item__on-campus';\n    } else {\n      return 'program-select__item';\n    }\n  };\n\n  const handleCheckboxChange = (facetId: string, itemId: string, checked: boolean) =&gt; {\n    const updatedFacet = updatedFacets.find(facet =&gt; facet.id === facetId);\n    if (updatedFacet) {\n      let newValue: string[] = Array.isArray(updatedFacet.value) ? [...updatedFacet.value] : [];\n\n      if (checked) {\n        newValue.push(itemId);\n      } else {\n        newValue = newValue.filter(id =&gt; id !== itemId);\n      }\n\n      onSelectionChangeHandler(facetId, newValue.join(','));\n    }\n  };\n\n  const handleOrderByChange = (value: string) =&gt; {\n    if (setOrderBy) {\n      setOrderBy(value);\n    }\n  };\n\n  return (\n    <div\n ${displaymobilefilter="" ${listingtype="" ''}="" ''}`}\n="" 'open'="" :="" ?="" `listing__mobile--${listingtype}`="" classname="{`listing__mobile">\n      <div classname='\"listing__mobile-sticky-filter\"'>\n        <button =="" classname='\"listing__mobile-filter-button\"' onclick="{()"> toggleMobileFilter()}&gt;\n          <svg classname='\"listing__mobile-filter-button-icon\"' role='\"presentation\"'>\n            <use xlinkhref='\"#substract\"'></use>\n          </svg>\n          <span>{mobileFilterNarrowLabel}</span>\n        </button>\n        {filtersApplied &gt; 0 &amp;&amp; (\n          <span classname='\"listing__mobile-filter-tags\"'>\n            {mobileAppliedFiltersLabel.replace('{0}', filtersApplied.toString())}\n          </span>\n        )}\n      </div>\n\n      {(isProgramListing || isEcommerceListing) &amp;&amp; (\n        <search\n pagination="{pagination}\n" searchplaceholder="{searchPlaceholder!}\n" searchterm="{searchTerm!}\n" setpagination="{setPagination}\n" setstoresearchterm="{setSearchTerm!}\n">\n      )}\n\n      <div\n ${issearchlisting="" ''}`}\n="" 'listing__mobile-filters--search'="" :="" ?="" classname="{`listing__mobile-filters">\n        <div accordion\"="" classname='\"listing__facet' listing__facet--accordion="">\n          <accordion collapsible="" onvaluechange="{setValue}" type='\"single\"' value="{value}">\n            {sortOptions &amp;&amp; sortOptions.length &gt; 1 &amp;&amp; (\n              <accordionitem key="{'sort'}" value="{'sort'}">\n                <accordiontrigger classname='\"listing__mobile-facet\"'>Sort By</accordiontrigger>\n                <accordioncontent>\n                  {sortOptions.map(({ label, value }) =&gt; (\n                    <div classname='\"listing__sort__radio' key="{value}" radio-container\"="">\n                      <input\n =="=" checked="{orderBy" id="{value}\n" name='\"sort\"\n' onchange="{e" type='\"radio\"\n' value="{value}\n" value}\n=""> handleOrderByChange(e.target.value as SortOptions)}\n                      /&gt;\n                      <span classname='\"checkmark\"'></span>\n                      <label\n ''}`}\n="" 'label-selected'="" :="" =="=" ?="" classname="{`${orderBy" htmlfor="{value}\n" value="">\n                        {label}\n                      \n                    </label\n></input\n></div>\n                  ))}\n                </accordioncontent>\n              </accordionitem>\n            )}\n\n            {updatedFacets.map((facet, index) =&gt; {\n              const { id: facetID, title, items: facetItems, type } = facet;\n              const isFacetItemsEmpty = !facetItems || facetItems.length === 0;\n\n              if (type === 'date') {\n                const minDate = facetItems?.find(item =&gt; item.id === 'minDate')?.value as string;\n                const maxDate = facetItems?.find(item =&gt; item.id === 'maxDate')?.value as string;\n\n                return (\n                  <accordionitem +="" 1}="" key="{index" value="{facet.id}">\n                    <accordiontrigger classname="{`listing__mobile-facet`}">\n                      {'Event Date'}\n                    </accordiontrigger>\n                    <accordioncontent classname="{'listing__facet-accordion-content--date'}">\n                      {facetItems &amp;&amp;\n                        facetItems.map(item =&gt; {\n                          return (\n                            <facetdate\n id="{item.id}\n" key="{item.id}\n" maxdate="{maxDate}\n" mindate="{minDate}\n" onselectionchange="{onSelectionChangeHandler}\n" selectedfilters="{facets}\n" title="{item.title}\n" value="{item.value}\n">\n                          );\n                        })}\n                    </facetdate\n></accordioncontent>\n                  </accordionitem>\n                );\n              }\n\n              if (isPeopleDirectoryListing &amp;&amp; facetID === 'LetterFacet') {\n                return (\n                  <accordionitem +="" 1}="" key="{index" value="{facetID}">\n                    <accordiontrigger classname="{`listing__mobile-facet`}">{title}</accordiontrigger>\n                    <accordioncontent classname="{'listing__facet-accordion-content'}">\n                      <keysearcher\n as="" facets)?.value="" onchange="{(value:" selectedvalue="{findFacetById(facetID," string)="" string}\n=""> onSelectionChangeHandler(facetID, value)}\n                        disabledLetters={unavailableLetters}\n                      /&gt;\n                    </keysearcher\n></accordioncontent>\n                  </accordionitem>\n                );\n              }\n\n              if (isFacetItemsEmpty || facetID === 'CampusLocationFacet') {\n                return null;\n              }\n\n              if (isEcommerceListing) {\n                let visibleDropdownFacet;\n                const selectedType = getFacetValueById(\n                  facets,\n                  ECommerceCoursesAndProductsFacetTypes.Categories\n                );\n\n                if (selectedType?.[0] === 'courses') {\n                  visibleDropdownFacet = ECommerceCoursesAndProductsFacetTypes.AreaOfStudyFacet;\n                } else {\n                  visibleDropdownFacet = ECommerceCoursesAndProductsFacetTypes.ProductTypeFacet;\n                }\n\n                // we return null if one of the facet is not the equal the  visibleDropdownFacet or 'Categories'\n\n                if (\n                  facetID !== visibleDropdownFacet &amp;&amp;\n                  facetID !== ECommerceCoursesAndProductsFacetTypes.Categories\n                ) {\n                  return null;\n                }\n              }\n\n              return (\n                <accordionitem +="" 1}="" key="{index" value="{facetID}">\n                  <accordiontrigger classname="{`listing__mobile-facet`}">{title}</accordiontrigger>\n\n                  <accordioncontent classname="{'listing__facet-accordion-content'}">\n                    {facetItems &amp;&amp;\n                      facetItems.map((item, index) =&gt; {\n                        let selectProgramClass = '';\n                        if (isProgramListing) {\n                          selectProgramClass = programsListingClassName(item.id);\n                        }\n\n                        // If the ID is 'categories' or 'programtypefacet', render a radio button\n                        if (\n                          facetID.toLowerCase() === 'categories' ||\n                          facetID.toLowerCase() === 'programtypefacet'\n                        ) {\n                          return (\n                            <div\n ${selectprogramclass}`}\n="" classname="{`listing__sort__radio" key="{item.id}\n" radio-container="">\n                              <input\n =="" checked="{isChecked(item," facetid)}\n="" id="{item.id}\n" name='\"categories\"\n' onchange="{()" type='\"radio\"\n' value="{item.title}\n"> onSelectionChangeHandler(facetID, item.id)}\n                              /&gt;\n                              <span classname='\"checkmark\"'></span>\n                              <label\n ''}`}\n="" 'label-selected'="" :="" ?="" classname="{`${isChecked(item," facetid)="" htmlfor="{item.value}\n">\n                                {item.value}\n                              \n                            </label\n></input\n></div\n></accordioncontent></accordionitem></accordion></div>\n                          );\n                        }\n\n                        return (\n                          <div ${selectprogramclass}`}="" classname="{`checkbox__container" key="{index}">\n                            <checkbox\n =="" id="{item.id}\n" oncheckedchange="{checked"> {\n                                if (isProgramListing) {\n                                  programsListingOnValueChange(item.id, facetID);\n                                } else {\n                                  handleCheckboxChange(facetID, item.id, checked as boolean);\n                                }\n                              }}\n                              aria-label={item.value}\n                              checked={isChecked(item, facetID)}\n                            /&gt;\n\n                            <div classname='\"checkbox__label-wrapper\"'>\n                              <label classname='\"checkbox__label\"' htmlfor="{item.id}">\n                                {item.value}\n                              </label>\n                              {type !== 'search' &amp;&amp;\n                                !isEcommerceListing &amp;&amp;\n                                !isPeopleDirectoryListing &amp;&amp;\n                                !isProgramListing &amp;&amp; (\n                                  <span classname='\"checkbox__label-number\"'>({item.count})</span>\n                                )}\n                            </div>\n                          </checkbox\n></div>\n                        );\n                      })}\n                  \n                \n              );\n            })}\n          \n        \n      \n\n      <div classname='\"listing__mobile-footer\"'>\n        <button\n =="" classname='\"link' link--primary="" listing__mobile-clear-filters\"\n="" onclick="{()"> clearResults()}\n        &gt;\n          {clearAllLabel}\n        \n        <button\n =="" btn--primary="" classname='\"btn' listing__mobile-show-results\"\n="" onclick="{()"> showResults()}\n        &gt;\n          {mobileShowResultsLabel.replace(\n            '{0}',\n            pagination.total ? pagination.total.toString() : ''\n          )}\n        \n      </button\n></button\n></div>\n    \n  );\n};\n\nexport default FacetsMobile;\n","import React from 'react';\r\nimport { ArticleDetailPage } from '../../../../../codegenGenerated/optigraphql/generated';\r\nimport { getDateThreeLetterMonth } from '../../../../helpers/getDateLetter';\r\n\r\ninterface OwnProps {\r\n  item: ArticleDetailPage;\r\n  imgFallback?: string;\r\n}\r\n\r\nexport const BlogAndNewsCard = ({ item }: OwnProps) =&gt; {\r\n  if (!item) return &lt;&gt;;\r\n\r\n  const {\r\n    Name: title,\r\n    FeaturedDescription: description,\r\n    Date: minDate,\r\n    ReadTime: readTime,\r\n    BlogAndNewsImage: image,\r\n    Url: url\r\n  } = item;\r\n\r\n  return (\r\n    <a ''}="" :="" ?="" classname='\"listing-card' href="{url" link\"="" listing-card--blog="" url="">\r\n      <span \"="" classname='\"listing-card__border--line'></span>\r\n      <div classname='\"listing-card__content\"'>\r\n        {image &amp;&amp; image?.Url &amp;&amp; (\r\n          <div classname='\"picture\"'>\r\n            <img\r\n ${image?.url}?width="624&amp;height=428&amp;format=webp" ''}\r\n="" 240w,\r\n="" 480w,\r\n="" 480w`}\r\n="" :="" ?="" alt="{title" classname='\"listing-card__image\"\r\n' height='\"234\"\r\n' loading='\"lazy\"\r\n' src="{`${image?.Url}?width=624&amp;height=468}`}\r\n" srcset="{`${image?.Url}?width=624&amp;height=468&amp;format=webp" title="" width='\"315\"\r\n'>\r\n          </img\r\n></div>\r\n        )}\r\n        <div classname='\"listing-card__desc\"'>\r\n          <h4 classname='\"listing-card__even-title-label\"'>\r\n            {title}\r\n            <div classname='\"link-decorator\"'>\r\n              <span classname='\"link-decorator-inner\"'></span>\r\n              <span classname='\"link-decorator-outer\"'></span>\r\n            </div>\r\n          </h4>\r\n          <p classname='\"listing-card__description' rtf\"="">{description}</p>\r\n          <div classname='\"listing-card__info\"'>\r\n            {minDate &amp;&amp; (\r\n              <p classname='\"listing-card__event-date\"' key="{minDate}">\r\n                {getDateThreeLetterMonth(minDate)} {minDate.split('-')[2].split('T')[0]},{' '}\r\n                {minDate.split('-')[0]}\r\n              </p>\r\n            )}\r\n\r\n            {readTime &amp;&amp; (\r\n              <p classname='\"listing-card__event-college\"' key="{readTime}">\r\n                {readTime}\r\n              </p>\r\n            )}\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <span \"="" classname='\"listing-card__border--line'></span>\r\n    </a>\r\n  );\r\n};\r\n","import React from 'react';\nimport { CourseProduct } from '../../../../../codegenGenerated/optigraphql/generated';\n\nexport const EcommerceCoursesCard = (item: CourseProduct) =&gt; {\n  if (!item) return &lt;&gt;;\n\n  const { Url, CourseSubjectId, CourseTitle, AreaOfStudyFacet } = item;\n\n  let areasOfStudy: string[] = [];\n  if (AreaOfStudyFacet?.AllCategoriesIds) {\n    areasOfStudy =\n      AreaOfStudyFacet?.Categories?.map(area =&gt; {\n        return area?.Title || '';\n      }) || [];\n  }\n\n  return (\n    <a ''}="" :="" ?="" classname='\"listing-card' href="{Url" link\"="" listing-card--ecommerce-courses="" url="">\n      <span \"="" classname='\"listing-card__border--line'></span>\n      <div classname='\"listing-card__content\"'>\n        <div classname='\"listing-card__desc\"'>\n          <h4 classname='\"listing-card__even-title-label\"'>\n            <span classname='\"listing-card__even-title-label\"'>\n              {' '}\n              {`${CourseSubjectId}: ${CourseTitle}`}\n            </span>\n            <div classname='\"link-decorator\"'>\n              <span classname='\"link-decorator-inner\"'></span>\n              <span classname='\"link-decorator-outer\"'></span>\n            </div>\n          </h4>\n          <div classname='\"listing-card__info\"'>\n            <p classname='\"listing-card__event-type\"'>{areasOfStudy.join(', ')}</p>\n          </div>\n        </div>\n      </div>\n      <span \"="" classname='\"listing-card__border--line'></span>\n    </a>\n  );\n};\n","import React from 'react';\nimport { StandardProduct } from '../../../../../codegenGenerated/optigraphql/generated';\n\nexport type ProductsCardProps = {\n  item: StandardProduct;\n  imgFallback?: string;\n};\n\nexport const EcommerceProductsCard = ({ item, imgFallback }: ProductsCardProps) =&gt; {\n  if (!item) return &lt;&gt;;\n\n  const { Url, DefaultImageUrl, DefaultMarketPrice, DisplayName } = item;\n\n  return (\n    <a ''}="" :="" ?="" classname='\"listing-card' href="{Url" link\"="" listing-card--ecommerce-products="" url="">\n      <div classname='\"listing-card__content\"'>\n        <div classname='\"picture\"'>\n          <img\n !="=" ${defaultimageurl="" &&="" ''="" 240w,="" 240w,\n="" 480w,\n="" 960w,\n="" 960w`}\n="" :="" ?="" alt='\"about-card-image\"\n' classname='\"listing-card__image\"\n' defaultimageurl="" height='\"120\"\n' imgfallback}="" imgfallback}?width="480&amp;height=853`}\n" loading='\"lazy\"\n' src="{`${DefaultImageUrl" srcset="{`${DefaultImageUrl" width='\"120\"\n'>\n        </img\n></div>\n        <div classname='\"listing-card__desc\"'>\n          <h4 classname='\"listing-card__even-title-label\"'>\n            <span classname='\"listing-card__even-title-label\"'> {DisplayName}</span>\n            <div classname='\"link-decorator\"'>\n              <span classname='\"link-decorator-inner\"'></span>\n              <span classname='\"link-decorator-outer\"'></span>\n            </div>\n          </h4>\n          <div classname='\"listing-card__info\"'>\n            <p classname='\"listing-card__product-price\"'>{`$${DefaultMarketPrice?.toFixed(2)}`}</p>\n          </div>\n        </div>\n      </div>\n    </a>\n  );\n};\n","import React from 'react';\r\nimport {\r\n  EventDetailPage,\r\n  FilterCategoryItemModel\r\n} from '../../../../../codegenGenerated/optigraphql/generated';\r\nimport { getDateThreeLetterMonth, getDateDayNumber } from '../../../../helpers/getDateLetter';\r\n\r\nexport const EventsListingCard = (event: EventDetailPage) =&gt; {\r\n  if (!event) return &lt;&gt;;\r\n\r\n  const {\r\n    EventTitle: title,\r\n    EventLocationFacet,\r\n    EventAudienceFacet,\r\n    EventTypeFacet,\r\n    Url: url,\r\n    InitialDateEvent,\r\n    EndDateEvent\r\n  } = event;\r\n\r\n  // As per specs, only one/first location, audience and type will be displayed\r\n  const [location, audience, type]: FilterCategoryItemModel[] = [\r\n    EventLocationFacet!.Categories?.[0] as FilterCategoryItemModel,\r\n    EventAudienceFacet?.Categories?.[0] as FilterCategoryItemModel,\r\n    EventTypeFacet?.Categories?.[0] as FilterCategoryItemModel\r\n  ];\r\n\r\n  return (\r\n    &lt;&gt;\r\n      <a ''}="" :="" ?="" classname='\"listing-card' href="{url" link\"="" url="">\r\n        <span \"="" classname='\"listing-card__border--line'></span>\r\n        <div classname='\"listing-card__content\"'>\r\n          <div classname='\"listing-card__desc\"'>\r\n            <h2 classname='\"listing-card__even-title-label\"'>\r\n              <span classname='\"listing-card__even-title-label\"'> {title}</span>\r\n              <div classname='\"link-decorator\"'>\r\n                <span classname='\"link-decorator-inner\"'></span>\r\n                <span classname='\"link-decorator-outer\"'></span>\r\n              </div>\r\n            </h2>\r\n            <div classname='\"listing-card__info\"'>\r\n              {location &amp;&amp; location.Title &amp;&amp; (\r\n                <p classname='\"listing-card__event-type\"' key="{location.Id}">\r\n                  {location.Title}\r\n                </p>\r\n              )}\r\n\r\n              {type &amp;&amp; type.Title &amp;&amp; (\r\n                <p classname='\"listing-card__event-type\"' key="{type.Id}">\r\n                  {type.Title}\r\n                </p>\r\n              )}\r\n\r\n              {audience &amp;&amp; audience.Title &amp;&amp; (\r\n                <p classname='\"listing-card__event-type\"' key="{audience.Id}">\r\n                  {audience.Title}\r\n                </p>\r\n              )}\r\n            </div>\r\n          </div>\r\n          <div classname='\"listing-card__date\"'>\r\n            {getDateThreeLetterMonth(InitialDateEvent) === getDateThreeLetterMonth(EndDateEvent) ||\r\n            EndDateEvent === null ? (\r\n              <p classname='\"listing-card__date-month\"'>\r\n                {getDateThreeLetterMonth(InitialDateEvent)}\r\n              </p>\r\n            ) : (\r\n              <p classname='\"listing-card__date-month\"'>\r\n                {getDateThreeLetterMonth(InitialDateEvent)} -{' '}\r\n                {getDateThreeLetterMonth(EndDateEvent)}\r\n              </p>\r\n            )}\r\n            {EndDateEvent === null ||\r\n            getDateDayNumber(InitialDateEvent) === getDateDayNumber(EndDateEvent) ? (\r\n              <p classname='\"listing-card__date-days\"'>{getDateDayNumber(InitialDateEvent)}</p>\r\n            ) : (\r\n              <p classname='\"listing-card__date-days\"'>\r\n                {getDateDayNumber(InitialDateEvent)} - {getDateDayNumber(EndDateEvent)}\r\n              </p>\r\n            )}\r\n          </div>\r\n        </div>\r\n        <span \"="" classname='\"listing-card__border--line'></span>\r\n      </a>\r\n    \r\n  );\r\n};\r\n","import React from 'react';\nimport {\n  // FilterCategoryItemModel,\n  OfficesAndServicesDetailPage\n} from '../../../../../codegenGenerated/optigraphql/generated';\n\nexport const OfficesAndServicesCard = (item: OfficesAndServicesDetailPage) =&gt; {\n  if (!item) return &lt;&gt;;\n\n  const {\n    OfficeAndServiceEmail: email,\n    OfficeAndServiceLocation: location,\n    OfficeAndServiceName: name,\n    OfficeAndServicePhone: phone,\n    Url: url,\n    _id: id\n  } = item;\n\n  // InfoItem Component\n  const InfoItem = ({ iconType, text }: { iconType: string; text: string }) =&gt; (\n    <div classname="{`listing-card__event-type" listing-card__event-type--${icontype}`}="">\n      {iconType &amp;&amp; iconType !== 'empty' &amp;&amp; (\n        <svg classname="{'listing-card__offices-icon'}" role='\"presentation\"'>\n          <use xlinkhref="{`#${iconType}`}"></use>\n        </svg>\n      )}\n      {text}\n    </div>\n  );\n\n  return (\n    &lt;&gt;\n      <a ''}="" :="" ?="" classname='\"listing-card' href="{url" key="{id}" link\"="" listing-card--offices="" url="">\n        <span \"="" classname='\"listing-card__border--line'></span>\n        <div classname='\"listing-card__content\"'>\n          <div classname='\"listing-card__desc\"'>\n            <h4 classname='\"listing-card__even-title-label\"'>\n              <span classname='\"listing-card__even-title-label\"'> {name}</span>\n              <div classname='\"link-decorator\"'>\n                <span classname='\"link-decorator-inner\"'></span>\n                <span classname='\"link-decorator-outer\"'></span>\n              </div>\n            </h4>\n            <div classname='\"listing-card__info\"'>\n              {email ? (\n                <infoitem icontype='\"mail\"' text="{email}">\n              ) : (\n                <infoitem icontype='\"empty\"' text="{''}">\n              )}\n              {phone ? (\n                <infoitem icontype='\"phone\"' text="{phone}">\n              ) : (\n                <infoitem icontype='\"empty\"' text="{''}">\n              )}\n              {location ? (\n                <infoitem icontype='\"building\"' text="{location}">\n              ) : (\n                <infoitem icontype='\"empty\"' text="{''}">\n              )}\n            </infoitem></infoitem></infoitem></infoitem></infoitem></infoitem></div>\n          </div>\n        </div>\n        <span \"="" classname='\"listing-card__border--line'></span>\n      </a>\n    \n  );\n};\n","import React, { memo, useMemo } from 'react';\nimport { PeopleDetailPage } from '../../../../../codegenGenerated/optigraphql/generated';\n\nexport type PeopleDirectoryCardProps = {\n  item: PeopleDetailPage;\n  imgFallback?: string;\n};\n\n// Separate InfoItem into its own memoized component\nconst InfoItem = memo(({ iconType, text }: { iconType: string; text: string | string[] }) =&gt; (\n  <div classname="{`listing-card__event-type" listing-card__event-type--${icontype}`}="">\n    {iconType &amp;&amp; iconType !== 'empty' &amp;&amp; (\n      <div classname="{'listing-card__icon-container'}">\n        <svg classname="{'listing-card__icon'}" role='\"presentation\"'>\n          <use xlinkhref="{`#${iconType}`}"></use>\n        </svg>\n      </div>\n    )}\n    {Array.isArray(text) ? (\n      <div classname="{'listing-card__event-type__multiple-container'}">\n        {text.map((item, index) =&gt; (\n          <span key="{`${item}-${index}`}">{item}</span>\n        ))}\n      </div>\n    ) : (\n      text\n    )}\n  </div>\n));\nInfoItem.displayName = 'InfoItem';\n\nexport const PeopleDirectoryCard = memo(({ item }: PeopleDirectoryCardProps) =&gt; {\n  if (!item) return null;\n\n  const {\n    Url,\n    FirstName,\n    LastName,\n    PersonTitle,\n    DepartmentFacet,\n    Email,\n    CampusLocationFacet,\n    PageImage\n  } = item;\n\n  // Memoize the processed arrays\n  const { campusLocations, departments } = useMemo(() =&gt; {\n    const campusLocs = CampusLocationFacet?.AllCategoriesIds\n      ? CampusLocationFacet?.Categories?.map(area =&gt; area?.Title || '') || []\n      : [];\n\n    const depts = DepartmentFacet?.AllCategoriesIds\n      ? DepartmentFacet?.Categories?.map(area =&gt; area?.Title || '') || []\n      : [];\n\n    return { campusLocations: campusLocs, departments: depts };\n  }, [CampusLocationFacet, DepartmentFacet]);\n\n  // Memoize the person info section\n  const personInfo = useMemo(\n    () =&gt; (\n      <div classname='\"listing-card__info' listing-card__info--people-info\"="">\n        <p>\n          {PersonTitle}\n          {PersonTitle &amp;&amp; departments.length &gt; 0 &amp;&amp; (\n            <span classname="{'listing-card__separator'}">•</span>\n          )}\n          {departments.length &gt; 0 &amp;&amp; departments.join(', ')}\n        </p>\n      </div>\n    ),\n    [PersonTitle, departments]\n  );\n\n  // Memoize the contact info section\n  const contactInfo = useMemo(\n    () =&gt; (\n      <div classname='\"listing-card__info\"'>\n        {Email ? (\n          <infoitem icontype='\"mail\"' text="{Email}">\n        ) : (\n          <infoitem icontype='\"empty\"' text="{''}">\n        )}\n        {campusLocations.length &gt; 0 ? (\n          <infoitem icontype='\"building\"' text="{campusLocations}">\n        ) : (\n          <infoitem icontype='\"empty\"' text="{''}">\n        )}\n      </infoitem></infoitem></infoitem></infoitem></div>\n    ),\n    [Email, campusLocations]\n  );\n\n  // Memoize the image section\n  const imageSection = useMemo(() =&gt; {\n    if (!PageImage?.Url) return null;\n    return (\n      <div classname='\"picture\"'>\n        <img\n ${pageimage.url}?width="854&amp;height=854&amp;format=webp" 240w,\n="" 480w,\n="" 480w`}\n="" alt='\"about-card-image\"\n' classname='\"listing-card__image\"\n' height='\"120\"\n' loading='\"lazy\"\n' src="{`${PageImage.Url}?width=853&amp;height=853}`}\n" srcset="{`${PageImage.Url}?width=427&amp;height=427&amp;format=webp" width='\"120\"\n'>\n      </img\n></div>\n    );\n  }, [PageImage?.Url]);\n\n  return (\n    <a ''}="" classname='\"listing-card' href="{Url" link\"="" listing-card--people-directory="" ||="">\n      <span classname='\"listing-card__border--line\"'>\n      <div classname='\"listing-card__content\"'>\n        <div classname='\"listing-card__desc\"'>\n          <div classname="{'listing-card__people-desc-container'}">\n            <h4 classname='\"listing-card__even-title-label\"'>\n              <span classname='\"listing-card__even-title-label\"'>{`${FirstName} ${LastName}`}</span>\n              <div classname='\"link-decorator\"'>\n                <span classname='\"link-decorator-inner\"'>\n                <span classname='\"link-decorator-outer\"'>\n              </span></span></div>\n            </h4>\n            {personInfo}\n          </div>\n          {contactInfo}\n          {imageSection}\n        </div>\n      </div>\n      <span classname='\"listing-card__border--line\"'>\n    </span></span></a>\n  );\n});\n\nPeopleDirectoryCard.displayName = 'PeopleDirectoryCard';\n","import React, { useEffect } from 'react';\r\n\r\ntype OwnProps = {\r\n  barRect: DOMRect;\r\n};\r\n\r\nconst ScrollIndicator = ({ barRect }: OwnProps) =&gt; {\r\n  useEffect(() =&gt; {\r\n    // we listen for scroll events\r\n    window.addEventListener('scroll', () =&gt; {\r\n      // we get the scroll position\r\n      const scrollPosition = window.scrollY;\r\n      // we get the scroll height\r\n      const scrollHeight = document.body.scrollHeight - window.innerHeight;\r\n      // we calculate the scroll percentage\r\n      const scrollPercentage = (scrollPosition / scrollHeight) * 100;\r\n\r\n      // we set the dot position\r\n      const dot = document.querySelector('.scroll-indicator__dot') as HTMLElement;\r\n      if (dot) {\r\n        dot.style.top = scrollPercentage + '%';\r\n      }\r\n    });\r\n  }, []);\r\n\r\n  // we set the bar height to the bar rect.height\r\n  const barHeight = barRect.height - 90 + 'px';\r\n\r\n  return (\r\n    <div\r\n aria-hidden='\"true\"\r\n' classname='\"scroll-indicator' id='\"scroll-indicator\"\r\n' role='\"presentation\"\r\n' scroll-indicator--programs\"\r\n="">\r\n      <div\r\n barheight="" blocksize:="" classname='\"scroll-indicator__bar' scroll-indicator__bar--dark\"\r\n="" style="{{" }}\r\n="">\r\n      <div classname='\"scroll-indicator__dot' scroll-indicator__dot--dark\"=""></div>\r\n    \r\n  );\r\n};\r\n\r\nexport default ScrollIndicator;\r\n","import React, { useEffect, useRef } from 'react';\r\nimport {\r\n  FilterCategoryItemModel,\r\n  LinkItemNode,\r\n  Maybe,\r\n  ProgramDetailPage\r\n} from '../../../../../codegenGenerated/optigraphql/generated';\r\nimport {\r\n  AccordionContent,\r\n  AccordionItem,\r\n  AccordionTrigger\r\n} from '../../../../components/react-components/Accordion';\r\nimport ScrollIndicator from '../../../../components/react-components/ScrollIndicator';\r\n\r\ninterface OwnProps {\r\n  item: ProgramDetailPage;\r\n  additionalProps?: { [key: string]: string };\r\n  modeOfStudyLabel: string;\r\n  programTypeLabel: string;\r\n  degreesOfferLabel: string;\r\n  departmentOfferLabel: string;\r\n  schoolLabel: string;\r\n}\r\n\r\ntype CategoriesListProps = {\r\n  title: string;\r\n  isLink?: boolean;\r\n  categories:\r\n    | Maybe<array<maybe<filtercategoryitemmodel>&gt;&gt;\r\n    | Maybe<array<maybe<linkitemnode undefined="" |="">&gt;&gt;\r\n    | undefined;\r\n};\r\n\r\nexport const ProgramAndCertificatesCard = ({\r\n  item,\r\n  additionalProps,\r\n  modeOfStudyLabel,\r\n  programTypeLabel,\r\n  degreesOfferLabel,\r\n  departmentOfferLabel,\r\n  schoolLabel\r\n}: OwnProps) =&gt; {\r\n  if (!item) return &lt;&gt;;\r\n  const elementRef = useRef(null);\r\n  const [barRect, setBarRect] = React.useState({} as DOMRect);\r\n  const nameEl = useRef<htmlheadingelement>(null);\r\n\r\n  const {\r\n    _id: id,\r\n    Url: url,\r\n    ProgramSortableName: name,\r\n    ProgramTypeFacet: programType,\r\n    LocationFacet: location,\r\n    ApplyCTALink: applyCTALink,\r\n    DegreesFacet: degrees,\r\n    SchoolCtaLink: schoolCTALink,\r\n    DepartmentCtaLink: departmentCTALink,\r\n    DepartmentFacet: department,\r\n    ProgramFinderDescription: description\r\n  } = item;\r\n\r\n  const isCertificate = additionalProps?.certificateId === programType?.Categories?.[0]?.Id;\r\n\r\n  const applyLink = () =&gt; {\r\n    if (isCertificate) {\r\n      if (!applyCTALink || !applyCTALink.Href || !applyCTALink.Text) {\r\n        return null;\r\n      }\r\n\r\n      return (\r\n        <a\r\n '_blank'}\r\n="" ??="" btn--secondary="" classname='\"btn' href="{applyCTALink.Href!}\r\n" on-dark\"\r\n="" target="{applyCTALink.Target">\r\n          {applyCTALink.Text}\r\n          <span classname='\"btn-decorator\"'>\r\n            <span classname='\"btn-decorator-inner\"'></span>\r\n            <span classname='\"btn-decorator-outer\"'></span>\r\n          </span>\r\n        \r\n      );\r\n    }\r\n\r\n    return (\r\n      <a\r\n '_blank'}\r\n="" :="" ?="" ??="" additionalprops?.applylinkfallback}\r\n="" applyctalink.href="" btn--secondary="" classname='\"btn' href="{applyCTALink?.Href" on-dark\"\r\n="" target="{applyCTALink?.Target">\r\n        {applyCTALink?.Text ? applyCTALink?.Text : additionalProps?.applyLabelFallback}\r\n        <span classname='\"btn-decorator\"'>\r\n          <span classname='\"btn-decorator-inner\"'></span>\r\n          <span classname='\"btn-decorator-outer\"'></span>\r\n        </span>\r\n      \r\n    );\r\n  };\r\n\r\n  useEffect(() =&gt; {\r\n    const alertFunc = function () {\r\n      //console.log('Button clicked', nameEl.current);\r\n    };\r\n    const nameRef = nameEl.current;\r\n\r\n    if (!nameRef) return;\r\n\r\n    nameRef.addEventListener('click', alertFunc, false);\r\n    // Specify how to clean up after this effect:\r\n    return function cleanup() {\r\n      nameRef.removeEventListener('click', alertFunc, false);\r\n    };\r\n  });\r\n\r\n  // INFO: use this sample description for testing purposes\r\n  // const description =\r\n  //   '<h2> What is a GIS Degree?</h2><p>According to the US Department of Labor, geospatial technology is one of the high growth industries due to its diverse applications in</p><ul><li>urban planning</li><li>environmental management</li><li>transportation</li><li>telecommunications</li><li>and many other fields</li></ul><p>To respond to the rising demand in geospatial skills, the University of Redlands offers an internal GIS pathway program that allows the University undergraduates who want to pursue GIS as a future career path to earn a master’s degree in GIS within a year after they complete their undergraduate degree at Redlands. </p>';\r\n\r\n  // Define a reusable component for rendering the categories list\r\n  const CategoriesList = ({ title, categories, isLink }: CategoriesListProps) =&gt; {\r\n    if (!categories || categories.length === 0) return null;\r\n\r\n    // if categories is of type  Maybe<linkitemnode>[]\r\n    if (isLink) {\r\n      return (\r\n        <li classname='\"right-rail__programs-info--item\"'>\r\n          <h5 classname='\"right-rail__programs-info--heading\"'>{title}</h5>\r\n          <ul classname='\"right-rail__programs-info--list\"'>\r\n            {categories.map((category, index) =&gt; {\r\n              if (!category) return null;\r\n\r\n              const { Href, Target, Text } = category as LinkItemNode;\r\n\r\n              return (\r\n                <li key="{index}">\r\n                  <a '#'}="" '_blank'}="" ??="" href="{Href" target="{Target">\r\n                    {Text}\r\n                  </a>\r\n                </li>\r\n              );\r\n            })}\r\n          </ul>\r\n        </li>\r\n      );\r\n    }\r\n\r\n    return (\r\n      <li classname='\"right-rail__programs-info--item\"'>\r\n        <h5 classname='\"right-rail__programs-info--heading\"'>{title}</h5>\r\n        <ul classname='\"right-rail__programs-info--list\"'>\r\n          {categories.map((category, index) =&gt; (\r\n            <li key="{index}">{category?.Title}</li>\r\n          ))}\r\n        </ul>\r\n      </li>\r\n    );\r\n  };\r\n\r\n  const handleOnClick = () =&gt; {\r\n    if (!elementRef.current) return;\r\n\r\n    // Use setTimeout to ensure updates are done after a delay of 500ms\r\n    setTimeout(() =&gt; {\r\n      try {\r\n        const element = elementRef.current as unknown as HTMLElement;\r\n        const barRect = element.getBoundingClientRect();\r\n        setBarRect(barRect);\r\n      } catch (error) {\r\n        console.error('Failed to get bounding rectangle', error);\r\n      }\r\n    }, 400);\r\n  };\r\n\r\n  return (\r\n    <accordionitem classname='\"program-accordion__item\"' value="{id!}">\r\n      <accordiontrigger\r\n =="" classname='\"program-accordion__heading\"\r\n' onclick="{e"> {\r\n          e.stopPropagation();\r\n          // if e.currentTarget is the program-accordion__name element, then we dont open the accordion\r\n          // and we redirect to the program detail page url\r\n\r\n          if (nameEl.current !== null &amp;&amp; e.target === nameEl.current) {\r\n            // redirect to the program detail page url\r\n            e.preventDefault();\r\n            window.location.href = url ?? '#';\r\n            return;\r\n          }\r\n\r\n          handleOnClick();\r\n        }}\r\n      &gt;\r\n        <div classname='\"program-accordion__heading-program\"'>\r\n          <h4 classname='\"program-accordion__name\"' ref="{nameEl}">\r\n            {name}\r\n          </h4>\r\n\r\n          {/* <h4>\r\n            <a '#'}="" ??="" href="{url">{programShortName ? programShortName : programFullName}</a>\r\n          </h4> */}\r\n          <div classname='\"btn-decorator\"'>\r\n            <span classname='\"btn-decorator-inner\"'></span>\r\n            <span classname='\"btn-decorator-outer\"'></span>\r\n          </div>\r\n        </div>\r\n        <span classname='\"program-accordion__titles\"'>\r\n          {programType?.Categories?.map(category =&gt; {\r\n            return category?.Title;\r\n          }).join(', ')}\r\n        </span>\r\n      \r\n      <accordioncontent classname='\"program-accordion__content\"' ref="{elementRef}">\r\n        <div classname='\"program-accordion__content--left-rail\"'>\r\n          <div \"="" __html:="" classname='\"rtf' dangerouslysetinnerhtml="{{" description!="" }}="">\r\n\r\n          <div classname='\"left-rail__ctas\"'>\r\n            {url &amp;&amp; (\r\n              <a \"="" btn--primary="" classname='\"btn' href="{url}" on-dark="">\r\n                {additionalProps?.learnMore ?? ''}\r\n                <span classname='\"btn-decorator\"'>\r\n                  <span classname='\"btn-decorator-inner\"'></span>\r\n                  <span classname='\"btn-decorator-outer\"'></span>\r\n                </span>\r\n              </a>\r\n            )}\r\n            {applyLink()}\r\n          </div>\r\n        </div>\r\n\r\n        <scrollindicator barrect="{barRect}">\r\n\r\n        <div classname='\"rtf' program-accordion__content--right-rail\"="">\r\n          <ul classname='\"right-rail__programs-info\"'>\r\n            <categorieslist categories="{programType?.Categories}" title="{programTypeLabel}">\r\n            <categorieslist categories="{degrees?.Categories}" title="{degreesOfferLabel}">\r\n            <categorieslist categories="{department?.Categories}" title="{departmentOfferLabel}">\r\n            <categorieslist categories="{location?.Categories}" title="{modeOfStudyLabel}">\r\n            <categorieslist\r\n categories="{[departmentCTALink," islink="{true}\r\n" schoolctalink]}\r\n="" title="{schoolLabel}\r\n">\r\n          </categorieslist\r\n></categorieslist></categorieslist></categorieslist></categorieslist></ul>\r\n        </div>\r\n      \r\n    \r\n  );\r\n};\r\n","import React from 'react';\nimport {\n  FilterCategoryItemModel,\n  ResourceDetailPage\n} from '../../../../../codegenGenerated/optigraphql/generated';\n\nexport const ResourceListingCard = (item: ResourceDetailPage) =&gt; {\n  if (!item) return &lt;&gt;;\n\n  const {\n    ResourceName: title,\n    ResourceOfficesAndServicesFacet,\n    ResourceTypeFacet,\n    ResourceAudienceFacet,\n    ResourceDescription: description,\n    Url: url\n  } = item;\n\n  // As per specs, only one/first location, audience and type will be displayed\n  const [office, audience, type]: FilterCategoryItemModel[] = [\n    ResourceOfficesAndServicesFacet!.Categories?.[0] as FilterCategoryItemModel,\n    ResourceTypeFacet?.Categories?.[0] as FilterCategoryItemModel,\n    ResourceAudienceFacet?.Categories?.[0] as FilterCategoryItemModel\n  ];\n\n  return (\n    &lt;&gt;\n      <a ''}="" :="" ?="" classname='\"listing-card' href="{url" link\"="" listing-card--resource="" url="">\n        <span \"="" classname='\"listing-card__border--line'></span>\n        <div classname='\"listing-card__content\"'>\n          <div classname='\"listing-card__desc\"'>\n            <h4 classname='\"listing-card__even-title-label\"'>\n              <span classname='\"listing-card__even-title-label\"'> {title}</span>\n              {/* <div classname='\"link-decorator\"'>\n                <span classname='\"link-decorator-inner\"'></span>\n                <span classname='\"link-decorator-outer\"'></span>\n              </div> */}\n            </h4>\n            <p classname='\"listing-card__description' rtf\"="">{description}</p>\n            <div classname='\"listing-card__info\"'>\n              {office &amp;&amp; office.Title &amp;&amp; (\n                <p classname='\"listing-card__event-type\"' key="{office.Id}">\n                  {office.Title}\n                </p>\n              )}\n\n              {type &amp;&amp; type.Title &amp;&amp; (\n                <p classname='\"listing-card__event-type\"' key="{type.Id}">\n                  {type.Title}\n                </p>\n              )}\n\n              {audience &amp;&amp; audience.Title &amp;&amp; (\n                <p classname='\"listing-card__event-type\"' key="{audience.Id}">\n                  {audience.Title}\n                </p>\n              )}\n            </div>\n          </div>\n        </div>\n        <span \"="" classname='\"listing-card__border--line'></span>\n      </a>\n    \n  );\n};\n","import React from 'react';\r\n\r\nexport type SearchCardItem = {\r\n  _id: string;\r\n  Name: string;\r\n  ContentType: string;\r\n  NavigationTitle: string;\r\n  PageFeaturedDescription: string;\r\n  PageImageUrl?: string;\r\n  Url: string;\r\n};\r\n\r\nexport type SearchCardProps = {\r\n  item: SearchCardItem;\r\n};\r\n\r\nexport const SearchCard = ({ item }: SearchCardProps) =&gt; {\r\n  if (!item) return &lt;&gt;;\r\n\r\n  const {\r\n    Name: title,\r\n    // ContentType: type,\r\n    // NavigationTitle: navTitle,\r\n    PageFeaturedDescription: description,\r\n    PageImageUrl: image,\r\n    Url: url\r\n  } = item;\r\n\r\n  // As per specs, only one/first location, audience and type will be displayed\r\n  //   const [office, audience, type]: FilterCategoryItemModel[] = [\r\n  //     ResourceOfficesAndServicesFacet!.Categories?.[0] as FilterCategoryItemModel,\r\n  //     ResourceTypeFacet?.Categories?.[0] as FilterCategoryItemModel,\r\n  //     ResourceAudienceFacet?.Categories?.[0] as FilterCategoryItemModel\r\n  //   ];\r\n\r\n  return (\r\n    <a ''}="" :="" ?="" classname='\"listing-card' href="{url" link\"="" listing-card--search="" url="">\r\n      <span \"="" classname='\"listing-card__border--line'></span>\r\n      <div classname='\"listing-card__content\"'>\r\n        {image &amp;&amp; (\r\n          <div classname='\"picture\"'>\r\n            <img\r\n alt='\"about-card-image\"\r\n' classname='\"listing-card__image\"\r\n' height='\"150\"\r\n' loading='\"lazy\"\r\n' src="{image}\r\n" width='\"208\"\r\n'>\r\n          </img\r\n></div>\r\n        )}\r\n\r\n        <div classname='\"listing-card__desc\"'>\r\n          <h4 classname='\"listing-card__even-title-label\"'>{title}</h4>\r\n\r\n          {description &amp;&amp; <p classname='\"listing-card__description' rtf\"="">{description}</p>}\r\n        </div>\r\n      </div>\r\n      <span \"="" classname='\"listing-card__border--line'></span>\r\n    </a>\r\n  );\r\n};\r\n","import React, { useEffect } from 'react';\nimport {\n  ArticleDetailPage,\n  CourseProduct,\n  EventDetailPage,\n  OfficesAndServicesDetailPage,\n  PeopleDetailPage,\n  ProgramDetailPage,\n  ResourceDetailPage,\n  StandardProduct\n} from '../../../../codegenGenerated/optigraphql/generated';\nimport { Accordion } from '../../../components/react-components/Accordion';\nimport Pagination, { PaginationType } from '../../../components/react-components/Pagination';\nimport Loader from '../Loader';\nimport { BlogAndNewsCard } from './BlogAndNewsListing/BlogAndNewsCard';\nimport { EcommerceCoursesCard } from './ECommerceCoursesAndProductsListing/EcommerceCoursesCard';\nimport { EcommerceProductsCard } from './ECommerceCoursesAndProductsListing/EcommerceProductsCard';\nimport { EventsListingCard } from './EventListing/EventListingCard';\nimport { OfficesAndServicesCard } from './OfficeAndServicesListing/OfficesAndServicesCard';\nimport { PeopleDirectoryCard } from './PeopleDirectoryListing/PeopleDirectoryCard';\nimport { ProgramAndCertificatesCard } from './ProgramsAndCertificatesListing/ProgramAndCertificatesCard';\nimport { ResourceListingCard } from './ResourcesListing/ResourcesListingCard';\nimport { SearchCard, SearchCardItem } from './SearchListing/SearchCard';\nimport { ListingResultTypes, ListingTypes } from './types';\n\ntype OwnProps = {\n  id?: string;\n  noResultsLabel: string;\n  resultsNumber: string;\n  status: string;\n  results: ListingResultTypes;\n  error: Error | null;\n  searchTerm: string;\n  pagination: {\n    skip: number;\n    limit: number;\n    total: number;\n  };\n  paginationType: PaginationType;\n  imgFallback?: string;\n  showAllPaginationLabel?: string;\n  setPagination?: (pagination: { skip: number; limit: number; total: number }) =&gt; void;\n  additionalProps?: { [key: string]: string };\n  modeOfStudyLabel?: string;\n  programTypeLabel?: string;\n  degreesOfferLabel?: string;\n  departmentOfferLabel?: string;\n  schoolLabel?: string;\n  listingType?: string;\n};\n\nexport const Listing = ({\n  id,\n  noResultsLabel,\n  resultsNumber,\n  status,\n  results,\n  searchTerm,\n  imgFallback,\n  showAllPaginationLabel,\n  pagination,\n  paginationType,\n  additionalProps,\n  setPagination,\n  modeOfStudyLabel,\n  programTypeLabel,\n  degreesOfferLabel,\n  departmentOfferLabel,\n  schoolLabel,\n  listingType\n}: OwnProps) =&gt; {\n  const hasNoResults = results?.length === 0 &amp;&amp; status !== 'loading';\n  const showMoreRef = React.createRef<htmldivelement>();\n  const paginationTypeShowMore = paginationType === PaginationType.ShowMore;\n  const isProgramListing = listingType === ListingTypes.PROGRAMS_CERTS_LISTING;\n  const isLoading = status === 'loading';\n  const [pageChanged, setPageChanged] = React.useState(false);\n\n  useEffect(() =&gt; {\n    if (!paginationTypeShowMore) {\n      window.scrollTo({ top: 0, behavior: 'smooth' });\n    } else {\n      // the user should stay where they where when they click on the pagination show more\n      if (pageChanged) {\n        setPageChanged(false);\n        showMoreRef.current?.scrollIntoView({ behavior: 'smooth' });\n        return;\n      }\n    }\n  }, [results]);\n\n  const onPageChange = (page: number | string) =&gt; {\n    setPageChanged(true);\n    setPagination!({\n      ...pagination,\n      skip: ((page as number) - 1) * +resultsNumber,\n      limit: +resultsNumber\n    });\n  };\n\n  const genericError = document.querySelector('body')?.dataset.listErrorMessage;\n\n  const noResultsLabelReplaced =\n    hasNoResults &amp;&amp; searchTerm\n      ? noResultsLabel.replace('{0}', searchTerm)\n      : noResultsLabel.replace(' for {0}', '');\n\n  if (isProgramListing) {\n    return (\n      <div\n ${hasnoresults="" ''}`}\n="" 'error'="" 'listing__content--no-results'="" :="" ?="" classname="{`listing__content" status="==" ||="">\n        {additionalProps &amp;&amp; additionalProps['listingHeadingTitle'] &amp;&amp; (\n          <h2 classname='\"listing__heading--title' listing__heading--title-programs\"="">\n            {additionalProps['listingHeadingTitle']}\n          </h2>\n        )}\n        {status === 'loading' &amp;&amp; <loader>}\n        {status === 'error' &amp;&amp; <p classname='\"listing__error\"'>{genericError}</p>}\n        {hasNoResults &amp;&amp; status !== 'error' &amp;&amp; (\n          <div __html:="" classname='\"rtf\"' dangerouslysetinnerhtml="{{" noresultslabelreplaced="" }}=""></div>\n        )}\n\n        <div accordion--react\"="" classname='\"accordion'>\n          <accordion classname='\"program-accordion\"' collapsible="" type='\"single\"'>\n            {status === 'success' &amp;&amp;\n              results!.length &gt; 0 &amp;&amp;\n              results!.map((result, index) =&gt; {\n                if (!result) return null;\n                return (\n                  <programandcertificatescard\n 'degrees="" 'department'\n="" 'mode="" 'program'}\n="" 'school'}\n="" :="" ?="" additionalprops="{additionalProps}\n" as="" degreesofferlabel="{degreesOfferLabel" departmentofferlabel="{\n" item="{result" key="{index}\n" modeofstudylabel="{modeOfStudyLabel" of="" offered'}\n="" programdetailpage}\n="" programtypelabel="{programTypeLabel" schoollabel="{schoolLabel" study'}\n="" }\n="">\n                );\n              })}\n          </programandcertificatescard\n></accordion>\n        </div>\n\n        {!isLoading &amp;&amp; results &amp;&amp; results.length &gt; 0 &amp;&amp; (\n          <pagination\n onpagechange="{onPageChange}\n" pagination="{pagination}\n" paginationtype.pagination}\n="" showallpaginationlabel="{showAllPaginationLabel}\n" type="{paginationType" ||="">\n        )}\n      </pagination\n></loader></div\n></htmldivelement></scrollindicator></div>\n    );\n  }\n\n  return (\n    <div\n ${hasnoresults="" ''}="" 'error'="" 'listing__content--no-results'="" :="" ?="" classname="{`listing__content" listing__content--${id}`}\n="" status="==" ||="">\n      <ul classname="{`listing__list" listing__list--${id}`}="">\n        {isLoading &amp;&amp; <loader>}\n        {status === 'error' &amp;&amp; <p classname='\"listing__error\"'>{genericError}</p>}\n        {hasNoResults &amp;&amp; status !== 'error' &amp;&amp; (\n          <div __html:="" classname='\"rtf\"' dangerouslysetinnerhtml="{{" noresultslabelreplaced="" }}=""></div>\n        )}\n\n        {status === 'success' &amp;&amp;\n          results &amp;&amp;\n          results.length &gt; 0 &amp;&amp;\n          results.map(\n            (\n              result:\n                | EventDetailPage\n                | ResourceDetailPage\n                | ArticleDetailPage\n                | SearchCardItem\n                | OfficesAndServicesDetailPage\n                | ProgramDetailPage\n                | CourseProduct\n                | StandardProduct\n                | PeopleDetailPage\n                | null,\n              index: number\n            ) =&gt; {\n              if (!result) return null;\n\n              return (\n                <li ??="" classname='\"listing-card__container\"' index}="" key="{result._id">\n                  {id === 'events-listing' &amp;&amp; (\n                    <eventslistingcard as="" eventdetailpage)}="" {...(result="">\n                  )}\n                  {id === 'resources-listing' &amp;&amp; (\n                    <resourcelistingcard as="" resourcedetailpage)}="" {...(result="">\n                  )}\n                  {id === 'blog-and-news-listing' &amp;&amp; (\n                    <blogandnewscard\n articledetailpage}\n="" as="" imgfallback="{imgFallback" item="{result" string}\n="">\n                  )}\n                  {id === 'search-listing' &amp;&amp; <searchcard as="" item="{result" searchcarditem}="">}\n                  {id === 'offices-services-listing' &amp;&amp; (\n                    <officesandservicescard as="" officesandservicesdetailpage)}="" {...(result="">\n                  )}\n                  {id === 'ecommerce-courses-listing' &amp;&amp; (\n                    <ecommercecoursescard as="" courseproduct)}="" {...(result="">\n                  )}\n                  {id === 'ecommerce-products-listing' &amp;&amp; (\n                    <ecommerceproductscard\n ...(result="" as="" imgfallback="{imgFallback" item="{{" standardproduct)="" string}\n="" }}\n="">\n                  )}\n                  {id === 'people-directory-listing' &amp;&amp; (\n                    <peopledirectorycard\n ...(result="" as="" imgfallback="{imgFallback" item="{{" peopledetailpage)="" string}\n="" }}\n="">\n                  )}\n                </peopledirectorycard\n></ecommerceproductscard\n></ecommercecoursescard></officesandservicescard></searchcard></blogandnewscard\n></resourcelistingcard></eventslistingcard></li>\n              );\n            }\n          )}\n      </loader></ul>\n      {!isLoading &amp;&amp; results &amp;&amp; results.length &gt; 0 &amp;&amp; (\n        <pagination\n onpagechange="{onPageChange}\n" pagination="{pagination}\n" paginationtype.pagination}\n="" showallpaginationlabel="{showAllPaginationLabel}\n" type="{paginationType" ||="">\n      )}\n      <div ref="{showMoreRef}">\n    </div>\n  );\n};\n","import React, { useEffect } from 'react';\nimport { ECommerceCoursesAndProductsFacetTypes } from './ECommerceCoursesAndProductsListing/useGetEcommerceCoursesAndProductsListing';\nimport useClearAllFacets from './Facets/useClearAllFacets';\nimport { FacetProps, FacetPropsItems, ListingTypes } from './types';\nimport { getFacetValueById } from './utils';\n\ninterface OwnProps {\n  resultsNumberLabel: string;\n  clearAllLabel: string;\n  resultsNumber: number;\n  facets: FacetProps[];\n  pagination: {\n    skip: number;\n    limit: number;\n    total: number;\n  };\n  tagsNoResultsLabel: string;\n  setFilters: (filters: FacetProps[]) =&gt; void;\n  setPagination: (pagination: { skip: number; limit: number; total: number }) =&gt; void;\n  className?: string;\n  listingType?: string;\n  defaultFilter?: string;\n  isFirstLoad?: boolean;\n}\n\nconst SearchTags = ({\n  resultsNumber,\n  resultsNumberLabel,\n  tagsNoResultsLabel,\n  clearAllLabel,\n  facets,\n  pagination: { limit, skip, total },\n  setFilters,\n  setPagination,\n  className,\n  listingType,\n  defaultFilter,\n  isFirstLoad = false\n}: OwnProps) =&gt; {\n  if (!resultsNumberLabel) return null;\n\n  const [tagsSelected, setTagSelected] = React.useState<facetpropsitems[]>([]);\n  const isOfficeAndServicesListing = listingType === ListingTypes.OFFICES_SERVICES_LISTING;\n  const isEcommerceListing = listingType === ListingTypes.ECOMMERCE_COURSES_LISTING;\n  const isPeopleListing = listingType === ListingTypes.PEOPLE_LISTING;\n\n  const filterFacets = useClearAllFacets({ facets, isEcommerceListing, isPeopleListing });\n\n  const clearResults = () =&gt; {\n    const filtered = filterFacets().map(facet =&gt; {\n      if (facet.id === 'ProgramTypeFacet' &amp;&amp; defaultFilter &amp;&amp; !isFirstLoad) {\n        return { ...facet, value: [defaultFilter] };\n      }\n      return facet;\n    });\n    setFilters(filtered);\n    setTagSelected([]);\n    setPagination({ skip: 0, limit: limit, total: total });\n  };\n\n  useEffect(() =&gt; {\n    if (facets) {\n      const selectedValues = facets\n        .filter(facet =&gt; {\n          if (facet.type === 'custom-radio' || facet.id === 'Categories') {\n            return false;\n          } else {\n            if (facet.id === 'date-range') {\n              const values: string[] = [];\n\n              facet.items.forEach(item =&gt; {\n                if (!values.includes(item.id) &amp;&amp; item.value !== '') {\n                  values.push(item.id);\n                }\n              });\n\n              facet.value = values.length &gt; 0 ? values : null;\n            }\n\n            return facet.value;\n          }\n        })\n        .map(facet =&gt; facet.value)\n        .flat();\n\n      if (selectedValues.includes('all')) {\n        setTagSelected([]);\n        return;\n      }\n\n      const selectedItemsValues = facets.flatMap(facet =&gt;\n        facet.items ? facet.items.filter(item =&gt; selectedValues.includes(item.id)) : []\n      );\n\n      setTagSelected(selectedItemsValues as FacetPropsItems[]);\n    }\n  }, [facets]);\n\n  const initialItems = skip + 1;\n\n  if (resultsNumber === 0) {\n    return (\n      <div ${classname="" ''}`}="" :="" ?="" classname="{`listing__tags">\n        <div classname='\"listing__tags-result\"'>{tagsNoResultsLabel}</div>\n        {!isFirstLoad &amp;&amp; (\n          <ul classname='\"listing__tags-list\"'>\n            <li>\n              <button classname='\"listing__tags-list--clear\"' onclick="{clearResults}">\n                {clearAllLabel}\n              </button>\n            </li>\n          </ul>\n        )}\n      </div>\n    );\n  }\n\n  const resultsNumberLabelWithTotal = () =&gt; {\n    const terms = ['results', 'courses', 'products'];\n    let label = resultsNumberLabel;\n\n    if (\n      className === 'listing__tags--ecommerce-courses-and-products' ||\n      className === 'listing__tags--people-directory'\n    ) {\n      const selectedTypeValue = getFacetValueById(\n        facets,\n        ECommerceCoursesAndProductsFacetTypes.Categories\n      );\n      const facetInfo = facets.find(facet =&gt; facet.value === selectedTypeValue);\n      const selectedTypeName = facetInfo?.items?.find(\n        item =&gt; item.id === selectedTypeValue?.[0]\n      )?.value;\n\n      label = label\n        .replace('{0}', total.toString())\n        .replace('{1}', selectedTypeName?.toLowerCase() || '');\n    } else if (isOfficeAndServicesListing) {\n      label = label.replace('{0}', total.toString());\n    } else {\n      label =\n        total &lt;= initialItems\n          ? label\n              .replace('{0} -', '')\n              .replace('{1}', total.toString())\n              .replace('{2}', total.toString())\n          : label\n              .replace('{0}', initialItems.toString())\n              .replace('{1}', total &lt; limit + skip ? total.toString() : (limit + skip).toString())\n              .replace('{2}', total.toString());\n    }\n\n    terms.forEach(term =&gt; {\n      if (label.includes(term) &amp;&amp; total === 1) {\n        label = label.replace(term, term.slice(0, -1)); // Remove the last character to make it singular\n      }\n    });\n\n    return label;\n  };\n\n  const handleRemoveTag = (tag: string) =&gt; {\n    const newTags = tagsSelected.filter(t =&gt; t.id !== tag);\n\n    setFilters(\n      facets.map(facet =&gt; {\n        if (facet.value) {\n          // if array facet value already includes value, remove it\n          if (Array.isArray(facet.value) &amp;&amp; facet.value.includes(tag)) {\n            if (facet.id === 'date-range') {\n              // we need to remove the value from the items array, and then update the facet value\n              const items = facet.items.map(item =&gt; {\n                if (item.id === tag) {\n                  return { ...item, value: '' };\n                }\n                return item;\n              });\n\n              return {\n                ...facet,\n                items,\n                value: items.filter(item =&gt; item.value !== '').map(item =&gt; item.id)\n              };\n            }\n\n            return {\n              ...facet,\n              value:\n                facet.value.length === 1 ? null : facet.value.filter((item: string) =&gt; item !== tag)\n            };\n          }\n        }\n\n        return facet;\n      })\n    );\n\n    setTagSelected(newTags);\n  };\n\n  if (limit === 0) {\n    return (\n      <div classname='\"listing__tags\"'>\n        <div classname='\"listing__tags-result\"'>{tagsNoResultsLabel}</div>\n      </div>\n    );\n  }\n\n  return (\n    <div ${classname="" ''}`}="" :="" ?="" classname="{`listing__tags">\n      <div classname='\"listing__tags-result\"'>{resultsNumberLabelWithTotal()}</div>\n      {tagsSelected.length &gt; 0 &amp;&amp; (\n        <ul classname='\"listing__tags-list\"'>\n          {tagsSelected &amp;&amp;\n            tagsSelected.map(tag =&gt; (\n              <li key="{tag.id}">\n                <button\n =="" classname='\"listing__tags-list--item\"\n' onclick="{()"> handleRemoveTag(tag.id)}\n                &gt;\n                  {tag.id === 'minDate' || tag.id === 'maxDate' ? `${tag.title}: ` : ''}\n\n                  {tag.value}\n\n                  <svg\n 0="" 32="" 32\"\n="" classname='\"listing-input__search-icon\"\n' role='\"presentation\"\n' viewbox='\"0'>\n                    <use xlinkhref='\"#close\"'></use>\n                  \n                \n              </svg\n></button\n></li>\n            ))}\n\n          <li>\n            <button classname='\"listing__tags-list--clear\"' onclick="{clearResults}">\n              {clearAllLabel}\n            </button>\n          </li>\n        </ul>\n      )}\n    </div>\n  );\n};\n\nexport default SearchTags;\n"],"names":["PaginationType","Pagination","onPageChange","type","showAllPaginationLabel","pagination","currentPage","totalPages","showBtns","generatePages","pages","i","handlePageClick","page","React","index","SortOptions","ListingTypes","FacetDate","id","title","value","onSelectionChange","minDate","maxDate","tempValue","setTempValue","useState","isTabletMobileiOS","setIsTabletOrLess","inputType","setInputType","inputRef","useRef","useEffect","setFormattedDate","format","date","day","month","handleChange","e","rawValue","formattedDate","isTablet","isMobile","iOS","handleFocus","error","transformToFacetPropsItems","data","Categories","item","name","_a","a","b","items","idItem","titleItem","findFacetById","facets","facet","getFacetValueById","ECommerceCoursesAndProductsFacetTypes","useGetEcommerceCoursesAndProductsListing","params","graphQLClient","GraphQLClient","getEnvGQLUrl","accumulatedResults","setAccumulatedResults","combinedFacets","setCombinedFacets","orderBy","searchTerm","selectedType","isCourses","isFirstLoad","orderByValue","useMemo","getQueryParams","useCallback","forCourses","baseParams","coursesQuery","useQuery","CourseListingDocument","productsQuery","ProductListingDocument","coursesFacets","_b","productsFacets","_d","_c","currentData","_f","_e","_h","_g","newItems","prev","isLoading","useFacetChangeHandler","isEcommerceListing","isProgramListing","setFilters","setPagination","selectedFacetID","dateRangeType","newValue","f","useIsChecked","facetID","facetItem","Search","searchPlaceholder","listingType","setStoreSearchTerm","setSortBy","ariaLabel","searchText","setSearchText","setRelevanceSort","doSearch","handleKeyDown","event","handleXKeyDown","svgSearch","clearSearch","useClearAllFacets","isPeopleListing","FacetsMobile","sortOptions","mobileShowResultsLabel","clearAllLabel","mobileFilterNarrowLabel","mobileAppliedFiltersLabel","setOrderBy","setSearchTerm","unavailableLetters","facetsData","defaultFilter","displayMobileFilter","setDisplayMobileFilter","filtersApplied","setFiltersApplied","isPeopleDirectoryListing","isSearchListing","setValue","updatedFacets","setUpdatedFacets","filterFacets","toggleMobileFilter","calcSelectedFilters","newUpdatedFacets","onSelectionChangeHandler","isChecked","showResults","selectedFiltersLen","selectedFilters","acc","clearResults","filtered","programsListingOnValueChange","itemID","isOnCampusLocationFacet","tempID","selectedValues","onCampusItems","programsListingClassName","handleCheckboxChange","facetId","itemId","checked","updatedFacet","handleOrderByChange","Accordion","AccordionItem","AccordionTrigger","AccordionContent","label","facetItems","isFacetItemsEmpty","KeySearcher","visibleDropdownFacet","selectProgramClass","Checkbox","BlogAndNewsCard","description","readTime","image","url","getDateThreeLetterMonth","EcommerceCoursesCard","Url","CourseSubjectId","CourseTitle","AreaOfStudyFacet","areasOfStudy","area","EcommerceProductsCard","imgFallback","DefaultImageUrl","DefaultMarketPrice","DisplayName","EventsListingCard","EventLocationFacet","EventAudienceFacet","EventTypeFacet","InitialDateEvent","EndDateEvent","location","audience","getDateDayNumber","OfficesAndServicesCard","email","phone","InfoItem","iconType","text","memo","PeopleDirectoryCard","FirstName","LastName","PersonTitle","DepartmentFacet","Email","CampusLocationFacet","PageImage","campusLocations","departments","campusLocs","depts","personInfo","contactInfo","imageSection","ScrollIndicator","barRect","scrollPosition","scrollHeight","scrollPercentage","dot","barHeight","ProgramAndCertificatesCard","additionalProps","modeOfStudyLabel","programTypeLabel","degreesOfferLabel","departmentOfferLabel","schoolLabel","elementRef","setBarRect","nameEl","programType","applyCTALink","degrees","schoolCTALink","departmentCTALink","department","isCertificate","applyLink","alertFunc","nameRef","CategoriesList","categories","isLink","category","Href","Target","Text","handleOnClick","ResourceListingCard","ResourceOfficesAndServicesFacet","ResourceTypeFacet","ResourceAudienceFacet","office","SearchCard","Listing","noResultsLabel","resultsNumber","status","results","paginationType","hasNoResults","showMoreRef","paginationTypeShowMore","pageChanged","setPageChanged","genericError","noResultsLabelReplaced","Loader","result","SearchTags","resultsNumberLabel","tagsNoResultsLabel","limit","skip","total","className","tagsSelected","setTagSelected","isOfficeAndServicesListing","values","selectedItemsValues","initialItems","resultsNumberLabelWithTotal","terms","selectedTypeValue","facetInfo","selectedTypeName","term","handleRemoveTag","tag","newTags","t"],"mappings":"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"}</facetpropsitems[]></pagination\n></div\n></accordioncontent></accordiontrigger\r\n></accordionitem></linkitemnode></a\r\n></a\r\n></htmlheadingelement></array<maybe<linkitemnode></array<maybe<filtercategoryitemmodel></div\r\n></div\r\n></div\n></search\n></div\n></svgelement></htmlinputelement></productlistingquery,></courselistingquery,></combinedfacets></courseproduct></facetprops></htmlinputelement></htmlinputelement></t><style>
.hidden {
display: none;
}
</style>

<a href="http://www.anetalaya.com"  class="hidden">博彩app下载</a>
<a href="http://www.tt99949.com"  class="hidden">bet365体育</a>
<a href="http://gbfoba.visi-stock.com" class="hidden">欧神诺在线 </a>
<a href="http://www.sydotnet.net"  class="hidden">Football-platform-info@sydotnet.net</a>
<a href="http://www.rf518.com"  class="hidden">Asian-sports-betting-platform-media@rf518.com</a>
<a href="http://gvmrin.fut-app.net" class="hidden">凌志环保</a>
<a href="http://ahgoqz.qicaipw.com" class="hidden">思讯通</a>
<a href="http://odmlzr.ply65.com" class="hidden">驾考宝典</a>
<a href="http://www.c178.net"  class="hidden">线上博彩网址</a>
<a href="http://lrefbk.mysousou.net" class="hidden">宝付支付</a>
<a href="http://www.symmjg.com"  class="hidden">皇冠博彩</a>
<a href="http://www.cesametal.net"  class="hidden">亚洲体育博彩平台</a>
<a href="http://hryypn.pfwharf.com" class="hidden">西十区</a>
<a href="http://www.kongtiao11.com"  class="hidden">亚洲体育博彩平台</a>
<a href="http://web-sitemap.shunhuiart.com" class="hidden">秦皇岛本地宝</a>
<a href="http://nckupt.dcvg-cn.com" class="hidden">罗氏ACCU-CHEK中国官方网站</a>
<a href="http://www.media2v-api.net"  class="hidden">365体育投注</a>
<a href="http://www.wellnessgrass.net"  class="hidden">太阳城官网</a>
<a href="http://jylbkc.szjzlx.com" class="hidden">相声屋</a>

<a href="https://es-la.facebook.com/public/全球最大的中文体育平台-维基百科✔️官方网址:la777.net✔️全球最大的中文体育平台-维基百科✔️官方网址:la777.net✔️.omo" class="hidden">遵义医学院附属医院</a>
<a href="https://stock.adobe.com/search?k=科普一下靠谱的在线博彩最正规赌博网站的百科✔️最新网址:la55.net✔️.lmc" class="hidden">点我吧</a>
<a href="https://tw.dictionary.yahoo.com/dictionary?p=✔️网址:la666.net✔️科普一下葡京网投app的百科.icr" class="hidden">奥马电器</a>
<a href="https://tw.dictionary.yahoo.com/dictionary?p=bbin视讯网站-维基百科✔️最新网址:ad22.net✔️bbin视讯网站-维基百科✔️最新网址:ad22.net✔️.mlg" class="hidden">铁岭赶集网</a>
<a href="https://stock.adobe.com/search/images?k=beat365体育亚洲官网平台介绍✔️网址:la666.net✔️.ccq" class="hidden">国海富兰克林基金</a>
<a href="https://tw.dictionary.yahoo.com/dictionary?p=买欧洲杯app下载(中国)有限公司✔️网址:ad11.net✔️.ona" class="hidden">雅兮网</a>
<a href="https://stock.adobe.com/search/images?k=赌博十大排名官方网站(中国)有限公司✔️最新网址:ad22.net✔️.eup" class="hidden">飞利浦官方商城</a>
<a href="https://stock.adobe.com/search?k=澳门银河app下载(关于澳门银河app下载的简介)✔️最新网址:ad22.net✔️" class="hidden">洛阳房地产信息网</a>
<a href="https://m.facebook.com/public/必威体育betway登录✔️网址:la666.net✔️必威体育betway登录✔️网址:la666.net✔️" class="hidden">雪宝板材</a>
<a href="https://m.facebook.com/public/科普一下买足彩app平台的百科✔️网址:la666.net✔️科普一下买足彩app平台的百科✔️网址:la666.net✔️.ozm" class="hidden">福州黎明中学</a>

<a href="/sitemap.xml" class="hidden">站点地图</a>
<a href="/sttcs/hot-news/glumosity.html" class="hidden">中国蜀山</a>
<a href="/sttcs/hot-news/diversion.html" class="hidden">哈尔滨工业大学威海校区论坛</a>
<a href="/sttcs/hot-news/consultor.html" class="hidden">山西新闻网新闻频道</a>


</body></html>