import { AutoLayoutDirection, BBox, DeploymentFqn, DiagramEdge, DiagramNode, DiagramNodeDriftReason, ExclusiveUnion, Fqn, IconUrl, MarkdownOrString, NonEmptyReadonlyArray, ViewId } from '@likec4/core/types'; import { XYPosition } from '@xyflow/system'; import { FunctionComponent } from 'react'; import { Simplify } from 'type-fest'; import { BaseEdge, BaseEdgeData, BaseEdgeProps, BaseNode, BaseNodeData, BaseNodeProps, NonOptional } from '../base/types'; export declare namespace Types { type LeafNodeData = Simplify> & { /** * View layout direction, used by DefaultHandles to position node handles */ viewLayoutDir?: AutoLayoutDirection | undefined; /** * View this node belongs to */ viewId: ViewId; isMultiple?: boolean | undefined; icon: string | null; drifts: NonEmptyReadonlyArray | null; }>; /** * Represents element from logical model */ type ElementNodeData = Simplify; /** * Represents element from deployment model */ type DeploymentElementNodeData = Simplify; type SequenceActorNodePort = { id: string; cx: number; cy: number; height: number; type: 'target' | 'source'; position: 'left' | 'right' | 'top' | 'bottom'; }; type SequenceActorNodeData = Simplify; viewHeight: number; }>; type SequenceParallelAreaData = Simplify; type CompoundNodeData = Simplify> & { /** * View layout direction, used by DefaultHandles to position node handles */ viewLayoutDir?: AutoLayoutDirection | undefined; /** * View this node belongs to */ viewId: ViewId; depth: number; icon?: IconUrl; drifts: NonEmptyReadonlyArray | null; }>; type CompoundElementNodeData = Simplify; type CompoundDeploymentNodeData = Simplify; type ViewGroupNodeData = Simplify; type ElementNode = BaseNode; type DeploymentElementNode = BaseNode; type SequenceActorNode = BaseNode; type SequenceParallelArea = BaseNode; type CompoundElementNode = BaseNode; type CompoundDeploymentNode = BaseNode; type ViewGroupNode = BaseNode; type AnyNode = ElementNode | DeploymentElementNode | CompoundElementNode | CompoundDeploymentNode | ViewGroupNode | SequenceActorNode | SequenceParallelArea; type NodeType = AnyNode['type']; type NodeData = ExclusiveUnion<{ ElementNodeData: ElementNodeData; DeploymentElementNodeData: DeploymentElementNodeData; CompoundElementNodeData: CompoundElementNodeData; CompoundDeploymentNodeData: CompoundDeploymentNodeData; ViewGroupNodeData: ViewGroupNodeData; SequenceActorNodeData: SequenceActorNodeData; SequenceParallelAreaData: SequenceParallelAreaData; }>; type Node = Extract; type NodeProps = BaseNodeProps>; type RelationshipEdgeData = Simplify> & { notes: MarkdownOrString | null; labelXY: XYPosition | null; controlPoints: XYPosition[] | undefined | null; }>; type SequenceStepEdgeData = Simplify> & { notes: MarkdownOrString | null; labelXY: XYPosition | null; labelBBox: BBox; controlPoints: XYPosition[] | undefined | null; }>; type RelationshipEdge = BaseEdge; type SequenceStepEdge = BaseEdge; type AnyEdge = RelationshipEdge | SequenceStepEdge; type EdgeType = AnyEdge['type']; type Edge = Extract; type EdgeProps = BaseEdgeProps>; type EdgeData = ExclusiveUnion<{ RelationshipEdgeData: RelationshipEdgeData; SequenceStepEdgeData: SequenceStepEdgeData; }>; type NodeRenderer = FunctionComponent>; type NodeRenderers = { [T in NodeType]: NodeRenderer; }; type EdgeRenderer = FunctionComponent>; type EdgeRenderers = { [T in EdgeType]: EdgeRenderer; }; }