@deck.gl-community/graph-layers 9.1.1 → 9.2.0-beta.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 (354) hide show
  1. package/dist/_deprecated/old-constants.d.ts +107 -0
  2. package/dist/_deprecated/old-constants.d.ts.map +1 -0
  3. package/dist/_deprecated/old-constants.js +111 -0
  4. package/dist/_deprecated/old-constants.js.map +1 -0
  5. package/dist/core/cache.d.ts +0 -1
  6. package/dist/core/cache.js +0 -1
  7. package/dist/core/constants.d.ts +12 -100
  8. package/dist/core/constants.d.ts.map +1 -1
  9. package/dist/core/constants.js +3 -44
  10. package/dist/core/constants.js.map +1 -1
  11. package/dist/core/graph-engine.d.ts +63 -20
  12. package/dist/core/graph-engine.d.ts.map +1 -1
  13. package/dist/core/graph-engine.js +163 -72
  14. package/dist/core/graph-engine.js.map +1 -1
  15. package/dist/core/graph-layout.d.ts +63 -32
  16. package/dist/core/graph-layout.d.ts.map +1 -1
  17. package/dist/core/graph-layout.js +118 -36
  18. package/dist/core/graph-layout.js.map +1 -1
  19. package/dist/core/interaction-manager.d.ts +7 -5
  20. package/dist/core/interaction-manager.d.ts.map +1 -1
  21. package/dist/core/interaction-manager.js +64 -20
  22. package/dist/core/interaction-manager.js.map +1 -1
  23. package/dist/graph/arrow-graph.d.ts +69 -0
  24. package/dist/graph/arrow-graph.d.ts.map +1 -0
  25. package/dist/graph/arrow-graph.js +513 -0
  26. package/dist/graph/arrow-graph.js.map +1 -0
  27. package/dist/graph/classic-graph.d.ts +169 -0
  28. package/dist/graph/classic-graph.d.ts.map +1 -0
  29. package/dist/graph/classic-graph.js +390 -0
  30. package/dist/graph/classic-graph.js.map +1 -0
  31. package/dist/graph/edge.d.ts +12 -12
  32. package/dist/graph/edge.d.ts.map +1 -1
  33. package/dist/graph/edge.js +3 -6
  34. package/dist/graph/edge.js.map +1 -1
  35. package/dist/graph/functions/arrow-utils.d.ts +6 -0
  36. package/dist/graph/functions/arrow-utils.d.ts.map +1 -0
  37. package/dist/graph/functions/arrow-utils.js +67 -0
  38. package/dist/graph/functions/arrow-utils.js.map +1 -0
  39. package/dist/graph/functions/create-graph-from-data.d.ts +3 -0
  40. package/dist/graph/functions/create-graph-from-data.d.ts.map +1 -0
  41. package/dist/graph/functions/create-graph-from-data.js +12 -0
  42. package/dist/graph/functions/create-graph-from-data.js.map +1 -0
  43. package/dist/graph/graph-normalization.d.ts +10 -0
  44. package/dist/graph/graph-normalization.d.ts.map +1 -0
  45. package/dist/graph/graph-normalization.js +65 -0
  46. package/dist/graph/graph-normalization.js.map +1 -0
  47. package/dist/graph/graph.d.ts +62 -156
  48. package/dist/graph/graph.d.ts.map +1 -1
  49. package/dist/graph/graph.js +11 -301
  50. package/dist/graph/graph.js.map +1 -1
  51. package/dist/graph/node.d.ts +12 -13
  52. package/dist/graph/node.d.ts.map +1 -1
  53. package/dist/graph/node.js +5 -7
  54. package/dist/graph/node.js.map +1 -1
  55. package/dist/graph-data/arrow-graph-data-builder.d.ts +21 -0
  56. package/dist/graph-data/arrow-graph-data-builder.d.ts.map +1 -0
  57. package/dist/graph-data/arrow-graph-data-builder.js +105 -0
  58. package/dist/graph-data/arrow-graph-data-builder.js.map +1 -0
  59. package/dist/graph-data/graph-data-builder.d.ts +6 -0
  60. package/dist/graph-data/graph-data-builder.d.ts.map +1 -0
  61. package/dist/graph-data/graph-data-builder.js +1 -0
  62. package/dist/graph-data/graph-data-builder.js.map +1 -0
  63. package/dist/graph-data/graph-data.d.ts +40 -0
  64. package/dist/graph-data/graph-data.d.ts.map +1 -0
  65. package/dist/graph-data/graph-data.js +11 -0
  66. package/dist/graph-data/graph-data.js.map +1 -0
  67. package/dist/graph-data/plain-graph-data-builder.d.ts +20 -0
  68. package/dist/graph-data/plain-graph-data-builder.d.ts.map +1 -0
  69. package/dist/graph-data/plain-graph-data-builder.js +105 -0
  70. package/dist/graph-data/plain-graph-data-builder.js.map +1 -0
  71. package/dist/graph-style-schema.cdn.d.ts +2 -0
  72. package/dist/graph-style-schema.cdn.js +2 -0
  73. package/dist/graph-style-schema.json +12 -0
  74. package/dist/index.cjs +7851 -3250
  75. package/dist/index.cjs.map +4 -4
  76. package/dist/index.d.ts +35 -22
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +42 -25
  79. package/dist/index.js.map +1 -1
  80. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-fragment.glsl.d.ts +0 -1
  81. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-fragment.glsl.js +0 -1
  82. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex-tf.glsl.d.ts +0 -1
  83. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex-tf.glsl.js +0 -1
  84. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex.glsl.d.ts +0 -1
  85. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex.glsl.js +0 -1
  86. package/dist/layers/common-layers/flow-path-layer/flow-path-layer.d.ts +0 -1
  87. package/dist/layers/common-layers/flow-path-layer/flow-path-layer.d.ts.map +1 -1
  88. package/dist/layers/common-layers/flow-path-layer/flow-path-layer.js +1 -3
  89. package/dist/layers/common-layers/flow-path-layer/flow-path-layer.js.map +1 -1
  90. package/dist/layers/common-layers/grid-layer/grid-layer.d.ts +83 -0
  91. package/dist/layers/common-layers/grid-layer/grid-layer.d.ts.map +1 -0
  92. package/dist/layers/common-layers/grid-layer/grid-layer.js +133 -0
  93. package/dist/layers/common-layers/grid-layer/grid-layer.js.map +1 -0
  94. package/dist/layers/common-layers/marker-layer/atlas-data-url.d.ts +0 -1
  95. package/dist/layers/common-layers/marker-layer/atlas-data-url.js +0 -1
  96. package/dist/layers/common-layers/marker-layer/marker-layer.d.ts +0 -1
  97. package/dist/layers/common-layers/marker-layer/marker-layer.js +2 -3
  98. package/dist/layers/common-layers/marker-layer/marker-list.d.ts +2 -63
  99. package/dist/layers/common-layers/marker-layer/marker-list.d.ts.map +1 -1
  100. package/dist/layers/common-layers/marker-layer/marker-list.js +1 -65
  101. package/dist/layers/common-layers/marker-layer/marker-list.js.map +1 -1
  102. package/dist/layers/common-layers/marker-layer/marker-mapping.d.ts +0 -1
  103. package/dist/layers/common-layers/marker-layer/marker-mapping.js +0 -1
  104. package/dist/layers/common-layers/spline-layer/spline-layer.d.ts +0 -1
  105. package/dist/layers/common-layers/spline-layer/spline-layer.js +0 -1
  106. package/dist/layers/common-layers/zoomable-text-layer/zoomable-text-layer.d.ts +0 -1
  107. package/dist/layers/common-layers/zoomable-text-layer/zoomable-text-layer.js +0 -1
  108. package/dist/layers/edge-attachment-helper.d.ts +15 -0
  109. package/dist/layers/edge-attachment-helper.d.ts.map +1 -0
  110. package/dist/layers/edge-attachment-helper.js +229 -0
  111. package/dist/layers/edge-attachment-helper.js.map +1 -0
  112. package/dist/layers/edge-layer.d.ts +1 -5
  113. package/dist/layers/edge-layer.d.ts.map +1 -1
  114. package/dist/layers/edge-layer.js +9 -11
  115. package/dist/layers/edge-layer.js.map +1 -1
  116. package/dist/layers/edge-layers/arrow-2d-geometry.d.ts +4 -0
  117. package/dist/layers/edge-layers/arrow-2d-geometry.d.ts.map +1 -0
  118. package/dist/layers/edge-layers/arrow-2d-geometry.js +42 -0
  119. package/dist/layers/edge-layers/arrow-2d-geometry.js.map +1 -0
  120. package/dist/layers/edge-layers/curved-edge-layer.d.ts +1 -2
  121. package/dist/layers/edge-layers/curved-edge-layer.js +1 -2
  122. package/dist/layers/edge-layers/edge-arrow-layer.d.ts +21 -0
  123. package/dist/layers/edge-layers/edge-arrow-layer.d.ts.map +1 -0
  124. package/dist/layers/edge-layers/edge-arrow-layer.js +131 -0
  125. package/dist/layers/edge-layers/edge-arrow-layer.js.map +1 -0
  126. package/dist/layers/edge-layers/edge-label-layer.d.ts +1 -2
  127. package/dist/layers/edge-layers/edge-label-layer.js +1 -2
  128. package/dist/layers/edge-layers/flow-layer.d.ts +1 -2
  129. package/dist/layers/edge-layers/flow-layer.js +1 -2
  130. package/dist/layers/edge-layers/path-edge-layer.d.ts +0 -1
  131. package/dist/layers/edge-layers/path-edge-layer.js +0 -1
  132. package/dist/layers/edge-layers/straight-line-edge-layer.d.ts +0 -1
  133. package/dist/layers/edge-layers/straight-line-edge-layer.js +0 -1
  134. package/dist/layers/graph-layer.d.ts +85 -29
  135. package/dist/layers/graph-layer.d.ts.map +1 -1
  136. package/dist/layers/graph-layer.js +635 -94
  137. package/dist/layers/graph-layer.js.map +1 -1
  138. package/dist/layers/node-layers/circle-layer.d.ts +0 -1
  139. package/dist/layers/node-layers/circle-layer.js +0 -1
  140. package/dist/layers/node-layers/image-layer.d.ts +0 -1
  141. package/dist/layers/node-layers/image-layer.js +0 -1
  142. package/dist/layers/node-layers/label-layer.d.ts +1 -2
  143. package/dist/layers/node-layers/label-layer.js +1 -2
  144. package/dist/layers/node-layers/path-rounded-rectangle-layer.d.ts +0 -1
  145. package/dist/layers/node-layers/path-rounded-rectangle-layer.js +1 -2
  146. package/dist/layers/node-layers/rectangle-layer.d.ts +0 -1
  147. package/dist/layers/node-layers/rectangle-layer.js +0 -1
  148. package/dist/layers/node-layers/rounded-rectangle-layer-fragment.d.ts +0 -1
  149. package/dist/layers/node-layers/rounded-rectangle-layer-fragment.js +0 -1
  150. package/dist/layers/node-layers/rounded-rectangle-layer.d.ts +1 -2
  151. package/dist/layers/node-layers/rounded-rectangle-layer.js +2 -3
  152. package/dist/layers/node-layers/zoomable-marker-layer.d.ts +1 -2
  153. package/dist/layers/node-layers/zoomable-marker-layer.js +1 -2
  154. package/dist/layouts/d3-dag/collapsable-d3-dag-layout.d.ts +24 -0
  155. package/dist/layouts/d3-dag/collapsable-d3-dag-layout.d.ts.map +1 -0
  156. package/dist/layouts/d3-dag/collapsable-d3-dag-layout.js +251 -0
  157. package/dist/layouts/d3-dag/collapsable-d3-dag-layout.js.map +1 -0
  158. package/dist/layouts/d3-dag/d3-dag-layout.d.ts +102 -0
  159. package/dist/layouts/d3-dag/d3-dag-layout.d.ts.map +1 -0
  160. package/dist/layouts/d3-dag/d3-dag-layout.js +531 -0
  161. package/dist/layouts/d3-dag/d3-dag-layout.js.map +1 -0
  162. package/dist/layouts/d3-force/d3-force-layout.d.ts +23 -11
  163. package/dist/layouts/d3-force/d3-force-layout.d.ts.map +1 -1
  164. package/dist/layouts/d3-force/d3-force-layout.js +63 -29
  165. package/dist/layouts/d3-force/d3-force-layout.js.map +1 -1
  166. package/dist/layouts/d3-force/worker.d.ts +0 -1
  167. package/dist/layouts/d3-force/worker.js +0 -1
  168. package/dist/layouts/experimental/force-multi-graph-layout.d.ts +25 -20
  169. package/dist/layouts/experimental/force-multi-graph-layout.d.ts.map +1 -1
  170. package/dist/layouts/experimental/force-multi-graph-layout.js +60 -47
  171. package/dist/layouts/experimental/force-multi-graph-layout.js.map +1 -1
  172. package/dist/layouts/experimental/hive-plot-layout.d.ts +26 -20
  173. package/dist/layouts/experimental/hive-plot-layout.d.ts.map +1 -1
  174. package/dist/layouts/experimental/hive-plot-layout.js +43 -39
  175. package/dist/layouts/experimental/hive-plot-layout.js.map +1 -1
  176. package/dist/layouts/experimental/radial-layout.d.ts +20 -12
  177. package/dist/layouts/experimental/radial-layout.d.ts.map +1 -1
  178. package/dist/layouts/experimental/radial-layout.js +41 -19
  179. package/dist/layouts/experimental/radial-layout.js.map +1 -1
  180. package/dist/layouts/gpu-force/gpu-force-layout.d.ts +15 -12
  181. package/dist/layouts/gpu-force/gpu-force-layout.d.ts.map +1 -1
  182. package/dist/layouts/gpu-force/gpu-force-layout.js +71 -59
  183. package/dist/layouts/gpu-force/gpu-force-layout.js.map +1 -1
  184. package/dist/layouts/gpu-force/worker.d.ts +0 -1
  185. package/dist/layouts/gpu-force/worker.js +0 -1
  186. package/dist/layouts/simple-layout.d.ts +21 -31
  187. package/dist/layouts/simple-layout.d.ts.map +1 -1
  188. package/dist/layouts/simple-layout.js +33 -26
  189. package/dist/layouts/simple-layout.js.map +1 -1
  190. package/dist/loaders/dot-graph-loader.d.ts +25 -0
  191. package/dist/loaders/dot-graph-loader.d.ts.map +1 -0
  192. package/dist/loaders/dot-graph-loader.js +668 -0
  193. package/dist/loaders/dot-graph-loader.js.map +1 -0
  194. package/dist/loaders/json-graph-loader.d.ts +6 -0
  195. package/dist/loaders/json-graph-loader.d.ts.map +1 -0
  196. package/dist/loaders/json-graph-loader.js +31 -0
  197. package/dist/loaders/json-graph-loader.js.map +1 -0
  198. package/dist/loaders/parsers/edge-parsers.d.ts +2 -0
  199. package/dist/loaders/parsers/edge-parsers.d.ts.map +1 -0
  200. package/dist/loaders/{edge-parsers.js → parsers/edge-parsers.js} +2 -3
  201. package/dist/loaders/parsers/edge-parsers.js.map +1 -0
  202. package/dist/loaders/parsers/node-parsers.d.ts +2 -0
  203. package/dist/loaders/parsers/node-parsers.d.ts.map +1 -0
  204. package/dist/loaders/{node-parsers.js → parsers/node-parsers.js} +2 -3
  205. package/dist/loaders/parsers/node-parsers.js.map +1 -0
  206. package/dist/loaders/parsers/parse-json-graph.d.ts +29 -0
  207. package/dist/loaders/parsers/parse-json-graph.d.ts.map +1 -0
  208. package/dist/loaders/parsers/parse-json-graph.js +78 -0
  209. package/dist/loaders/parsers/parse-json-graph.js.map +1 -0
  210. package/dist/style/graph-layer-stylesheet.d.ts +34 -0
  211. package/dist/style/graph-layer-stylesheet.d.ts.map +1 -0
  212. package/dist/style/graph-layer-stylesheet.js +39 -0
  213. package/dist/style/graph-layer-stylesheet.js.map +1 -0
  214. package/dist/style/graph-style-accessor-map.d.ts +93 -0
  215. package/dist/style/graph-style-accessor-map.d.ts.map +1 -0
  216. package/dist/style/graph-style-accessor-map.js +93 -0
  217. package/dist/style/graph-style-accessor-map.js.map +1 -0
  218. package/dist/style/graph-style-engine.d.ts +12 -0
  219. package/dist/style/graph-style-engine.d.ts.map +1 -0
  220. package/dist/style/graph-style-engine.js +164 -0
  221. package/dist/style/graph-style-engine.js.map +1 -0
  222. package/dist/style/graph-stylesheet.schema.d.ts +310 -0
  223. package/dist/style/graph-stylesheet.schema.d.ts.map +1 -0
  224. package/dist/style/graph-stylesheet.schema.js +237 -0
  225. package/dist/style/graph-stylesheet.schema.js.map +1 -0
  226. package/dist/style/style-property.d.ts +2 -3
  227. package/dist/style/style-property.d.ts.map +1 -1
  228. package/dist/style/style-property.js +224 -48
  229. package/dist/style/style-property.js.map +1 -1
  230. package/dist/style/stylesheet-engine.d.ts +33 -0
  231. package/dist/style/stylesheet-engine.d.ts.map +1 -0
  232. package/dist/style/stylesheet-engine.js +121 -0
  233. package/dist/style/stylesheet-engine.js.map +1 -0
  234. package/dist/utils/collapsed-chains.d.ts +17 -0
  235. package/dist/utils/collapsed-chains.d.ts.map +1 -0
  236. package/dist/utils/collapsed-chains.js +192 -0
  237. package/dist/utils/collapsed-chains.js.map +1 -0
  238. package/dist/utils/layer-utils.d.ts +0 -1
  239. package/dist/utils/layer-utils.d.ts.map +1 -1
  240. package/dist/utils/layer-utils.js +0 -1
  241. package/dist/utils/log.d.ts +2 -1
  242. package/dist/utils/log.d.ts.map +1 -1
  243. package/dist/utils/log.js +12 -2
  244. package/dist/utils/log.js.map +1 -1
  245. package/dist/utils/node-boundary.d.ts +10 -0
  246. package/dist/utils/node-boundary.d.ts.map +1 -0
  247. package/dist/utils/node-boundary.js +130 -0
  248. package/dist/utils/node-boundary.js.map +1 -0
  249. package/dist/utils/polygon-calculations.d.ts +0 -1
  250. package/dist/utils/polygon-calculations.js +0 -1
  251. package/dist/utils/rank-grid.d.ts +30 -0
  252. package/dist/utils/rank-grid.d.ts.map +1 -0
  253. package/dist/utils/rank-grid.js +306 -0
  254. package/dist/utils/rank-grid.js.map +1 -0
  255. package/package.json +25 -13
  256. package/src/_deprecated/old-constants.ts +122 -0
  257. package/src/_disabled/arrow-graph-data.ts.disabled +18 -0
  258. package/src/_disabled/columnar-graph-data-builder.ts.disabled +250 -0
  259. package/src/_disabled/graph-runtime-layout.ts.disabled +29 -0
  260. package/src/core/constants.ts +21 -43
  261. package/src/core/graph-engine.ts +212 -80
  262. package/src/core/graph-layout.ts +175 -47
  263. package/src/core/interaction-manager.ts +93 -33
  264. package/src/graph/arrow-graph.ts +648 -0
  265. package/src/graph/classic-graph.ts +447 -0
  266. package/src/graph/edge.ts +13 -13
  267. package/src/graph/functions/arrow-utils.ts +72 -0
  268. package/src/graph/functions/convert-arrow-graph-to-classic-graph.ts.disabled +47 -0
  269. package/src/graph/functions/convert-plain-graph-to-arrow-graph.ts.disabled +119 -0
  270. package/src/graph/functions/create-graph-from-data.ts +16 -0
  271. package/src/graph/functions/create-plain-graph-from-data.ts.disabled +176 -0
  272. package/src/graph/graph-normalization.ts +87 -0
  273. package/src/graph/graph.ts +68 -339
  274. package/src/graph/node.ts +15 -15
  275. package/src/graph/tabular-graph.ts.disabled +761 -0
  276. package/src/graph-data/arrow-graph-data-builder.ts +165 -0
  277. package/src/graph-data/graph-data-builder.ts +7 -0
  278. package/src/graph-data/graph-data.ts +57 -0
  279. package/src/graph-data/plain-graph-data-builder.ts +132 -0
  280. package/src/index.ts +82 -17
  281. package/src/layers/common-layers/flow-path-layer/flow-path-layer.ts +1 -2
  282. package/src/layers/common-layers/grid-layer/grid-layer.ts +237 -0
  283. package/src/layers/common-layers/marker-layer/marker-list.ts +62 -64
  284. package/src/layers/edge-attachment-helper.ts +361 -0
  285. package/src/layers/edge-layer.ts +6 -7
  286. package/src/layers/edge-layers/arrow-2d-geometry.ts +51 -0
  287. package/src/layers/edge-layers/edge-arrow-layer.ts +171 -0
  288. package/src/layers/graph-layer.ts +928 -130
  289. package/src/layouts/d3-dag/collapsable-d3-dag-layout.ts +330 -0
  290. package/src/layouts/d3-dag/d3-dag-layout.ts +739 -0
  291. package/src/layouts/d3-force/d3-force-layout.ts +83 -39
  292. package/src/layouts/experimental/force-multi-graph-layout.ts +72 -57
  293. package/src/layouts/experimental/hive-plot-layout.ts +60 -49
  294. package/src/layouts/experimental/radial-layout.ts +57 -26
  295. package/src/layouts/gpu-force/gpu-force-layout.ts +86 -72
  296. package/src/layouts/simple-layout.ts +51 -52
  297. package/src/loaders/{create-graph.ts → deprecated/create-graph.ts.disabled} +6 -6
  298. package/src/loaders/deprecated/json-classic-graph-loader.ts.disabled +33 -0
  299. package/src/loaders/{simple-json-graph-loader.ts → deprecated/simple-json-graph-loader.ts.disabled} +4 -4
  300. package/src/loaders/{table-graph-loader.ts → deprecated/table-graph-loader.ts.disabled} +9 -9
  301. package/src/loaders/dot-graph-loader.ts +860 -0
  302. package/src/loaders/json-graph-loader.ts +48 -0
  303. package/src/loaders/parsers/create-graph-data.ts.disabled +45 -0
  304. package/src/loaders/{edge-parsers.ts → parsers/edge-parsers.ts} +3 -3
  305. package/src/loaders/{node-parsers.ts → parsers/node-parsers.ts} +3 -3
  306. package/src/loaders/parsers/parse-json-graph.ts +134 -0
  307. package/src/style/graph-layer-stylesheet.ts +99 -0
  308. package/src/style/graph-style-accessor-map.ts +103 -0
  309. package/src/style/graph-style-engine.ts +232 -0
  310. package/src/style/graph-stylesheet.schema.ts +344 -0
  311. package/src/style/style-property.ts +314 -51
  312. package/src/style/stylesheet-engine.ts +168 -0
  313. package/src/utils/collapsed-chains.ts +255 -0
  314. package/src/utils/log.ts +15 -1
  315. package/src/utils/node-boundary.ts +238 -0
  316. package/src/utils/rank-grid.ts +426 -0
  317. package/dist/loaders/create-graph.d.ts +0 -13
  318. package/dist/loaders/create-graph.d.ts.map +0 -1
  319. package/dist/loaders/create-graph.js +0 -39
  320. package/dist/loaders/create-graph.js.map +0 -1
  321. package/dist/loaders/edge-parsers.d.ts +0 -3
  322. package/dist/loaders/edge-parsers.d.ts.map +0 -1
  323. package/dist/loaders/edge-parsers.js.map +0 -1
  324. package/dist/loaders/json-loader.d.ts +0 -8
  325. package/dist/loaders/json-loader.d.ts.map +0 -1
  326. package/dist/loaders/json-loader.js +0 -17
  327. package/dist/loaders/json-loader.js.map +0 -1
  328. package/dist/loaders/node-parsers.d.ts +0 -3
  329. package/dist/loaders/node-parsers.d.ts.map +0 -1
  330. package/dist/loaders/node-parsers.js.map +0 -1
  331. package/dist/loaders/simple-json-graph-loader.d.ts +0 -12
  332. package/dist/loaders/simple-json-graph-loader.d.ts.map +0 -1
  333. package/dist/loaders/simple-json-graph-loader.js +0 -21
  334. package/dist/loaders/simple-json-graph-loader.js.map +0 -1
  335. package/dist/loaders/table-graph-loader.d.ts +0 -17
  336. package/dist/loaders/table-graph-loader.d.ts.map +0 -1
  337. package/dist/loaders/table-graph-loader.js +0 -92
  338. package/dist/loaders/table-graph-loader.js.map +0 -1
  339. package/dist/style/style-sheet.d.ts +0 -11
  340. package/dist/style/style-sheet.d.ts.map +0 -1
  341. package/dist/style/style-sheet.js +0 -253
  342. package/dist/style/style-sheet.js.map +0 -1
  343. package/dist/widgets/long-press-button.d.ts +0 -13
  344. package/dist/widgets/long-press-button.d.ts.map +0 -1
  345. package/dist/widgets/long-press-button.js +0 -32
  346. package/dist/widgets/long-press-button.js.map +0 -1
  347. package/dist/widgets/view-control-widget.d.ts +0 -78
  348. package/dist/widgets/view-control-widget.d.ts.map +0 -1
  349. package/dist/widgets/view-control-widget.js +0 -195
  350. package/dist/widgets/view-control-widget.js.map +0 -1
  351. package/src/loaders/json-loader.ts +0 -19
  352. package/src/style/style-sheet.ts +0 -277
  353. package/src/widgets/long-press-button.tsx +0 -50
  354. package/src/widgets/view-control-widget.tsx +0 -337
