@antv/layout 0.2.0 → 0.2.3

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 (297) hide show
  1. package/dist/layout.min.js +1 -1
  2. package/dist/layout.min.js.LICENSE.txt +0 -9
  3. package/dist/layout.min.js.map +1 -1
  4. package/es/layout/circular.js.map +1 -1
  5. package/es/layout/comboCombined.js +3 -19
  6. package/es/layout/comboCombined.js.map +1 -1
  7. package/es/layout/concentric.js.map +1 -1
  8. package/es/layout/dagre/graph.d.ts +91 -0
  9. package/es/layout/dagre/graph.js +4 -0
  10. package/es/layout/dagre/graph.js.map +1 -0
  11. package/es/layout/dagre/index.d.ts +3 -4
  12. package/es/layout/dagre/index.js +0 -2
  13. package/es/layout/dagre/index.js.map +1 -1
  14. package/es/layout/dagre/src/acyclic.d.ts +1 -2
  15. package/es/layout/dagre/src/acyclic.js +7 -7
  16. package/es/layout/dagre/src/acyclic.js.map +1 -1
  17. package/es/layout/dagre/src/add-border-segments.d.ts +1 -2
  18. package/es/layout/dagre/src/add-border-segments.js +5 -5
  19. package/es/layout/dagre/src/add-border-segments.js.map +1 -1
  20. package/es/layout/dagre/src/coordinate-system.d.ts +1 -2
  21. package/es/layout/dagre/src/coordinate-system.js +15 -5
  22. package/es/layout/dagre/src/coordinate-system.js.map +1 -1
  23. package/es/layout/dagre/src/data/list.d.ts +9 -5
  24. package/es/layout/dagre/src/data/list.js +25 -27
  25. package/es/layout/dagre/src/data/list.js.map +1 -1
  26. package/es/layout/dagre/src/debug.d.ts +2 -3
  27. package/es/layout/dagre/src/debug.js +3 -5
  28. package/es/layout/dagre/src/debug.js.map +1 -1
  29. package/es/layout/dagre/src/greedy-fas.d.ts +2 -3
  30. package/es/layout/dagre/src/greedy-fas.js +16 -15
  31. package/es/layout/dagre/src/greedy-fas.js.map +1 -1
  32. package/es/layout/dagre/src/layout.d.ts +2 -3
  33. package/es/layout/dagre/src/layout.js +170 -91
  34. package/es/layout/dagre/src/layout.js.map +1 -1
  35. package/es/layout/dagre/src/nesting-graph.d.ts +1 -2
  36. package/es/layout/dagre/src/nesting-graph.js +15 -10
  37. package/es/layout/dagre/src/nesting-graph.js.map +1 -1
  38. package/es/layout/dagre/src/normalize.d.ts +1 -2
  39. package/es/layout/dagre/src/normalize.js +12 -11
  40. package/es/layout/dagre/src/normalize.js.map +1 -1
  41. package/es/layout/dagre/src/order/add-subgraph-constraints.d.ts +1 -2
  42. package/es/layout/dagre/src/order/add-subgraph-constraints.js.map +1 -1
  43. package/es/layout/dagre/src/order/barycenter.d.ts +1 -2
  44. package/es/layout/dagre/src/order/barycenter.js.map +1 -1
  45. package/es/layout/dagre/src/order/build-layer-graph.d.ts +2 -3
  46. package/es/layout/dagre/src/order/build-layer-graph.js +12 -8
  47. package/es/layout/dagre/src/order/build-layer-graph.js.map +1 -1
  48. package/es/layout/dagre/src/order/cross-count.d.ts +2 -3
  49. package/es/layout/dagre/src/order/cross-count.js +13 -12
  50. package/es/layout/dagre/src/order/cross-count.js.map +1 -1
  51. package/es/layout/dagre/src/order/index.d.ts +2 -3
  52. package/es/layout/dagre/src/order/index.js +17 -15
  53. package/es/layout/dagre/src/order/index.js.map +1 -1
  54. package/es/layout/dagre/src/order/init-data-order.d.ts +1 -2
  55. package/es/layout/dagre/src/order/init-data-order.js +3 -5
  56. package/es/layout/dagre/src/order/init-data-order.js.map +1 -1
  57. package/es/layout/dagre/src/order/init-order.d.ts +2 -3
  58. package/es/layout/dagre/src/order/init-order.js +1 -2
  59. package/es/layout/dagre/src/order/init-order.js.map +1 -1
  60. package/es/layout/dagre/src/order/resolve-conflicts.d.ts +18 -3
  61. package/es/layout/dagre/src/order/resolve-conflicts.js +9 -29
  62. package/es/layout/dagre/src/order/resolve-conflicts.js.map +1 -1
  63. package/es/layout/dagre/src/order/sort-subgraph.d.ts +6 -3
  64. package/es/layout/dagre/src/order/sort-subgraph.js +19 -14
  65. package/es/layout/dagre/src/order/sort-subgraph.js.map +1 -1
  66. package/es/layout/dagre/src/order/sort.d.ts +6 -1
  67. package/es/layout/dagre/src/order/sort.js +2 -2
  68. package/es/layout/dagre/src/order/sort.js.map +1 -1
  69. package/es/layout/dagre/src/parent-dummy-chains.d.ts +1 -2
  70. package/es/layout/dagre/src/parent-dummy-chains.js +47 -44
  71. package/es/layout/dagre/src/parent-dummy-chains.js.map +1 -1
  72. package/es/layout/dagre/src/position/bk.d.ts +22 -31
  73. package/es/layout/dagre/src/position/bk.js +49 -83
  74. package/es/layout/dagre/src/position/bk.js.map +1 -1
  75. package/es/layout/dagre/src/position/index.d.ts +1 -2
  76. package/es/layout/dagre/src/position/index.js +12 -14
  77. package/es/layout/dagre/src/position/index.js.map +1 -1
  78. package/es/layout/dagre/src/rank/feasible-tree.d.ts +5 -6
  79. package/es/layout/dagre/src/rank/feasible-tree.js +1 -2
  80. package/es/layout/dagre/src/rank/feasible-tree.js.map +1 -1
  81. package/es/layout/dagre/src/rank/index.d.ts +2 -3
  82. package/es/layout/dagre/src/rank/index.js.map +1 -1
  83. package/es/layout/dagre/src/rank/network-simplex.d.ts +8 -11
  84. package/es/layout/dagre/src/rank/network-simplex.js +18 -31
  85. package/es/layout/dagre/src/rank/network-simplex.js.map +1 -1
  86. package/es/layout/dagre/src/rank/util.d.ts +4 -5
  87. package/es/layout/dagre/src/rank/util.js +37 -20
  88. package/es/layout/dagre/src/rank/util.js.map +1 -1
  89. package/es/layout/dagre/src/util.d.ts +29 -48
  90. package/es/layout/dagre/src/util.js +91 -101
  91. package/es/layout/dagre/src/util.js.map +1 -1
  92. package/es/layout/dagre.d.ts +1 -1
  93. package/es/layout/dagre.js +28 -24
  94. package/es/layout/dagre.js.map +1 -1
  95. package/es/layout/fruchterman.js.map +1 -1
  96. package/es/layout/gForce.js +14 -6
  97. package/es/layout/gForce.js.map +1 -1
  98. package/lib/index.js +5 -1
  99. package/lib/index.js.map +1 -1
  100. package/lib/layout/circular.js.map +1 -1
  101. package/lib/layout/comboCombined.js +2 -18
  102. package/lib/layout/comboCombined.js.map +1 -1
  103. package/lib/layout/comboForce.js +5 -5
  104. package/lib/layout/comboForce.js.map +1 -1
  105. package/lib/layout/concentric.js.map +1 -1
  106. package/lib/layout/dagre/graph.d.ts +91 -0
  107. package/lib/layout/dagre/graph.js +28 -0
  108. package/lib/layout/dagre/graph.js.map +1 -0
  109. package/lib/layout/dagre/index.d.ts +3 -4
  110. package/lib/layout/dagre/index.js +0 -2
  111. package/lib/layout/dagre/index.js.map +1 -1
  112. package/lib/layout/dagre/src/acyclic.d.ts +1 -2
  113. package/lib/layout/dagre/src/acyclic.js +7 -7
  114. package/lib/layout/dagre/src/acyclic.js.map +1 -1
  115. package/lib/layout/dagre/src/add-border-segments.d.ts +1 -2
  116. package/lib/layout/dagre/src/add-border-segments.js +5 -8
  117. package/lib/layout/dagre/src/add-border-segments.js.map +1 -1
  118. package/lib/layout/dagre/src/coordinate-system.d.ts +1 -2
  119. package/lib/layout/dagre/src/coordinate-system.js +15 -5
  120. package/lib/layout/dagre/src/coordinate-system.js.map +1 -1
  121. package/lib/layout/dagre/src/data/list.d.ts +9 -5
  122. package/lib/layout/dagre/src/data/list.js +25 -26
  123. package/lib/layout/dagre/src/data/list.js.map +1 -1
  124. package/lib/layout/dagre/src/debug.d.ts +2 -3
  125. package/lib/layout/dagre/src/debug.js +6 -11
  126. package/lib/layout/dagre/src/debug.js.map +1 -1
  127. package/lib/layout/dagre/src/greedy-fas.d.ts +2 -3
  128. package/lib/layout/dagre/src/greedy-fas.js +41 -15
  129. package/lib/layout/dagre/src/greedy-fas.js.map +1 -1
  130. package/lib/layout/dagre/src/layout.d.ts +2 -3
  131. package/lib/layout/dagre/src/layout.js +171 -100
  132. package/lib/layout/dagre/src/layout.js.map +1 -1
  133. package/lib/layout/dagre/src/nesting-graph.d.ts +1 -2
  134. package/lib/layout/dagre/src/nesting-graph.js +15 -13
  135. package/lib/layout/dagre/src/nesting-graph.js.map +1 -1
  136. package/lib/layout/dagre/src/normalize.d.ts +1 -2
  137. package/lib/layout/dagre/src/normalize.js +12 -14
  138. package/lib/layout/dagre/src/normalize.js.map +1 -1
  139. package/lib/layout/dagre/src/order/add-subgraph-constraints.d.ts +1 -2
  140. package/lib/layout/dagre/src/order/add-subgraph-constraints.js.map +1 -1
  141. package/lib/layout/dagre/src/order/barycenter.d.ts +1 -2
  142. package/lib/layout/dagre/src/order/barycenter.js.map +1 -1
  143. package/lib/layout/dagre/src/order/build-layer-graph.d.ts +2 -3
  144. package/lib/layout/dagre/src/order/build-layer-graph.js +13 -12
  145. package/lib/layout/dagre/src/order/build-layer-graph.js.map +1 -1
  146. package/lib/layout/dagre/src/order/cross-count.d.ts +2 -3
  147. package/lib/layout/dagre/src/order/cross-count.js +14 -13
  148. package/lib/layout/dagre/src/order/cross-count.js.map +1 -1
  149. package/lib/layout/dagre/src/order/index.d.ts +2 -3
  150. package/lib/layout/dagre/src/order/index.js +15 -13
  151. package/lib/layout/dagre/src/order/index.js.map +1 -1
  152. package/lib/layout/dagre/src/order/init-data-order.d.ts +1 -2
  153. package/lib/layout/dagre/src/order/init-data-order.js +3 -5
  154. package/lib/layout/dagre/src/order/init-data-order.js.map +1 -1
  155. package/lib/layout/dagre/src/order/init-order.d.ts +2 -3
  156. package/lib/layout/dagre/src/order/init-order.js +1 -2
  157. package/lib/layout/dagre/src/order/init-order.js.map +1 -1
  158. package/lib/layout/dagre/src/order/resolve-conflicts.d.ts +18 -3
  159. package/lib/layout/dagre/src/order/resolve-conflicts.js +9 -29
  160. package/lib/layout/dagre/src/order/resolve-conflicts.js.map +1 -1
  161. package/lib/layout/dagre/src/order/sort-subgraph.d.ts +6 -3
  162. package/lib/layout/dagre/src/order/sort-subgraph.js +16 -11
  163. package/lib/layout/dagre/src/order/sort-subgraph.js.map +1 -1
  164. package/lib/layout/dagre/src/order/sort.d.ts +6 -1
  165. package/lib/layout/dagre/src/order/sort.js +2 -5
  166. package/lib/layout/dagre/src/order/sort.js.map +1 -1
  167. package/lib/layout/dagre/src/parent-dummy-chains.d.ts +1 -2
  168. package/lib/layout/dagre/src/parent-dummy-chains.js +47 -44
  169. package/lib/layout/dagre/src/parent-dummy-chains.js.map +1 -1
  170. package/lib/layout/dagre/src/position/bk.d.ts +22 -31
  171. package/lib/layout/dagre/src/position/bk.js +75 -85
  172. package/lib/layout/dagre/src/position/bk.js.map +1 -1
  173. package/lib/layout/dagre/src/position/index.d.ts +1 -2
  174. package/lib/layout/dagre/src/position/index.js +14 -17
  175. package/lib/layout/dagre/src/position/index.js.map +1 -1
  176. package/lib/layout/dagre/src/rank/feasible-tree.d.ts +5 -6
  177. package/lib/layout/dagre/src/rank/feasible-tree.js +3 -7
  178. package/lib/layout/dagre/src/rank/feasible-tree.js.map +1 -1
  179. package/lib/layout/dagre/src/rank/index.d.ts +2 -3
  180. package/lib/layout/dagre/src/rank/index.js.map +1 -1
  181. package/lib/layout/dagre/src/rank/network-simplex.d.ts +8 -11
  182. package/lib/layout/dagre/src/rank/network-simplex.js +27 -35
  183. package/lib/layout/dagre/src/rank/network-simplex.js.map +1 -1
  184. package/lib/layout/dagre/src/rank/util.d.ts +4 -5
  185. package/lib/layout/dagre/src/rank/util.js +36 -19
  186. package/lib/layout/dagre/src/rank/util.js.map +1 -1
  187. package/lib/layout/dagre/src/util.d.ts +29 -48
  188. package/lib/layout/dagre/src/util.js +80 -92
  189. package/lib/layout/dagre/src/util.js.map +1 -1
  190. package/lib/layout/dagre.d.ts +1 -1
  191. package/lib/layout/dagre.js +27 -23
  192. package/lib/layout/dagre.js.map +1 -1
  193. package/lib/layout/er/core.js +5 -1
  194. package/lib/layout/er/core.js.map +1 -1
  195. package/lib/layout/force/force-in-a-box.js +7 -3
  196. package/lib/layout/force/force-in-a-box.js.map +1 -1
  197. package/lib/layout/force/force.js +5 -1
  198. package/lib/layout/force/force.js.map +1 -1
  199. package/lib/layout/force/index.js +5 -1
  200. package/lib/layout/force/index.js.map +1 -1
  201. package/lib/layout/fruchterman.js.map +1 -1
  202. package/lib/layout/gForce.js +10 -2
  203. package/lib/layout/gForce.js.map +1 -1
  204. package/lib/layout/grid.js +2 -2
  205. package/lib/layout/grid.js.map +1 -1
  206. package/lib/layout/index.js +5 -1
  207. package/lib/layout/index.js.map +1 -1
  208. package/lib/layout/radial/index.js +5 -1
  209. package/lib/layout/radial/index.js.map +1 -1
  210. package/lib/registy/index.js +1 -1
  211. package/lib/registy/index.js.map +1 -1
  212. package/lib/util/index.js +5 -1
  213. package/lib/util/index.js.map +1 -1
  214. package/package.json +3 -2
  215. package/src/index.ts +7 -0
  216. package/src/layout/base.ts +54 -0
  217. package/src/layout/circular.ts +369 -0
  218. package/src/layout/comboCombined.ts +390 -0
  219. package/src/layout/comboForce.ts +873 -0
  220. package/src/layout/concentric.ts +289 -0
  221. package/src/layout/constants.ts +21 -0
  222. package/src/layout/dagre/graph.ts +104 -0
  223. package/src/layout/dagre/index.ts +31 -0
  224. package/src/layout/dagre/src/acyclic.ts +58 -0
  225. package/src/layout/dagre/src/add-border-segments.ts +47 -0
  226. package/src/layout/dagre/src/coordinate-system.ts +77 -0
  227. package/src/layout/dagre/src/data/list.ts +60 -0
  228. package/src/layout/dagre/src/debug.ts +30 -0
  229. package/src/layout/dagre/src/greedy-fas.ts +144 -0
  230. package/src/layout/dagre/src/layout.ts +580 -0
  231. package/src/layout/dagre/src/nesting-graph.ts +143 -0
  232. package/src/layout/dagre/src/normalize.ts +96 -0
  233. package/src/layout/dagre/src/order/add-subgraph-constraints.ts +29 -0
  234. package/src/layout/dagre/src/order/barycenter.ts +26 -0
  235. package/src/layout/dagre/src/order/build-layer-graph.ts +82 -0
  236. package/src/layout/dagre/src/order/cross-count.ts +77 -0
  237. package/src/layout/dagre/src/order/index.ts +105 -0
  238. package/src/layout/dagre/src/order/init-data-order.ts +27 -0
  239. package/src/layout/dagre/src/order/init-order.ts +56 -0
  240. package/src/layout/dagre/src/order/resolve-conflicts.ts +152 -0
  241. package/src/layout/dagre/src/order/sort-subgraph.ts +105 -0
  242. package/src/layout/dagre/src/order/sort.ts +76 -0
  243. package/src/layout/dagre/src/parent-dummy-chains.ts +102 -0
  244. package/src/layout/dagre/src/position/bk.ts +494 -0
  245. package/src/layout/dagre/src/position/index.ts +82 -0
  246. package/src/layout/dagre/src/rank/feasible-tree.ts +165 -0
  247. package/src/layout/dagre/src/rank/index.ts +54 -0
  248. package/src/layout/dagre/src/rank/network-simplex.ts +225 -0
  249. package/src/layout/dagre/src/rank/util.ts +157 -0
  250. package/src/layout/dagre/src/util.ts +308 -0
  251. package/src/layout/dagre.ts +423 -0
  252. package/src/layout/dagreCompound.ts +518 -0
  253. package/src/layout/er/core.ts +117 -0
  254. package/src/layout/er/forceGrid.ts +95 -0
  255. package/src/layout/er/grid.ts +185 -0
  256. package/src/layout/er/index.ts +68 -0
  257. package/src/layout/er/mysqlWorkbench.ts +345 -0
  258. package/src/layout/er/type.ts +39 -0
  259. package/src/layout/force/force-in-a-box.ts +400 -0
  260. package/src/layout/force/force.ts +391 -0
  261. package/src/layout/force/index.ts +1 -0
  262. package/src/layout/forceAtlas2/body.ts +115 -0
  263. package/src/layout/forceAtlas2/index.ts +556 -0
  264. package/src/layout/forceAtlas2/quad.ts +115 -0
  265. package/src/layout/forceAtlas2/quadTree.ts +107 -0
  266. package/src/layout/fruchterman.ts +361 -0
  267. package/src/layout/gForce.ts +487 -0
  268. package/src/layout/gpu/fruchterman.ts +314 -0
  269. package/src/layout/gpu/fruchtermanShader.ts +204 -0
  270. package/src/layout/gpu/gForce.ts +406 -0
  271. package/src/layout/gpu/gForceShader.ts +221 -0
  272. package/src/layout/grid.ts +391 -0
  273. package/src/layout/index.ts +45 -0
  274. package/src/layout/layout.ts +75 -0
  275. package/src/layout/mds.ts +140 -0
  276. package/src/layout/radial/index.ts +1 -0
  277. package/src/layout/radial/mds.ts +51 -0
  278. package/src/layout/radial/radial.ts +500 -0
  279. package/src/layout/radial/radialNonoverlapForce.ts +189 -0
  280. package/src/layout/random.ts +75 -0
  281. package/src/layout/types.ts +421 -0
  282. package/src/registy/index.ts +43 -0
  283. package/src/util/array.ts +1 -0
  284. package/src/util/function.ts +64 -0
  285. package/src/util/gpu.ts +254 -0
  286. package/src/util/index.ts +6 -0
  287. package/src/util/math.ts +158 -0
  288. package/src/util/number.ts +8 -0
  289. package/src/util/object.ts +28 -0
  290. package/src/util/string.ts +18 -0
  291. package/CHANGELOG.md +0 -78
  292. package/es/layout/dagre/src/graphlib.d.ts +0 -2
  293. package/es/layout/dagre/src/graphlib.js +0 -51
  294. package/es/layout/dagre/src/graphlib.js.map +0 -1
  295. package/lib/layout/dagre/src/graphlib.d.ts +0 -2
  296. package/lib/layout/dagre/src/graphlib.js +0 -56
  297. package/lib/layout/dagre/src/graphlib.js.map +0 -1
