@antv/layout 0.3.11 → 1.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/README.md +45 -32
  2. package/dist/3a54d760230d1933f953.worker.js +2 -0
  3. package/dist/3a54d760230d1933f953.worker.js.map +1 -0
  4. package/dist/index.min.js +2 -0
  5. package/dist/index.min.js.map +1 -0
  6. package/lib/Circular.d.ts +40 -0
  7. package/lib/Supervisor.d.ts +65 -0
  8. package/lib/index.d.ts +3 -3
  9. package/lib/registry.d.ts +3 -0
  10. package/lib/types.d.ts +128 -0
  11. package/lib/util/gpu.d.ts +22 -22
  12. package/lib/util/index.d.ts +6 -6
  13. package/lib/util/math.d.ts +9 -4
  14. package/lib/worker.d.ts +3 -0
  15. package/package.json +21 -95
  16. package/dist/layout.min.js +0 -3
  17. package/dist/layout.min.js.LICENSE.txt +0 -1
  18. package/dist/layout.min.js.map +0 -1
  19. package/es/index.d.ts +0 -3
  20. package/es/index.js +0 -6
  21. package/es/index.js.map +0 -1
  22. package/es/layout/base.d.ts +0 -22
  23. package/es/layout/base.js +0 -51
  24. package/es/layout/base.js.map +0 -1
  25. package/es/layout/circular.d.ts +0 -80
  26. package/es/layout/circular.js +0 -314
  27. package/es/layout/circular.js.map +0 -1
  28. package/es/layout/comboCombined.d.ts +0 -54
  29. package/es/layout/comboCombined.js +0 -348
  30. package/es/layout/comboCombined.js.map +0 -1
  31. package/es/layout/comboForce.d.ts +0 -134
  32. package/es/layout/comboForce.js +0 -801
  33. package/es/layout/comboForce.js.map +0 -1
  34. package/es/layout/concentric.d.ts +0 -67
  35. package/es/layout/concentric.js +0 -219
  36. package/es/layout/concentric.js.map +0 -1
  37. package/es/layout/constants.d.ts +0 -12
  38. package/es/layout/constants.js +0 -22
  39. package/es/layout/constants.js.map +0 -1
  40. package/es/layout/dagre/graph.d.ts +0 -91
  41. package/es/layout/dagre/graph.js +0 -4
  42. package/es/layout/dagre/graph.js.map +0 -1
  43. package/es/layout/dagre/index.d.ts +0 -8
  44. package/es/layout/dagre/index.js +0 -31
  45. package/es/layout/dagre/index.js.map +0 -1
  46. package/es/layout/dagre/src/acyclic.d.ts +0 -6
  47. package/es/layout/dagre/src/acyclic.js +0 -52
  48. package/es/layout/dagre/src/acyclic.js.map +0 -1
  49. package/es/layout/dagre/src/add-border-segments.d.ts +0 -3
  50. package/es/layout/dagre/src/add-border-segments.js +0 -32
  51. package/es/layout/dagre/src/add-border-segments.js.map +0 -1
  52. package/es/layout/dagre/src/coordinate-system.d.ts +0 -6
  53. package/es/layout/dagre/src/coordinate-system.js +0 -69
  54. package/es/layout/dagre/src/coordinate-system.js.map +0 -1
  55. package/es/layout/dagre/src/data/list.d.ts +0 -12
  56. package/es/layout/dagre/src/data/list.js +0 -48
  57. package/es/layout/dagre/src/data/list.js.map +0 -1
  58. package/es/layout/dagre/src/debug.d.ts +0 -3
  59. package/es/layout/dagre/src/debug.js +0 -24
  60. package/es/layout/dagre/src/debug.js.map +0 -1
  61. package/es/layout/dagre/src/greedy-fas.d.ts +0 -3
  62. package/es/layout/dagre/src/greedy-fas.js +0 -114
  63. package/es/layout/dagre/src/greedy-fas.js.map +0 -1
  64. package/es/layout/dagre/src/layout.d.ts +0 -3
  65. package/es/layout/dagre/src/layout.js +0 -518
  66. package/es/layout/dagre/src/layout.js.map +0 -1
  67. package/es/layout/dagre/src/nesting-graph.d.ts +0 -6
  68. package/es/layout/dagre/src/nesting-graph.js +0 -117
  69. package/es/layout/dagre/src/nesting-graph.js.map +0 -1
  70. package/es/layout/dagre/src/normalize.d.ts +0 -6
  71. package/es/layout/dagre/src/normalize.js +0 -89
  72. package/es/layout/dagre/src/normalize.js.map +0 -1
  73. package/es/layout/dagre/src/order/add-subgraph-constraints.d.ts +0 -3
  74. package/es/layout/dagre/src/order/add-subgraph-constraints.js +0 -27
  75. package/es/layout/dagre/src/order/add-subgraph-constraints.js.map +0 -1
  76. package/es/layout/dagre/src/order/barycenter.d.ts +0 -11
  77. package/es/layout/dagre/src/order/barycenter.js +0 -24
  78. package/es/layout/dagre/src/order/barycenter.js.map +0 -1
  79. package/es/layout/dagre/src/order/build-layer-graph.d.ts +0 -3
  80. package/es/layout/dagre/src/order/build-layer-graph.js +0 -71
  81. package/es/layout/dagre/src/order/build-layer-graph.js.map +0 -1
  82. package/es/layout/dagre/src/order/cross-count.d.ts +0 -3
  83. package/es/layout/dagre/src/order/cross-count.js +0 -65
  84. package/es/layout/dagre/src/order/cross-count.js.map +0 -1
  85. package/es/layout/dagre/src/order/index.d.ts +0 -3
  86. package/es/layout/dagre/src/order/index.js +0 -91
  87. package/es/layout/dagre/src/order/index.js.map +0 -1
  88. package/es/layout/dagre/src/order/init-data-order.d.ts +0 -6
  89. package/es/layout/dagre/src/order/init-data-order.js +0 -25
  90. package/es/layout/dagre/src/order/init-data-order.js.map +0 -1
  91. package/es/layout/dagre/src/order/init-order.d.ts +0 -3
  92. package/es/layout/dagre/src/order/init-order.js +0 -52
  93. package/es/layout/dagre/src/order/init-order.js.map +0 -1
  94. package/es/layout/dagre/src/order/resolve-conflicts.d.ts +0 -19
  95. package/es/layout/dagre/src/order/resolve-conflicts.js +0 -93
  96. package/es/layout/dagre/src/order/resolve-conflicts.js.map +0 -1
  97. package/es/layout/dagre/src/order/sort-subgraph.d.ts +0 -7
  98. package/es/layout/dagre/src/order/sort-subgraph.js +0 -85
  99. package/es/layout/dagre/src/order/sort-subgraph.js.map +0 -1
  100. package/es/layout/dagre/src/order/sort.d.ts +0 -7
  101. package/es/layout/dagre/src/order/sort.js +0 -68
  102. package/es/layout/dagre/src/order/sort.js.map +0 -1
  103. package/es/layout/dagre/src/parent-dummy-chains.d.ts +0 -3
  104. package/es/layout/dagre/src/parent-dummy-chains.js +0 -81
  105. package/es/layout/dagre/src/parent-dummy-chains.js.map +0 -1
  106. package/es/layout/dagre/src/position/bk.d.ts +0 -23
  107. package/es/layout/dagre/src/position/bk.js +0 -370
  108. package/es/layout/dagre/src/position/bk.js.map +0 -1
  109. package/es/layout/dagre/src/position/index.d.ts +0 -3
  110. package/es/layout/dagre/src/position/index.js +0 -51
  111. package/es/layout/dagre/src/position/index.js.map +0 -1
  112. package/es/layout/dagre/src/rank/feasible-tree.d.ts +0 -9
  113. package/es/layout/dagre/src/rank/feasible-tree.js +0 -148
  114. package/es/layout/dagre/src/rank/feasible-tree.js.map +0 -1
  115. package/es/layout/dagre/src/rank/index.d.ts +0 -3
  116. package/es/layout/dagre/src/rank/index.js +0 -53
  117. package/es/layout/dagre/src/rank/index.js.map +0 -1
  118. package/es/layout/dagre/src/rank/network-simplex.d.ts +0 -9
  119. package/es/layout/dagre/src/rank/network-simplex.js +0 -195
  120. package/es/layout/dagre/src/rank/network-simplex.js.map +0 -1
  121. package/es/layout/dagre/src/rank/util.d.ts +0 -11
  122. package/es/layout/dagre/src/rank/util.js +0 -141
  123. package/es/layout/dagre/src/rank/util.js.map +0 -1
  124. package/es/layout/dagre/src/util.d.ts +0 -31
  125. package/es/layout/dagre/src/util.js +0 -261
  126. package/es/layout/dagre/src/util.js.map +0 -1
  127. package/es/layout/dagre.d.ts +0 -71
  128. package/es/layout/dagre.js +0 -433
  129. package/es/layout/dagre.js.map +0 -1
  130. package/es/layout/dagreCompound.d.ts +0 -121
  131. package/es/layout/dagreCompound.js +0 -391
  132. package/es/layout/dagreCompound.js.map +0 -1
  133. package/es/layout/er/core.d.ts +0 -1
  134. package/es/layout/er/core.js +0 -107
  135. package/es/layout/er/core.js.map +0 -1
  136. package/es/layout/er/forceGrid.d.ts +0 -8
  137. package/es/layout/er/forceGrid.js +0 -88
  138. package/es/layout/er/forceGrid.js.map +0 -1
  139. package/es/layout/er/grid.d.ts +0 -26
  140. package/es/layout/er/grid.js +0 -162
  141. package/es/layout/er/grid.js.map +0 -1
  142. package/es/layout/er/index.d.ts +0 -29
  143. package/es/layout/er/index.js +0 -54
  144. package/es/layout/er/index.js.map +0 -1
  145. package/es/layout/er/mysqlWorkbench.d.ts +0 -6
  146. package/es/layout/er/mysqlWorkbench.js +0 -324
  147. package/es/layout/er/mysqlWorkbench.js.map +0 -1
  148. package/es/layout/er/type.d.ts +0 -35
  149. package/es/layout/er/type.js +0 -2
  150. package/es/layout/er/type.js.map +0 -1
  151. package/es/layout/force/force-in-a-box.d.ts +0 -28
  152. package/es/layout/force/force-in-a-box.js +0 -330
  153. package/es/layout/force/force-in-a-box.js.map +0 -1
  154. package/es/layout/force/force.d.ts +0 -100
  155. package/es/layout/force/force.js +0 -340
  156. package/es/layout/force/force.js.map +0 -1
  157. package/es/layout/force/index.d.ts +0 -1
  158. package/es/layout/force/index.js +0 -2
  159. package/es/layout/force/index.js.map +0 -1
  160. package/es/layout/force2/ForceNBody.d.ts +0 -7
  161. package/es/layout/force2/ForceNBody.js +0 -94
  162. package/es/layout/force2/ForceNBody.js.map +0 -1
  163. package/es/layout/force2/index.d.ts +0 -119
  164. package/es/layout/force2/index.js +0 -608
  165. package/es/layout/force2/index.js.map +0 -1
  166. package/es/layout/forceAtlas2/body.d.ts +0 -33
  167. package/es/layout/forceAtlas2/body.js +0 -89
  168. package/es/layout/forceAtlas2/body.js.map +0 -1
  169. package/es/layout/forceAtlas2/index.d.ts +0 -115
  170. package/es/layout/forceAtlas2/index.js +0 -484
  171. package/es/layout/forceAtlas2/index.js.map +0 -1
  172. package/es/layout/forceAtlas2/quad.d.ts +0 -27
  173. package/es/layout/forceAtlas2/quad.js +0 -96
  174. package/es/layout/forceAtlas2/quad.js.map +0 -1
  175. package/es/layout/forceAtlas2/quadTree.d.ts +0 -20
  176. package/es/layout/forceAtlas2/quadTree.js +0 -103
  177. package/es/layout/forceAtlas2/quadTree.js.map +0 -1
  178. package/es/layout/fruchterman.d.ts +0 -73
  179. package/es/layout/fruchterman.js +0 -296
  180. package/es/layout/fruchterman.js.map +0 -1
  181. package/es/layout/gForce.d.ts +0 -96
  182. package/es/layout/gForce.js +0 -399
  183. package/es/layout/gForce.js.map +0 -1
  184. package/es/layout/gpu/fruchterman.d.ts +0 -57
  185. package/es/layout/gpu/fruchterman.js +0 -267
  186. package/es/layout/gpu/fruchterman.js.map +0 -1
  187. package/es/layout/gpu/fruchtermanShader.d.ts +0 -4
  188. package/es/layout/gpu/fruchtermanShader.js +0 -201
  189. package/es/layout/gpu/fruchtermanShader.js.map +0 -1
  190. package/es/layout/gpu/gForce.d.ts +0 -68
  191. package/es/layout/gpu/gForce.js +0 -330
  192. package/es/layout/gpu/gForce.js.map +0 -1
  193. package/es/layout/gpu/gForceShader.d.ts +0 -4
  194. package/es/layout/gpu/gForceShader.js +0 -218
  195. package/es/layout/gpu/gForceShader.js.map +0 -1
  196. package/es/layout/grid.d.ts +0 -83
  197. package/es/layout/grid.js +0 -317
  198. package/es/layout/grid.js.map +0 -1
  199. package/es/layout/index.d.ts +0 -22
  200. package/es/layout/index.js +0 -25
  201. package/es/layout/index.js.map +0 -1
  202. package/es/layout/layout.d.ts +0 -26
  203. package/es/layout/layout.js +0 -97
  204. package/es/layout/layout.js.map +0 -1
  205. package/es/layout/mds.d.ts +0 -39
  206. package/es/layout/mds.js +0 -122
  207. package/es/layout/mds.js.map +0 -1
  208. package/es/layout/radial/index.d.ts +0 -1
  209. package/es/layout/radial/index.js +0 -2
  210. package/es/layout/radial/index.js.map +0 -1
  211. package/es/layout/radial/mds.d.ts +0 -15
  212. package/es/layout/radial/mds.js +0 -38
  213. package/es/layout/radial/mds.js.map +0 -1
  214. package/es/layout/radial/radial.d.ts +0 -74
  215. package/es/layout/radial/radial.js +0 -420
  216. package/es/layout/radial/radial.js.map +0 -1
  217. package/es/layout/radial/radialNonoverlapForce.d.ts +0 -50
  218. package/es/layout/radial/radialNonoverlapForce.js +0 -123
  219. package/es/layout/radial/radialNonoverlapForce.js.map +0 -1
  220. package/es/layout/random.d.ts +0 -35
  221. package/es/layout/random.js +0 -62
  222. package/es/layout/random.js.map +0 -1
  223. package/es/layout/types.d.ts +0 -432
  224. package/es/layout/types.js +0 -2
  225. package/es/layout/types.js.map +0 -1
  226. package/es/registy/index.d.ts +0 -3
  227. package/es/registy/index.js +0 -41
  228. package/es/registy/index.js.map +0 -1
  229. package/es/util/array.d.ts +0 -1
  230. package/es/util/array.js +0 -2
  231. package/es/util/array.js.map +0 -1
  232. package/es/util/function.d.ts +0 -6
  233. package/es/util/function.js +0 -56
  234. package/es/util/function.js.map +0 -1
  235. package/es/util/gpu.d.ts +0 -52
  236. package/es/util/gpu.js +0 -239
  237. package/es/util/gpu.js.map +0 -1
  238. package/es/util/index.d.ts +0 -6
  239. package/es/util/index.js +0 -7
  240. package/es/util/index.js.map +0 -1
  241. package/es/util/math.d.ts +0 -43
  242. package/es/util/math.js +0 -253
  243. package/es/util/math.js.map +0 -1
  244. package/es/util/number.d.ts +0 -3
  245. package/es/util/number.js +0 -7
  246. package/es/util/number.js.map +0 -1
  247. package/es/util/object.d.ts +0 -2
  248. package/es/util/object.js +0 -25
  249. package/es/util/object.js.map +0 -1
  250. package/es/util/string.d.ts +0 -2
  251. package/es/util/string.js +0 -16
  252. package/es/util/string.js.map +0 -1
  253. package/lib/index.js +0 -24
  254. package/lib/index.js.map +0 -1
  255. package/lib/layout/base.d.ts +0 -22
  256. package/lib/layout/base.js +0 -56
  257. package/lib/layout/base.js.map +0 -1
  258. package/lib/layout/circular.d.ts +0 -80
  259. package/lib/layout/circular.js +0 -337
  260. package/lib/layout/circular.js.map +0 -1
  261. package/lib/layout/comboCombined.d.ts +0 -54
  262. package/lib/layout/comboCombined.js +0 -384
  263. package/lib/layout/comboCombined.js.map +0 -1
  264. package/lib/layout/comboForce.d.ts +0 -134
  265. package/lib/layout/comboForce.js +0 -826
  266. package/lib/layout/comboForce.js.map +0 -1
  267. package/lib/layout/concentric.d.ts +0 -67
  268. package/lib/layout/concentric.js +0 -243
  269. package/lib/layout/concentric.js.map +0 -1
  270. package/lib/layout/constants.d.ts +0 -12
  271. package/lib/layout/constants.js +0 -25
  272. package/lib/layout/constants.js.map +0 -1
  273. package/lib/layout/dagre/graph.d.ts +0 -91
  274. package/lib/layout/dagre/graph.js +0 -28
  275. package/lib/layout/dagre/graph.js.map +0 -1
  276. package/lib/layout/dagre/index.d.ts +0 -8
  277. package/lib/layout/dagre/index.js +0 -36
  278. package/lib/layout/dagre/index.js.map +0 -1
  279. package/lib/layout/dagre/src/acyclic.d.ts +0 -6
  280. package/lib/layout/dagre/src/acyclic.js +0 -57
  281. package/lib/layout/dagre/src/acyclic.js.map +0 -1
  282. package/lib/layout/dagre/src/add-border-segments.d.ts +0 -3
  283. package/lib/layout/dagre/src/add-border-segments.js +0 -34
  284. package/lib/layout/dagre/src/add-border-segments.js.map +0 -1
  285. package/lib/layout/dagre/src/coordinate-system.d.ts +0 -6
  286. package/lib/layout/dagre/src/coordinate-system.js +0 -71
  287. package/lib/layout/dagre/src/coordinate-system.js.map +0 -1
  288. package/lib/layout/dagre/src/data/list.d.ts +0 -12
  289. package/lib/layout/dagre/src/data/list.js +0 -52
  290. package/lib/layout/dagre/src/data/list.js.map +0 -1
  291. package/lib/layout/dagre/src/debug.d.ts +0 -3
  292. package/lib/layout/dagre/src/debug.js +0 -26
  293. package/lib/layout/dagre/src/debug.js.map +0 -1
  294. package/lib/layout/dagre/src/greedy-fas.d.ts +0 -3
  295. package/lib/layout/dagre/src/greedy-fas.js +0 -144
  296. package/lib/layout/dagre/src/greedy-fas.js.map +0 -1
  297. package/lib/layout/dagre/src/layout.d.ts +0 -3
  298. package/lib/layout/dagre/src/layout.js +0 -535
  299. package/lib/layout/dagre/src/layout.js.map +0 -1
  300. package/lib/layout/dagre/src/nesting-graph.d.ts +0 -6
  301. package/lib/layout/dagre/src/nesting-graph.js +0 -119
  302. package/lib/layout/dagre/src/nesting-graph.js.map +0 -1
  303. package/lib/layout/dagre/src/normalize.d.ts +0 -6
  304. package/lib/layout/dagre/src/normalize.js +0 -91
  305. package/lib/layout/dagre/src/normalize.js.map +0 -1
  306. package/lib/layout/dagre/src/order/add-subgraph-constraints.d.ts +0 -3
  307. package/lib/layout/dagre/src/order/add-subgraph-constraints.js +0 -29
  308. package/lib/layout/dagre/src/order/add-subgraph-constraints.js.map +0 -1
  309. package/lib/layout/dagre/src/order/barycenter.d.ts +0 -11
  310. package/lib/layout/dagre/src/order/barycenter.js +0 -26
  311. package/lib/layout/dagre/src/order/barycenter.js.map +0 -1
  312. package/lib/layout/dagre/src/order/build-layer-graph.d.ts +0 -3
  313. package/lib/layout/dagre/src/order/build-layer-graph.js +0 -73
  314. package/lib/layout/dagre/src/order/build-layer-graph.js.map +0 -1
  315. package/lib/layout/dagre/src/order/cross-count.d.ts +0 -3
  316. package/lib/layout/dagre/src/order/cross-count.js +0 -67
  317. package/lib/layout/dagre/src/order/cross-count.js.map +0 -1
  318. package/lib/layout/dagre/src/order/index.d.ts +0 -3
  319. package/lib/layout/dagre/src/order/index.js +0 -96
  320. package/lib/layout/dagre/src/order/index.js.map +0 -1
  321. package/lib/layout/dagre/src/order/init-data-order.d.ts +0 -6
  322. package/lib/layout/dagre/src/order/init-data-order.js +0 -27
  323. package/lib/layout/dagre/src/order/init-data-order.js.map +0 -1
  324. package/lib/layout/dagre/src/order/init-order.d.ts +0 -3
  325. package/lib/layout/dagre/src/order/init-order.js +0 -54
  326. package/lib/layout/dagre/src/order/init-order.js.map +0 -1
  327. package/lib/layout/dagre/src/order/resolve-conflicts.d.ts +0 -19
  328. package/lib/layout/dagre/src/order/resolve-conflicts.js +0 -98
  329. package/lib/layout/dagre/src/order/resolve-conflicts.js.map +0 -1
  330. package/lib/layout/dagre/src/order/sort-subgraph.d.ts +0 -7
  331. package/lib/layout/dagre/src/order/sort-subgraph.js +0 -90
  332. package/lib/layout/dagre/src/order/sort-subgraph.js.map +0 -1
  333. package/lib/layout/dagre/src/order/sort.d.ts +0 -7
  334. package/lib/layout/dagre/src/order/sort.js +0 -70
  335. package/lib/layout/dagre/src/order/sort.js.map +0 -1
  336. package/lib/layout/dagre/src/parent-dummy-chains.d.ts +0 -3
  337. package/lib/layout/dagre/src/parent-dummy-chains.js +0 -83
  338. package/lib/layout/dagre/src/parent-dummy-chains.js.map +0 -1
  339. package/lib/layout/dagre/src/position/bk.d.ts +0 -23
  340. package/lib/layout/dagre/src/position/bk.js +0 -409
  341. package/lib/layout/dagre/src/position/bk.js.map +0 -1
  342. package/lib/layout/dagre/src/position/index.d.ts +0 -3
  343. package/lib/layout/dagre/src/position/index.js +0 -64
  344. package/lib/layout/dagre/src/position/index.js.map +0 -1
  345. package/lib/layout/dagre/src/rank/feasible-tree.d.ts +0 -9
  346. package/lib/layout/dagre/src/rank/feasible-tree.js +0 -152
  347. package/lib/layout/dagre/src/rank/feasible-tree.js.map +0 -1
  348. package/lib/layout/dagre/src/rank/index.d.ts +0 -3
  349. package/lib/layout/dagre/src/rank/index.js +0 -58
  350. package/lib/layout/dagre/src/rank/index.js.map +0 -1
  351. package/lib/layout/dagre/src/rank/network-simplex.d.ts +0 -9
  352. package/lib/layout/dagre/src/rank/network-simplex.js +0 -205
  353. package/lib/layout/dagre/src/rank/network-simplex.js.map +0 -1
  354. package/lib/layout/dagre/src/rank/util.d.ts +0 -11
  355. package/lib/layout/dagre/src/rank/util.js +0 -146
  356. package/lib/layout/dagre/src/rank/util.js.map +0 -1
  357. package/lib/layout/dagre/src/util.d.ts +0 -31
  358. package/lib/layout/dagre/src/util.js +0 -280
  359. package/lib/layout/dagre/src/util.js.map +0 -1
  360. package/lib/layout/dagre.d.ts +0 -71
  361. package/lib/layout/dagre.js +0 -462
  362. package/lib/layout/dagre.js.map +0 -1
  363. package/lib/layout/dagreCompound.d.ts +0 -121
  364. package/lib/layout/dagreCompound.js +0 -429
  365. package/lib/layout/dagreCompound.js.map +0 -1
  366. package/lib/layout/er/core.d.ts +0 -1
  367. package/lib/layout/er/core.js +0 -147
  368. package/lib/layout/er/core.js.map +0 -1
  369. package/lib/layout/er/forceGrid.d.ts +0 -8
  370. package/lib/layout/er/forceGrid.js +0 -97
  371. package/lib/layout/er/forceGrid.js.map +0 -1
  372. package/lib/layout/er/grid.d.ts +0 -26
  373. package/lib/layout/er/grid.js +0 -177
  374. package/lib/layout/er/grid.js.map +0 -1
  375. package/lib/layout/er/index.d.ts +0 -29
  376. package/lib/layout/er/index.js +0 -80
  377. package/lib/layout/er/index.js.map +0 -1
  378. package/lib/layout/er/mysqlWorkbench.d.ts +0 -6
  379. package/lib/layout/er/mysqlWorkbench.js +0 -326
  380. package/lib/layout/er/mysqlWorkbench.js.map +0 -1
  381. package/lib/layout/er/type.d.ts +0 -35
  382. package/lib/layout/er/type.js +0 -3
  383. package/lib/layout/er/type.js.map +0 -1
  384. package/lib/layout/force/force-in-a-box.d.ts +0 -28
  385. package/lib/layout/force/force-in-a-box.js +0 -357
  386. package/lib/layout/force/force-in-a-box.js.map +0 -1
  387. package/lib/layout/force/force.d.ts +0 -100
  388. package/lib/layout/force/force.js +0 -388
  389. package/lib/layout/force/force.js.map +0 -1
  390. package/lib/layout/force/index.d.ts +0 -1
  391. package/lib/layout/force/index.js +0 -18
  392. package/lib/layout/force/index.js.map +0 -1
  393. package/lib/layout/force2/ForceNBody.d.ts +0 -7
  394. package/lib/layout/force2/ForceNBody.js +0 -98
  395. package/lib/layout/force2/ForceNBody.js.map +0 -1
  396. package/lib/layout/force2/index.d.ts +0 -119
  397. package/lib/layout/force2/index.js +0 -643
  398. package/lib/layout/force2/index.js.map +0 -1
  399. package/lib/layout/forceAtlas2/body.d.ts +0 -33
  400. package/lib/layout/forceAtlas2/body.js +0 -93
  401. package/lib/layout/forceAtlas2/body.js.map +0 -1
  402. package/lib/layout/forceAtlas2/index.d.ts +0 -115
  403. package/lib/layout/forceAtlas2/index.js +0 -509
  404. package/lib/layout/forceAtlas2/index.js.map +0 -1
  405. package/lib/layout/forceAtlas2/quad.d.ts +0 -27
  406. package/lib/layout/forceAtlas2/quad.js +0 -100
  407. package/lib/layout/forceAtlas2/quad.js.map +0 -1
  408. package/lib/layout/forceAtlas2/quadTree.d.ts +0 -20
  409. package/lib/layout/forceAtlas2/quadTree.js +0 -107
  410. package/lib/layout/forceAtlas2/quadTree.js.map +0 -1
  411. package/lib/layout/fruchterman.d.ts +0 -73
  412. package/lib/layout/fruchterman.js +0 -320
  413. package/lib/layout/fruchterman.js.map +0 -1
  414. package/lib/layout/gForce.d.ts +0 -96
  415. package/lib/layout/gForce.js +0 -421
  416. package/lib/layout/gForce.js.map +0 -1
  417. package/lib/layout/gpu/fruchterman.d.ts +0 -57
  418. package/lib/layout/gpu/fruchterman.js +0 -361
  419. package/lib/layout/gpu/fruchterman.js.map +0 -1
  420. package/lib/layout/gpu/fruchtermanShader.d.ts +0 -4
  421. package/lib/layout/gpu/fruchtermanShader.js +0 -8
  422. package/lib/layout/gpu/fruchtermanShader.js.map +0 -1
  423. package/lib/layout/gpu/gForce.d.ts +0 -68
  424. package/lib/layout/gpu/gForce.js +0 -415
  425. package/lib/layout/gpu/gForce.js.map +0 -1
  426. package/lib/layout/gpu/gForceShader.d.ts +0 -4
  427. package/lib/layout/gpu/gForceShader.js +0 -8
  428. package/lib/layout/gpu/gForceShader.js.map +0 -1
  429. package/lib/layout/grid.d.ts +0 -83
  430. package/lib/layout/grid.js +0 -339
  431. package/lib/layout/grid.js.map +0 -1
  432. package/lib/layout/index.d.ts +0 -22
  433. package/lib/layout/index.js +0 -59
  434. package/lib/layout/index.js.map +0 -1
  435. package/lib/layout/layout.d.ts +0 -26
  436. package/lib/layout/layout.js +0 -102
  437. package/lib/layout/layout.js.map +0 -1
  438. package/lib/layout/mds.d.ts +0 -39
  439. package/lib/layout/mds.js +0 -144
  440. package/lib/layout/mds.js.map +0 -1
  441. package/lib/layout/radial/index.d.ts +0 -1
  442. package/lib/layout/radial/index.js +0 -18
  443. package/lib/layout/radial/index.js.map +0 -1
  444. package/lib/layout/radial/mds.d.ts +0 -15
  445. package/lib/layout/radial/mds.js +0 -42
  446. package/lib/layout/radial/mds.js.map +0 -1
  447. package/lib/layout/radial/radial.d.ts +0 -74
  448. package/lib/layout/radial/radial.js +0 -445
  449. package/lib/layout/radial/radial.js.map +0 -1
  450. package/lib/layout/radial/radialNonoverlapForce.d.ts +0 -50
  451. package/lib/layout/radial/radialNonoverlapForce.js +0 -127
  452. package/lib/layout/radial/radialNonoverlapForce.js.map +0 -1
  453. package/lib/layout/random.d.ts +0 -35
  454. package/lib/layout/random.js +0 -84
  455. package/lib/layout/random.js.map +0 -1
  456. package/lib/layout/types.d.ts +0 -432
  457. package/lib/layout/types.js +0 -3
  458. package/lib/layout/types.js.map +0 -1
  459. package/lib/registy/index.d.ts +0 -3
  460. package/lib/registy/index.js +0 -65
  461. package/lib/registy/index.js.map +0 -1
  462. package/lib/util/array.js +0 -5
  463. package/lib/util/array.js.map +0 -1
  464. package/lib/util/function.js +0 -65
  465. package/lib/util/function.js.map +0 -1
  466. package/lib/util/gpu.js +0 -250
  467. package/lib/util/gpu.js.map +0 -1
  468. package/lib/util/index.js +0 -23
  469. package/lib/util/index.js.map +0 -1
  470. package/lib/util/math.js +0 -266
  471. package/lib/util/math.js.map +0 -1
  472. package/lib/util/number.js +0 -13
  473. package/lib/util/number.js.map +0 -1
  474. package/lib/util/object.js +0 -43
  475. package/lib/util/object.js.map +0 -1
  476. package/lib/util/string.js +0 -20
  477. package/lib/util/string.js.map +0 -1
  478. package/src/index.ts +0 -7
  479. package/src/layout/base.ts +0 -57
  480. package/src/layout/circular.ts +0 -370
  481. package/src/layout/comboCombined.ts +0 -391
  482. package/src/layout/comboForce.ts +0 -873
  483. package/src/layout/concentric.ts +0 -289
  484. package/src/layout/constants.ts +0 -22
  485. package/src/layout/dagre/graph.ts +0 -104
  486. package/src/layout/dagre/index.ts +0 -31
  487. package/src/layout/dagre/src/acyclic.ts +0 -58
  488. package/src/layout/dagre/src/add-border-segments.ts +0 -47
  489. package/src/layout/dagre/src/coordinate-system.ts +0 -77
  490. package/src/layout/dagre/src/data/list.ts +0 -60
  491. package/src/layout/dagre/src/debug.ts +0 -30
  492. package/src/layout/dagre/src/greedy-fas.ts +0 -144
  493. package/src/layout/dagre/src/layout.ts +0 -579
  494. package/src/layout/dagre/src/nesting-graph.ts +0 -143
  495. package/src/layout/dagre/src/normalize.ts +0 -96
  496. package/src/layout/dagre/src/order/add-subgraph-constraints.ts +0 -29
  497. package/src/layout/dagre/src/order/barycenter.ts +0 -26
  498. package/src/layout/dagre/src/order/build-layer-graph.ts +0 -82
  499. package/src/layout/dagre/src/order/cross-count.ts +0 -77
  500. package/src/layout/dagre/src/order/index.ts +0 -105
  501. package/src/layout/dagre/src/order/init-data-order.ts +0 -27
  502. package/src/layout/dagre/src/order/init-order.ts +0 -56
  503. package/src/layout/dagre/src/order/resolve-conflicts.ts +0 -152
  504. package/src/layout/dagre/src/order/sort-subgraph.ts +0 -105
  505. package/src/layout/dagre/src/order/sort.ts +0 -76
  506. package/src/layout/dagre/src/parent-dummy-chains.ts +0 -102
  507. package/src/layout/dagre/src/position/bk.ts +0 -493
  508. package/src/layout/dagre/src/position/index.ts +0 -82
  509. package/src/layout/dagre/src/rank/feasible-tree.ts +0 -165
  510. package/src/layout/dagre/src/rank/index.ts +0 -54
  511. package/src/layout/dagre/src/rank/network-simplex.ts +0 -225
  512. package/src/layout/dagre/src/rank/util.ts +0 -166
  513. package/src/layout/dagre/src/util.ts +0 -309
  514. package/src/layout/dagre.ts +0 -460
  515. package/src/layout/dagreCompound.ts +0 -518
  516. package/src/layout/er/core.ts +0 -117
  517. package/src/layout/er/forceGrid.ts +0 -95
  518. package/src/layout/er/grid.ts +0 -185
  519. package/src/layout/er/index.ts +0 -68
  520. package/src/layout/er/mysqlWorkbench.ts +0 -345
  521. package/src/layout/er/type.ts +0 -39
  522. package/src/layout/force/force-in-a-box.ts +0 -400
  523. package/src/layout/force/force.ts +0 -391
  524. package/src/layout/force/index.ts +0 -1
  525. package/src/layout/force2/ForceNBody.ts +0 -128
  526. package/src/layout/force2/index.ts +0 -741
  527. package/src/layout/forceAtlas2/body.ts +0 -115
  528. package/src/layout/forceAtlas2/index.ts +0 -556
  529. package/src/layout/forceAtlas2/quad.ts +0 -115
  530. package/src/layout/forceAtlas2/quadTree.ts +0 -107
  531. package/src/layout/fruchterman.ts +0 -361
  532. package/src/layout/gForce.ts +0 -488
  533. package/src/layout/gpu/fruchterman.ts +0 -314
  534. package/src/layout/gpu/fruchtermanShader.ts +0 -203
  535. package/src/layout/gpu/gForce.ts +0 -407
  536. package/src/layout/gpu/gForceShader.ts +0 -220
  537. package/src/layout/grid.ts +0 -404
  538. package/src/layout/index.ts +0 -47
  539. package/src/layout/layout.ts +0 -110
  540. package/src/layout/mds.ts +0 -140
  541. package/src/layout/radial/index.ts +0 -1
  542. package/src/layout/radial/mds.ts +0 -51
  543. package/src/layout/radial/radial.ts +0 -500
  544. package/src/layout/radial/radialNonoverlapForce.ts +0 -189
  545. package/src/layout/random.ts +0 -75
  546. package/src/layout/types.ts +0 -496
  547. package/src/registy/index.ts +0 -43
  548. package/src/util/array.ts +0 -1
  549. package/src/util/function.ts +0 -64
  550. package/src/util/gpu.ts +0 -256
  551. package/src/util/index.ts +0 -6
  552. package/src/util/math.ts +0 -272
  553. package/src/util/number.ts +0 -8
  554. package/src/util/object.ts +0 -28
  555. package/src/util/string.ts +0 -18
