@deck.gl-community/graph-layers 9.2.0-beta.2 → 9.2.0-beta.4

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 (313) hide show
  1. package/dist/_deprecated/old-constants.d.ts +1 -0
  2. package/dist/_deprecated/old-constants.js +1 -0
  3. package/dist/core/cache.d.ts +1 -0
  4. package/dist/core/cache.js +1 -0
  5. package/dist/core/constants.d.ts +2 -1
  6. package/dist/core/constants.js +1 -0
  7. package/dist/core/graph-engine.d.ts +64 -21
  8. package/dist/core/graph-engine.d.ts.map +1 -1
  9. package/dist/core/graph-engine.js +158 -77
  10. package/dist/core/graph-engine.js.map +1 -1
  11. package/dist/core/graph-layout.d.ts +23 -18
  12. package/dist/core/graph-layout.d.ts.map +1 -1
  13. package/dist/core/graph-layout.js +35 -19
  14. package/dist/core/graph-layout.js.map +1 -1
  15. package/dist/core/interaction-manager.d.ts +5 -4
  16. package/dist/core/interaction-manager.d.ts.map +1 -1
  17. package/dist/core/interaction-manager.js +10 -7
  18. package/dist/core/interaction-manager.js.map +1 -1
  19. package/dist/graph/arrow-graph.d.ts +70 -0
  20. package/dist/graph/arrow-graph.d.ts.map +1 -0
  21. package/dist/graph/arrow-graph.js +514 -0
  22. package/dist/graph/arrow-graph.js.map +1 -0
  23. package/dist/graph/classic-graph.d.ts +170 -0
  24. package/dist/graph/classic-graph.d.ts.map +1 -0
  25. package/dist/graph/classic-graph.js +391 -0
  26. package/dist/graph/classic-graph.js.map +1 -0
  27. package/dist/graph/edge.d.ts +8 -7
  28. package/dist/graph/edge.d.ts.map +1 -1
  29. package/dist/graph/edge.js +1 -0
  30. package/dist/graph/edge.js.map +1 -1
  31. package/dist/graph/functions/arrow-utils.d.ts +7 -0
  32. package/dist/graph/functions/arrow-utils.d.ts.map +1 -0
  33. package/dist/graph/functions/arrow-utils.js +68 -0
  34. package/dist/graph/functions/arrow-utils.js.map +1 -0
  35. package/dist/graph/functions/create-graph-from-data.d.ts +4 -0
  36. package/dist/graph/functions/create-graph-from-data.d.ts.map +1 -0
  37. package/dist/graph/functions/create-graph-from-data.js +13 -0
  38. package/dist/graph/functions/create-graph-from-data.js.map +1 -0
  39. package/dist/graph/graph-normalization.d.ts +11 -0
  40. package/dist/graph/graph-normalization.d.ts.map +1 -0
  41. package/dist/graph/graph-normalization.js +66 -0
  42. package/dist/graph/graph-normalization.js.map +1 -0
  43. package/dist/graph/graph.d.ts +63 -155
  44. package/dist/graph/graph.d.ts.map +1 -1
  45. package/dist/graph/graph.js +12 -300
  46. package/dist/graph/graph.js.map +1 -1
  47. package/dist/graph/node.d.ts +8 -7
  48. package/dist/graph/node.d.ts.map +1 -1
  49. package/dist/graph/node.js +3 -2
  50. package/dist/graph/node.js.map +1 -1
  51. package/dist/graph-data/arrow-graph-data-builder.d.ts +22 -0
  52. package/dist/graph-data/arrow-graph-data-builder.d.ts.map +1 -0
  53. package/dist/graph-data/arrow-graph-data-builder.js +106 -0
  54. package/dist/graph-data/arrow-graph-data-builder.js.map +1 -0
  55. package/dist/graph-data/graph-data-builder.d.ts +7 -0
  56. package/dist/graph-data/graph-data-builder.d.ts.map +1 -0
  57. package/dist/graph-data/graph-data-builder.js +2 -0
  58. package/dist/graph-data/graph-data-builder.js.map +1 -0
  59. package/dist/graph-data/graph-data.d.ts +41 -0
  60. package/dist/graph-data/graph-data.d.ts.map +1 -0
  61. package/dist/graph-data/graph-data.js +12 -0
  62. package/dist/graph-data/graph-data.js.map +1 -0
  63. package/dist/graph-data/plain-graph-data-builder.d.ts +21 -0
  64. package/dist/graph-data/plain-graph-data-builder.d.ts.map +1 -0
  65. package/dist/graph-data/plain-graph-data-builder.js +106 -0
  66. package/dist/graph-data/plain-graph-data-builder.js.map +1 -0
  67. package/dist/graph-style-schema.cdn.js +1 -1
  68. package/dist/graph-style-schema.json +1 -1
  69. package/dist/index.cjs +6905 -4576
  70. package/dist/index.cjs.map +4 -4
  71. package/dist/index.d.ts +36 -28
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +43 -29
  74. package/dist/index.js.map +1 -1
  75. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-fragment.glsl.d.ts +1 -0
  76. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-fragment.glsl.js +1 -0
  77. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex-tf.glsl.d.ts +1 -0
  78. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex-tf.glsl.js +1 -0
  79. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex.glsl.d.ts +1 -0
  80. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex.glsl.js +1 -0
  81. package/dist/layers/common-layers/flow-path-layer/flow-path-layer.d.ts +1 -0
  82. package/dist/layers/common-layers/flow-path-layer/flow-path-layer.d.ts.map +1 -1
  83. package/dist/layers/common-layers/flow-path-layer/flow-path-layer.js +2 -2
  84. package/dist/layers/common-layers/flow-path-layer/flow-path-layer.js.map +1 -1
  85. package/dist/layers/common-layers/grid-layer/grid-layer.d.ts +84 -0
  86. package/dist/layers/common-layers/grid-layer/grid-layer.d.ts.map +1 -0
  87. package/dist/layers/common-layers/grid-layer/grid-layer.js +134 -0
  88. package/dist/layers/common-layers/grid-layer/grid-layer.js.map +1 -0
  89. package/dist/layers/common-layers/marker-layer/atlas-data-url.d.ts +1 -0
  90. package/dist/layers/common-layers/marker-layer/atlas-data-url.js +1 -0
  91. package/dist/layers/common-layers/marker-layer/marker-layer.d.ts +1 -0
  92. package/dist/layers/common-layers/marker-layer/marker-layer.js +3 -2
  93. package/dist/layers/common-layers/marker-layer/marker-list.d.ts +1 -0
  94. package/dist/layers/common-layers/marker-layer/marker-list.js +1 -0
  95. package/dist/layers/common-layers/marker-layer/marker-mapping.d.ts +1 -0
  96. package/dist/layers/common-layers/marker-layer/marker-mapping.js +1 -0
  97. package/dist/layers/common-layers/spline-layer/spline-layer.d.ts +1 -0
  98. package/dist/layers/common-layers/spline-layer/spline-layer.js +1 -0
  99. package/dist/layers/common-layers/zoomable-text-layer/zoomable-text-layer.d.ts +1 -0
  100. package/dist/layers/common-layers/zoomable-text-layer/zoomable-text-layer.js +1 -0
  101. package/dist/layers/edge-attachment-helper.d.ts +4 -3
  102. package/dist/layers/edge-attachment-helper.d.ts.map +1 -1
  103. package/dist/layers/edge-attachment-helper.js +4 -4
  104. package/dist/layers/edge-attachment-helper.js.map +1 -1
  105. package/dist/layers/edge-layer.d.ts +1 -0
  106. package/dist/layers/edge-layer.js +4 -3
  107. package/dist/layers/edge-layers/arrow-2d-geometry.d.ts +1 -0
  108. package/dist/layers/edge-layers/arrow-2d-geometry.js +1 -0
  109. package/dist/layers/edge-layers/curved-edge-layer.d.ts +2 -1
  110. package/dist/layers/edge-layers/curved-edge-layer.js +2 -1
  111. package/dist/layers/edge-layers/edge-arrow-layer.d.ts +1 -0
  112. package/dist/layers/edge-layers/edge-arrow-layer.js +2 -1
  113. package/dist/layers/edge-layers/edge-label-layer.d.ts +2 -1
  114. package/dist/layers/edge-layers/edge-label-layer.js +2 -1
  115. package/dist/layers/edge-layers/flow-layer.d.ts +2 -1
  116. package/dist/layers/edge-layers/flow-layer.js +2 -1
  117. package/dist/layers/edge-layers/path-edge-layer.d.ts +1 -0
  118. package/dist/layers/edge-layers/path-edge-layer.js +1 -0
  119. package/dist/layers/edge-layers/straight-line-edge-layer.d.ts +1 -0
  120. package/dist/layers/edge-layers/straight-line-edge-layer.js +1 -0
  121. package/dist/layers/graph-layer.d.ts +75 -17
  122. package/dist/layers/graph-layer.d.ts.map +1 -1
  123. package/dist/layers/graph-layer.js +450 -64
  124. package/dist/layers/graph-layer.js.map +1 -1
  125. package/dist/layers/node-layers/circle-layer.d.ts +1 -0
  126. package/dist/layers/node-layers/circle-layer.js +1 -0
  127. package/dist/layers/node-layers/image-layer.d.ts +1 -0
  128. package/dist/layers/node-layers/image-layer.js +1 -0
  129. package/dist/layers/node-layers/label-layer.d.ts +2 -1
  130. package/dist/layers/node-layers/label-layer.js +2 -1
  131. package/dist/layers/node-layers/path-rounded-rectangle-layer.d.ts +1 -0
  132. package/dist/layers/node-layers/path-rounded-rectangle-layer.js +2 -1
  133. package/dist/layers/node-layers/rectangle-layer.d.ts +1 -0
  134. package/dist/layers/node-layers/rectangle-layer.js +1 -0
  135. package/dist/layers/node-layers/rounded-rectangle-layer-fragment.d.ts +1 -0
  136. package/dist/layers/node-layers/rounded-rectangle-layer-fragment.js +1 -0
  137. package/dist/layers/node-layers/rounded-rectangle-layer.d.ts +2 -1
  138. package/dist/layers/node-layers/rounded-rectangle-layer.js +3 -2
  139. package/dist/layers/node-layers/zoomable-marker-layer.d.ts +2 -1
  140. package/dist/layers/node-layers/zoomable-marker-layer.js +2 -1
  141. package/dist/layouts/d3-dag/collapsable-d3-dag-layout.d.ts +25 -0
  142. package/dist/layouts/d3-dag/collapsable-d3-dag-layout.d.ts.map +1 -0
  143. package/dist/layouts/d3-dag/collapsable-d3-dag-layout.js +252 -0
  144. package/dist/layouts/d3-dag/collapsable-d3-dag-layout.js.map +1 -0
  145. package/dist/layouts/d3-dag/d3-dag-layout.d.ts +48 -62
  146. package/dist/layouts/d3-dag/d3-dag-layout.d.ts.map +1 -1
  147. package/dist/layouts/d3-dag/d3-dag-layout.js +89 -273
  148. package/dist/layouts/d3-dag/d3-dag-layout.js.map +1 -1
  149. package/dist/layouts/d3-force/d3-force-layout.d.ts +22 -9
  150. package/dist/layouts/d3-force/d3-force-layout.d.ts.map +1 -1
  151. package/dist/layouts/d3-force/d3-force-layout.js +42 -22
  152. package/dist/layouts/d3-force/d3-force-layout.js.map +1 -1
  153. package/dist/layouts/d3-force/worker.d.ts +1 -0
  154. package/dist/layouts/d3-force/worker.js +1 -0
  155. package/dist/layouts/experimental/force-multi-graph-layout.d.ts +21 -16
  156. package/dist/layouts/experimental/force-multi-graph-layout.d.ts.map +1 -1
  157. package/dist/layouts/experimental/force-multi-graph-layout.js +49 -39
  158. package/dist/layouts/experimental/force-multi-graph-layout.js.map +1 -1
  159. package/dist/layouts/experimental/hive-plot-layout.d.ts +20 -16
  160. package/dist/layouts/experimental/hive-plot-layout.d.ts.map +1 -1
  161. package/dist/layouts/experimental/hive-plot-layout.js +35 -35
  162. package/dist/layouts/experimental/hive-plot-layout.js.map +1 -1
  163. package/dist/layouts/experimental/radial-layout.d.ts +14 -8
  164. package/dist/layouts/experimental/radial-layout.d.ts.map +1 -1
  165. package/dist/layouts/experimental/radial-layout.js +33 -15
  166. package/dist/layouts/experimental/radial-layout.js.map +1 -1
  167. package/dist/layouts/gpu-force/gpu-force-layout.d.ts +13 -9
  168. package/dist/layouts/gpu-force/gpu-force-layout.d.ts.map +1 -1
  169. package/dist/layouts/gpu-force/gpu-force-layout.js +61 -57
  170. package/dist/layouts/gpu-force/gpu-force-layout.js.map +1 -1
  171. package/dist/layouts/gpu-force/worker.d.ts +1 -0
  172. package/dist/layouts/gpu-force/worker.js +1 -0
  173. package/dist/layouts/simple-layout.d.ts +10 -26
  174. package/dist/layouts/simple-layout.d.ts.map +1 -1
  175. package/dist/layouts/simple-layout.js +15 -18
  176. package/dist/layouts/simple-layout.js.map +1 -1
  177. package/dist/loaders/dot-graph-loader.d.ts +26 -0
  178. package/dist/loaders/dot-graph-loader.d.ts.map +1 -0
  179. package/dist/loaders/dot-graph-loader.js +669 -0
  180. package/dist/loaders/dot-graph-loader.js.map +1 -0
  181. package/dist/loaders/json-graph-loader.d.ts +7 -0
  182. package/dist/loaders/json-graph-loader.d.ts.map +1 -0
  183. package/dist/loaders/json-graph-loader.js +32 -0
  184. package/dist/loaders/json-graph-loader.js.map +1 -0
  185. package/dist/loaders/parsers/edge-parsers.d.ts +3 -0
  186. package/dist/loaders/parsers/edge-parsers.d.ts.map +1 -0
  187. package/dist/loaders/{edge-parsers.js → parsers/edge-parsers.js} +2 -1
  188. package/dist/loaders/parsers/edge-parsers.js.map +1 -0
  189. package/dist/loaders/parsers/node-parsers.d.ts +3 -0
  190. package/dist/loaders/parsers/node-parsers.d.ts.map +1 -0
  191. package/dist/loaders/{node-parsers.js → parsers/node-parsers.js} +2 -1
  192. package/dist/loaders/parsers/node-parsers.js.map +1 -0
  193. package/dist/loaders/parsers/parse-json-graph.d.ts +30 -0
  194. package/dist/loaders/parsers/parse-json-graph.d.ts.map +1 -0
  195. package/dist/loaders/parsers/parse-json-graph.js +79 -0
  196. package/dist/loaders/parsers/parse-json-graph.js.map +1 -0
  197. package/dist/style/graph-layer-stylesheet.d.ts +3 -2
  198. package/dist/style/graph-layer-stylesheet.js +1 -0
  199. package/dist/style/graph-style-accessor-map.d.ts +1 -0
  200. package/dist/style/graph-style-accessor-map.js +1 -0
  201. package/dist/style/graph-style-engine.d.ts +6 -3
  202. package/dist/style/graph-style-engine.d.ts.map +1 -1
  203. package/dist/style/graph-style-engine.js +7 -5
  204. package/dist/style/graph-style-engine.js.map +1 -1
  205. package/dist/style/graph-stylesheet.schema.d.ts +1 -0
  206. package/dist/style/graph-stylesheet.schema.js +1 -0
  207. package/dist/style/style-property.d.ts +1 -0
  208. package/dist/style/style-property.js +2 -1
  209. package/dist/style/{style-engine.d.ts → stylesheet-engine.d.ts} +5 -4
  210. package/dist/style/stylesheet-engine.d.ts.map +1 -0
  211. package/dist/style/{style-engine.js → stylesheet-engine.js} +4 -3
  212. package/dist/style/stylesheet-engine.js.map +1 -0
  213. package/dist/utils/collapsed-chains.d.ts +10 -9
  214. package/dist/utils/collapsed-chains.d.ts.map +1 -1
  215. package/dist/utils/collapsed-chains.js +2 -6
  216. package/dist/utils/collapsed-chains.js.map +1 -1
  217. package/dist/utils/layer-utils.d.ts +1 -0
  218. package/dist/utils/layer-utils.js +1 -0
  219. package/dist/utils/log.d.ts +1 -0
  220. package/dist/utils/log.js +1 -0
  221. package/dist/utils/node-boundary.d.ts +1 -0
  222. package/dist/utils/node-boundary.js +1 -0
  223. package/dist/utils/polygon-calculations.d.ts +1 -0
  224. package/dist/utils/polygon-calculations.js +1 -0
  225. package/dist/utils/rank-grid.d.ts +31 -0
  226. package/dist/utils/rank-grid.d.ts.map +1 -0
  227. package/dist/utils/rank-grid.js +307 -0
  228. package/dist/utils/rank-grid.js.map +1 -0
  229. package/package.json +7 -11
  230. package/src/_disabled/arrow-graph-data.ts.disabled +18 -0
  231. package/src/_disabled/columnar-graph-data-builder.ts.disabled +250 -0
  232. package/src/_disabled/graph-runtime-layout.ts.disabled +29 -0
  233. package/src/core/graph-engine.ts +201 -84
  234. package/src/core/graph-layout.ts +52 -29
  235. package/src/core/interaction-manager.ts +20 -20
  236. package/src/graph/arrow-graph.ts +648 -0
  237. package/src/graph/classic-graph.ts +447 -0
  238. package/src/graph/edge.ts +7 -7
  239. package/src/graph/functions/arrow-utils.ts +72 -0
  240. package/src/graph/functions/convert-arrow-graph-to-classic-graph.ts.disabled +47 -0
  241. package/src/graph/functions/convert-plain-graph-to-arrow-graph.ts.disabled +119 -0
  242. package/src/graph/functions/create-graph-from-data.ts +16 -0
  243. package/src/graph/functions/create-plain-graph-from-data.ts.disabled +176 -0
  244. package/src/graph/graph-normalization.ts +87 -0
  245. package/src/graph/graph.ts +68 -339
  246. package/src/graph/node.ts +9 -9
  247. package/src/graph/tabular-graph.ts.disabled +761 -0
  248. package/src/graph-data/arrow-graph-data-builder.ts +165 -0
  249. package/src/graph-data/graph-data-builder.ts +7 -0
  250. package/src/graph-data/graph-data.ts +57 -0
  251. package/src/graph-data/plain-graph-data-builder.ts +132 -0
  252. package/src/index.ts +53 -13
  253. package/src/layers/common-layers/flow-path-layer/flow-path-layer.ts +1 -2
  254. package/src/layers/common-layers/grid-layer/grid-layer.ts +237 -0
  255. package/src/layers/edge-attachment-helper.ts +22 -16
  256. package/src/layers/graph-layer.ts +642 -62
  257. package/src/layouts/d3-dag/collapsable-d3-dag-layout.ts +330 -0
  258. package/src/layouts/d3-dag/d3-dag-layout.ts +166 -396
  259. package/src/layouts/d3-force/d3-force-layout.ts +52 -30
  260. package/src/layouts/experimental/force-multi-graph-layout.ts +55 -49
  261. package/src/layouts/experimental/hive-plot-layout.ts +41 -42
  262. package/src/layouts/experimental/radial-layout.ts +39 -20
  263. package/src/layouts/gpu-force/gpu-force-layout.ts +72 -70
  264. package/src/layouts/simple-layout.ts +20 -44
  265. package/src/loaders/{create-graph.ts → deprecated/create-graph.ts.disabled} +6 -6
  266. package/src/loaders/deprecated/json-classic-graph-loader.ts.disabled +33 -0
  267. package/src/loaders/{simple-json-graph-loader.ts → deprecated/simple-json-graph-loader.ts.disabled} +3 -3
  268. package/src/loaders/{table-graph-loader.ts → deprecated/table-graph-loader.ts.disabled} +8 -8
  269. package/src/loaders/dot-graph-loader.ts +860 -0
  270. package/src/loaders/json-graph-loader.ts +48 -0
  271. package/src/loaders/parsers/create-graph-data.ts.disabled +45 -0
  272. package/src/loaders/{edge-parsers.ts → parsers/edge-parsers.ts} +2 -2
  273. package/src/loaders/{node-parsers.ts → parsers/node-parsers.ts} +2 -2
  274. package/src/loaders/parsers/parse-json-graph.ts +134 -0
  275. package/src/style/graph-style-engine.ts +5 -2
  276. package/src/style/{style-engine.ts → stylesheet-engine.ts} +3 -3
  277. package/src/utils/collapsed-chains.ts +11 -17
  278. package/src/utils/rank-grid.ts +426 -0
  279. package/dist/loaders/create-graph.d.ts +0 -12
  280. package/dist/loaders/create-graph.d.ts.map +0 -1
  281. package/dist/loaders/create-graph.js +0 -38
  282. package/dist/loaders/create-graph.js.map +0 -1
  283. package/dist/loaders/edge-parsers.d.ts +0 -2
  284. package/dist/loaders/edge-parsers.d.ts.map +0 -1
  285. package/dist/loaders/edge-parsers.js.map +0 -1
  286. package/dist/loaders/json-loader.d.ts +0 -7
  287. package/dist/loaders/json-loader.d.ts.map +0 -1
  288. package/dist/loaders/json-loader.js +0 -16
  289. package/dist/loaders/json-loader.js.map +0 -1
  290. package/dist/loaders/node-parsers.d.ts +0 -2
  291. package/dist/loaders/node-parsers.d.ts.map +0 -1
  292. package/dist/loaders/node-parsers.js.map +0 -1
  293. package/dist/loaders/simple-json-graph-loader.d.ts +0 -11
  294. package/dist/loaders/simple-json-graph-loader.d.ts.map +0 -1
  295. package/dist/loaders/simple-json-graph-loader.js +0 -20
  296. package/dist/loaders/simple-json-graph-loader.js.map +0 -1
  297. package/dist/loaders/table-graph-loader.d.ts +0 -16
  298. package/dist/loaders/table-graph-loader.d.ts.map +0 -1
  299. package/dist/loaders/table-graph-loader.js +0 -91
  300. package/dist/loaders/table-graph-loader.js.map +0 -1
  301. package/dist/style/style-engine.d.ts.map +0 -1
  302. package/dist/style/style-engine.js.map +0 -1
  303. package/dist/widgets/long-press-button.d.ts +0 -12
  304. package/dist/widgets/long-press-button.d.ts.map +0 -1
  305. package/dist/widgets/long-press-button.js +0 -31
  306. package/dist/widgets/long-press-button.js.map +0 -1
  307. package/dist/widgets/view-control-widget.d.ts +0 -77
  308. package/dist/widgets/view-control-widget.d.ts.map +0 -1
  309. package/dist/widgets/view-control-widget.js +0 -197
  310. package/dist/widgets/view-control-widget.js.map +0 -1
  311. package/src/loaders/json-loader.ts +0 -19
  312. package/src/widgets/long-press-button.tsx +0 -50
  313. package/src/widgets/view-control-widget.tsx +0 -339
