{"version":3,"file":"ExplorePage-Q-PBrIRB.js","sources":["../../src/components/Explore/ExploreHeader.tsx","../../src/components/Explore/ExplorePage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client'\nimport { Stack, useMantineTheme } from '@mantine/core'\nimport { useMediaQuery } from '@mantine/hooks'\nimport React, { useCallback, useEffect, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useNavigate } from 'react-router-dom'\n\nimport itemIconBlack from '@/assets/icons/items_black.svg'\nimport itemIconWhite from '@/assets/icons/items_white.svg'\nimport useProfilePath from '@/hooks/useProfilePath'\nimport { useAuth } from '@/plugins/auth'\nimport { GetTotals, QUERY_GET_TOTALS } from '@/schemas/explore.schema'\nimport { formatValueToSuffix } from '@/utils/utils'\n\nimport RootButton from '../Buttons/RootButton'\nimport IconWrapper from '../MediaWrappers/IconWrapper'\nimport PageSelector from '../PageSelector'\nimport { Totals } from './ExplorePage'\n\ninterface ExploreHeaderProps {\n tabs: { id: string; title: string }[]\n currTabId: string\n totals: Totals\n setTotals: (totals: Totals) => void\n}\n\nconst ExploreHeader: React.FC = ({ tabs, currTabId, totals, setTotals }) => {\n const { t } = useTranslation()\n const theme = useMantineTheme()\n const isMobile = useMediaQuery(`(max-width: ${theme.breakpoints.sm})`)\n const { address } = useAuth()\n const navigate = useNavigate()\n const profilePath = useProfilePath(address)\n\n // Get totals\n const { data, refetch } = useQuery(QUERY_GET_TOTALS)\n const totalCreators = useMemo(() => data?.users.agg.count || 0, [data])\n const totalItems = useMemo(() => data?.items.agg.count || 0, [data])\n const totalCollections = useMemo(() => data?.collections.agg.count || 0, [data])\n\n // Handle Tab Change\n const handleTabChange = useCallback(\n (id: string) => {\n navigate(`/explore/${id}`)\n refetch()\n },\n [navigate, refetch]\n )\n\n // Update totals state\n useEffect(() => {\n setTotals({ creators: totalCreators, items: totalItems, collections: totalCollections })\n }, [totalCreators, totalItems, totalCollections, setTotals])\n\n // Process tabs with new totals info\n const processedTabs = useMemo(\n () =>\n tabs.map(tab => ({\n ...tab,\n // define total by comparing tab.id with key of Totals interface (totals object)\n total: totals[tab.id as keyof Totals],\n })),\n [tabs, totals]\n )\n\n return (\n \n \n {processedTabs.map(tab => (\n handleTabChange(tab.id)}\n text={tab.title}\n count={formatValueToSuffix(tab.total || 0, 4, 0)}\n />\n ))}\n \n {address && (\n navigate(profilePath)}\n style={{\n whiteSpace: 'pre-wrap',\n }}\n >\n {isMobile ? (\n \n ) : (\n t('components.profile.MyItems', 'My Items')\n )}\n \n )}\n \n )\n}\n\nexport default ExploreHeader\n","import { Stack } from '@mantine/core'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useParams } from 'react-router'\n\nimport {\n QUERY_GET_COLLECTIONS,\n QUERY_GET_CREATORS,\n QUERY_GET_ITEMS,\n QUERY_GET_SUGGESTED_COLLECTIONS,\n QUERY_GET_SUGGESTED_CREATORS,\n QUERY_GET_SUGGESTED_ITEMS,\n} from '@/schemas/explore.schema'\nimport { BodyStack } from '@/styled/components'\n\nimport { QueryProps } from '../InfiniteScrolling'\nimport ExploreHeader from './ExploreHeader'\nimport ExploreTab from './ExploreTab'\n\ninterface ExplorePageProps {}\n\nexport interface Totals {\n creators?: number\n items?: number\n collections?: number\n published?: number\n owned?: number\n earned?: number\n}\n\nexport interface Tabs extends QueryProps {\n id: keyof Totals\n title: string\n // => Optional Fields\n tooltip?: string\n filterOptions: string[]\n sortOptions: string[]\n sortDirection?: 'asc' | 'desc'\n}\n\nconst Component: React.FC = () => {\n const { t } = useTranslation()\n const { id } = useParams()\n\n // Set totals state\n const [totals, setTotals] = useState({ creators: 0, items: 0, collections: 0 })\n\n useEffect(() => {\n window.scrollTo(0, 0)\n }, [])\n\n const tabs: Tabs[] = useMemo(\n () => [\n {\n id: 'creators',\n contentType: 'creators',\n total: totals.creators || 0,\n title: t('components.profile.creators', 'Creators'),\n tooltip: t(\n 'components.items.allCreatorsTooltip',\n 'Only creators with an Avatar, Display Name, and at least one published item will be displayed.'\n ),\n filterOptions: ['Creators', 'All Users'],\n sortOptions: ['# published items', 'join date'],\n query: QUERY_GET_CREATORS,\n suggestionQuery: QUERY_GET_SUGGESTED_CREATORS,\n cols: {\n base: 1,\n sm: 2,\n md: 3,\n lg: 4,\n },\n },\n {\n id: 'items',\n contentType: 'items',\n total: totals.items || 0,\n title: t('components.profile.items', 'Items'),\n filterOptions: ['All', 'Unique', 'Fungible'],\n sortOptions: ['# transfers', 'publish date'],\n query: QUERY_GET_ITEMS,\n suggestionQuery: QUERY_GET_SUGGESTED_ITEMS,\n },\n {\n id: 'collections',\n contentType: 'collections',\n total: totals.collections || 0,\n title: t('components.profile.collections', 'Collections'),\n filterOptions: ['All', 'ERC1155', 'ERC721'],\n sortOptions: ['# items', 'publish date'],\n query: QUERY_GET_COLLECTIONS,\n suggestionQuery: QUERY_GET_SUGGESTED_COLLECTIONS,\n },\n ],\n [t, totals]\n )\n\n return (\n \n ({\n id: elem.id,\n title: elem.title,\n }))}\n currTabId={id || tabs[0].id}\n totals={totals}\n setTotals={setTotals}\n />\n \n {tabs.map(\n tab =>\n id === tab.id && (\n \n )\n )}\n \n \n )\n}\n\nComponent.displayName = 'ExplorePage'\n\nexport { Component }\n"],"names":["ExploreHeader","tabs","currTabId","totals","setTotals","t","useTranslation","theme","useMantineTheme","isMobile","useMediaQuery","address","useAuth","navigate","useNavigate","profilePath","useProfilePath","data","refetch","useQuery","QUERY_GET_TOTALS","totalCreators","useMemo","totalItems","totalCollections","handleTabChange","useCallback","id","useEffect","processedTabs","tab","jsxs","Stack","jsx","PageSelector","formatValueToSuffix","RootButton","IconWrapper","itemIconWhite","itemIconBlack","Component","useParams","useState","QUERY_GET_CREATORS","QUERY_GET_SUGGESTED_CREATORS","QUERY_GET_ITEMS","QUERY_GET_SUGGESTED_ITEMS","QUERY_GET_COLLECTIONS","QUERY_GET_SUGGESTED_COLLECTIONS","BodyStack","elem","ExploreTab"],"mappings":"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"}