UNPKG

cs-element

Version:

Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support

260 lines 8.31 kB
/** * Интерфейсы для системы визуализации CSElement */ import { ICSElement } from './interfaces'; /** * Форматы визуализации */ export type VisualizationFormat = 'ascii' | 'svg' | 'html' | 'json' | 'mermaid' | 'dot'; /** * Типы макетов для визуализации */ export type LayoutType = 'tree' | 'force' | 'circular' | 'hierarchical' | 'grid' | 'radial'; /** * Направления для древовидного макета */ export type TreeDirection = 'top-bottom' | 'bottom-top' | 'left-right' | 'right-left'; /** * Стили для узлов */ export interface NodeStyle { /** Цвет фона */ backgroundColor?: string; /** Цвет границы */ borderColor?: string; /** Толщина границы */ borderWidth?: number; /** Цвет текста */ textColor?: string; /** Размер шрифта */ fontSize?: number; /** Форма узла */ shape?: 'rectangle' | 'circle' | 'ellipse' | 'diamond' | 'hexagon'; /** Ширина узла */ width?: number; /** Высота узла */ height?: number; /** Отступы */ padding?: number; /** Радиус скругления углов */ borderRadius?: number; } /** * Стили для связей */ export interface EdgeStyle { /** Цвет линии */ color?: string; /** Толщина линии */ width?: number; /** Стиль линии */ style?: 'solid' | 'dashed' | 'dotted'; /** Тип стрелки */ arrowType?: 'none' | 'arrow' | 'diamond' | 'circle'; /** Кривизна линии */ curvature?: number; } /** * Опции визуализации */ export interface VisualizationOptions { /** Формат вывода */ format?: VisualizationFormat; /** Тип макета */ layout?: LayoutType; /** Направление для древовидного макета */ direction?: TreeDirection; /** Включить интерактивность (для HTML/SVG) */ interactive?: boolean; /** Показывать данные элементов */ showData?: boolean; /** Показывать ID элементов */ showIds?: boolean; /** Показывать индексы */ showIndices?: boolean; /** Максимальная глубина отображения */ maxDepth?: number; /** Ширина области визуализации */ width?: number; /** Высота области визуализации */ height?: number; /** Стили для узлов */ nodeStyle?: NodeStyle; /** Стили для связей */ edgeStyle?: EdgeStyle; /** Расстояние между узлами */ nodeSpacing?: number; /** Расстояние между уровнями */ levelSpacing?: number; /** Заголовок диаграммы */ title?: string; /** Включить легенду */ showLegend?: boolean; /** Включить миниатюру навигации */ showMinimap?: boolean; /** Анимации (для интерактивных форматов) */ animations?: boolean; /** Фильтр элементов */ filter?: (element: ICSElement) => boolean; /** Кастомный рендерер узлов */ customNodeRenderer?: (element: ICSElement, style: NodeStyle) => string; /** Кастомные CSS классы */ cssClasses?: { container?: string; node?: string; edge?: string; text?: string; }; } /** * Результат визуализации */ export interface VisualizationResult { /** Сгенерированный контент */ content: string; /** Формат результата */ format: VisualizationFormat; /** Метаданные */ metadata: { /** Количество отображенных узлов */ nodeCount: number; /** Количество связей */ edgeCount: number; /** Максимальная глубина */ maxDepth: number; /** Время генерации (мс) */ generationTime: number; /** Размеры */ dimensions?: { width: number; height: number; }; }; /** Дополнительные файлы (например, CSS для HTML) */ additionalFiles?: { [filename: string]: string; }; } /** * Узел для визуализации */ export interface VisualizationNode { /** ID узла */ id: string; /** Отображаемый текст */ label: string; /** Позиция X */ x?: number; /** Позиция Y */ y?: number; /** Ширина */ width?: number; /** Высота */ height?: number; /** Уровень в иерархии */ level: number; /** Ссылка на элемент */ element: ICSElement; /** Стиль узла */ style?: NodeStyle; /** Дополнительные данные */ data?: Record<string, any>; } /** * Связь для визуализации */ export interface VisualizationEdge { /** ID связи */ id: string; /** ID исходного узла */ source: string; /** ID целевого узла */ target: string; /** Тип связи */ type: 'parent-child' | 'owner' | 'reference'; /** Стиль связи */ style?: EdgeStyle; /** Метка связи */ label?: string; } /** * Граф для визуализации */ export interface VisualizationGraph { /** Узлы */ nodes: VisualizationNode[]; /** Связи */ edges: VisualizationEdge[]; /** Метаданные графа */ metadata: { rootId: string; maxDepth: number; totalNodes: number; totalEdges: number; }; } /** * Движок визуализации */ export interface VisualizationEngine { /** Имя движка */ name: string; /** Поддерживаемые форматы */ supportedFormats: VisualizationFormat[]; /** Генерация визуализации */ render(graph: VisualizationGraph, options: VisualizationOptions): Promise<VisualizationResult>; /** Проверка поддержки формата */ supportsFormat(format: VisualizationFormat): boolean; } /** * Менеджер визуализации */ export interface VisualizationManager { /** Зарегистрировать движок */ registerEngine(engine: VisualizationEngine): void; /** Получить движок для формата */ getEngine(format: VisualizationFormat): VisualizationEngine | null; /** Получить все движки */ getEngines(): VisualizationEngine[]; /** Создать граф из элемента */ createGraph(element: ICSElement, options?: VisualizationOptions): VisualizationGraph; /** Визуализировать элемент */ visualize(element: ICSElement, options?: VisualizationOptions): Promise<VisualizationResult>; } /** * Событие визуализации */ export interface VisualizationEvent { type: 'render:start' | 'render:complete' | 'render:error' | 'graph:created'; element: ICSElement; options: VisualizationOptions; result?: VisualizationResult; error?: Error; timestamp: number; } /** * Предустановленные темы */ export interface VisualizationTheme { name: string; nodeStyle: NodeStyle; edgeStyle: EdgeStyle; backgroundColor?: string; colors: { primary: string; secondary: string; accent: string; text: string; border: string; }; } /** * Экспортер в файл */ export interface FileExporter { /** Экспорт в файл */ export(result: VisualizationResult, filename: string): Promise<void>; /** Поддерживаемые форматы */ supportedFormats: VisualizationFormat[]; } //# sourceMappingURL=visualization-interfaces.d.ts.map