@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,51 +0,0 @@
1
- import { PointTuple, Matrix } from '../types';
2
- import { Matrix as MLMatrix, SingularValueDecomposition } from 'ml-matrix';
3
-
4
- export default class MDS {
5
- /** distance matrix */
6
- public distances: Matrix[];
7
-
8
- /** dimensions */
9
- public dimension: number;
10
-
11
- /** link distance */
12
- public linkDistance: number;
13
-
14
- constructor(params: { distances: Matrix[]; dimension?: number; linkDistance: number }) {
15
- this.distances = params.distances;
16
- this.dimension = params.dimension || 2;
17
- this.linkDistance = params.linkDistance;
18
- }
19
-
20
- public layout(): PointTuple[] {
21
- const self = this;
22
- const { dimension, distances, linkDistance } = self;
23
-
24
- try {
25
- // square distances
26
- const M = MLMatrix.mul(MLMatrix.pow(distances, 2), -0.5);
27
-
28
- // double centre the rows/columns
29
- const rowMeans = M.mean('row');
30
- const colMeans = M.mean('column');
31
- const totalMean = M.mean();
32
- M.add(totalMean).subRowVector(rowMeans).subColumnVector(colMeans);
33
-
34
- // take the SVD of the double centred matrix, and return the
35
- // points from it
36
- const ret = new SingularValueDecomposition(M);
37
- const eigenValues = MLMatrix.sqrt(ret.diagonalMatrix).diagonal();
38
- return ret.leftSingularVectors.toJSON().map((row: number[]) => {
39
- return MLMatrix.mul([row], [eigenValues]).toJSON()[0].splice(0, dimension) as PointTuple;
40
- });
41
- } catch {
42
- const res: PointTuple[] = [];
43
- for (let i = 0; i < distances.length; i++) {
44
- const x = Math.random() * linkDistance;
45
- const y = Math.random() * linkDistance;
46
- res.push([x, y]);
47
- }
48
- return res;
49
- }
50
- }
51
- }
@@ -1,500 +0,0 @@
1
- /**
2
- * @fileOverview random layout
3
- * @author shiwu.wyy@antfin.com
4
- */
5
-
6
- import {
7
- PointTuple,
8
- Node,
9
- OutNode,
10
- Edge,
11
- Matrix,
12
- RadialLayoutOptions
13
- } from "../types";
14
- import {
15
- isNaN,
16
- isArray,
17
- isFunction,
18
- isNumber,
19
- isString,
20
- floydWarshall,
21
- getAdjMatrix,
22
- isObject
23
- } from "../../util";
24
- import { Base } from "../base";
25
- import MDS from "./mds";
26
- import RadialNonoverlapForce, {
27
- RadialNonoverlapForceParam
28
- } from "./radialNonoverlapForce";
29
-
30
- type INode = OutNode & {
31
- size?: number | PointTuple;
32
- };
33
-
34
- function getWeightMatrix(M: Matrix[]) {
35
- const rows = M.length;
36
- const cols = M[0].length;
37
- const result = [];
38
- for (let i = 0; i < rows; i++) {
39
- const row = [];
40
- for (let j = 0; j < cols; j++) {
41
- if (M[i][j] !== 0) {
42
- row.push(1 / (M[i][j] * M[i][j]));
43
- } else {
44
- row.push(0);
45
- }
46
- }
47
- result.push(row);
48
- }
49
- return result;
50
- }
51
-
52
- function getIndexById(array: any[], id: string) {
53
- let index = -1;
54
- array.forEach((a, i) => {
55
- if (a.id === id) {
56
- index = i;
57
- }
58
- });
59
- return index;
60
- }
61
-
62
- function getEDistance(p1: PointTuple, p2: PointTuple) {
63
- return Math.sqrt(
64
- (p1[0] - p2[0]) * (p1[0] - p2[0]) + (p1[1] - p2[1]) * (p1[1] - p2[1])
65
- );
66
- }
67
-
68
- /**
69
- * 辐射状布局
70
- */
71
- export class RadialLayout extends Base {
72
- /** 布局中心 */
73
- public center: PointTuple;
74
-
75
- /** 停止迭代的最大迭代数 */
76
- public maxIteration: number = 1000;
77
-
78
- /** 中心点,默认为数据中第一个点 */
79
- public focusNode: string | Node | null = null;
80
-
81
- /** 每一圈半径 */
82
- public unitRadius: number | null = null;
83
-
84
- /** 默认边长度 */
85
- public linkDistance: number = 50;
86
-
87
- /** 是否防止重叠 */
88
- public preventOverlap: boolean = false;
89
-
90
- /** 节点直径 */
91
- public nodeSize: number | number[] | undefined;
92
-
93
- /** 节点间距,防止节点重叠时节点之间的最小距离(两节点边缘最短距离) */
94
- public nodeSpacing: number | Function | undefined;
95
-
96
- /** 是否必须是严格的 radial 布局,即每一层的节点严格布局在一个环上。preventOverlap 为 true 时生效 */
97
- public strictRadial: boolean = true;
98
-
99
- /** 防止重叠步骤的最大迭代次数 */
100
- public maxPreventOverlapIteration: number = 200;
101
-
102
- public sortBy: string | undefined;
103
-
104
- public sortStrength: number = 10;
105
-
106
- public width: number | undefined;
107
-
108
- public height: number | undefined;
109
-
110
- private focusIndex: number | undefined;
111
-
112
- private distances: Matrix[] | undefined;
113
-
114
- private eIdealDistances: Matrix[] | undefined;
115
-
116
- private weights: Matrix[] | undefined;
117
-
118
- private radii: number[] | undefined;
119
-
120
- public nodes: INode[] = [];
121
-
122
- public edges: Edge[] = [];
123
-
124
- public onLayoutEnd: () => void;
125
-
126
- constructor(options?: RadialLayoutOptions) {
127
- super();
128
- this.updateCfg(options);
129
- }
130
-
131
- public getDefaultCfg() {
132
- return {
133
- maxIteration: 1000,
134
- focusNode: null,
135
- unitRadius: null,
136
- linkDistance: 50,
137
- preventOverlap: false,
138
- nodeSize: undefined,
139
- nodeSpacing: undefined,
140
- strictRadial: true,
141
- maxPreventOverlapIteration: 200,
142
- sortBy: undefined,
143
- sortStrength: 10
144
- };
145
- }
146
-
147
- /**
148
- * 执行布局
149
- */
150
- public execute() {
151
- const self = this;
152
- const nodes = self.nodes;
153
- const edges = self.edges || [];
154
- if (!nodes || nodes.length === 0) {
155
- if (self.onLayoutEnd) self.onLayoutEnd();
156
- return;
157
- }
158
-
159
- if (!self.width && typeof window !== "undefined") {
160
- self.width = window.innerWidth;
161
- }
162
- if (!self.height && typeof window !== "undefined") {
163
- self.height = window.innerHeight;
164
- }
165
- if (!self.center) {
166
- self.center = [self.width! / 2, self.height! / 2];
167
- }
168
- const center = self.center;
169
-
170
- if (nodes.length === 1) {
171
- nodes[0].x = center[0];
172
- nodes[0].y = center[1];
173
- if (self.onLayoutEnd) self.onLayoutEnd();
174
- return;
175
- }
176
- const linkDistance = self.linkDistance;
177
- // layout
178
- let focusNode: INode | null = null;
179
- if (isString(self.focusNode)) {
180
- let found = false;
181
- for (let i = 0; i < nodes.length; i++) {
182
- if (nodes[i].id === self.focusNode) {
183
- focusNode = nodes[i];
184
- self.focusNode = focusNode;
185
- found = true;
186
- i = nodes.length;
187
- }
188
- }
189
- if (!found) {
190
- focusNode = null;
191
- }
192
- } else {
193
- focusNode = self.focusNode as INode;
194
- }
195
- // default focus node
196
- if (!focusNode) {
197
- focusNode = nodes[0];
198
- self.focusNode = focusNode;
199
- }
200
- // the index of the focusNode in data
201
- let focusIndex = getIndexById(nodes, focusNode.id);
202
- if (focusIndex < 0) focusIndex = 0;
203
- self.focusIndex = focusIndex;
204
-
205
- // the graph-theoretic distance (shortest path distance) matrix
206
- const adjMatrix = getAdjMatrix({ nodes, edges }, false);
207
- const D = floydWarshall(adjMatrix);
208
- const maxDistance = self.maxToFocus(D, focusIndex);
209
- // replace first node in unconnected component to the circle at (maxDistance + 1)
210
- self.handleInfinity(D, focusIndex, maxDistance + 1);
211
- self.distances = D;
212
-
213
- // the shortest path distance from each node to focusNode
214
- const focusNodeD = D[focusIndex];
215
- const width = self.width || 500;
216
- const height = self.height || 500;
217
- let semiWidth =
218
- width - center[0] > center[0] ? center[0] : width - center[0];
219
- let semiHeight =
220
- height - center[1] > center[1] ? center[1] : height - center[1];
221
- if (semiWidth === 0) {
222
- semiWidth = width / 2;
223
- }
224
- if (semiHeight === 0) {
225
- semiHeight = height / 2;
226
- }
227
- // the maxRadius of the graph
228
- const maxRadius = semiHeight > semiWidth ? semiWidth : semiHeight;
229
- const maxD = Math.max(...focusNodeD);
230
- // the radius for each nodes away from focusNode
231
- const radii: number[] = [];
232
- focusNodeD.forEach((value, i) => {
233
- if (!self.unitRadius) {
234
- self.unitRadius = maxRadius / maxD;
235
- }
236
- radii[i] = value * self.unitRadius;
237
- });
238
- self.radii = radii;
239
-
240
- const eIdealD = self.eIdealDisMatrix();
241
- // const eIdealD = scaleMatrix(D, linkDistance);
242
- self.eIdealDistances = eIdealD;
243
- // the weight matrix, Wij = 1 / dij^(-2)
244
- const W = getWeightMatrix(eIdealD);
245
- self.weights = W;
246
-
247
- // the initial positions from mds
248
- const mds = new MDS({ linkDistance, distances: eIdealD });
249
- let positions = mds.layout();
250
- positions.forEach((p: PointTuple) => {
251
- if (isNaN(p[0])) {
252
- p[0] = Math.random() * linkDistance;
253
- }
254
- if (isNaN(p[1])) {
255
- p[1] = Math.random() * linkDistance;
256
- }
257
- });
258
- self.positions = positions;
259
- positions.forEach((p: PointTuple, i: number) => {
260
- nodes[i].x = p[0] + center[0];
261
- nodes[i].y = p[1] + center[1];
262
- });
263
- // move the graph to origin, centered at focusNode
264
- positions.forEach((p: PointTuple) => {
265
- p[0] -= positions[focusIndex][0];
266
- p[1] -= positions[focusIndex][1];
267
- });
268
- self.run();
269
- const preventOverlap = self.preventOverlap;
270
- const nodeSize = self.nodeSize;
271
- let nodeSizeFunc;
272
- const strictRadial = self.strictRadial;
273
- // stagger the overlapped nodes
274
- if (preventOverlap) {
275
- const nodeSpacing = self.nodeSpacing;
276
- let nodeSpacingFunc: Function;
277
- if (isNumber(nodeSpacing)) {
278
- nodeSpacingFunc = () => nodeSpacing;
279
- } else if (isFunction(nodeSpacing)) {
280
- nodeSpacingFunc = nodeSpacing;
281
- } else {
282
- nodeSpacingFunc = () => 0;
283
- }
284
- if (!nodeSize) {
285
- nodeSizeFunc = (d: INode) => {
286
- if (d.size) {
287
- if (isArray(d.size)) {
288
- const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];
289
- return res + nodeSpacingFunc(d);
290
- } if (isObject(d.size)) {
291
- const res = d.size.width > d.size.height ? d.size.width : d.size.height;
292
- return res + nodeSpacingFunc(d);
293
- }
294
- return d.size + nodeSpacingFunc(d);
295
- }
296
- return 10 + nodeSpacingFunc(d);
297
- };
298
- } else if (isArray(nodeSize)) {
299
- nodeSizeFunc = (d: INode) => {
300
- const res = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];
301
- return res + nodeSpacingFunc(d);
302
- };
303
- } else {
304
- nodeSizeFunc = (d: INode) => nodeSize + nodeSpacingFunc(d);
305
- }
306
- const nonoverlapForceParams: RadialNonoverlapForceParam = {
307
- nodes,
308
- nodeSizeFunc,
309
- adjMatrix,
310
- positions,
311
- radii,
312
- height,
313
- width,
314
- strictRadial,
315
- focusID: focusIndex,
316
- iterations: self.maxPreventOverlapIteration || 200,
317
- k: positions.length / 4.5
318
- };
319
- const nonoverlapForce = new RadialNonoverlapForce(nonoverlapForceParams);
320
- positions = nonoverlapForce.layout();
321
- }
322
- // move the graph to center
323
- positions.forEach((p: PointTuple, i: number) => {
324
- nodes[i].x = p[0] + center[0];
325
- nodes[i].y = p[1] + center[1];
326
- });
327
-
328
- if (self.onLayoutEnd) self.onLayoutEnd();
329
-
330
- return {
331
- nodes,
332
- edges
333
- };
334
- }
335
-
336
- public run() {
337
- const self = this;
338
- const maxIteration = self.maxIteration;
339
- const positions = self.positions || [];
340
- const W = self.weights || [];
341
- const eIdealDis = self.eIdealDistances || [];
342
- const radii = self.radii || [];
343
- for (let i = 0; i <= maxIteration; i++) {
344
- const param = i / maxIteration;
345
- self.oneIteration(param, positions, radii, eIdealDis, W);
346
- }
347
- }
348
-
349
- private oneIteration(
350
- param: number,
351
- positions: PointTuple[],
352
- radii: number[],
353
- D: Matrix[],
354
- W: Matrix[]
355
- ) {
356
- const self = this;
357
- const vparam = 1 - param;
358
- const focusIndex = self.focusIndex;
359
- positions.forEach((v: PointTuple, i: number) => {
360
- // v
361
- const originDis = getEDistance(v, [0, 0]);
362
- const reciODis = originDis === 0 ? 0 : 1 / originDis;
363
- if (i === focusIndex) {
364
- return;
365
- }
366
- let xMolecule = 0;
367
- let yMolecule = 0;
368
- let denominator = 0;
369
- positions.forEach((u, j) => {
370
- // u
371
- if (i === j) {
372
- return;
373
- }
374
- // the euclidean distance between v and u
375
- const edis = getEDistance(v, u);
376
- const reciEdis = edis === 0 ? 0 : 1 / edis;
377
- const idealDis = D[j][i];
378
- // same for x and y
379
- denominator += W[i][j];
380
- // x
381
- xMolecule += W[i][j] * (u[0] + idealDis * (v[0] - u[0]) * reciEdis);
382
- // y
383
- yMolecule += W[i][j] * (u[1] + idealDis * (v[1] - u[1]) * reciEdis);
384
- });
385
- const reciR = radii[i] === 0 ? 0 : 1 / radii[i];
386
- denominator *= vparam;
387
- denominator += param * reciR * reciR;
388
- // x
389
- xMolecule *= vparam;
390
- xMolecule += param * reciR * v[0] * reciODis;
391
- v[0] = xMolecule / denominator;
392
- // y
393
- yMolecule *= vparam;
394
- yMolecule += param * reciR * v[1] * reciODis;
395
- v[1] = yMolecule / denominator;
396
- });
397
- }
398
-
399
- private eIdealDisMatrix(): Matrix[] {
400
- const self = this;
401
- const nodes = self.nodes;
402
- if (!nodes) return [];
403
- const D = self.distances;
404
- const linkDis = self.linkDistance;
405
- const radii = self.radii || [];
406
- const unitRadius = self.unitRadius || 50;
407
- const result: Matrix[] = [];
408
- if (D) {
409
- D.forEach((row, i) => {
410
- const newRow: Matrix = [];
411
- row.forEach((v, j) => {
412
- if (i === j) {
413
- newRow.push(0);
414
- } else if (radii[i] === radii[j]) {
415
- // i and j are on the same circle
416
- if (self.sortBy === "data") {
417
- // sort the nodes on the same circle according to the ordering of the data
418
- newRow.push(
419
- (v * (Math.abs(i - j) * self.sortStrength)) /
420
- (radii[i] / unitRadius)
421
- );
422
- } else if (self.sortBy) {
423
- // sort the nodes on the same circle according to the attributes
424
- let iValue: number | string =
425
- ((nodes[i] as any)[self.sortBy] as number | string) || 0;
426
- let jValue: number | string =
427
- ((nodes[j] as any)[self.sortBy] as number | string) || 0;
428
- if (isString(iValue)) {
429
- iValue = iValue.charCodeAt(0);
430
- }
431
- if (isString(jValue)) {
432
- jValue = jValue.charCodeAt(0);
433
- }
434
- newRow.push(
435
- (v * (Math.abs(iValue - jValue) * self.sortStrength)) /
436
- (radii[i] / unitRadius)
437
- );
438
- } else {
439
- newRow.push((v * linkDis) / (radii[i] / unitRadius));
440
- }
441
- } else {
442
- // i and j are on different circle
443
- // i and j are on different circle
444
- const link = (linkDis + unitRadius) / 2;
445
- newRow.push(v * link);
446
- }
447
- });
448
- result.push(newRow);
449
- });
450
- }
451
- return result;
452
- }
453
-
454
- private handleInfinity(matrix: Matrix[], focusIndex: number, step: number) {
455
- const length = matrix.length;
456
- // 遍历 matrix 中遍历 focus 对应行
457
- for (let i = 0; i < length; i++) {
458
- // matrix 关注点对应行的 Inf 项
459
- if (matrix[focusIndex][i] === Infinity) {
460
- matrix[focusIndex][i] = step;
461
- matrix[i][focusIndex] = step;
462
- // 遍历 matrix 中的 i 行,i 行中非 Inf 项若在 focus 行为 Inf,则替换 focus 行的那个 Inf
463
- for (let j = 0; j < length; j++) {
464
- if (matrix[i][j] !== Infinity && matrix[focusIndex][j] === Infinity) {
465
- matrix[focusIndex][j] = step + matrix[i][j];
466
- matrix[j][focusIndex] = step + matrix[i][j];
467
- }
468
- }
469
- }
470
- }
471
- // 处理其他行的 Inf。根据该行对应点与 focus 距离以及 Inf 项点 与 focus 距离,决定替换值
472
- for (let i = 0; i < length; i++) {
473
- if (i === focusIndex) {
474
- continue;
475
- }
476
- for (let j = 0; j < length; j++) {
477
- if (matrix[i][j] === Infinity) {
478
- let minus = Math.abs(matrix[focusIndex][i] - matrix[focusIndex][j]);
479
- minus = minus === 0 ? 1 : minus;
480
- matrix[i][j] = minus;
481
- }
482
- }
483
- }
484
- }
485
-
486
- private maxToFocus(matrix: Matrix[], focusIndex: number): number {
487
- let max = 0;
488
- for (let i = 0; i < matrix[focusIndex].length; i++) {
489
- if (matrix[focusIndex][i] === Infinity) {
490
- continue;
491
- }
492
- max = matrix[focusIndex][i] > max ? matrix[focusIndex][i] : max;
493
- }
494
- return max;
495
- }
496
-
497
- public getType() {
498
- return "radial";
499
- }
500
- }