@@ -0,0 +1,255 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import type {GraphEngine} from '../core/graph-engine';
6
+ import type {NodeInterface} from '../graph/graph';
7
+
8
+ const OUTLINE_PADDING = 24;
9
+ const OUTLINE_CORNER_RADIUS = 16;
10
+ const OUTLINE_CORNER_SEGMENTS = 6;
11
+
12
+ export type ChainInteractionSource =
13
+ | 'node'
14
+ | 'collapsed-marker'
15
+ | 'expanded-marker'
16
+ | 'collapsed-outline'
17
+ | 'expanded-outline';
18
+
19
+ function resolveLayerId(layer: any): string {
20
+ if (!layer) {
21
+ return '';
22
+ }
23
+ if (typeof layer.id === 'string') {
24
+ return layer.id;
25
+ }
26
+ if (typeof layer.props?.id === 'string') {
27
+ return layer.props.id;
28
+ }
29
+ return '';
30
+ }
31
+
32
+ function classifyChainLayer(layer: any): ChainInteractionSource | null {
33
+ let current = layer ?? null;
34
+ while (current) {
35
+ const layerId = resolveLayerId(current);
36
+ if (layerId.includes('collapsed-chain-markers')) {
37
+ return 'collapsed-marker';
38
+ }
39
+ if (layerId.includes('expanded-chain-markers')) {
40
+ return 'expanded-marker';
41
+ }
42
+ if (layerId.includes('collapsed-chain-outlines')) {
43
+ return 'collapsed-outline';
44
+ }
45
+ if (layerId.includes('expanded-chain-outlines')) {
46
+ return 'expanded-outline';
47
+ }
48
+ current = current.parent ?? null;
49
+ }
50
+ return null;
51
+ }
52
+
53
+ export function resolveChainInteractionSource(info: any): ChainInteractionSource {
54
+ if (!info) {
55
+ return 'node';
56
+ }
57
+
58
+ const layersToCheck = [] as any[];
59
+ if (info.layer || info.sourceLayer) {
60
+ if (info.layer) {
61
+ layersToCheck.push(info.layer);
62
+ }
63
+ if (info.sourceLayer && info.sourceLayer !== info.layer) {
64
+ layersToCheck.push(info.sourceLayer);
65
+ }
66
+ } else {
67
+ layersToCheck.push(info);
68
+ }
69
+
70
+ for (const layer of layersToCheck) {
71
+ const classification = classifyChainLayer(layer);
72
+ if (classification) {
73
+ return classification;
74
+ }
75
+ }
76
+
77
+ return 'node';
78
+ }
79
+
80
+ function isChainRepresentative(node: NodeInterface): boolean {
81
+ const chainId = node.getPropertyValue('collapsedChainId');
82
+ const nodeIds = node.getPropertyValue('collapsedNodeIds');
83
+ const representativeId = node.getPropertyValue('collapsedChainRepresentativeId');
84
+
85
+ return (
86
+ Boolean(chainId) &&
87
+ Array.isArray(nodeIds) &&
88
+ nodeIds.length > 1 &&
89
+ representativeId === node.getId()
90
+ );
91
+ }
92
+
93
+ export function getRepresentativeNodes(engine: GraphEngine | null | undefined): NodeInterface[] {
94
+ if (!engine) {
95
+ return [];
96
+ }
97
+
98
+ return engine.getNodes().filter((node) => isChainRepresentative(node));
99
+ }
100
+
101
+ export type ChainOutlineGetter = (node: NodeInterface) => [number, number][] | null;
102
+
103
+ export function createChainOutlineGetter(engine: GraphEngine | null | undefined): ChainOutlineGetter {
104
+ if (!engine) {
105
+ return () => null;
106
+ }
107
+
108
+ const cache = new Map<string, [number, number][] | null>();
109
+
110
+ // eslint-disable-next-line max-statements, complexity
111
+ return (node: NodeInterface): [number, number][] | null => {
112
+ const chainId = node.getPropertyValue('collapsedChainId');
113
+ if (!chainId) {
114
+ return null;
115
+ }
116
+
117
+ const cacheKey = String(chainId);
118
+ if (cache.has(cacheKey)) {
119
+ return cache.get(cacheKey) ?? null;
120
+ }
121
+
122
+ const collapsedNodeIds = node.getPropertyValue('collapsedNodeIds');
123
+ if (!Array.isArray(collapsedNodeIds) || collapsedNodeIds.length === 0) {
124
+ cache.set(cacheKey, null);
125
+ return null;
126
+ }
127
+
128
+ let minX = Number.POSITIVE_INFINITY;
129
+ let maxX = Number.NEGATIVE_INFINITY;
130
+ let minY = Number.POSITIVE_INFINITY;
131
+ let maxY = Number.NEGATIVE_INFINITY;
132
+
133
+ for (const nodeId of collapsedNodeIds) {
134
+ const chainNode = engine.findNode(nodeId);
135
+ if (chainNode) {
136
+ const position = engine.getNodePosition(chainNode);
137
+ if (position) {
138
+ const [x, y] = position;
139
+ minX = Math.min(minX, x);
140
+ maxX = Math.max(maxX, x);
141
+ minY = Math.min(minY, y);
142
+ maxY = Math.max(maxY, y);
143
+ }
144
+ }
145
+ }
146
+
147
+ if (
148
+ !Number.isFinite(minX) ||
149
+ !Number.isFinite(maxX) ||
150
+ !Number.isFinite(minY) ||
151
+ !Number.isFinite(maxY)
152
+ ) {
153
+ cache.set(cacheKey, null);
154
+ return null;
155
+ }
156
+
157
+ const paddedMinX = minX - OUTLINE_PADDING;
158
+ const paddedMaxX = maxX + OUTLINE_PADDING;
159
+ const paddedMinY = minY - OUTLINE_PADDING;
160
+ const paddedMaxY = maxY + OUTLINE_PADDING;
161
+
162
+ const width = paddedMaxX - paddedMinX;
163
+ const height = paddedMaxY - paddedMinY;
164
+
165
+ if (width <= 0 || height <= 0) {
166
+ cache.set(cacheKey, null);
167
+ return null;
168
+ }
169
+
170
+ const radius = Math.min(OUTLINE_CORNER_RADIUS, width / 2, height / 2);
171
+
172
+ if (radius <= 0) {
173
+ const polygon: [number, number][] = [
174
+ [paddedMinX, paddedMinY],
175
+ [paddedMinX, paddedMaxY],
176
+ [paddedMaxX, paddedMaxY],
177
+ [paddedMaxX, paddedMinY],
178
+ [paddedMinX, paddedMinY]
179
+ ];
180
+ cache.set(cacheKey, polygon);
181
+ return polygon;
182
+ }
183
+
184
+ const left = paddedMinX;
185
+ const right = paddedMaxX;
186
+ const top = paddedMinY;
187
+ const bottom = paddedMaxY;
188
+
189
+ const polygon: [number, number][] = [];
190
+ const pushArc = (cx: number, cy: number, startAngle: number, endAngle: number) => {
191
+ const step = (endAngle - startAngle) / OUTLINE_CORNER_SEGMENTS;
192
+ for (let i = 1; i <= OUTLINE_CORNER_SEGMENTS; i++) {
193
+ const angle = startAngle + step * i;
194
+ polygon.push([cx + radius * Math.cos(angle), cy + radius * Math.sin(angle)]);
195
+ }
196
+ };
197
+
198
+ polygon.push([right - radius, top]);
199
+ pushArc(right - radius, top + radius, -Math.PI / 2, 0);
200
+ polygon.push([right, bottom - radius]);
201
+ pushArc(right - radius, bottom - radius, 0, Math.PI / 2);
202
+ polygon.push([left + radius, bottom]);
203
+ pushArc(left + radius, bottom - radius, Math.PI / 2, Math.PI);
204
+ polygon.push([left, top + radius]);
205
+ pushArc(left + radius, top + radius, Math.PI, (3 * Math.PI) / 2);
206
+ polygon.push(polygon[0]);
207
+
208
+ cache.set(cacheKey, polygon);
209
+ return polygon;
210
+ };
211
+ }
212
+
213
+ export interface CollapsedChainLayerData {
214
+ representativeNodes: NodeInterface[];
215
+ collapsedNodes: NodeInterface[];
216
+ collapsedOutlineNodes: NodeInterface[];
217
+ expandedNodes: NodeInterface[];
218
+ expandedOutlineNodes: NodeInterface[];
219
+ getChainOutlinePolygon: ChainOutlineGetter;
220
+ outlineUpdateTrigger: string;
221
+ }
222
+
223
+ export function buildCollapsedChainLayers(
224
+ engine: GraphEngine | null | undefined
225
+ ): CollapsedChainLayerData | null {
226
+ if (!engine) {
227
+ return null;
228
+ }
229
+
230
+ const representativeNodes = getRepresentativeNodes(engine);
231
+ if (representativeNodes.length === 0) {
232
+ return null;
233
+ }
234
+
235
+ const getChainOutlinePolygon = createChainOutlineGetter(engine);
236
+ const outlineUpdateTrigger = [engine.getLayoutLastUpdate(), engine.getLayoutState()].join();
237
+
238
+ const collapsedNodes = representativeNodes.filter((node) =>
239
+ Boolean(node.getPropertyValue('isCollapsedChain'))
240
+ );
241
+ const collapsedOutlineNodes = collapsedNodes.filter((node) => getChainOutlinePolygon(node));
242
+
243
+ const expandedNodes = representativeNodes.filter((node) => !node.getPropertyValue('isCollapsedChain'));
244
+ const expandedOutlineNodes = expandedNodes.filter((node) => getChainOutlinePolygon(node));
245
+
246
+ return {
247
+ representativeNodes,
248
+ collapsedNodes,
249
+ collapsedOutlineNodes,
250
+ expandedNodes,
251
+ expandedOutlineNodes,
252
+ getChainOutlinePolygon,
253
+ outlineUpdateTrigger
254
+ };
255
+ }
package/src/utils/log.ts CHANGED
@@ -6,4 +6,18 @@ import {Log, COLOR} from '@probe.gl/log';
6
6
 
