@@ -25,12 +25,14 @@ const useDerivedProp = <Target, Output extends string | number>(
25
25
26
26
const useComputeForces = < Node extends InputNode , Link extends InputLink > ( {
27
27
linkDistance,
28
+ centeringStrength,
28
29
repulsivity,
29
30
distanceMin,
30
31
distanceMax,
31
32
center,
32
33
} : {
33
34
linkDistance : NetworkCommonProps < Node , Link > [ 'linkDistance' ]
35
+ centeringStrength : NetworkCommonProps < Node , Link > [ 'centeringStrength' ]
34
36
repulsivity : NetworkCommonProps < Node , Link > [ 'repulsivity' ]
35
37
distanceMin : NetworkCommonProps < Node , Link > [ 'distanceMin' ]
36
38
distanceMax : NetworkCommonProps < Node , Link > [ 'distanceMax' ]
@@ -42,9 +44,9 @@ const useComputeForces = <Node extends InputNode, Link extends InputLink>({
42
44
const centerY = center [ 1 ]
43
45
44
46
return useMemo ( ( ) => {
45
- const linkForce = forceLink < TransientNode < Node > , TransientLink < Node , Link > > ( ) . distance (
46
- link => getLinkDistance ( link . data )
47
- )
47
+ const linkForce = forceLink < TransientNode < Node > , TransientLink < Node , Link > > ( )
48
+ . distance ( link => getLinkDistance ( link . data ) )
49
+ . strength ( centeringStrength )
48
50
49
51
const chargeForce = forceManyBody ( )
50
52
. strength ( - repulsivity )
@@ -54,7 +56,15 @@ const useComputeForces = <Node extends InputNode, Link extends InputLink>({
54
56
const centerForce = forceCenter ( centerX , centerY )
55
57
56
58
return { link : linkForce , charge : chargeForce , center : centerForce }
57
- } , [ getLinkDistance , repulsivity , distanceMin , distanceMax , centerX , centerY ] )
59
+ } , [
60
+ getLinkDistance ,
61
+ centeringStrength ,
62
+ repulsivity ,
63
+ distanceMin ,
64
+ distanceMax ,
65
+ centerX ,
66
+ centerY ,
67
+ ] )
58
68
}
59
69
60
70
const useNodeStyle = < Node extends InputNode , Link extends InputLink > ( {
@@ -141,6 +151,7 @@ export const useNetwork = <Node extends InputNode = InputNode, Link extends Inpu
141
151
nodes,
142
152
links,
143
153
linkDistance = commonDefaultProps . linkDistance ,
154
+ centeringStrength = commonDefaultProps . centeringStrength ,
144
155
repulsivity = commonDefaultProps . repulsivity ,
145
156
distanceMin = commonDefaultProps . distanceMin ,
146
157
distanceMax = commonDefaultProps . distanceMax ,
@@ -159,6 +170,7 @@ export const useNetwork = <Node extends InputNode = InputNode, Link extends Inpu
159
170
nodes : Node [ ]
160
171
links : Link [ ]
161
172
linkDistance ?: NetworkCommonProps < Node , Link > [ 'linkDistance' ]
173
+ centeringStrength ?: NetworkCommonProps < Node , Link > [ 'centeringStrength' ]
162
174
repulsivity ?: NetworkCommonProps < Node , Link > [ 'repulsivity' ]
163
175
distanceMin ?: NetworkCommonProps < Node , Link > [ 'distanceMin' ]
164
176
distanceMax ?: NetworkCommonProps < Node , Link > [ 'distanceMax' ]
@@ -180,6 +192,7 @@ export const useNetwork = <Node extends InputNode = InputNode, Link extends Inpu
180
192
181
193
const forces = useComputeForces < Node , Link > ( {
182
194
linkDistance,
195
+ centeringStrength,
183
196
repulsivity,
184
197
distanceMin,
185
198
distanceMax,
0 commit comments