{"version":3,"file":"index-BMW1qoKc.js","sources":["../../src/scripts/modules/react-modules/Listings/PeopleDirectoryListing/useGetPeopleDirectoryListing.ts","../../src/scripts/modules/react-modules/Listings/PeopleDirectoryListing/index.tsx"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { GraphQLClient } from 'graphql-request';\nimport { useEffect, useState, useMemo } from 'react';\nimport {\n  PeopleDetailPage,\n  PeopleDirectoryListingDocument,\n  PeopleDirectoryListingQuery\n} from '../../../../../codegenGenerated/optigraphql/generated';\nimport { getEnvGQLUrl } from '../../../../helpers';\nimport { ListingParams } from '../types';\nimport { getFacetValueById } from '../utils';\n\nexport enum PeopleDirectoryFacetTypes {\n  Categories = 'Categories',\n  DepartmentFacet = 'DepartmentFacet',\n  LetterFacet = 'LetterFacet'\n}\n\nexport type LastNameFacet = {\n  name: string;\n  count: number;\n};\n\nconst graphQLClient = new GraphQLClient(getEnvGQLUrl());\n\nexport const useGetPeopleDirectoryListing = (params?: ListingParams) => {\n  const [accumulatedResults, setAccumulatedResults] = useState<PeopleDetailPage[]>([]);\n  const [totalCount, setTotalCount] = useState(0);\n\n  const { orderBy, pagination, searchTerm, facets = [] } = params || {};\n\n  const orderByValue = useMemo(() => {\n    if (!orderBy) return {};\n    if (searchTerm !== '') return { _ranking: 'SEMANTIC' };\n\n    switch (orderBy) {\n      case 'RELEVANCE':\n        return { _ranking: 'SEMANTIC' };\n      case 'ASC':\n        return { StartPublish: 'ASC', _ranking: 'SEMANTIC' };\n      case 'DESC':\n        return { StartPublish: 'DESC', _ranking: 'SEMANTIC' };\n      case 'A-Z':\n        return { LastName: 'ASC', FirstName: 'ASC', _ranking: 'SEMANTIC' };\n      default:\n        return {};\n    }\n  }, [orderBy, searchTerm]);\n\n  const queryParams = useMemo(\n    () => ({\n      numberOfResults: pagination?.limit || 10,\n      skip: pagination?.skip || 0,\n      searchTerm: searchTerm === '' ? null : searchTerm,\n      searchTermBoost: searchTerm ? `%${searchTerm}%` : null,\n      peopleGroup:\n        facets?.[0]?.value?.includes('all') || facets?.[0]?.value?.includes('')\n          ? null\n          : facets?.[0]?.value?.[0],\n      departmentFacet: facets\n        ? getFacetValueById(facets, PeopleDirectoryFacetTypes.DepartmentFacet)\n        : null,\n      letter: facets ? getFacetValueById(facets, PeopleDirectoryFacetTypes.LetterFacet) : null,\n      orderBy: orderByValue\n    }),\n    [pagination?.limit, pagination?.skip, searchTerm, facets, orderByValue]\n  );\n\n  const queryKey = useMemo(() => ['peopleDirectory', queryParams], [queryParams]);\n\n  const { isLoading, error, data } = useQuery({\n    queryKey,\n    queryFn: async () => {\n      return graphQLClient.request(\n        PeopleDirectoryListingDocument,\n        queryParams\n      ) as PeopleDirectoryListingQuery;\n    },\n    refetchOnWindowFocus: false\n  });\n\n  useEffect(() => {\n    if (data?.PeopleDetailPage?.items) {\n      const newItems = (data.PeopleDetailPage.items as PeopleDetailPage[]).filter(\n        (item): item is PeopleDetailPage => item !== null\n      );\n\n      // Reset results if any parameter except pagination.skip has changed\n      const shouldReset = !pagination?.skip || pagination.skip === 0;\n\n      if (shouldReset) {\n        setAccumulatedResults(newItems);\n      } else {\n        setAccumulatedResults(prev => [...prev, ...newItems]);\n      }\n\n      // Update total count when we get new data\n      const total = data.PeopleDetailPage.total;\n      if (typeof total === 'number') {\n        setTotalCount(total);\n      }\n    }\n  }, [data, pagination?.skip]);\n\n  return {\n    status: error ? 'error' : isLoading ? 'loading' : 'success',\n    error: error as Error,\n    results: accumulatedResults,\n    total: totalCount,\n    facets: data?.PeopleDetailPage?.facets ?? {}\n  };\n};\n","import React, { useState, useRef, useEffect } from 'react';\nimport {\n  FilterCategoryModelFacet,\n  PeopleDetailPage,\n  PeopleDetailPageFacet\n} from '../../../../../codegenGenerated/optigraphql/generated';\nimport { PaginationType } from '../../../../components/react-components/Pagination';\nimport Facets from '../Facets/Facets';\nimport FacetsMobile from '../Facets/FacetsMobile';\nimport { Listing } from '../Listing';\nimport Search from '../Search';\nimport SearchTags from '../SearchTags';\nimport { FacetPropsItems, ListingCommonProps, ListingTypes, SortOptions } from '../types';\nimport useResetPagination from '../usePaginationShowMoreReset';\nimport { transformToFacetPropsItems } from '../utils';\nimport { LastNameFacet } from './useGetPeopleDirectoryListing';\nimport { useGetPeopleDirectoryListing } from './useGetPeopleDirectoryListing';\nimport { FacetData } from '../Facets/FacetAccordion';\nimport { useListingUrlState } from '../hooks/useListingUrlState';\n\ninterface OwnProps extends ListingCommonProps {\n  facets: string;\n  departmentFacetLabel: string;\n  departmentFacetSearchLabel: string;\n  letterFacetLabel: string;\n  peopleGroupFacetLabel: string;\n  showAllPaginationLabel: string;\n}\n\nconst PeopleDirectoryListingModule = ({\n  noResultsLabel,\n  facets,\n  departmentFacetLabel,\n  departmentFacetSearchLabel,\n  peopleGroupFacetLabel,\n  letterFacetLabel,\n  resultsNumberLabel,\n  showAllPaginationLabel,\n  resultsNumber,\n  clearAllLabel,\n  imgFallback,\n  tagsNoResultsLabel,\n  searchPlaceholder,\n  mobileShowResultsLabel,\n  mobileFilterNarrowLabel,\n  mobileAppliedFiltersLabel\n}: OwnProps) => {\n  const [isFirstLoad, setIsFirstLoad] = useState(true);\n  const [unavailableLetters, setUnavailableLetters] = useState<string[]>([]);\n\n  const [facetsLabel] = useState<FacetPropsItems[]>(JSON.parse(facets));\n\n  const initialFacets = [\n    {\n      id: 'Categories',\n      type: 'custom-radio',\n      title: peopleGroupFacetLabel,\n      items: facetsLabel,\n      value: ['all']\n    },\n    {\n      id: 'DepartmentFacet',\n      type: 'custom-select-search',\n      title: departmentFacetLabel,\n      items: [],\n      value: null\n    },\n    {\n      id: 'LetterFacet',\n      type: 'custom-select-key-search',\n      title: letterFacetLabel,\n      items: [],\n      value: null\n    }\n  ];\n\n  const {\n    searchTerm,\n    orderBy,\n    pagination,\n    facets: facetsStore,\n    setFacets,\n    handleSearchTermChange,\n    handleFacetsChange,\n    handleOrderByChange,\n    handlePaginationChange\n  } = useListingUrlState({\n    defaultLimit: +resultsNumber || 10,\n    initialFacets\n  });\n\n  const facetTitles: { [key: string]: string } = {\n    Categories: peopleGroupFacetLabel,\n    DepartmentFacet: departmentFacetLabel,\n    LetterFacet: letterFacetLabel\n  };\n\n  const {\n    status,\n    results,\n    error,\n    facets: facetsData,\n    total\n  } = useGetPeopleDirectoryListing({\n    pagination: isFirstLoad ? { skip: 0, limit: +resultsNumber, total: 0 } : pagination,\n    orderBy: !isFirstLoad ? orderBy : undefined,\n    searchTerm: !isFirstLoad ? searchTerm : '',\n    facets: !isFirstLoad ? facetsStore : []\n  });\n\n  useEffect(() => {\n    if (total !== pagination.total) {\n      handlePaginationChange({\n        ...pagination,\n        total\n      });\n    }\n  }, [total, pagination, handlePaginationChange]);\n\n  useResetPagination({\n    pagination,\n    resultsLength: results?.length || 0,\n    resultsNumber: +resultsNumber,\n    setPagination: handlePaginationChange\n  });\n\n  const getMissingLetters = (data: LastNameFacet[]) => {\n    const alphabet = Array.from({ length: 26 }, (_, i) => String.fromCharCode(65 + i));\n    const usedLetters = new Set(data.map(item => item?.name?.charAt(0).toUpperCase()));\n    return alphabet.filter(letter => !usedLetters.has(letter));\n  };\n\n  const initialLoadRef = useRef(true);\n\n  useEffect(() => {\n    if (!facetsData) return;\n\n    const facetLastName = facetsData as PeopleDetailPageFacet;\n\n    if (facetLastName?.['LastName']) {\n      setUnavailableLetters(getMissingLetters(facetLastName?.['LastName'] as LastNameFacet[]));\n    }\n\n    const updatedFacets = facetsStore.map(facet => {\n      // Handle custom-radio type first\n      if (facet.type === 'custom-radio') {\n        const items = facetsLabel;\n        const value = Array.isArray(facet.value) ? facet.value : [items[0]?.id || 'all'];\n\n        // Validate if the value exists in items\n        const isValidValue =\n          Array.isArray(value) &&\n          value.every(v => items.some(item => item.id === v || item.value === v));\n\n        return {\n          ...facet,\n          items,\n          value: isValidValue ? value : [items[0]?.id || 'all'],\n          title: facetTitles[facet.id]\n        };\n      }\n\n      // Handle other facet types\n      const facetData = facetsData[facet.id as keyof typeof facetsData];\n      if (facetData) {\n        const items = transformToFacetPropsItems(facetData as FilterCategoryModelFacet);\n\n        let validatedValue = facet.value;\n        if (facet.value && Array.isArray(facet.value)) {\n          const validValues = facet.value.filter((val: string) =>\n            items.some(item => item.id === val || item.value === val)\n          );\n          validatedValue = validValues.length ? validValues : null;\n        }\n\n        return {\n          ...facet,\n          items,\n          value: validatedValue,\n          title: facetTitles[facet.id]\n        };\n      }\n\n      return facet;\n    });\n\n    if (initialLoadRef.current || JSON.stringify(updatedFacets) !== JSON.stringify(facetsStore)) {\n      setFacets(updatedFacets);\n      handlePaginationChange({ ...pagination, skip: 0, limit: +resultsNumber });\n      setIsFirstLoad(false);\n      initialLoadRef.current = false;\n    }\n  }, [\n    facetsData,\n    facets,\n    facetsStore,\n    facetsLabel,\n    facetTitles,\n    pagination,\n    resultsNumber,\n    setFacets,\n    handlePaginationChange\n  ]);\n\n  return (\n    <>\n      <div className=\"listing-heading listing-heading--people-directory\">\n        <div className=\"listing__facets__people-directory-filters-container\">\n          <div className=\"listing__facets listing__facets--people-directory-filters\">\n            {facetsStore\n              .filter(facet => facet.type === 'custom-radio')\n              .map(({ id, type, items, title }) => {\n                return (\n                  <Facets\n                    key={id}\n                    id={id}\n                    type={type}\n                    items={items}\n                    title={title}\n                    isMobile={false}\n                    facets={facetsStore}\n                    setFilters={handleFacetsChange}\n                    pagination={pagination}\n                    setPagination={handlePaginationChange}\n                  />\n                );\n              })}\n          </div>\n\n          <Search\n            searchPlaceholder={searchPlaceholder}\n            setStoreSearchTerm={handleSearchTermChange}\n            searchTerm={searchTerm}\n            pagination={pagination}\n            setPagination={handlePaginationChange}\n            ariaLabel=\"Search for People Directory\"\n          />\n          <div className=\"listing__facets--dropdowns\">\n            {facetsStore\n              .filter(facet => facet.type === 'custom-select-search')\n              .map(({ id, type, items, title }) => {\n                return (\n                  <Facets\n                    key={id}\n                    id={id}\n                    type={type}\n                    items={items}\n                    title={title}\n                    isMobile={false}\n                    facets={facetsStore}\n                    setFilters={handleFacetsChange}\n                    pagination={pagination}\n                    setPagination={handlePaginationChange}\n                    listingType={ListingTypes.PEOPLE_LISTING}\n                    dropdownSearchLabel={departmentFacetSearchLabel}\n                  />\n                );\n              })}\n          </div>\n          <div className=\"listing__facets--dropdowns listing__facets--dropdowns-key-search\">\n            {facetsStore\n              .filter(facet => facet.type === 'custom-select-key-search')\n              .map(({ id, type, items, title }) => {\n                return (\n                  <Facets\n                    key={id}\n                    id={id}\n                    type={type}\n                    items={items}\n                    title={title}\n                    isMobile={false}\n                    facets={facetsStore}\n                    setFilters={handleFacetsChange}\n                    pagination={pagination}\n                    setPagination={handlePaginationChange}\n                    unavailableLetters={unavailableLetters}\n                  />\n                );\n              })}\n          </div>\n        </div>\n        <div className=\"listing-heading__results\">\n          <SearchTags\n            resultsNumberLabel={resultsNumberLabel}\n            tagsNoResultsLabel={tagsNoResultsLabel}\n            resultsNumber={total}\n            pagination={{ ...pagination, total }}\n            facets={facetsStore}\n            setFilters={handleFacetsChange}\n            clearAllLabel={clearAllLabel}\n            setPagination={handlePaginationChange}\n            className={'listing__tags--people-directory'}\n            listingType={ListingTypes.PEOPLE_LISTING}\n          />\n        </div>\n      </div>\n\n      <Listing\n        id={'people-directory-listing'}\n        noResultsLabel={noResultsLabel}\n        resultsNumber={resultsNumber}\n        status={status}\n        results={results as PeopleDetailPage[]}\n        error={error}\n        searchTerm={searchTerm}\n        imgFallback={imgFallback}\n        showAllPaginationLabel={showAllPaginationLabel}\n        setPagination={handlePaginationChange}\n        pagination={{ ...pagination, total }}\n        paginationType={PaginationType.ShowMore}\n      />\n\n      <FacetsMobile\n        facetsData={facetsData as FacetData}\n        mobileFilterNarrowLabel={mobileFilterNarrowLabel}\n        mobileAppliedFiltersLabel={mobileAppliedFiltersLabel}\n        mobileShowResultsLabel={mobileShowResultsLabel}\n        facets={facetsStore}\n        setFilters={handleFacetsChange}\n        setOrderBy={handleOrderByChange}\n        orderBy={orderBy}\n        pagination={pagination}\n        defaultSortValue={SortOptions.AZ}\n        clearAllLabel={clearAllLabel}\n        sortOptions={[]}\n        setPagination={handlePaginationChange}\n        listingType={ListingTypes.PEOPLE_LISTING}\n        dropdownSearchLabel={departmentFacetSearchLabel}\n        unavailableLetters={unavailableLetters}\n      />\n    </>\n  );\n};\n\nexport default PeopleDirectoryListingModule;\n"],"names":["graphQLClient","GraphQLClient","getEnvGQLUrl","useGetPeopleDirectoryListing","params","accumulatedResults","setAccumulatedResults","useState","totalCount","setTotalCount","orderBy","pagination","searchTerm","facets","orderByValue","useMemo","queryParams","_b","_a","_d","_c","_f","_e","getFacetValueById","queryKey","isLoading","error","data","useQuery","PeopleDirectoryListingDocument","useEffect","newItems","item","shouldReset","prev","total","PeopleDirectoryListingModule","noResultsLabel","departmentFacetLabel","departmentFacetSearchLabel","peopleGroupFacetLabel","letterFacetLabel","resultsNumberLabel","showAllPaginationLabel","resultsNumber","clearAllLabel","imgFallback","tagsNoResultsLabel","searchPlaceholder","mobileShowResultsLabel","mobileFilterNarrowLabel","mobileAppliedFiltersLabel","isFirstLoad","setIsFirstLoad","unavailableLetters","setUnavailableLetters","facetsLabel","initialFacets","facetsStore","setFacets","handleSearchTermChange","handleFacetsChange","handleOrderByChange","handlePaginationChange","useListingUrlState","facetTitles","status","results","facetsData","useResetPagination","getMissingLetters","alphabet","_","i","usedLetters","letter","initialLoadRef","useRef","facetLastName","updatedFacets","facet","items","value","isValidValue","v","facetData","transformToFacetPropsItems","validatedValue","validValues","val","React","id","type","title","Facets","Search","ListingTypes","SearchTags","Listing","PaginationType","FacetsMobile","SortOptions"],"mappings":"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"}