7
7
  export const log = new Log({id: 'graph-layers'}).enable();
8
8
 
9
- log.log({color: COLOR.CYAN}, 'Initialize graph-layers logger.')();
9
+ log.log({color: COLOR.CYAN}, 'Initialize graph-layers logger.');
10
+
11
+ function invokeLogFunction(result: unknown) {
12
+ if (typeof result === 'function') {
13
+ result();
14
+ }
15
+ }
16
+
17
+ export function warn(message: string, ...args: unknown[]) {
18
+ invokeLogFunction(log.warn(message, ...args));
19
+ }
20
+
21
+ export function error(message: string, ...args: unknown[]) {
22
+ invokeLogFunction(log.error(message, ...args));
23
+ }
@@ -0,0 +1,238 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ export type GeometryNodeType =
6
+ | 'circle'
7
+ | 'rectangle'
8
+ | 'rounded-rectangle'
9
+ | 'path-rounded-rectangle'
10
+ | 'marker';
11
+
12
+ export type NodeGeometry = {
13
+ type?: GeometryNodeType;
14
+ center: [number, number];
15
+ radius?: number;
16
+ width?: number;
17
+ height?: number;
18
+ cornerRadius?: number;
19
+ };
20
+
21
+ const EPSILON = 1e-6;
22
+
23
+ function normalizeDirection(
24
+ center: [number, number],
25
+ target: [number, number]
26
+ ): {unit: [number, number]; distance: number} | null {
27
+ const dx = target[0] - center[0];
28
+ const dy = target[1] - center[1];
29
+ const length = Math.hypot(dx, dy);
30
+
31
+ if (length <= EPSILON) {
32
+ return null;
33
+ }
34
+
35
+ return {unit: [dx / length, dy / length], distance: length};
36
+ }
37
+
38
+ function projectFromCenter(
39
+ center: [number, number],
40
+ unit: [number, number],
41
+ distance: number
42
+ ): [number, number] {
43
+ return [center[0] + unit[0] * distance, center[1] + unit[1] * distance];
44
+ }
45
+
46
+ function projectToRectangle(
47
+ center: [number, number],
48
+ unit: [number, number],
49
+ halfWidth: number,
50
+ halfHeight: number
51
+ ): [number, number] {
52
+ const absUx = Math.abs(unit[0]);
53
+ const absUy = Math.abs(unit[1]);
54
+
55
+ let distance = Number.POSITIVE_INFINITY;
56
+ if (halfWidth > 0 && absUx > EPSILON) {
57
+ distance = Math.min(distance, halfWidth / absUx);
58
+ }
59
+ if (halfHeight > 0 && absUy > EPSILON) {
60
+ distance = Math.min(distance, halfHeight / absUy);
61
+ }
62
+
63
+ if (!Number.isFinite(distance)) {
64
+ return [...center] as [number, number];
65
+ }
66
+
67
+ return [center[0] + unit[0] * distance, center[1] + unit[1] * distance];
68
+ }
69
+
70
+ function resolveCornerRadius(
71
+ rawCornerRadius: number | undefined,
72
+ halfWidth: number,
73
+ halfHeight: number
74
+ ): number {
75
+ if (!Number.isFinite(rawCornerRadius) || rawCornerRadius <= 0) {
76
+ return 0;
77
+ }
78
+
79
+ let resolved = rawCornerRadius;
80
+ if (resolved <= 1) {
81
+ resolved *= Math.min(halfWidth, halfHeight);
82
+ }
83
+
84
+ return Math.min(resolved, halfWidth, halfHeight);
85
+ }
86
+
87
+ // eslint-disable-next-line max-params
88
+ function intersectsInnerFaces(
89
+ absX: number,
90
+ absY: number,
91
+ innerHalfWidth: number,
92
+ innerHalfHeight: number,
93
+ halfWidth: number,
94
+ halfHeight: number
95
+ ) {
96
+ const insideVerticalFace = absX <= innerHalfWidth + EPSILON && absY <= halfHeight + EPSILON;
97
+ const insideHorizontalFace = absY <= innerHalfHeight + EPSILON && absX <= halfWidth + EPSILON;
98
+ return insideVerticalFace || insideHorizontalFace;
99
+ }
100
+
101
+ // eslint-disable-next-line max-params
102
+ function projectToCornerArc(
103
+ geometry: NodeGeometry,
104
+ unit: [number, number],
105
+ innerHalfWidth: number,
106
+ innerHalfHeight: number,
107
+ cornerRadius: number,
108
+ rectanglePoint: [number, number]
109
+ ) {
110
+ const offsetX = rectanglePoint[0] - geometry.center[0];
111
+ const offsetY = rectanglePoint[1] - geometry.center[1];
112
+
113
+ const cornerCenter: [number, number] = [
114
+ geometry.center[0] + Math.sign(offsetX || unit[0]) * innerHalfWidth,
115
+ geometry.center[1] + Math.sign(offsetY || unit[1]) * innerHalfHeight
116
+ ];
117
+ const relativeCornerCenter: [number, number] = [
118
+ cornerCenter[0] - geometry.center[0],
119
+ cornerCenter[1] - geometry.center[1]
120
+ ];
121
+
122
+ const dot = unit[0] * relativeCornerCenter[0] + unit[1] * relativeCornerCenter[1];
123
+ const centerDistanceSq =
124
+ relativeCornerCenter[0] * relativeCornerCenter[0] +
125
+ relativeCornerCenter[1] * relativeCornerCenter[1];
126
+ const discriminant = dot * dot - (centerDistanceSq - cornerRadius * cornerRadius);
127
+
128
+ if (discriminant < 0) {
129
+ return rectanglePoint;
130
+ }
131
+
132
+ const distance = dot - Math.sqrt(Math.max(0, discriminant));
133
+ return projectFromCenter(geometry.center, unit, distance);
134
+ }
135
+
136
+ function computeRectangleIntersection(
137
+ geometry: NodeGeometry,
138
+ unit: [number, number]
139
+ ): [number, number] {
140
+ const halfWidth = (geometry.width ?? 0) / 2;
141
+ const halfHeight = (geometry.height ?? 0) / 2;
142
+ if (halfWidth <= EPSILON || halfHeight <= EPSILON) {
143
+ return [...geometry.center];
144
+ }
145
+ return projectToRectangle(geometry.center, unit, halfWidth, halfHeight);
146
+ }
147
+
148
+ // eslint-disable-next-line max-statements, complexity
149
+ function computeRoundedRectangleIntersection(
150
+ geometry: NodeGeometry,
151
+ unit: [number, number]
152
+ ): [number, number] {
153
+ const halfWidth = (geometry.width ?? 0) / 2;
154
+ const halfHeight = (geometry.height ?? 0) / 2;
155
+
156
+ if (halfWidth <= EPSILON || halfHeight <= EPSILON) {
157
+ const radius = geometry.radius ?? Math.min(halfWidth, halfHeight);
158
+ return projectFromCenter(geometry.center, unit, radius);
159
+ }
160
+
161
+ const cornerRadius = resolveCornerRadius(geometry.cornerRadius, halfWidth, halfHeight);
162
+
163
+ if (cornerRadius <= EPSILON) {
164
+ return projectToRectangle(geometry.center, unit, halfWidth, halfHeight);
165
+ }
166
+
167
+ const innerHalfWidth = Math.max(halfWidth - cornerRadius, 0);
168
+ const innerHalfHeight = Math.max(halfHeight - cornerRadius, 0);
169
+
170
+ if (innerHalfWidth <= EPSILON || innerHalfHeight <= EPSILON) {
171
+ const radius = Math.min(halfWidth, halfHeight);
172
+ return projectFromCenter(geometry.center, unit, radius);
173
+ }
174
+
175
+ const rectanglePoint = projectToRectangle(geometry.center, unit, halfWidth, halfHeight);
176
+ const absX = Math.abs(rectanglePoint[0] - geometry.center[0]);
177
+ const absY = Math.abs(rectanglePoint[1] - geometry.center[1]);
178
+
179
+ const touchesInnerFace =
180
+ absX <= innerHalfWidth + EPSILON || absY <= innerHalfHeight + EPSILON;
181
+
182
+ if (
183
+ touchesInnerFace &&
184
+ intersectsInnerFaces(absX, absY, innerHalfWidth, innerHalfHeight, halfWidth, halfHeight)
185
+ ) {
186
+ return rectanglePoint;
187
+ }
188
+
189
+ return projectToCornerArc(
190
+ geometry,
191
+ unit,
192
+ innerHalfWidth,
193
+ innerHalfHeight,
194
+ cornerRadius,
195
+ rectanglePoint
196
+ );
197
+ }
198
+
199
+ function computeCircleIntersection(
200
+ geometry: NodeGeometry,
201
+ unit: [number, number],
202
+ radius?: number
203
+ ) {
204
+ const effectiveRadius = radius ?? geometry.radius ?? 0;
205
+ return projectFromCenter(geometry.center, unit, Math.max(effectiveRadius, 0));
206
+ }
207
+
208
+ const BOUNDARY_COMPUTERS: Record<
209
+ GeometryNodeType,
210
+ (geometry: NodeGeometry, unit: [number, number]) => [number, number]
211
+ > = {
212
+ circle: (geometry, unit) => computeCircleIntersection(geometry, unit),
213
+ marker: (geometry, unit) => computeCircleIntersection(geometry, unit),
214
+ rectangle: (geometry, unit) => computeRectangleIntersection(geometry, unit),
215
+ 'rounded-rectangle': (geometry, unit) => computeRoundedRectangleIntersection(geometry, unit),
216
+ 'path-rounded-rectangle': (geometry, unit) => computeRoundedRectangleIntersection(geometry, unit)
217
+ };
218
+
219
+ export function getNodeBoundaryIntersection(
220
+ geometry: NodeGeometry,
221
+ targetCenter: [number, number]
222
+ ): [number, number] {
223
+ const direction = normalizeDirection(geometry.center, targetCenter);
224
+ if (!direction) {
225
+ return [...geometry.center];
226
+ }
227
+
228
+ const handler = geometry.type ? BOUNDARY_COMPUTERS[geometry.type] : undefined;
229
+ if (handler) {
230
+ return handler(geometry, direction.unit);
231
+ }
232
+
233
+ if (geometry.radius && geometry.radius > EPSILON) {
234
+ return projectFromCenter(geometry.center, direction.unit, geometry.radius);
235
+ }
236
+
237
+ return [...geometry.center];
238
+ }