@antv/layout 0.3.12 → 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 +3 -3
  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 -354
  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 -48
  242. package/es/util/math.js +0 -276
  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 -390
  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 -289
  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 -397
  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 -294
  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,115 +0,0 @@
1
- import { PointTuple } from "../types";
2
-
3
- /**
4
- * @fileOverview quad
5
- * @author shiwu.wyy@antfin.com
6
- */
7
-
8
- type QuadProps = {
9
- xmid: number;
10
- ymid: number;
11
- length: number;
12
- massCenter?: PointTuple;
13
- mass?: number;
14
- };
15
-
16
- export default class Quad {
17
- public xmid: number;
18
- public ymid: number;
19
- public length: number;
20
- public massCenter: PointTuple;
21
- public mass: number;
22
- constructor(params: QuadProps) {
23
- /**
24
- * the center position of this quad
25
- * @type {number}
26
- */
27
- this.xmid = params.xmid;
28
- /**
29
- * the center position of this quad
30
- * @type {number}
31
- */
32
- this.ymid = params.ymid;
33
- /**
34
- * the length of this quad
35
- * @type {number}
36
- */
37
- this.length = params.length;
38
- /**
39
- * the mass center of this quad
40
- * @type {number}
41
- */
42
- this.massCenter = params.massCenter || [0, 0];
43
- /**
44
- * the mass of this quad
45
- * @type {number}
46
- */
47
- this.mass = params.mass || 1;
48
- }
49
- getLength() {
50
- return this.length;
51
- }
52
- contains(x: number, y: number) {
53
- const halfLen = this.length / 2;
54
- return (x <= this.xmid + halfLen &&
55
- x >= this.xmid - halfLen &&
56
- y <= this.ymid + halfLen &&
57
- y >= this.ymid - halfLen);
58
- }
59
- // northwest quadrant
60
- // tslint:disable-next-line
61
- NW() {
62
- const x = this.xmid - this.length / 4;
63
- const y = this.ymid + this.length / 4;
64
- const len = this.length / 2;
65
- const params: QuadProps = {
66
- xmid: x,
67
- ymid: y,
68
- length: len
69
- };
70
- const NW = new Quad(params);
71
- return NW;
72
- }
73
- // northeast
74
- // tslint:disable-next-line
75
- NE() {
76
- const x = this.xmid + this.length / 4;
77
- const y = this.ymid + this.length / 4;
78
- const len = this.length / 2;
79
- const params = {
80
- xmid: x,
81
- ymid: y,
82
- length: len
83
- };
84
- const NE = new Quad(params);
85
- return NE;
86
- }
87
- // southwest
88
- // tslint:disable-next-line
89
- SW() {
90
- const x = this.xmid - this.length / 4;
91
- const y = this.ymid - this.length / 4;
92
- const len = this.length / 2;
93
- const params = {
94
- xmid: x,
95
- ymid: y,
96
- length: len
97
- };
98
- const SW = new Quad(params);
99
- return SW;
100
- }
101
- // southeast
102
- // tslint:disable-next-line
103
- SE() {
104
- const x = this.xmid + this.length / 4;
105
- const y = this.ymid - this.length / 4;
106
- const len = this.length / 2;
107
- const params = {
108
- xmid: x,
109
- ymid: y,
110
- length: len
111
- };
112
- const SE = new Quad(params);
113
- return SE;
114
- }
115
- }
@@ -1,107 +0,0 @@
1
- import Body from './body';
2
- import Quad from './quad';
3
-
4
- /**
5
- * @fileOverview quadTree
6
- * @author shiwu.wyy@antfin.com
7
- */
8
-
9
- export default class QuadTree {
10
- public body: Body | null;
11
- public quad: Quad | null;
12
- public theta: number;
13
- public NW: QuadTree | null;
14
- public NE: QuadTree | null;
15
- public SW: QuadTree | null;
16
- public SE: QuadTree | null;
17
-
18
- // each quadtree represents a quadrant and an aggregate body
19
- // that represents all bodies inside the quadrant
20
- constructor(param: Quad | null) {
21
- /**
22
- * (aggregated) body in this quad
23
- * @type {object}
24
- */
25
- this.body = null;
26
- /**
27
- * tree representing the northwest quadrant
28
- * @type {object}
29
- */
30
- this.quad = null;
31
- this.NW = null;
32
- this.NE = null;
33
- this.SW = null;
34
- this.SE = null;
35
- /**
36
- * threshold
37
- * @type {number}
38
- */
39
- this.theta = 0.5;
40
- if (param != null) this.quad = param;
41
- }
42
- // insert a body(node) into the tree
43
- insert(bo: Body) {
44
- // if this node does not contain a body, put the new body bo here
45
- if (this.body == null) {
46
- this.body = bo;
47
- return;
48
- }
49
- // internal node
50
- if (!this._isExternal()) {
51
- // update mass info
52
- this.body = this.body.add(bo);
53
- // insert body into quadrant
54
- this._putBody(bo);
55
- } else { // external node
56
- // divide this region into four children
57
- if (this.quad) {
58
- this.NW = new QuadTree(this.quad.NW());
59
- this.NE = new QuadTree(this.quad.NE());
60
- this.SW = new QuadTree(this.quad.SW());
61
- this.SE = new QuadTree(this.quad.SE());
62
- }
63
-
64
- // insert this body and bo
65
- this._putBody(this.body);
66
- this._putBody(bo);
67
- // update the mass info
68
- this.body = this.body.add(bo);
69
-
70
- }
71
- }
72
- // inserts bo into a quad
73
- // tslint:disable-next-line
74
- _putBody(bo: Body) {
75
- if (!this.quad) return;
76
- if (bo.in(this.quad.NW()) && this.NW) this.NW.insert(bo);
77
- else if (bo.in(this.quad.NE()) && this.NE) this.NE.insert(bo);
78
- else if (bo.in(this.quad.SW()) && this.SW )this.SW.insert(bo);
79
- else if (bo.in(this.quad.SE()) && this.SE) this.SE.insert(bo);
80
- }
81
- // tslint:disable-next-line
82
- _isExternal() {
83
- // four children are null
84
- return (this.NW == null && this.NE == null && this.SW == null && this.SE == null);
85
- }
86
- // update the forces
87
- updateForce(bo: Body) {
88
- if (this.body == null || bo === this.body) {
89
- return;
90
- }
91
- // if the current node is external
92
- if (this._isExternal()) bo.addForce(this.body);
93
- // internal nodes
94
- else {
95
- const s = this.quad ? this.quad.getLength() : 0;
96
- const d = this.body.distanceTo(bo);
97
- // b is far enough
98
- if ((s / d) < this.theta) bo.addForce(this.body);
99
- else {
100
- this.NW && this.NW.updateForce(bo);
101
- this.NE && this.NE.updateForce(bo);
102
- this.SW && this.SW.updateForce(bo);
103
- this.SE && this.SE.updateForce(bo);
104
- }
105
- }
106
- }
107
- }
@@ -1,361 +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
- FruchtermanLayoutOptions
13
- } from "./types";
14
- import { Base } from "./base";
15
- import { getEdgeTerminal, isNumber } from "../util";
16
-
17
- type NodeMap = {
18
- [key: string]: INode;
19
- };
20
-
21
- type INode = OutNode & {
22
- cluster: string;
23
- };
24
-
25
- const SPEED_DIVISOR = 800;
26
-
27
- /**
28
- * fruchterman 布局
29
- */
30
- export class FruchtermanLayout extends Base {
31
- /** 布局中心 */
32
- public center: PointTuple;
33
-
34
- /** 停止迭代的最大迭代数 */
35
- public maxIteration: number = 1000;
36
-
37
- /** 是否启动 worker */
38
- public workerEnabled: boolean = false;
39
-
40
- /** 重力大小,影响图的紧凑程度 */
41
- public gravity: number = 10;
42
-
43
- /** 速度 */
44
- public speed: number = 5;
45
-
46
- /** 是否产生聚类力 */
47
- public clustering: boolean = false;
48
-
49
- /** 聚类力大小 */
50
- public clusterGravity: number = 10;
51
-
52
- public nodes: INode[] | null = [];
53
-
54
- public edges: Edge[] | null = [];
55
-
56
- public width: number = 300;
57
-
58
- public height: number = 300;
59
-
60
- public nodeMap: NodeMap = {};
61
-
62
- public nodeIdxMap: IndexMap = {};
63
-
64
- /** 迭代结束的回调函数 */
65
- public onLayoutEnd: () => void = () => {};
66
-
67
- /** 每次迭代结束的回调函数 */
68
- public tick: (() => void) | null = () => {};
69
-
70
- /** 是否使用 window.setInterval 运行迭代 */
71
- public animate: boolean = true;
72
-
73
- /** 迭代中的标识 */
74
- private timeInterval: number;
75
-
76
- constructor(options?: FruchtermanLayoutOptions) {
77
- super();
78
- this.updateCfg(options);
79
- }
80
-
81
- public getDefaultCfg() {
82
- return {
83
- maxIteration: 1000,
84
- gravity: 10,
85
- speed: 1,
86
- clustering: false,
87
- clusterGravity: 10,
88
- animate: true
89
- };
90
- }
91
-
92
- /**
93
- * 执行布局
94
- */
95
- public execute() {
96
- const self = this;
97
- const nodes = self.nodes;
98
-
99
- if (self.timeInterval !== undefined && typeof window !== "undefined") {
100
- window.clearInterval(self.timeInterval);
101
- }
102
-
103
- if (!nodes || nodes.length === 0) {
104
- self.onLayoutEnd?.();
105
- return;
106
- }
107
-
108
- if (!self.width && typeof window !== "undefined") {
109
- self.width = window.innerWidth;
110
- }
111
- if (!self.height && typeof window !== "undefined") {
112
- self.height = window.innerHeight;
113
- }
114
- if (!self.center) {
115
- self.center = [self.width / 2, self.height / 2];
116
- }
117
- const center = self.center;
118
-
119
- if (nodes.length === 1) {
120
- nodes[0].x = center[0];
121
- nodes[0].y = center[1];
122
- self.onLayoutEnd?.();
123
- return;
124
- }
125
- const nodeMap: NodeMap = {};
126
- const nodeIdxMap: IndexMap = {};
127
- nodes.forEach((node, i) => {
128
- if (!isNumber(node.x)) node.x = Math.random() * this.width;
129
- if (!isNumber(node.y)) node.y = Math.random() * this.height;
130
- nodeMap[node.id] = node;
131
- nodeIdxMap[node.id] = i;
132
- });
133
- self.nodeMap = nodeMap;
134
- self.nodeIdxMap = nodeIdxMap;
135
- // layout
136
- return self.run();
137
- }
138
-
139
- public run() {
140
- const self = this;
141
- const nodes = self.nodes;
142
- if (!nodes) return;
143
- const { edges, maxIteration, workerEnabled, clustering, animate } = self;
144
- const clusterMap: {
145
- [key: string]: {
146
- name: string | number;
147
- cx: number;
148
- cy: number;
149
- count: number;
150
- };
151
- } = {};
152
- if (clustering) {
153
- nodes.forEach((n) => {
154
- if (clusterMap[n.cluster] === undefined) {
155
- clusterMap[n.cluster] = {
156
- name: n.cluster,
157
- cx: 0,
158
- cy: 0,
159
- count: 0
160
- };
161
- }
162
- });
163
- }
164
- if (workerEnabled || !animate) {
165
- for (let i = 0; i < maxIteration; i++) {
166
- self.runOneStep(clusterMap);
167
- }
168
- self.onLayoutEnd?.();
169
- } else {
170
- if (typeof window === "undefined") return;
171
- let iter = 0;
172
- // interval for render the result after each iteration
173
- this.timeInterval = window.setInterval(() => {
174
- self.runOneStep(clusterMap);
175
- iter++;
176
- if (iter >= maxIteration) {
177
- self.onLayoutEnd?.();
178
- window.clearInterval(self.timeInterval);
179
- }
180
- }, 0);
181
- }
182
- return {
183
- nodes,
184
- edges
185
- };
186
- }
187
-
188
- private runOneStep(clusterMap: any) {
189
- const self = this;
190
- const nodes = self.nodes;
191
- if (!nodes) return;
192
- const { edges, center, gravity, speed, clustering } = self;
193
- const area = self.height * self.width;
194
- const maxDisplace = Math.sqrt(area) / 10;
195
- const k2 = area / (nodes.length + 1);
196
- const k = Math.sqrt(k2);
197
- const displacements: Point[] = [];
198
- nodes.forEach((_, j) => {
199
- displacements[j] = { x: 0, y: 0 };
200
- });
201
- self.applyCalculate(nodes, edges, displacements, k, k2);
202
-
203
- // gravity for clusters
204
- if (clustering) {
205
- // re-compute the clustering centers
206
- for (const key in clusterMap) {
207
- clusterMap[key].cx = 0;
208
- clusterMap[key].cy = 0;
209
- clusterMap[key].count = 0;
210
- }
211
- nodes.forEach((n) => {
212
- const c = clusterMap[n.cluster];
213
- if (isNumber(n.x)) {
214
- c.cx += n.x;
215
- }
216
- if (isNumber(n.y)) {
217
- c.cy += n.y;
218
- }
219
- c.count++;
220
- });
221
- for (const key in clusterMap) {
222
- clusterMap[key].cx /= clusterMap[key].count;
223
- clusterMap[key].cy /= clusterMap[key].count;
224
- }
225
-
226
- // compute the cluster gravity forces
227
- const clusterGravity = self.clusterGravity || gravity;
228
- nodes.forEach((n, j) => {
229
- if (!isNumber(n.x) || !isNumber(n.y)) return;
230
- const c = clusterMap[n.cluster];
231
- const distLength = Math.sqrt(
232
- (n.x - c.cx) * (n.x - c.cx) + (n.y - c.cy) * (n.y - c.cy)
233
- );
234
- const gravityForce = k * clusterGravity;
235
- displacements[j].x -= (gravityForce * (n.x - c.cx)) / distLength;
236
- displacements[j].y -= (gravityForce * (n.y - c.cy)) / distLength;
237
- });
238
- }
239
-
240
- // gravity
241
- nodes.forEach((n, j) => {
242
- if (!isNumber(n.x) || !isNumber(n.y)) return;
243
- const gravityForce = 0.01 * k * gravity;
244
- displacements[j].x -= gravityForce * (n.x - center[0]);
245
- displacements[j].y -= gravityForce * (n.y - center[1]);
246
- });
247
-
248
- // move
249
- nodes.forEach((n: any, j) => {
250
- if (isNumber(n.fx) && isNumber(n.fy)) {
251
- n.x = n.fx;
252
- n.y = n.fy;
253
- return;
254
- }
255
- if (!isNumber(n.x) || !isNumber(n.y)) return;
256
- const distLength = Math.sqrt(
257
- displacements[j].x * displacements[j].x +
258
- displacements[j].y * displacements[j].y
259
- );
260
- if (distLength > 0) {
261
- // && !n.isFixed()
262
- const limitedDist = Math.min(
263
- maxDisplace * (speed / SPEED_DIVISOR),
264
- distLength
265
- );
266
- n.x += (displacements[j].x / distLength) * limitedDist;
267
- n.y += (displacements[j].y / distLength) * limitedDist;
268
- }
269
- });
270
-
271
- self.tick?.();
272
- }
273
-
274
- private applyCalculate(
275
- nodes: INode[],
276
- edges: Edge[] | null,
277
- displacements: Point[],
278
- k: number,
279
- k2: number
280
- ) {
281
- const self = this;
282
- self.calRepulsive(nodes, displacements, k2);
283
- if (edges) self.calAttractive(edges, displacements, k);
284
- }
285
-
286
- private calRepulsive(nodes: INode[], displacements: Point[], k2: number) {
287
- nodes.forEach((v, i) => {
288
- displacements[i] = { x: 0, y: 0 };
289
- nodes.forEach((u, j) => {
290
- if (i === j) {
291
- return;
292
- }
293
- if (
294
- !isNumber(v.x) ||
295
- !isNumber(u.x) ||
296
- !isNumber(v.y) ||
297
- !isNumber(u.y)
298
- ) {
299
- return;
300
- }
301
- let vecX = v.x - u.x;
302
- let vecY = v.y - u.y;
303
- let vecLengthSqr = vecX * vecX + vecY * vecY;
304
- if (vecLengthSqr === 0) {
305
- vecLengthSqr = 1;
306
- const sign = i > j ? 1 : -1;
307
- vecX = 0.01 * sign;
308
- vecY = 0.01 * sign;
309
- }
310
- const common = k2 / vecLengthSqr;
311
- displacements[i].x += vecX * common;
312
- displacements[i].y += vecY * common;
313
- });
314
- });
315
- }
316
-
317
- private calAttractive(edges: Edge[], displacements: Point[], k: number) {
318
- edges.forEach((e) => {
319
- const source = getEdgeTerminal(e, 'source');
320
- const target = getEdgeTerminal(e, 'target');
321
- if (!source || !target) return;
322
- const uIndex = this.nodeIdxMap[source];
323
- const vIndex = this.nodeIdxMap[target];
324
- if (uIndex === vIndex) {
325
- return;
326
- }
327
- const u = this.nodeMap[source];
328
- const v = this.nodeMap[target];
329
- if (!isNumber(v.x) || !isNumber(u.x) || !isNumber(v.y) || !isNumber(u.y)) {
330
- return;
331
- }
332
- const vecX = v.x - u.x;
333
- const vecY = v.y - u.y;
334
- const vecLength = Math.sqrt(vecX * vecX + vecY * vecY);
335
- const common = (vecLength * vecLength) / k;
336
- displacements[vIndex].x -= (vecX / vecLength) * common;
337
- displacements[vIndex].y -= (vecY / vecLength) * common;
338
- displacements[uIndex].x += (vecX / vecLength) * common;
339
- displacements[uIndex].y += (vecY / vecLength) * common;
340
- });
341
- }
342
-
343
- public stop() {
344
- if (this.timeInterval && typeof window !== "undefined") {
345
- window.clearInterval(this.timeInterval);
346
- }
347
- }
348
-
349
- public destroy() {
350
- const self = this;
351
- self.stop();
352
- self.tick = null;
353
- self.nodes = null;
354
- self.edges = null;
355
- self.destroyed = true;
356
- }
357
-
358
- public getType() {
359
- return "fruchterman";
360
- }
361
- }