import React, { useMemo } from 'react'; import { useSupplyDemandAnalysis } from '@/hooks/api/useAnalyticsAPI.ts'; import { useTranslation } from '@/hooks/useI18n.tsx'; import type { ItemCount } from '@/services/analytics-api.ts'; const SupplyChainAnalysis = () => { const { t } = useTranslation(); const { data: supplyDemand } = useSupplyDemandAnalysis(); // Helper function to render resource list const ResourceList = React.memo( ({ title, data, barColor }: { title: string; data: ItemCount[]; barColor: string }) => { // Memoize maxValue calculation const maxValue = useMemo(() => (data.length > 0 ? data[0].count : 0), [data]); return (

{title}

{data.length > 0 ? ( ) : (

{t('heritage.noData')}

)}
); } ); ResourceList.displayName = 'ResourceList'; // Memoize arrays to prevent recreation const topNeeds = useMemo( () => (Array.isArray(supplyDemand?.top_needs) ? supplyDemand.top_needs : []), [supplyDemand?.top_needs] ); const topOffers = useMemo( () => (Array.isArray(supplyDemand?.top_offers) ? supplyDemand.top_offers : []), [supplyDemand?.top_offers] ); return (
); }; export default React.memo(SupplyChainAnalysis);