UNPKG

2.63 kBTypeScriptView Raw
1/**
2 * @fileOverview grid layout
3 * @author shiwu.wyy@antfin.com
4 * this algorithm refers to <cytoscape.js> - https://github.com/cytoscape/cytoscape.js/
5 */
6import { Base } from './base';
7import { OutNode, Edge, PointTuple } from './types';
8declare type INode = OutNode & {
9 degree: number;
10 size: number | PointTuple;
11};
12/**
13 * 网格布局
14 */
15export declare class GridLayout extends Base {
16 /** 布局起始点 */
17 begin: PointTuple;
18 /** prevents node overlap, may overflow boundingBox if not enough space */
19 preventOverlap: boolean;
20 /** extra spacing around nodes when preventOverlap: true */
21 preventOverlapPadding: number;
22 /** uses all available space on false, uses minimal space on true */
23 condense: boolean;
24 /** force num of rows in the grid */
25 rows: number | undefined;
26 /** force num of columns in the grid */
27 cols: number | undefined;
28 /** returns { row, col } for element */
29 position: ((node: INode) => {
30 row?: number;
31 col?: number;
32 }) | undefined;
33 /** a sorting function to order the nodes; e.g. function(a, b){ return a.datapublic ('weight') - b.data('weight') } */
34 sortBy: string;
35 nodeSize: number | number[];
36 nodes: INode[];
37 edges: Edge[];
38 width: number;
39 height: number;
40 private cells;
41 private row;
42 private col;
43 private splits;
44 private columns;
45 private cellWidth;
46 private cellHeight;
47 private cellUsed;
48 private id2manPos;
49 constructor(options?: GridLayout.GridLayoutOptions);
50 getDefaultCfg(): {
51 begin: number[];
52 preventOverlap: boolean;
53 preventOverlapPadding: number;
54 condense: boolean;
55 rows: undefined;
56 cols: undefined;
57 position: undefined;
58 sortBy: string;
59 nodeSize: number;
60 };
61 /**
62 * 执行布局
63 */
64 execute(): {
65 edges: Edge[];
66 nodes: INode[];
67 } | undefined;
68 private small;
69 private large;
70 private used;
71 private use;
72 private moveToNextCell;
73 private getPos;
74 getType(): string;
75}
76export declare namespace GridLayout {
77 interface GridLayoutOptions {
78 type: 'grid';
79 width?: number;
80 height?: number;
81 begin?: PointTuple;
82 preventOverlap?: boolean;
83 nodeSize?: number | number[];
84 preventOverlapPadding?: number;
85 condense?: boolean;
86 rows?: number;
87 cols?: number;
88 sortBy?: string;
89 workerEnabled?: boolean;
90 position?: ((node: INode) => {
91 row?: number;
92 col?: number;
93 }) | undefined;
94 }
95}
96export {};
97
\No newline at end of file