@@ -1,488 +0,0 @@
1
- /**
2
- * @fileOverview fruchterman layout
3
- * @author shiwu.wyy@antfin.com
4
- */
5
-
6
- import {
7
- OutNode,
8
- Edge,
9
- PointTuple,
10
- IndexMap,
11
- Point,
12
- GForceLayoutOptions,
13
- Degree
14
- } from "./types";
15
- import { Base } from "./base";
16
- import { isNumber, isFunction, isArray, getDegree, isObject, getEdgeTerminal } from "../util";
17
-
18
- type INode = OutNode & {
19
- size: number | PointTuple;
20
- };
21
-
22
- type NodeMap = {
23
- [key: string]: INode;
24
- };
25
-
26
- const proccessToFunc = (
27
- value: number | Function | undefined,
28
- defaultV?: number
29
- ): ((d: any) => number) => {
30
- let func;
31
- if (!value) {
32
- func = (d: any): number => {
33
- return defaultV || 1;
34
- };
35
- } else if (isNumber(value)) {
36
- func = (d: any): number => {
37
- return value;
38
- };
39
- } else {
40
- func = value;
41
- }
42
- return func as any;
43
- };
44
-
45
- /**
46
- * graphin 中的 force 布局
47
- */
48
- export class GForceLayout extends Base {
49
- /** 布局中心 */
50
- public center: PointTuple;
51
-
52
- /** 停止迭代的最大迭代数 */
53
- public maxIteration: number = 500;
54
-
55
- /** 是否启动 worker */
56
- public workerEnabled: boolean = false;
57
-
58
- /** 弹簧引力系数 */
59
- public edgeStrength: number | ((d?: any) => number) | undefined = 200;
60
-
61
- /** 斥力系数 */
62
- public nodeStrength: number | ((d?: any) => number) | undefined = 1000;
63
-
64
- /** 库伦系数 */
65
- public coulombDisScale: number = 0.005;
66
-
67
- /** 阻尼系数 */
68
- public damping: number = 0.9;
69
-
70
- /** 最大速度 */
71
- public maxSpeed: number = 1000;
72
-
73
- /** 一次迭代的平均移动距离小于该值时停止迭代 */
74
- public minMovement: number = 0.5;
75
-
76
- /** 迭代中衰减 */
77
- public interval: number = 0.02;
78
-
79
- /** 斥力的一个系数 */
80
- public factor: number = 1;
81
-
82
- /** 每个节点质量的回调函数,若不指定,则默认使用度数作为节点质量 */
83
- public getMass: ((d?: any) => number) | undefined;
84
-
85
- /** 每个节点中心力的 x、y、强度的回调函数,若不指定,则没有额外中心力 */
86
- public getCenter: ((d?: any, degree?: number) => number[]) | undefined;
87
-
88
- /** 理想边长 */
89
- public linkDistance: number | ((edge?: any, source?: any, target?: any) => number) | undefined = 1;
90
-
91
- /** 重力大小 */
92
- public gravity: number = 10;
93
-
94
- /** 是否防止重叠 */
95
- public preventOverlap: boolean = true;
96
-
97
- /** 防止重叠时的节点大小,默认从节点数据中取 size */
98
- public nodeSize: number | number[] | ((d?: any) => number) | undefined;
99
-
100
- /** 防止重叠的力大小参数 */
101
- public collideStrength: number = 1;
102
-
103
- /** 防止重叠时的节点之间最小间距 */
104
- public nodeSpacing: number | number[] | ((d?: any) => number) | undefined;
105
-
106
- /** 每次迭代结束的回调函数 */
107
- public tick: (() => void) | null = () => {};
108
-
109
- /** 是否允许每次迭代结束调用回调函数 */
110
- public enableTick: boolean;
111
-
112
- public nodes: INode[] | null = [];
113
-
114
- public edges: Edge[] | null = [];
115
-
116
- public width: number = 300;
117
-
118
- public height: number = 300;
119
-
120
- public nodeMap: NodeMap = {};
121
-
122
- public nodeIdxMap: IndexMap = {};
123
-
124
- public canvasEl: HTMLCanvasElement;
125
-
126
- public onLayoutEnd: () => void;
127
-
128
- /** 是否使用 window.setInterval 运行迭代 */
129
- public animate: Boolean = true;
130
-
131
- /** 存储节点度数 */
132
- private degrees: Degree[];
133
-
134
- /** 迭代中的标识 */
135
- private timeInterval: number;
136
-
137
- constructor(options?: GForceLayoutOptions) {
138
- super();
139
- this.updateCfg(options);
140
- }
141
-
142
- public getDefaultCfg() {
143
- return {
144
- maxIteration: 500,
145
- gravity: 10,
146
- enableTick: true,
147
- animate: true,
148
- };
149
- }
150
-
151
- /**
152
- * 执行布局
153
- */
154
- public execute() {
155
- const self = this;
156
- const nodes = self.nodes;
157
-
158
- if (self.timeInterval !== undefined && typeof window !== "undefined") {
159
- window.clearInterval(self.timeInterval);
160
- }
161
-
162
- if (!nodes || nodes.length === 0) {
163
- self.onLayoutEnd?.();
164
- return;
165
- }
166
-
167
- if (!self.width && typeof window !== "undefined") {
168
- self.width = window.innerWidth;
169
- }
170
- if (!self.height && typeof window !== "undefined") {
171
- self.height = window.innerHeight;
172
- }
173
- if (!self.center) {
174
- self.center = [self.width / 2, self.height / 2];
175
- }
176
- const center = self.center;
177
-
178
- if (nodes.length === 1) {
179
- nodes[0].x = center[0];
180
- nodes[0].y = center[1];
181
- self.onLayoutEnd?.();
182
- return;
183
- }
184
- const nodeMap: NodeMap = {};
185
- const nodeIdxMap: IndexMap = {};
186
- nodes.forEach((node, i) => {
187
- if (!isNumber(node.x)) node.x = Math.random() * self.width;
188
- if (!isNumber(node.y)) node.y = Math.random() * self.height;
189
- nodeMap[node.id] = node;
190
- nodeIdxMap[node.id] = i;
191
- });
192
- self.nodeMap = nodeMap;
193
- self.nodeIdxMap = nodeIdxMap;
194
-
195
- self.linkDistance = proccessToFunc(self.linkDistance, 1);
196
- self.nodeStrength = proccessToFunc(self.nodeStrength, 1);
197
- self.edgeStrength = proccessToFunc(self.edgeStrength, 1);
198
-
199
- // node size function
200
- const nodeSize = self.nodeSize;
201
- let nodeSizeFunc;
202
- if (self.preventOverlap) {
203
- const nodeSpacing = self.nodeSpacing;
204
- let nodeSpacingFunc: (d?: any) => number;
205
- if (isNumber(nodeSpacing)) {
206
- nodeSpacingFunc = () => nodeSpacing as number;
207
- } else if (isFunction(nodeSpacing)) {
208
- nodeSpacingFunc = nodeSpacing as (d?: any) => number;
209
- } else {
210
- nodeSpacingFunc = () => 0;
211
- }
212
- if (!nodeSize) {
213
- nodeSizeFunc = (d: INode) => {
214
- if (d.size) {
215
- if (isArray(d.size)) {
216
- return Math.max(d.size[0], d.size[1]) + nodeSpacingFunc(d);
217
- } if(isObject(d.size)) {
218
- return Math.max(d.size.width, d.size.height) + nodeSpacingFunc(d);
219
- }
220
- return (d.size as number) + nodeSpacingFunc(d);
221
- }
222
- return 10 + nodeSpacingFunc(d);
223
- };
224
- } else if (isArray(nodeSize)) {
225
- nodeSizeFunc = (d: INode) => {
226
- return Math.max(nodeSize[0], nodeSize[1]) + nodeSpacingFunc(d);
227
- };
228
- } else {
229
- nodeSizeFunc = (d: INode) => (nodeSize as number) + nodeSpacingFunc(d);
230
- }
231
- }
232
- self.nodeSize = nodeSizeFunc;
233
-
234
- const edges = self.edges;
235
- self.degrees = getDegree(nodes.length, self.nodeIdxMap, edges);
236
- if (!self.getMass) {
237
- self.getMass = (d) => {
238
- const mass = d.mass || self.degrees[self.nodeIdxMap[d.id]].all || 1;
239
- return mass;
240
- };
241
- }
242
-
243
- // layout
244
- self.run();
245
- }
246
-
247
- public run() {
248
- const self = this;
249
- const { maxIteration, nodes, workerEnabled, minMovement, animate } = self;
250
-
251
- if (!nodes) return;
252
-
253
- if (workerEnabled || !animate) {
254
- for (let i = 0; i < maxIteration; i++) {
255
- const previousPos = self.runOneStep(i);
256
- if (self.reachMoveThreshold(nodes, previousPos, minMovement)) {
257
- break;
258
- }
259
- }
260
- self.onLayoutEnd?.();
261
- } else {
262
- if (typeof window === "undefined") return;
263
- let iter = 0;
264
- // interval for render the result after each iteration
265
- this.timeInterval = window.setInterval(() => {
266
- if (!nodes) return;
267
- const previousPos = self.runOneStep(iter) || [];
268
- if (self.reachMoveThreshold(nodes, previousPos, minMovement)) {
269
- self.onLayoutEnd?.();
270
- window.clearInterval(self.timeInterval);
271
- }
272
- iter++;
273
- if (iter >= maxIteration) {
274
- self.onLayoutEnd?.();
275
- window.clearInterval(self.timeInterval);
276
- }
277
- }, 0);
278
- }
279
- }
280
-
281
- private reachMoveThreshold(nodes: any, previousPos: any, minMovement: number) {
282
- // whether to stop the iteration
283
- let movement = 0;
284
- nodes.forEach((node: any, j: number) => {
285
- const vx = node.x - previousPos[j].x;
286
- const vy = node.y - previousPos[j].y;
287
- movement += Math.sqrt(vx * vx + vy * vy);
288
- });
289
- movement /= nodes.length;
290
- return movement < minMovement;
291
- }
292
-
293
- private runOneStep(iter: number) {
294
- const self = this;
295
- const { nodes, edges } = self;
296
- const accArray: number[] = [];
297
- const velArray: number[] = [];
298
- if (!nodes) return;
299
- nodes.forEach((_, i) => {
300
- accArray[2 * i] = 0;
301
- accArray[2 * i + 1] = 0;
302
- velArray[2 * i] = 0;
303
- velArray[2 * i + 1] = 0;
304
- });
305
- self.calRepulsive(accArray, nodes);
306
- if (edges) self.calAttractive(accArray, edges);
307
- self.calGravity(accArray, nodes);
308
- const stepInterval = Math.max(0.02, self.interval - iter * 0.002);
309
- self.updateVelocity(accArray, velArray, stepInterval, nodes);
310
- const previousPos: Point[] = [];
311
- nodes.forEach((node) => {
312
- previousPos.push({
313
- x: node.x,
314
- y: node.y
315
- });
316
- });
317
- self.updatePosition(velArray, stepInterval, nodes);
318
- self.tick?.();
319
- return previousPos;
320
- }
321
-
322
- public calRepulsive(accArray: number[], nodes: INode[]) {
323
- const self = this;
324
- const { getMass, factor, coulombDisScale, preventOverlap, collideStrength = 1 } = self;
325
- const nodeStrength = self.nodeStrength as Function;
326
- const nodeSize = self.nodeSize as Function;
327
- nodes.forEach((ni: INode, i) => {
328
- const massi = getMass ? getMass(ni) : 1;
329
- nodes.forEach((nj, j) => {
330
- if (i >= j) return;
331
- // if (!accArray[j]) accArray[j] = 0;
332
- let vecX = ni.x - nj.x;
333
- let vecY = ni.y - nj.y;
334
- if (vecX === 0 && vecY === 0) {
335
- vecX = Math.random() * 0.01;
336
- vecY = Math.random() * 0.01;
337
- }
338
- const lengthSqr = vecX * vecX + vecY * vecY;
339
- const vecLength = Math.sqrt(lengthSqr);
340
- const nVecLength = (vecLength + 0.1) * coulombDisScale;
341
- const direX = vecX / vecLength;
342
- const direY = vecY / vecLength;
343
- const param =
344
- (((nodeStrength(ni) + nodeStrength(nj)) * 0.5) * factor) /
345
- (nVecLength * nVecLength);
346
- const massj = getMass ? getMass(nj) : 1;
347
- accArray[2 * i] += (direX * param);
348
- accArray[2 * i + 1] += (direY * param);
349
- accArray[2 * j] -= (direX * param);
350
- accArray[2 * j + 1] -= (direY * param);
351
- if (preventOverlap && (nodeSize(ni) + nodeSize(nj)) / 2 > vecLength) {
352
- const paramOverlap =
353
- collideStrength * (nodeStrength(ni) + nodeStrength(nj)) * 0.5 / lengthSqr;
354
- accArray[2 * i] += (direX * paramOverlap) / massi;
355
- accArray[2 * i + 1] += (direY * paramOverlap) / massi;
356
- accArray[2 * j] -= (direX * paramOverlap) / massj;
357
- accArray[2 * j + 1] -= (direY * paramOverlap) / massj;
358
- }
359
- });
360
- });
361
- }
362
-
363
- public calAttractive(accArray: number[], edges: Edge[]) {
364
- const self = this;
365
- const { nodeMap, nodeIdxMap, linkDistance, edgeStrength } = self;
366
- const nodeSize = self.nodeSize as Function;
367
- const getMass = self.getMass;
368
- edges.forEach((edge, i) => {
369
- const source = getEdgeTerminal(edge, 'source');
370
- const target = getEdgeTerminal(edge, 'target');
371
- const sourceNode = nodeMap[source];
372
- const targetNode = nodeMap[target];
373
- let vecX = targetNode.x - sourceNode.x;
374
- let vecY = targetNode.y - sourceNode.y;
375
- if (vecX === 0 && vecY === 0) {
376
- vecX = Math.random() * 0.01;
377
- vecY = Math.random() * 0.01;
378
- }
379
- const vecLength = Math.sqrt(vecX * vecX + vecY * vecY);
380
- const direX = vecX / vecLength;
381
- const direY = vecY / vecLength;
382
- const length = (linkDistance as Function)(edge, sourceNode, targetNode) || 1 + ((nodeSize(sourceNode) + nodeSize(targetNode)) || 0) / 2;
383
- const diff = length - vecLength;
384
- const param = diff * (edgeStrength as Function)(edge);
385
- const sourceIdx = nodeIdxMap[source];
386
- const targetIdx = nodeIdxMap[target];
387
- const massSource = getMass ? getMass(sourceNode) : 1;
388
- const massTarget = getMass ? getMass(targetNode) : 1;
389
- accArray[2 * sourceIdx] -= (direX * param) / massSource;
390
- accArray[2 * sourceIdx + 1] -= (direY * param) / massSource;
391
- accArray[2 * targetIdx] += (direX * param) / massTarget;
392
- accArray[2 * targetIdx + 1] += (direY * param) / massTarget;
393
- });
394
- }
395
-
396
- public calGravity(accArray: number[], nodes: INode[]) {
397
- const self = this;
398
- // const nodes = self.nodes;
399
- const center = self.center;
400
- const defaultGravity = self.gravity;
401
- const degrees = self.degrees;
402
- const nodeLength = nodes.length;
403
- for (let i = 0; i < nodeLength; i++) {
404
- const node = nodes[i];
405
- let vecX = node.x - center[0];
406
- let vecY = node.y - center[1];
407
- let gravity = defaultGravity;
408
-
409
- if (self.getCenter) {
410
- const customCenterOpt = self.getCenter(node, degrees[i].all);
411
- if (
412
- customCenterOpt &&
413
- isNumber(customCenterOpt[0]) &&
414
- isNumber(customCenterOpt[1]) &&
415
- isNumber(customCenterOpt[2])
416
- ) {
417
- vecX = node.x - customCenterOpt[0];
418
- vecY = node.y - customCenterOpt[1];
419
- gravity = customCenterOpt[2];
420
- }
421
- }
422
- if (!gravity) continue;
423
-
424
- accArray[2 * i] -= gravity * vecX;
425
- accArray[2 * i + 1] -= gravity * vecY;
426
- }
427
- }
428
-
429
- public updateVelocity(
430
- accArray: number[],
431
- velArray: number[],
432
- stepInterval: number,
433
- nodes: INode[]
434
- ) {
435
- const self = this;
436
- const param = stepInterval * self.damping;
437
- // const nodes = self.nodes;
438
- nodes.forEach((node, i) => {
439
- let vx = accArray[2 * i] * param || 0.01;
440
- let vy = accArray[2 * i + 1] * param || 0.01;
441
- const vLength = Math.sqrt(vx * vx + vy * vy);
442
- if (vLength > self.maxSpeed) {
443
- const param2 = self.maxSpeed / vLength;
444
- vx = param2 * vx;
445
- vy = param2 * vy;
446
- }
447
- velArray[2 * i] = vx;
448
- velArray[2 * i + 1] = vy;
449
- });
450
- }
451
-
452
- public updatePosition(
453
- velArray: number[],
454
- stepInterval: number,
455
- nodes: INode[]
456
- ) {
457
- nodes.forEach((node: any, i) => {
458
- if (isNumber(node.fx) && isNumber(node.fy)) {
459
- node.x = node.fx;
460
- node.y = node.fy;
461
- return;
462
- }
463
- const distX = velArray[2 * i] * stepInterval;
464
- const distY = velArray[2 * i + 1] * stepInterval;
465
- node.x += distX;
466
- node.y += distY;
467
- });
468
- }
469
-
470
- public stop() {
471
- if (this.timeInterval && typeof window !== "undefined") {
472
- window.clearInterval(this.timeInterval);
473
- }
474
- }
475
-
476
- public destroy() {
477
- const self = this;
478
- self.stop();
479
- self.tick = null;
480
- self.nodes = null;
481
- self.edges = null;
482
- self.destroyed = true;
483
- }
484
-
485
- public getType() {
486
- return "gForce";
487
- }
488
- }