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

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 (252) hide show
  1. package/LICENSE +1 -1
  2. package/dist/_deprecated/old-constants.d.ts +107 -0
  3. package/dist/_deprecated/old-constants.d.ts.map +1 -0
  4. package/dist/_deprecated/old-constants.js +111 -0
  5. package/dist/_deprecated/old-constants.js.map +1 -0
  6. package/dist/core/cache.d.ts +0 -1
  7. package/dist/core/cache.js +0 -1
  8. package/dist/core/constants.d.ts +12 -100
  9. package/dist/core/constants.d.ts.map +1 -1
  10. package/dist/core/constants.js +3 -44
  11. package/dist/core/constants.js.map +1 -1
  12. package/dist/core/graph-engine.d.ts +12 -11
  13. package/dist/core/graph-engine.d.ts.map +1 -1
  14. package/dist/core/graph-engine.js +22 -11
  15. package/dist/core/graph-engine.js.map +1 -1
  16. package/dist/core/graph-layout.d.ts +48 -21
  17. package/dist/core/graph-layout.d.ts.map +1 -1
  18. package/dist/core/graph-layout.js +91 -24
  19. package/dist/core/graph-layout.js.map +1 -1
  20. package/dist/core/interaction-manager.d.ts +6 -4
  21. package/dist/core/interaction-manager.d.ts.map +1 -1
  22. package/dist/core/interaction-manager.js +59 -17
  23. package/dist/core/interaction-manager.js.map +1 -1
  24. package/dist/graph/edge.d.ts +7 -7
  25. package/dist/graph/edge.d.ts.map +1 -1
  26. package/dist/graph/edge.js +3 -6
  27. package/dist/graph/edge.js.map +1 -1
  28. package/dist/graph/graph.d.ts +2 -3
  29. package/dist/graph/graph.js +8 -9
  30. package/dist/graph/graph.js.map +1 -1
  31. package/dist/graph/node.d.ts +7 -8
  32. package/dist/graph/node.d.ts.map +1 -1
  33. package/dist/graph/node.js +3 -5
  34. package/dist/graph/node.js.map +1 -1
  35. package/dist/graph-style-schema.cdn.d.ts +2 -0
  36. package/dist/graph-style-schema.cdn.js +2 -0
  37. package/dist/graph-style-schema.json +12 -0
  38. package/dist/index.cjs +2821 -549
  39. package/dist/index.cjs.map +4 -4
  40. package/dist/index.d.ts +28 -22
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +25 -21
  43. package/dist/index.js.map +1 -1
  44. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-fragment.glsl.d.ts +0 -1
  45. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-fragment.glsl.js +0 -1
  46. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex-tf.glsl.d.ts +0 -1
  47. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex-tf.glsl.js +0 -1
  48. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex.glsl.d.ts +0 -1
  49. package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex.glsl.js +0 -1
  50. package/dist/layers/common-layers/flow-path-layer/flow-path-layer.d.ts +0 -1
  51. package/dist/layers/common-layers/flow-path-layer/flow-path-layer.js +0 -1
  52. package/dist/layers/common-layers/marker-layer/atlas-data-url.d.ts +0 -1
  53. package/dist/layers/common-layers/marker-layer/atlas-data-url.js +0 -1
  54. package/dist/layers/common-layers/marker-layer/marker-layer.d.ts +0 -1
  55. package/dist/layers/common-layers/marker-layer/marker-layer.js +2 -3
  56. package/dist/layers/common-layers/marker-layer/marker-list.d.ts +2 -63
  57. package/dist/layers/common-layers/marker-layer/marker-list.d.ts.map +1 -1
  58. package/dist/layers/common-layers/marker-layer/marker-list.js +1 -65
  59. package/dist/layers/common-layers/marker-layer/marker-list.js.map +1 -1
  60. package/dist/layers/common-layers/marker-layer/marker-mapping.d.ts +0 -1
  61. package/dist/layers/common-layers/marker-layer/marker-mapping.js +0 -1
  62. package/dist/layers/common-layers/spline-layer/spline-layer.d.ts +0 -1
  63. package/dist/layers/common-layers/spline-layer/spline-layer.js +0 -1
  64. package/dist/layers/common-layers/zoomable-text-layer/zoomable-text-layer.d.ts +0 -1
  65. package/dist/layers/common-layers/zoomable-text-layer/zoomable-text-layer.js +0 -1
  66. package/dist/layers/edge-attachment-helper.d.ts +15 -0
  67. package/dist/layers/edge-attachment-helper.d.ts.map +1 -0
  68. package/dist/layers/edge-attachment-helper.js +230 -0
  69. package/dist/layers/edge-attachment-helper.js.map +1 -0
  70. package/dist/layers/edge-layer.d.ts +1 -5
  71. package/dist/layers/edge-layer.d.ts.map +1 -1
  72. package/dist/layers/edge-layer.js +9 -11
  73. package/dist/layers/edge-layer.js.map +1 -1
  74. package/dist/layers/edge-layers/arrow-2d-geometry.d.ts +4 -0
  75. package/dist/layers/edge-layers/arrow-2d-geometry.d.ts.map +1 -0
  76. package/dist/layers/edge-layers/arrow-2d-geometry.js +42 -0
  77. package/dist/layers/edge-layers/arrow-2d-geometry.js.map +1 -0
  78. package/dist/layers/edge-layers/curved-edge-layer.d.ts +1 -2
  79. package/dist/layers/edge-layers/curved-edge-layer.js +1 -2
  80. package/dist/layers/edge-layers/edge-arrow-layer.d.ts +21 -0
  81. package/dist/layers/edge-layers/edge-arrow-layer.d.ts.map +1 -0
  82. package/dist/layers/edge-layers/edge-arrow-layer.js +131 -0
  83. package/dist/layers/edge-layers/edge-arrow-layer.js.map +1 -0
  84. package/dist/layers/edge-layers/edge-label-layer.d.ts +1 -2
  85. package/dist/layers/edge-layers/edge-label-layer.js +1 -2
  86. package/dist/layers/edge-layers/flow-layer.d.ts +1 -2
  87. package/dist/layers/edge-layers/flow-layer.js +1 -2
  88. package/dist/layers/edge-layers/path-edge-layer.d.ts +0 -1
  89. package/dist/layers/edge-layers/path-edge-layer.js +0 -1
  90. package/dist/layers/edge-layers/straight-line-edge-layer.d.ts +0 -1
  91. package/dist/layers/edge-layers/straight-line-edge-layer.js +0 -1
  92. package/dist/layers/graph-layer.d.ts +22 -23
  93. package/dist/layers/graph-layer.d.ts.map +1 -1
  94. package/dist/layers/graph-layer.js +218 -62
  95. package/dist/layers/graph-layer.js.map +1 -1
  96. package/dist/layers/node-layers/circle-layer.d.ts +0 -1
  97. package/dist/layers/node-layers/circle-layer.js +0 -1
  98. package/dist/layers/node-layers/image-layer.d.ts +0 -1
  99. package/dist/layers/node-layers/image-layer.js +0 -1
  100. package/dist/layers/node-layers/label-layer.d.ts +1 -2
  101. package/dist/layers/node-layers/label-layer.js +1 -2
  102. package/dist/layers/node-layers/path-rounded-rectangle-layer.d.ts +0 -1
  103. package/dist/layers/node-layers/path-rounded-rectangle-layer.js +1 -2
  104. package/dist/layers/node-layers/rectangle-layer.d.ts +0 -1
  105. package/dist/layers/node-layers/rectangle-layer.js +0 -1
  106. package/dist/layers/node-layers/rounded-rectangle-layer-fragment.d.ts +0 -1
  107. package/dist/layers/node-layers/rounded-rectangle-layer-fragment.js +0 -1
  108. package/dist/layers/node-layers/rounded-rectangle-layer.d.ts +1 -2
  109. package/dist/layers/node-layers/rounded-rectangle-layer.js +2 -3
  110. package/dist/layers/node-layers/zoomable-marker-layer.d.ts +1 -2
  111. package/dist/layers/node-layers/zoomable-marker-layer.js +1 -2
  112. package/dist/layouts/d3-dag/d3-dag-layout.d.ts +117 -0
  113. package/dist/layouts/d3-dag/d3-dag-layout.d.ts.map +1 -0
  114. package/dist/layouts/d3-dag/d3-dag-layout.js +716 -0
  115. package/dist/layouts/d3-dag/d3-dag-layout.js.map +1 -0
  116. package/dist/layouts/d3-force/d3-force-layout.d.ts +4 -4
  117. package/dist/layouts/d3-force/d3-force-layout.d.ts.map +1 -1
  118. package/dist/layouts/d3-force/d3-force-layout.js +25 -10
  119. package/dist/layouts/d3-force/d3-force-layout.js.map +1 -1
  120. package/dist/layouts/d3-force/worker.d.ts +0 -1
  121. package/dist/layouts/d3-force/worker.js +0 -1
  122. package/dist/layouts/experimental/force-multi-graph-layout.d.ts +9 -8
  123. package/dist/layouts/experimental/force-multi-graph-layout.d.ts.map +1 -1
  124. package/dist/layouts/experimental/force-multi-graph-layout.js +15 -11
  125. package/dist/layouts/experimental/force-multi-graph-layout.js.map +1 -1
  126. package/dist/layouts/experimental/hive-plot-layout.d.ts +11 -8
  127. package/dist/layouts/experimental/hive-plot-layout.d.ts.map +1 -1
  128. package/dist/layouts/experimental/hive-plot-layout.js +12 -7
  129. package/dist/layouts/experimental/hive-plot-layout.js.map +1 -1
  130. package/dist/layouts/experimental/radial-layout.d.ts +10 -7
  131. package/dist/layouts/experimental/radial-layout.d.ts.map +1 -1
  132. package/dist/layouts/experimental/radial-layout.js +11 -6
  133. package/dist/layouts/experimental/radial-layout.js.map +1 -1
  134. package/dist/layouts/gpu-force/gpu-force-layout.d.ts +4 -4
  135. package/dist/layouts/gpu-force/gpu-force-layout.d.ts.map +1 -1
  136. package/dist/layouts/gpu-force/gpu-force-layout.js +18 -9
  137. package/dist/layouts/gpu-force/gpu-force-layout.js.map +1 -1
  138. package/dist/layouts/gpu-force/worker.d.ts +0 -1
  139. package/dist/layouts/gpu-force/worker.js +0 -1
  140. package/dist/layouts/simple-layout.d.ts +19 -12
  141. package/dist/layouts/simple-layout.d.ts.map +1 -1
  142. package/dist/layouts/simple-layout.js +26 -15
  143. package/dist/layouts/simple-layout.js.map +1 -1
  144. package/dist/loaders/create-graph.d.ts +1 -2
  145. package/dist/loaders/create-graph.js +3 -4
  146. package/dist/loaders/edge-parsers.d.ts +1 -2
  147. package/dist/loaders/edge-parsers.js +2 -3
  148. package/dist/loaders/edge-parsers.js.map +1 -1
  149. package/dist/loaders/json-loader.d.ts +2 -3
  150. package/dist/loaders/json-loader.d.ts.map +1 -1
  151. package/dist/loaders/json-loader.js +5 -6
  152. package/dist/loaders/json-loader.js.map +1 -1
  153. package/dist/loaders/node-parsers.d.ts +1 -2
  154. package/dist/loaders/node-parsers.js +2 -3
  155. package/dist/loaders/node-parsers.js.map +1 -1
  156. package/dist/loaders/simple-json-graph-loader.d.ts +0 -1
  157. package/dist/loaders/simple-json-graph-loader.d.ts.map +1 -1
  158. package/dist/loaders/simple-json-graph-loader.js +5 -6
  159. package/dist/loaders/simple-json-graph-loader.js.map +1 -1
  160. package/dist/loaders/table-graph-loader.d.ts +3 -4
  161. package/dist/loaders/table-graph-loader.js +5 -6
  162. package/dist/loaders/table-graph-loader.js.map +1 -1
  163. package/dist/style/graph-layer-stylesheet.d.ts +34 -0
  164. package/dist/style/graph-layer-stylesheet.d.ts.map +1 -0
  165. package/dist/style/graph-layer-stylesheet.js +39 -0
  166. package/dist/style/graph-layer-stylesheet.js.map +1 -0
  167. package/dist/style/graph-style-accessor-map.d.ts +93 -0
  168. package/dist/style/graph-style-accessor-map.d.ts.map +1 -0
  169. package/dist/style/graph-style-accessor-map.js +93 -0
  170. package/dist/style/graph-style-accessor-map.js.map +1 -0
  171. package/dist/style/graph-style-engine.d.ts +10 -0
  172. package/dist/style/graph-style-engine.d.ts.map +1 -0
  173. package/dist/style/graph-style-engine.js +163 -0
  174. package/dist/style/graph-style-engine.js.map +1 -0
  175. package/dist/style/graph-stylesheet.schema.d.ts +310 -0
  176. package/dist/style/graph-stylesheet.schema.d.ts.map +1 -0
  177. package/dist/style/graph-stylesheet.schema.js +237 -0
  178. package/dist/style/graph-stylesheet.schema.js.map +1 -0
  179. package/dist/style/style-engine.d.ts +33 -0
  180. package/dist/style/style-engine.d.ts.map +1 -0
  181. package/dist/style/style-engine.js +121 -0
  182. package/dist/style/style-engine.js.map +1 -0
  183. package/dist/style/style-property.d.ts +2 -3
  184. package/dist/style/style-property.d.ts.map +1 -1
  185. package/dist/style/style-property.js +224 -48
  186. package/dist/style/style-property.js.map +1 -1
  187. package/dist/utils/collapsed-chains.d.ts +17 -0
  188. package/dist/utils/collapsed-chains.d.ts.map +1 -0
  189. package/dist/utils/collapsed-chains.js +197 -0
  190. package/dist/utils/collapsed-chains.js.map +1 -0
  191. package/dist/utils/layer-utils.d.ts +0 -1
  192. package/dist/utils/layer-utils.d.ts.map +1 -1
  193. package/dist/utils/layer-utils.js +0 -1
  194. package/dist/utils/log.d.ts +2 -1
  195. package/dist/utils/log.d.ts.map +1 -1
  196. package/dist/utils/log.js +12 -2
  197. package/dist/utils/log.js.map +1 -1
  198. package/dist/utils/node-boundary.d.ts +10 -0
  199. package/dist/utils/node-boundary.d.ts.map +1 -0
  200. package/dist/utils/node-boundary.js +130 -0
  201. package/dist/utils/node-boundary.js.map +1 -0
  202. package/dist/utils/polygon-calculations.d.ts +0 -1
  203. package/dist/utils/polygon-calculations.js +0 -1
  204. package/dist/widgets/long-press-button.d.ts +0 -1
  205. package/dist/widgets/long-press-button.js +0 -1
  206. package/dist/widgets/view-control-widget.d.ts +4 -5
  207. package/dist/widgets/view-control-widget.d.ts.map +1 -1
  208. package/dist/widgets/view-control-widget.js +10 -8
  209. package/dist/widgets/view-control-widget.js.map +1 -1
  210. package/package.json +23 -7
  211. package/src/_deprecated/old-constants.ts +122 -0
  212. package/src/core/constants.ts +21 -43
  213. package/src/core/graph-engine.ts +24 -9
  214. package/src/core/graph-layout.ts +133 -28
  215. package/src/core/interaction-manager.ts +80 -20
  216. package/src/graph/edge.ts +6 -6
  217. package/src/graph/graph.ts +7 -7
  218. package/src/graph/node.ts +6 -6
  219. package/src/index.ts +31 -6
  220. package/src/layers/common-layers/marker-layer/marker-list.ts +62 -64
  221. package/src/layers/edge-attachment-helper.ts +355 -0
  222. package/src/layers/edge-layer.ts +6 -7
  223. package/src/layers/edge-layers/arrow-2d-geometry.ts +51 -0
  224. package/src/layers/edge-layers/edge-arrow-layer.ts +171 -0
  225. package/src/layers/graph-layer.ts +304 -86
  226. package/src/layouts/d3-dag/d3-dag-layout.ts +969 -0
  227. package/src/layouts/d3-force/d3-force-layout.ts +33 -11
  228. package/src/layouts/experimental/force-multi-graph-layout.ts +22 -13
  229. package/src/layouts/experimental/hive-plot-layout.ts +22 -10
  230. package/src/layouts/experimental/radial-layout.ts +20 -8
  231. package/src/layouts/gpu-force/gpu-force-layout.ts +22 -10
  232. package/src/layouts/simple-layout.ts +48 -25
  233. package/src/loaders/edge-parsers.ts +2 -2
  234. package/src/loaders/json-loader.ts +2 -2
  235. package/src/loaders/node-parsers.ts +2 -2
  236. package/src/loaders/simple-json-graph-loader.ts +2 -2
  237. package/src/loaders/table-graph-loader.ts +2 -2
  238. package/src/style/graph-layer-stylesheet.ts +99 -0
  239. package/src/style/graph-style-accessor-map.ts +103 -0
  240. package/src/style/graph-style-engine.ts +229 -0
  241. package/src/style/graph-stylesheet.schema.ts +344 -0
  242. package/src/style/style-engine.ts +168 -0
  243. package/src/style/style-property.ts +314 -51
  244. package/src/utils/collapsed-chains.ts +261 -0
  245. package/src/utils/log.ts +15 -1
  246. package/src/utils/node-boundary.ts +238 -0
  247. package/src/widgets/view-control-widget.tsx +15 -13
  248. package/dist/style/style-sheet.d.ts +0 -11
  249. package/dist/style/style-sheet.d.ts.map +0 -1
  250. package/dist/style/style-sheet.js +0 -253
  251. package/dist/style/style-sheet.js.map +0 -1
  252. package/src/style/style-sheet.ts +0 -277
