@deck.gl-community/graph-layers 9.2.0-beta.2 → 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.
- package/dist/core/graph-engine.d.ts +63 -21
- package/dist/core/graph-engine.d.ts.map +1 -1
- package/dist/core/graph-engine.js +155 -75
- package/dist/core/graph-engine.js.map +1 -1
- package/dist/core/graph-layout.d.ts +22 -18
- package/dist/core/graph-layout.d.ts.map +1 -1
- package/dist/core/graph-layout.js +33 -18
- package/dist/core/graph-layout.js.map +1 -1
- package/dist/core/interaction-manager.d.ts +2 -2
- package/dist/core/interaction-manager.d.ts.map +1 -1
- package/dist/core/interaction-manager.js +7 -5
- package/dist/core/interaction-manager.js.map +1 -1
- package/dist/graph/arrow-graph.d.ts +69 -0
- package/dist/graph/arrow-graph.d.ts.map +1 -0
- package/dist/graph/arrow-graph.js +513 -0
- package/dist/graph/arrow-graph.js.map +1 -0
- package/dist/graph/classic-graph.d.ts +169 -0
- package/dist/graph/classic-graph.d.ts.map +1 -0
- package/dist/graph/classic-graph.js +390 -0
- package/dist/graph/classic-graph.js.map +1 -0
- package/dist/graph/edge.d.ts +6 -6
- package/dist/graph/edge.d.ts.map +1 -1
- package/dist/graph/edge.js.map +1 -1
- package/dist/graph/functions/arrow-utils.d.ts +6 -0
- package/dist/graph/functions/arrow-utils.d.ts.map +1 -0
- package/dist/graph/functions/arrow-utils.js +67 -0
- package/dist/graph/functions/arrow-utils.js.map +1 -0
- package/dist/graph/functions/create-graph-from-data.d.ts +3 -0
- package/dist/graph/functions/create-graph-from-data.d.ts.map +1 -0
- package/dist/graph/functions/create-graph-from-data.js +12 -0
- package/dist/graph/functions/create-graph-from-data.js.map +1 -0
- package/dist/graph/graph-normalization.d.ts +10 -0
- package/dist/graph/graph-normalization.d.ts.map +1 -0
- package/dist/graph/graph-normalization.js +65 -0
- package/dist/graph/graph-normalization.js.map +1 -0
- package/dist/graph/graph.d.ts +62 -155
- package/dist/graph/graph.d.ts.map +1 -1
- package/dist/graph/graph.js +11 -300
- package/dist/graph/graph.js.map +1 -1
- package/dist/graph/node.d.ts +6 -6
- package/dist/graph/node.d.ts.map +1 -1
- package/dist/graph/node.js +2 -2
- package/dist/graph/node.js.map +1 -1
- package/dist/graph-data/arrow-graph-data-builder.d.ts +21 -0
- package/dist/graph-data/arrow-graph-data-builder.d.ts.map +1 -0
- package/dist/graph-data/arrow-graph-data-builder.js +105 -0
- package/dist/graph-data/arrow-graph-data-builder.js.map +1 -0
- package/dist/graph-data/graph-data-builder.d.ts +6 -0
- package/dist/graph-data/graph-data-builder.d.ts.map +1 -0
- package/dist/graph-data/graph-data-builder.js +1 -0
- package/dist/graph-data/graph-data-builder.js.map +1 -0
- package/dist/graph-data/graph-data.d.ts +40 -0
- package/dist/graph-data/graph-data.d.ts.map +1 -0
- package/dist/graph-data/graph-data.js +11 -0
- package/dist/graph-data/graph-data.js.map +1 -0
- package/dist/graph-data/plain-graph-data-builder.d.ts +20 -0
- package/dist/graph-data/plain-graph-data-builder.d.ts.map +1 -0
- package/dist/graph-data/plain-graph-data-builder.js +105 -0
- package/dist/graph-data/plain-graph-data-builder.js.map +1 -0
- package/dist/graph-style-schema.cdn.js +1 -1
- package/dist/graph-style-schema.json +1 -1
- package/dist/index.cjs +6905 -4576
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +14 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -11
- package/dist/index.js.map +1 -1
- package/dist/layers/common-layers/flow-path-layer/flow-path-layer.d.ts.map +1 -1
- package/dist/layers/common-layers/flow-path-layer/flow-path-layer.js +1 -2
- package/dist/layers/common-layers/flow-path-layer/flow-path-layer.js.map +1 -1
- package/dist/layers/common-layers/grid-layer/grid-layer.d.ts +83 -0
- package/dist/layers/common-layers/grid-layer/grid-layer.d.ts.map +1 -0
- package/dist/layers/common-layers/grid-layer/grid-layer.js +133 -0
- package/dist/layers/common-layers/grid-layer/grid-layer.js.map +1 -0
- package/dist/layers/edge-attachment-helper.d.ts.map +1 -1
- package/dist/layers/edge-attachment-helper.js +1 -2
- package/dist/layers/edge-attachment-helper.js.map +1 -1
- package/dist/layers/graph-layer.d.ts +68 -11
- package/dist/layers/graph-layer.d.ts.map +1 -1
- package/dist/layers/graph-layer.js +435 -50
- package/dist/layers/graph-layer.js.map +1 -1
- package/dist/layouts/d3-dag/collapsable-d3-dag-layout.d.ts +24 -0
- package/dist/layouts/d3-dag/collapsable-d3-dag-layout.d.ts.map +1 -0
- package/dist/layouts/d3-dag/collapsable-d3-dag-layout.js +251 -0
- package/dist/layouts/d3-dag/collapsable-d3-dag-layout.js.map +1 -0
- package/dist/layouts/d3-dag/d3-dag-layout.d.ts +46 -61
- package/dist/layouts/d3-dag/d3-dag-layout.d.ts.map +1 -1
- package/dist/layouts/d3-dag/d3-dag-layout.js +85 -270
- package/dist/layouts/d3-dag/d3-dag-layout.js.map +1 -1
- package/dist/layouts/d3-force/d3-force-layout.d.ts +20 -8
- package/dist/layouts/d3-force/d3-force-layout.d.ts.map +1 -1
- package/dist/layouts/d3-force/d3-force-layout.js +39 -20
- package/dist/layouts/d3-force/d3-force-layout.js.map +1 -1
- package/dist/layouts/experimental/force-multi-graph-layout.d.ts +19 -15
- package/dist/layouts/experimental/force-multi-graph-layout.d.ts.map +1 -1
- package/dist/layouts/experimental/force-multi-graph-layout.js +47 -38
- package/dist/layouts/experimental/force-multi-graph-layout.js.map +1 -1
- package/dist/layouts/experimental/hive-plot-layout.d.ts +18 -15
- package/dist/layouts/experimental/hive-plot-layout.d.ts.map +1 -1
- package/dist/layouts/experimental/hive-plot-layout.js +33 -34
- package/dist/layouts/experimental/hive-plot-layout.js.map +1 -1
- package/dist/layouts/experimental/radial-layout.d.ts +12 -7
- package/dist/layouts/experimental/radial-layout.d.ts.map +1 -1
- package/dist/layouts/experimental/radial-layout.js +31 -14
- package/dist/layouts/experimental/radial-layout.js.map +1 -1
- package/dist/layouts/gpu-force/gpu-force-layout.d.ts +11 -8
- package/dist/layouts/gpu-force/gpu-force-layout.d.ts.map +1 -1
- package/dist/layouts/gpu-force/gpu-force-layout.js +59 -56
- package/dist/layouts/gpu-force/gpu-force-layout.js.map +1 -1
- package/dist/layouts/simple-layout.d.ts +8 -25
- package/dist/layouts/simple-layout.d.ts.map +1 -1
- package/dist/layouts/simple-layout.js +13 -17
- package/dist/layouts/simple-layout.js.map +1 -1
- package/dist/loaders/dot-graph-loader.d.ts +25 -0
- package/dist/loaders/dot-graph-loader.d.ts.map +1 -0
- package/dist/loaders/dot-graph-loader.js +668 -0
- package/dist/loaders/dot-graph-loader.js.map +1 -0
- package/dist/loaders/json-graph-loader.d.ts +6 -0
- package/dist/loaders/json-graph-loader.d.ts.map +1 -0
- package/dist/loaders/json-graph-loader.js +31 -0
- package/dist/loaders/json-graph-loader.js.map +1 -0
- package/dist/loaders/{edge-parsers.d.ts → parsers/edge-parsers.d.ts} +1 -1
- package/dist/loaders/parsers/edge-parsers.d.ts.map +1 -0
- package/dist/loaders/{edge-parsers.js → parsers/edge-parsers.js} +1 -1
- package/dist/loaders/parsers/edge-parsers.js.map +1 -0
- package/dist/loaders/{node-parsers.d.ts → parsers/node-parsers.d.ts} +1 -1
- package/dist/loaders/parsers/node-parsers.d.ts.map +1 -0
- package/dist/loaders/{node-parsers.js → parsers/node-parsers.js} +1 -1
- package/dist/loaders/parsers/node-parsers.js.map +1 -0
- package/dist/loaders/parsers/parse-json-graph.d.ts +29 -0
- package/dist/loaders/parsers/parse-json-graph.d.ts.map +1 -0
- package/dist/loaders/parsers/parse-json-graph.js +78 -0
- package/dist/loaders/parsers/parse-json-graph.js.map +1 -0
- package/dist/style/graph-style-engine.d.ts +4 -2
- package/dist/style/graph-style-engine.d.ts.map +1 -1
- package/dist/style/graph-style-engine.js +3 -2
- package/dist/style/graph-style-engine.js.map +1 -1
- package/dist/style/{style-engine.d.ts → stylesheet-engine.d.ts} +3 -3
- package/dist/style/stylesheet-engine.d.ts.map +1 -0
- package/dist/style/{style-engine.js → stylesheet-engine.js} +1 -1
- package/dist/style/stylesheet-engine.js.map +1 -0
- package/dist/utils/collapsed-chains.d.ts +8 -8
- package/dist/utils/collapsed-chains.d.ts.map +1 -1
- package/dist/utils/collapsed-chains.js +1 -6
- package/dist/utils/collapsed-chains.js.map +1 -1
- package/dist/utils/rank-grid.d.ts +30 -0
- package/dist/utils/rank-grid.d.ts.map +1 -0
- package/dist/utils/rank-grid.js +306 -0
- package/dist/utils/rank-grid.js.map +1 -0
- package/package.json +4 -8
- package/src/_disabled/arrow-graph-data.ts.disabled +18 -0
- package/src/_disabled/columnar-graph-data-builder.ts.disabled +250 -0
- package/src/_disabled/graph-runtime-layout.ts.disabled +29 -0
- package/src/core/graph-engine.ts +201 -84
- package/src/core/graph-layout.ts +52 -29
- package/src/core/interaction-manager.ts +20 -20
- package/src/graph/arrow-graph.ts +648 -0
- package/src/graph/classic-graph.ts +447 -0
- package/src/graph/edge.ts +7 -7
- package/src/graph/functions/arrow-utils.ts +72 -0
- package/src/graph/functions/convert-arrow-graph-to-classic-graph.ts.disabled +47 -0
- package/src/graph/functions/convert-plain-graph-to-arrow-graph.ts.disabled +119 -0
- package/src/graph/functions/create-graph-from-data.ts +16 -0
- package/src/graph/functions/create-plain-graph-from-data.ts.disabled +176 -0
- package/src/graph/graph-normalization.ts +87 -0
- package/src/graph/graph.ts +68 -339
- package/src/graph/node.ts +9 -9
- package/src/graph/tabular-graph.ts.disabled +761 -0
- package/src/graph-data/arrow-graph-data-builder.ts +165 -0
- package/src/graph-data/graph-data-builder.ts +7 -0
- package/src/graph-data/graph-data.ts +57 -0
- package/src/graph-data/plain-graph-data-builder.ts +132 -0
- package/src/index.ts +53 -13
- package/src/layers/common-layers/flow-path-layer/flow-path-layer.ts +1 -2
- package/src/layers/common-layers/grid-layer/grid-layer.ts +237 -0
- package/src/layers/edge-attachment-helper.ts +22 -16
- package/src/layers/graph-layer.ts +642 -62
- package/src/layouts/d3-dag/collapsable-d3-dag-layout.ts +330 -0
- package/src/layouts/d3-dag/d3-dag-layout.ts +166 -396
- package/src/layouts/d3-force/d3-force-layout.ts +52 -30
- package/src/layouts/experimental/force-multi-graph-layout.ts +55 -49
- package/src/layouts/experimental/hive-plot-layout.ts +41 -42
- package/src/layouts/experimental/radial-layout.ts +39 -20
- package/src/layouts/gpu-force/gpu-force-layout.ts +72 -70
- package/src/layouts/simple-layout.ts +20 -44
- package/src/loaders/{create-graph.ts → deprecated/create-graph.ts.disabled} +6 -6
- package/src/loaders/deprecated/json-classic-graph-loader.ts.disabled +33 -0
- package/src/loaders/{simple-json-graph-loader.ts → deprecated/simple-json-graph-loader.ts.disabled} +3 -3
- package/src/loaders/{table-graph-loader.ts → deprecated/table-graph-loader.ts.disabled} +8 -8
- package/src/loaders/dot-graph-loader.ts +860 -0
- package/src/loaders/json-graph-loader.ts +48 -0
- package/src/loaders/parsers/create-graph-data.ts.disabled +45 -0
- package/src/loaders/{edge-parsers.ts → parsers/edge-parsers.ts} +2 -2
- package/src/loaders/{node-parsers.ts → parsers/node-parsers.ts} +2 -2
- package/src/loaders/parsers/parse-json-graph.ts +134 -0
- package/src/style/graph-style-engine.ts +5 -2
- package/src/style/{style-engine.ts → stylesheet-engine.ts} +3 -3
- package/src/utils/collapsed-chains.ts +11 -17
- package/src/utils/rank-grid.ts +426 -0
- package/dist/loaders/create-graph.d.ts +0 -12
- package/dist/loaders/create-graph.d.ts.map +0 -1
- package/dist/loaders/create-graph.js +0 -38
- package/dist/loaders/create-graph.js.map +0 -1
- package/dist/loaders/edge-parsers.d.ts.map +0 -1
- package/dist/loaders/edge-parsers.js.map +0 -1
- package/dist/loaders/json-loader.d.ts +0 -7
- package/dist/loaders/json-loader.d.ts.map +0 -1
- package/dist/loaders/json-loader.js +0 -16
- package/dist/loaders/json-loader.js.map +0 -1
- package/dist/loaders/node-parsers.d.ts.map +0 -1
- package/dist/loaders/node-parsers.js.map +0 -1
- package/dist/loaders/simple-json-graph-loader.d.ts +0 -11
- package/dist/loaders/simple-json-graph-loader.d.ts.map +0 -1
- package/dist/loaders/simple-json-graph-loader.js +0 -20
- package/dist/loaders/simple-json-graph-loader.js.map +0 -1
- package/dist/loaders/table-graph-loader.d.ts +0 -16
- package/dist/loaders/table-graph-loader.d.ts.map +0 -1
- package/dist/loaders/table-graph-loader.js +0 -91
- package/dist/loaders/table-graph-loader.js.map +0 -1
- package/dist/style/style-engine.d.ts.map +0 -1
- package/dist/style/style-engine.js.map +0 -1
- package/dist/widgets/long-press-button.d.ts +0 -12
- package/dist/widgets/long-press-button.d.ts.map +0 -1
- package/dist/widgets/long-press-button.js +0 -31
- package/dist/widgets/long-press-button.js.map +0 -1
- package/dist/widgets/view-control-widget.d.ts +0 -77
- package/dist/widgets/view-control-widget.d.ts.map +0 -1
- package/dist/widgets/view-control-widget.js +0 -197
- package/dist/widgets/view-control-widget.js.map +0 -1
- package/src/loaders/json-loader.ts +0 -19
- package/src/widgets/long-press-button.tsx +0 -50
- package/src/widgets/view-control-widget.tsx +0 -339
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { GraphLayout, GraphLayoutProps } from '../../core/graph-layout';
|
|
2
|
+
import type { Graph, NodeInterface, EdgeInterface } from '../../graph/graph';
|
|
2
3
|
export type D3ForceLayoutOptions = GraphLayoutProps & {
|
|
3
4
|
alpha?: number;
|
|
4
5
|
resumeAlpha?: number;
|
|
@@ -8,27 +9,38 @@ export type D3ForceLayoutOptions = GraphLayoutProps & {
|
|
|
8
9
|
getCollisionRadius?: number;
|
|
9
10
|
};
|
|
10
11
|
export declare class D3ForceLayout extends GraphLayout<D3ForceLayoutOptions> {
|
|
11
|
-
static defaultProps:
|
|
12
|
+
static defaultProps: {
|
|
13
|
+
readonly alpha: 0.3;
|
|
14
|
+
readonly resumeAlpha: 0.1;
|
|
15
|
+
readonly nBodyStrength: -900;
|
|
16
|
+
readonly nBodyDistanceMin: 100;
|
|
17
|
+
readonly nBodyDistanceMax: 400;
|
|
18
|
+
readonly getCollisionRadius: 0;
|
|
19
|
+
readonly onLayoutStart: (detail?: import("../../core/graph-layout").GraphLayoutEventDetail) => void;
|
|
20
|
+
readonly onLayoutChange: (detail?: import("../../core/graph-layout").GraphLayoutEventDetail) => void;
|
|
21
|
+
readonly onLayoutDone: (detail?: import("../../core/graph-layout").GraphLayoutEventDetail) => void;
|
|
22
|
+
readonly onLayoutError: (error?: unknown) => void;
|
|
23
|
+
};
|
|
12
24
|
protected readonly _name = "D3";
|
|
13
25
|
private _positionsByNodeId;
|
|
14
26
|
private _graph;
|
|
15
27
|
private _worker;
|
|
16
|
-
constructor(
|
|
17
|
-
initializeGraph(graph:
|
|
18
|
-
updateGraph(graph:
|
|
28
|
+
constructor(props?: D3ForceLayoutOptions);
|
|
29
|
+
initializeGraph(graph: Graph): void;
|
|
30
|
+
updateGraph(graph: Graph): void;
|
|
19
31
|
start(): void;
|
|
20
32
|
update(): void;
|
|
21
33
|
_engageWorker(): void;
|
|
22
34
|
resume(): void;
|
|
23
35
|
stop(): void;
|
|
24
|
-
getEdgePosition: (edge:
|
|
36
|
+
getEdgePosition: (edge: EdgeInterface) => {
|
|
25
37
|
type: string;
|
|
26
38
|
sourcePosition: any;
|
|
27
39
|
targetPosition: any;
|
|
28
40
|
controlPoints: any[];
|
|
29
41
|
};
|
|
30
|
-
getNodePosition: (node:
|
|
31
|
-
lockNodePosition: (node:
|
|
32
|
-
unlockNodePosition: (node:
|
|
42
|
+
getNodePosition: (node: NodeInterface | null) => any;
|
|
43
|
+
lockNodePosition: (node: NodeInterface, x: number, y: number) => void;
|
|
44
|
+
unlockNodePosition: (node: NodeInterface) => void;
|
|
33
45
|
protected _updateBounds(): void;
|
|
34
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"d3-force-layout.d.ts","sourceRoot":"","sources":["../../../src/layouts/d3-force/d3-force-layout.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAE,gBAAgB,EAAC,mCAAgC;
|
|
1
|
+
{"version":3,"file":"d3-force-layout.d.ts","sourceRoot":"","sources":["../../../src/layouts/d3-force/d3-force-layout.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAE,gBAAgB,EAAC,mCAAgC;AACtE,OAAO,KAAK,EAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAC,6BAA0B;AAG3E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,qBAAa,aAAc,SAAQ,WAAW,CAAC,oBAAoB,CAAC;IAClE,MAAM,CAAC,YAAY;;;;;;;uCADY,CAAC;wCACV,CAAC;sCAGhB,CAAC;sCAEY,CAAC;MAGyC;IAE9D,SAAS,CAAC,QAAQ,CAAC,KAAK,QAAQ;IAChC,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,OAAO,CAAuB;gBAE1B,KAAK,CAAC,EAAE,oBAAoB;IAIxC,eAAe,CAAC,KAAK,EAAE,KAAK;IAK5B,WAAW,CAAC,KAAK,EAAE,KAAK;IAWxB,KAAK;IAML,MAAM;IAIN,aAAa;IAqDb,MAAM;IAIN,IAAI;IAOJ,eAAe,GAAI,MAAM,aAAa;;;;;MAwBpC;IAEF,eAAe,GAAI,MAAM,aAAa,GAAG,IAAI,SAW3C;IAEF,gBAAgB,GAAI,MAAM,aAAa,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,UAa3D;IAEF,kBAAkB,GAAI,MAAM,aAAa,UAQvC;cAEiB,aAAa,IAAI,IAAI;CAOzC"}
|
|
@@ -5,6 +5,7 @@ import { GraphLayout } from '../../core/graph-layout';
|
|
|
5
5
|
import { log } from '../../utils/log';
|
|
6
6
|
export class D3ForceLayout extends GraphLayout {
|
|
7
7
|
static defaultProps = {
|
|
8
|
+
...GraphLayout.defaultProps,
|
|
8
9
|
alpha: 0.3,
|
|
9
10
|
resumeAlpha: 0.1,
|
|
10
11
|
nBodyStrength: -900,
|
|
@@ -14,14 +15,10 @@ export class D3ForceLayout extends GraphLayout {
|
|
|
14
15
|
};
|
|
15
16
|
_name = 'D3';
|
|
16
17
|
_positionsByNodeId = new Map();
|
|
17
|
-
_graph;
|
|
18
|
-
_worker;
|
|
19
|
-
constructor(
|
|
20
|
-
super(
|
|
21
|
-
this._options = {
|
|
22
|
-
...D3ForceLayout.defaultProps,
|
|
23
|
-
...options
|
|
24
|
-
};
|
|
18
|
+
_graph = null;
|
|
19
|
+
_worker = null;
|
|
20
|
+
constructor(props) {
|
|
21
|
+
super(props, D3ForceLayout.defaultProps);
|
|
25
22
|
}
|
|
26
23
|
initializeGraph(graph) {
|
|
27
24
|
this._graph = graph;
|
|
@@ -29,7 +26,10 @@ export class D3ForceLayout extends GraphLayout {
|
|
|
29
26
|
// for streaming new data on the same graph
|
|
30
27
|
updateGraph(graph) {
|
|
31
28
|
this._graph = graph;
|
|
32
|
-
this._positionsByNodeId = new Map(this._graph.getNodes()
|
|
29
|
+
this._positionsByNodeId = new Map(Array.from(this._graph.getNodes(), (node) => {
|
|
30
|
+
const id = node.getId();
|
|
31
|
+
return [id, this._positionsByNodeId.get(id)];
|
|
32
|
+
}));
|
|
33
33
|
}
|
|
34
34
|
start() {
|
|
35
35
|
this._engageWorker();
|
|
@@ -44,17 +44,28 @@ export class D3ForceLayout extends GraphLayout {
|
|
|
44
44
|
this._worker.terminate();
|
|
45
45
|
}
|
|
46
46
|
this._worker = new Worker(new URL('./worker.js', import.meta.url).href);
|
|
47
|
+
if (!this._graph) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const options = { ...this.props };
|
|
51
|
+
delete options.onLayoutStart;
|
|
52
|
+
delete options.onLayoutChange;
|
|
53
|
+
delete options.onLayoutDone;
|
|
54
|
+
delete options.onLayoutError;
|
|
47
55
|
this._worker.postMessage({
|
|
48
|
-
nodes: this._graph.getNodes()
|
|
49
|
-
id
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
56
|
+
nodes: Array.from(this._graph.getNodes(), (node) => {
|
|
57
|
+
const id = node.getId();
|
|
58
|
+
return {
|
|
59
|
+
id,
|
|
60
|
+
...this._positionsByNodeId.get(id)
|
|
61
|
+
};
|
|
62
|
+
}),
|
|
63
|
+
edges: Array.from(this._graph.getEdges(), (edge) => ({
|
|
64
|
+
id: edge.getId(),
|
|
54
65
|
source: edge.getSourceNodeId(),
|
|
55
66
|
target: edge.getTargetNodeId()
|
|
56
67
|
})),
|
|
57
|
-
options
|
|
68
|
+
options
|
|
58
69
|
});
|
|
59
70
|
this._worker.onmessage = (event) => {
|
|
60
71
|
log.log(0, 'D3ForceLayout: worker message', event.data?.type, event.data);
|
|
@@ -80,6 +91,9 @@ export class D3ForceLayout extends GraphLayout {
|
|
|
80
91
|
}
|
|
81
92
|
}
|
|
82
93
|
getEdgePosition = (edge) => {
|
|
94
|
+
if (!this._graph) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
83
97
|
const sourceNode = this._graph.findNode(edge.getSourceNodeId());
|
|
84
98
|
const targetNode = this._graph.findNode(edge.getTargetNodeId());
|
|
85
99
|
if (!sourceNode || !targetNode) {
|
|
@@ -101,15 +115,16 @@ export class D3ForceLayout extends GraphLayout {
|
|
|
101
115
|
if (!node) {
|
|
102
116
|
return null;
|
|
103
117
|
}
|
|
104
|
-
const d3Node = this._positionsByNodeId.get(node.
|
|
118
|
+
const d3Node = this._positionsByNodeId.get(node.getId());
|
|
105
119
|
if (d3Node) {
|
|
106
120
|
return d3Node.coordinates;
|
|
107
121
|
}
|
|
108
122
|
return null;
|
|
109
123
|
};
|
|
110
124
|
lockNodePosition = (node, x, y) => {
|
|
111
|
-
const
|
|
112
|
-
this._positionsByNodeId.
|
|
125
|
+
const id = node.getId();
|
|
126
|
+
const d3Node = this._positionsByNodeId.get(id);
|
|
127
|
+
this._positionsByNodeId.set(id, {
|
|
113
128
|
...d3Node,
|
|
114
129
|
x,
|
|
115
130
|
y,
|
|
@@ -121,7 +136,11 @@ export class D3ForceLayout extends GraphLayout {
|
|
|
121
136
|
this._onLayoutDone();
|
|
122
137
|
};
|
|
123
138
|
unlockNodePosition = (node) => {
|
|
124
|
-
const
|
|
139
|
+
const id = node.getId();
|
|
140
|
+
const d3Node = this._positionsByNodeId.get(id);
|
|
141
|
+
if (!d3Node) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
125
144
|
d3Node.fx = null;
|
|
126
145
|
d3Node.fy = null;
|
|
127
146
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"d3-force-layout.js","sourceRoot":"","sources":["../../../src/layouts/d3-force/d3-force-layout.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,WAAW,EAAmB,mCAAgC;
|
|
1
|
+
{"version":3,"file":"d3-force-layout.js","sourceRoot":"","sources":["../../../src/layouts/d3-force/d3-force-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GraphLayout, GraphLayoutProps } from '../../core/graph-layout';
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
2
|
+
import type { Graph, NodeInterface, EdgeInterface } from '../../graph/graph';
|
|
3
|
+
import * as d3 from 'd3-force';
|
|
4
4
|
export type ForceMultiGraphLayoutProps = GraphLayoutProps & {
|
|
5
5
|
alpha?: number;
|
|
6
6
|
nBodyStrength?: number;
|
|
@@ -9,21 +9,25 @@ export type ForceMultiGraphLayoutProps = GraphLayoutProps & {
|
|
|
9
9
|
};
|
|
10
10
|
export declare class ForceMultiGraphLayout extends GraphLayout<ForceMultiGraphLayoutProps> {
|
|
11
11
|
static defaultProps: {
|
|
12
|
-
alpha:
|
|
13
|
-
nBodyStrength:
|
|
14
|
-
nBodyDistanceMin:
|
|
15
|
-
nBodyDistanceMax:
|
|
12
|
+
readonly alpha: 3;
|
|
13
|
+
readonly nBodyStrength: -1200;
|
|
14
|
+
readonly nBodyDistanceMin: 100;
|
|
15
|
+
readonly nBodyDistanceMax: 1400;
|
|
16
|
+
readonly onLayoutStart: (detail?: import("../../core/graph-layout").GraphLayoutEventDetail) => void;
|
|
17
|
+
readonly onLayoutChange: (detail?: import("../../core/graph-layout").GraphLayoutEventDetail) => void;
|
|
18
|
+
readonly onLayoutDone: (detail?: import("../../core/graph-layout").GraphLayoutEventDetail) => void;
|
|
19
|
+
readonly onLayoutError: (error?: unknown) => void;
|
|
16
20
|
};
|
|
17
21
|
_name: string;
|
|
18
|
-
_graph: Graph;
|
|
22
|
+
_graph: Graph | null;
|
|
19
23
|
_d3Graph: {
|
|
20
24
|
nodes: any[];
|
|
21
25
|
edges: any[];
|
|
22
26
|
};
|
|
23
|
-
_nodeMap:
|
|
24
|
-
_edgeMap:
|
|
25
|
-
_simulator: any;
|
|
26
|
-
constructor(
|
|
27
|
+
_nodeMap: Map<string | number, any>;
|
|
28
|
+
_edgeMap: Map<string | number, any>;
|
|
29
|
+
_simulator: d3.Simulation<any, undefined> | null;
|
|
30
|
+
constructor(props?: ForceMultiGraphLayoutProps);
|
|
27
31
|
initializeGraph(graph: Graph): void;
|
|
28
32
|
_strength: (d3Edge: any) => number;
|
|
29
33
|
_generateSimulator(): void;
|
|
@@ -31,14 +35,14 @@ export declare class ForceMultiGraphLayout extends GraphLayout<ForceMultiGraphLa
|
|
|
31
35
|
resume(): void;
|
|
32
36
|
stop(): void;
|
|
33
37
|
update(): void;
|
|
34
|
-
updateGraph(graph:
|
|
35
|
-
getNodePosition: (node:
|
|
36
|
-
getEdgePosition: (edge:
|
|
38
|
+
updateGraph(graph: Graph): void;
|
|
39
|
+
getNodePosition: (node: NodeInterface) => [number, number];
|
|
40
|
+
getEdgePosition: (edge: EdgeInterface) => {
|
|
37
41
|
type: string;
|
|
38
42
|
sourcePosition: any[];
|
|
39
43
|
targetPosition: any[];
|
|
40
44
|
controlPoints: number[][];
|
|
41
45
|
};
|
|
42
|
-
lockNodePosition: (node:
|
|
46
|
+
lockNodePosition: (node: NodeInterface, x: number, y: number) => void;
|
|
43
47
|
protected _updateBounds(): void;
|
|
44
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"force-multi-graph-layout.d.ts","sourceRoot":"","sources":["../../../src/layouts/experimental/force-multi-graph-layout.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAE,gBAAgB,EAAC,mCAAgC;AACtE,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"force-multi-graph-layout.d.ts","sourceRoot":"","sources":["../../../src/layouts/experimental/force-multi-graph-layout.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAE,gBAAgB,EAAC,mCAAgC;AACtE,OAAO,KAAK,EAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAC,6BAA0B;AAC3E,OAAO,KAAK,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,MAAM,0BAA0B,GAAG,gBAAgB,GAAG;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,WAAW,CAAC,0BAA0B,CAAC;IAChF,MAAM,CAAC,YAAY;;;;;uCAAnB,CAAC;wCAEE,CAAC;sCAEmB,CAAC;sCAEK,CAAC;MAAsC;IAEpE,KAAK,SAA2B;IAChC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAQ;IAI5B,QAAQ,EAAE;QAAC,KAAK,EAAE,GAAG,EAAE,CAAC;QAAC,KAAK,EAAE,GAAG,EAAE,CAAA;KAAC,CAA0B;IAChE,QAAQ,4BAAmC;IAC3C,QAAQ,4BAAmC;IAC3C,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,IAAI,CAAQ;gBAE5C,KAAK,GAAE,0BAA+B;IAIlD,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAInC,SAAS,GAAI,WAAM,YASjB;IAEF,kBAAkB;IAgClB,KAAK;IAKL,MAAM;IAIN,IAAI;IAIJ,MAAM,IAAI,IAAI;IAEd,WAAW,CAAC,KAAK,EAAE,KAAK;IAsFxB,eAAe,GAAI,MAAM,aAAa,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAOvD;IAEF,eAAe,GAAI,MAAM,aAAa;;;;;MAiDpC;IAEF,gBAAgB,GAAI,MAAM,aAAa,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,UAS3D;cAEiB,aAAa,IAAI,IAAI;CAIzC"}
|
|
@@ -5,25 +5,22 @@ import { GraphLayout } from '../../core/graph-layout';
|
|
|
5
5
|
import * as d3 from 'd3-force';
|
|
6
6
|
export class ForceMultiGraphLayout extends GraphLayout {
|
|
7
7
|
static defaultProps = {
|
|
8
|
+
...GraphLayout.defaultProps,
|
|
8
9
|
alpha: 3,
|
|
9
10
|
nBodyStrength: -1200,
|
|
10
11
|
nBodyDistanceMin: 100,
|
|
11
12
|
nBodyDistanceMax: 1400
|
|
12
13
|
};
|
|
13
14
|
_name = 'ForceMultiGraphLayout';
|
|
14
|
-
_graph;
|
|
15
|
+
_graph = null;
|
|
15
16
|
// d3 part
|
|
16
17
|
// custom graph data
|
|
17
18
|
_d3Graph = { nodes: [], edges: [] };
|
|
18
|
-
_nodeMap =
|
|
19
|
-
_edgeMap =
|
|
20
|
-
_simulator;
|
|
21
|
-
constructor(
|
|
22
|
-
super(
|
|
23
|
-
this._options = {
|
|
24
|
-
...ForceMultiGraphLayout.defaultProps,
|
|
25
|
-
...options
|
|
26
|
-
};
|
|
19
|
+
_nodeMap = new Map();
|
|
20
|
+
_edgeMap = new Map();
|
|
21
|
+
_simulator = null;
|
|
22
|
+
constructor(props = {}) {
|
|
23
|
+
super(props, ForceMultiGraphLayout.defaultProps);
|
|
27
24
|
}
|
|
28
25
|
initializeGraph(graph) {
|
|
29
26
|
this.updateGraph(graph);
|
|
@@ -32,8 +29,10 @@ export class ForceMultiGraphLayout extends GraphLayout {
|
|
|
32
29
|
if (d3Edge.isVirtual) {
|
|
33
30
|
return 1 / d3Edge.edgeCount;
|
|
34
31
|
}
|
|
35
|
-
const
|
|
36
|
-
const
|
|
32
|
+
const sourceNode = this._graph?.findNode(d3Edge.source.id);
|
|
33
|
+
const targetNode = this._graph?.findNode(d3Edge.target.id);
|
|
34
|
+
const sourceDegree = sourceNode?.getDegree() ?? 0;
|
|
35
|
+
const targetDegree = targetNode?.getDegree() ?? 0;
|
|
37
36
|
return 1 / Math.min(sourceDegree, targetDegree);
|
|
38
37
|
};
|
|
39
38
|
_generateSimulator() {
|
|
@@ -41,7 +40,7 @@ export class ForceMultiGraphLayout extends GraphLayout {
|
|
|
41
40
|
this._simulator.on('tick', null).on('end', null);
|
|
42
41
|
this._simulator = null;
|
|
43
42
|
}
|
|
44
|
-
const { alpha, nBodyStrength, nBodyDistanceMin, nBodyDistanceMax } = this.
|
|
43
|
+
const { alpha, nBodyStrength, nBodyDistanceMin, nBodyDistanceMax } = this.props;
|
|
45
44
|
const g = this._d3Graph;
|
|
46
45
|
this._simulator = d3
|
|
47
46
|
.forceSimulation(g.nodes)
|
|
@@ -74,20 +73,23 @@ export class ForceMultiGraphLayout extends GraphLayout {
|
|
|
74
73
|
updateGraph(graph) {
|
|
75
74
|
this._graph = graph;
|
|
76
75
|
// nodes
|
|
77
|
-
const newNodeMap =
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
const
|
|
81
|
-
|
|
76
|
+
const newNodeMap = new Map();
|
|
77
|
+
const nodes = Array.from(graph.getNodes());
|
|
78
|
+
const newD3Nodes = nodes.map((node) => {
|
|
79
|
+
const id = node.getId();
|
|
80
|
+
const oldD3Node = this._nodeMap.get(id);
|
|
81
|
+
const newD3Node = oldD3Node ? oldD3Node : { id };
|
|
82
|
+
newNodeMap.set(id, newD3Node);
|
|
82
83
|
return newD3Node;
|
|
83
84
|
});
|
|
84
85
|
// edges
|
|
85
86
|
// bucket edges between the same source/target node pairs.
|
|
86
|
-
const
|
|
87
|
-
|
|
87
|
+
const edges = Array.from(graph.getEdges());
|
|
88
|
+
const nodePairs = edges.reduce((res, edge) => {
|
|
89
|
+
const endpoints = [edge.getSourceNodeId(), edge.getTargetNodeId()];
|
|
88
90
|
// sort the node ids to count the edges with the same pair
|
|
89
91
|
// but different direction (a -> b or b -> a)
|
|
90
|
-
const pairId =
|
|
92
|
+
const pairId = endpoints.sort().toString();
|
|
91
93
|
// push this edge into the bucket
|
|
92
94
|
if (!res[pairId]) {
|
|
93
95
|
res[pairId] = [edge];
|
|
@@ -101,7 +103,7 @@ export class ForceMultiGraphLayout extends GraphLayout {
|
|
|
101
103
|
// if only one edge between two nodes, create a straight line
|
|
102
104
|
// otherwise, create one virtual node and two edges for each edge
|
|
103
105
|
const newD3Edges = [];
|
|
104
|
-
const newEdgeMap =
|
|
106
|
+
const newEdgeMap = new Map();
|
|
105
107
|
Object.keys(nodePairs).forEach((pairId) => {
|
|
106
108
|
const betweenEdges = nodePairs[pairId];
|
|
107
109
|
const firstEdge = betweenEdges[0];
|
|
@@ -110,11 +112,11 @@ export class ForceMultiGraphLayout extends GraphLayout {
|
|
|
110
112
|
const newD3Edge = {
|
|
111
113
|
type: 'line',
|
|
112
114
|
id: firstEdge.getId(),
|
|
113
|
-
source: newNodeMap
|
|
114
|
-
target: newNodeMap
|
|
115
|
+
source: newNodeMap.get(firstEdge.getSourceNodeId()),
|
|
116
|
+
target: newNodeMap.get(firstEdge.getTargetNodeId()),
|
|
115
117
|
isVirtual: false
|
|
116
118
|
};
|
|
117
|
-
newEdgeMap
|
|
119
|
+
newEdgeMap.set(firstEdge.getId(), newD3Edge);
|
|
118
120
|
newD3Edges.push(newD3Edge);
|
|
119
121
|
return;
|
|
120
122
|
}
|
|
@@ -122,23 +124,24 @@ export class ForceMultiGraphLayout extends GraphLayout {
|
|
|
122
124
|
const newD3Edge = {
|
|
123
125
|
type: 'line',
|
|
124
126
|
id: pairId,
|
|
125
|
-
source: newNodeMap
|
|
126
|
-
target: newNodeMap
|
|
127
|
+
source: newNodeMap.get(firstEdge.getSourceNodeId()),
|
|
128
|
+
target: newNodeMap.get(firstEdge.getTargetNodeId()),
|
|
127
129
|
isVirtual: true,
|
|
128
130
|
edgeCount: betweenEdges.length
|
|
129
131
|
};
|
|
130
|
-
newEdgeMap
|
|
132
|
+
newEdgeMap.set(pairId, newD3Edge);
|
|
131
133
|
newD3Edges.push(newD3Edge);
|
|
132
134
|
betweenEdges.forEach((e, idx) => {
|
|
133
|
-
|
|
135
|
+
const edgeId = e.getId();
|
|
136
|
+
newEdgeMap.set(edgeId, {
|
|
134
137
|
type: 'spline-curve',
|
|
135
|
-
id:
|
|
136
|
-
source: newNodeMap
|
|
137
|
-
target: newNodeMap
|
|
138
|
+
id: edgeId,
|
|
139
|
+
source: newNodeMap.get(e.getSourceNodeId()),
|
|
140
|
+
target: newNodeMap.get(e.getTargetNodeId()),
|
|
138
141
|
virtualEdgeId: pairId,
|
|
139
142
|
isVirtual: true,
|
|
140
143
|
index: idx
|
|
141
|
-
};
|
|
144
|
+
});
|
|
142
145
|
});
|
|
143
146
|
});
|
|
144
147
|
this._nodeMap = newNodeMap;
|
|
@@ -147,7 +150,7 @@ export class ForceMultiGraphLayout extends GraphLayout {
|
|
|
147
150
|
this._d3Graph.edges = newD3Edges;
|
|
148
151
|
}
|
|
149
152
|
getNodePosition = (node) => {
|
|
150
|
-
const d3Node = this._nodeMap
|
|
153
|
+
const d3Node = this._nodeMap.get(node.getId());
|
|
151
154
|
if (d3Node) {
|
|
152
155
|
return [d3Node.x, d3Node.y];
|
|
153
156
|
}
|
|
@@ -155,7 +158,7 @@ export class ForceMultiGraphLayout extends GraphLayout {
|
|
|
155
158
|
return [0, 0];
|
|
156
159
|
};
|
|
157
160
|
getEdgePosition = (edge) => {
|
|
158
|
-
const d3Edge = this._edgeMap
|
|
161
|
+
const d3Edge = this._edgeMap.get(edge.getId());
|
|
159
162
|
if (d3Edge) {
|
|
160
163
|
if (!d3Edge.isVirtual) {
|
|
161
164
|
return {
|
|
@@ -166,7 +169,10 @@ export class ForceMultiGraphLayout extends GraphLayout {
|
|
|
166
169
|
};
|
|
167
170
|
}
|
|
168
171
|
// else, check the referenced virtual edge
|
|
169
|
-
const virtualEdge = this._edgeMap
|
|
172
|
+
const virtualEdge = this._edgeMap.get(d3Edge.virtualEdgeId);
|
|
173
|
+
if (!virtualEdge) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
170
176
|
const edgeCount = virtualEdge.edgeCount;
|
|
171
177
|
// get the position of source and target nodes
|
|
172
178
|
const sourcePosition = [virtualEdge.source.x, virtualEdge.source.y];
|
|
@@ -198,14 +204,17 @@ export class ForceMultiGraphLayout extends GraphLayout {
|
|
|
198
204
|
};
|
|
199
205
|
};
|
|
200
206
|
lockNodePosition = (node, x, y) => {
|
|
201
|
-
const d3Node = this._nodeMap
|
|
207
|
+
const d3Node = this._nodeMap.get(node.getId());
|
|
208
|
+
if (!d3Node) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
202
211
|
d3Node.x = x;
|
|
203
212
|
d3Node.y = y;
|
|
204
213
|
this._onLayoutChange();
|
|
205
214
|
this._onLayoutDone();
|
|
206
215
|
};
|
|
207
216
|
_updateBounds() {
|
|
208
|
-
const positions =
|
|
217
|
+
const positions = Array.from(this._nodeMap.values(), (node) => this._normalizePosition(node));
|
|
209
218
|
this._bounds = this._calculateBounds(positions);
|
|
210
219
|
}
|
|
211
220
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"force-multi-graph-layout.js","sourceRoot":"","sources":["../../../src/layouts/experimental/force-multi-graph-layout.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,WAAW,EAAmB,mCAAgC;
|
|
1
|
+
{"version":3,"file":"force-multi-graph-layout.js","sourceRoot":"","sources":["../../../src/layouts/experimental/force-multi-graph-layout.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,WAAW,EAAmB,mCAAgC;AAEtE,OAAO,KAAK,EAAE,MAAM,UAAU,CAAC;AAS/B,MAAM,OAAO,qBAAsB,SAAQ,WAAuC;IAChF,MAAM,CAAC,YAAY,GAAG;QACpB,GAAG,WAAW,CAAC,YAAY;QAC3B,KAAK,EAAE,CAAC;QACR,aAAa,EAAE,CAAC,IAAI;QACpB,gBAAgB,EAAE,GAAG;QACrB,gBAAgB,EAAE,IAAI;KAC2C,CAAC;IAEpE,KAAK,GAAG,uBAAuB,CAAC;IAChC,MAAM,GAAiB,IAAI,CAAC;IAE5B,UAAU;IACV,oBAAoB;IACpB,QAAQ,GAAiC,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC;IAChE,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC3C,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC3C,UAAU,GAAyC,IAAI,CAAC;IAExD,YAAY,QAAoC,EAAE;QAChD,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAED,eAAe,CAAC,KAAY;QAC1B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE;QACrB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAC9B,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,YAAY,GAAG,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,kBAAkB;QAChB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,MAAM,EAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAE9E,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,EAAE;aACjB,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC;aACxB,KAAK,CACJ,MAAM,EACN,EAAE;aACC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;YACnB,kCAAkC;aACjC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACf,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAC5B;aACA,KAAK,CACJ,QAAQ,EACR,EAAE;aACC,aAAa,EAAE;aACf,QAAQ,CAAC,aAAa,CAAC;aACvB,WAAW,CAAC,gBAAgB,CAAC;aAC7B,WAAW,CAAC,gBAAgB,CAAC,CACjC;aACA,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;aACjC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChB,2BAA2B;QAC3B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACjF,CAAC;IAED,KAAK;QACH,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,KAAU,CAAC;IAEjB,WAAW,CAAC,KAAY;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,QAAQ;QACR,MAAM,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;QACnD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACpC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC;YAC/C,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,QAAQ;QACR,0DAA0D;QAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAC3C,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;YACnE,0DAA0D;YAC1D,6CAA6C;YAC7C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC3C,iCAAiC;YACjC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,iCAAiC;QACjC,6DAA6D;QAC7D,iEAAiE;QACjE,MAAM,UAAU,GAAU,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;QAEnD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,kCAAkC;gBAClC,MAAM,SAAS,GAAG;oBAChB,IAAI,EAAE,MAAM;oBACZ,EAAE,EAAE,SAAS,CAAC,KAAK,EAAE;oBACrB,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;oBACnD,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;oBACnD,SAAS,EAAE,KAAK;iBACjB,CAAC;gBACF,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;gBAC7C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,kCAAkC;YAClC,MAAM,SAAS,GAAG;gBAChB,IAAI,EAAE,MAAM;gBACZ,EAAE,EAAE,MAAM;gBACV,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;gBACnD,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;gBACnD,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,YAAY,CAAC,MAAM;aAC/B,CAAC;YACF,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAClC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE3B,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;gBACzB,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE;oBACrB,IAAI,EAAE,cAAc;oBACpB,EAAE,EAAE,MAAM;oBACV,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;oBAC3C,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;oBAC3C,aAAa,EAAE,MAAM;oBACrB,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,GAAG;iBACX,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC;IACnC,CAAC;IAED,eAAe,GAAG,CAAC,IAAmB,EAAoB,EAAE;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,gBAAgB;QAChB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,eAAe,GAAG,CAAC,IAAmB,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACtB,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,cAAc,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;oBAClD,cAAc,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;oBAClD,aAAa,EAAE,EAAE;iBAClB,CAAC;YACJ,CAAC;YACD,0CAA0C;YAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;YACxC,8CAA8C;YAC9C,MAAM,cAAc,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpE,MAAM,cAAc,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpE,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CACzB,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,EACrC,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CACtC,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,sCAAsC;YACtC,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,2EAA2E;YAC3E,oFAAoF;YACpF,MAAM,cAAc,GAAG,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,MAAM,GACV,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC1B,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACtE,MAAM,YAAY,GAAG,mBAAmB,CAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAC5F,OAAO;gBACL,IAAI,EAAE,cAAc;gBACpB,cAAc;gBACd,cAAc;gBACd,aAAa,EAAE,CAAC,YAAY,CAAC;aAC9B,CAAC;QACJ,CAAC;QACD,gBAAgB;QAChB,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACtB,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACtB,aAAa,EAAE,EAAE;SAClB,CAAC;IACJ,CAAC,CAAC;IAEF,gBAAgB,GAAG,CAAC,IAAmB,EAAE,CAAS,EAAE,CAAS,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC;IAEiB,aAAa;QAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;;AAGH;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAC5D,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5E,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAC5D,OAAO;QACL,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS;QAChD,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS;KACjD,CAAC;AACJ,CAAC"}
|
|
@@ -1,37 +1,40 @@
|
|
|
1
1
|
import { GraphLayout, GraphLayoutProps } from '../../core/graph-layout';
|
|
2
|
-
import {
|
|
3
|
-
import { Graph } from '../../graph/graph';
|
|
2
|
+
import type { Graph, NodeInterface, EdgeInterface } from '../../graph/graph';
|
|
4
3
|
export type HivePlotLayoutProps = GraphLayoutProps & {
|
|
5
4
|
innerRadius?: number;
|
|
6
5
|
outerRadius?: number;
|
|
7
|
-
getNodeAxis?: (node:
|
|
6
|
+
getNodeAxis?: (node: NodeInterface) => any;
|
|
8
7
|
};
|
|
9
8
|
export declare class HivePlotLayout extends GraphLayout<HivePlotLayoutProps> {
|
|
10
9
|
static defaultProps: {
|
|
11
10
|
readonly innerRadius: 100;
|
|
12
11
|
readonly outerRadius: 500;
|
|
13
|
-
readonly getNodeAxis: (node:
|
|
12
|
+
readonly getNodeAxis: (node: NodeInterface) => unknown;
|
|
13
|
+
readonly onLayoutStart: (detail?: import("../../core/graph-layout").GraphLayoutEventDetail) => void;
|
|
14
|
+
readonly onLayoutChange: (detail?: import("../../core/graph-layout").GraphLayoutEventDetail) => void;
|
|
15
|
+
readonly onLayoutDone: (detail?: import("../../core/graph-layout").GraphLayoutEventDetail) => void;
|
|
16
|
+
readonly onLayoutError: (error?: unknown) => void;
|
|
14
17
|
};
|
|
15
18
|
_name: string;
|
|
16
|
-
_graph: Graph;
|
|
19
|
+
_graph: Graph | null;
|
|
17
20
|
_totalAxis: number;
|
|
18
|
-
_axis: Record<string,
|
|
19
|
-
_nodeMap:
|
|
20
|
-
_nodePositionMap:
|
|
21
|
-
constructor(
|
|
21
|
+
_axis: Record<string, NodeInterface[]>;
|
|
22
|
+
_nodeMap: Map<string | number, NodeInterface>;
|
|
23
|
+
_nodePositionMap: Map<string | number, [number, number]>;
|
|
24
|
+
constructor(props?: HivePlotLayoutProps);
|
|
22
25
|
initializeGraph(graph: Graph): void;
|
|
23
|
-
updateGraph(graph:
|
|
26
|
+
updateGraph(graph: Graph): void;
|
|
24
27
|
start(): void;
|
|
25
28
|
stop(): void;
|
|
26
29
|
update(): void;
|
|
27
30
|
resume(): void;
|
|
28
|
-
getNodePosition: (node:
|
|
29
|
-
getEdgePosition: (edge:
|
|
31
|
+
getNodePosition: (node: NodeInterface) => [number, number];
|
|
32
|
+
getEdgePosition: (edge: EdgeInterface) => {
|
|
30
33
|
type: string;
|
|
31
|
-
sourcePosition:
|
|
32
|
-
targetPosition:
|
|
34
|
+
sourcePosition: [number, number];
|
|
35
|
+
targetPosition: [number, number];
|
|
33
36
|
controlPoints: [number, number][];
|
|
34
37
|
};
|
|
35
|
-
lockNodePosition: (node:
|
|
38
|
+
lockNodePosition: (node: NodeInterface, x: number, y: number) => void;
|
|
36
39
|
protected _updateBounds(): void;
|
|
37
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hive-plot-layout.d.ts","sourceRoot":"","sources":["../../../src/layouts/experimental/hive-plot-layout.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAE,gBAAgB,EAAC,mCAAgC;AACtE,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"hive-plot-layout.d.ts","sourceRoot":"","sources":["../../../src/layouts/experimental/hive-plot-layout.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAE,gBAAgB,EAAC,mCAAgC;AACtE,OAAO,KAAK,EAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAC,6BAA0B;AAE3E,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,GAAG,CAAC;CAC5C,CAAC;AAEF,qBAAa,cAAe,SAAQ,WAAW,CAAC,mBAAmB,CAAC;IAClE,MAAM,CAAC,YAAY;;;qCAIG,aAAa;uCAFjC,CAAC;wCAEiB,CAAC;sCACd,CAAC;sCAEN,CAAC;MAF0D;IAE7D,KAAK,SAAc;IACnB,MAAM,EAAE,KAAK,GAAG,IAAI,CAAQ;IAC5B,UAAU,EAAE,MAAM,CAAK;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAM;IAC5C,QAAQ,sCAA6C;IACrD,gBAAgB,yCAAgD;gBAEpD,KAAK,GAAE,mBAAwB;IAI3C,eAAe,CAAC,KAAK,EAAE,KAAK;IAI5B,WAAW,CAAC,KAAK,EAAE,KAAK;IAoDxB,KAAK;IAML,IAAI;IAEJ,MAAM;IAEN,MAAM;IAEN,eAAe,GAAI,MAAM,aAAa,sBAA6C;IAEnF,eAAe,GAAI,MAAM,aAAa;;;;;MAyCpC;IAEF,gBAAgB,GAAI,MAAM,aAAa,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,UAI3D;cAEiB,aAAa,IAAI,IAAI;CAMzC"}
|