/* eslint-disable @nx/enforce-module-boundaries */ // nx-ignore-next-line import type { ProjectGraphProjectNode } from '@nx/devkit'; import { TargetConfigurationDetailsListItem } from '../target-configuration-details-list-item/target-configuration-details-list-item'; import { TargetConfigurationGroupContainer } from '../target-configuration-details-group-container/target-configuration-details-group-container'; import { groupTargets } from '../utils/group-targets'; import { useMemo } from 'react'; export interface TargetConfigurationGroupListProps { project: ProjectGraphProjectNode; sourceMap: Record; variant?: 'default' | 'compact'; onRunTarget?: (data: { projectName: string; targetName: string }) => void; onViewInTaskGraph?: (data: { projectName: string; targetName: string; }) => void; onNxConnect?: () => void; connectedToCloud?: boolean; className?: string; } export function TargetConfigurationGroupList({ project, variant, sourceMap, onRunTarget, onViewInTaskGraph, onNxConnect, className = '', connectedToCloud, }: TargetConfigurationGroupListProps) { const targetsGroup = useMemo(() => groupTargets(project), [project]); const hasGroups = useMemo(() => { for (const group of Object.entries(targetsGroup.groups)) { if (group[1]?.length > 0) return true; } return false; }, [targetsGroup]); if (hasGroups) { return ( <> {Object.entries(targetsGroup.groups).map( ([targetGroupName, targets]) => { return ( ); } )} ); } else { return ( ); } }