@@ -1,9 +1,7 @@
1
- import util from './util';
2
- import graphlib from './graphlib';
3
- const Graph = graphlib.Graph;
4
- /* istanbul ignore next */
1
+ import { Graph } from "../graph";
2
+ import { buildLayerMatrix } from "./util";
5
3
  const debugOrdering = (g) => {
6
- const layerMatrix = util.buildLayerMatrix(g);
4
+ const layerMatrix = buildLayerMatrix(g);
7
5
  const h = new Graph({ compound: true, multigraph: true }).setGraph({});
8
6
  g.nodes().forEach((v) => {
9
7
  h.setNode(v, { label: v });
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../../src/layout/dagre/src/debug.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAIlC,MAAM,KAAK,GAAI,QAAgB,CAAC,KAAK,CAAC;AAEtC,0BAA0B;AAC1B,MAAM,aAAa,GAAG,CAAC,CAAS,EAAE,EAAE;IAClC,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAE7C,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvE,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;QAC9B,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACtB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,CAAC,CAAC,KAAU,EAAE,CAAS,EAAE,EAAE;QAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACpC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;YACrC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../../src/layout/dagre/src/debug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,aAAa,GAAG,CAAC,CAAQ,EAAE,EAAE;IACjC,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvE,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;QAC9B,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACtB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAS,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAA2B,EAAE,CAAC,CAAC;QACzD,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;YACrC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,4 +1,3 @@
1
- import { graphlib as IGraphLib } from '../graphlib';
2
- declare type IGraph = IGraphLib.Graph;
3
- declare const greedyFAS: (g: IGraph, weightFn: () => unknown) => (import("../graphlib").Edge | undefined)[];
1
+ import { Edge, Graph } from "../graph";
2
+ declare const greedyFAS: (g: Graph, weightFn?: ((e: Edge) => number) | undefined) => (import("@antv/graphlib/lib/Graph").DefaultEdgeType<string, Partial<import("../graph").EdgeConfig & Edge & import("../graph").GraphEdge>> | undefined)[];
4
3
  export default greedyFAS;
@@ -1,6 +1,9 @@
1
- import graphlib from './graphlib';
2
- import List from './data/list';
3
- const Graph = graphlib.Graph;
1
+ import RawList from "./data/list";
2
+ import { Graph as RawGraph } from "@antv/graphlib";
3
+ class List extends RawList {
4
+ }
5
+ class StateGraph extends RawGraph {
6
+ }
4
7
  /*
5
8
  * A greedy heuristic for finding a feedback arc set for a graph. A feedback
6
9
  * arc set is a set of edges that can be removed to make a graph acyclic.
@@ -8,7 +11,6 @@ const Graph = graphlib.Graph;
8
11
  * effective heuristic for the feedback arc set problem." This implementation
9
12
  * adjusts that from the paper to allow for weighted edges.
10
13
  */
11
- // module.exports = greedyFAS;
12
14
  const DEFAULT_WEIGHT_FN = () => 1;
13
15
  const greedyFAS = (g, weightFn) => {
14
16
  var _a;
@@ -16,8 +18,6 @@ const greedyFAS = (g, weightFn) => {
16
18
  return [];
17
19
  const state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);
18
20
  const results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);
19
- // Expand multi-edges
20
- // @ts-ignore
21
21
  return (_a = results.map((e) => g.outEdges(e.v, e.w))) === null || _a === void 0 ? void 0 : _a.flat();
22
22
  };
23
23
  const doGreedyFAS = (g, buckets, zeroIdx) => {
@@ -46,12 +46,13 @@ const doGreedyFAS = (g, buckets, zeroIdx) => {
46
46
  };
47
47
  const removeNode = (g, buckets, zeroIdx, entry, collectPredecessors) => {
48
48
  var _a, _b;
49
- const results = collectPredecessors ? [] : undefined;
49
+ const results = [];
50
50
  (_a = g.inEdges(entry.v)) === null || _a === void 0 ? void 0 : _a.forEach((edge) => {
51
51
  const weight = g.edge(edge);
52
52
  const uEntry = g.node(edge.v);
53
53
  if (collectPredecessors) {
54
- results.push({ v: edge.v, w: edge.w });
54
+ // this result not really care about in or out
55
+ results.push({ v: edge.v, w: edge.w, in: 0, out: 0 });
55
56
  }
56
57
  if (uEntry.out === undefined)
57
58
  uEntry.out = 0;
@@ -68,24 +69,24 @@ const removeNode = (g, buckets, zeroIdx, entry, collectPredecessors) => {
68
69
  assignBucket(buckets, zeroIdx, wEntry);
69
70
  });
70
71
  g.removeNode(entry.v);
71
- return results;
72
+ return collectPredecessors ? results : undefined;
72
73
  };
73
74
  const buildState = (g, weightFn) => {
74
- const fasGraph = new Graph();
75
+ const fasGraph = new StateGraph();
75
76
  let maxIn = 0;
76
77
  let maxOut = 0;
77
78
  g.nodes().forEach((v) => {
78
- fasGraph.setNode(v, { v, "in": 0, out: 0 });
79
+ fasGraph.setNode(v, { v, in: 0, out: 0 });
79
80
  });
80
81
  // Aggregate weights on nodes, but also sum the weights across multi-edges
81
82
  // into a single edge for the fasGraph.
82
83
  g.edges().forEach((e) => {
83
- const prevWeight = fasGraph.edge(e.v, e.w) || 0;
84
- const weight = weightFn === null || weightFn === void 0 ? void 0 : weightFn(e);
84
+ const prevWeight = fasGraph.edge(e) || 0;
85
+ const weight = (weightFn === null || weightFn === void 0 ? void 0 : weightFn(e)) || 1;
85
86
  const edgeWeight = prevWeight + weight;
86
87
  fasGraph.setEdge(e.v, e.w, edgeWeight);
87
- maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);
88
- maxIn = Math.max(maxIn, fasGraph.node(e.w)["in"] += weight);
88
+ maxOut = Math.max(maxOut, (fasGraph.node(e.v).out += weight));
89
+ maxIn = Math.max(maxIn, (fasGraph.node(e.w).in += weight));
89
90
  });
90
91
  const buckets = [];
91
92
  const rangeMax = maxOut + maxIn + 3;
@@ -1 +1 @@
1
- {"version":3,"file":"greedy-fas.js","sourceRoot":"","sources":["../../../../src/layout/dagre/src/greedy-fas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"greedy-fas.js","sourceRoot":"","sources":["../../../../src/layout/dagre/src/greedy-fas.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { graphlib as IGraphLib } from '../graphlib';
2
- declare type IGraph = IGraphLib.Graph;
3
- declare const layout: (g: IGraph, opts: any) => void;
1
+ import { Graph } from "../graph";
2
+ declare const layout: (g: Graph, opts?: any) => void;
4
3
  export default layout;
@@ -1,84 +1,148 @@
1
- import acyclic from './acyclic';
2
- import normalize from './normalize';
3
- import rank from './rank';
4
- import util, { normalizeRanks, removeEmptyRanks } from './util';
5
- import parentDummyChains from './parent-dummy-chains';
6
- import nestingGraph from './nesting-graph';
7
- import addBorderSegments from './add-border-segments';
8
- import coordinateSystem from './coordinate-system';
9
- import order from './order';
10
- import position from './position';
11
- import graphlib from './graphlib';
12
- import initDataOrder from './order/init-data-order';
13
- const Graph = graphlib.Graph;
1
+ import acyclic from "./acyclic";
2
+ import normalize from "./normalize";
3
+ import rank from "./rank";
4
+ import { normalizeRanks, removeEmptyRanks, time as usetime, notime, asNonCompoundGraph, addDummyNode, intersectRect, buildLayerMatrix, } from "./util";
5
+ import parentDummyChains from "./parent-dummy-chains";
6
+ import nestingGraph from "./nesting-graph";
7
+ import addBorderSegments from "./add-border-segments";
8
+ import coordinateSystem from "./coordinate-system";
9
+ import order from "./order";
10
+ import position from "./position";
11
+ import initDataOrder from "./order/init-data-order";
12
+ import { Graph } from "../graph";
14
13
  const layout = (g, opts) => {
15
- const time = opts && opts.debugTiming ? util.time : util.notime;
14
+ const time = opts && opts.debugTiming ? usetime : notime;
16
15
  time("layout", () => {
17
16
  // 如果在原图基础上修改,继承原图的order结果
18
17
  if (opts && !opts.keepNodeOrder && opts.prevGraph) {
19
- time(" inheritOrder", () => { inheritOrder(g, opts.prevGraph); });
18
+ time(" inheritOrder", () => {
19
+ inheritOrder(g, opts.prevGraph);
20
+ });
20
21
  }
21
- const layoutGraph = time(" buildLayoutGraph", () => { return buildLayoutGraph(g); });
22
+ const layoutGraph = time(" buildLayoutGraph", () => {
23
+ return buildLayoutGraph(g);
24
+ });
22
25
  // 控制是否为边的label留位置(这会影响是否在边中间添加dummy node)
23
- if (!(opts && (opts.edgeLabelSpace === false))) {
24
- time(" makeSpaceForEdgeLabels", () => { makeSpaceForEdgeLabels(layoutGraph); });
26
+ if (!(opts && opts.edgeLabelSpace === false)) {
27
+ time(" makeSpaceForEdgeLabels", () => {
28
+ makeSpaceForEdgeLabels(layoutGraph);
29
+ });
25
30
  }
26
31
  // TODO: 暂时处理层级设置不正确时的异常报错,提示设置正确的层级
27
32
  try {
28
- time(" runLayout", () => { runLayout(layoutGraph, time, opts); });
33
+ time(" runLayout", () => {
34
+ runLayout(layoutGraph, time, opts);
35
+ });
29
36
  }
30
37
  catch (e) {
31
- if (e.message === "Not possible to find intersection inside of the rectangle") {
32
- console.error('The following error may be caused by improper layer setting, please make sure your manual layer setting does not violate the graph\'s structure:\n', e);
38
+ if (e.message ===
39
+ "Not possible to find intersection inside of the rectangle") {
40
+ console.error("The following error may be caused by improper layer setting, please make sure your manual layer setting does not violate the graph's structure:\n", e);
33
41
  return;
34
42
  }
35
- throw (e);
43
+ throw e;
36
44
  }
37
- time(" updateInputGraph", () => { updateInputGraph(g, layoutGraph); });
45
+ time(" updateInputGraph", () => {
46
+ updateInputGraph(g, layoutGraph);
47
+ });
38
48
  });
39
49
  };
40
50
  const runLayout = (g, time, opts) => {
41
- time(" removeSelfEdges", () => { removeSelfEdges(g); });
42
- time(" acyclic", () => { acyclic.run(g); });
43
- time(" nestingGraph.run", () => { nestingGraph.run(g); });
44
- time(" rank", () => { rank(util.asNonCompoundGraph(g)); });
45
- time(" injectEdgeLabelProxies", () => { injectEdgeLabelProxies(g); });
46
- time(" removeEmptyRanks", () => { removeEmptyRanks(g); });
47
- time(" nestingGraph.cleanup", () => { nestingGraph.cleanup(g); });
48
- time(" normalizeRanks", () => { normalizeRanks(g); });
49
- time(" assignRankMinMax", () => { assignRankMinMax(g); });
50
- time(" removeEdgeLabelProxies", () => { removeEdgeLabelProxies(g); });
51
- time(" normalize.run", () => { normalize.run(g); });
52
- time(" parentDummyChains", () => { parentDummyChains(g); });
53
- time(" addBorderSegments", () => { addBorderSegments(g); });
51
+ time(" removeSelfEdges", () => {
52
+ removeSelfEdges(g);
53
+ });
54
+ time(" acyclic", () => {
55
+ acyclic.run(g);
56
+ });
57
+ time(" nestingGraph.run", () => {
58
+ nestingGraph.run(g);
59
+ });
60
+ time(" rank", () => {
61
+ rank(asNonCompoundGraph(g));
62
+ });
63
+ time(" injectEdgeLabelProxies", () => {
64
+ injectEdgeLabelProxies(g);
65
+ });
66
+ time(" removeEmptyRanks", () => {
67
+ removeEmptyRanks(g);
68
+ });
69
+ time(" nestingGraph.cleanup", () => {
70
+ nestingGraph.cleanup(g);
71
+ });
72
+ time(" normalizeRanks", () => {
73
+ normalizeRanks(g);
74
+ });
75
+ time(" assignRankMinMax", () => {
76
+ assignRankMinMax(g);
77
+ });
78
+ time(" removeEdgeLabelProxies", () => {
79
+ removeEdgeLabelProxies(g);
80
+ });
81
+ time(" normalize.run", () => {
82
+ normalize.run(g);
83
+ });
84
+ time(" parentDummyChains", () => {
85
+ parentDummyChains(g);
86
+ });
87
+ time(" addBorderSegments", () => {
88
+ addBorderSegments(g);
89
+ });
54
90
  if (opts && opts.keepNodeOrder) {
55
- time(" initDataOrder", () => { initDataOrder(g, opts.nodeOrder); });
91
+ time(" initDataOrder", () => {
92
+ initDataOrder(g, opts.nodeOrder);
93
+ });
56
94
  }
57
- time(" order", () => { order(g); });
58
- time(" insertSelfEdges", () => { insertSelfEdges(g); });
59
- time(" adjustCoordinateSystem", () => { coordinateSystem.adjust(g); });
60
- time(" position", () => { position(g); });
61
- time(" positionSelfEdges", () => { positionSelfEdges(g); });
62
- time(" removeBorderNodes", () => { removeBorderNodes(g); });
63
- time(" normalize.undo", () => { normalize.undo(g); });
64
- time(" fixupEdgeLabelCoords", () => { fixupEdgeLabelCoords(g); });
65
- time(" undoCoordinateSystem", () => { coordinateSystem.undo(g); });
66
- time(" translateGraph", () => { translateGraph(g); });
67
- time(" assignNodeIntersects", () => { assignNodeIntersects(g); });
68
- time(" reversePoints", () => { reversePointsForReversedEdges(g); });
69
- time(" acyclic.undo", () => { acyclic.undo(g); });
95
+ time(" order", () => {
96
+ order(g);
97
+ });
98
+ time(" insertSelfEdges", () => {
99
+ insertSelfEdges(g);
100
+ });
101
+ time(" adjustCoordinateSystem", () => {
102
+ coordinateSystem.adjust(g);
103
+ });
104
+ time(" position", () => {
105
+ position(g);
106
+ });
107
+ time(" positionSelfEdges", () => {
108
+ positionSelfEdges(g);
109
+ });
110
+ time(" removeBorderNodes", () => {
111
+ removeBorderNodes(g);
112
+ });
113
+ time(" normalize.undo", () => {
114
+ normalize.undo(g);
115
+ });
116
+ time(" fixupEdgeLabelCoords", () => {
117
+ fixupEdgeLabelCoords(g);
118
+ });
119
+ time(" undoCoordinateSystem", () => {
120
+ coordinateSystem.undo(g);
121
+ });
122
+ time(" translateGraph", () => {
123
+ translateGraph(g);
124
+ });
125
+ time(" assignNodeIntersects", () => {
126
+ assignNodeIntersects(g);
127
+ });
128
+ time(" reversePoints", () => {
129
+ reversePointsForReversedEdges(g);
130
+ });
131
+ time(" acyclic.undo", () => {
132
+ acyclic.undo(g);
133
+ });
70
134
  };
71
135
  /**
72
136
  * 继承上一个布局中的order,防止翻转
73
137
  * TODO: 暂时没有考虑涉及层级变动的布局,只保证原来布局层级和相对顺序不变
74
138
  */
75
139
  const inheritOrder = (currG, prevG) => {
76
- const prevNodeMap = prevG._nodes || {};
77
140
  currG.nodes().forEach((n) => {
78
141
  const node = currG.node(n);
79
- if (prevNodeMap[n] !== undefined) {
80
- node.fixorder = prevNodeMap[n]._order;
81
- delete prevNodeMap[n]._order;
142
+ const prevNode = prevG.node(n);
143
+ if (prevNode !== undefined) {
144
+ node.fixorder = prevNode._order;
145
+ delete prevNode._order;
82
146
  }
83
147
  else {
84
148
  delete node.fixorder;
@@ -95,8 +159,8 @@ const updateInputGraph = (inputGraph, layoutGraph) => {
95
159
  inputGraph.nodes().forEach((v) => {
96
160
  var _a;
97
161
  const inputLabel = inputGraph.node(v);
98
- const layoutLabel = layoutGraph.node(v);
99
162
  if (inputLabel) {
163
+ const layoutLabel = layoutGraph.node(v);
100
164
  inputLabel.x = layoutLabel.x;
101
165
  inputLabel.y = layoutLabel.y;
102
166
  inputLabel._order = layoutLabel.order;
@@ -126,8 +190,12 @@ const nodeNumAttrs = ["width", "height", "layer", "fixorder"]; // 需要传入la
126
190
  const nodeDefaults = { width: 0, height: 0 };
127
191
  const edgeNumAttrs = ["minlen", "weight", "width", "height", "labeloffset"];
128
192
  const edgeDefaults = {
129
- minlen: 1, weight: 1, width: 0, height: 0,
130
- labeloffset: 10, labelpos: "r"
193
+ minlen: 1,
194
+ weight: 1,
195
+ width: 0,
196
+ height: 0,
197
+ labeloffset: 10,
198
+ labelpos: "r",
131
199
  };
132
200
  const edgeAttrs = ["labelpos"];
133
201
  /*
@@ -147,12 +215,8 @@ const buildLayoutGraph = (inputGraph) => {
147
215
  g.setGraph(Object.assign({}, graphDefaults, selectNumberAttrs(graph, graphNumAttrs), pickedProperties));
148
216
  inputGraph.nodes().forEach((v) => {
149
217
  const node = canonicalize(inputGraph.node(v));
150
- const defaultAttrs = selectNumberAttrs(node, nodeNumAttrs);
151
- Object.keys(nodeDefaults).forEach((key) => {
152
- if (defaultAttrs[key] === undefined) {
153
- defaultAttrs[key] = nodeDefaults[key];
154
- }
155
- });
218
+ const defaultNode = Object.assign(Object.assign({}, nodeDefaults), node);
219
+ const defaultAttrs = selectNumberAttrs(defaultNode, nodeNumAttrs);
156
220
  g.setNode(v, defaultAttrs);
157
221
  g.setParent(v, inputGraph.parent(v));
158
222
  });
@@ -163,7 +227,7 @@ const buildLayoutGraph = (inputGraph) => {
163
227
  if (edge[key] !== undefined)
164
228
  pickedProperties[key] = edge[key];
165
229
  });
166
- g.setEdge(e, Object.assign({}, edgeDefaults, selectNumberAttrs(edge, edgeNumAttrs), pickedProperties));
230
+ g.setEdgeObj(e, Object.assign({}, edgeDefaults, selectNumberAttrs(edge, edgeNumAttrs), pickedProperties));
167
231
  });
168
232
  return g;
169
233
  };
@@ -215,18 +279,22 @@ const injectEdgeLabelProxies = (g) => {
215
279
  if (edge.width && edge.height) {
216
280
  const v = g.node(e.v);
217
281
  const w = g.node(e.w);
218
- const label = { e, rank: (w.rank - v.rank) / 2 + v.rank };
219
- util.addDummyNode(g, "edge-proxy", label, "_ep");
282
+ const label = {
283
+ e,
284
+ rank: (w.rank - v.rank) / 2 + v.rank,
285
+ };
286
+ addDummyNode(g, "edge-proxy", label, "_ep");
220
287
  }
221
288
  });
222
289
  };
223
290
  const assignRankMinMax = (g) => {
224
291
  let maxRank = 0;
225
292
  g.nodes().forEach((v) => {
293
+ var _a, _b;
226
294
  const node = g.node(v);
227
295
  if (node.borderTop) {
228
- node.minRank = g.node(node.borderTop).rank;
229
- node.maxRank = g.node(node.borderBottom).rank;
296
+ node.minRank = (_a = g.node(node.borderTop)) === null || _a === void 0 ? void 0 : _a.rank;
297
+ node.maxRank = (_b = g.node(node.borderBottom)) === null || _b === void 0 ? void 0 : _b.rank;
230
298
  maxRank = Math.max(maxRank, node.maxRank || -Infinity);
231
299
  }
232
300
  });
@@ -242,9 +310,9 @@ const removeEdgeLabelProxies = (g) => {
242
310
  });
243
311
  };
244
312
  const translateGraph = (g) => {
245
- let minX = Number.POSITIVE_INFINITY;
313
+ let minX;
246
314
  let maxX = 0;
247
- let minY = Number.POSITIVE_INFINITY;
315
+ let minY;
248
316
  let maxY = 0;
249
317
  const graphLabel = g.graph();
250
318
  const marginX = graphLabel.marginx || 0;
@@ -257,18 +325,26 @@ const translateGraph = (g) => {
257
325
  const w = attrs.width;
258
326
  const h = attrs.height;
259
327
  if (!isNaN(x) && !isNaN(w)) {
328
+ if (minX === undefined) {
329
+ minX = x - w / 2;
330
+ }
260
331
  minX = Math.min(minX, x - w / 2);
261
332
  maxX = Math.max(maxX, x + w / 2);
262
333
  }
263
334
  if (!isNaN(y) && !isNaN(h)) {
335
+ if (minY === undefined) {
336
+ minY = y - h / 2;
337
+ }
264
338
  minY = Math.min(minY, y - h / 2);
265
339
  maxY = Math.max(maxY, y + h / 2);
266
340
  }
267
341
  };
268
- g.nodes().forEach((v) => { getExtremes(g.node(v)); });
342
+ g.nodes().forEach((v) => {
343
+ getExtremes(g.node(v));
344
+ });
269
345
  g.edges().forEach((e) => {
270
346
  const edge = g.edge(e);
271
- if (edge.hasOwnProperty("x")) {
347
+ if (edge === null || edge === void 0 ? void 0 : edge.hasOwnProperty("x")) {
272
348
  getExtremes(edge);
273
349
  }
274
350
  });
@@ -276,8 +352,10 @@ const translateGraph = (g) => {
276
352
  minY -= marginY;
277
353
  g.nodes().forEach((v) => {
278
354
  const node = g.node(v);
279
- node.x -= minX;
280
- node.y -= minY;
355
+ if (node) {
356
+ node.x -= minX;
357
+ node.y -= minY;
358
+ }
281
359
  });
282
360
  g.edges().forEach((e) => {
283
361
  var _a;
@@ -312,14 +390,14 @@ const assignNodeIntersects = (g) => {
312
390
  p1 = edge.points[0];
313
391
  p2 = edge.points[edge.points.length - 1];
314
392
  }
315
- edge.points.unshift(util.intersectRect(nodeV, p1));
316
- edge.points.push(util.intersectRect(nodeW, p2));
393
+ edge.points.unshift(intersectRect(nodeV, p1));
394
+ edge.points.push(intersectRect(nodeW, p2));
317
395
  });
318
396
  };
319
397
  const fixupEdgeLabelCoords = (g) => {
320
398
  g.edges().forEach((e) => {
321
399
  const edge = g.edge(e);
322
- if (edge.hasOwnProperty("x")) {
400
+ if (edge === null || edge === void 0 ? void 0 : edge.hasOwnProperty("x")) {
323
401
  if (edge.labelpos === "l" || edge.labelpos === "r") {
324
402
  edge.width -= edge.labeloffset;
325
403
  }
@@ -336,9 +414,10 @@ const fixupEdgeLabelCoords = (g) => {
336
414
  };
337
415
  const reversePointsForReversedEdges = (g) => {
338
416
  g.edges().forEach((e) => {
417
+ var _a;
339
418
  const edge = g.edge(e);
340
419
  if (edge.reversed) {
341
- edge.points.reverse();
420
+ (_a = edge.points) === null || _a === void 0 ? void 0 : _a.reverse();
342
421
  }
343
422
  });
344
423
  };
@@ -358,7 +437,8 @@ const removeBorderNodes = (g) => {
358
437
  }
359
438
  });
360
439
  g.nodes().forEach((v) => {
361
- if (g.node(v).dummy === "border") {
440
+ var _a;
441
+ if (((_a = g.node(v)) === null || _a === void 0 ? void 0 : _a.dummy) === "border") {
362
442
  g.removeNode(v);
363
443
  }
364
444
  });
@@ -371,12 +451,12 @@ const removeSelfEdges = (g) => {
371
451
  node.selfEdges = [];
372
452
  }
373
453
  node.selfEdges.push({ e, label: g.edge(e) });
374
- g.removeEdge(e);
454
+ g.removeEdgeObj(e);
375
455
  }
376
456
  });
377
457
  };
378
458
  const insertSelfEdges = (g) => {
379
- const layers = util.buildLayerMatrix(g);
459
+ const layers = buildLayerMatrix(g);
380
460
  layers === null || layers === void 0 ? void 0 : layers.forEach((layer) => {
381
461
  let orderShift = 0;
382
462
  layer === null || layer === void 0 ? void 0 : layer.forEach((v, i) => {
@@ -384,13 +464,13 @@ const insertSelfEdges = (g) => {
384
464
  const node = g.node(v);
385
465
  node.order = i + orderShift;
386
466
  (_a = node.selfEdges) === null || _a === void 0 ? void 0 : _a.forEach((selfEdge) => {
387
- util.addDummyNode(g, "selfedge", {
467
+ addDummyNode(g, "selfedge", {
388
468
  width: selfEdge.label.width,
389
469
  height: selfEdge.label.height,
390
470
  rank: node.rank,
391
- order: i + (++orderShift),
471
+ order: i + ++orderShift,
392
472
  e: selfEdge.e,
393
- label: selfEdge.label
473
+ label: selfEdge.label,
394
474
  }, "_se");
395
475
  });
396
476
  delete node.selfEdges;
@@ -406,14 +486,14 @@ const positionSelfEdges = (g) => {
406
486
  const y = selfNode.y;
407
487
  const dx = node.x - x;
408
488
  const dy = selfNode.height / 2;
409
- g.setEdge(node.e, node.label);
489
+ g.setEdgeObj(node.e, node.label);
410
490
  g.removeNode(v);
411
491
  node.label.points = [
412
- { x: x + 2 * dx / 3, y: y - dy },
413
- { x: x + 5 * dx / 6, y: y - dy },
492
+ { x: x + (2 * dx) / 3, y: y - dy },
493
+ { x: x + (5 * dx) / 6, y: y - dy },
414
494
  { y, x: x + dx },
415
- { x: x + 5 * dx / 6, y: y + dy },
416
- { x: x + 2 * dx / 3, y: y + dy }
495
+ { x: x + (5 * dx) / 6, y: y + dy },
496
+ { x: x + (2 * dx) / 3, y: y + dy },
417
497
  ];
418
498
  node.label.x = node.x;
419
499
  node.label.y = node.y;
@@ -432,8 +512,7 @@ const selectNumberAttrs = (obj, attrs) => {
432
512
  const canonicalize = (attrs = {}) => {
433
513
  const newAttrs = {};
434
514
  Object.keys(attrs).forEach((k) => {
435
- const v = attrs[k];
436
- newAttrs[k.toLowerCase()] = v;
515
+ newAttrs[k.toLowerCase()] = attrs[k];
437
516
  });
438
517
  return newAttrs;
439
518
  };