@@ -3,28 +3,32 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { COORDINATE_SYSTEM, CompositeLayer } from '@deck.gl/core';
5
5
  import { PolygonLayer } from '@deck.gl/layers';
6
- import { GraphEngine } from '../core/graph-engine';
7
- import { GraphStyleEngine } from '../style/graph-style-engine';
8
- import { mixedGetPosition } from '../utils/layer-utils';
9
- import { InteractionManager } from '../core/interaction-manager';
10
- import { buildCollapsedChainLayers } from '../utils/collapsed-chains';
11
- import { warn } from '../utils/log';
12
- import { DEFAULT_GRAPH_LAYER_STYLESHEET, normalizeGraphLayerStylesheet } from '../style/graph-layer-stylesheet';
6
+ import { ClassicGraph } from "../graph/classic-graph.js";
7
+ import { GraphLayout } from "../core/graph-layout.js";
8
+ import { GraphEngine } from "../core/graph-engine.js";
9
+ import { GraphStylesheetEngine } from "../style/graph-style-engine.js";
10
+ import { DEFAULT_GRAPH_LAYER_STYLESHEET, normalizeGraphLayerStylesheet } from "../style/graph-layer-stylesheet.js";
13
11
  // node layers
14
- import { CircleLayer } from './node-layers/circle-layer';
15
- import { ImageLayer } from './node-layers/image-layer';
16
- import { LabelLayer } from './node-layers/label-layer';
17
- import { RectangleLayer } from './node-layers/rectangle-layer';
18
- import { RoundedRectangleLayer } from './node-layers/rounded-rectangle-layer';
19
- import { PathBasedRoundedRectangleLayer } from './node-layers/path-rounded-rectangle-layer';
20
- import { ZoomableMarkerLayer } from './node-layers/zoomable-marker-layer';
12
+ import { CircleLayer } from "./node-layers/circle-layer.js";
13
+ import { ImageLayer } from "./node-layers/image-layer.js";
14
+ import { LabelLayer } from "./node-layers/label-layer.js";
15
+ import { RectangleLayer } from "./node-layers/rectangle-layer.js";
16
+ import { RoundedRectangleLayer } from "./node-layers/rounded-rectangle-layer.js";
17
+ import { PathBasedRoundedRectangleLayer } from "./node-layers/path-rounded-rectangle-layer.js";
18
+ import { ZoomableMarkerLayer } from "./node-layers/zoomable-marker-layer.js";
21
19
  // edge layers
