@deck.gl-community/graph-layers 9.2.0-beta.6 → 9.2.5
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/dist/_deprecated/old-constants.d.ts.map +1 -1
- package/dist/_deprecated/old-constants.js.map +1 -1
- package/dist/core/graph-engine.d.ts +3 -2
- package/dist/core/graph-engine.d.ts.map +1 -1
- package/dist/core/graph-engine.js +1 -0
- package/dist/core/graph-engine.js.map +1 -1
- package/dist/core/graph-layout.d.ts.map +1 -1
- package/dist/core/graph-layout.js.map +1 -1
- package/dist/core/interaction-manager.d.ts.map +1 -1
- package/dist/core/interaction-manager.js.map +1 -1
- package/dist/graph/arrow-graph.d.ts.map +1 -1
- package/dist/graph/arrow-graph.js.map +1 -1
- package/dist/graph/classic-graph.d.ts.map +1 -1
- package/dist/graph/classic-graph.js +1 -3
- package/dist/graph/classic-graph.js.map +1 -1
- package/dist/graph/functions/arrow-utils.d.ts.map +1 -1
- package/dist/graph/functions/arrow-utils.js +5 -3
- package/dist/graph/functions/arrow-utils.js.map +1 -1
- package/dist/graph/functions/create-graph-from-data.d.ts.map +1 -1
- package/dist/graph/functions/create-graph-from-data.js.map +1 -1
- package/dist/graph/graph-normalization.d.ts.map +1 -1
- package/dist/graph/graph-normalization.js.map +1 -1
- package/dist/graph-data/arrow-graph-data-builder.d.ts.map +1 -1
- package/dist/graph-data/arrow-graph-data-builder.js.map +1 -1
- package/dist/graph-data/graph-data-builder.d.ts.map +1 -1
- package/dist/graph-data/plain-graph-data-builder.d.ts.map +1 -1
- package/dist/graph-style-schema.cdn.js +1 -1
- package/dist/graph-style-schema.json +1 -1
- package/dist/index.cjs +332 -224
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/layers/common-layers/grid-layer/grid-layer.d.ts.map +1 -1
- package/dist/layers/common-layers/grid-layer/grid-layer.js +6 -16
- package/dist/layers/common-layers/grid-layer/grid-layer.js.map +1 -1
- package/dist/layers/edge-attachment-helper.d.ts.map +1 -1
- package/dist/layers/edge-attachment-helper.js +1 -3
- package/dist/layers/edge-attachment-helper.js.map +1 -1
- package/dist/layers/edge-layer.js +4 -4
- package/dist/layers/edge-layer.js.map +1 -1
- package/dist/layers/edge-layers/arrow-2d-geometry.js +1 -8
- package/dist/layers/edge-layers/arrow-2d-geometry.js.map +1 -1
- package/dist/layers/graph-layer.d.ts +4 -3
- package/dist/layers/graph-layer.d.ts.map +1 -1
- package/dist/layers/graph-layer.js +20 -17
- package/dist/layers/graph-layer.js.map +1 -1
- package/dist/layouts/d3-dag/collapsable-d3-dag-layout.d.ts.map +1 -1
- package/dist/layouts/d3-dag/collapsable-d3-dag-layout.js.map +1 -1
- package/dist/layouts/d3-dag/d3-dag-layout.d.ts.map +1 -1
- package/dist/layouts/d3-dag/d3-dag-layout.js +9 -2
- package/dist/layouts/d3-dag/d3-dag-layout.js.map +1 -1
- package/dist/layouts/experimental/radial-layout.d.ts.map +1 -1
- package/dist/layouts/experimental/radial-layout.js.map +1 -1
- package/dist/layouts/simple-layout.d.ts.map +1 -1
- package/dist/layouts/simple-layout.js +4 -1
- package/dist/layouts/simple-layout.js.map +1 -1
- package/dist/loaders/dot-graph-loader.d.ts.map +1 -1
- package/dist/loaders/dot-graph-loader.js +10 -3
- package/dist/loaders/dot-graph-loader.js.map +1 -1
- package/dist/loaders/json-graph-loader.d.ts.map +1 -1
- package/dist/loaders/json-graph-loader.js +2 -2
- package/dist/loaders/json-graph-loader.js.map +1 -1
- package/dist/loaders/parsers/parse-json-graph.js +2 -1
- package/dist/loaders/parsers/parse-json-graph.js.map +1 -1
- package/dist/style/graph-layer-stylesheet.d.ts +14 -5
- package/dist/style/graph-layer-stylesheet.d.ts.map +1 -1
- package/dist/style/graph-layer-stylesheet.js +14 -8
- package/dist/style/graph-layer-stylesheet.js.map +1 -1
- package/dist/style/graph-style-engine.d.ts +4 -4
- package/dist/style/graph-style-engine.d.ts.map +1 -1
- package/dist/style/graph-style-engine.js +7 -5
- package/dist/style/graph-style-engine.js.map +1 -1
- package/dist/style/graph-stylesheet-schema.d.ts +13211 -0
- package/dist/style/graph-stylesheet-schema.d.ts.map +1 -0
- package/dist/style/graph-stylesheet-schema.js +346 -0
- package/dist/style/graph-stylesheet-schema.js.map +1 -0
- package/dist/style/style-property.d.ts.map +1 -1
- package/dist/style/style-property.js +17 -5
- package/dist/style/style-property.js.map +1 -1
- package/dist/style/stylesheet-engine.d.ts.map +1 -1
- package/dist/style/stylesheet-engine.js +1 -1
- package/dist/style/stylesheet-engine.js.map +1 -1
- package/dist/utils/collapsed-chains.d.ts.map +1 -1
- package/dist/utils/collapsed-chains.js.map +1 -1
- package/dist/utils/node-boundary.d.ts.map +1 -1
- package/dist/utils/node-boundary.js +1 -1
- package/dist/utils/node-boundary.js.map +1 -1
- package/dist/utils/rank-grid.d.ts.map +1 -1
- package/dist/utils/rank-grid.js +5 -2
- package/dist/utils/rank-grid.js.map +1 -1
- package/package.json +8 -8
- package/src/_deprecated/old-constants.ts +12 -6
- package/src/core/graph-engine.ts +7 -2
- package/src/core/graph-layout.ts +2 -6
- package/src/core/interaction-manager.ts +2 -1
- package/src/graph/arrow-graph.ts +17 -10
- package/src/graph/classic-graph.ts +8 -5
- package/src/graph/functions/arrow-utils.ts +8 -4
- package/src/graph/functions/create-graph-from-data.ts +2 -2
- package/src/graph/graph-normalization.ts +8 -2
- package/src/graph-data/arrow-graph-data-builder.ts +6 -3
- package/src/graph-data/graph-data-builder.ts +1 -1
- package/src/graph-data/plain-graph-data-builder.ts +1 -1
- package/src/index.ts +35 -17
- package/src/layers/common-layers/grid-layer/grid-layer.ts +26 -19
- package/src/layers/edge-attachment-helper.ts +54 -45
- package/src/layers/edge-layer.ts +4 -4
- package/src/layers/edge-layers/arrow-2d-geometry.ts +1 -8
- package/src/layers/graph-layer.ts +109 -99
- package/src/layouts/d3-dag/collapsable-d3-dag-layout.ts +14 -7
- package/src/layouts/d3-dag/d3-dag-layout.ts +31 -19
- package/src/layouts/experimental/radial-layout.ts +4 -1
- package/src/layouts/simple-layout.ts +6 -4
- package/src/loaders/dot-graph-loader.ts +19 -7
- package/src/loaders/json-graph-loader.ts +3 -5
- package/src/loaders/parsers/parse-json-graph.ts +2 -1
- package/src/style/graph-layer-stylesheet.ts +26 -19
- package/src/style/graph-style-engine.ts +30 -17
- package/src/style/graph-stylesheet-schema.ts +490 -0
- package/src/style/style-property.ts +26 -11
- package/src/style/stylesheet-engine.ts +44 -29
- package/src/utils/collapsed-chains.ts +6 -2
- package/src/utils/node-boundary.ts +2 -3
- package/src/utils/rank-grid.ts +31 -17
- package/dist/style/graph-stylesheet.schema.d.ts +0 -311
- package/dist/style/graph-stylesheet.schema.d.ts.map +0 -1
- package/dist/style/graph-stylesheet.schema.js +0 -238
- package/dist/style/graph-stylesheet.schema.js.map +0 -1
- package/src/style/graph-stylesheet.schema.ts +0 -344
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import * as arrow from 'apache-arrow';
|
|
7
7
|
|
|
8
8
|
import type {EdgeState, NodeState} from '../core/constants';
|
|
9
|
-
import type {GraphEdgeData, GraphNodeData,ArrowGraphData} from './graph-data';
|
|
9
|
+
import type {GraphEdgeData, GraphNodeData, ArrowGraphData} from './graph-data';
|
|
10
10
|
import {
|
|
11
11
|
cloneRecord,
|
|
12
12
|
normalizeEdgeState,
|
|
@@ -130,7 +130,11 @@ export class ArrowGraphDataBuilder {
|
|
|
130
130
|
builder.append(value);
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
private appendJson(
|
|
133
|
+
private appendJson(
|
|
134
|
+
builders: ColumnBuilderMap,
|
|
135
|
+
columnName: string,
|
|
136
|
+
value: Record<string, unknown>
|
|
137
|
+
): void {
|
|
134
138
|
const builder = this.getOrCreateBuilder(builders, columnName, () =>
|
|
135
139
|
arrow.makeBuilder({type: new arrow.Utf8(), nullValues: [null, undefined]})
|
|
136
140
|
);
|
|
@@ -162,4 +166,3 @@ function tableFromBuilders(builders: ColumnBuilderMap): arrow.Table {
|
|
|
162
166
|
|
|
163
167
|
return arrow.tableFromArrays(columns);
|
|
164
168
|
}
|
|
165
|
-
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
5
|
import type {PlainGraphData, GraphEdgeData, GraphNodeData} from './graph-data';
|
|
6
|
-
import {
|
|
6
|
+
import {GraphDataBuilder} from './graph-data-builder';
|
|
7
7
|
import {cloneRecord, normalizeVersion} from '../graph/graph-normalization';
|
|
8
8
|
|
|
9
9
|
export type PlainGraphDataBuilderOptions = {
|
package/src/index.ts
CHANGED
|
@@ -4,14 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
// Graph Data - output from loaders, input to writers
|
|
6
6
|
|
|
7
|
-
export type {
|
|
8
|
-
|
|
7
|
+
export type {
|
|
8
|
+
GraphData,
|
|
9
|
+
PlainGraphData,
|
|
10
|
+
ArrowGraphData /* , GraphNodeData, GraphEdgeData */
|
|
11
|
+
} from './graph-data/graph-data';
|
|
12
|
+
export type {
|
|
13
|
+
GraphDataBuilder /* , GraphDataBuilderOptions */
|
|
14
|
+
} from './graph-data/graph-data-builder';
|
|
9
15
|
export {
|
|
10
16
|
ArrowGraphDataBuilder,
|
|
11
17
|
type ArrowGraphDataBuilderOptions
|
|
12
18
|
} from './graph-data/arrow-graph-data-builder';
|
|
13
19
|
|
|
14
|
-
|
|
15
20
|
// core - Graph representation and layout
|
|
16
21
|
export type {Graph, NodeInterface, EdgeInterface} from './graph/graph';
|
|
17
22
|
export {Node} from './graph/node';
|
|
@@ -36,11 +41,7 @@ export {ArrowGraph} from './graph/arrow-graph';
|
|
|
36
41
|
export {GraphEngine} from './core/graph-engine';
|
|
37
42
|
|
|
38
43
|
// graph-layers layouts
|
|
39
|
-
export type {
|
|
40
|
-
GraphLayoutProps,
|
|
41
|
-
GraphLayoutState,
|
|
42
|
-
GraphLayoutEventDetail
|
|
43
|
-
} from './core/graph-layout';
|
|
44
|
+
export type {GraphLayoutProps, GraphLayoutState, GraphLayoutEventDetail} from './core/graph-layout';
|
|
44
45
|
export {GraphLayout} from './core/graph-layout';
|
|
45
46
|
|
|
46
47
|
export {SimpleLayout} from './layouts/simple-layout';
|
|
@@ -52,18 +53,30 @@ export {RadialLayout} from './layouts/experimental/radial-layout';
|
|
|
52
53
|
export {ForceMultiGraphLayout} from './layouts/experimental/force-multi-graph-layout';
|
|
53
54
|
export {HivePlotLayout} from './layouts/experimental/hive-plot-layout';
|
|
54
55
|
|
|
55
|
-
export type {
|
|
56
|
+
export type {
|
|
57
|
+
Marker,
|
|
58
|
+
NodeState,
|
|
59
|
+
NodeType,
|
|
60
|
+
EdgeType,
|
|
61
|
+
EdgeDecoratorType,
|
|
62
|
+
LayoutState
|
|
63
|
+
} from './core/constants';
|
|
56
64
|
|
|
57
65
|
// deck.gl components
|
|
58
66
|
export {GraphLayer} from './layers/graph-layer';
|
|
59
67
|
export type {RankGridConfig} from './layers/graph-layer';
|
|
60
68
|
export {EdgeLayer} from './layers/edge-layer';
|
|
61
|
-
export {
|
|
69
|
+
export {
|
|
70
|
+
GridLayer,
|
|
71
|
+
type GridLayerProps,
|
|
72
|
+
type GridLineDatum
|
|
73
|
+
} from './layers/common-layers/grid-layer/grid-layer';
|
|
62
74
|
export {StylesheetEngine} from './style/stylesheet-engine';
|
|
63
75
|
export {GraphStylesheetEngine, GraphStyleEngine} from './style/graph-style-engine';
|
|
64
76
|
export type {
|
|
65
77
|
GraphStylesheet,
|
|
66
|
-
|
|
78
|
+
GraphStyleRule,
|
|
79
|
+
GraphStyleRuleParsed,
|
|
67
80
|
GraphStylesheetParsed,
|
|
68
81
|
GraphStyleAttributeReference,
|
|
69
82
|
GraphStyleScale,
|
|
@@ -92,16 +105,21 @@ export {
|
|
|
92
105
|
} from './utils/rank-grid';
|
|
93
106
|
|
|
94
107
|
// graph format loaders
|
|
95
|
-
export {
|
|
96
|
-
JSONGraphLoader,
|
|
97
|
-
type JSONGraphLoaderOptions,
|
|
98
|
-
} from './loaders/json-graph-loader';
|
|
108
|
+
export {JSONGraphLoader, type JSONGraphLoaderOptions} from './loaders/json-graph-loader';
|
|
99
109
|
|
|
100
110
|
export {
|
|
101
111
|
DOTGraphLoader,
|
|
102
112
|
type DOTGraphLoaderOptions,
|
|
103
|
-
type DOTGraphLoaderMetadata
|
|
113
|
+
type DOTGraphLoaderMetadata
|
|
104
114
|
} from './loaders/dot-graph-loader';
|
|
105
115
|
|
|
106
116
|
// Deprecated exports
|
|
107
|
-
export {
|
|
117
|
+
export {
|
|
118
|
+
MARKER_TYPE,
|
|
119
|
+
NODE_STATE,
|
|
120
|
+
EDGE_STATE,
|
|
121
|
+
NODE_TYPE,
|
|
122
|
+
EDGE_TYPE,
|
|
123
|
+
EDGE_DECORATOR_TYPE,
|
|
124
|
+
LAYOUT_STATE
|
|
125
|
+
} from './_deprecated/old-constants';
|
|
@@ -49,10 +49,25 @@ const DEFAULT_OFFSET: [number, number] = [8, 0];
|
|
|
49
49
|
const DEFAULT_MIN = -1e6;
|
|
50
50
|
const DEFAULT_MAX = 1e6;
|
|
51
51
|
|
|
52
|
-
export class GridLayer<DatumT extends GridLineDatum = GridLineDatum> extends CompositeLayer<
|
|
52
|
+
export class GridLayer<DatumT extends GridLineDatum = GridLineDatum> extends CompositeLayer<
|
|
53
|
+
GridLayerProps<DatumT>
|
|
54
|
+
> {
|
|
53
55
|
static override layerName = 'GridLayer';
|
|
54
56
|
|
|
55
|
-
static override defaultProps: Required<
|
|
57
|
+
static override defaultProps: Required<
|
|
58
|
+
Pick<
|
|
59
|
+
GridLayerProps<GridLineDatum>,
|
|
60
|
+
| 'direction'
|
|
61
|
+
| 'width'
|
|
62
|
+
| 'color'
|
|
63
|
+
| 'xMin'
|
|
64
|
+
| 'xMax'
|
|
65
|
+
| 'yMin'
|
|
66
|
+
| 'yMax'
|
|
67
|
+
| 'showLabels'
|
|
68
|
+
| 'labelOffset'
|
|
69
|
+
>
|
|
70
|
+
> = {
|
|
56
71
|
direction: 'horizontal',
|
|
57
72
|
width: DEFAULT_WIDTH,
|
|
58
73
|
color: DEFAULT_COLOR,
|
|
@@ -66,7 +81,9 @@ export class GridLayer<DatumT extends GridLineDatum = GridLineDatum> extends Com
|
|
|
66
81
|
|
|
67
82
|
override shouldUpdateState(params: UpdateParameters<this>): boolean {
|
|
68
83
|
const {changeFlags} = params;
|
|
69
|
-
return Boolean(
|
|
84
|
+
return Boolean(
|
|
85
|
+
changeFlags.dataChanged || changeFlags.propsChanged || changeFlags.viewportChanged
|
|
86
|
+
);
|
|
70
87
|
}
|
|
71
88
|
|
|
72
89
|
override renderLayers() {
|
|
@@ -151,21 +168,13 @@ export class GridLayer<DatumT extends GridLineDatum = GridLineDatum> extends Com
|
|
|
151
168
|
|
|
152
169
|
const [bxMin, byMin, bxMax, byMax] = viewportBounds;
|
|
153
170
|
const minX =
|
|
154
|
-
Number.isFinite(bxMin) && Number.isFinite(bxMax)
|
|
155
|
-
? Math.min(bounds.xMin, bxMin)
|
|
156
|
-
: bounds.xMin;
|
|
171
|
+
Number.isFinite(bxMin) && Number.isFinite(bxMax) ? Math.min(bounds.xMin, bxMin) : bounds.xMin;
|
|
157
172
|
const maxX =
|
|
158
|
-
Number.isFinite(bxMin) && Number.isFinite(bxMax)
|
|
159
|
-
? Math.max(bounds.xMax, bxMax)
|
|
160
|
-
: bounds.xMax;
|
|
173
|
+
Number.isFinite(bxMin) && Number.isFinite(bxMax) ? Math.max(bounds.xMax, bxMax) : bounds.xMax;
|
|
161
174
|
const minY =
|
|
162
|
-
Number.isFinite(byMin) && Number.isFinite(byMax)
|
|
163
|
-
? Math.min(bounds.yMin, byMin)
|
|
164
|
-
: bounds.yMin;
|
|
175
|
+
Number.isFinite(byMin) && Number.isFinite(byMax) ? Math.min(bounds.yMin, byMin) : bounds.yMin;
|
|
165
176
|
const maxY =
|
|
166
|
-
Number.isFinite(byMin) && Number.isFinite(byMax)
|
|
167
|
-
? Math.max(bounds.yMax, byMax)
|
|
168
|
-
: bounds.yMax;
|
|
177
|
+
Number.isFinite(byMin) && Number.isFinite(byMax) ? Math.max(bounds.yMax, byMax) : bounds.yMax;
|
|
169
178
|
|
|
170
179
|
return {minX, maxX, minY, maxY};
|
|
171
180
|
}
|
|
@@ -222,12 +231,10 @@ export class GridLayer<DatumT extends GridLineDatum = GridLineDatum> extends Com
|
|
|
222
231
|
const isHorizontal = direction === 'horizontal';
|
|
223
232
|
|
|
224
233
|
for (const {datum, sourcePosition} of lines) {
|
|
225
|
-
const rawLabel = getLabel ? getLabel(datum) : datum.label ?? null;
|
|
234
|
+
const rawLabel = getLabel ? getLabel(datum) : (datum.label ?? null);
|
|
226
235
|
if (rawLabel !== null && rawLabel !== undefined && rawLabel !== '') {
|
|
227
236
|
const [sx, sy] = sourcePosition;
|
|
228
|
-
const position: [number, number] = isHorizontal
|
|
229
|
-
? [bounds.minX, sy]
|
|
230
|
-
: [sx, bounds.minY];
|
|
237
|
+
const position: [number, number] = isHorizontal ? [bounds.minX, sy] : [sx, bounds.minY];
|
|
231
238
|
labels.push({position, text: String(rawLabel), datum});
|
|
232
239
|
}
|
|
233
240
|
}
|
|
@@ -6,12 +6,13 @@ import type {InteractionManager} from '../core/interaction-manager';
|
|
|
6
6
|
import type {GraphEngine} from '../core/graph-engine';
|
|
7
7
|
import type {NodeInterface} from '../graph/graph';
|
|
8
8
|
|
|
9
|
-
import {
|
|
10
|
-
GraphStylesheetEngine,
|
|
11
|
-
type GraphStylesheet
|
|
12
|
-
} from '../style/graph-style-engine';
|
|
9
|
+
import {GraphStylesheetEngine, type GraphStyleRule} from '../style/graph-style-engine';
|
|
13
10
|
import type {GraphLayerNodeStyle} from '../style/graph-layer-stylesheet';
|
|
14
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
getNodeBoundaryIntersection,
|
|
13
|
+
type GeometryNodeType,
|
|
14
|
+
type NodeGeometry
|
|
15
|
+
} from '../utils/node-boundary';
|
|
15
16
|
import {warn} from '../utils/log';
|
|
16
17
|
|
|
17
18
|
type NumericAccessor = ((node: NodeInterface) => number) | number | null | undefined;
|
|
@@ -39,7 +40,10 @@ const GEOMETRY_NODE_TYPES: GeometryNodeType[] = [
|
|
|
39
40
|
'marker'
|
|
40
41
|
];
|
|
41
42
|
|
|
42
|
-
function evaluateNumericAccessor(
|
|
43
|
+
function evaluateNumericAccessor(
|
|
44
|
+
accessor: NumericAccessor,
|
|
45
|
+
node: NodeInterface
|
|
46
|
+
): number | undefined {
|
|
43
47
|
if (typeof accessor === 'function') {
|
|
44
48
|
const value = accessor(node);
|
|
45
49
|
return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
|
|
@@ -130,12 +134,20 @@ const GEOMETRY_APPLIERS: Record<
|
|
|
130
134
|
},
|
|
131
135
|
'rounded-rectangle': (node, accessors, geometry) => {
|
|
132
136
|
assignRectangleDimensions(node, accessors, geometry);
|
|
133
|
-
assignDimension(
|
|
137
|
+
assignDimension(
|
|
138
|
+
geometry,
|
|
139
|
+
'cornerRadius',
|
|
140
|
+
resolveAccessorValue(accessors.getCornerRadius, node)
|
|
141
|
+
);
|
|
134
142
|
assignDimension(geometry, 'radius', resolveAccessorValue(accessors.getRadius, node));
|
|
135
143
|
},
|
|
136
144
|
'path-rounded-rectangle': (node, accessors, geometry) => {
|
|
137
145
|
assignRectangleDimensions(node, accessors, geometry);
|
|
138
|
-
assignDimension(
|
|
146
|
+
assignDimension(
|
|
147
|
+
geometry,
|
|
148
|
+
'cornerRadius',
|
|
149
|
+
resolveAccessorValue(accessors.getCornerRadius, node)
|
|
150
|
+
);
|
|
139
151
|
}
|
|
140
152
|
};
|
|
141
153
|
|
|
@@ -166,8 +178,7 @@ export class EdgeAttachmentHelper {
|
|
|
166
178
|
new Map<string | number, NodeInterface>()
|
|
167
179
|
);
|
|
168
180
|
|
|
169
|
-
return (edge: any) =>
|
|
170
|
-
this._getAdjustedEdgeLayout(engine, nodeAccessorMap, nodeMap, edge);
|
|
181
|
+
return (edge: any) => this._getAdjustedEdgeLayout(engine, nodeAccessorMap, nodeMap, edge);
|
|
171
182
|
}
|
|
172
183
|
|
|
173
184
|
private _buildNodeStyleAccessorMap({
|
|
@@ -187,45 +198,43 @@ export class EdgeAttachmentHelper {
|
|
|
187
198
|
|
|
188
199
|
const styles = Array.isArray(nodeStyle) ? nodeStyle : [nodeStyle];
|
|
189
200
|
|
|
190
|
-
styles
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
const {data = (nodes) => nodes, ...restStyle} = style;
|
|
194
|
-
const type = restStyle.type;
|
|
195
|
-
|
|
196
|
-
if (!type || !GEOMETRY_NODE_TYPES.includes(type as GeometryNodeType)) {
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
let stylesheet: GraphStylesheetEngine | null = null;
|
|
201
|
-
try {
|
|
202
|
-
stylesheet = engine.createStylesheetEngine(restStyle as GraphStylesheet, {
|
|
203
|
-
stateUpdateTrigger: (interactionManager as any).getLastInteraction()
|
|
204
|
-
});
|
|
205
|
-
} catch (error) {
|
|
206
|
-
warn(
|
|
207
|
-
`GraphLayer: Failed to evaluate node stylesheet for edge attachment (${String(
|
|
208
|
-
(error as Error).message ?? error
|
|
209
|
-
)}).`
|
|
210
|
-
);
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
const nodes = data(engine.getNodes());
|
|
215
|
-
if (!Array.isArray(nodes)) {
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
201
|
+
styles.filter(Boolean).forEach((style) => {
|
|
202
|
+
const {data = (nodes) => nodes, ...restStyle} = style;
|
|
203
|
+
const type = restStyle.type;
|
|
218
204
|
|
|
219
|
-
|
|
220
|
-
|
|
205
|
+
if (!type || !GEOMETRY_NODE_TYPES.includes(type as GeometryNodeType)) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
221
208
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
}
|
|
209
|
+
let stylesheet: GraphStylesheetEngine | null = null;
|
|
210
|
+
try {
|
|
211
|
+
stylesheet = engine.createStylesheetEngine(restStyle as GraphStyleRule, {
|
|
212
|
+
stateUpdateTrigger: (interactionManager as any).getLastInteraction()
|
|
227
213
|
});
|
|
214
|
+
} catch (error) {
|
|
215
|
+
warn(
|
|
216
|
+
`GraphLayer: Failed to evaluate node stylesheet for edge attachment (${String(
|
|
217
|
+
(error as Error).message ?? error
|
|
218
|
+
)}).`
|
|
219
|
+
);
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
const nodes = data(engine.getNodes());
|
|
224
|
+
if (!Array.isArray(nodes)) {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
const geometryType = type as GeometryNodeType;
|
|
229
|
+
const accessors = this._createAccessorsForType(geometryType, stylesheet);
|
|
230
|
+
|
|
231
|
+
nodes.forEach((node: NodeInterface) => {
|
|
232
|
+
const id = node.getId();
|
|
233
|
+
if (!nodeAccessorMap.has(id)) {
|
|
234
|
+
nodeAccessorMap.set(id, accessors);
|
|
235
|
+
}
|
|
228
236
|
});
|
|
237
|
+
});
|
|
229
238
|
|
|
230
239
|
return nodeAccessorMap;
|
|
231
240
|
}
|
package/src/layers/edge-layer.ts
CHANGED
|
@@ -9,8 +9,8 @@ import {PathEdgeLayer} from './edge-layers/path-edge-layer';
|
|
|
9
9
|
import {CurvedEdgeLayer} from './edge-layers/curved-edge-layer';
|
|
10
10
|
|
|
11
11
|
const EDGE_LAYER_MAP = {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
line: StraightLineEdgeLayer,
|
|
13
|
+
path: PathEdgeLayer,
|
|
14
14
|
'spline-curve': CurvedEdgeLayer
|
|
15
15
|
};
|
|
16
16
|
|
|
@@ -46,8 +46,8 @@ export class EdgeLayer extends CompositeLayer {
|
|
|
46
46
|
return res;
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
line: [],
|
|
50
|
+
path: [],
|
|
51
51
|
'spline-curve': []
|
|
52
52
|
}
|
|
53
53
|
);
|
|
@@ -34,14 +34,7 @@ function getArrowAttributes({length = 1, headWidth = 1}) {
|
|
|
34
34
|
|
|
35
35
|
const normals = new Float32Array([0, 0, 1, 0, 0, 1, 0, 0, 1]);
|
|
36
36
|
|
|
37
|
-
const texCoords = new Float32Array([
|
|
38
|
-
0.5,
|
|
39
|
-
1,
|
|
40
|
-
0,
|
|
41
|
-
0,
|
|
42
|
-
1,
|
|
43
|
-
0
|
|
44
|
-
]);
|
|
37
|
+
const texCoords = new Float32Array([0.5, 1, 0, 0, 1, 0]);
|
|
45
38
|
|
|
46
39
|
return {
|
|
47
40
|
positions: {size: 3, value: positions},
|