@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,6 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  import {GraphLayout, GraphLayoutProps} from '../../core/graph-layout';
6
+ import type {Graph, NodeInterface, EdgeInterface} from '../../graph/graph';
6
7
 
7
8
  export type GPUForceLayoutOptions = GraphLayoutProps & {
8
9
  alpha?: number;
@@ -18,6 +19,7 @@ export type GPUForceLayoutOptions = GraphLayoutProps & {
18
19
  */
19
20
  export class GPUForceLayout extends GraphLayout<GPUForceLayoutOptions> {
20
21
  static defaultProps: Required<GPUForceLayoutOptions> = {
22
+ ...GraphLayout.defaultProps,
21
23
  alpha: 0.3,
22
24
  resumeAlpha: 0.1,
23
25
  nBodyStrength: -900,
@@ -27,40 +29,30 @@ export class GPUForceLayout extends GraphLayout<GPUForceLayoutOptions> {
27
29
  };
28
30
 
29
31
  protected readonly _name: string = 'GPU';
30
- private _d3Graph: any;
31
- private _nodeMap: any;
32
- private _edgeMap: any;
33
- private _graph: any;
32
+ private _d3Graph: {nodes: any[]; edges: any[]};
33
+ private _nodeMap: Map<string | number, any>;
34
+ private _edgeMap: Map<string | number, any>;
35
+ private _graph: Graph | null;
34
36
  private _worker: Worker | null = null;
35
- private _callbacks: any;
36
37
 
37
38
  constructor(options: GPUForceLayoutOptions = {}) {
38
- const _options = {
39
- ...GPUForceLayout.defaultProps,
40
- ...options
41
- };
42
-
43
- super(_options);
39
+ super(options, GPUForceLayout.defaultProps);
44
40
 
45
41
  this._name = 'GPU';
46
- this._options = _options;
47
42
  // store graph and prepare internal data
48
43
  this._d3Graph = {nodes: [], edges: []};
49
- this._nodeMap = {};
50
- this._edgeMap = {};
51
- this._callbacks = {
52
- onLayoutChange: this._onLayoutChange,
53
- onLayoutDone: this._onLayoutDone
54
- };
44
+ this._nodeMap = new Map();
45
+ this._edgeMap = new Map();
46
+ this._graph = null;
55
47
  }
56
48
 
57
- initializeGraph(graph) {
49
+ initializeGraph(graph: Graph) {
58
50
  this._graph = graph;
59
- this._nodeMap = {};
60
- this._edgeMap = {};
51
+ this._nodeMap = new Map();
52
+ this._edgeMap = new Map();
61
53
  // nodes
62
- const d3Nodes = graph.getNodes().map((node) => {
63
- const id = node.id;
54
+ const d3Nodes = Array.from(graph.getNodes(), (node) => {
55
+ const id = node.getId();
64
56
  const locked = node.getPropertyValue('locked') || false;
65
57
  const x = node.getPropertyValue('x') || 0;
66
58
  const y = node.getPropertyValue('y') || 0;
@@ -74,17 +66,18 @@ export class GPUForceLayout extends GraphLayout<GPUForceLayoutOptions> {
74
66
  collisionRadius,
75
67
  locked
76
68
  };
77
- this._nodeMap[node.id] = d3Node;
69
+ this._nodeMap.set(id, d3Node);
78
70
  return d3Node;
79
71
  });
80
72
  // edges
81
- const d3Edges = graph.getEdges().map((edge) => {
73
+ const d3Edges = Array.from(graph.getEdges(), (edge) => {
74
+ const id = edge.getId();
82
75
  const d3Edge = {
83
- id: edge.id,
84
- source: this._nodeMap[edge.getSourceNodeId()],
85
- target: this._nodeMap[edge.getTargetNodeId()]
76
+ id,
77
+ source: this._nodeMap.get(edge.getSourceNodeId()),
78
+ target: this._nodeMap.get(edge.getTargetNodeId())
86
79
  };
87
- this._edgeMap[edge.id] = d3Edge;
80
+ this._edgeMap.set(id, d3Edge);
88
81
  return d3Edge;
89
82
  });
90
83
  this._d3Graph = {
@@ -109,7 +102,7 @@ export class GPUForceLayout extends GraphLayout<GPUForceLayoutOptions> {
109
102
 
110
103
  this._worker = new Worker(new URL('./worker.js', import.meta.url).href);
111
104
  const {alpha, nBodyStrength, nBodyDistanceMin, nBodyDistanceMax, getCollisionRadius} =
112
- this._options;
105
+ this.props;
113
106
  this._worker.postMessage({
114
107
  nodes: this._d3Graph.nodes,
115
108
  edges: this._d3Graph.edges,
@@ -152,18 +145,22 @@ export class GPUForceLayout extends GraphLayout<GPUForceLayoutOptions> {
152
145
  }
153
146
 
154
147
  // for steaming new data on the same graph
155
- updateGraph(graph) {
156
- if (this._graph.getGraphName() !== graph.getGraphName()) {
148
+ updateGraph(graph: Graph) {
149
+ const previousName = this._graph?.getGraphName?.();
150
+ const nextName = graph.getGraphName?.();
151
+ const isSameGraph =
152
+ (previousName && nextName && previousName === nextName) || this._graph === graph;
153
+ if (!isSameGraph) {
157
154
  // reset the maps
158
- this._nodeMap = {};
159
- this._edgeMap = {};
155
+ this._nodeMap = new Map();
156
+ this._edgeMap = new Map();
160
157
  }
161
158
  this._graph = graph;
162
159
  // update internal layout data
163
160
  // nodes
164
- const newNodeMap = {};
165
- const newD3Nodes = graph.getNodes().map((node) => {
166
- const id = node.id;
161
+ const newNodeMap = new Map<string | number, any>();
162
+ const newD3Nodes = Array.from(graph.getNodes(), (node) => {
163
+ const id = node.getId();
167
164
  const locked = node.getPropertyValue('locked') || false;
168
165
  const x = node.getPropertyValue('x') || 0;
169
166
  const y = node.getPropertyValue('y') || 0;
@@ -171,68 +168,69 @@ export class GPUForceLayout extends GraphLayout<GPUForceLayoutOptions> {
171
168
  const fy = locked ? y : null;
172
169
  const collisionRadius = node.getPropertyValue('collisionRadius') || 0;
173
170
 
174
- const oldD3Node = this._nodeMap[node.id];
171
+ const oldD3Node = this._nodeMap.get(id);
175
172
  const newD3Node = oldD3Node ? oldD3Node : {id, x, y, fx, fy, collisionRadius};
176
- newNodeMap[node.id] = newD3Node;
173
+ newNodeMap.set(id, newD3Node);
177
174
  return newD3Node;
178
175
  });
179
176
  this._nodeMap = newNodeMap;
180
177
  this._d3Graph.nodes = newD3Nodes;
181
178
  // edges
182
- const newEdgeMap = {};
183
- const newD3Edges = graph.getEdges().map((edge) => {
184
- const oldD3Edge = this._edgeMap[edge.id];
179
+ const newEdgeMap = new Map<string | number, any>();
180
+ const newD3Edges = Array.from(graph.getEdges(), (edge) => {
181
+ const id = edge.getId();
182
+ const oldD3Edge = this._edgeMap.get(id);
185
183
  const newD3Edge = oldD3Edge || {
186
- id: edge.id,
187
- source: newNodeMap[edge.getSourceNodeId()],
188
- target: newNodeMap[edge.getTargetNodeId()]
184
+ id,
185
+ source: newNodeMap.get(edge.getSourceNodeId()),
186
+ target: newNodeMap.get(edge.getTargetNodeId())
189
187
  };
190
- newEdgeMap[edge.id] = newD3Edge;
188
+ newEdgeMap.set(id, newD3Edge);
191
189
  return newD3Edge;
192
190
  });
193
191
  this._edgeMap = newEdgeMap;
194
192
  this._d3Graph.edges = newD3Edges;
195
193
  }
196
194
 
197
- updateD3Graph(graph) {
198
- const existingNodes = this._graph.getNodes();
195
+ updateD3Graph(graph: {nodes: any[]; edges: any[]}): void {
196
+ const existingNodes = this._graph ? Array.from(this._graph.getNodes()) : [];
199
197
  // update internal layout data
200
198
  // nodes
201
- const newNodeMap = {};
199
+ const newNodeMap = new Map<string | number, any>();
202
200
  const newD3Nodes = graph.nodes.map((node) => {
203
201
  // Update existing _graph with the new values
204
202
  const existingNode = existingNodes.find((n) => n.getId() === node.id);
205
- existingNode.setDataProperty('locked', node.locked);
206
- existingNode.setDataProperty('x', node.x);
207
- existingNode.setDataProperty('y', node.y);
208
- existingNode.setDataProperty('collisionRadius', node.collisionRadius);
203
+ existingNode?.setDataProperty('locked', node.locked);
204
+ existingNode?.setDataProperty('x', node.x);
205
+ existingNode?.setDataProperty('y', node.y);
206
+ existingNode?.setDataProperty('collisionRadius', node.collisionRadius);
209
207
 
210
- newNodeMap[node.id] = node;
208
+ newNodeMap.set(node.id, node);
211
209
  return node;
212
210
  });
213
211
  this._nodeMap = newNodeMap;
214
212
  this._d3Graph.nodes = newD3Nodes;
215
213
  // edges
216
- const newEdgeMap = {};
214
+ const newEdgeMap = new Map<string | number, any>();
217
215
  const newD3Edges = graph.edges.map((edge) => {
218
- newEdgeMap[edge.id] = edge;
216
+ newEdgeMap.set(edge.id, edge);
219
217
  return edge;
220
218
  });
221
- this._graph.triggerUpdate();
219
+ this._graph?.triggerUpdate?.();
222
220
  this._edgeMap = newEdgeMap;
223
221
  this._d3Graph.edges = newD3Edges;
224
222
  }
225
223
 
226
- getNodePosition = (node): [number, number] => {
227
- const d3Node = this._nodeMap[node.id];
224
+ getNodePosition = (node: NodeInterface): [number, number] => {
225
+ const d3Node = this._nodeMap.get(node.getId());
228
226
  if (d3Node) {
229
227
  return [d3Node.x, d3Node.y];
230
228
  }
231
229
  return [0, 0];
232
230
  };
233
231
 
234
- getEdgePosition = (edge) => {
235
- const d3Edge = this._edgeMap[edge.id];
232
+ getEdgePosition = (edge: EdgeInterface) => {
233
+ const d3Edge = this._edgeMap.get(edge.getId());
236
234
  const sourcePosition = d3Edge && d3Edge.source;
237
235
  const targetPosition = d3Edge && d3Edge.target;
238
236
  if (d3Edge && sourcePosition && targetPosition) {
@@ -251,26 +249,30 @@ export class GPUForceLayout extends GraphLayout<GPUForceLayoutOptions> {
251
249
  };
252
250
  };
253
251
 
254
- lockNodePosition = (node, x, y) => {
255
- const d3Node = this._nodeMap[node.id];
252
+ lockNodePosition = (node: NodeInterface, x: number, y: number) => {
253
+ const d3Node = this._nodeMap.get(node.getId());
254
+ if (!d3Node) {
255
+ return;
256
+ }
256
257
  d3Node.x = x;
257
258
  d3Node.y = y;
258
259
  d3Node.fx = x;
259
260
  d3Node.fy = y;
260
- this._callbacks.onLayoutChange();
261
- this._callbacks.onLayoutDone();
261
+ this._onLayoutChange();
262
+ this._onLayoutDone();
262
263
  };
263
264
 
264
- unlockNodePosition = (node) => {
265
- const d3Node = this._nodeMap[node.id];
265
+ unlockNodePosition = (node: NodeInterface) => {
266
+ const d3Node = this._nodeMap.get(node.getId());
267
+ if (!d3Node) {
268
+ return;
269
+ }
266
270
  d3Node.fx = null;
267
271
  d3Node.fy = null;
268
272
  };
269
273
 
270
274
  protected override _updateBounds(): void {
271
- const positions = Object.values(this._nodeMap ?? {}).map((node) =>
272
- this._normalizePosition(node)
273
- );
275
+ const positions = Array.from(this._nodeMap.values(), (node) => this._normalizePosition(node));
274
276
  this._bounds = this._calculateBounds(positions);
275
277
  }
276
278
  }
@@ -3,44 +3,28 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  import {GraphLayout, GraphLayoutProps} from '../core/graph-layout';
6
- import {Node} from '../graph/node';
7
- import {Edge} from '../graph/edge';
8
- import {Graph} from '../graph/graph';
6
+ import type {Graph, NodeInterface, EdgeInterface} from '../graph/graph';
9
7
 
10
8
  export type SimpleLayoutProps = GraphLayoutProps & {
11
- /** The accessor lets the application supply the position ([x, y]) of each node.
12
- * @example
13
- ```js
14
- <GraphGL
15
- {...otherProps}
16
- layout={
17
- new SimpleLayout({
18
- nodePositionAccessor: node => [
19
- node.getPropertyValue('x'),
20
- node.getPropertyValue('y'),
21
- ]
22
- })
23
- }
24
- />
25
- ```
26
- */
27
- nodePositionAccessor?: (node: Node) => [number, number];
9
+ /** The accessor lets the application supply the position ([x, y]) of each node. */
10
+ nodePositionAccessor?: (node: NodeInterface) => [number, number];
28
11
  };
29
12
 
30
13
  /** A basic layout where the application controls positions of each node */
31
14
  export class SimpleLayout extends GraphLayout<SimpleLayoutProps> {
32
15
  static defaultProps: Required<SimpleLayoutProps> = {
16
+ ...GraphLayout.defaultProps,
33
17
  nodePositionAccessor: (node) =>
34
18
  [node.getPropertyValue('x'), node.getPropertyValue('y')] as [number, number]
35
19
  };
36
20
 
37
21
  protected readonly _name = 'SimpleLayout';
38
22
  protected _graph: Graph | null = null;
39
- protected _nodeMap: Record<string, Node> = {};
40
- protected _nodePositionMap: Record<string, [number, number] | null> = {};
23
+ protected _nodeMap: Map<string | number, NodeInterface> = new Map();
24
+ protected _nodePositionMap: Map<string | number, [number, number] | null> = new Map();
41
25
 
42
26
  constructor(options: SimpleLayoutProps = {}) {
43
- super({...SimpleLayout.defaultProps, ...options});
27
+ super(options, SimpleLayout.defaultProps);
44
28
  }
45
29
 
46
30
  initializeGraph(graph: Graph): void {
@@ -63,36 +47,28 @@ export class SimpleLayout extends GraphLayout<SimpleLayoutProps> {
63
47
 
64
48
  updateGraph(graph: Graph): void {
65
49
  this._graph = graph;
66
- this._nodeMap = graph.getNodes().reduce((res, node) => {
67
- res[node.getId()] = node;
68
- return res;
69
- }, {});
70
- this._nodePositionMap = graph.getNodes().reduce<Record<string, [number, number] | null>>(
71
- (res, node) => {
72
- res[node.getId()] = this._normalizePosition(
73
- this._options.nodePositionAccessor(node)
74
- );
75
- return res;
76
- },
77
- {}
50
+ const nodes = Array.from(graph.getNodes());
51
+ this._nodeMap = new Map(nodes.map((node) => [node.getId(), node]));
52
+ this._nodePositionMap = new Map(
53
+ nodes.map((node) => [node.getId(), this._normalizePosition(this.props.nodePositionAccessor(node))])
78
54
  );
79
55
  }
80
56
 
81
57
  setNodePositionAccessor = (accessor) => {
82
- (this._options as any).nodePositionAccessor = accessor;
58
+ (this.props as any).nodePositionAccessor = accessor;
83
59
  };
84
60
 
85
- getNodePosition = (node: Node | null): [number, number] => {
61
+ getNodePosition = (node: NodeInterface | null): [number, number] => {
86
62
  if (!node) {
87
63
  return [0, 0] as [number, number];
88
64
  }
89
- const position = this._nodePositionMap[node.getId()];
65
+ const position = this._nodePositionMap.get(node.getId());
90
66
  return position ?? [0, 0] as [number, number];
91
67
  };
92
68
 
93
- getEdgePosition = (edge: Edge) => {
94
- const sourceNode = this._nodeMap[edge.getSourceNodeId()];
95
- const targetNode = this._nodeMap[edge.getTargetNodeId()];
69
+ getEdgePosition = (edge: EdgeInterface) => {
70
+ const sourceNode = this._nodeMap.get(edge.getSourceNodeId());
71
+ const targetNode = this._nodeMap.get(edge.getTargetNodeId());
96
72
  const sourcePos = sourceNode ? this.getNodePosition(sourceNode) : [0, 0];
97
73
  const targetPos = targetNode ? this.getNodePosition(targetNode) : [0, 0];
98
74
  return {
@@ -103,8 +79,8 @@ export class SimpleLayout extends GraphLayout<SimpleLayoutProps> {
103
79
  };
104
80
  };
105
81
 
106
- lockNodePosition = (node, x, y) => {
107
- this._nodePositionMap[node.getId()] = [x, y];
82
+ lockNodePosition = (node: NodeInterface, x: number, y: number) => {
83
+ this._nodePositionMap.set(node.getId(), [x, y]);
108
84
  this._onLayoutChange();
109
85
  this._onLayoutDone();
110
86
  };
@@ -117,7 +93,7 @@ export class SimpleLayout extends GraphLayout<SimpleLayoutProps> {
117
93
 
118
94
 
119
95
  protected override _updateBounds(): void {
120
- const positions = Object.values(this._nodePositionMap).map((position) =>
96
+ const positions = Array.from(this._nodePositionMap.values(), (position) =>
121
97
  this._normalizePosition(position)
122
98
  );
123
99
  this._bounds = this._calculateBounds(positions);
@@ -2,18 +2,18 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import {Edge} from '../graph/edge';
6
- import {Node} from '../graph/node';
7
- import {Graph} from '../graph/graph';
5
+ import {Edge} from '../../graph/edge';
6
+ import {Node} from '../../graph/node';
7
+ import {ClassicGraph} from '../../graph/classic-graph';
8
8
 
9
9
  /**
10
- * @deprecated Use `new Graph(name, nodes, edges)`
10
+ * @deprecated Use `new ClassicGraph(name, nodes, edges)`
11
11
  * Create a graph from a list of Nodes and edges
12
12
  */
13
- export function createGraph(props: {name; nodes; edges; nodeParser; edgeParser}) {
13
+ export function createGraph(props: {name; nodes; edges; nodeParser; edgeParser}): ClassicGraph {
14
14
  const {name, nodes, edges, nodeParser, edgeParser} = props;
15
15
  // create a new empty graph
16
- const graph = new Graph();
16
+ const graph = new ClassicGraph();
17
17
 
18
18
  const graphName = name || Date.now();
19
19
  graph.setGraphName(graphName);
@@ -0,0 +1,33 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {createGraph} from './create-graph';
6
+ import {basicNodeParser} from '../parsers/node-parsers';
7
+ import {basicEdgeParser} from '../parsers/edge-parsers';
8
+ import {error} from '../../utils/log';
9
+ import type {ClassicGraph} from '../../graph/classic-graph';
10
+
11
+ export type JSONClassicGraphLoaderOptions = {
12
+ json: {
13
+ name?: string;
14
+ nodes?: unknown[] | null;
15
+ edges?: unknown[] | null;
16
+ };
17
+ nodeParser?: typeof basicNodeParser;
18
+ edgeParser?: typeof basicEdgeParser;
19
+ };
20
+
21
+ export function JSONClassicGraphLoader({
22
+ json,
23
+ nodeParser = basicNodeParser,
24
+ edgeParser = basicEdgeParser
25
+ }: JSONClassicGraphLoaderOptions): ClassicGraph | null {
26
+ const {name = 'default', nodes, edges = []} = json ?? {};
27
+ if (!Array.isArray(nodes)) {
28
+ error('Invalid graph: nodes is missing.');
29
+ return null;
30
+ }
31
+
32
+ return createGraph({name, nodes, edges, nodeParser, edgeParser});
33
+ }
@@ -3,9 +3,9 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  import {createGraph} from './create-graph';
6
- import {error} from '../utils/log';
7
- import {basicNodeParser} from './node-parsers';
8
- import {basicEdgeParser} from './edge-parsers';
6
+ import {error} from '../../utils/log';
7
+ import {basicNodeParser} from '../parsers/node-parsers';
8
+ import {basicEdgeParser} from '../parsers/edge-parsers';
9
9
 
10
10
  /** @deprecated Use loadSimpleJSONGraph */
11
11
  export const JSONLoader = ({json, nodeParser, edgeParser}) =>
@@ -2,13 +2,13 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import type {NodeOptions} from '../graph/node';
6
- import type {EdgeOptions} from '../graph/edge';
7
- import {Edge} from '../graph/edge';
8
- import {Node} from '../graph/node';
9
- import {Graph} from '../graph/graph';
5
+ import type {NodeOptions} from '../../graph/node';
6
+ import type {EdgeOptions} from '../../graph/edge';
7
+ import {Edge} from '../../graph/edge';
8
+ import {Node} from '../../graph/node';
9
+ import {ClassicGraph} from '../../graph/classic-graph';
10
10
 
11
- import {error} from '../utils/log';
11
+ import {error} from '../../utils/log';
12
12
 
13
13
  export type ParseGraphOptions = {
14
14
  nodeIdField?: string;
@@ -42,7 +42,7 @@ const defaultParseGraphOptions = {
42
42
  export function tableGraphLoader(
43
43
  tables: {nodes: any[]; edges: any[]},
44
44
  options?: ParseGraphOptions
45
- ): Graph {
45
+ ): ClassicGraph {
46
46
  options = {...defaultParseGraphOptions, ...options};
47
47
 
48
48
  const {nodes, edges} = tables;
@@ -95,7 +95,7 @@ export function tableGraphLoader(
95
95
 
96
96
  // create a new empty graph
97
97
  const name = 'loaded';
98
- const graph = new Graph({name, nodes: glNodes, edges: glEdges});
98
+ const graph = new ClassicGraph({name, nodes: glNodes, edges: glEdges});
99
99
  return graph;
100
100
  }
101
101