@antv/layout 0.3.12 → 1.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/README.md +45 -32
  2. package/dist/3a54d760230d1933f953.worker.js +2 -0
  3. package/dist/3a54d760230d1933f953.worker.js.map +1 -0
  4. package/dist/index.min.js +2 -0
  5. package/dist/index.min.js.map +1 -0
  6. package/lib/Circular.d.ts +40 -0
  7. package/lib/Supervisor.d.ts +65 -0
  8. package/lib/index.d.ts +3 -3
  9. package/lib/registry.d.ts +3 -0
  10. package/lib/types.d.ts +128 -0
  11. package/lib/util/gpu.d.ts +22 -22
  12. package/lib/util/index.d.ts +6 -6
  13. package/lib/util/math.d.ts +3 -3
  14. package/lib/worker.d.ts +3 -0
  15. package/package.json +21 -95
  16. package/dist/layout.min.js +0 -3
  17. package/dist/layout.min.js.LICENSE.txt +0 -1
  18. package/dist/layout.min.js.map +0 -1
  19. package/es/index.d.ts +0 -3
  20. package/es/index.js +0 -6
  21. package/es/index.js.map +0 -1
  22. package/es/layout/base.d.ts +0 -22
  23. package/es/layout/base.js +0 -51
  24. package/es/layout/base.js.map +0 -1
  25. package/es/layout/circular.d.ts +0 -80
  26. package/es/layout/circular.js +0 -314
  27. package/es/layout/circular.js.map +0 -1
  28. package/es/layout/comboCombined.d.ts +0 -54
  29. package/es/layout/comboCombined.js +0 -354
  30. package/es/layout/comboCombined.js.map +0 -1
  31. package/es/layout/comboForce.d.ts +0 -134
  32. package/es/layout/comboForce.js +0 -801
  33. package/es/layout/comboForce.js.map +0 -1
  34. package/es/layout/concentric.d.ts +0 -67
  35. package/es/layout/concentric.js +0 -219
  36. package/es/layout/concentric.js.map +0 -1
  37. package/es/layout/constants.d.ts +0 -12
  38. package/es/layout/constants.js +0 -22
  39. package/es/layout/constants.js.map +0 -1
  40. package/es/layout/dagre/graph.d.ts +0 -91
  41. package/es/layout/dagre/graph.js +0 -4
  42. package/es/layout/dagre/graph.js.map +0 -1
  43. package/es/layout/dagre/index.d.ts +0 -8
  44. package/es/layout/dagre/index.js +0 -31
  45. package/es/layout/dagre/index.js.map +0 -1
  46. package/es/layout/dagre/src/acyclic.d.ts +0 -6
  47. package/es/layout/dagre/src/acyclic.js +0 -52
  48. package/es/layout/dagre/src/acyclic.js.map +0 -1
  49. package/es/layout/dagre/src/add-border-segments.d.ts +0 -3
  50. package/es/layout/dagre/src/add-border-segments.js +0 -32
  51. package/es/layout/dagre/src/add-border-segments.js.map +0 -1
  52. package/es/layout/dagre/src/coordinate-system.d.ts +0 -6
  53. package/es/layout/dagre/src/coordinate-system.js +0 -69
  54. package/es/layout/dagre/src/coordinate-system.js.map +0 -1
  55. package/es/layout/dagre/src/data/list.d.ts +0 -12
  56. package/es/layout/dagre/src/data/list.js +0 -48
  57. package/es/layout/dagre/src/data/list.js.map +0 -1
  58. package/es/layout/dagre/src/debug.d.ts +0 -3
  59. package/es/layout/dagre/src/debug.js +0 -24
  60. package/es/layout/dagre/src/debug.js.map +0 -1
  61. package/es/layout/dagre/src/greedy-fas.d.ts +0 -3
  62. package/es/layout/dagre/src/greedy-fas.js +0 -114
  63. package/es/layout/dagre/src/greedy-fas.js.map +0 -1
  64. package/es/layout/dagre/src/layout.d.ts +0 -3
  65. package/es/layout/dagre/src/layout.js +0 -518
  66. package/es/layout/dagre/src/layout.js.map +0 -1
  67. package/es/layout/dagre/src/nesting-graph.d.ts +0 -6
  68. package/es/layout/dagre/src/nesting-graph.js +0 -117
  69. package/es/layout/dagre/src/nesting-graph.js.map +0 -1
  70. package/es/layout/dagre/src/normalize.d.ts +0 -6
  71. package/es/layout/dagre/src/normalize.js +0 -89
  72. package/es/layout/dagre/src/normalize.js.map +0 -1
  73. package/es/layout/dagre/src/order/add-subgraph-constraints.d.ts +0 -3
  74. package/es/layout/dagre/src/order/add-subgraph-constraints.js +0 -27
  75. package/es/layout/dagre/src/order/add-subgraph-constraints.js.map +0 -1
  76. package/es/layout/dagre/src/order/barycenter.d.ts +0 -11
  77. package/es/layout/dagre/src/order/barycenter.js +0 -24
  78. package/es/layout/dagre/src/order/barycenter.js.map +0 -1
  79. package/es/layout/dagre/src/order/build-layer-graph.d.ts +0 -3
  80. package/es/layout/dagre/src/order/build-layer-graph.js +0 -71
  81. package/es/layout/dagre/src/order/build-layer-graph.js.map +0 -1
  82. package/es/layout/dagre/src/order/cross-count.d.ts +0 -3
  83. package/es/layout/dagre/src/order/cross-count.js +0 -65
  84. package/es/layout/dagre/src/order/cross-count.js.map +0 -1
  85. package/es/layout/dagre/src/order/index.d.ts +0 -3
  86. package/es/layout/dagre/src/order/index.js +0 -91
  87. package/es/layout/dagre/src/order/index.js.map +0 -1
  88. package/es/layout/dagre/src/order/init-data-order.d.ts +0 -6
  89. package/es/layout/dagre/src/order/init-data-order.js +0 -25
  90. package/es/layout/dagre/src/order/init-data-order.js.map +0 -1
  91. package/es/layout/dagre/src/order/init-order.d.ts +0 -3
  92. package/es/layout/dagre/src/order/init-order.js +0 -52
  93. package/es/layout/dagre/src/order/init-order.js.map +0 -1
  94. package/es/layout/dagre/src/order/resolve-conflicts.d.ts +0 -19
  95. package/es/layout/dagre/src/order/resolve-conflicts.js +0 -93
  96. package/es/layout/dagre/src/order/resolve-conflicts.js.map +0 -1
  97. package/es/layout/dagre/src/order/sort-subgraph.d.ts +0 -7
  98. package/es/layout/dagre/src/order/sort-subgraph.js +0 -85
  99. package/es/layout/dagre/src/order/sort-subgraph.js.map +0 -1
  100. package/es/layout/dagre/src/order/sort.d.ts +0 -7
  101. package/es/layout/dagre/src/order/sort.js +0 -68
  102. package/es/layout/dagre/src/order/sort.js.map +0 -1
  103. package/es/layout/dagre/src/parent-dummy-chains.d.ts +0 -3
  104. package/es/layout/dagre/src/parent-dummy-chains.js +0 -81
  105. package/es/layout/dagre/src/parent-dummy-chains.js.map +0 -1
  106. package/es/layout/dagre/src/position/bk.d.ts +0 -23
  107. package/es/layout/dagre/src/position/bk.js +0 -370
  108. package/es/layout/dagre/src/position/bk.js.map +0 -1
  109. package/es/layout/dagre/src/position/index.d.ts +0 -3
  110. package/es/layout/dagre/src/position/index.js +0 -51
  111. package/es/layout/dagre/src/position/index.js.map +0 -1
  112. package/es/layout/dagre/src/rank/feasible-tree.d.ts +0 -9
  113. package/es/layout/dagre/src/rank/feasible-tree.js +0 -148
  114. package/es/layout/dagre/src/rank/feasible-tree.js.map +0 -1
  115. package/es/layout/dagre/src/rank/index.d.ts +0 -3
  116. package/es/layout/dagre/src/rank/index.js +0 -53
  117. package/es/layout/dagre/src/rank/index.js.map +0 -1
  118. package/es/layout/dagre/src/rank/network-simplex.d.ts +0 -9
  119. package/es/layout/dagre/src/rank/network-simplex.js +0 -195
  120. package/es/layout/dagre/src/rank/network-simplex.js.map +0 -1
  121. package/es/layout/dagre/src/rank/util.d.ts +0 -11
  122. package/es/layout/dagre/src/rank/util.js +0 -141
  123. package/es/layout/dagre/src/rank/util.js.map +0 -1
  124. package/es/layout/dagre/src/util.d.ts +0 -31
  125. package/es/layout/dagre/src/util.js +0 -261
  126. package/es/layout/dagre/src/util.js.map +0 -1
  127. package/es/layout/dagre.d.ts +0 -71
  128. package/es/layout/dagre.js +0 -433
  129. package/es/layout/dagre.js.map +0 -1
  130. package/es/layout/dagreCompound.d.ts +0 -121
  131. package/es/layout/dagreCompound.js +0 -391
  132. package/es/layout/dagreCompound.js.map +0 -1
  133. package/es/layout/er/core.d.ts +0 -1
  134. package/es/layout/er/core.js +0 -107
  135. package/es/layout/er/core.js.map +0 -1
  136. package/es/layout/er/forceGrid.d.ts +0 -8
  137. package/es/layout/er/forceGrid.js +0 -88
  138. package/es/layout/er/forceGrid.js.map +0 -1
  139. package/es/layout/er/grid.d.ts +0 -26
  140. package/es/layout/er/grid.js +0 -162
  141. package/es/layout/er/grid.js.map +0 -1
  142. package/es/layout/er/index.d.ts +0 -29
  143. package/es/layout/er/index.js +0 -54
  144. package/es/layout/er/index.js.map +0 -1
  145. package/es/layout/er/mysqlWorkbench.d.ts +0 -6
  146. package/es/layout/er/mysqlWorkbench.js +0 -324
  147. package/es/layout/er/mysqlWorkbench.js.map +0 -1
  148. package/es/layout/er/type.d.ts +0 -35
  149. package/es/layout/er/type.js +0 -2
  150. package/es/layout/er/type.js.map +0 -1
  151. package/es/layout/force/force-in-a-box.d.ts +0 -28
  152. package/es/layout/force/force-in-a-box.js +0 -330
  153. package/es/layout/force/force-in-a-box.js.map +0 -1
  154. package/es/layout/force/force.d.ts +0 -100
  155. package/es/layout/force/force.js +0 -340
  156. package/es/layout/force/force.js.map +0 -1
  157. package/es/layout/force/index.d.ts +0 -1
  158. package/es/layout/force/index.js +0 -2
  159. package/es/layout/force/index.js.map +0 -1
  160. package/es/layout/force2/ForceNBody.d.ts +0 -7
  161. package/es/layout/force2/ForceNBody.js +0 -94
  162. package/es/layout/force2/ForceNBody.js.map +0 -1
  163. package/es/layout/force2/index.d.ts +0 -119
  164. package/es/layout/force2/index.js +0 -608
  165. package/es/layout/force2/index.js.map +0 -1
  166. package/es/layout/forceAtlas2/body.d.ts +0 -33
  167. package/es/layout/forceAtlas2/body.js +0 -89
  168. package/es/layout/forceAtlas2/body.js.map +0 -1
  169. package/es/layout/forceAtlas2/index.d.ts +0 -115
  170. package/es/layout/forceAtlas2/index.js +0 -484
  171. package/es/layout/forceAtlas2/index.js.map +0 -1
  172. package/es/layout/forceAtlas2/quad.d.ts +0 -27
  173. package/es/layout/forceAtlas2/quad.js +0 -96
  174. package/es/layout/forceAtlas2/quad.js.map +0 -1
  175. package/es/layout/forceAtlas2/quadTree.d.ts +0 -20
  176. package/es/layout/forceAtlas2/quadTree.js +0 -103
  177. package/es/layout/forceAtlas2/quadTree.js.map +0 -1
  178. package/es/layout/fruchterman.d.ts +0 -73
  179. package/es/layout/fruchterman.js +0 -296
  180. package/es/layout/fruchterman.js.map +0 -1
  181. package/es/layout/gForce.d.ts +0 -96
  182. package/es/layout/gForce.js +0 -399
  183. package/es/layout/gForce.js.map +0 -1
  184. package/es/layout/gpu/fruchterman.d.ts +0 -57
  185. package/es/layout/gpu/fruchterman.js +0 -267
  186. package/es/layout/gpu/fruchterman.js.map +0 -1
  187. package/es/layout/gpu/fruchtermanShader.d.ts +0 -4
  188. package/es/layout/gpu/fruchtermanShader.js +0 -201
  189. package/es/layout/gpu/fruchtermanShader.js.map +0 -1
  190. package/es/layout/gpu/gForce.d.ts +0 -68
  191. package/es/layout/gpu/gForce.js +0 -330
  192. package/es/layout/gpu/gForce.js.map +0 -1
  193. package/es/layout/gpu/gForceShader.d.ts +0 -4
  194. package/es/layout/gpu/gForceShader.js +0 -218
  195. package/es/layout/gpu/gForceShader.js.map +0 -1
  196. package/es/layout/grid.d.ts +0 -83
  197. package/es/layout/grid.js +0 -317
  198. package/es/layout/grid.js.map +0 -1
  199. package/es/layout/index.d.ts +0 -22
  200. package/es/layout/index.js +0 -25
  201. package/es/layout/index.js.map +0 -1
  202. package/es/layout/layout.d.ts +0 -26
  203. package/es/layout/layout.js +0 -97
  204. package/es/layout/layout.js.map +0 -1
  205. package/es/layout/mds.d.ts +0 -39
  206. package/es/layout/mds.js +0 -122
  207. package/es/layout/mds.js.map +0 -1
  208. package/es/layout/radial/index.d.ts +0 -1
  209. package/es/layout/radial/index.js +0 -2
  210. package/es/layout/radial/index.js.map +0 -1
  211. package/es/layout/radial/mds.d.ts +0 -15
  212. package/es/layout/radial/mds.js +0 -38
  213. package/es/layout/radial/mds.js.map +0 -1
  214. package/es/layout/radial/radial.d.ts +0 -74
  215. package/es/layout/radial/radial.js +0 -420
  216. package/es/layout/radial/radial.js.map +0 -1
  217. package/es/layout/radial/radialNonoverlapForce.d.ts +0 -50
  218. package/es/layout/radial/radialNonoverlapForce.js +0 -123
  219. package/es/layout/radial/radialNonoverlapForce.js.map +0 -1
  220. package/es/layout/random.d.ts +0 -35
  221. package/es/layout/random.js +0 -62
  222. package/es/layout/random.js.map +0 -1
  223. package/es/layout/types.d.ts +0 -432
  224. package/es/layout/types.js +0 -2
  225. package/es/layout/types.js.map +0 -1
  226. package/es/registy/index.d.ts +0 -3
  227. package/es/registy/index.js +0 -41
  228. package/es/registy/index.js.map +0 -1
  229. package/es/util/array.d.ts +0 -1
  230. package/es/util/array.js +0 -2
  231. package/es/util/array.js.map +0 -1
  232. package/es/util/function.d.ts +0 -6
  233. package/es/util/function.js +0 -56
  234. package/es/util/function.js.map +0 -1
  235. package/es/util/gpu.d.ts +0 -52
  236. package/es/util/gpu.js +0 -239
  237. package/es/util/gpu.js.map +0 -1
  238. package/es/util/index.d.ts +0 -6
  239. package/es/util/index.js +0 -7
  240. package/es/util/index.js.map +0 -1
  241. package/es/util/math.d.ts +0 -48
  242. package/es/util/math.js +0 -276
  243. package/es/util/math.js.map +0 -1
  244. package/es/util/number.d.ts +0 -3
  245. package/es/util/number.js +0 -7
  246. package/es/util/number.js.map +0 -1
  247. package/es/util/object.d.ts +0 -2
  248. package/es/util/object.js +0 -25
  249. package/es/util/object.js.map +0 -1
  250. package/es/util/string.d.ts +0 -2
  251. package/es/util/string.js +0 -16
  252. package/es/util/string.js.map +0 -1
  253. package/lib/index.js +0 -24
  254. package/lib/index.js.map +0 -1
  255. package/lib/layout/base.d.ts +0 -22
  256. package/lib/layout/base.js +0 -56
  257. package/lib/layout/base.js.map +0 -1
  258. package/lib/layout/circular.d.ts +0 -80
  259. package/lib/layout/circular.js +0 -337
  260. package/lib/layout/circular.js.map +0 -1
  261. package/lib/layout/comboCombined.d.ts +0 -54
  262. package/lib/layout/comboCombined.js +0 -390
  263. package/lib/layout/comboCombined.js.map +0 -1
  264. package/lib/layout/comboForce.d.ts +0 -134
  265. package/lib/layout/comboForce.js +0 -826
  266. package/lib/layout/comboForce.js.map +0 -1
  267. package/lib/layout/concentric.d.ts +0 -67
  268. package/lib/layout/concentric.js +0 -243
  269. package/lib/layout/concentric.js.map +0 -1
  270. package/lib/layout/constants.d.ts +0 -12
  271. package/lib/layout/constants.js +0 -25
  272. package/lib/layout/constants.js.map +0 -1
  273. package/lib/layout/dagre/graph.d.ts +0 -91
  274. package/lib/layout/dagre/graph.js +0 -28
  275. package/lib/layout/dagre/graph.js.map +0 -1
  276. package/lib/layout/dagre/index.d.ts +0 -8
  277. package/lib/layout/dagre/index.js +0 -36
  278. package/lib/layout/dagre/index.js.map +0 -1
  279. package/lib/layout/dagre/src/acyclic.d.ts +0 -6
  280. package/lib/layout/dagre/src/acyclic.js +0 -57
  281. package/lib/layout/dagre/src/acyclic.js.map +0 -1
  282. package/lib/layout/dagre/src/add-border-segments.d.ts +0 -3
  283. package/lib/layout/dagre/src/add-border-segments.js +0 -34
  284. package/lib/layout/dagre/src/add-border-segments.js.map +0 -1
  285. package/lib/layout/dagre/src/coordinate-system.d.ts +0 -6
  286. package/lib/layout/dagre/src/coordinate-system.js +0 -71
  287. package/lib/layout/dagre/src/coordinate-system.js.map +0 -1
  288. package/lib/layout/dagre/src/data/list.d.ts +0 -12
  289. package/lib/layout/dagre/src/data/list.js +0 -52
  290. package/lib/layout/dagre/src/data/list.js.map +0 -1
  291. package/lib/layout/dagre/src/debug.d.ts +0 -3
  292. package/lib/layout/dagre/src/debug.js +0 -26
  293. package/lib/layout/dagre/src/debug.js.map +0 -1
  294. package/lib/layout/dagre/src/greedy-fas.d.ts +0 -3
  295. package/lib/layout/dagre/src/greedy-fas.js +0 -144
  296. package/lib/layout/dagre/src/greedy-fas.js.map +0 -1
  297. package/lib/layout/dagre/src/layout.d.ts +0 -3
  298. package/lib/layout/dagre/src/layout.js +0 -535
  299. package/lib/layout/dagre/src/layout.js.map +0 -1
  300. package/lib/layout/dagre/src/nesting-graph.d.ts +0 -6
  301. package/lib/layout/dagre/src/nesting-graph.js +0 -119
  302. package/lib/layout/dagre/src/nesting-graph.js.map +0 -1
  303. package/lib/layout/dagre/src/normalize.d.ts +0 -6
  304. package/lib/layout/dagre/src/normalize.js +0 -91
  305. package/lib/layout/dagre/src/normalize.js.map +0 -1
  306. package/lib/layout/dagre/src/order/add-subgraph-constraints.d.ts +0 -3
  307. package/lib/layout/dagre/src/order/add-subgraph-constraints.js +0 -29
  308. package/lib/layout/dagre/src/order/add-subgraph-constraints.js.map +0 -1
  309. package/lib/layout/dagre/src/order/barycenter.d.ts +0 -11
  310. package/lib/layout/dagre/src/order/barycenter.js +0 -26
  311. package/lib/layout/dagre/src/order/barycenter.js.map +0 -1
  312. package/lib/layout/dagre/src/order/build-layer-graph.d.ts +0 -3
  313. package/lib/layout/dagre/src/order/build-layer-graph.js +0 -73
  314. package/lib/layout/dagre/src/order/build-layer-graph.js.map +0 -1
  315. package/lib/layout/dagre/src/order/cross-count.d.ts +0 -3
  316. package/lib/layout/dagre/src/order/cross-count.js +0 -67
  317. package/lib/layout/dagre/src/order/cross-count.js.map +0 -1
  318. package/lib/layout/dagre/src/order/index.d.ts +0 -3
  319. package/lib/layout/dagre/src/order/index.js +0 -96
  320. package/lib/layout/dagre/src/order/index.js.map +0 -1
  321. package/lib/layout/dagre/src/order/init-data-order.d.ts +0 -6
  322. package/lib/layout/dagre/src/order/init-data-order.js +0 -27
  323. package/lib/layout/dagre/src/order/init-data-order.js.map +0 -1
  324. package/lib/layout/dagre/src/order/init-order.d.ts +0 -3
  325. package/lib/layout/dagre/src/order/init-order.js +0 -54
  326. package/lib/layout/dagre/src/order/init-order.js.map +0 -1
  327. package/lib/layout/dagre/src/order/resolve-conflicts.d.ts +0 -19
  328. package/lib/layout/dagre/src/order/resolve-conflicts.js +0 -98
  329. package/lib/layout/dagre/src/order/resolve-conflicts.js.map +0 -1
  330. package/lib/layout/dagre/src/order/sort-subgraph.d.ts +0 -7
  331. package/lib/layout/dagre/src/order/sort-subgraph.js +0 -90
  332. package/lib/layout/dagre/src/order/sort-subgraph.js.map +0 -1
  333. package/lib/layout/dagre/src/order/sort.d.ts +0 -7
  334. package/lib/layout/dagre/src/order/sort.js +0 -70
  335. package/lib/layout/dagre/src/order/sort.js.map +0 -1
  336. package/lib/layout/dagre/src/parent-dummy-chains.d.ts +0 -3
  337. package/lib/layout/dagre/src/parent-dummy-chains.js +0 -83
  338. package/lib/layout/dagre/src/parent-dummy-chains.js.map +0 -1
  339. package/lib/layout/dagre/src/position/bk.d.ts +0 -23
  340. package/lib/layout/dagre/src/position/bk.js +0 -409
  341. package/lib/layout/dagre/src/position/bk.js.map +0 -1
  342. package/lib/layout/dagre/src/position/index.d.ts +0 -3
  343. package/lib/layout/dagre/src/position/index.js +0 -64
  344. package/lib/layout/dagre/src/position/index.js.map +0 -1
  345. package/lib/layout/dagre/src/rank/feasible-tree.d.ts +0 -9
  346. package/lib/layout/dagre/src/rank/feasible-tree.js +0 -152
  347. package/lib/layout/dagre/src/rank/feasible-tree.js.map +0 -1
  348. package/lib/layout/dagre/src/rank/index.d.ts +0 -3
  349. package/lib/layout/dagre/src/rank/index.js +0 -58
  350. package/lib/layout/dagre/src/rank/index.js.map +0 -1
  351. package/lib/layout/dagre/src/rank/network-simplex.d.ts +0 -9
  352. package/lib/layout/dagre/src/rank/network-simplex.js +0 -205
  353. package/lib/layout/dagre/src/rank/network-simplex.js.map +0 -1
  354. package/lib/layout/dagre/src/rank/util.d.ts +0 -11
  355. package/lib/layout/dagre/src/rank/util.js +0 -146
  356. package/lib/layout/dagre/src/rank/util.js.map +0 -1
  357. package/lib/layout/dagre/src/util.d.ts +0 -31
  358. package/lib/layout/dagre/src/util.js +0 -280
  359. package/lib/layout/dagre/src/util.js.map +0 -1
  360. package/lib/layout/dagre.d.ts +0 -71
  361. package/lib/layout/dagre.js +0 -462
  362. package/lib/layout/dagre.js.map +0 -1
  363. package/lib/layout/dagreCompound.d.ts +0 -121
  364. package/lib/layout/dagreCompound.js +0 -429
  365. package/lib/layout/dagreCompound.js.map +0 -1
  366. package/lib/layout/er/core.d.ts +0 -1
  367. package/lib/layout/er/core.js +0 -147
  368. package/lib/layout/er/core.js.map +0 -1
  369. package/lib/layout/er/forceGrid.d.ts +0 -8
  370. package/lib/layout/er/forceGrid.js +0 -97
  371. package/lib/layout/er/forceGrid.js.map +0 -1
  372. package/lib/layout/er/grid.d.ts +0 -26
  373. package/lib/layout/er/grid.js +0 -177
  374. package/lib/layout/er/grid.js.map +0 -1
  375. package/lib/layout/er/index.d.ts +0 -29
  376. package/lib/layout/er/index.js +0 -80
  377. package/lib/layout/er/index.js.map +0 -1
  378. package/lib/layout/er/mysqlWorkbench.d.ts +0 -6
  379. package/lib/layout/er/mysqlWorkbench.js +0 -326
  380. package/lib/layout/er/mysqlWorkbench.js.map +0 -1
  381. package/lib/layout/er/type.d.ts +0 -35
  382. package/lib/layout/er/type.js +0 -3
  383. package/lib/layout/er/type.js.map +0 -1
  384. package/lib/layout/force/force-in-a-box.d.ts +0 -28
  385. package/lib/layout/force/force-in-a-box.js +0 -357
  386. package/lib/layout/force/force-in-a-box.js.map +0 -1
  387. package/lib/layout/force/force.d.ts +0 -100
  388. package/lib/layout/force/force.js +0 -388
  389. package/lib/layout/force/force.js.map +0 -1
  390. package/lib/layout/force/index.d.ts +0 -1
  391. package/lib/layout/force/index.js +0 -18
  392. package/lib/layout/force/index.js.map +0 -1
  393. package/lib/layout/force2/ForceNBody.d.ts +0 -7
  394. package/lib/layout/force2/ForceNBody.js +0 -98
  395. package/lib/layout/force2/ForceNBody.js.map +0 -1
  396. package/lib/layout/force2/index.d.ts +0 -119
  397. package/lib/layout/force2/index.js +0 -643
  398. package/lib/layout/force2/index.js.map +0 -1
  399. package/lib/layout/forceAtlas2/body.d.ts +0 -33
  400. package/lib/layout/forceAtlas2/body.js +0 -93
  401. package/lib/layout/forceAtlas2/body.js.map +0 -1
  402. package/lib/layout/forceAtlas2/index.d.ts +0 -115
  403. package/lib/layout/forceAtlas2/index.js +0 -509
  404. package/lib/layout/forceAtlas2/index.js.map +0 -1
  405. package/lib/layout/forceAtlas2/quad.d.ts +0 -27
  406. package/lib/layout/forceAtlas2/quad.js +0 -100
  407. package/lib/layout/forceAtlas2/quad.js.map +0 -1
  408. package/lib/layout/forceAtlas2/quadTree.d.ts +0 -20
  409. package/lib/layout/forceAtlas2/quadTree.js +0 -107
  410. package/lib/layout/forceAtlas2/quadTree.js.map +0 -1
  411. package/lib/layout/fruchterman.d.ts +0 -73
  412. package/lib/layout/fruchterman.js +0 -320
  413. package/lib/layout/fruchterman.js.map +0 -1
  414. package/lib/layout/gForce.d.ts +0 -96
  415. package/lib/layout/gForce.js +0 -421
  416. package/lib/layout/gForce.js.map +0 -1
  417. package/lib/layout/gpu/fruchterman.d.ts +0 -57
  418. package/lib/layout/gpu/fruchterman.js +0 -361
  419. package/lib/layout/gpu/fruchterman.js.map +0 -1
  420. package/lib/layout/gpu/fruchtermanShader.d.ts +0 -4
  421. package/lib/layout/gpu/fruchtermanShader.js +0 -8
  422. package/lib/layout/gpu/fruchtermanShader.js.map +0 -1
  423. package/lib/layout/gpu/gForce.d.ts +0 -68
  424. package/lib/layout/gpu/gForce.js +0 -415
  425. package/lib/layout/gpu/gForce.js.map +0 -1
  426. package/lib/layout/gpu/gForceShader.d.ts +0 -4
  427. package/lib/layout/gpu/gForceShader.js +0 -8
  428. package/lib/layout/gpu/gForceShader.js.map +0 -1
  429. package/lib/layout/grid.d.ts +0 -83
  430. package/lib/layout/grid.js +0 -339
  431. package/lib/layout/grid.js.map +0 -1
  432. package/lib/layout/index.d.ts +0 -22
  433. package/lib/layout/index.js +0 -59
  434. package/lib/layout/index.js.map +0 -1
  435. package/lib/layout/layout.d.ts +0 -26
  436. package/lib/layout/layout.js +0 -102
  437. package/lib/layout/layout.js.map +0 -1
  438. package/lib/layout/mds.d.ts +0 -39
  439. package/lib/layout/mds.js +0 -144
  440. package/lib/layout/mds.js.map +0 -1
  441. package/lib/layout/radial/index.d.ts +0 -1
  442. package/lib/layout/radial/index.js +0 -18
  443. package/lib/layout/radial/index.js.map +0 -1
  444. package/lib/layout/radial/mds.d.ts +0 -15
  445. package/lib/layout/radial/mds.js +0 -42
  446. package/lib/layout/radial/mds.js.map +0 -1
  447. package/lib/layout/radial/radial.d.ts +0 -74
  448. package/lib/layout/radial/radial.js +0 -445
  449. package/lib/layout/radial/radial.js.map +0 -1
  450. package/lib/layout/radial/radialNonoverlapForce.d.ts +0 -50
  451. package/lib/layout/radial/radialNonoverlapForce.js +0 -127
  452. package/lib/layout/radial/radialNonoverlapForce.js.map +0 -1
  453. package/lib/layout/random.d.ts +0 -35
  454. package/lib/layout/random.js +0 -84
  455. package/lib/layout/random.js.map +0 -1
  456. package/lib/layout/types.d.ts +0 -432
  457. package/lib/layout/types.js +0 -3
  458. package/lib/layout/types.js.map +0 -1
  459. package/lib/registy/index.d.ts +0 -3
  460. package/lib/registy/index.js +0 -65
  461. package/lib/registy/index.js.map +0 -1
  462. package/lib/util/array.js +0 -5
  463. package/lib/util/array.js.map +0 -1
  464. package/lib/util/function.js +0 -65
  465. package/lib/util/function.js.map +0 -1
  466. package/lib/util/gpu.js +0 -250
  467. package/lib/util/gpu.js.map +0 -1
  468. package/lib/util/index.js +0 -23
  469. package/lib/util/index.js.map +0 -1
  470. package/lib/util/math.js +0 -289
  471. package/lib/util/math.js.map +0 -1
  472. package/lib/util/number.js +0 -13
  473. package/lib/util/number.js.map +0 -1
  474. package/lib/util/object.js +0 -43
  475. package/lib/util/object.js.map +0 -1
  476. package/lib/util/string.js +0 -20
  477. package/lib/util/string.js.map +0 -1
  478. package/src/index.ts +0 -7
  479. package/src/layout/base.ts +0 -57
  480. package/src/layout/circular.ts +0 -370
  481. package/src/layout/comboCombined.ts +0 -397
  482. package/src/layout/comboForce.ts +0 -873
  483. package/src/layout/concentric.ts +0 -289
  484. package/src/layout/constants.ts +0 -22
  485. package/src/layout/dagre/graph.ts +0 -104
  486. package/src/layout/dagre/index.ts +0 -31
  487. package/src/layout/dagre/src/acyclic.ts +0 -58
  488. package/src/layout/dagre/src/add-border-segments.ts +0 -47
  489. package/src/layout/dagre/src/coordinate-system.ts +0 -77
  490. package/src/layout/dagre/src/data/list.ts +0 -60
  491. package/src/layout/dagre/src/debug.ts +0 -30
  492. package/src/layout/dagre/src/greedy-fas.ts +0 -144
  493. package/src/layout/dagre/src/layout.ts +0 -579
  494. package/src/layout/dagre/src/nesting-graph.ts +0 -143
  495. package/src/layout/dagre/src/normalize.ts +0 -96
  496. package/src/layout/dagre/src/order/add-subgraph-constraints.ts +0 -29
  497. package/src/layout/dagre/src/order/barycenter.ts +0 -26
  498. package/src/layout/dagre/src/order/build-layer-graph.ts +0 -82
  499. package/src/layout/dagre/src/order/cross-count.ts +0 -77
  500. package/src/layout/dagre/src/order/index.ts +0 -105
  501. package/src/layout/dagre/src/order/init-data-order.ts +0 -27
  502. package/src/layout/dagre/src/order/init-order.ts +0 -56
  503. package/src/layout/dagre/src/order/resolve-conflicts.ts +0 -152
  504. package/src/layout/dagre/src/order/sort-subgraph.ts +0 -105
  505. package/src/layout/dagre/src/order/sort.ts +0 -76
  506. package/src/layout/dagre/src/parent-dummy-chains.ts +0 -102
  507. package/src/layout/dagre/src/position/bk.ts +0 -493
  508. package/src/layout/dagre/src/position/index.ts +0 -82
  509. package/src/layout/dagre/src/rank/feasible-tree.ts +0 -165
  510. package/src/layout/dagre/src/rank/index.ts +0 -54
  511. package/src/layout/dagre/src/rank/network-simplex.ts +0 -225
  512. package/src/layout/dagre/src/rank/util.ts +0 -166
  513. package/src/layout/dagre/src/util.ts +0 -309
  514. package/src/layout/dagre.ts +0 -460
  515. package/src/layout/dagreCompound.ts +0 -518
  516. package/src/layout/er/core.ts +0 -117
  517. package/src/layout/er/forceGrid.ts +0 -95
  518. package/src/layout/er/grid.ts +0 -185
  519. package/src/layout/er/index.ts +0 -68
  520. package/src/layout/er/mysqlWorkbench.ts +0 -345
  521. package/src/layout/er/type.ts +0 -39
  522. package/src/layout/force/force-in-a-box.ts +0 -400
  523. package/src/layout/force/force.ts +0 -391
  524. package/src/layout/force/index.ts +0 -1
  525. package/src/layout/force2/ForceNBody.ts +0 -128
  526. package/src/layout/force2/index.ts +0 -741
  527. package/src/layout/forceAtlas2/body.ts +0 -115
  528. package/src/layout/forceAtlas2/index.ts +0 -556
  529. package/src/layout/forceAtlas2/quad.ts +0 -115
  530. package/src/layout/forceAtlas2/quadTree.ts +0 -107
  531. package/src/layout/fruchterman.ts +0 -361
  532. package/src/layout/gForce.ts +0 -488
  533. package/src/layout/gpu/fruchterman.ts +0 -314
  534. package/src/layout/gpu/fruchtermanShader.ts +0 -203
  535. package/src/layout/gpu/gForce.ts +0 -407
  536. package/src/layout/gpu/gForceShader.ts +0 -220
  537. package/src/layout/grid.ts +0 -404
  538. package/src/layout/index.ts +0 -47
  539. package/src/layout/layout.ts +0 -110
  540. package/src/layout/mds.ts +0 -140
  541. package/src/layout/radial/index.ts +0 -1
  542. package/src/layout/radial/mds.ts +0 -51
  543. package/src/layout/radial/radial.ts +0 -500
  544. package/src/layout/radial/radialNonoverlapForce.ts +0 -189
  545. package/src/layout/random.ts +0 -75
  546. package/src/layout/types.ts +0 -496
  547. package/src/registy/index.ts +0 -43
  548. package/src/util/array.ts +0 -1
  549. package/src/util/function.ts +0 -64
  550. package/src/util/gpu.ts +0 -256
  551. package/src/util/index.ts +0 -6
  552. package/src/util/math.ts +0 -294
  553. package/src/util/number.ts +0 -8
  554. package/src/util/object.ts +0 -28
  555. package/src/util/string.ts +0 -18
