UNPKG

code-relation-analyzer

Version:

A TypeScript project dependency analysis tool that generates function-level dependency graphs

326 lines 7.92 kB
/** * 可视化相关类型定义 */ export interface VisualizationOptions { /** 图表类型 */ type: VisualizationType; /** 画布尺寸 */ dimensions: Dimensions; /** 布局算法 */ layout: LayoutAlgorithm; /** 主题配置 */ theme: ThemeConfig; /** 交互配置 */ interaction: InteractionConfig; /** 动画配置 */ animation: AnimationConfig; /** 导出配置 */ export: ExportConfig; } export type VisualizationType = 'force-directed' | 'hierarchical' | 'circular' | 'tree' | 'sankey' | 'chord' | 'matrix'; export interface Dimensions { /** 宽度 */ width: number; /** 高度 */ height: number; /** 边距 */ margin: { top: number; right: number; bottom: number; left: number; }; } export interface LayoutAlgorithm { /** 算法类型 */ type: LayoutType; /** 算法参数 */ parameters: Record<string, any>; } export type LayoutType = 'force' | 'hierarchical' | 'circular' | 'grid' | 'radial' | 'layered'; export interface ThemeConfig { /** 主题名称 */ name: string; /** 颜色配置 */ colors: ColorScheme; /** 字体配置 */ fonts: FontConfig; /** 样式配置 */ styles: StyleConfig; } export interface ColorScheme { /** 主色调 */ primary: string; /** 次要色调 */ secondary: string; /** 背景色 */ background: string; /** 文本色 */ text: string; /** 节点颜色映射 */ nodeColors: Record<string, string>; /** 边颜色映射 */ edgeColors: Record<string, string>; /** 高亮色 */ highlight: string; /** 选中色 */ selected: string; } export interface FontConfig { /** 主字体 */ primary: string; /** 代码字体 */ monospace: string; /** 字体大小 */ sizes: { small: number; medium: number; large: number; xlarge: number; }; } export interface StyleConfig { /** 节点样式 */ node: NodeStyleConfig; /** 边样式 */ edge: EdgeStyleConfig; /** 标签样式 */ label: LabelStyleConfig; } export interface NodeStyleConfig { /** 默认半径 */ defaultRadius: number; /** 最小半径 */ minRadius: number; /** 最大半径 */ maxRadius: number; /** 边框宽度 */ strokeWidth: number; /** 透明度 */ opacity: number; } export interface EdgeStyleConfig { /** 默认宽度 */ defaultWidth: number; /** 最小宽度 */ minWidth: number; /** 最大宽度 */ maxWidth: number; /** 透明度 */ opacity: number; /** 箭头大小 */ arrowSize: number; } export interface LabelStyleConfig { /** 字体大小 */ fontSize: number; /** 字体颜色 */ color: string; /** 背景色 */ backgroundColor?: string; /** 内边距 */ padding: number; /** 是否显示 */ visible: boolean; } export interface InteractionConfig { /** 是否启用缩放 */ zoom: boolean; /** 是否启用拖拽 */ drag: boolean; /** 是否启用悬停 */ hover: boolean; /** 是否启用点击 */ click: boolean; /** 是否启用选择 */ selection: boolean; /** 是否启用过滤 */ filter: boolean; /** 是否启用搜索 */ search: boolean; } export interface AnimationConfig { /** 是否启用动画 */ enabled: boolean; /** 动画持续时间 */ duration: number; /** 缓动函数 */ easing: EasingFunction; /** 延迟时间 */ delay: number; } export type EasingFunction = 'linear' | 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'bounce' | 'elastic'; export interface ExportConfig { /** 支持的格式 */ formats: ExportFormat[]; /** 默认格式 */ defaultFormat: ExportFormat; /** 质量设置 */ quality: number; /** 是否包含数据 */ includeData: boolean; } export type ExportFormat = 'png' | 'svg' | 'pdf' | 'json' | 'html'; export interface RenderContext { /** SVG容器 */ svg: any; /** 画布尺寸 */ dimensions: Dimensions; /** 缩放行为 */ zoom: any; /** 仿真 */ simulation?: any; /** 数据 */ data: GraphData; /** 配置 */ options: VisualizationOptions; } export interface GraphData { /** 节点数据 */ nodes: GraphNodeData[]; /** 边数据 */ edges: GraphEdgeData[]; /** 元数据 */ metadata: GraphMetadata; } export interface GraphNodeData { /** 节点ID */ id: string; /** 显示标签 */ label: string; /** 节点类型 */ type: string; /** 分组 */ group?: string; /** 大小 */ size: number; /** 颜色 */ color: string; /** 位置 */ x?: number; /** 位置 */ y?: number; /** 固定位置 */ fx?: number; /** 固定位置 */ fy?: number; /** 自定义属性 */ properties: Record<string, any>; } export interface GraphEdgeData { /** 边ID */ id: string; /** 源节点ID */ source: string | GraphNodeData; /** 目标节点ID */ target: string | GraphNodeData; /** 边类型 */ type: string; /** 权重 */ weight: number; /** 颜色 */ color: string; /** 宽度 */ width: number; /** 自定义属性 */ properties: Record<string, any>; } export interface GraphMetadata { /** 标题 */ title: string; /** 描述 */ description?: string; /** 创建时间 */ createdAt: Date; /** 节点数量 */ nodeCount: number; /** 边数量 */ edgeCount: number; /** 统计信息 */ statistics: Record<string, number>; } export interface FilterOptions { /** 节点过滤器 */ nodeFilter?: NodeFilter; /** 边过滤器 */ edgeFilter?: EdgeFilter; /** 文本搜索 */ searchText?: string; /** 类型过滤 */ typeFilter?: string[]; /** 大小范围 */ sizeRange?: [number, number]; /** 权重范围 */ weightRange?: [number, number]; } export interface NodeFilter { /** 包含的节点类型 */ includeTypes?: string[]; /** 排除的节点类型 */ excludeTypes?: string[]; /** 最小大小 */ minSize?: number; /** 最大大小 */ maxSize?: number; /** 自定义过滤函数 */ customFilter?: (node: GraphNodeData) => boolean; } export interface EdgeFilter { /** 包含的边类型 */ includeTypes?: string[]; /** 排除的边类型 */ excludeTypes?: string[]; /** 最小权重 */ minWeight?: number; /** 最大权重 */ maxWeight?: number; /** 自定义过滤函数 */ customFilter?: (edge: GraphEdgeData) => boolean; } export interface LegendConfig { /** 是否显示图例 */ visible: boolean; /** 图例位置 */ position: LegendPosition; /** 图例项 */ items: LegendItem[]; } export type LegendPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left' | 'right'; export interface LegendItem { /** 标签 */ label: string; /** 颜色 */ color: string; /** 形状 */ shape: LegendShape; /** 描述 */ description?: string; } export type LegendShape = 'circle' | 'square' | 'triangle' | 'diamond' | 'line'; export interface TooltipConfig { /** 是否启用工具提示 */ enabled: boolean; /** 工具提示模板 */ template: string; /** 延迟显示时间 */ delay: number; /** 样式配置 */ style: TooltipStyle; } export interface TooltipStyle { /** 背景色 */ backgroundColor: string; /** 文本色 */ color: string; /** 边框色 */ borderColor: string; /** 字体大小 */ fontSize: number; /** 内边距 */ padding: number; /** 圆角半径 */ borderRadius: number; /** 最大宽度 */ maxWidth: number; } //# sourceMappingURL=visualization.d.ts.map