vue2-mind-map
Version:
`vue2-mind-map` 是一个功能丰富的思维导图可视化组件。该组件提供了完整的思维导图展示和交互功能,支持多种数据格式输入、灵活的布局配置、丰富的样式定制和流畅的用户交互体验。目前基于 Vue 2 构建。
81 lines (80 loc) • 2.93 kB
TypeScript
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[];