/* eslint-disable @nx/enforce-module-boundaries */ // nx-ignore-next-line import type { TargetConfiguration } from '@nx/devkit'; import { JsonCodeBlock } from '@nx/graph-internal/ui-code-block'; import { ExpandedTargetsContext } from '@nx/graph/legacy/shared'; import { CopyToClipboardButton } from '@nx/graph/legacy/components'; import { Tooltip } from '@nx/graph/legacy/tooltips'; import { useCallback, useContext, useEffect, useState } from 'react'; import { Pill } from '../pill'; import { ShowOptionsHelp } from '../show-all-options/show-options-help'; import { TargetConfigurationDetailsHeader } from '../target-configuration-details-header/target-configuration-details-header'; import { TargetExecutor } from '../target-executor/target-executor'; import { TargetExecutorTitle } from '../target-executor/target-executor-title'; import { getTargetExecutorSourceMapKey } from '../target-source-info/get-target-executor-source-map-key'; import { TargetSourceInfo } from '../target-source-info/target-source-info'; import { getDisplayHeaderFromTargetConfiguration } from '../utils/get-display-header-from-target-configuration'; import { getTaskSyncGenerators } from '../utils/sync-generators'; import { FadingCollapsible } from './fading-collapsible'; import { TargetConfigurationProperty } from './target-configuration-property'; import { TooltipTriggerText } from './tooltip-trigger-text'; import { PropertyInfoTooltip } from '../tooltips/property-info-tooltip'; interface TargetConfigurationDetailsProps { projectName: string; targetName: string; targetConfiguration: TargetConfiguration; sourceMap: Record; connectedToCloud?: boolean; disabledTaskSyncGenerators?: string[]; variant?: 'default' | 'compact'; onCollapse?: (targetName: string) => void; onExpand?: (targetName: string) => void; onRunTarget?: (data: { projectName: string; targetName: string }) => void; onViewInTaskGraph?: (data: { projectName: string; targetName: string; }) => void; onNxConnect?: () => void; collapsable: boolean; } export default function TargetConfigurationDetails({ variant, projectName, targetName, targetConfiguration, sourceMap, connectedToCloud, disabledTaskSyncGenerators, onViewInTaskGraph, onRunTarget, onNxConnect, collapsable, }: TargetConfigurationDetailsProps) { const isCompact = variant === 'compact'; const [collapsed, setCollapsed] = useState(true); const { expandedTargets, toggleTarget } = useContext(ExpandedTargetsContext); const handleCollapseToggle = useCallback(() => { if (toggleTarget) { toggleTarget(targetName); } }, [toggleTarget, targetName]); useEffect(() => { if (!collapsable) { setCollapsed(false); return; } if (expandedTargets?.includes(targetName)) { setCollapsed(false); } else { setCollapsed(true); } }, [expandedTargets, targetName, collapsable]); const { link, options, script, ...displayHeader } = getDisplayHeaderFromTargetConfiguration(targetConfiguration); const configurations = targetConfiguration.configurations; const shouldRenderOptions: boolean = options && (typeof options === 'object' ? Object.keys(options).length > 0 : true); const shouldRenderConfigurations = configurations && (typeof configurations === 'object' ? Object.keys(configurations).length : true); const { enabledSyncGenerators, disabledSyncGenerators } = getTaskSyncGenerators(targetConfiguration, disabledTaskSyncGenerators); return (
{/* body */} {!collapsed && (
{targetConfiguration.metadata?.description && (

Description

{targetConfiguration.metadata?.description}

)}

{script && (

)} {shouldRenderOptions || targetConfiguration.metadata?.help ? ( <>

) as any} > Options

{shouldRenderOptions ? (
( )} />
) : null} {targetConfiguration.metadata?.help && (
)} ) : null} {targetConfiguration.inputs && (

) as any} > Inputs

    {targetConfiguration.inputs.map((input, idx) => (
  • ))}
)} {targetConfiguration.outputs && (

) as any} > Outputs

    {targetConfiguration.outputs?.map((output, idx) => (
  • )) ?? no outputs}
)} {targetConfiguration.dependsOn && (

) as any} > Depends On

    {targetConfiguration.dependsOn.map((dep, idx) => (
  • ))}
)} {shouldRenderConfigurations ? ( <>

) as any } > Configurations {' '} {targetConfiguration.defaultConfiguration && ( )}

( )} /> ) : null} {targetConfiguration.parallelism === false ? (

) as any} > Parallelism

) : null} {enabledSyncGenerators.length > 0 && (

) as any } > Sync Generators

    {enabledSyncGenerators.map((generator, idx) => (
  • ))} {disabledSyncGenerators.length > 0 && disabledSyncGenerators.map((generator, idx) => (
  • The Sync Generator is disabled in the{' '} sync.disabledTaskSyncGenerators {' '} property in the{' '} nx.json{' '} file.

    } >
  • ))}
)}
)}
); }