import { GraphData } from '../../types'; import { IAbstractGraph } from '../../interface/graph'; export default abstract class LayoutController { graph: IAbstractGraph; destroyed: boolean; protected layoutCfg: any; protected layoutType: string | string[]; protected layoutMethods: any; protected data: any; constructor(graph: IAbstractGraph); protected initLayout(): void; getLayoutType(): string | string[]; protected getLayoutCfgType(layoutCfg: any): string | string[]; protected isLayoutTypeSame(cfg: any): boolean; /** * @param {function} success callback * @return {boolean} 是否使用web worker布局 */ abstract layout(success?: () => void): boolean; refreshLayout(): void; abstract updateLayoutCfg(cfg: any): any; changeLayout(cfg: any): void; changeData(): void; destoryLayoutMethods(): void; destroyLayout(): void; setDataFromGraph(): GraphData; protected reLayoutMethod(layoutMethod: any, layoutCfg: any): Promise; relayout(reloadData?: boolean): boolean; protected filterLayoutData(data: any, cfg: any): any; protected getLayoutBBox(nodes: any): { groupNodes: unknown[][]; layoutNodes: any[]; }; layoutAnimate(): void; moveToZero(): void; initPositions(center: any, nodes: any): boolean; destroy(): void; }