22
- import { EdgeLayer } from './edge-layer';
23
- import { EdgeLabelLayer } from './edge-layers/edge-label-layer';
24
- import { FlowLayer } from './edge-layers/flow-layer';
25
- import { EdgeArrowLayer } from './edge-layers/edge-arrow-layer';
26
- import { EdgeAttachmentHelper } from './edge-attachment-helper';
27
- import { JSONLoader } from '../loaders/json-loader';
20
+ import { EdgeLayer } from "./edge-layer.js";
21
+ import { EdgeLabelLayer } from "./edge-layers/edge-label-layer.js";
22
+ import { FlowLayer } from "./edge-layers/flow-layer.js";
23
+ import { EdgeArrowLayer } from "./edge-layers/edge-arrow-layer.js";
24
+ import { EdgeAttachmentHelper } from "./edge-attachment-helper.js";
25
+ import { GridLayer } from "./common-layers/grid-layer/grid-layer.js";
26
+ import { JSONGraphLoader } from "../loaders/json-graph-loader.js";
27
+ import { mixedGetPosition } from "../utils/layer-utils.js";
28
+ import { InteractionManager } from "../core/interaction-manager.js";
29
+ import { buildCollapsedChainLayers } from "../utils/collapsed-chains.js";
30
+ import { mapRanksToYPositions, selectRankLines } from "../utils/rank-grid.js";
31
+ import { warn } from "../utils/log.js";
28
32
  const NODE_LAYER_MAP = {
29
33
  'rectangle': RectangleLayer,
30
34
  'rounded-rectangle': RoundedRectangleLayer,
@@ -47,8 +51,12 @@ const SHARED_LAYER_PROPS = {
47
51
  };
48
52
  const NODE_STYLE_DEPRECATION_MESSAGE = 'GraphLayer: `nodeStyle` has been replaced by `stylesheet.nodes` and will be removed in a future release.';
49
53
  const EDGE_STYLE_DEPRECATION_MESSAGE = 'GraphLayer: `edgeStyle` has been replaced by `stylesheet.edges` and will be removed in a future release.';
54
+ const GRAPH_PROP_DEPRECATION_MESSAGE = 'GraphLayer: `graph` prop is deprecated. Pass graphs via the `data` prop instead.';
55
+ const LAYOUT_REQUIRED_MESSAGE = 'GraphLayer: `layout` must be provided when supplying raw graph data.';
50
56
  let NODE_STYLE_DEPRECATION_WARNED = false;
51
57
  let EDGE_STYLE_DEPRECATION_WARNED = false;
58
+ let GRAPH_PROP_DEPRECATION_WARNED = false;
59
+ let LAYOUT_REQUIRED_WARNED = false;
52
60
  /** Composite layer that renders graph nodes, edges, and decorators. */
53
61
  export class GraphLayer extends CompositeLayer {
54
62
  static layerName = 'GraphLayer';
@@ -56,8 +64,9 @@ export class GraphLayer extends CompositeLayer {
56
64
  // Composite layer props
57
65
  // @ts-expect-error composite layer props
58
66
  pickable: true,
67
+ data: { type: 'object', value: null, async: true },
59
68
  // Graph props
60
- graphLoader: JSONLoader,
69
+ graphLoader: JSONGraphLoader,
61
70
  stylesheet: DEFAULT_GRAPH_LAYER_STYLESHEET,
62
71
  nodeStyle: undefined,
63
72
  nodeEvents: {
@@ -72,56 +81,74 @@ export class GraphLayer extends CompositeLayer {
72
81
  onClick: () => { },
73
82
  onHover: () => { }
74
83
  },
75
- enableDragging: false
84
+ enableDragging: false,
85
+ rankGrid: false,
86
+ resumeLayoutAfterDragging: true
76
87
  };
77
88
  // @ts-expect-error Some typescript confusion due to override of base class state
78
89
  state;
79
90
  _edgeAttachmentHelper = new EdgeAttachmentHelper();
91
+ _suppressNextDeckDataChange = false;
80
92
  forceUpdate = () => {
81
- if (this.context && this.context.layerManager) {
82
- this.setNeedsUpdate();
83
- this.setChangeFlags({ dataChanged: true }); // TODO
93
+ if (!this.state) {
94
+ return;
84
95
  }
96
+ this.setNeedsRedraw();
97
+ this.setState({ interactionVersion: this.state.interactionVersion + 1 });
85
98
  };
86
99
  constructor(props) {
87
100
  super(props);
88
101
  }
89
102
  initializeState() {
103
+ const interactionManager = new InteractionManager({
104
+ nodeEvents: this.props.nodeEvents,
105
+ edgeEvents: this.props.edgeEvents,
106
+ engine: undefined,
107
+ enableDragging: Boolean(this.props.enableDragging),
108
+ resumeLayoutAfterDragging: Boolean(this.props.resumeLayoutAfterDragging ?? GraphLayer.defaultProps.resumeLayoutAfterDragging)
109
+ }, () => this.forceUpdate());
90
110
  this.state = {
91
- interactionManager: new InteractionManager(this.props, () => this.forceUpdate())
111
+ interactionManager,
112
+ graphEngine: null,
113
+ layoutVersion: 0,
114
+ layoutState: undefined,
115
+ interactionVersion: 0
92
116
  };
93
- const engine = this.props.engine;
94
- this._setGraphEngine(engine);
117
+ this._syncInteractionManager(this.props, null);
118
+ this._refreshEngineFromProps(this.props, { force: true });
95
119
  }
96
120
  shouldUpdateState({ changeFlags }) {
97
- return changeFlags.dataChanged || changeFlags.propsChanged;
121
+ return changeFlags.dataChanged || changeFlags.propsChanged || changeFlags.stateChanged;
98
122
  }
99
123
  updateState({ props, oldProps, changeFlags }) {
100
- if (changeFlags.dataChanged &&
101
- props.data &&
102
- !(Array.isArray(props.data) && props.data.length === 0)) {
103
- // console.log(props.data);
104
- const graph = this.props.graphLoader({ json: props.data });
105
- const layout = this.props.layout;
106
- const graphEngine = new GraphEngine({ graph, layout });
107
- this._setGraphEngine(graphEngine);
108
- this.state.interactionManager.updateProps(props);
109
- this.forceUpdate();
110
- }
111
- else if (changeFlags.propsChanged && props.graph !== oldProps.graph) {
112
- const graphEngine = new GraphEngine({ graph: props.graph, layout: props.layout });
113
- this._setGraphEngine(graphEngine);
114
- this.state.interactionManager.updateProps(props);
115
- this.forceUpdate();
116
- }
117
- else if (changeFlags.propsChanged && props.engine !== oldProps.engine) {
118
- this._setGraphEngine(props.engine);
119
- this.state.interactionManager.updateProps(props);
120
- this.forceUpdate();
124
+ const propsDataChanged = props.data !== oldProps.data;
125
+ const deckDataChanged = changeFlags.dataChanged && !(this._suppressNextDeckDataChange && !propsDataChanged);
126
+ const dataChanged = deckDataChanged || propsDataChanged;
127
+ const layoutChanged = props.layout !== oldProps.layout;
128
+ const graphChanged = props.graph !== oldProps.graph;
129
+ const engineChanged = props.engine !== oldProps.engine;
130
+ const loaderChanged = props.graphLoader !== oldProps.graphLoader;
131
+ const engineRefreshed = this._refreshEngineFromProps(props, {
132
+ dataChanged,
133
+ layoutChanged,
134
+ graphChanged,
135
+ engineChanged,
136
+ loaderChanged
137
+ });
138
+ if (!engineRefreshed && changeFlags.propsChanged) {
139
+ const engine = this.state.graphEngine;
140
+ if (engine) {
141
+ this._applyGraphEngineCallbacks(engine);
142
+ }
143
+ }
144
+ if (!engineRefreshed && (changeFlags.propsChanged || changeFlags.stateChanged)) {
145
+ this._syncInteractionManager(props, this.state.graphEngine ?? null);
121
146
  }
147
+ this._suppressNextDeckDataChange = false;
122
148
  }
123
149
  finalize() {
124
150
  this._removeGraphEngine();
151
+ this._syncInteractionManager(this.props, null);
125
152
  }
126
153
  _getResolvedStylesheet() {
127
154
  const { stylesheet, nodeStyle, edgeStyle } = this.props;
@@ -141,9 +168,9 @@ export class GraphLayer extends CompositeLayer {
141
168
  edgeStyle: usingEdgeStyle ? edgeStyle : undefined
142
169
  });
143
170
  }
144
- _createStyleEngine(style, context) {
171
+ _createStylesheetEngine(style, context) {
145
172
  try {
146
- return new GraphStyleEngine(style, {
173
+ return new GraphStylesheetEngine(style, {
147
174
  stateUpdateTrigger: this.state.interactionManager.getLastInteraction()
148
175
  });
149
176
  }
@@ -153,25 +180,362 @@ export class GraphLayer extends CompositeLayer {
153
180
  return null;
154
181
  }
155
182
  }
183
+ _refreshEngineFromProps(props, { force = false, dataChanged = false, layoutChanged = false, graphChanged = false, engineChanged = false, loaderChanged = false }) {
184
+ const { engine: nextEngine, shouldReplace } = this._resolveEngineCandidate(props, {
185
+ force,
186
+ dataChanged,
187
+ layoutChanged,
188
+ graphChanged,
189
+ engineChanged,
190
+ loaderChanged
191
+ });
192
+ if (nextEngine === undefined) {
193
+ return false;
194
+ }
195
+ const currentEngine = this.state.graphEngine ?? null;
196
+ if (!shouldReplace && nextEngine === currentEngine) {
197
+ return false;
198
+ }
199
+ this._setGraphEngine(nextEngine);
200
+ this._syncInteractionManager(props, nextEngine);
201
+ return true;
202
+ }
203
+ _resolveEngineCandidate(props, flags) {
204
+ const dataResult = this._getEngineFromData(props, flags);
205
+ if (dataResult) {
206
+ return dataResult;
207
+ }
208
+ const engineResult = this._getEngineFromEngineProp(props, flags);
209
+ if (engineResult) {
210
+ return engineResult;
211
+ }
212
+ const graphResult = this._getEngineFromGraphProp(props, flags);
213
+ if (graphResult) {
214
+ return graphResult;
215
+ }
216
+ if (props.data === null || props.graph === null || props.engine === null || flags.force) {
217
+ return { engine: null, shouldReplace: true };
218
+ }
219
+ return { engine: undefined, shouldReplace: flags.force };
220
+ }
221
+ _getEngineFromData(props, { force, dataChanged, layoutChanged, loaderChanged }) {
222
+ const dataValue = props.data;
223
+ if (dataValue === null || typeof dataValue === 'undefined') {
224
+ return null;
225
+ }
226
+ const shouldRebuild = force || dataChanged || layoutChanged || loaderChanged;
227
+ if (!shouldRebuild) {
228
+ return { engine: undefined, shouldReplace: false };
229
+ }
230
+ const engine = this._deriveEngineFromData(dataValue, props);
231
+ if (typeof engine === 'undefined') {
232
+ return { engine: undefined, shouldReplace: false };
233
+ }
234
+ return {
235
+ engine,
236
+ shouldReplace: true
237
+ };
238
+ }
239
+ _getEngineFromEngineProp(props, { force, engineChanged }) {
240
+ if (typeof props.engine === 'undefined') {
241
+ return null;
242
+ }
243
+ if (props.engine === null) {
244
+ return { engine: null, shouldReplace: true };
245
+ }
246
+ return {
247
+ engine: props.engine,
248
+ shouldReplace: force || engineChanged
249
+ };
250
+ }
251
+ _getEngineFromGraphProp(props, { force, graphChanged, layoutChanged }) {
252
+ if (typeof props.graph === 'undefined') {
253
+ return null;
254
+ }
255
+ if (props.graph === null) {
256
+ return { engine: null, shouldReplace: true };
257
+ }
258
+ this._warnGraphProp();
259
+ return {
260
+ engine: this._buildEngineFromGraph(props.graph, props.layout),
261
+ shouldReplace: force || graphChanged || layoutChanged
262
+ };
263
+ }
264
+ _deriveEngineFromData(data, props) {
265
+ if (data === null || typeof data === 'undefined') {
266
+ return null;
267
+ }
268
+ if (typeof data?.then === 'function') {
269
+ return undefined;
270
+ }
271
+ if (data instanceof GraphEngine) {
272
+ return data;
273
+ }
274
+ const graphCandidate = this._coerceGraph(data);
275
+ if (graphCandidate) {
276
+ return this._buildEngineFromGraph(graphCandidate, props.layout);
277
+ }
278
+ if (typeof data === 'string') {
279
+ return undefined;
280
+ }
281
+ if (Array.isArray(data) || isPlainObject(data)) {
282
+ const loader = props.graphLoader ?? JSONGraphLoader;
283
+ const graph = loader({ json: data });
284
+ if (!graph) {
285
+ return null;
286
+ }
287
+ return this._buildEngineFromGraph(graph, props.layout);
288
+ }
289
+ return null;
290
+ }
291
+ _buildEngineFromGraph(graph, layout) {
292
+ if (!graph) {
293
+ return null;
294
+ }
295
+ if (!layout) {
296
+ this._warnLayoutRequired();
297
+ return null;
298
+ }
299
+ if (graph instanceof ClassicGraph && layout instanceof GraphLayout) {
300
+ return new GraphEngine({ graph, layout });
301
+ }
302
+ if (layout instanceof GraphLayout && !(graph instanceof ClassicGraph)) {
303
+ const legacyGraph = this._convertToClassicGraph(graph);
304
+ if (legacyGraph) {
305
+ return new GraphEngine({ graph: legacyGraph, layout });
306
+ }
307
+ this._warnLayoutRequired();
308
+ return null;
309
+ }
310
+ if (layout) {
311
+ return new GraphEngine({ graph, layout });
312
+ }
313
+ this._warnLayoutRequired();
314
+ return null;
315
+ }
316
+ _syncInteractionManager(props, engine) {
317
+ const resumeLayoutAfterDragging = props.resumeLayoutAfterDragging ?? GraphLayer.defaultProps.resumeLayoutAfterDragging;
318
+ this.state.interactionManager.updateProps({
319
+ nodeEvents: props.nodeEvents ?? GraphLayer.defaultProps.nodeEvents,
320
+ edgeEvents: props.edgeEvents ?? GraphLayer.defaultProps.edgeEvents,
321
+ engine: (engine ?? props.engine ?? null),
322
+ enableDragging: Boolean(props.enableDragging),
323
+ resumeLayoutAfterDragging: Boolean(resumeLayoutAfterDragging)
324
+ });
325
+ }
326
+ _warnGraphProp() {
327
+ if (!GRAPH_PROP_DEPRECATION_WARNED) {
328
+ warn(GRAPH_PROP_DEPRECATION_MESSAGE);
329
+ GRAPH_PROP_DEPRECATION_WARNED = true;
330
+ }
331
+ }
332
+ _warnLayoutRequired() {
333
+ if (!LAYOUT_REQUIRED_WARNED) {
334
+ warn(LAYOUT_REQUIRED_MESSAGE);
335
+ LAYOUT_REQUIRED_WARNED = true;
336
+ }
337
+ }
338
+ _isGraph(value) {
339
+ if (!value || typeof value !== 'object') {
340
+ return false;
341
+ }
342
+ const candidate = value;
343
+ return (typeof candidate.getNodes === 'function' && typeof candidate.getEdges === 'function');
344
+ }
345
+ _coerceGraph(value) {
346
+ if (value instanceof ClassicGraph) {
347
+ return value;
348
+ }
349
+ if (this._isGraph(value)) {
350
+ return value;
351
+ }
352
+ return null;
353
+ }
354
+ _convertToClassicGraph(graph) {
355
+ if (graph instanceof ClassicGraph) {
356
+ return graph;
357
+ }
358
+ const candidate = graph;
359
+ if (typeof candidate.toClassicGraph === 'function') {
360
+ try {
361
+ return candidate.toClassicGraph() ?? null;
362
+ }
363
+ catch (error) {
364
+ warn('GraphLayer: failed to convert graph to ClassicGraph for layout compatibility.', error);
365
+ }
366
+ }
367
+ return null;
368
+ }
369
+ _updateLayoutSnapshot(engine) {
370
+ const activeEngine = engine ?? this.state.graphEngine ?? null;
371
+ if (!activeEngine) {
372
+ if (this.state.layoutVersion !== 0 || typeof this.state.layoutState !== 'undefined') {
373
+ this._suppressNextDeckDataChange = true;
374
+ this.setState({ layoutVersion: 0, layoutState: undefined });
375
+ }
376
+ this.setNeedsRedraw();
377
+ return;
378
+ }
379
+ const nextVersion = activeEngine.getLayoutLastUpdate();
380
+ const nextState = activeEngine.getLayoutState();
381
+ if (this.state.layoutVersion !== nextVersion || this.state.layoutState !== nextState) {
382
+ this._suppressNextDeckDataChange = true;
383
+ this.setState({ layoutVersion: nextVersion, layoutState: nextState });
384
+ }
385
+ this.setNeedsRedraw();
386
+ }
387
+ _handleLayoutEvent = () => {
388
+ this._updateLayoutSnapshot();
389
+ };
156
390
  _setGraphEngine(graphEngine) {
157
391
  if (graphEngine === this.state.graphEngine) {
392
+ if (graphEngine) {
393
+ this._applyGraphEngineCallbacks(graphEngine);
394
+ }
395
+ this._updateLayoutSnapshot(graphEngine);
158
396
  return;
159
397
  }
160
398
  this._removeGraphEngine();
161
399
  if (graphEngine) {
162
400
  this.state.graphEngine = graphEngine;
163
- this.state.graphEngine.run();
164
- // added or removed a node, or in general something layout related changed
165
- this.state.graphEngine.addEventListener('onLayoutChange', this.forceUpdate);
401
+ this._applyGraphEngineCallbacks(graphEngine);
402
+ graphEngine.run();
403
+ this._updateLayoutSnapshot(graphEngine);
404
+ }
405
+ else {
406
+ this.state.graphEngine = null;
407
+ this._updateLayoutSnapshot(null);
166
408
  }
167
409
  }
168
410
  _removeGraphEngine() {
169
- if (this.state.graphEngine) {
170
- this.state.graphEngine.removeEventListener('onLayoutChange', this.forceUpdate);
171
- this.state.graphEngine.clear();
411
+ const engine = this.state.graphEngine;
412
+ if (engine) {
413
+ engine.setProps({
414
+ onLayoutStart: undefined,
415
+ onLayoutChange: undefined,
416
+ onLayoutDone: undefined,
417
+ onLayoutError: undefined
418
+ });
419
+ engine.clear();
172
420
  this.state.graphEngine = null;
421
+ this._updateLayoutSnapshot(null);
173
422
  }
174
423
  }
424
+ _applyGraphEngineCallbacks(engine) {
425
+ engine.setProps({
426
+ onLayoutStart: (detail) => {
427
+ this._handleLayoutEvent();
428
+ this.props.onLayoutStart?.(detail);
429
+ },
430
+ onLayoutChange: (detail) => {
431
+ this._handleLayoutEvent();
432
+ this.props.onLayoutChange?.(detail);
433
+ },
434
+ onLayoutDone: (detail) => {
435
+ this._handleLayoutEvent();
436
+ this.props.onLayoutDone?.(detail);
437
+ },
438
+ onLayoutError: (error) => {
439
+ this._handleLayoutEvent();
440
+ this.props.onLayoutError?.(error);
441
+ }
442
+ });
443
+ }
444
+ _createRankGridLayer() {
445
+ const engine = this.state.graphEngine;
446
+ if (!engine) {
447
+ return null;
448
+ }
449
+ const { enabled, config } = this._normalizeRankGridConfig(this.props.rankGrid);
450
+ if (!enabled) {
451
+ return null;
452
+ }
453
+ const bounds = this._resolveRankGridBounds(engine);
454
+ if (!bounds) {
455
+ return null;
456
+ }
457
+ const data = this._buildRankGridData(engine, config, bounds);
458
+ if (!data) {
459
+ return null;
460
+ }
461
+ const direction = config?.direction ?? 'horizontal';
462
+ const gridProps = config?.gridProps ?? {};
463
+ return new GridLayer({
464
+ id: `${this.props.id}-rank-grid`,
465
+ data,
466
+ direction,
467
+ xMin: bounds.xMin,
468
+ xMax: bounds.xMax,
469
+ yMin: bounds.yMin,
470
+ yMax: bounds.yMax,
471
+ pickable: false,
472
+ ...gridProps
473
+ });
474
+ }
475
+ _normalizeRankGridConfig(value) {
476
+ if (typeof value === 'boolean') {
477
+ return { enabled: value };
478
+ }
479
+ if (value && typeof value === 'object') {
480
+ return { enabled: value.enabled ?? true, config: value };
481
+ }
482
+ return { enabled: false };
483
+ }
484
+ _resolveRankGridBounds(engine) {
485
+ const bounds = engine.getLayoutBounds();
486
+ if (!bounds) {
487
+ return null;
488
+ }
489
+ const [[minXRaw, minYRaw], [maxXRaw, maxYRaw]] = bounds;
490
+ const values = [minXRaw, minYRaw, maxXRaw, maxYRaw];
491
+ if (!values.every((value) => typeof value === 'number' && Number.isFinite(value))) {
492
+ return null;
493
+ }
494
+ return {
495
+ xMin: Math.min(minXRaw, maxXRaw),
496
+ xMax: Math.max(minXRaw, maxXRaw),
497
+ yMin: Math.min(minYRaw, maxYRaw),
498
+ yMax: Math.max(minYRaw, maxYRaw)
499
+ };
500
+ }
501
+ _buildRankGridData(engine, config, bounds) {
502
+ const rankLabelPrefix = this._resolveRankFieldLabel(config?.rankAccessor);
503
+ // @ts-ignore iterator type
504
+ const rankPositions = mapRanksToYPositions(engine.getNodes(), engine.getNodePosition, {
505
+ rankAccessor: config?.rankAccessor,
506
+ labelAccessor: config?.labelAccessor,
507
+ yRange: { min: bounds.yMin, max: bounds.yMax }
508
+ });
509
+ if (rankPositions.length === 0) {
510
+ return null;
511
+ }
512
+ const selectedRanks = selectRankLines(rankPositions, {
513
+ yMin: bounds.yMin,
514
+ yMax: bounds.yMax,
515
+ maxCount: config?.maxLines ?? 8
516
+ });
517
+ if (selectedRanks.length === 0) {
518
+ return null;
519
+ }
520
+ return selectedRanks.map(({ rank, label, yPosition }) => ({
521
+ label: `${rankLabelPrefix} ${rank}`,
522
+ rank,
523
+ originalLabel: label === undefined ? undefined : label,
524
+ yPosition
525
+ }));
526
+ }
527
+ _resolveRankFieldLabel(rankAccessor) {
528
+ if (!rankAccessor) {
529
+ return 'srank';
530
+ }
531
+ if (typeof rankAccessor === 'string' && rankAccessor.length > 0) {
532
+ return rankAccessor;
533
+ }
534
+ if (typeof rankAccessor === 'function' && rankAccessor.name) {
535
+ return rankAccessor.name;
536
+ }
537
+ return 'rank';
538
+ }
175
539
  createNodeLayers() {
176
540
  const engine = this.state.graphEngine;
177
541
  const { nodes: nodeStyles } = this._getResolvedStylesheet();
@@ -187,7 +551,7 @@ export class GraphLayer extends CompositeLayer {
187
551
  warn(`GraphLayer: Invalid node type "${style.type}".`);
188
552
  return null;
189
553
  }
190
- const stylesheet = this._createStyleEngine(restStyle, `node stylesheet "${style.type}"`);
554
+ const stylesheet = this._createStylesheetEngine(restStyle, `node stylesheet "${style.type}"`);
191
555
  if (!stylesheet) {
192
556
  return null;
193
557
  }
@@ -230,7 +594,7 @@ export class GraphLayer extends CompositeLayer {
230
594
  .filter(Boolean)
231
595
  .flatMap((style, idx) => {
232
596
  const { decorators, data = (edges) => edges, visible = true, ...restEdgeStyle } = style;
233
- const stylesheet = this._createStyleEngine({
597
+ const stylesheet = this._createStylesheetEngine({
234
598
  type: 'edge',
235
599
  ...restEdgeStyle
236
600
  }, 'edge stylesheet');
@@ -252,13 +616,14 @@ export class GraphLayer extends CompositeLayer {
252
616
  }
253
617
  const decoratorLayers = decorators
254
618
  .filter(Boolean)
619
+ // @ts-ignore eslint-disable-next-line @typescript-eslint/no-unused-vars
255
620
  .map((decoratorStyle, idx2) => {
256
621
  const DecoratorLayer = EDGE_DECORATOR_LAYER_MAP[decoratorStyle.type];
257
622
  if (!DecoratorLayer) {
258
623
  warn(`GraphLayer: Invalid edge decorator type "${decoratorStyle.type}".`);
259
624
  return null;
260
625
  }
261
- const decoratorStylesheet = this._createStyleEngine(decoratorStyle, `edge decorator stylesheet "${decoratorStyle.type}"`);
626
+ const decoratorStylesheet = this._createStylesheetEngine(decoratorStyle, `edge decorator stylesheet "${decoratorStyle.type}"`);
262
627
  if (!decoratorStylesheet) {
263
628
  return null;
264
629
  }
@@ -292,7 +657,20 @@ export class GraphLayer extends CompositeLayer {
292
657
  this.state.interactionManager.onDragEnd(info, event);
293
658
  }
294
659
  renderLayers() {
295
- return [this.createEdgeLayers(), this.createNodeLayers()];
660
+ const layers = [];
661
+ const gridLayer = this._createRankGridLayer();
662
+ if (gridLayer) {
663
+ layers.push(gridLayer);
664
+ }
665
+ const edgeLayers = this.createEdgeLayers();
666
+ if (Array.isArray(edgeLayers) && edgeLayers.length > 0) {
667
+ layers.push(...edgeLayers);
668
+ }
669
+ const nodeLayers = this.createNodeLayers();
670
+ if (Array.isArray(nodeLayers) && nodeLayers.length > 0) {
671
+ layers.push(...nodeLayers);
672
+ }
673
+ return layers;
296
674
  }
297
675
  _createChainOverlayLayers(engine) {
298
676
  const chainData = buildCollapsedChainLayers(engine);
@@ -319,7 +697,7 @@ export class GraphLayer extends CompositeLayer {
319
697
  }
320
698
  }));
321
699
  }
322
- const collapsedMarkerStylesheet = this._createStyleEngine({
700
+ const collapsedMarkerStylesheet = this._createStylesheetEngine({
323
701
  type: 'marker',
324
702
  fill: [64, 96, 192, 255],
325
703
  size: 32,
@@ -362,7 +740,7 @@ export class GraphLayer extends CompositeLayer {
362
740
  }
363
741
  }));
364
742
  }
365
- const expandedMarkerStylesheet = this._createStyleEngine({
743
+ const expandedMarkerStylesheet = this._createStylesheetEngine({
366
744
  type: 'marker',
367
745
  fill: [64, 96, 192, 255],
368
746
  size: 32,
@@ -390,3 +768,11 @@ export class GraphLayer extends CompositeLayer {
390
768
  return layers;
391
769
  }
392
770
  }
771
+ function isPlainObject(value) {
772
+ if (!value || typeof value !== 'object') {
773
+ return false;
774
+ }
775
+ const prototype = Object.getPrototypeOf(value);
776
+ return prototype === Object.prototype || prototype === null;
777
+ }
778
+ //# sourceMappingURL=graph-layer.js.map