@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.
- package/LICENSE +1 -1
- package/dist/_deprecated/old-constants.d.ts +107 -0
- package/dist/_deprecated/old-constants.d.ts.map +1 -0
- package/dist/_deprecated/old-constants.js +111 -0
- package/dist/_deprecated/old-constants.js.map +1 -0
- package/dist/core/cache.d.ts +0 -1
- package/dist/core/cache.js +0 -1
- package/dist/core/constants.d.ts +12 -100
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +3 -44
- package/dist/core/constants.js.map +1 -1
- package/dist/core/graph-engine.d.ts +12 -11
- package/dist/core/graph-engine.d.ts.map +1 -1
- package/dist/core/graph-engine.js +22 -11
- package/dist/core/graph-engine.js.map +1 -1
- package/dist/core/graph-layout.d.ts +48 -21
- package/dist/core/graph-layout.d.ts.map +1 -1
- package/dist/core/graph-layout.js +91 -24
- package/dist/core/graph-layout.js.map +1 -1
- package/dist/core/interaction-manager.d.ts +6 -4
- package/dist/core/interaction-manager.d.ts.map +1 -1
- package/dist/core/interaction-manager.js +59 -17
- package/dist/core/interaction-manager.js.map +1 -1
- package/dist/graph/edge.d.ts +7 -7
- package/dist/graph/edge.d.ts.map +1 -1
- package/dist/graph/edge.js +3 -6
- package/dist/graph/edge.js.map +1 -1
- package/dist/graph/graph.d.ts +2 -3
- package/dist/graph/graph.js +8 -9
- package/dist/graph/graph.js.map +1 -1
- package/dist/graph/node.d.ts +7 -8
- package/dist/graph/node.d.ts.map +1 -1
- package/dist/graph/node.js +3 -5
- package/dist/graph/node.js.map +1 -1
- package/dist/graph-style-schema.cdn.d.ts +2 -0
- package/dist/graph-style-schema.cdn.js +2 -0
- package/dist/graph-style-schema.json +12 -0
- package/dist/index.cjs +2821 -549
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +28 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -21
- package/dist/index.js.map +1 -1
- package/dist/layers/common-layers/flow-path-layer/flow-path-layer-fragment.glsl.d.ts +0 -1
- package/dist/layers/common-layers/flow-path-layer/flow-path-layer-fragment.glsl.js +0 -1
- package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex-tf.glsl.d.ts +0 -1
- package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex-tf.glsl.js +0 -1
- package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex.glsl.d.ts +0 -1
- package/dist/layers/common-layers/flow-path-layer/flow-path-layer-vertex.glsl.js +0 -1
- package/dist/layers/common-layers/flow-path-layer/flow-path-layer.d.ts +0 -1
- package/dist/layers/common-layers/flow-path-layer/flow-path-layer.js +0 -1
- package/dist/layers/common-layers/marker-layer/atlas-data-url.d.ts +0 -1
- package/dist/layers/common-layers/marker-layer/atlas-data-url.js +0 -1
- package/dist/layers/common-layers/marker-layer/marker-layer.d.ts +0 -1
- package/dist/layers/common-layers/marker-layer/marker-layer.js +2 -3
- package/dist/layers/common-layers/marker-layer/marker-list.d.ts +2 -63
- package/dist/layers/common-layers/marker-layer/marker-list.d.ts.map +1 -1
- package/dist/layers/common-layers/marker-layer/marker-list.js +1 -65
- package/dist/layers/common-layers/marker-layer/marker-list.js.map +1 -1
- package/dist/layers/common-layers/marker-layer/marker-mapping.d.ts +0 -1
- package/dist/layers/common-layers/marker-layer/marker-mapping.js +0 -1
- package/dist/layers/common-layers/spline-layer/spline-layer.d.ts +0 -1
- package/dist/layers/common-layers/spline-layer/spline-layer.js +0 -1
- package/dist/layers/common-layers/zoomable-text-layer/zoomable-text-layer.d.ts +0 -1
- package/dist/layers/common-layers/zoomable-text-layer/zoomable-text-layer.js +0 -1
- package/dist/layers/edge-attachment-helper.d.ts +15 -0
- package/dist/layers/edge-attachment-helper.d.ts.map +1 -0
- package/dist/layers/edge-attachment-helper.js +230 -0
- package/dist/layers/edge-attachment-helper.js.map +1 -0
- package/dist/layers/edge-layer.d.ts +1 -5
- package/dist/layers/edge-layer.d.ts.map +1 -1
- package/dist/layers/edge-layer.js +9 -11
- package/dist/layers/edge-layer.js.map +1 -1
- package/dist/layers/edge-layers/arrow-2d-geometry.d.ts +4 -0
- package/dist/layers/edge-layers/arrow-2d-geometry.d.ts.map +1 -0
- package/dist/layers/edge-layers/arrow-2d-geometry.js +42 -0
- package/dist/layers/edge-layers/arrow-2d-geometry.js.map +1 -0
- package/dist/layers/edge-layers/curved-edge-layer.d.ts +1 -2
- package/dist/layers/edge-layers/curved-edge-layer.js +1 -2
- package/dist/layers/edge-layers/edge-arrow-layer.d.ts +21 -0
- package/dist/layers/edge-layers/edge-arrow-layer.d.ts.map +1 -0
- package/dist/layers/edge-layers/edge-arrow-layer.js +131 -0
- package/dist/layers/edge-layers/edge-arrow-layer.js.map +1 -0
- package/dist/layers/edge-layers/edge-label-layer.d.ts +1 -2
- package/dist/layers/edge-layers/edge-label-layer.js +1 -2
- package/dist/layers/edge-layers/flow-layer.d.ts +1 -2
- package/dist/layers/edge-layers/flow-layer.js +1 -2
- package/dist/layers/edge-layers/path-edge-layer.d.ts +0 -1
- package/dist/layers/edge-layers/path-edge-layer.js +0 -1
- package/dist/layers/edge-layers/straight-line-edge-layer.d.ts +0 -1
- package/dist/layers/edge-layers/straight-line-edge-layer.js +0 -1
- package/dist/layers/graph-layer.d.ts +22 -23
- package/dist/layers/graph-layer.d.ts.map +1 -1
- package/dist/layers/graph-layer.js +218 -62
- package/dist/layers/graph-layer.js.map +1 -1
- package/dist/layers/node-layers/circle-layer.d.ts +0 -1
- package/dist/layers/node-layers/circle-layer.js +0 -1
- package/dist/layers/node-layers/image-layer.d.ts +0 -1
- package/dist/layers/node-layers/image-layer.js +0 -1
- package/dist/layers/node-layers/label-layer.d.ts +1 -2
- package/dist/layers/node-layers/label-layer.js +1 -2
- package/dist/layers/node-layers/path-rounded-rectangle-layer.d.ts +0 -1
- package/dist/layers/node-layers/path-rounded-rectangle-layer.js +1 -2
- package/dist/layers/node-layers/rectangle-layer.d.ts +0 -1
- package/dist/layers/node-layers/rectangle-layer.js +0 -1
- package/dist/layers/node-layers/rounded-rectangle-layer-fragment.d.ts +0 -1
- package/dist/layers/node-layers/rounded-rectangle-layer-fragment.js +0 -1
- package/dist/layers/node-layers/rounded-rectangle-layer.d.ts +1 -2
- package/dist/layers/node-layers/rounded-rectangle-layer.js +2 -3
- package/dist/layers/node-layers/zoomable-marker-layer.d.ts +1 -2
- package/dist/layers/node-layers/zoomable-marker-layer.js +1 -2
- package/dist/layouts/d3-dag/d3-dag-layout.d.ts +117 -0
- package/dist/layouts/d3-dag/d3-dag-layout.d.ts.map +1 -0
- package/dist/layouts/d3-dag/d3-dag-layout.js +716 -0
- package/dist/layouts/d3-dag/d3-dag-layout.js.map +1 -0
- package/dist/layouts/d3-force/d3-force-layout.d.ts +4 -4
- package/dist/layouts/d3-force/d3-force-layout.d.ts.map +1 -1
- package/dist/layouts/d3-force/d3-force-layout.js +25 -10
- package/dist/layouts/d3-force/d3-force-layout.js.map +1 -1
- package/dist/layouts/d3-force/worker.d.ts +0 -1
- package/dist/layouts/d3-force/worker.js +0 -1
- package/dist/layouts/experimental/force-multi-graph-layout.d.ts +9 -8
- package/dist/layouts/experimental/force-multi-graph-layout.d.ts.map +1 -1
- package/dist/layouts/experimental/force-multi-graph-layout.js +15 -11
- package/dist/layouts/experimental/force-multi-graph-layout.js.map +1 -1
- package/dist/layouts/experimental/hive-plot-layout.d.ts +11 -8
- package/dist/layouts/experimental/hive-plot-layout.d.ts.map +1 -1
- package/dist/layouts/experimental/hive-plot-layout.js +12 -7
- package/dist/layouts/experimental/hive-plot-layout.js.map +1 -1
- package/dist/layouts/experimental/radial-layout.d.ts +10 -7
- package/dist/layouts/experimental/radial-layout.d.ts.map +1 -1
- package/dist/layouts/experimental/radial-layout.js +11 -6
- package/dist/layouts/experimental/radial-layout.js.map +1 -1
- package/dist/layouts/gpu-force/gpu-force-layout.d.ts +4 -4
- package/dist/layouts/gpu-force/gpu-force-layout.d.ts.map +1 -1
- package/dist/layouts/gpu-force/gpu-force-layout.js +18 -9
- package/dist/layouts/gpu-force/gpu-force-layout.js.map +1 -1
- package/dist/layouts/gpu-force/worker.d.ts +0 -1
- package/dist/layouts/gpu-force/worker.js +0 -1
- package/dist/layouts/simple-layout.d.ts +19 -12
- package/dist/layouts/simple-layout.d.ts.map +1 -1
- package/dist/layouts/simple-layout.js +26 -15
- package/dist/layouts/simple-layout.js.map +1 -1
- package/dist/loaders/create-graph.d.ts +1 -2
- package/dist/loaders/create-graph.js +3 -4
- package/dist/loaders/edge-parsers.d.ts +1 -2
- package/dist/loaders/edge-parsers.js +2 -3
- package/dist/loaders/edge-parsers.js.map +1 -1
- package/dist/loaders/json-loader.d.ts +2 -3
- package/dist/loaders/json-loader.d.ts.map +1 -1
- package/dist/loaders/json-loader.js +5 -6
- package/dist/loaders/json-loader.js.map +1 -1
- package/dist/loaders/node-parsers.d.ts +1 -2
- package/dist/loaders/node-parsers.js +2 -3
- package/dist/loaders/node-parsers.js.map +1 -1
- package/dist/loaders/simple-json-graph-loader.d.ts +0 -1
- package/dist/loaders/simple-json-graph-loader.d.ts.map +1 -1
- package/dist/loaders/simple-json-graph-loader.js +5 -6
- package/dist/loaders/simple-json-graph-loader.js.map +1 -1
- package/dist/loaders/table-graph-loader.d.ts +3 -4
- package/dist/loaders/table-graph-loader.js +5 -6
- package/dist/loaders/table-graph-loader.js.map +1 -1
- package/dist/style/graph-layer-stylesheet.d.ts +34 -0
- package/dist/style/graph-layer-stylesheet.d.ts.map +1 -0
- package/dist/style/graph-layer-stylesheet.js +39 -0
- package/dist/style/graph-layer-stylesheet.js.map +1 -0
- package/dist/style/graph-style-accessor-map.d.ts +93 -0
- package/dist/style/graph-style-accessor-map.d.ts.map +1 -0
- package/dist/style/graph-style-accessor-map.js +93 -0
- package/dist/style/graph-style-accessor-map.js.map +1 -0
- package/dist/style/graph-style-engine.d.ts +10 -0
- package/dist/style/graph-style-engine.d.ts.map +1 -0
- package/dist/style/graph-style-engine.js +163 -0
- package/dist/style/graph-style-engine.js.map +1 -0
- package/dist/style/graph-stylesheet.schema.d.ts +310 -0
- package/dist/style/graph-stylesheet.schema.d.ts.map +1 -0
- package/dist/style/graph-stylesheet.schema.js +237 -0
- package/dist/style/graph-stylesheet.schema.js.map +1 -0
- package/dist/style/style-engine.d.ts +33 -0
- package/dist/style/style-engine.d.ts.map +1 -0
- package/dist/style/style-engine.js +121 -0
- package/dist/style/style-engine.js.map +1 -0
- package/dist/style/style-property.d.ts +2 -3
- package/dist/style/style-property.d.ts.map +1 -1
- package/dist/style/style-property.js +224 -48
- package/dist/style/style-property.js.map +1 -1
- package/dist/utils/collapsed-chains.d.ts +17 -0
- package/dist/utils/collapsed-chains.d.ts.map +1 -0
- package/dist/utils/collapsed-chains.js +197 -0
- package/dist/utils/collapsed-chains.js.map +1 -0
- package/dist/utils/layer-utils.d.ts +0 -1
- package/dist/utils/layer-utils.d.ts.map +1 -1
- package/dist/utils/layer-utils.js +0 -1
- package/dist/utils/log.d.ts +2 -1
- package/dist/utils/log.d.ts.map +1 -1
- package/dist/utils/log.js +12 -2
- package/dist/utils/log.js.map +1 -1
- package/dist/utils/node-boundary.d.ts +10 -0
- package/dist/utils/node-boundary.d.ts.map +1 -0
- package/dist/utils/node-boundary.js +130 -0
- package/dist/utils/node-boundary.js.map +1 -0
- package/dist/utils/polygon-calculations.d.ts +0 -1
- package/dist/utils/polygon-calculations.js +0 -1
- package/dist/widgets/long-press-button.d.ts +0 -1
- package/dist/widgets/long-press-button.js +0 -1
- package/dist/widgets/view-control-widget.d.ts +4 -5
- package/dist/widgets/view-control-widget.d.ts.map +1 -1
- package/dist/widgets/view-control-widget.js +10 -8
- package/dist/widgets/view-control-widget.js.map +1 -1
- package/package.json +23 -7
- package/src/_deprecated/old-constants.ts +122 -0
- package/src/core/constants.ts +21 -43
- package/src/core/graph-engine.ts +24 -9
- package/src/core/graph-layout.ts +133 -28
- package/src/core/interaction-manager.ts +80 -20
- package/src/graph/edge.ts +6 -6
- package/src/graph/graph.ts +7 -7
- package/src/graph/node.ts +6 -6
- package/src/index.ts +31 -6
- package/src/layers/common-layers/marker-layer/marker-list.ts +62 -64
- package/src/layers/edge-attachment-helper.ts +355 -0
- package/src/layers/edge-layer.ts +6 -7
- package/src/layers/edge-layers/arrow-2d-geometry.ts +51 -0
- package/src/layers/edge-layers/edge-arrow-layer.ts +171 -0
- package/src/layers/graph-layer.ts +304 -86
- package/src/layouts/d3-dag/d3-dag-layout.ts +969 -0
- package/src/layouts/d3-force/d3-force-layout.ts +33 -11
- package/src/layouts/experimental/force-multi-graph-layout.ts +22 -13
- package/src/layouts/experimental/hive-plot-layout.ts +22 -10
- package/src/layouts/experimental/radial-layout.ts +20 -8
- package/src/layouts/gpu-force/gpu-force-layout.ts +22 -10
- package/src/layouts/simple-layout.ts +48 -25
- package/src/loaders/edge-parsers.ts +2 -2
- package/src/loaders/json-loader.ts +2 -2
- package/src/loaders/node-parsers.ts +2 -2
- package/src/loaders/simple-json-graph-loader.ts +2 -2
- package/src/loaders/table-graph-loader.ts +2 -2
- package/src/style/graph-layer-stylesheet.ts +99 -0
- package/src/style/graph-style-accessor-map.ts +103 -0
- package/src/style/graph-style-engine.ts +229 -0
- package/src/style/graph-stylesheet.schema.ts +344 -0
- package/src/style/style-engine.ts +168 -0
- package/src/style/style-property.ts +314 -51
- package/src/utils/collapsed-chains.ts +261 -0
- package/src/utils/log.ts +15 -1
- package/src/utils/node-boundary.ts +238 -0
- package/src/widgets/view-control-widget.tsx +15 -13
- package/dist/style/style-sheet.d.ts +0 -11
- package/dist/style/style-sheet.d.ts.map +0 -1
- package/dist/style/style-sheet.js +0 -253
- package/dist/style/style-sheet.js.map +0 -1
- 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 {
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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:
|
|
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 =
|
|
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,
|
|
166
|
+
setNodeState(this._lastSelectedNode, 'default');
|
|
107
167
|
}
|
|
108
|
-
setNodeState(
|
|
109
|
-
this._lastSelectedNode =
|
|
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() ===
|
|
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
|
-
?
|
|
132
|
-
:
|
|
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,
|
|
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,
|
|
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,
|
|
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 {
|
|
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 =
|
|
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 -
|
|
122
|
+
* @param state - the new interaction state for the edge
|
|
123
123
|
*/
|
|
124
|
-
setState(state:
|
|
124
|
+
setState(state: EdgeState): void {
|
|
125
125
|
this.state = state;
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
/**
|
|
129
129
|
* Get edge state
|
|
130
|
-
* @returns state -
|
|
130
|
+
* @returns state - the current interaction state for the edge
|
|
131
131
|
*/
|
|
132
|
-
getState():
|
|
132
|
+
getState(): EdgeState {
|
|
133
133
|
return this.state;
|
|
134
134
|
}
|
|
135
135
|
|
package/src/graph/graph.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
|
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:
|
|
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 -
|
|
153
|
+
* @param state - the new interaction state of the node
|
|
154
154
|
*/
|
|
155
|
-
setState(state:
|
|
155
|
+
setState(state: NodeState): void {
|
|
156
156
|
this.state = state;
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
/**
|
|
160
160
|
* Get node state
|
|
161
|
-
* @returns state -
|
|
161
|
+
* @returns state - the current interaction state of the node
|
|
162
162
|
*/
|
|
163
|
-
getState():
|
|
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 {
|
|
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
|
|
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
|
|
20
|
-
export {ForceMultiGraphLayout
|
|
21
|
-
export {HivePlotLayout
|
|
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 {
|
|
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
|
-
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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';
|