1 |
|
2 |
|
3 |
|
4 |
|
5 | import { Edge, OutNode, PointTuple, ComboConfig } from './types';
|
6 | import { Base } from './base';
|
7 | declare type Combo = ComboConfig & {
|
8 | x?: number;
|
9 | y?: number;
|
10 | name?: string | number;
|
11 | cx: number;
|
12 | cy: number;
|
13 | count?: number;
|
14 | depth?: number;
|
15 | children?: any[];
|
16 | empty?: boolean;
|
17 | minX?: number;
|
18 | maxX?: number;
|
19 | minY?: number;
|
20 | maxY?: number;
|
21 | size?: number;
|
22 | r?: number;
|
23 | itemType?: string;
|
24 | };
|
25 | declare type Node = OutNode & {
|
26 | depth: number;
|
27 | itemType?: string;
|
28 | comboId?: string;
|
29 | };
|
30 |
|
31 |
|
32 |
|
33 | export declare class ComboForceLayout extends Base {
|
34 |
|
35 | center: PointTuple;
|
36 |
|
37 | maxIteration: number;
|
38 |
|
39 | gravity: number;
|
40 |
|
41 | comboGravity: number;
|
42 |
|
43 | linkDistance: number | ((d?: unknown) => number);
|
44 | /** 每次迭代位移的衰减相关参数 */
|
45 | alpha: number;
|
46 | alphaMin: number;
|
47 | alphaDecay: number;
|
48 | alphaTarget: number;
|
49 | /** 节点运动速度衰减参数 */
|
50 | velocityDecay: number;
|
51 | /** 边引力大小 */
|
52 | edgeStrength: number | ((d?: unknown) => number);
|
53 | /** 节点引力大小 */
|
54 | nodeStrength: number | ((d?: unknown) => number);
|
55 | /** 是否开启防止重叠 */
|
56 | preventOverlap: boolean;
|
57 | /** 是否开启节点之间的防止重叠 */
|
58 | preventNodeOverlap: boolean;
|
59 | /** 是否开启 Combo 之间的防止重叠 */
|
60 | preventComboOverlap: boolean;
|
61 | /** 防止重叠的碰撞力大小 */
|
62 | collideStrength: number | undefined;
|
63 | /** 防止重叠的碰撞力大小 */
|
64 | nodeCollideStrength: number | undefined;
|
65 | /** 防止重叠的碰撞力大小 */
|
66 | comboCollideStrength: number | undefined;
|
67 | /** 节点大小,用于防止重叠 */
|
68 | nodeSize: number | number[] | ((d?: unknown) => number) | undefined;
|
69 | /** 节点最小间距,防止重叠时的间隙 */
|
70 | nodeSpacing: ((d?: unknown) => number) | number | undefined;
|
71 | /** Combo 最小间距,防止重叠时的间隙 */
|
72 | comboSpacing: ((d?: unknown) => number) | number | undefined;
|
73 | /** Combo 内部的 padding */
|
74 | comboPadding: ((d?: unknown) => number) | number | number[] | undefined;
|
75 | /** 优化计算斥力的速度,两节点间距超过 optimizeRangeFactor * width 则不再计算斥力和重叠斥力 */
|
76 | optimizeRangeFactor: number;
|
77 | /** 每次迭代的回调函数 */
|
78 | onTick: () => void;
|
79 |
|
80 | onLayoutEnd: () => void;
|
81 |
|
82 | depthAttractiveForceScale: number;
|
83 |
|
84 | depthRepulsiveForceScale: number;
|
85 |
|
86 | nodes: Node[];
|
87 | edges: Edge[];
|
88 | combos: Combo[];
|
89 | private comboTrees;
|
90 | private comboTree;
|
91 | private width;
|
92 | private height;
|
93 | private bias;
|
94 | private nodeMap;
|
95 | private oriComboMap;
|
96 | private indexMap;
|
97 | private comboMap;
|
98 | private previousLayouted;
|
99 | constructor(options?: ComboForceLayout.ComboForceLayoutOptions);
|
100 | getDefaultCfg(): {
|
101 | maxIteration: number;
|
102 | center: number[];
|
103 | gravity: number;
|
104 | speed: number;
|
105 | comboGravity: number;
|
106 | preventOverlap: boolean;
|
107 | preventComboOverlap: boolean;
|
108 | preventNodeOverlap: boolean;
|
109 | nodeSpacing: undefined;
|
110 | collideStrength: undefined;
|
111 | nodeCollideStrength: number;
|
112 | comboCollideStrength: number;
|
113 | comboSpacing: number;
|
114 | comboPadding: number;
|
115 | edgeStrength: number;
|
116 | nodeStrength: number;
|
117 | linkDistance: number;
|
118 | };
|
119 | |
120 |
|
121 |
|
122 | execute(): void;
|
123 | run(): void;
|
124 | private initVals;
|
125 | private initPos;
|
126 | private getComboMap;
|
127 | private applyComboCenterForce;
|
128 | private applyCalculate;
|
129 | |
130 |
|
131 |
|
132 |
|
133 | private updateComboSizes;
|
134 | |
135 |
|
136 |
|
137 | private comboNonOverlapping;
|
138 | |
139 |
|
140 |
|
141 |
|
142 |
|
143 | private calRepulsive;
|
144 | |
145 |
|
146 |
|
147 |
|
148 |
|
149 | private calAttractive;
|
150 | getType(): string;
|
151 | }
|
152 | export declare namespace ComboForceLayout {
|
153 | interface ComboForceLayoutOptions {
|
154 | type: 'comboForce';
|
155 | center?: PointTuple;
|
156 | maxIteration?: number;
|
157 | linkDistance?: number | ((d?: unknown) => number);
|
158 | nodeStrength?: number | ((d?: unknown) => number);
|
159 | edgeStrength?: number | ((d?: unknown) => number);
|
160 | preventOverlap?: boolean;
|
161 | preventNodeOverlap?: boolean;
|
162 | preventComboOverlap?: boolean;
|
163 | collideStrength?: number | undefined;
|
164 | nodeCollideStrength?: number | undefined;
|
165 | comboCollideStrength?: number | undefined;
|
166 | nodeSize?: number | number[] | ((d?: unknown) => number) | undefined;
|
167 | nodeSpacing?: ((d?: unknown) => number) | number | undefined;
|
168 | comboSpacing?: ((d?: unknown) => number) | number | undefined;
|
169 | comboPadding?: ((d?: unknown) => number) | number | number[] | undefined;
|
170 | alpha?: number;
|
171 | alphaDecay?: number;
|
172 | alphaMin?: number;
|
173 | onTick?: () => void;
|
174 | onLayoutEnd?: () => void;
|
175 | gravity?: number;
|
176 | comboGravity?: number;
|
177 | optimizeRangeFactor?: number;
|
178 | depthAttractiveForceScale?: number;
|
179 | depthRepulsiveForceScale?: number;
|
180 | velocityDecay?: number;
|
181 | workerEnabled?: boolean;
|
182 | }
|
183 | }
|
184 | export {};
|