UNPKG

vue2-mind-map

Version:

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

81 lines (80 loc) 2.93 kB
import { Vector } from "../common/entities/Core/Vector"; import { MouseButton } from "../common/entities/Abilities/Draggable/BaseDraggable"; import { BaseEventMap } from "../common/entities/Core/EventEmitter"; export interface BaseEntity { id?: string; position: Vector; size: Vector; children: BaseEntity[]; parent?: BaseEntity | null; content?: any; [key: string]: any; } export interface BaseRawData { id?: string; position?: { x: number; y: number; } | Vector; size?: { x: number; y: number; } | Vector; content?: any; [key: string]: any; } export interface BaseRawTreeNodeData extends BaseRawData { children?: BaseRawTreeNodeData[]; } export interface BaseRawFlatNodeData extends BaseRawData { parentId?: string; } /** 构造函数和 setRootEntityData 接受的输入数据类型 */ export declare type InputDataType<TEntity extends BaseEntity, TRawTreeNode extends BaseRawTreeNodeData, TRawFlatNode extends BaseRawFlatNodeData> = TEntity | TRawTreeNode | TRawFlatNode[]; export interface BaseStyleOptions { [key: string]: any; } export interface BaseDragOptions { enableEntityDrag?: boolean; enableCanvasDrag?: boolean; dragEntityButton?: MouseButton[] | MouseButton; dragCanvasButton?: MouseButton[] | MouseButton; useThrottle?: boolean; } export interface BaseZoomOptions { enableWheelZoom?: boolean; zoomStep?: number; invertWheelDirection?: boolean; minZoom?: number; maxZoom?: number; } /** 通用可视化器选项 */ export interface BaseVisualizerOptions<TStyle extends BaseStyleOptions, TDrag extends BaseDragOptions, TZoom extends BaseZoomOptions, TRawData, // 与实体关联的原始数据类型 TEntity extends BaseEntity> { initialOffset?: { x?: number; y?: number; }; style?: TStyle; dragOptions?: TDrag; zoomOptions?: TZoom; contentCallback?: (originalDataOrEntity: TRawData | TEntity) => string | HTMLElement | HTMLElement[]; } export declare enum BaseVisualizerEvent { ENTITY_DESTROYED = "entity:destroyed", LAYOUT_UPDATED = "layout:updated", VISUALIZER_DESTROYED = "visualizer:destroyed" } export interface BaseEntityDestroyedEvent<TRawData, TEntity extends BaseEntity> { entity: TEntity; originalData: TRawData | TEntity; } export interface BaseLayoutUpdatedEvent { } export interface BaseVisualizerEventMap<TRawData, TEntity extends BaseEntity> extends BaseEventMap { [BaseVisualizerEvent.ENTITY_DESTROYED]: BaseEntityDestroyedEvent<TRawData, TEntity>; [BaseVisualizerEvent.LAYOUT_UPDATED]: BaseLayoutUpdatedEvent; [BaseVisualizerEvent.VISUALIZER_DESTROYED]: void; } export declare const DEFAULT_BASE_DRAG_ENTITY_BUTTON = MouseButton.Left; export declare const DEFAULT_BASE_DRAG_CANVAS_BUTTON: MouseButton[];