@@ -2,33 +2,49 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import {EDGE_STATE, NODE_STATE, ValueOf} from './constants';
5
+ import type {EdgeState, NodeState} from './constants';
6
6
  import {Edge} from '../graph/edge';
7
7
  import {Node} from '../graph/node';
8
8
  import {GraphEngine} from './graph-engine';
9
+ import {log} from '../utils/log';
10
+ import {
11
+ resolveChainInteractionSource,
12
+ type ChainInteractionSource
13
+ } from '../utils/collapsed-chains';
9
14
 
10
- const NODE_TO_EDGE_STATE_MAP: Record<ValueOf<typeof NODE_STATE>, ValueOf<typeof EDGE_STATE>> = {
11
- [NODE_STATE.DEFAULT]: EDGE_STATE.DEFAULT,
12
- [NODE_STATE.HOVER]: EDGE_STATE.HOVER,
13
- [NODE_STATE.DRAGGING]: EDGE_STATE.DRAGGING,
14
- [NODE_STATE.SELECTED]: EDGE_STATE.SELECTED
15
+ export {resolveChainInteractionSource};
16
+ export type {ChainInteractionSource};
17
+
18
+ export function shouldToggleCollapsedChain(
19
+ isCollapsed: boolean,
20
+ source: ChainInteractionSource
21
+ ): boolean {
22
+ if (isCollapsed) {
23
+ return true;
24
+ }
25
+ return source === 'expanded-marker' || source === 'expanded-outline';
26
+ }
27
+
28
+ const NODE_TO_EDGE_STATE_MAP: Record<NodeState, EdgeState> = {
29
+ default: 'default',
30
+ hover: 'hover',
31
+ dragging: 'dragging',
32
+ selected: 'selected'
15
33
  };
16
34
 
17
35
  function shouldEdgeBeSelected(edge: Edge): boolean {
18
36
  return edge
19
37
  .getConnectedNodes()
20
- .some(
21
- (node) => node.getState() === NODE_STATE.SELECTED && node.shouldHighlightConnectedEdges()
22
- );
38
+ .some((node) => node.getState() === 'selected' && node.shouldHighlightConnectedEdges());
23
39
  }
24
40
 
25
- function setNodeState(node: Node, state: ValueOf<typeof NODE_STATE>) {
41
+ function setNodeState(node: Node, state: NodeState) {
26
42
  node.setState(state);
27
43
  if (node.shouldHighlightConnectedEdges()) {
28
44
  node.getConnectedEdges().forEach((edge) => {
29
45
  let newEdgeState = NODE_TO_EDGE_STATE_MAP[state];
30
46
  if (shouldEdgeBeSelected(edge)) {
31
- newEdgeState = EDGE_STATE.SELECTED;
47
+ newEdgeState = 'selected';
32
48
  }
33
49
  edge.setState(newEdgeState);
34
50
  });
@@ -93,6 +109,7 @@ export class InteractionManager {
93
109
  return this._lastInteraction;
94
110
  }
95
111
 
112
+ // eslint-disable-next-line max-statements, complexity
96
113
  onClick(info, event): void {
97
114
  const {object} = info;
98
115
 
@@ -101,12 +118,55 @@ export class InteractionManager {
101
118
  }
102
119
 
103
120
  if (object.isNode) {
121
+ const node = object as Node;
122
+ const chainId = node.getPropertyValue('collapsedChainId');
123
+ const collapsedNodeIds = node.getPropertyValue('collapsedNodeIds');
124
+ const representativeId = node.getPropertyValue('collapsedChainRepresentativeId');
125
+ const isCollapsed = Boolean(node.getPropertyValue('isCollapsedChain'));
126
+ const hasChainMetadata =
127
+ chainId !== null &&
128
+ chainId !== undefined &&
129
+ Array.isArray(collapsedNodeIds) &&
130
+ collapsedNodeIds.length > 1 &&
131
+ representativeId !== null &&
132
+ representativeId !== undefined;
133
+ const isRepresentative = hasChainMetadata && representativeId === node.getId();
134
+
135
+ if (hasChainMetadata && isRepresentative) {
136
+ const layout: any = this.engine?.props?.layout;
137
+ if (layout && typeof layout.toggleCollapsedChain === 'function') {
138
+ const interactionSource = resolveChainInteractionSource(info ?? null);
139
+
140
+ // eslint-disable-next-line max-depth
141
+ if (shouldToggleCollapsedChain(isCollapsed, interactionSource)) {
142
+ const action = isCollapsed ? 'expand' : 'collapse';
143
+ const chainIdStr = String(chainId);
144
+ log.log(
145
+ 0,
146
+ `InteractionManager: ${action} chain ${chainIdStr} via ${interactionSource}`
147
+ );
148
+ // eslint-disable-next-line no-console
149
+ console.log(
150
+ `InteractionManager: ${action} chain ${chainIdStr} via ${interactionSource}`
151
+ );
152
+ layout.toggleCollapsedChain(chainIdStr);
153
+ this._lastInteraction = Date.now();
154
+ this.notifyCallback();
155
+ // eslint-disable-next-line max-depth
156
+ if (this.nodeEvents.onClick) {
157
+ this.nodeEvents.onClick(info, event);
158
+ }
159
+ return;
160
+ }
161
+ }
162
+ }
163
+
104
164
  if ((object as Node).isSelectable()) {
105
165
  if (this._lastSelectedNode) {
106
- setNodeState(this._lastSelectedNode, NODE_STATE.DEFAULT);
166
+ setNodeState(this._lastSelectedNode, 'default');
107
167
  }
108
- setNodeState(object, NODE_STATE.SELECTED);
109
- this._lastSelectedNode = object as Node;
168
+ setNodeState(node, 'selected');
169
+ this._lastSelectedNode = node;
110
170
  this._lastInteraction = Date.now();
111
171
  this.notifyCallback();
112
172
  }
@@ -124,12 +184,12 @@ export class InteractionManager {
124
184
  _mouseLeaveNode(): void {
125
185
  const lastHoveredNode = this._lastHoveredNode;
126
186
 
127
- if (!(lastHoveredNode.isSelectable() && lastHoveredNode.getState() === NODE_STATE.SELECTED)) {
187
+ if (!(lastHoveredNode.isSelectable() && lastHoveredNode.getState() === 'selected')) {
128
188
  // reset the last hovered node's state
129
189
  const newState =
130
190
  this._lastSelectedNode !== null && this._lastSelectedNode.id === this._lastHoveredNode?.id
131
- ? NODE_STATE.SELECTED
132
- : NODE_STATE.DEFAULT;
191
+ ? 'selected'
192
+ : 'default';
133
193
  setNodeState(lastHoveredNode, newState);
134
194
  }
135
195
  // trigger the callback if exists
@@ -140,7 +200,7 @@ export class InteractionManager {
140
200
 
141
201
  _mouseEnterNode(info): void {
142
202
  // set the node's state to hover
143
- setNodeState(info.object as Node, NODE_STATE.HOVER);
203
+ setNodeState(info.object as Node, 'hover');
144
204
  // trigger the callback if exists
145
205
  if (this.nodeEvents.onMouseEnter) {
146
206
  this.nodeEvents.onMouseEnter(info);
@@ -204,7 +264,7 @@ export class InteractionManager {
204
264
  const y = Math.min(Math.max(coordinates[1], bounds[1]), bounds[3]);
205
265
  this.engine.lockNodePosition(info.object, x, y);
206
266
 
207
- setNodeState(info.object, NODE_STATE.DRAGGING);
267
+ setNodeState(info.object, 'dragging');
208
268
  this._lastInteraction = Date.now();
209
269
  this.notifyCallback();
210
270
  if (this.nodeEvents.onDrag) {
@@ -219,7 +279,7 @@ export class InteractionManager {
219
279
  if (this.resumeLayoutAfterDragging) {
220
280
  this.engine.resume();
221
281
  }
222
- setNodeState(info.object, NODE_STATE.DEFAULT);
282
+ setNodeState(info.object, 'default');
223
283
  this.engine.unlockNodePosition(info.object);
224
284
  }
225
285
  }
package/src/graph/edge.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  // Basic data structure of an edge
6
- import {EDGE_STATE} from '../core/constants';
6
+ import type {EdgeState} from '../core/constants';
7
7
  import {Node} from './node';
8
8
 
9
9
  export interface EdgeOptions {
@@ -36,7 +36,7 @@ export class Edge {
36
36
  /** Nodes at either end of this edge. */
37
37
  private readonly _connectedNodes: Record<string, Node> = {};
38
38
  /** Edge state. */
39
- public state = EDGE_STATE.DEFAULT;
39
+ public state: EdgeState = 'default';
40
40
 
41
41
  /**
42
42
  * The constructor
@@ -119,17 +119,17 @@ export class Edge {
119
119
 
120
120
  /**
121
121
  * Set edge state
122
- * @param state - one of EDGE_STATE
122
+ * @param state - the new interaction state for the edge
123
123
  */
124
- setState(state: string): void {
124
+ setState(state: EdgeState): void {
125
125
  this.state = state;
126
126
  }
127
127
 
128
128
  /**
129
129
  * Get edge state
130
- * @returns state - one of EDGE_STATE
130
+ * @returns state - the current interaction state for the edge
131
131
  */
132
- getState(): string {
132
+ getState(): EdgeState {
133
133
  return this.state;
134
134
  }
135
135
 
@@ -2,7 +2,7 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import {log} from '../utils/log';
5
+ import {warn} from '../utils/log';
6
6
  import {Cache} from '../core/cache';
7
7
  import {Edge} from './edge';
8
8
  import {Node} from './node';
@@ -157,7 +157,7 @@ export class Graph extends EventTarget {
157
157
  const targetNode = this.findNode(edge.getTargetNodeId());
158
158
 
159
159
  if (!sourceNode || !targetNode) {
160
- log.warn(`Unable to add edge ${edge.id}, source or target node is missing.`)();
160
+ warn(`Unable to add edge ${edge.id}, source or target node is missing.`);
161
161
  return;
162
162
  }
163
163
 
@@ -194,7 +194,7 @@ export class Graph extends EventTarget {
194
194
  removeNode(nodeId: string | number): void {
195
195
  const node = this.findNode(nodeId);
196
196
  if (!node) {
197
- log.warn(`Unable to remove node ${nodeId} - doesn't exist`)();
197
+ warn(`Unable to remove node ${nodeId} - doesn't exist`);
198
198
  return;
199
199
  }
200
200
  // remove all edges connect to this node from map
@@ -232,7 +232,7 @@ export class Graph extends EventTarget {
232
232
  removeEdge(edgeId: string | number): void {
233
233
  const edge = this.findEdge(edgeId);
234
234
  if (!edge) {
235
- log.warn(`Unable to remove edge ${edgeId} - doesn't exist`)();
235
+ warn(`Unable to remove edge ${edgeId} - doesn't exist`);
236
236
  return;
237
237
  }
238
238
  const sourceNode = this.findNode(edge.getSourceNodeId());
@@ -261,7 +261,7 @@ export class Graph extends EventTarget {
261
261
  getConnectedEdges(nodeId: string | number): Edge[] {
262
262
  const node = this.findNode(nodeId);
263
263
  if (!node) {
264
- log.warn(`Unable to find node ${nodeId} - doesn't exist`)();
264
+ warn(`Unable to find node ${nodeId} - doesn't exist`);
265
265
  return [];
266
266
  }
267
267
  return node.getConnectedEdges();
@@ -275,7 +275,7 @@ export class Graph extends EventTarget {
275
275
  getNodeSiblings(nodeId: string | number): Node[] {
276
276
  const node = this.findNode(nodeId);
277
277
  if (!node) {
278
- log.warn(`Unable to find node ${nodeId} - doesn't exist`)();
278
+ warn(`Unable to find node ${nodeId} - doesn't exist`);
279
279
  return [];
280
280
  }
281
281
  return node.getSiblingIds().map((siblingNodeId) => this.findNode(siblingNodeId));
@@ -289,7 +289,7 @@ export class Graph extends EventTarget {
289
289
  getDegree(nodeId: string | number): number {
290
290
  const node = this.findNode(nodeId);
291
291
  if (!node) {
292
- log.warn(`Unable to find node ${nodeId} - doesn't exist`)();
292
+ warn(`Unable to find node ${nodeId} - doesn't exist`);
293
293
  return 0;
294
294
  }
295
295
  return node.getDegree();
package/src/graph/node.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import {NODE_STATE, ValueOf} from '../core/constants';
5
+ import type {NodeState} from '../core/constants';
6
6
  import {Edge} from './edge';
7
7
 
8
8
  /** Properties for creating a new node */
@@ -23,7 +23,7 @@ export class Node {
23
23
  /** List edges. */
24
24
  private _connectedEdges: Record<string, Edge> = {};
25
25
  /** Interaction state of the node. */
26
- public state: ValueOf<typeof NODE_STATE> = NODE_STATE.DEFAULT;
26
+ public state: NodeState = 'default';
27
27
  /** Can the node be selected? */
28
28
  private _selectable: boolean;
29
29
  /** Should the state of this node affect the state of the connected edges? */
@@ -150,17 +150,17 @@ export class Node {
150
150
 
151
151
  /**
152
152
  * Set node state
153
- * @param state - one of NODE_STATE
153
+ * @param state - the new interaction state of the node
154
154
  */
155
- setState(state: ValueOf<typeof NODE_STATE>): void {
155
+ setState(state: NodeState): void {
156
156
  this.state = state;
157
157
  }
158
158
 
159
159
  /**
160
160
  * Get node state
161
- * @returns state - one of NODE_STATE
161
+ * @returns state - the current interaction state of the node
162
162
  */
163
- getState(): ValueOf<typeof NODE_STATE> {
163
+ getState(): NodeState {
164
164
  return this.state;
165
165
  }
166
166
 
package/src/index.ts CHANGED
@@ -10,21 +10,44 @@ export {Edge} from './graph/edge';
10
10
  export {GraphEngine} from './core/graph-engine';
11
11
 
12
12
  // graph-layers layouts
13
- export type {GraphLayoutState} from './core/graph-layout';
13
+ export type {
14
+ GraphLayoutProps,
15
+ GraphLayoutState,
16
+ GraphLayoutEventDetail
17
+ } from './core/graph-layout';
14
18
  export {GraphLayout} from './core/graph-layout';
15
19
 
16
- export {SimpleLayout} from './layouts//simple-layout';
20
+ export {SimpleLayout} from './layouts/simple-layout';
17
21
  export {D3ForceLayout} from './layouts/d3-force/d3-force-layout';
22
+ export {D3DagLayout} from './layouts/d3-dag/d3-dag-layout';
18
23
  export {GPUForceLayout} from './layouts/gpu-force/gpu-force-layout';
19
- export {RadialLayout as _RadialLayout} from './layouts/experimental/radial-layout';
20
- export {ForceMultiGraphLayout as _MultigraphLayout} from './layouts/experimental/force-multi-graph-layout';
21
- export {HivePlotLayout as _HivePlotLayout} from './layouts/experimental/hive-plot-layout';
24
+ export {RadialLayout} from './layouts/experimental/radial-layout';
25
+ export {ForceMultiGraphLayout} from './layouts/experimental/force-multi-graph-layout';
26
+ export {HivePlotLayout} from './layouts/experimental/hive-plot-layout';
22
27
 
23
- export {NODE_STATE, NODE_TYPE, EDGE_TYPE, EDGE_DECORATOR_TYPE, MARKER_TYPE} from './core/constants';
28
+ export type {Marker, NodeState, NodeType, EdgeType, EdgeDecoratorType, LayoutState} from './core/constants';
24
29
 
25
30
  // deck.gl components
26
31
  export {GraphLayer} from './layers/graph-layer';
27
32
  export {EdgeLayer} from './layers/edge-layer';
33
+ export {StyleEngine} from './style/style-engine';
34
+ export {GraphStyleEngine} from './style/graph-style-engine';
35
+ export type {
36
+ GraphStylesheet,
37
+ GraphStylesheetInput,
38
+ GraphStylesheetParsed,
39
+ GraphStyleAttributeReference,
40
+ GraphStyleScale,
41
+ GraphStyleScaleType,
42
+ GraphStyleValue
43
+ } from './style/graph-style-engine';
44
+ export {GraphStylesheetSchema} from './style/graph-style-engine';
45
+ export {
46
+ DEFAULT_GRAPH_LAYER_STYLESHEET,
47
+ type GraphLayerStylesheet,
48
+ type GraphLayerEdgeStyle,
49
+ type GraphLayerNodeStyle
50
+ } from './style/graph-layer-stylesheet';
28
51
 
29
52
  // Widgets
30
53
 
@@ -40,3 +63,5 @@ export {log} from './utils/log';
40
63
  // DEPRECATED
41
64
  export {createGraph} from './loaders/create-graph';
42
65
  export {JSONLoader} from './loaders/simple-json-graph-loader';
66
+
67
+ export {MARKER_TYPE, NODE_STATE,EDGE_STATE,NODE_TYPE,EDGE_TYPE,EDGE_DECORATOR_TYPE,LAYOUT_STATE} from './_deprecated/old-constants';
@@ -2,67 +2,65 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- /* eslint-disable */
6
- export const MarkerList = {
7
- 'bell-filled': 'bell-filled',
8
- bell: 'bell',
9
- 'bookmark-filled': 'bookmark-filled',
10
- bookmark: 'bookmark',
11
- 'cd-filled': 'cd-filled',
12
- cd: 'cd',
13
- checkmark: 'checkmark',
14
- 'circle-check-filled': 'circle-check-filled',
15
- 'circle-check': 'circle-check',
16
- 'circle-filled': 'circle-filled',
17
- 'circle-i-filled': 'circle-i-filled',
18
- 'circle-i': 'circle-i',
19
- 'circle-minus-filled': 'circle-minus-filled',
20
- 'circle-minus': 'circle-minus',
21
- 'circle-plus-filled': 'circle-plus-filled',
22
- 'circle-plus': 'circle-plus',
23
- 'circle-questionmark-filled': 'circle-questionmark-filled',
24
- 'circle-questionmark': 'circle-questionmark',
25
- 'circle-slash-filled': 'circle-slash-filled',
26
- 'circle-slash': 'circle-slash',
27
- 'circle-x-filled': 'circle-x-filled',
28
- 'circle-x': 'circle-x',
29
- circle: 'circle',
30
- 'diamond-filled': 'diamond-filled',
31
- diamond: 'diamond',
32
- 'flag-filled': 'flag-filled',
33
- flag: 'flag',
34
- gear: 'gear',
35
- 'heart-filled': 'heart-filled',
36
- heart: 'heart',
37
- 'location-marker-filled': 'location-marker-filled',
38
- 'location-marker': 'location-marker',
39
- 'octagonal-star-filled': 'octagonal-star-filled',
40
- 'octagonal-star': 'octagonal-star',
41
- 'person-filled': 'person-filled',
42
- person: 'person',
43
- 'pin-filled': 'pin-filled',
44
- pin: 'pin',
45
- 'plus-small': 'plus-small',
46
- plus: 'plus',
47
- 'rectangle-filled': 'rectangle-filled',
48
- rectangle: 'rectangle',
49
- 'star-filled': 'star-filled',
50
- star: 'star',
51
- 'tag-filled': 'tag-filled',
52
- tag: 'tag',
53
- 'thumb-down-filled': 'thumb-down-filled',
54
- 'thumb-down': 'thumb-down',
55
- 'thumb-up': 'thumb-up',
56
- 'thumb_up-filled': 'thumb_up-filled',
57
- 'triangle-down-filled': 'triangle-down-filled',
58
- 'triangle-down': 'triangle-down',
59
- 'triangle-left-filled': 'triangle-left-filled',
60
- 'triangle-left': 'triangle-left',
61
- 'triangle-right-filled': 'triangle-right-filled',
62
- 'triangle-right': 'triangle-right',
63
- 'triangle-up-filled': 'triangle-up-filled',
64
- 'triangle-up': 'triangle-up',
65
- 'x-small': 'x-small',
66
- x: 'x'
67
- };
68
- /* eslint-enable */
5
+ /** Supported marker types */
6
+ export type Marker =
7
+ | 'bell-filled'
8
+ | 'bell'
9
+ | 'bookmark-filled'
10
+ | 'bookmark'
11
+ | 'cd-filled'
12
+ | 'cd'
13
+ | 'checkmark'
14
+ | 'circle-check-filled'
15
+ | 'circle-check'
16
+ | 'circle-filled'
17
+ | 'circle-i-filled'
18
+ | 'circle-i'
19
+ | 'circle-minus-filled'
20
+ | 'circle-minus'
21
+ | 'circle-plus-filled'
22
+ | 'circle-plus'
23
+ | 'circle-questionmark-filled'
24
+ | 'circle-questionmark'
25
+ | 'circle-slash-filled'
26
+ | 'circle-slash'
27
+ | 'circle-x-filled'
28
+ | 'circle-x'
29
+ | 'circle'
30
+ | 'diamond-filled'
31
+ | 'diamond'
32
+ | 'flag-filled'
33
+ | 'flag'
34
+ | 'gear'
35
+ | 'heart-filled'
36
+ | 'heart'
37
+ | 'location-marker-filled'
38
+ | 'location-marker'
39
+ | 'octagonal-star-filled'
40
+ | 'octagonal-star'
41
+ | 'person-filled'
42
+ | 'person'
43
+ | 'pin-filled'
44
+ | 'pin'
45
+ | 'plus-small'
46
+ | 'plus'
47
+ | 'rectangle-filled'
48
+ | 'rectangle'
49
+ | 'star-filled'
50
+ | 'star'
51
+ | 'tag-filled'
52
+ | 'tag'
53
+ | 'thumb-down-filled'
54
+ | 'thumb-down'
55
+ | 'thumb-up'
56
+ | 'thumb_up-filled'
57
+ | 'triangle-down-filled'
58
+ | 'triangle-down'
59
+ | 'triangle-left-filled'
60
+ | 'triangle-left'
61
+ | 'triangle-right-filled'
62
+ | 'triangle-right'
63
+ | 'triangle-up-filled'
64
+ | 'triangle-up'
65
+ | 'x-small'
66
+ | 'x';