@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,608 +0,0 @@
1
- /**
2
- * @fileOverview fruchterman layout
3
- * @author shiwu.wyy@antfin.com
4
- */
5
- import { Base } from "../base";
6
- import { isNumber, isFunction, isArray, getDegreeMap, isObject, getEdgeTerminal, getAvgNodePosition, getCoreNodeAndRelativeLeafNodes } from "../../util";
7
- import { forceNBody } from "./ForceNBody";
8
- const proccessToFunc = (value, defaultV) => {
9
- let func;
10
- if (!value) {
11
- func = (d) => {
12
- return defaultV || 1;
13
- };
14
- }
15
- else if (isNumber(value)) {
16
- func = (d) => {
17
- return value;
18
- };
19
- }
20
- else {
21
- func = value;
22
- }
23
- return func;
24
- };
25
- /**
26
- * graphin 中的 force 布局
27
- */
28
- export class Force2Layout extends Base {
29
- constructor(options) {
30
- super();
31
- /** 停止迭代的最大迭代数 */
32
- this.maxIteration = 1000;
33
- /** 是否启动 worker */
34
- this.workerEnabled = false;
35
- /** 弹簧引力系数 */
36
- this.edgeStrength = 200;
37
- /** 斥力系数 */
38
- this.nodeStrength = 1000;
39
- /** 库伦系数 */
40
- this.coulombDisScale = 0.005;
41
- /** 阻尼系数 */
42
- this.damping = 0.9;
43
- /** 最大速度 */
44
- this.maxSpeed = 500;
45
- /** 一次迭代的平均移动距离小于该值时停止迭代 */
46
- this.minMovement = 0.4;
47
- /** 迭代中衰减 */
48
- this.interval = 0.02;
49
- /** 斥力的一个系数 */
50
- this.factor = 1;
51
- /** 理想边长 */
52
- this.linkDistance = 200;
53
- /** 重力大小 */
54
- this.gravity = 0;
55
- /** 节点聚类作用力系数 */
56
- this.clusterNodeStrength = 20;
57
- /** 是否防止重叠 */
58
- this.preventOverlap = true;
59
- /** 阈值的使用条件,mean 代表平均移动距离小于 minMovement 时停止迭代,max 代表最大移动距离大时 minMovement 时停时迭代。默认为 mean */
60
- this.distanceThresholdMode = 'mean';
61
- /** 每次迭代结束的回调函数 */
62
- this.tick = () => { };
63
- this.nodes = [];
64
- this.edges = [];
65
- this.width = 300;
66
- this.height = 300;
67
- this.nodeMap = {};
68
- this.nodeIdxMap = {};
69
- this.judgingDistance = 0;
70
- /** 默认的向心配置 */
71
- this.centripetalOptions = {
72
- leaf: 2,
73
- single: 2,
74
- others: 1,
75
- // eslint-disable-next-line
76
- center: (n) => {
77
- return {
78
- x: this.width / 2,
79
- y: this.height / 2,
80
- };
81
- },
82
- };
83
- const { getMass } = options;
84
- this.propsGetMass = getMass;
85
- this.updateCfg(options);
86
- }
87
- getCentripetalOptions() {
88
- const { leafCluster, clustering, nodeClusterBy, nodes, nodeMap, clusterNodeStrength: propsClusterNodeStrength } = this;
89
- const getClusterNodeStrength = (node) => typeof propsClusterNodeStrength === 'function' ? propsClusterNodeStrength(node) : propsClusterNodeStrength;
90
- let centripetalOptions = {};
91
- let sameTypeLeafMap;
92
- // 如果传入了需要叶子节点聚类
93
- if (leafCluster) {
94
- sameTypeLeafMap = this.getSameTypeLeafMap() || {};
95
- const relativeNodesType = Array.from(new Set(nodes === null || nodes === void 0 ? void 0 : nodes.map((node) => node[nodeClusterBy]))) || [];
96
- centripetalOptions = {
97
- single: 100,
98
- leaf: (node, nodes, edges) => {
99
- // 找出与它关联的边的起点或终点出发的所有一度节点中同类型的叶子节点
100
- const { relativeLeafNodes, sameTypeLeafNodes } = sameTypeLeafMap[node.id] || {};
101
- // 如果都是同一类型或者每种类型只有1个,则施加默认向心力
102
- if ((sameTypeLeafNodes === null || sameTypeLeafNodes === void 0 ? void 0 : sameTypeLeafNodes.length) === (relativeLeafNodes === null || relativeLeafNodes === void 0 ? void 0 : relativeLeafNodes.length) || (relativeNodesType === null || relativeNodesType === void 0 ? void 0 : relativeNodesType.length) === 1) {
103
- return 1;
104
- }
105
- return getClusterNodeStrength(node);
106
- },
107
- others: 1,
108
- center: (node, nodes, edges) => {
109
- var _a;
110
- const { degree } = ((_a = node.data) === null || _a === void 0 ? void 0 : _a.layout) || {};
111
- // 孤点默认给1个远离的中心点
112
- if (!degree) {
113
- return {
114
- x: 100,
115
- y: 100,
116
- };
117
- }
118
- let centerNode;
119
- if (degree === 1) {
120
- // 如果为叶子节点
121
- // 找出与它关联的边的起点出发的所有一度节点中同类型的叶子节点
122
- const { sameTypeLeafNodes = [] } = sameTypeLeafMap[node.id] || {};
123
- if (sameTypeLeafNodes.length === 1) {
124
- // 如果同类型的叶子节点只有1个,中心节点置为undefined
125
- centerNode = undefined;
126
- }
127
- else if (sameTypeLeafNodes.length > 1) {
128
- // 找出同类型节点平均位置节点的距离最近的节点作为中心节点
129
- centerNode = getAvgNodePosition(sameTypeLeafNodes);
130
- }
131
- }
132
- else {
133
- centerNode = undefined;
134
- }
135
- return {
136
- x: centerNode === null || centerNode === void 0 ? void 0 : centerNode.x,
137
- y: centerNode === null || centerNode === void 0 ? void 0 : centerNode.y,
138
- };
139
- },
140
- };
141
- }
142
- // 如果传入了全局节点聚类
143
- if (clustering) {
144
- if (!sameTypeLeafMap)
145
- sameTypeLeafMap = this.getSameTypeLeafMap();
146
- const clusters = Array.from(new Set(nodes.map((node, i) => {
147
- return node[nodeClusterBy];
148
- }))).filter((item) => item !== undefined);
149
- const centerNodeInfo = {};
150
- clusters.forEach((cluster) => {
151
- const sameTypeNodes = nodes.filter((item) => item[nodeClusterBy] === cluster).map((node) => nodeMap[node.id]);
152
- // 找出同类型节点平均位置节点的距离最近的节点作为中心节点
153
- centerNodeInfo[cluster] = getAvgNodePosition(sameTypeNodes);
154
- });
155
- centripetalOptions = {
156
- single: (node) => getClusterNodeStrength(node),
157
- leaf: (node) => getClusterNodeStrength(node),
158
- others: (node) => getClusterNodeStrength(node),
159
- center: (node, nodes, edges) => {
160
- // 找出同类型节点平均位置节点的距离最近的节点作为中心节点
161
- const centerNode = centerNodeInfo[node[nodeClusterBy]];
162
- return {
163
- x: centerNode === null || centerNode === void 0 ? void 0 : centerNode.x,
164
- y: centerNode === null || centerNode === void 0 ? void 0 : centerNode.y,
165
- };
166
- },
167
- };
168
- }
169
- this.centripetalOptions = Object.assign(Object.assign({}, this.centripetalOptions), centripetalOptions);
170
- const { leaf, single, others } = this.centripetalOptions;
171
- if (leaf && typeof leaf !== 'function')
172
- this.centripetalOptions.leaf = () => leaf;
173
- if (single && typeof single !== 'function')
174
- this.centripetalOptions.single = () => single;
175
- if (others && typeof others !== 'function')
176
- this.centripetalOptions.others = () => others;
177
- }
178
- updateCfg(cfg) {
179
- if (cfg)
180
- Object.assign(this, cfg);
181
- }
182
- getDefaultCfg() {
183
- return {
184
- maxIteration: 500,
185
- gravity: 10,
186
- enableTick: true,
187
- animate: true,
188
- };
189
- }
190
- /**
191
- * 执行布局
192
- */
193
- execute() {
194
- const self = this;
195
- self.stop();
196
- const { nodes, edges, defSpringLen } = self;
197
- self.judgingDistance = 0;
198
- if (!nodes || nodes.length === 0) {
199
- self.onLayoutEnd([]);
200
- return;
201
- }
202
- if (!self.width && typeof window !== "undefined") {
203
- self.width = window.innerWidth;
204
- }
205
- if (!self.height && typeof window !== "undefined") {
206
- self.height = window.innerHeight;
207
- }
208
- if (!self.center) {
209
- self.center = [self.width / 2, self.height / 2];
210
- }
211
- const center = self.center;
212
- if (nodes.length === 1) {
213
- nodes[0].x = center[0];
214
- nodes[0].y = center[1];
215
- self.onLayoutEnd([Object.assign({}, nodes[0])]);
216
- return;
217
- }
218
- self.degreesMap = getDegreeMap(nodes, edges);
219
- if (self.propsGetMass) {
220
- self.getMass = self.propsGetMass;
221
- }
222
- else {
223
- self.getMass = (d) => {
224
- let massWeight = 1;
225
- if (isNumber(d.mass))
226
- massWeight = d.mass;
227
- const degree = self.degreesMap[d.id].all;
228
- return (!degree || degree < 5) ? massWeight : degree * 5 * massWeight;
229
- };
230
- }
231
- // node size function
232
- const nodeSize = self.nodeSize;
233
- let nodeSizeFunc;
234
- if (self.preventOverlap) {
235
- const nodeSpacing = self.nodeSpacing;
236
- let nodeSpacingFunc;
237
- if (isNumber(nodeSpacing)) {
238
- nodeSpacingFunc = () => nodeSpacing;
239
- }
240
- else if (isFunction(nodeSpacing)) {
241
- nodeSpacingFunc = nodeSpacing;
242
- }
243
- else {
244
- nodeSpacingFunc = () => 0;
245
- }
246
- if (!nodeSize) {
247
- nodeSizeFunc = (d) => {
248
- if (d.size) {
249
- if (isArray(d.size)) {
250
- return Math.max(d.size[0], d.size[1]) + nodeSpacingFunc(d);
251
- }
252
- if (isObject(d.size)) {
253
- return Math.max(d.size.width, d.size.height) + nodeSpacingFunc(d);
254
- }
255
- return d.size + nodeSpacingFunc(d);
256
- }
257
- return 10 + nodeSpacingFunc(d);
258
- };
259
- }
260
- else if (isArray(nodeSize)) {
261
- nodeSizeFunc = (d) => {
262
- return Math.max(nodeSize[0], nodeSize[1]) + nodeSpacingFunc(d);
263
- };
264
- }
265
- else {
266
- nodeSizeFunc = (d) => nodeSize + nodeSpacingFunc(d);
267
- }
268
- }
269
- self.nodeSize = nodeSizeFunc;
270
- self.linkDistance = proccessToFunc(self.linkDistance, 1);
271
- self.nodeStrength = proccessToFunc(self.nodeStrength, 1);
272
- self.edgeStrength = proccessToFunc(self.edgeStrength, 1);
273
- const nodeMap = {};
274
- const nodeIdxMap = {};
275
- nodes.forEach((node, i) => {
276
- if (!isNumber(node.x))
277
- node.x = Math.random() * self.width;
278
- if (!isNumber(node.y))
279
- node.y = Math.random() * self.height;
280
- const degree = self.degreesMap[node.id];
281
- nodeMap[node.id] = Object.assign(Object.assign({}, node), { data: Object.assign(Object.assign({}, node.data), { size: self.nodeSize(node) || 30, layout: {
282
- inDegree: degree.in,
283
- outDegree: degree.out,
284
- degree: degree.all,
285
- tDegree: degree.in,
286
- sDegree: degree.out,
287
- force: {
288
- mass: self.getMass(node),
289
- nodeStrength: self.nodeStrength(node)
290
- }
291
- } }) });
292
- nodeIdxMap[node.id] = i;
293
- });
294
- self.nodeMap = nodeMap;
295
- self.nodeIdxMap = nodeIdxMap;
296
- self.edgeInfos = [];
297
- edges === null || edges === void 0 ? void 0 : edges.forEach((edge) => {
298
- const sourceNode = nodeMap[edge.source];
299
- const targetNode = nodeMap[edge.target];
300
- if (!sourceNode || !targetNode) {
301
- elf.edgeInfos.push({});
302
- }
303
- else {
304
- self.edgeInfos.push({
305
- edgeStrength: self.edgeStrength(edge),
306
- linkDistance: defSpringLen ? defSpringLen(Object.assign(Object.assign({}, edge), { source: sourceNode, target: targetNode }), sourceNode, targetNode) : self.linkDistance(edge, sourceNode, targetNode) || 1 + ((nodeSize(sourceNode) + nodeSize(sourceNode)) || 0) / 2
307
- });
308
- }
309
- });
310
- this.getCentripetalOptions();
311
- self.onLayoutEnd = self.onLayoutEnd || (() => { });
312
- self.run();
313
- }
314
- run() {
315
- const self = this;
316
- const { maxIteration, nodes, workerEnabled, minMovement, animate, nodeMap } = self;
317
- if (!nodes)
318
- return;
319
- const velArray = [];
320
- nodes.forEach((_, i) => {
321
- velArray[2 * i] = 0;
322
- velArray[2 * i + 1] = 0;
323
- });
324
- const maxIter = maxIteration;
325
- const silence = !animate;
326
- if (workerEnabled || silence) {
327
- let usedIter = 0;
328
- for (let i = 0; (self.judgingDistance > minMovement || i < 1) && i < maxIter; i++) {
329
- usedIter = i;
330
- self.runOneStep(i, velArray);
331
- }
332
- self.onLayoutEnd(Object.values(nodeMap));
333
- }
334
- else {
335
- if (typeof window === "undefined")
336
- return;
337
- let iter = 0;
338
- // interval for render the result after each iteration
339
- this.timeInterval = window.setInterval(() => {
340
- if (!nodes)
341
- return;
342
- self.runOneStep(iter, velArray);
343
- iter++;
344
- if (iter >= maxIter || self.judgingDistance < minMovement) {
345
- self.onLayoutEnd(Object.values(nodeMap));
346
- window.clearInterval(self.timeInterval);
347
- }
348
- }, 0);
349
- }
350
- }
351
- runOneStep(iter, velArray) {
352
- var _a;
353
- const self = this;
354
- const { nodes, edges, nodeMap, monitor } = self;
355
- const accArray = [];
356
- if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length))
357
- return;
358
- self.calRepulsive(accArray);
359
- if (edges)
360
- self.calAttractive(accArray);
361
- self.calGravity(accArray);
362
- const stepInterval = self.interval; // Math.max(0.02, self.interval - iter * 0.002);
363
- self.updateVelocity(accArray, velArray, stepInterval);
364
- self.updatePosition(velArray, stepInterval);
365
- (_a = self.tick) === null || _a === void 0 ? void 0 : _a.call(self);
366
- /** 如果需要监控信息,则提供给用户 */
367
- if (monitor) {
368
- const energy = this.calTotalEnergy(accArray);
369
- monitor({ energy, nodes, edges, iterations: iter });
370
- }
371
- }
372
- calTotalEnergy(accArray) {
373
- const { nodes, nodeMap } = this;
374
- if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length))
375
- return 0;
376
- let energy = 0.0;
377
- nodes.forEach((node, i) => {
378
- const vx = accArray[2 * i];
379
- const vy = accArray[2 * i + 1];
380
- const speed2 = vx * vx + vy * vy;
381
- const { mass = 1 } = nodeMap[node.id].data.layout.force;
382
- energy += mass * speed2 * 0.5; // p = 1/2*(mv^2)
383
- });
384
- return energy;
385
- }
386
- // coulombs law
387
- calRepulsive(accArray) {
388
- const self = this;
389
- const { nodes, nodeMap, factor, coulombDisScale } = self;
390
- const nodeSize = self.nodeSize;
391
- forceNBody(nodes, nodeMap, factor, coulombDisScale * coulombDisScale, accArray);
392
- }
393
- // hooks law
394
- calAttractive(accArray) {
395
- const self = this;
396
- const { edges, nodeMap, nodeIdxMap, edgeInfos } = self;
397
- const nodeSize = self.nodeSize;
398
- edges.forEach((edge, i) => {
399
- const source = getEdgeTerminal(edge, 'source');
400
- const target = getEdgeTerminal(edge, 'target');
401
- const sourceNode = nodeMap[source];
402
- const targetNode = nodeMap[target];
403
- if (!sourceNode || !targetNode)
404
- return;
405
- let vecX = targetNode.x - sourceNode.x;
406
- let vecY = targetNode.y - sourceNode.y;
407
- if (!vecX && !vecY) {
408
- vecX = Math.random() * 0.01;
409
- vecY = Math.random() * 0.01;
410
- }
411
- const vecLength = Math.sqrt(vecX * vecX + vecY * vecY);
412
- const direX = vecX / vecLength;
413
- const direY = vecY / vecLength;
414
- // @ts-ignore
415
- const { linkDistance = 200, edgeStrength = 200 } = edgeInfos[i] || {};
416
- const diff = linkDistance - vecLength;
417
- const param = diff * edgeStrength;
418
- const massSource = sourceNode.data.layout.force.mass || 1;
419
- const massTarget = targetNode.data.layout.force.mass || 1;
420
- // 质量占比越大,对另一端影响程度越大
421
- const sourceMassRatio = 1 / massSource;
422
- const targetMassRatio = 1 / massTarget;
423
- const disX = direX * param;
424
- const disY = direY * param;
425
- const sourceIdx = 2 * nodeIdxMap[source];
426
- const targetIdx = 2 * nodeIdxMap[target];
427
- accArray[sourceIdx] -= disX * sourceMassRatio;
428
- accArray[sourceIdx + 1] -= disY * sourceMassRatio;
429
- accArray[targetIdx] += disX * targetMassRatio;
430
- accArray[targetIdx + 1] += disY * targetMassRatio;
431
- });
432
- }
433
- // attract to center
434
- calGravity(accArray) {
435
- var _a;
436
- const self = this;
437
- const { nodes, edges = [], nodeMap, width, height, center, gravity: defaultGravity, degreesMap, centripetalOptions } = self;
438
- if (!nodes)
439
- return;
440
- const nodeLength = nodes.length;
441
- for (let i = 0; i < nodeLength; i++) {
442
- const idx = 2 * i;
443
- const node = nodeMap[nodes[i].id];
444
- const { mass = 1 } = node.data.layout.force;
445
- let vecX = 0;
446
- let vecY = 0;
447
- let gravity = defaultGravity;
448
- const { in: inDegree, out: outDegree, all: degree } = degreesMap[node.id];
449
- const forceCenter = (_a = self.getCenter) === null || _a === void 0 ? void 0 : _a.call(self, node, degree);
450
- if (forceCenter) {
451
- const [centerX, centerY, strength] = forceCenter;
452
- vecX = node.x - centerX;
453
- vecY = node.y - centerY;
454
- gravity = strength;
455
- }
456
- else {
457
- vecX = node.x - center[0];
458
- vecY = node.y - center[1];
459
- }
460
- if (gravity) {
461
- accArray[idx] -= gravity * vecX / mass;
462
- accArray[idx + 1] -= gravity * vecY / mass;
463
- }
464
- if (centripetalOptions) {
465
- const { leaf, single, others, center: centriCenter } = centripetalOptions;
466
- const { x: centriX, y: centriY, centerStrength } = (centriCenter === null || centriCenter === void 0 ? void 0 : centriCenter(node, nodes, edges, width, height)) || { x: 0, y: 0, centerStrength: 0 };
467
- if (!isNumber(centriX) || !isNumber(centriY))
468
- continue;
469
- const vx = (node.x - centriX) / mass;
470
- const vy = (node.y - centriY) / mass;
471
- if (centerStrength) {
472
- accArray[idx] -= centerStrength * vx;
473
- accArray[idx + 1] -= centerStrength * vy;
474
- }
475
- // 孤点
476
- if (degree === 0) {
477
- const singleStrength = single(node);
478
- if (!singleStrength)
479
- continue;
480
- accArray[idx] -= singleStrength * vx;
481
- accArray[idx + 1] -= singleStrength * vy;
482
- continue;
483
- }
484
- // 没有出度或没有入度,都认为是叶子节点
485
- if (inDegree === 0 || outDegree === 0) {
486
- const leafStrength = leaf(node, nodes, edges);
487
- if (!leafStrength)
488
- continue;
489
- accArray[idx] -= leafStrength * vx;
490
- accArray[idx + 1] -= leafStrength * vy;
491
- continue;
492
- }
493
- /** others */
494
- const othersStrength = others(node);
495
- if (!othersStrength)
496
- continue;
497
- accArray[idx] -= othersStrength * vx;
498
- accArray[idx + 1] -= othersStrength * vy;
499
- }
500
- }
501
- }
502
- // TODO: 待 graphin 修改正确
503
- // public attractToSide(accArray: number[]) {
504
- // const { defSideCoe, height, nodes } = this;
505
- // if (!defSideCoe || typeof defSideCoe !== 'function' || !nodes?.length) return;
506
- // nodes.forEach((node, i) => {
507
- // const sideCoe = defSideCoe!(node);
508
- // if (sideCoe === 0) return;
509
- // const targetY = sideCoe > 0 ? 0 : height;
510
- // const strength = Math.abs(sideCoe);
511
- // accArray[2 * i + 1] -= strength * (targetY - node.y);
512
- // });
513
- // };
514
- updateVelocity(accArray, velArray, stepInterval) {
515
- const self = this;
516
- const { nodes, damping, maxSpeed } = self;
517
- if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length))
518
- return;
519
- nodes.forEach((_, i) => {
520
- let vx = (velArray[2 * i] + accArray[2 * i] * stepInterval) * damping || 0.01;
521
- let vy = (velArray[2 * i + 1] + accArray[2 * i + 1] * stepInterval) * damping || 0.01;
522
- const vLength = Math.sqrt(vx * vx + vy * vy);
523
- if (vLength > maxSpeed) {
524
- const param2 = maxSpeed / vLength;
525
- vx = param2 * vx;
526
- vy = param2 * vy;
527
- }
528
- velArray[2 * i] = vx;
529
- velArray[2 * i + 1] = vy;
530
- });
531
- }
532
- updatePosition(velArray, stepInterval) {
533
- const self = this;
534
- const { nodes, distanceThresholdMode, nodeMap } = self;
535
- if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length)) {
536
- this.judgingDistance = 0;
537
- return;
538
- }
539
- let sum = 0;
540
- if (distanceThresholdMode === 'max')
541
- self.judgingDistance = -Infinity;
542
- else if (distanceThresholdMode === 'min')
543
- self.judgingDistance = Infinity;
544
- nodes.forEach((node, i) => {
545
- const mappedNode = nodeMap[node.id];
546
- if (isNumber(node.fx) && isNumber(node.fy)) {
547
- node.x = node.fx;
548
- node.y = node.fy;
549
- mappedNode.x = node.x;
550
- mappedNode.y = node.y;
551
- return;
552
- }
553
- const distX = velArray[2 * i] * stepInterval;
554
- const distY = velArray[2 * i + 1] * stepInterval;
555
- node.x += distX;
556
- node.y += distY;
557
- mappedNode.x = node.x;
558
- mappedNode.y = node.y;
559
- const distanceMagnitude = Math.sqrt(distX * distX + distY * distY);
560
- switch (distanceThresholdMode) {
561
- case 'max':
562
- if (self.judgingDistance < distanceMagnitude)
563
- self.judgingDistance = distanceMagnitude;
564
- break;
565
- case 'min':
566
- if (self.judgingDistance > distanceMagnitude)
567
- self.judgingDistance = distanceMagnitude;
568
- break;
569
- default:
570
- sum = sum + distanceMagnitude;
571
- break;
572
- }
573
- });
574
- if (!distanceThresholdMode || distanceThresholdMode === 'mean')
575
- self.judgingDistance = sum / nodes.length;
576
- }
577
- stop() {
578
- if (this.timeInterval && typeof window !== "undefined") {
579
- window.clearInterval(this.timeInterval);
580
- }
581
- }
582
- destroy() {
583
- const self = this;
584
- self.stop();
585
- self.tick = null;
586
- self.nodes = null;
587
- self.edges = null;
588
- self.destroyed = true;
589
- }
590
- getType() {
591
- return "force2";
592
- }
593
- getSameTypeLeafMap() {
594
- const { nodeClusterBy, nodes, edges, nodeMap, degreesMap } = this;
595
- if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length))
596
- return;
597
- // eslint-disable-next-line
598
- const sameTypeLeafMap = {};
599
- nodes.forEach((node, i) => {
600
- const degree = degreesMap[node.id].all;
601
- if (degree === 1) {
602
- sameTypeLeafMap[node.id] = getCoreNodeAndRelativeLeafNodes('leaf', node, edges, nodeClusterBy, degreesMap, nodeMap);
603
- }
604
- });
605
- return sameTypeLeafMap;
606
- }
607
- }
608
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/layout/force2/index.ts"],"names":[],"mappings":"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"}