{"version":3,"file":"index-C3MTh-_K.js","sources":["../../src/scripts/modules/react-modules/Listings/SearchListing/useGetSearchListing.ts","../../src/scripts/modules/react-modules/Listings/SearchListing/index.tsx"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { GraphQLClient } from 'graphql-request';\nimport { useMemo } from 'react';\nimport { SearchDocument, SearchQuery } from '../../../../../codegenGenerated/optigraphql/generated';\nimport { getEnvGQLUrl } from '../../../../helpers';\nimport { ListingParams } from '../types';\n\nconst graphQLClient = new GraphQLClient(getEnvGQLUrl());\n\nexport const useGetSearchListing = (params?: ListingParams) => {\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 { Name: 'ASC', _ranking: 'SEMANTIC' };\n default:\n return {};\n }\n }, [orderBy, searchTerm]);\n\n const queryKey = useMemo(\n () => ['search', orderBy, pagination?.skip, pagination?.limit, searchTerm, facets?.[0]?.value],\n [orderBy, pagination?.skip, pagination?.limit, searchTerm, facets]\n );\n\n const { data, error, isLoading, isError, isSuccess } = useQuery({\n queryKey,\n queryFn: async () => {\n return graphQLClient.request(SearchDocument, {\n orderBy: orderByValue,\n numberOfResults: pagination?.limit,\n skip: pagination?.skip,\n searchTerm: searchTerm === '' ? null : searchTerm,\n searchTermBoost: searchTerm ? `%${searchTerm}%` : null,\n type:\n !facets?.[0]?.value ||\n !facets[0].value.length ||\n facets[0].value[0] === 'all' ||\n facets[0].value[0] === ''\n ? null\n : facets[0].value\n }) as SearchQuery;\n },\n refetchOnWindowFocus: false\n });\n\n const status = useMemo(() => {\n if (isLoading) return 'loading';\n if (isError) return 'error';\n if (isSuccess) return 'success';\n return 'idle';\n }, [isLoading, isError, isSuccess]);\n\n return {\n status,\n error: error as Error,\n results: data?.Content?.items ?? [],\n total: data?.Content?.total ?? 0\n };\n};\n","import { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport React, { useEffect, useState, useMemo } from 'react';\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 SelectSort from '../SelectSort';\nimport {\n FacetProps,\n FacetPropsItems,\n ListingCommonProps,\n ListingTypes,\n SortOptions\n} from '../types';\nimport { SearchCardProps } from './SearchCard';\nimport { useGetSearchListing } from './useGetSearchListing';\n\nconst defaultQueryClient = new QueryClient();\n\ninterface OwnProps extends ListingCommonProps {\n facets: string;\n}\n\nconst SearchListing = ({\n noResultsLabel,\n clearAllLabel,\n tagsNoResultsLabel,\n searchPlaceholder,\n resultsNumberLabel,\n resultsNumber,\n sortByRecentLabel,\n sortByRelevanceLabel,\n sortByAlphabeticalLabel,\n mobileShowResultsLabel,\n mobileFilterNarrowLabel,\n mobileAppliedFiltersLabel,\n facets\n}: OwnProps) => {\n // Parse initial facets from props\n const [facetsItems] = useState<FacetPropsItems[]>(JSON.parse(facets));\n\n // Get URL params and validate\n const urlParams = new URLSearchParams(window.location.search);\n const searchTermUrl = urlParams.get('search-term');\n const contentTypeUrl = urlParams.get('type');\n const sortUrl = urlParams.get('sort') as SortOptions;\n const skipUrl = parseInt(urlParams.get('skip') || '0');\n const limitUrl = parseInt(urlParams.get('limit') || resultsNumber);\n\n // Validate content type against available facets\n const isValidContentType = contentTypeUrl && facetsItems.some(item => item.id === contentTypeUrl);\n\n // Initialize state\n const [searchTerm, setSearchTerm] = useState(searchTermUrl || '');\n const [orderBy, setOrderBy] = useState<SortOptions>(sortUrl || SortOptions.RELEVANCE);\n const [pagination, setPagination] = useState({\n skip: skipUrl,\n limit: limitUrl,\n total: 0\n });\n\n const [selectedContentType, setSelectedContentType] = useState<string[]>(\n isValidContentType ? [contentTypeUrl] : ['all']\n );\n\n const facetsState = useMemo(\n () =>\n [\n {\n id: 'Categories',\n type: 'custom-radio',\n title: 'Content Type',\n items: facetsItems,\n value: selectedContentType\n }\n ] as FacetProps[],\n [facetsItems, selectedContentType]\n );\n\n // Clean up URL parameters on mount and when validation changes\n useEffect(() => {\n const cleanParams: {\n type?: string;\n sort?: SortOptions;\n skip?: number;\n limit?: number;\n searchTerm?: string;\n } = {};\n\n // Clean up invalid type\n if (contentTypeUrl && !isValidContentType) {\n cleanParams.type = undefined;\n setSelectedContentType(['all']);\n }\n\n // Clean up invalid sort\n if (sortUrl && !Object.values(SortOptions).includes(sortUrl)) {\n cleanParams.sort = SortOptions.RELEVANCE;\n }\n\n // Clean up invalid pagination\n if (skipUrl < 0) {\n cleanParams.skip = 0;\n }\n if (limitUrl <= 0) {\n cleanParams.limit = +resultsNumber;\n }\n\n // If any parameter needs cleaning, update the URL\n if (Object.keys(cleanParams).length > 0) {\n const newUrlParams = new URLSearchParams(window.location.search);\n\n if (cleanParams.type === undefined) {\n newUrlParams.delete('type');\n }\n if (cleanParams.sort !== undefined) {\n cleanParams.sort === SortOptions.RELEVANCE\n ? newUrlParams.delete('sort')\n : newUrlParams.set('sort', cleanParams.sort);\n }\n if (cleanParams.skip !== undefined) {\n cleanParams.skip > 0\n ? newUrlParams.set('skip', cleanParams.skip.toString())\n : newUrlParams.delete('skip');\n }\n if (cleanParams.limit !== undefined) {\n cleanParams.limit === +resultsNumber\n ? newUrlParams.delete('limit')\n : newUrlParams.set('limit', cleanParams.limit.toString());\n }\n\n window.history.replaceState(\n {},\n '',\n `${window.location.pathname}${newUrlParams.toString() ? '?' + newUrlParams.toString() : ''}`\n );\n }\n }, [contentTypeUrl, isValidContentType, sortUrl, skipUrl, limitUrl, resultsNumber]);\n\n // Update URL when state changes\n const updateUrl = (params: {\n searchTerm?: string;\n type?: string;\n sort?: SortOptions;\n skip?: number;\n limit?: number;\n }) => {\n const urlParams = new URLSearchParams(window.location.search);\n\n if (params.searchTerm !== undefined) {\n params.searchTerm\n ? urlParams.set('search-term', params.searchTerm)\n : urlParams.delete('search-term');\n }\n if (params.type !== undefined) {\n // Only set type if it's valid and not 'all'\n if (\n params.type &&\n params.type !== 'all' &&\n facetsItems.some(item => item.id === params.type)\n ) {\n urlParams.set('type', params.type);\n } else {\n urlParams.delete('type');\n }\n }\n if (params.sort !== undefined) {\n params.sort !== SortOptions.RELEVANCE\n ? urlParams.set('sort', params.sort)\n : urlParams.delete('sort');\n }\n if (params.skip !== undefined) {\n params.skip > 0 ? urlParams.set('skip', params.skip.toString()) : urlParams.delete('skip');\n }\n if (params.limit !== undefined) {\n params.limit !== +resultsNumber\n ? urlParams.set('limit', params.limit.toString())\n : urlParams.delete('limit');\n }\n\n window.history.replaceState(\n {},\n '',\n `${window.location.pathname}${urlParams.toString() ? '?' + urlParams.toString() : ''}`\n );\n };\n\n // Handlers\n const handleSearchTermChange = (newSearchTerm: string) => {\n setSearchTerm(newSearchTerm);\n setPagination(prev => ({ ...prev, skip: 0 }));\n updateUrl({ searchTerm: newSearchTerm, skip: 0 });\n };\n\n const handleContentTypeChange = (newFacets: FacetProps[]) => {\n const newContentType = newFacets[0].value as string[];\n if (newContentType) {\n setSelectedContentType(newContentType);\n setPagination(prev => ({ ...prev, skip: 0 }));\n updateUrl({\n type: newContentType[0] === 'all' ? undefined : newContentType[0],\n skip: 0\n });\n }\n };\n\n const handleOrderByChange = (newOrderBy: string) => {\n setOrderBy(newOrderBy as SortOptions);\n setPagination(prev => ({ ...prev, skip: 0 }));\n updateUrl({ sort: newOrderBy as SortOptions, skip: 0 });\n };\n\n const handlePaginationChange = (newPagination: typeof pagination) => {\n setPagination(newPagination);\n updateUrl({ skip: newPagination.skip, limit: newPagination.limit });\n };\n\n const sortOptions = [\n { label: sortByRelevanceLabel, value: SortOptions.RELEVANCE },\n { label: sortByRecentLabel, value: SortOptions.ASC },\n { label: sortByAlphabeticalLabel, value: SortOptions.AZ }\n ];\n\n const { status, results, error, total } = useGetSearchListing({\n pagination,\n orderBy,\n searchTerm,\n facets: facetsState\n });\n\n // Update total when it changes\n useEffect(() => {\n if (total !== pagination.total) {\n setPagination(prev => ({ ...prev, total }));\n }\n }, [total]);\n\n return (\n <QueryClientProvider client={defaultQueryClient}>\n <div className=\"listing-heading listing-heading--search\">\n <Search\n searchPlaceholder={searchPlaceholder}\n setStoreSearchTerm={handleSearchTermChange}\n searchTerm={searchTerm}\n pagination={pagination}\n setPagination={handlePaginationChange}\n ariaLabel=\"Enter Keyword for Search\"\n listingType={ListingTypes.SEARCH_LISTING}\n setSortBy={handleOrderByChange}\n />\n\n <div className=\"listing__facets listing__facets--search\">\n {facetsState.map(({ id, type, items, title }) => (\n <Facets\n key={id}\n id={id}\n type={type}\n items={items}\n title={title}\n isMobile={false}\n facets={facetsState}\n setFilters={handleContentTypeChange}\n pagination={pagination}\n setPagination={handlePaginationChange}\n />\n ))}\n </div>\n\n <div className=\"listing-heading__results\">\n <SearchTags\n resultsNumberLabel={resultsNumberLabel}\n tagsNoResultsLabel={tagsNoResultsLabel}\n resultsNumber={total}\n pagination={pagination}\n facets={facetsState}\n setFilters={handleContentTypeChange}\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 </div>\n\n <Listing\n id=\"search-listing\"\n noResultsLabel={noResultsLabel}\n resultsNumber={resultsNumber}\n status={status}\n results={results as SearchCardProps[]}\n error={error}\n searchTerm={searchTerm}\n setPagination={handlePaginationChange}\n pagination={pagination}\n paginationType={PaginationType.Pagination}\n />\n\n <FacetsMobile\n listingType={ListingTypes.SEARCH_LISTING}\n mobileFilterNarrowLabel={mobileFilterNarrowLabel}\n mobileAppliedFiltersLabel={mobileAppliedFiltersLabel}\n mobileShowResultsLabel={mobileShowResultsLabel}\n facets={facetsState}\n setFilters={handleContentTypeChange}\n setOrderBy={handleOrderByChange}\n orderBy={orderBy}\n pagination={pagination}\n sortOptions={sortOptions}\n defaultSortValue={SortOptions.RELEVANCE}\n clearAllLabel={clearAllLabel}\n setPagination={handlePaginationChange}\n />\n </QueryClientProvider>\n );\n};\n\nexport default SearchListing;\n"],"names":["graphQLClient","GraphQLClient","getEnvGQLUrl","useGetSearchListing","params","orderBy","pagination","searchTerm","facets","orderByValue","useMemo","queryKey","_a","data","error","isLoading","isError","isSuccess","useQuery","SearchDocument","_b","defaultQueryClient","QueryClient","SearchListing","noResultsLabel","clearAllLabel","tagsNoResultsLabel","searchPlaceholder","resultsNumberLabel","resultsNumber","sortByRecentLabel","sortByRelevanceLabel","sortByAlphabeticalLabel","mobileShowResultsLabel","mobileFilterNarrowLabel","mobileAppliedFiltersLabel","facetsItems","useState","urlParams","searchTermUrl","contentTypeUrl","sortUrl","skipUrl","limitUrl","isValidContentType","item","setSearchTerm","setOrderBy","SortOptions","setPagination","selectedContentType","setSelectedContentType","facetsState","useEffect","cleanParams","newUrlParams","updateUrl","handleSearchTermChange","newSearchTerm","prev","handleContentTypeChange","newFacets","newContentType","handleOrderByChange","newOrderBy","handlePaginationChange","newPagination","sortOptions","status","results","total","QueryClientProvider","React","Search","ListingTypes","id","type","items","title","Facets","SearchTags","SelectSort","Listing","PaginationType","FacetsMobile"],"mappings":"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"}