{"version":3,"file":"index-X0NOT90g.js","sources":["../../src/scripts/modules/react-modules/Listings/EventListing/useGetEventsListing.ts","../../src/scripts/modules/react-modules/Listings/EventListing/index.tsx"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { GraphQLClient } from 'graphql-request';\nimport { useCallback, useMemo } from 'react';\nimport {\n  EventsListingDocument,\n  EventsListingQuery\n} from '../../../../../codegenGenerated/optigraphql/generated';\nimport { getEnvGQLUrl } from '../../../../helpers';\nimport { ListingParams } from '../types';\nimport { getFacetValueById } from '../utils';\n\nexport enum EventFacetTypes {\n  EventLocationFacet = 'EventLocationFacet',\n  EventTypeFacet = 'EventTypeFacet',\n  EventAudienceFacet = 'EventAudienceFacet'\n}\n\nexport const useGetEventsListing = (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    const dateRangeFacet = facets?.find(f => f.id === 'date-range');\n    startDate = (dateRangeFacet?.items?.[0]?.value as string) || null;\n    endDate = (dateRangeFacet?.items?.[1]?.value as string) || null;\n\n    const adjustedStartDate = new Date(startDate as unknown as string);\n    const adjustedEndDate = new Date(endDate as unknown as string);\n    if (endDate && adjustedStartDate > adjustedEndDate) {\n      startDate = endDate as string;\n    }\n  }\n\n  if (params) {\n    if (searchTerm !== '') {\n      orderByValue = { _ranking: 'SEMANTIC' };\n    } else {\n      switch (orderBy) {\n        case 'RELEVANCE':\n          orderByValue = { _ranking: 'SEMANTIC', InitialDateEvent: 'ASC' };\n          break;\n        case 'ASC':\n          orderByValue = { InitialDateEvent: 'ASC', _ranking: 'SEMANTIC' };\n          break;\n        case 'DESC':\n          orderByValue = { InitialDateEvent: 'DESC', _ranking: 'SEMANTIC' };\n          break;\n        case 'A-Z':\n          orderByValue = { Title: 'ASC', _ranking: 'SEMANTIC' };\n          break;\n      }\n    }\n  }\n\n  const queryKey = useMemo(\n    () => [\n      'events',\n      {\n        orderBy: params?.orderBy,\n        skip: params?.pagination?.skip ?? 0,\n        limit: params?.pagination?.limit ?? 10,\n        searchTerm: params?.searchTerm,\n        startDate,\n        endDate,\n        facets: JSON.stringify(params?.facets?.filter(f => f.id !== 'date-range'))\n      }\n    ],\n    [\n      params?.orderBy,\n      params?.pagination?.skip,\n      params?.pagination?.limit,\n      params?.searchTerm,\n      startDate,\n      endDate,\n      JSON.stringify(params?.facets)\n    ]\n  );\n\n  const { ...queryResult } = useQuery({\n    queryKey,\n    queryFn: async () => {\n      return graphQLClient.request(EventsListingDocument, {\n        orderBy: orderByValue,\n        numberOfResults: pagination?.limit ?? 10,\n        skip: pagination?.skip ?? 0,\n        searchTerm: searchTerm === '' ? null : searchTerm,\n        searchTermBoost: searchTerm ? `%${searchTerm}%` : null,\n        startDate: startDate !== null ? startDate : new Date().toISOString(),\n        endDate,\n        eventTypeFacet: facets ? getFacetValueById(facets, EventFacetTypes.EventTypeFacet) : null,\n        eventLocationFacet: facets\n          ? getFacetValueById(facets, EventFacetTypes.EventLocationFacet)\n          : null,\n        eventAudienceFacet: facets\n          ? getFacetValueById(facets, EventFacetTypes.EventAudienceFacet)\n          : null\n      }) as EventsListingQuery;\n    },\n    refetchOnWindowFocus: false,\n    staleTime: 300\n  });\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.EventDetailPage?.items\n        ? queryResult.data.EventDetailPage.items\n        : [],\n    total:\n      currentStatus === 'success' && queryResult.data && queryResult.data.EventDetailPage?.total\n        ? queryResult.data.EventDetailPage.total\n        : 0,\n    facets:\n      currentStatus === 'success' && queryResult.data && queryResult.data.EventDetailPage?.facets\n        ? queryResult.data.EventDetailPage.facets\n        : {}\n  };\n};\n","import React, { useState, useEffect } from 'react';\nimport { EventDetailPage } from '../../../../../codegenGenerated/optigraphql/generated';\nimport { PaginationType } from '../../../../components/react-components/Pagination';\nimport FacetAccordion, { FacetData } from '../Facets/FacetAccordion';\nimport Facets from '../Facets/Facets';\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 { useGetEventsListing } from './useGetEventsListing';\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 EventFacetsData {\n  [key: string]: FacetCategory;\n}\n\ninterface OwnProps extends ListingCommonProps {\n  eventTypeFacet: string;\n  eventLocationFacet: string;\n  eventAudienceFacet: string;\n}\n\nconst EventsListingModule = ({\n  noResultsLabel,\n  tagsNoResultsLabel,\n  searchPlaceholder,\n  resultsNumberLabel,\n  resultsNumber,\n  sortByRelevanceLabel,\n  sortByRecentLabel,\n  mobileShowResultsLabel,\n  clearAllLabel,\n  mobileFilterNarrowLabel,\n  mobileAppliedFiltersLabel,\n  minDatePlaceholder,\n  maxDatePlaceholder,\n  eventTypeFacet,\n  eventLocationFacet,\n  eventAudienceFacet\n}: OwnProps) => {\n  const [isFirstLoad, setIsFirstLoad] = useState(true);\n\n  const initialFacets = [\n    {\n      id: 'EventTypeFacet',\n      type: 'accordion',\n      title: eventTypeFacet,\n      items: [],\n      value: null\n    },\n    {\n      id: 'EventLocationFacet',\n      type: 'accordion',\n      title: eventLocationFacet,\n      items: [],\n      value: null\n    },\n    {\n      id: 'EventAudienceFacet',\n      type: 'accordion',\n      title: eventAudienceFacet,\n      items: [],\n      value: null\n    },\n    {\n      id: 'date-range',\n      type: 'date',\n      title: 'Date Range',\n      value: null,\n      items: [\n        { id: 'minDate', value: '' },\n        { id: 'maxDate', value: '' }\n      ]\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.ASC\n    },\n    {\n      label: sortByRelevanceLabel,\n      value: SortOptions.RELEVANCE\n    }\n  ];\n\n  const {\n    status,\n    results,\n    error,\n    total,\n    facets: facetsData\n  } = useGetEventsListing({\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        if (facet.type === 'date') return facet;\n\n        const facetData = (facetsData as EventFacetsData)[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  const onSelectionChangeHandler = useFacetChangeHandler({\n    facets,\n    isEcommerceListing: false,\n    isProgramListing: false,\n    pagination,\n    setFilters: handleFacetsChange,\n    setPagination: handlePaginationChange\n  });\n\n  const onDateChangeHandler = (dateId: string, value: string) => {\n    const updatedFacets = facets.map(facet => {\n      if (facet.id === 'date-range') {\n        const updatedItems = facet.items.map(item => {\n          if (item.id === dateId) {\n            return { ...item, value };\n          }\n          return item;\n        });\n        return { ...facet, items: updatedItems };\n      }\n      return facet;\n    });\n    handleFacetsChange(updatedFacets);\n  };\n\n  return (\n    <>\n      <div className=\"listing__heading\">\n        <SearchTags\n          resultsNumberLabel={resultsNumberLabel}\n          resultsNumber={results ? results.length : 0}\n          pagination={pagination}\n          facets={facets}\n          setFilters={handleFacetsChange}\n          clearAllLabel={clearAllLabel}\n          tagsNoResultsLabel={tagsNoResultsLabel}\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 Events\"\n          listingType={ListingTypes.EVENT_LISTING}\n          setSortBy={handleOrderByChange}\n        />\n\n        <div className=\"listing__facets\">\n          {facets\n            .filter(item => item.type !== 'accordion')\n            .map(facetItem => {\n              const { id, type, items, title } = facetItem;\n\n              let updatedItems = items;\n              if (id === 'date-range' && Array.isArray(items) && items.length >= 2) {\n                items[0].title = minDatePlaceholder;\n                items[1].title = maxDatePlaceholder;\n                updatedItems = items;\n              }\n\n              return (\n                <Facets\n                  key={id}\n                  id={id}\n                  type={type}\n                  items={updatedItems}\n                  title={title}\n                  isMobile={false}\n                  minDatePlaceholder={minDatePlaceholder}\n                  maxDatePlaceholder={maxDatePlaceholder}\n                  facets={facets}\n                  setFilters={handleFacetsChange}\n                  pagination={pagination}\n                  setPagination={handlePaginationChange}\n                  onSelectionChange={onDateChangeHandler}\n                />\n              );\n            })}\n\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=\"events-listing\"\n        noResultsLabel={noResultsLabel}\n        resultsNumber={resultsNumber}\n        status={status}\n        results={results as EventDetailPage[]}\n        error={error}\n        searchTerm={searchTerm}\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 EventsListingModule;\n"],"names":["useGetEventsListing","params","graphQLClient","GraphQLClient","getEnvGQLUrl","orderBy","pagination","searchTerm","facets","orderByValue","startDate","endDate","dateRangeFacet","f","_b","_a","_d","_c","adjustedStartDate","adjustedEndDate","queryKey","useMemo","_e","_f","queryResult","useQuery","EventsListingDocument","getFacetValueById","currentStatus","useCallback","_g","_h","_i","EventsListingModule","noResultsLabel","tagsNoResultsLabel","searchPlaceholder","resultsNumberLabel","resultsNumber","sortByRelevanceLabel","sortByRecentLabel","mobileShowResultsLabel","clearAllLabel","mobileFilterNarrowLabel","mobileAppliedFiltersLabel","minDatePlaceholder","maxDatePlaceholder","eventTypeFacet","eventLocationFacet","eventAudienceFacet","isFirstLoad","setIsFirstLoad","useState","initialFacets","setFacets","setPagination","handleSearchTermChange","handleFacetsChange","handleOrderByChange","handlePaginationChange","useListingUrlState","sortOptions","SortOptions","status","results","error","total","facetsData","useEffect","updatedFacets","facet","facetData","facetItems","item","id","name","currentValue","validValues","validSelectedValues","val","prev","accordionFacets","onSelectionChangeHandler","useFacetChangeHandler","onDateChangeHandler","dateId","value","updatedItems","React","SearchTags","SelectSort","Search","ListingTypes","facetItem","type","items","title","Facets","FacetAccordion","Listing","PaginationType","FacetsMobile"],"mappings":"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"}