import React from 'react'; import { PanelSection } from '../PanelSection'; import { useSegmentationTableContext, SegmentationExpandedProvider, useSegmentationExpanded, } from './contexts'; import { Button } from '../Button'; import { Icons } from '../Icons/Icons'; import { DropdownMenu, DropdownMenuTrigger } from '../DropdownMenu'; import { Tooltip, TooltipTrigger, TooltipContent } from '../Tooltip/Tooltip'; // The Header container component const SegmentationExpandedHeader = ({ children }: { children: React.ReactNode }) => { const { segmentation, isActive } = useSegmentationExpanded('SegmentationExpandedHeader'); const { onSegmentationClick } = useSegmentationTableContext('SegmentationExpandedHeader'); return ( { e.stopPropagation(); onSegmentationClick(segmentation.segmentationId); }} >
{children}
); }; // Dropdown menu component - specifically for dropdown menu content const SegmentationExpandedDropdownMenu = ({ children }: { children: React.ReactNode }) => { return ( {children} ); }; // Label component - for displaying the segmentation label const SegmentationExpandedLabel = () => { const { segmentation } = useSegmentationExpanded('SegmentationExpandedLabel'); return
{segmentation.label}
; }; // Info component - for the info tooltip const SegmentationExpandedInfo = () => { const { segmentation } = useSegmentationExpanded('SegmentationExpandedInfo'); return (

{segmentation.cachedStats?.info}

); }; // Content component const SegmentationExpandedContent = ({ children }: { children: React.ReactNode }) => { const { isActive } = useSegmentationExpanded('SegmentationExpandedContent'); return (
{children}
); }; // Main compound component const SegmentationExpandedRoot = ({ children }) => { const { data, activeSegmentationId, onSegmentationClick, mode } = useSegmentationTableContext('SegmentationExpanded'); // Check if we should render based on mode if (mode !== 'expanded' || !data || data.length === 0) { return null; } return (
{data.map(segmentationInfo => { const isActive = segmentationInfo.segmentation.segmentationId === activeSegmentationId; return ( {children} ); })}
); }; const SegmentationExpanded = Object.assign(SegmentationExpandedRoot, { Header: SegmentationExpandedHeader, DropdownMenu: SegmentationExpandedDropdownMenu, Label: SegmentationExpandedLabel, Info: SegmentationExpandedInfo, Content: SegmentationExpandedContent, }); export { SegmentationExpanded };