{"version":3,"file":"index-CHeF-8DP.js","sources":["../../src/scripts/modules/react-modules/Listings/BlogAndNewsListing/useGetBlogAndNewsListing.ts","../../src/scripts/modules/react-modules/Listings/BlogAndNewsListing/index.tsx"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { GraphQLClient } from 'graphql-request';\nimport { useEffect, useRef, useCallback } from 'react';\nimport {\n  BlogAndNewsListingDocument,\n  BlogAndNewsListingQuery\n} from '../../../../../codegenGenerated/optigraphql/generated';\nimport { getEnvGQLUrl } from '../../../../helpers';\nimport { ListingParams } from '../types';\nimport { getFacetValueById } from '../utils';\n\nexport enum BlogFacetTypes {\n  TopicFacet = 'TopicFacet',\n  ContentTypeFacet = 'ContentTypeFacet',\n  CollegeOrSchoolFacet = 'CollegeOrSchoolFacet'\n}\n\nexport const useGetBlogAndNewsListing = (params?: ListingParams) => {\n  const graphQLClient = new GraphQLClient(getEnvGQLUrl());\n  const { orderBy, pagination, searchTerm, facets } = params as ListingParams;\n\n  let orderByValue = {};\n  let startDate = null;\n  let endDate: string | null = null;\n\n  if (facets) {\n    startDate = (facets?.find(f => f.id === 'minDate')?.value as string) || null;\n    endDate = (facets?.find(f => f.id === 'maxDate')?.value as string) || null;\n\n    const adjustedStartDate = new Date(startDate as string);\n    const adjustedEndDate = new Date(endDate as string);\n    if (endDate && adjustedStartDate > adjustedEndDate) {\n      startDate = endDate as string;\n    }\n  }\n\n  if (params) {\n    // Determine orderByValue based on conditions\n    if (searchTerm !== '') {\n      orderByValue = { Date: 'DESC', _ranking: 'SEMANTIC' };\n    } else {\n      switch (orderBy) {\n        case 'RELEVANCE':\n          orderByValue = { _ranking: 'SEMANTIC' };\n          break;\n        case 'ASC':\n          orderByValue = { Date: 'ASC', _ranking: 'SEMANTIC' };\n          break;\n        case 'DESC':\n          orderByValue = { Date: 'DESC', _ranking: 'SEMANTIC' };\n          break;\n        case 'A-Z':\n          orderByValue = { Name: 'ASC', _ranking: 'SEMANTIC' };\n          break;\n      }\n    }\n  }\n\n  const previousParamsRef = useRef<ListingParams | undefined>();\n\n  const hasParamsChanged = () => {\n    if (!previousParamsRef.current) {\n      return true;\n    }\n    const prev = previousParamsRef.current;\n    const orderByChanged = JSON.stringify(prev.orderBy) !== JSON.stringify(params?.orderBy);\n    const paginationChanged =\n      prev.pagination?.skip !== params?.pagination?.skip ||\n      prev.pagination?.limit !== params?.pagination?.limit;\n    const searchTermChanged = prev.searchTerm !== params?.searchTerm;\n    const facetsChanged = JSON.stringify(prev.facets) !== JSON.stringify(params?.facets);\n\n    return orderByChanged || paginationChanged || searchTermChanged || facetsChanged;\n  };\n\n  const { refetch, ...queryResult } = useQuery({\n    queryKey: ['blogAndNews'],\n    queryFn: async () => {\n      previousParamsRef.current = { ...params };\n      return graphQLClient.request(BlogAndNewsListingDocument, {\n        orderBy: orderByValue,\n        numberOfResults: pagination!.limit,\n        skip: pagination!.skip,\n        searchTerm: searchTerm === '' ? null : searchTerm,\n        searchTermBoost: searchTerm ? `%${searchTerm}%` : null,\n        startDate: startDate !== null ? startDate : new Date().toISOString(),\n        endDate,\n        topicFacet: facets ? getFacetValueById(facets, BlogFacetTypes.TopicFacet) : null,\n        contentTypeFacet: facets\n          ? getFacetValueById(facets, BlogFacetTypes.ContentTypeFacet)\n          : null,\n        collegeOrSchoolFacet: facets\n          ? getFacetValueById(facets, BlogFacetTypes.CollegeOrSchoolFacet)\n          : null\n      }) as BlogAndNewsListingQuery;\n    },\n    refetchOnWindowFocus: false\n  });\n\n  useEffect(() => {\n    if (hasParamsChanged()) {\n      refetch();\n    }\n  }, [params, refetch]);\n\n  const getQueryStatus = useCallback(() => {\n    if (queryResult.isLoading) return 'loading';\n    if (queryResult.isError) return 'error';\n    if (queryResult.isSuccess) return 'success';\n    return 'idle';\n  }, [queryResult.isLoading, queryResult.isError, queryResult.isSuccess]);\n\n  const currentStatus = getQueryStatus();\n\n  return {\n    status: currentStatus,\n    error: queryResult.error as Error,\n    results:\n      currentStatus === 'success' && queryResult.data && queryResult.data.ArticleDetailPage?.items\n        ? queryResult.data.ArticleDetailPage.items\n        : [],\n    total:\n      currentStatus === 'success' && queryResult.data && queryResult.data.ArticleDetailPage?.total\n        ? queryResult.data.ArticleDetailPage.total\n        : 0,\n    facets:\n      currentStatus === 'success' && queryResult.data && queryResult.data.ArticleDetailPage?.facets\n        ? queryResult.data.ArticleDetailPage.facets\n        : {}\n  };\n};\n","import React, { useState, useEffect } from 'react';\nimport { ArticleDetailPage } from '../../../../../codegenGenerated/optigraphql/generated';\nimport { PaginationType } from '../../../../components/react-components/Pagination';\nimport FacetAccordion, { FacetData } from '../Facets/FacetAccordion';\nimport FacetsMobile from '../Facets/FacetsMobile';\nimport useFacetChangeHandler from '../Facets/useFacetChangeHandler';\nimport { Listing } from '../Listing';\nimport Search from '../Search';\nimport SearchTags from '../SearchTags';\nimport SelectSort from '../SelectSort';\nimport { ListingCommonProps, ListingTypes, SortOptions } from '../types';\nimport { useGetBlogAndNewsListing } from './useGetBlogAndNewsListing';\nimport { useListingUrlState } from '../hooks/useListingUrlState';\n\ninterface FacetItem {\n  name: string;\n  count: number;\n}\n\ninterface FacetCategory {\n  Categories?: {\n    IdTitle?: FacetItem[];\n  };\n}\n\ninterface BlogFacetsData {\n  [key: string]: FacetCategory;\n}\n\ninterface OwnProps extends ListingCommonProps {\n  blogAndNewsTopicFacetLabel: string;\n  blogAndNewsContentTypeFacetLabel: string;\n  blogAndNewsSchoolFacetLabel: string;\n}\n\nconst BlogAndNewsListing = ({\n  noResultsLabel,\n  tagsNoResultsLabel,\n  searchPlaceholder,\n  resultsNumberLabel,\n  resultsNumber,\n  sortByRelevanceLabel,\n  sortByRecentLabel,\n  sortByAlphabeticalLabel,\n  mobileShowResultsLabel,\n  clearAllLabel,\n  mobileFilterNarrowLabel,\n  mobileAppliedFiltersLabel,\n  minDatePlaceholder,\n  maxDatePlaceholder,\n  blogAndNewsTopicFacetLabel,\n  blogAndNewsContentTypeFacetLabel,\n  blogAndNewsSchoolFacetLabel,\n  imgFallback\n}: OwnProps) => {\n  const [isFirstLoad, setIsFirstLoad] = useState(true);\n\n  const initialFacets = [\n    {\n      id: 'TopicFacet',\n      type: 'accordion',\n      title: blogAndNewsTopicFacetLabel,\n      items: [],\n      value: null\n    },\n    {\n      id: 'ContentTypeFacet',\n      type: 'accordion',\n      title: blogAndNewsContentTypeFacetLabel,\n      items: [],\n      value: null\n    },\n    {\n      id: 'CollegeOrSchoolFacet',\n      type: 'accordion',\n      title: blogAndNewsSchoolFacetLabel,\n      items: [],\n      value: null\n    }\n  ];\n\n  const {\n    searchTerm,\n    orderBy,\n    pagination,\n    facets,\n    setFacets,\n    setPagination,\n    handleSearchTermChange,\n    handleFacetsChange,\n    handleOrderByChange,\n    handlePaginationChange\n  } = useListingUrlState({\n    defaultLimit: +resultsNumber || 10,\n    initialFacets\n  });\n\n  const sortOptions = [\n    {\n      label: sortByRecentLabel,\n      value: SortOptions.DESC\n    },\n    {\n      label: sortByRelevanceLabel,\n      value: SortOptions.RELEVANCE\n    },\n    {\n      label: sortByAlphabeticalLabel,\n      value: SortOptions.AZ\n    }\n  ];\n\n  const {\n    status,\n    results,\n    error,\n    total,\n    facets: facetsData\n  } = useGetBlogAndNewsListing({\n    pagination: isFirstLoad ? { skip: 0, limit: 0, total: 0 } : pagination,\n    orderBy: !isFirstLoad ? orderBy : undefined,\n    searchTerm: !isFirstLoad ? searchTerm : '',\n    facets: !isFirstLoad ? facets : []\n  });\n\n  // Handle initial facets load\n  useEffect(() => {\n    if (facetsData && Object.keys(facetsData).length > 0 && isFirstLoad) {\n      const updatedFacets = facets.map(facet => {\n        const facetData = (facetsData as BlogFacetsData)[facet.id];\n        const facetItems =\n          facetData?.Categories?.IdTitle?.map((item: FacetItem) => {\n            const [id, name] = item.name.split('|');\n            return {\n              id,\n              value: name.trim(),\n              title: name.trim(),\n              count: item.count\n            };\n          }) || [];\n\n        // Clean up invalid facet values\n        const currentValue = facet.value;\n        const validValues = facetItems.map(item => item.id);\n\n        // If no valid values exist, set to null\n        if (!currentValue || !validValues.length) {\n          return {\n            ...facet,\n            items: facetItems,\n            value: null\n          };\n        }\n\n        // Handle array values\n        if (Array.isArray(currentValue)) {\n          const validSelectedValues = currentValue.filter(val => validValues.includes(val));\n          return {\n            ...facet,\n            items: facetItems,\n            value: validSelectedValues.length ? validSelectedValues : null\n          };\n        }\n\n        // Handle single value\n        return {\n          ...facet,\n          items: facetItems,\n          value: validValues.includes(currentValue as string) ? currentValue : null\n        };\n      });\n\n      setFacets(updatedFacets);\n      setIsFirstLoad(false);\n\n      // Update URL if we cleaned up any invalid facets\n      if (JSON.stringify(updatedFacets) !== JSON.stringify(facets)) {\n        handleFacetsChange(updatedFacets);\n      }\n    }\n  }, [facetsData, isFirstLoad, facets, setFacets, handleFacetsChange]);\n\n  useEffect(() => {\n    if (total !== pagination.total) {\n      setPagination(prev => ({\n        ...prev,\n        total\n      }));\n    }\n  }, [total, pagination.total, setPagination]);\n\n  const accordionFacets = facets.filter(facet => facet.type === 'accordion');\n\n  const onSelectionChangeHandler = useFacetChangeHandler({\n    facets,\n    isEcommerceListing: false,\n    isProgramListing: false,\n    pagination,\n    setFilters: handleFacetsChange,\n    setPagination: handlePaginationChange\n  });\n\n  return (\n    <>\n      <div className=\"listing__heading\">\n        <SearchTags\n          resultsNumberLabel={resultsNumberLabel}\n          tagsNoResultsLabel={tagsNoResultsLabel}\n          resultsNumber={results ? results.length : 0}\n          pagination={pagination}\n          facets={facets}\n          setFilters={handleFacetsChange}\n          clearAllLabel={clearAllLabel}\n          setPagination={handlePaginationChange}\n        />\n        <SelectSort\n          options={sortOptions}\n          sort={orderBy}\n          setSort={handleOrderByChange}\n          defaultValue={SortOptions.RELEVANCE}\n          isMobile={false}\n        />\n      </div>\n\n      <div className=\"listing__left-column\">\n        <Search\n          searchPlaceholder={searchPlaceholder}\n          setStoreSearchTerm={handleSearchTermChange}\n          searchTerm={searchTerm}\n          pagination={pagination}\n          setPagination={handlePaginationChange}\n          ariaLabel=\"Enter Keyword for Blog and News\"\n          listingType={ListingTypes.BLOG_AND_NEWS_LISTING}\n          setSortBy={handleOrderByChange}\n        />\n\n        <div className=\"listing__facets\">\n          {accordionFacets && accordionFacets.length > 0 && (\n            <FacetAccordion\n              facetsData={facetsData as FacetData}\n              facets={accordionFacets}\n              onSelectionChangeHandler={onSelectionChangeHandler}\n            />\n          )}\n        </div>\n      </div>\n\n      <Listing\n        id=\"blog-and-news-listing\"\n        noResultsLabel={noResultsLabel}\n        resultsNumber={resultsNumber}\n        status={status}\n        results={results as ArticleDetailPage[]}\n        error={error}\n        searchTerm={searchTerm}\n        imgFallback={imgFallback as string}\n        setPagination={handlePaginationChange}\n        pagination={pagination}\n        paginationType={PaginationType.Pagination}\n      />\n\n      <FacetsMobile\n        facetsData={facetsData as FacetData}\n        mobileFilterNarrowLabel={mobileFilterNarrowLabel}\n        mobileAppliedFiltersLabel={mobileAppliedFiltersLabel}\n        minDatePlaceholder={minDatePlaceholder}\n        maxDatePlaceholder={maxDatePlaceholder}\n        clearAllLabel={clearAllLabel}\n        mobileShowResultsLabel={mobileShowResultsLabel}\n        facets={facets}\n        setFilters={handleFacetsChange}\n        setOrderBy={handleOrderByChange}\n        orderBy={orderBy}\n        pagination={pagination}\n        sortOptions={sortOptions}\n        defaultSortValue={SortOptions.RELEVANCE}\n        setPagination={handlePaginationChange}\n      />\n    </>\n  );\n};\n\nexport default BlogAndNewsListing;\n"],"names":["useGetBlogAndNewsListing","params","graphQLClient","GraphQLClient","getEnvGQLUrl","orderBy","pagination","searchTerm","facets","orderByValue","startDate","endDate","_a","f","_b","adjustedStartDate","adjustedEndDate","previousParamsRef","useRef","hasParamsChanged","prev","orderByChanged","paginationChanged","_c","_d","searchTermChanged","facetsChanged","refetch","queryResult","useQuery","BlogAndNewsListingDocument","getFacetValueById","useEffect","currentStatus","useCallback","_e","BlogAndNewsListing","noResultsLabel","tagsNoResultsLabel","searchPlaceholder","resultsNumberLabel","resultsNumber","sortByRelevanceLabel","sortByRecentLabel","sortByAlphabeticalLabel","mobileShowResultsLabel","clearAllLabel","mobileFilterNarrowLabel","mobileAppliedFiltersLabel","minDatePlaceholder","maxDatePlaceholder","blogAndNewsTopicFacetLabel","blogAndNewsContentTypeFacetLabel","blogAndNewsSchoolFacetLabel","imgFallback","isFirstLoad","setIsFirstLoad","useState","initialFacets","setFacets","setPagination","handleSearchTermChange","handleFacetsChange","handleOrderByChange","handlePaginationChange","useListingUrlState","sortOptions","SortOptions","status","results","error","total","facetsData","updatedFacets","facet","facetData","facetItems","item","id","name","currentValue","validValues","validSelectedValues","val","accordionFacets","onSelectionChangeHandler","useFacetChangeHandler","React","SearchTags","SelectSort","Search","ListingTypes","FacetAccordion","Listing","PaginationType","FacetsMobile"],"mappings":"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"}