@@ -1,391 +0,0 @@
1
- /**
2
- * @fileOverview random layout
3
- * @author shiwu.wyy@antfin.com
4
- */
5
-
6
- import { Edge, Model, PointTuple, ForceLayoutOptions } from "../types";
7
- import * as d3Force from "d3-force";
8
- import forceInABox from "./force-in-a-box";
9
- import { isArray, isFunction, isNumber, isObject } from "../../util";
10
- import { Base } from "../base";
11
- import { LAYOUT_MESSAGE } from "../constants";
12
-
13
- /**
14
- * 经典力导布局 force-directed
15
- */
16
- export class ForceLayout extends Base {
17
- /** 向心力作用点 */
18
- public center: PointTuple = [0, 0];
19
-
20
- /** 节点作用力 */
21
- public nodeStrength: number | null = null;
22
-
23
- /** 边的作用力, 默认为根据节点的入度出度自适应 */
24
- public edgeStrength: number | null = null;
25
-
26
- /** 是否防止节点相互覆盖 */
27
- public preventOverlap: boolean = false;
28
-
29
- /** 节点大小 / 直径,用于防止重叠时的碰撞检测 */
30
- public nodeSize: number | number[] | ((d?: unknown) => number) | undefined;
31
-
32
- /** 节点间距,防止节点重叠时节点之间的最小距离(两节点边缘最短距离) */
33
- public nodeSpacing: ((d?: unknown) => number) | undefined;
34
-
35
- /** 是否支持按类聚合 */
36
- public clustering: boolean;
37
-
38
- /** 聚类节点作用力 */
39
- public clusterNodeStrength: number | null = null;
40
-
41
- /** 聚类边作用力 */
42
- public clusterEdgeStrength: number | null = null;
43
-
44
- /** 聚类边长度 */
45
- public clusterEdgeDistance: number | null = null;
46
-
47
- /** 聚类节点大小 / 直径,直径越大,越分散 */
48
- public clusterNodeSize: number | null = null;
49
-
50
- /** 用于 foci 的力 */
51
- public clusterFociStrength: number | null = null;
52
-
53
- /** 默认边长度 */
54
- public linkDistance: number = 50;
55
-
56
- /** 自定义 force 方法 */
57
- public forceSimulation: any;
58
-
59
- /** 迭代阈值的衰减率 [0, 1],0.028 对应最大迭代数为 300 */
60
- public alphaDecay: number = 0.028;
61
-
62
- /** 停止迭代的阈值 */
63
- public alphaMin: number = 0.001;
64
-
65
- /** 当前阈值 */
66
- public alpha: number = 0.3;
67
-
68
- /** 防止重叠的力强度 */
69
- public collideStrength: number = 1;
70
-
71
- /** 是否启用web worker。前提是在web worker里执行布局,否则无效 */
72
- public workerEnabled: boolean = false;
73
-
74
- public tick: () => void = () => {};
75
-
76
- /** 布局完成回调 */
77
- public onLayoutEnd: () => void = () => {};
78
-
79
- /** 是否正在布局 */
80
- private ticking: boolean | undefined = undefined;
81
-
82
- private edgeForce: any;
83
-
84
- private clusterForce: any;
85
-
86
- constructor(options?: ForceLayoutOptions) {
87
- super();
88
- if (options) {
89
- this.updateCfg(options);
90
- }
91
- }
92
-
93
- public getDefaultCfg() {
94
- return {
95
- center: [0, 0],
96
- nodeStrength: null,
97
- edgeStrength: null,
98
- preventOverlap: false,
99
- nodeSize: undefined,
100
- nodeSpacing: undefined,
101
- linkDistance: 50,
102
- forceSimulation: null,
103
- alphaDecay: 0.028,
104
- alphaMin: 0.001,
105
- alpha: 0.3,
106
- collideStrength: 1,
107
- clustering: false,
108
- clusterNodeStrength: -1,
109
- clusterEdgeStrength: 0.1,
110
- clusterEdgeDistance: 100,
111
- clusterFociStrength: 0.8,
112
- clusterNodeSize: 10,
113
- tick() {},
114
- onLayoutEnd() {}, // 布局完成回调
115
- // 是否启用web worker。前提是在web worker里执行布局,否则无效
116
- workerEnabled: false
117
- };
118
- }
119
-
120
- /**
121
- * 初始化
122
- * @param {object} data 数据
123
- */
124
- public init(data: Model) {
125
- const self = this;
126
- self.nodes = data.nodes || [];
127
- const edges = data.edges || [];
128
- self.edges = edges.map((edge) => {
129
- const res: any = {};
130
- const expectKeys = ["targetNode", "sourceNode", "startPoint", "endPoint"];
131
- Object.keys(edge).forEach((key: keyof Edge) => {
132
- if (!(expectKeys.indexOf(key) > -1)) {
133
- res[key] = edge[key];
134
- }
135
- });
136
- return res;
137
- });
138
- self.ticking = false;
139
- }
140
-
141
- /**
142
- * 执行布局
143
- */
144
- public execute(reloadData?: boolean) {
145
- const self = this;
146
- const nodes = self.nodes;
147
- const edges = self.edges;
148
- // 如果正在布局,忽略布局请求
149
- if (self.ticking) {
150
- return;
151
- }
152
- let simulation = self.forceSimulation;
153
- const alphaMin = self.alphaMin;
154
- const alphaDecay = self.alphaDecay;
155
- const alpha = self.alpha;
156
- if (!simulation) {
157
- try {
158
- // 定义节点的力
159
- const nodeForce = d3Force.forceManyBody();
160
- if (self.nodeStrength) {
161
- nodeForce.strength(self.nodeStrength);
162
- }
163
- simulation = d3Force.forceSimulation().nodes(nodes as any);
164
-
165
- if (self.clustering) {
166
- const clusterForce = forceInABox() as any;
167
- clusterForce
168
- .centerX(self.center[0])
169
- .centerY(self.center[1])
170
- .template("force")
171
- .strength(self.clusterFociStrength);
172
- if (edges) {
173
- clusterForce.links(edges);
174
- }
175
- if (nodes) {
176
- clusterForce.nodes(nodes);
177
- }
178
- clusterForce
179
- .forceLinkDistance(self.clusterEdgeDistance)
180
- .forceLinkStrength(self.clusterEdgeStrength)
181
- .forceCharge(self.clusterNodeStrength)
182
- .forceNodeSize(self.clusterNodeSize);
183
-
184
- self.clusterForce = clusterForce;
185
- simulation.force("group", clusterForce);
186
- }
187
- simulation
188
- .force("center", d3Force.forceCenter(self.center[0], self.center[1]))
189
- .force("charge", nodeForce)
190
- .alpha(alpha)
191
- .alphaDecay(alphaDecay)
192
- .alphaMin(alphaMin);
193
-
194
- if (self.preventOverlap) {
195
- self.overlapProcess(simulation);
196
- }
197
- // 如果有边,定义边的力
198
- if (edges) {
199
- // d3 的 forceLayout 会重新生成边的数据模型,为了避免污染源数据
200
- const edgeForce = d3Force
201
- .forceLink()
202
- .id((d: any) => d.id)
203
- .links(edges);
204
- if (self.edgeStrength) {
205
- edgeForce.strength(self.edgeStrength);
206
- }
207
- if (self.linkDistance) {
208
- edgeForce.distance(self.linkDistance);
209
- }
210
- self.edgeForce = edgeForce;
211
- simulation.force("link", edgeForce);
212
- }
213
- if (self.workerEnabled && !isInWorker()) {
214
- // 如果不是运行在web worker里,不用web worker布局
215
- self.workerEnabled = false;
216
- console.warn(
217
- "workerEnabled option is only supported when running in web worker."
218
- );
219
- }
220
- if (!self.workerEnabled) {
221
- simulation
222
- .on("tick", () => {
223
- self.tick();
224
- })
225
- .on("end", () => {
226
- self.ticking = false;
227
- if (self.onLayoutEnd) self.onLayoutEnd();
228
- });
229
- self.ticking = true;
230
- } else {
231
- // worker is enabled
232
- simulation.stop();
233
- const totalTicks = getSimulationTicks(simulation);
234
- for (let currentTick = 1; currentTick <= totalTicks; currentTick++) {
235
- simulation.tick();
236
- // currentTick starts from 1.
237
- postMessage(
238
- {
239
- nodes,
240
- currentTick,
241
- totalTicks,
242
- type: LAYOUT_MESSAGE.TICK
243
- },
244
- undefined as any
245
- );
246
- }
247
- self.ticking = false;
248
- }
249
-
250
- self.forceSimulation = simulation;
251
- self.ticking = true;
252
- } catch (e) {
253
- self.ticking = false;
254
- console.warn(e);
255
- }
256
- } else {
257
- if (reloadData) {
258
- if (self.clustering && self.clusterForce) {
259
- self.clusterForce.nodes(nodes);
260
- self.clusterForce.links(edges);
261
- }
262
- simulation.nodes(nodes);
263
- if (edges && self.edgeForce) self.edgeForce.links(edges);
264
- else if (edges && !self.edgeForce) {
265
- // d3 的 forceLayout 会重新生成边的数据模型,为了避免污染源数据
266
- const edgeForce = d3Force
267
- .forceLink()
268
- .id((d: any) => d.id)
269
- .links(edges);
270
- if (self.edgeStrength) {
271
- edgeForce.strength(self.edgeStrength);
272
- }
273
- if (self.linkDistance) {
274
- edgeForce.distance(self.linkDistance);
275
- }
276
- self.edgeForce = edgeForce;
277
- simulation.force("link", edgeForce);
278
- }
279
- }
280
- if (self.preventOverlap) {
281
- self.overlapProcess(simulation);
282
- }
283
- simulation.alpha(alpha).restart();
284
- this.ticking = true;
285
- }
286
- }
287
-
288
- /**
289
- * 防止重叠
290
- * @param {object} simulation 力模拟模型
291
- */
292
- public overlapProcess(simulation: any) {
293
- const self = this;
294
- const nodeSize = self.nodeSize;
295
- const nodeSpacing = self.nodeSpacing;
296
- let nodeSizeFunc: (d: any) => number;
297
- let nodeSpacingFunc: any;
298
- const collideStrength = self.collideStrength;
299
-
300
- if (isNumber(nodeSpacing)) {
301
- nodeSpacingFunc = () => nodeSpacing;
302
- } else if (isFunction(nodeSpacing)) {
303
- nodeSpacingFunc = nodeSpacing;
304
- } else {
305
- nodeSpacingFunc = () => 0;
306
- }
307
-
308
- if (!nodeSize) {
309
- nodeSizeFunc = (d) => {
310
- if (d.size) {
311
- if (isArray(d.size)) {
312
- const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];
313
- return res / 2 + nodeSpacingFunc(d);
314
- } if (isObject(d.size)) {
315
- const res = d.size.width > d.size.height ? d.size.width : d.size.height;
316
- return res / 2 + nodeSpacingFunc(d);
317
- }
318
- return d.size / 2 + nodeSpacingFunc(d);
319
- }
320
- return 10 + nodeSpacingFunc(d);
321
- };
322
- } else if (isFunction(nodeSize)) {
323
- nodeSizeFunc = (d) => {
324
- const size = nodeSize(d);
325
- return size + nodeSpacingFunc(d);
326
- };
327
- } else if (isArray(nodeSize)) {
328
- const larger = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];
329
- const radius = larger / 2;
330
- nodeSizeFunc = (d) => radius + nodeSpacingFunc(d);
331
- } else if (isNumber(nodeSize)) {
332
- const radius = nodeSize / 2;
333
- nodeSizeFunc = (d) => radius + nodeSpacingFunc(d);
334
- } else {
335
- nodeSizeFunc = () => 10;
336
- }
337
-
338
- // forceCollide's parameter is a radius
339
- simulation.force(
340
- "collisionForce",
341
- d3Force.forceCollide(nodeSizeFunc).strength(collideStrength)
342
- );
343
- }
344
-
345
- /**
346
- * 更新布局配置,但不执行布局
347
- * @param {object} cfg 需要更新的配置项
348
- */
349
- public updateCfg(cfg: ForceLayoutOptions) {
350
- const self = this;
351
- if (self.ticking) {
352
- self.forceSimulation.stop();
353
- self.ticking = false;
354
- }
355
- self.forceSimulation = null;
356
- Object.assign(self, cfg);
357
- }
358
-
359
- public destroy() {
360
- const self = this;
361
- if (self.ticking) {
362
- self.forceSimulation.stop();
363
- self.ticking = false;
364
- }
365
- self.nodes = null;
366
- self.edges = null;
367
- self.destroyed = true;
368
- }
369
- }
370
-
371
- // Return total ticks of d3-force simulation
372
- function getSimulationTicks(simulation: any): number {
373
- const alphaMin = simulation.alphaMin();
374
- const alphaTarget = simulation.alphaTarget();
375
- const alpha = simulation.alpha();
376
- const totalTicksFloat =
377
- Math.log((alphaMin - alphaTarget) / (alpha - alphaTarget)) /
378
- Math.log(1 - simulation.alphaDecay());
379
- const totalTicks = Math.ceil(totalTicksFloat);
380
- return totalTicks;
381
- }
382
- declare const WorkerGlobalScope: any;
383
-
384
- // 判断是否运行在web worker里
385
- function isInWorker(): boolean {
386
- // eslint-disable-next-line no-undef
387
- return (
388
- typeof WorkerGlobalScope !== "undefined" &&
389
- self instanceof WorkerGlobalScope
390
- );
391
- }
@@ -1 +0,0 @@
1
- export * from './force';
@@ -1,128 +0,0 @@
1
- import { quadtree } from 'd3-quadtree';
2
- import { NodeMap } from '..';
3
-
4
- const theta2 = 0.81; // Barnes-Hut approximation threshold
5
- const epsilon = 0.1; // 为了防止出现除0的情况,加一个epsilon
6
-
7
- interface Node {
8
- x: number;
9
- y: number;
10
- }
11
-
12
- interface InternalNode {
13
- x: number;
14
- y: number;
15
- vx: number;
16
- vy: number;
17
- weight: number;
18
- size: number;
19
- }
20
-
21
- export function forceNBody(
22
- nodes: Node[],
23
- nodeMap: NodeMap,
24
- factor: number,
25
- coulombDisScale2: number,
26
- accArray: number[]
27
- ) {
28
- const weightParam = factor / coulombDisScale2;
29
- const data = nodes.map((n, i) => {
30
- // @ts-ignore
31
- const mappedNode = nodeMap[n.id];
32
- // @ts-ignore
33
- const { data: nodeData, x, y, size } = mappedNode;
34
- const { nodeStrength } = nodeData.layout.force;
35
- return {
36
- x,
37
- y,
38
- size,
39
- index: i,
40
- vx: 0,
41
- vy: 0,
42
- weight: weightParam * nodeStrength,
43
- };
44
- });
45
-
46
- const tree = quadtree(
47
- data,
48
- (d: any) => d.x,
49
- (d: any) => d.y,
50
- ).visitAfter(accumulate); // init internal node
51
-
52
- data.forEach((n) => {
53
- // @ts-ignore
54
- computeForce(n, tree);
55
- });
56
-
57
- data.map((n, i) => {
58
- // @ts-ignore
59
- const mappedNode = nodeMap[nodes[i].id];
60
- // @ts-ignore
61
- const { mass = 1 } = mappedNode.data.layout.force;
62
- // 从 0 开始,= 初始化 + 加斥力
63
- accArray[2 * i] = n.vx / mass;
64
- accArray[2 * i + 1] = n.vy / mass;
65
- });
66
- return accArray;
67
- }
68
-
69
- // @ts-ignore
70
- function accumulate(quad) {
71
- let accWeight = 0;
72
- let accX = 0;
73
- let accY = 0;
74
-
75
- if (quad.length) {
76
- // internal node, accumulate 4 child quads
77
- for (let i = 0; i < 4; i++) {
78
- const q = quad[i];
79
- if (q && q.weight) {
80
- accWeight += q.weight;
81
- accX += q.x * q.weight;
82
- accY += q.y * q.weight;
83
- }
84
- }
85
- quad.x = accX / accWeight;
86
- quad.y = accY / accWeight;
87
- quad.weight = accWeight;
88
- } else {
89
- // leaf node
90
- const q = quad;
91
- quad.x = q.data.x;
92
- quad.y = q.data.y;
93
- quad.weight = q.data.weight;
94
- }
95
- }
96
-
97
- // @ts-ignore
98
- const apply = (quad, x1: number, y1: number, x2: number, y2: number, node: InternalNode) => {
99
- const dx = (node.x - quad.x) || epsilon;
100
- const dy = (node.y - quad.y) || epsilon;
101
- const width = x2 - x1;
102
- const len2 = dx * dx + dy * dy;
103
- const len3 = Math.sqrt(len2) * len2;
104
-
105
- // far node, apply Barnes-Hut approximation
106
- if ((width * width) * theta2 < len2) {
107
- const param = quad.weight / len3;
108
- node.vx += dx * param;
109
- node.vy += dy * param;
110
- return true;
111
- }
112
- // near quad, compute force directly
113
- if (quad.length) return false; // internal node, visit children
114
-
115
- // leaf node
116
-
117
- if (quad.data !== node) {
118
- const param = quad.data.weight / len3;
119
- node.vx += dx * param;
120
- node.vy += dy * param;
121
- }
122
- };
123
-
124
- // @ts-ignore
125
- function computeForce(node: InternalNode, tree) {
126
- // @ts-ignore
127
- tree.visit((quad, x1, y1, x2, y2) => apply(quad, x1, y1, x2, y2, node));
128
- }