UNPKG

vue2-mind-map

Version:

`vue2-mind-map` 是一个功能丰富的思维导图可视化组件。该组件提供了完整的思维导图展示和交互功能,支持多种数据格式输入、灵活的布局配置、丰富的样式定制和流畅的用户交互体验。目前基于 Vue 2 构建。

106 lines (105 loc) 4.4 kB
import { Vector } from "../../common/entities/Core/Vector"; import { ContentType, MindNode } from './MindNode'; import { Element } from "../../common/entities/Dom/Element"; import { Line } from "../../common/entities/Shapes/Line"; import { AlignOptions } from "../algorithm/Alignment"; import { BaseStyleOptions, BaseDragOptions, BaseZoomOptions, BaseVisualizerOptions, BaseEntityDestroyedEvent, BaseLayoutUpdatedEvent, BaseVisualizerEventMap, InputDataType as BaseInputDataType, BaseRawTreeNodeData, BaseRawFlatNodeData } from '../../diagram/Base2DVisualizerTypes'; import { Base2DVisualizer } from '../../diagram/Base2DVisualizer'; export interface TreeNode extends BaseRawTreeNodeData { id?: string; position?: { x: number; y: number; } | Vector; size?: { x: number; y: number; } | Vector; children?: TreeNode[]; content?: ContentType<TreeNode>; [key: string]: any; } export interface FlatNode extends BaseRawFlatNodeData { id?: string; parentId?: string; position?: { x: number; y: number; } | Vector; size?: { x: number; y: number; } | Vector; content?: ContentType<FlatNode>; [key: string]: any; } export interface MindMapStyle extends BaseStyleOptions { lineWidth?: number; lineColor?: string; nodeBorderWidth?: number; nodeBgColor?: string; nodeBorderColor?: string; } export interface MindMapDragOptions extends BaseDragOptions { } export interface MindMapZoomOptions extends BaseZoomOptions { } export interface MindMapAlign { mode: AlignOptions['mode']; targetNodeId?: AlignOptions['targetNodeId']; } export interface MindMapOptions extends BaseVisualizerOptions<MindMapStyle, MindMapDragOptions, MindMapZoomOptions, TreeNode | FlatNode, MindNode> { isHorizontal?: boolean; siblingSeparation?: number; levelSeparation?: number; lineShape?: 'straight' | 'curved' | 'zigzag'; align?: MindMapAlign; } export declare enum MindMapEvent { NODE_DESTROYED = "node:destroyed", LAYOUT_UPDATED = "layout:updated", MINDMAP_DESTROYED = "mindmap:destroyed" } export interface MindMapNodeDestroyEvent extends BaseEntityDestroyedEvent<TreeNode | FlatNode, MindNode> { } export interface MindMapLayoutEvent extends BaseLayoutUpdatedEvent { direction: 'horizontal' | 'vertical'; } export interface MindMapEventMap extends BaseVisualizerEventMap<TreeNode | FlatNode, MindNode> { [MindMapEvent.NODE_DESTROYED]: MindMapNodeDestroyEvent; [MindMapEvent.LAYOUT_UPDATED]: MindMapLayoutEvent; [MindMapEvent.MINDMAP_DESTROYED]: void; } declare type MindMapInputData = BaseInputDataType<MindNode, TreeNode, FlatNode>; export declare class MindMap extends Base2DVisualizer<MindNode, // TEntity MindMapInputData, // TRawInputType // TRawInputType TreeNode | FlatNode, // TRawStoredType MindMapStyle, MindMapDragOptions, MindMapZoomOptions, MindMapOptions, MindMapEventMap> { private _isHorizontal; private _siblingSeparation; private _levelSeparation; private _lineShape; private align; private linesMap; constructor(data: MindMapInputData, containerDom: HTMLElement, options?: MindMapOptions); protected getDefaultStyles(): Required<MindMapStyle>; protected getDefaultDragOptions(): Required<MindMapDragOptions>; protected getDefaultZoomOptions(): Required<MindMapZoomOptions>; protected _processDataToEntities(data: MindMapInputData): MindNode; protected _calculateLayout(rootEntity: MindNode): void; protected _convertEntitiesToVisualsRecursive(entity: MindNode): [Element[], Line[]]; protected _applyStylesToVisualElement(element: Element, entity: MindNode): void; protected _applyRootContainerStyles(): void; protected _handleEntityDrag(draggedElement: Element, deltaX: number, deltaY: number): void; protected _findEntityByIdRecursive(currentEntity: MindNode, entityId: string): MindNode | undefined; protected _clearCustomResources(): void; get isHorizontal(): boolean; setHorizontal(isHorizontal: boolean): void; private updateConnectionsForNode; private createMindMapConnectionLine; private calculateConnectionPoint; private createMindNodesFromTreeData; private createMindNodesFromFlatData; } export {};