import { BaseThemeConfig, IBaseGraphProps } from ".."; import { Align, BloodlineDirection, BloodlineNodeType } from "./constants"; import React from "react"; export type DepthToolbarData = { direction: BloodlineDirection; depth: number; count: number; siblings: SiblingNodes; }; export interface IBloodlineTheme extends BaseThemeConfig { /** * @description 对齐方式 * @default 'top' */ align?: Align; } export interface IBloodlineGraphProps extends Omit { root?: BloodlineVersionsNode; theme?: IBloodlineTheme; PropertyPopover: React.ComponentType<{ origin: BloodlineVersionsNode; version: VersionProps; isRoot: boolean; }>; getRelation: (direction: BloodlineDirection, source: BaseBloodNode, version: VersionProps) => Promise>; getChildren: (group: BloodlineNodeGroup, pageSize: number, pageNum: number, direction: BloodlineDirection) => Promise<{ total: number; list: Array; }>; } export type BaseBloodNode = { relationship?: string; id: string; code?: string; type: string; name: string; hasChanged?: boolean; width?: number; height?: number; [key: string]: any; }; export type ConnectorState = { state?: 'expanded' | 'loading' | 'collapsed'; count?: number; list?: Array; }; export type VersionProps = { id: string; code?: string; version: string; status?: string; bloodlineVersion?: string; properties?: Record; upstream?: ConnectorState; downstream?: ConnectorState; hasChanged?: boolean; hit?: boolean; }; export type BloodlineVersionsNode = BaseBloodNode & { type: BloodlineNodeType.Service; versions: Array; hit?: boolean; }; export type BloodlineNodeGroup = BaseBloodNode & { type: BloodlineNodeType.ServiceGroup; count: number; expanded?: boolean; state?: { expanded?: boolean; loading: boolean; list: Array; current: number; total: number; }; }; export type SiblingNodes = Array; export type InnerNodeData = { isRoot: boolean; depth: number; }; export type ServiceNodeData = { origin: BloodlineVersionsNode; siblings: SiblingNodes; direction: BloodlineDirection; }; export type MultipleVersionsNodeData = { origin: BloodlineVersionsNode; siblings: SiblingNodes; direction: BloodlineDirection; }; export type GroupNodeData = { origin: BloodlineNodeGroup; siblings: SiblingNodes; direction: BloodlineDirection; };