@eclipse-glsp/layout-elk 2.5.0-next.123 → 2.5.0-next.126
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/lib/di.config.d.ts.map +1 -1
- package/lib/di.config.js +11 -1
- package/lib/di.config.js.map +1 -1
- package/lib/glsp-elk-layout-engine.d.ts +13 -8
- package/lib/glsp-elk-layout-engine.d.ts.map +1 -1
- package/lib/glsp-elk-layout-engine.js +28 -42
- package/lib/glsp-elk-layout-engine.js.map +1 -1
- package/package.json +4 -4
- package/src/di.config.ts +14 -2
- package/src/glsp-elk-layout-engine.ts +54 -63
package/lib/di.config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di.config.d.ts","sourceRoot":"","sources":["../src/di.config.ts"],"names":[],"mappings":"AAgBA,OAAuB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAwB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,EAA8B,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,KAAK,WAAW,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,aAAa,CAAC;IACrC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACrD;;;OAGG;IACH,aAAa,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IAC3C;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"di.config.d.ts","sourceRoot":"","sources":["../src/di.config.ts"],"names":[],"mappings":"AAgBA,OAAuB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAwB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,EAA8B,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,KAAK,WAAW,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,aAAa,CAAC;IACrC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACrD;;;OAGG;IACH,aAAa,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IAC3C;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAoDnF"}
|
package/lib/di.config.js
CHANGED
|
@@ -39,7 +39,7 @@ const layout_configurator_1 = require("./layout-configurator");
|
|
|
39
39
|
* @returns A DI module that can be loaded as additional module when configuring a diagram module for a GLSP server.
|
|
40
40
|
*/
|
|
41
41
|
function configureELKLayoutModule(options) {
|
|
42
|
-
return new inversify_1.ContainerModule(bind => {
|
|
42
|
+
return new inversify_1.ContainerModule((bind, unbind, isBound, rebind) => {
|
|
43
43
|
if (options.elementFilter) {
|
|
44
44
|
bind(element_filter_1.ElementFilter).to(options.elementFilter).inSingletonScope();
|
|
45
45
|
}
|
|
@@ -74,6 +74,16 @@ function configureELKLayoutModule(options) {
|
|
|
74
74
|
})
|
|
75
75
|
.inSingletonScope();
|
|
76
76
|
bind(server_1.LayoutEngine).toService(glsp_elk_layout_engine_1.GlspElkLayoutEngine);
|
|
77
|
+
if (!isBound(server_1.Logger)) {
|
|
78
|
+
bind(server_1.Logger).to(server_1.NullLogger).inSingletonScope();
|
|
79
|
+
}
|
|
80
|
+
if (!isBound(server_1.LoggerFactory)) {
|
|
81
|
+
bind(server_1.LoggerFactory).toFactory(dynamicContext => (caller) => {
|
|
82
|
+
const logger = dynamicContext.container.get(server_1.Logger);
|
|
83
|
+
logger.caller = caller;
|
|
84
|
+
return logger;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
77
87
|
});
|
|
78
88
|
}
|
|
79
89
|
exports.configureELKLayoutModule = configureELKLayoutModule;
|
package/lib/di.config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di.config.js","sourceRoot":"","sources":["../src/di.config.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,
|
|
1
|
+
{"version":3,"file":"di.config.js","sourceRoot":"","sources":["../src/di.config.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
*
|
|
13
13
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
14
14
|
********************************************************************************/
|
|
15
|
-
import { GEdge, GGraph, GLabel, GModelElement, GModelElementConstructor, GModelRoot, GNode, GPort, GShapeElement, LayoutEngine, MaybePromise, ModelState } from '@eclipse-glsp/server';
|
|
16
|
-
import { ELK,
|
|
15
|
+
import { GEdge, GGraph, GLabel, GModelElement, GModelElementConstructor, GModelRoot, GNode, GPort, GShapeElement, LayoutEngine, LayoutOperation, Logger, MaybePromise, ModelState } from '@eclipse-glsp/server';
|
|
16
|
+
import { ELK, ElkExtendedEdge, ElkGraphElement, ElkLabel, ElkNode, ElkPort, ElkShape } from 'elkjs/lib/elk-api';
|
|
17
17
|
import { ElementFilter } from './element-filter';
|
|
18
18
|
import { LayoutConfigurator } from './layout-configurator';
|
|
19
19
|
/**
|
|
@@ -32,12 +32,17 @@ export declare class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
32
32
|
protected readonly filter: ElementFilter;
|
|
33
33
|
protected readonly configurator: LayoutConfigurator;
|
|
34
34
|
protected modelState: ModelState;
|
|
35
|
+
protected readonly logger: Logger;
|
|
35
36
|
protected readonly elk: ELK;
|
|
36
|
-
protected elkEdges:
|
|
37
|
+
protected elkEdges: ElkExtendedEdge[];
|
|
37
38
|
protected idToElkElement: Map<string, ElkGraphElement>;
|
|
38
39
|
constructor(elkFactory: ElkFactory, filter: ElementFilter, configurator: LayoutConfigurator, modelState: ModelState);
|
|
39
|
-
layout(): MaybePromise<GModelRoot>;
|
|
40
|
-
protected transformToElk(model:
|
|
40
|
+
layout(operation?: LayoutOperation): MaybePromise<GModelRoot>;
|
|
41
|
+
protected transformToElk(model: GGraph): ElkNode;
|
|
42
|
+
protected transformToElk(model: GNode): ElkNode;
|
|
43
|
+
protected transformToElk(model: GEdge): ElkExtendedEdge;
|
|
44
|
+
protected transformToElk(model: GLabel): ElkLabel;
|
|
45
|
+
protected transformToElk(model: GPort): ElkPort;
|
|
41
46
|
/**
|
|
42
47
|
* Searches for all children of the given element that are an instance of the given {@link GModelElementConstructor}
|
|
43
48
|
* and are included by the {@link ElementFilter}. Also considers children that are nested inside of {@link GCompartment}s.
|
|
@@ -46,15 +51,15 @@ export declare class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
46
51
|
* @returns A list of all matching children.
|
|
47
52
|
*/
|
|
48
53
|
protected findChildren<G extends GModelElement>(element: GModelElement, constructor: GModelElementConstructor<G>): G[];
|
|
49
|
-
protected findCommonAncestor(elkEdge:
|
|
54
|
+
protected findCommonAncestor(elkEdge: ElkExtendedEdge): ElkNode | undefined;
|
|
50
55
|
protected transformGraph(graph: GGraph): ElkGraphElement;
|
|
51
56
|
protected transformNode(node: GNode): ElkNode;
|
|
52
57
|
protected transformShape(elkShape: ElkShape, shape: GShapeElement): void;
|
|
53
|
-
protected transformEdge(edge: GEdge):
|
|
58
|
+
protected transformEdge(edge: GEdge): ElkExtendedEdge;
|
|
54
59
|
protected transformLabel(label: GLabel): ElkLabel;
|
|
55
60
|
protected transformPort(port: GPort): ElkPort;
|
|
56
61
|
protected applyLayout(elkNode: ElkNode): void;
|
|
57
62
|
protected applyShape(shape: GShapeElement, elkShape: ElkShape): void;
|
|
58
|
-
protected applyEdge(edge: GEdge, elkEdge:
|
|
63
|
+
protected applyEdge(edge: GEdge, elkEdge: ElkExtendedEdge): void;
|
|
59
64
|
}
|
|
60
65
|
//# sourceMappingURL=glsp-elk-layout-engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glsp-elk-layout-engine.d.ts","sourceRoot":"","sources":["../src/glsp-elk-layout-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;kFAakF;AAClF,OAAO,
|
|
1
|
+
{"version":3,"file":"glsp-elk-layout-engine.d.ts","sourceRoot":"","sources":["../src/glsp-elk-layout-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;kFAakF;AAClF,OAAO,EAGH,KAAK,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,wBAAwB,EACxB,UAAU,EACV,KAAK,EACL,KAAK,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EACf,MAAM,EACN,YAAY,EACZ,UAAU,EAEb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEhH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC;AACnC,eAAO,MAAM,UAAU,eAAuB,CAAC;AAE/C;;;GAGG;AACH,qBACa,mBAAoB,YAAW,YAAY;IAWhD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa;IACxC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,kBAAkB;IACnD,SAAS,CAAC,UAAU,EAAE,UAAU;IAXpC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAE5B,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC;IACtC,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;gBAGnD,UAAU,EAAE,UAAU,EACH,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,kBAAkB,EACzC,UAAU,EAAE,UAAU;IAIpC,MAAM,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,YAAY,CAAC,UAAU,CAAC;IAe7D,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAChD,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAC/C,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe;IACvD,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IACjD,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAwB/C;;;;;;OAMG;IACH,SAAS,CAAC,YAAY,CAAC,CAAC,SAAS,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAatH,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,GAAG,SAAS;IA6B3E,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;IAexD,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO;IAqB7C,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAWxE,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,eAAe;IA0BrD,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAWjD,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO;IAc7C,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IA6B7C,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAkBpE,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;CAyBnE"}
|
|
@@ -40,7 +40,7 @@ let GlspElkLayoutEngine = class GlspElkLayoutEngine {
|
|
|
40
40
|
this.modelState = modelState;
|
|
41
41
|
this.elk = elkFactory();
|
|
42
42
|
}
|
|
43
|
-
layout() {
|
|
43
|
+
layout(operation) {
|
|
44
44
|
const root = this.modelState.root;
|
|
45
45
|
if (!(root instanceof server_1.GGraph)) {
|
|
46
46
|
return root;
|
|
@@ -98,8 +98,12 @@ let GlspElkLayoutEngine = class GlspElkLayoutEngine {
|
|
|
98
98
|
return result;
|
|
99
99
|
}
|
|
100
100
|
findCommonAncestor(elkEdge) {
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
if (elkEdge.sources.length === 0 || elkEdge.targets.length === 0) {
|
|
102
|
+
this.logger.warn('Edges with multiple sources or targets are not supported by the GLSPElkLayoutEngine', elkEdge);
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
const source = this.modelState.index.get(elkEdge.sources[0]);
|
|
106
|
+
const target = this.modelState.index.get(elkEdge.targets[0]);
|
|
103
107
|
if (!source || !target) {
|
|
104
108
|
return undefined;
|
|
105
109
|
}
|
|
@@ -108,16 +112,17 @@ let GlspElkLayoutEngine = class GlspElkLayoutEngine {
|
|
|
108
112
|
if (!sourceParent || !targetParent) {
|
|
109
113
|
return undefined;
|
|
110
114
|
}
|
|
115
|
+
let ancestor;
|
|
111
116
|
if (sourceParent === targetParent) {
|
|
112
|
-
|
|
117
|
+
ancestor = this.idToElkElement.get(sourceParent.id);
|
|
113
118
|
}
|
|
114
119
|
else if (source === targetParent) {
|
|
115
|
-
|
|
120
|
+
ancestor = this.idToElkElement.get(source.id);
|
|
116
121
|
}
|
|
117
122
|
else if (target === sourceParent) {
|
|
118
|
-
|
|
123
|
+
ancestor = this.idToElkElement.get(target.id);
|
|
119
124
|
}
|
|
120
|
-
return
|
|
125
|
+
return ancestor;
|
|
121
126
|
}
|
|
122
127
|
transformGraph(graph) {
|
|
123
128
|
const elkGraph = {
|
|
@@ -161,34 +166,23 @@ let GlspElkLayoutEngine = class GlspElkLayoutEngine {
|
|
|
161
166
|
transformEdge(edge) {
|
|
162
167
|
const elkEdge = {
|
|
163
168
|
id: edge.id,
|
|
164
|
-
|
|
165
|
-
|
|
169
|
+
sources: [edge.sourceId],
|
|
170
|
+
targets: [edge.targetId],
|
|
166
171
|
layoutOptions: this.configurator.apply(edge)
|
|
167
172
|
};
|
|
168
|
-
const sourceElement = this.modelState.index.get(edge.sourceId);
|
|
169
|
-
if (sourceElement instanceof server_1.GPort) {
|
|
170
|
-
const parentNode = (0, server_1.findParentByClass)(sourceElement, server_1.GNode);
|
|
171
|
-
if (parentNode) {
|
|
172
|
-
elkEdge.source = parentNode.id;
|
|
173
|
-
elkEdge.sourcePort = sourceElement.id;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
const targetElement = this.modelState.index.get(edge.targetId);
|
|
177
|
-
if (sourceElement instanceof server_1.GPort) {
|
|
178
|
-
const parentNode = (0, server_1.findParentByClass)(targetElement, server_1.GNode);
|
|
179
|
-
if (parentNode) {
|
|
180
|
-
elkEdge.target = parentNode.id;
|
|
181
|
-
elkEdge.targetPort = targetElement.id;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
173
|
if (edge.children) {
|
|
185
174
|
elkEdge.labels = this.findChildren(edge, server_1.GLabel).map(child => this.transformToElk(child));
|
|
186
175
|
}
|
|
187
176
|
const points = edge.routingPoints;
|
|
188
177
|
if (points && points.length >= 2) {
|
|
189
|
-
elkEdge.
|
|
190
|
-
|
|
191
|
-
|
|
178
|
+
elkEdge.sections = [
|
|
179
|
+
{
|
|
180
|
+
id: edge.id + ':section',
|
|
181
|
+
startPoint: points[0],
|
|
182
|
+
bendPoints: points.slice(1, points.length - 1),
|
|
183
|
+
endPoint: points[points.length - 1]
|
|
184
|
+
}
|
|
185
|
+
];
|
|
192
186
|
}
|
|
193
187
|
this.idToElkElement.set(edge.id, elkEdge);
|
|
194
188
|
return elkEdge;
|
|
@@ -252,7 +246,7 @@ let GlspElkLayoutEngine = class GlspElkLayoutEngine {
|
|
|
252
246
|
}
|
|
253
247
|
if (elkShape.labels) {
|
|
254
248
|
for (const elkLabel of elkShape.labels) {
|
|
255
|
-
const label = this.modelState.index.findByClass(elkLabel.id, server_1.GLabel);
|
|
249
|
+
const label = elkLabel.id ? this.modelState.index.findByClass(elkLabel.id, server_1.GLabel) : undefined;
|
|
256
250
|
if (label) {
|
|
257
251
|
this.applyShape(label, elkLabel);
|
|
258
252
|
}
|
|
@@ -273,22 +267,10 @@ let GlspElkLayoutEngine = class GlspElkLayoutEngine {
|
|
|
273
267
|
points.push(section.endPoint);
|
|
274
268
|
}
|
|
275
269
|
}
|
|
276
|
-
else {
|
|
277
|
-
const section = elkEdge;
|
|
278
|
-
if (section.sourcePoint) {
|
|
279
|
-
points.push(section.sourcePoint);
|
|
280
|
-
}
|
|
281
|
-
if (section.bendPoints) {
|
|
282
|
-
points.push(...section.bendPoints);
|
|
283
|
-
}
|
|
284
|
-
if (section.targetPoint) {
|
|
285
|
-
points.push(section.targetPoint);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
270
|
edge.routingPoints = points;
|
|
289
271
|
if (elkEdge.labels) {
|
|
290
272
|
elkEdge.labels.forEach(elkLabel => {
|
|
291
|
-
const label = this.modelState.index.findByClass(elkLabel.id, server_1.GLabel);
|
|
273
|
+
const label = elkLabel.id ? this.modelState.index.findByClass(elkLabel.id, server_1.GLabel) : undefined;
|
|
292
274
|
if (label) {
|
|
293
275
|
this.applyShape(label, elkLabel);
|
|
294
276
|
}
|
|
@@ -297,6 +279,10 @@ let GlspElkLayoutEngine = class GlspElkLayoutEngine {
|
|
|
297
279
|
}
|
|
298
280
|
};
|
|
299
281
|
exports.GlspElkLayoutEngine = GlspElkLayoutEngine;
|
|
282
|
+
__decorate([
|
|
283
|
+
(0, inversify_1.inject)(server_1.Logger),
|
|
284
|
+
__metadata("design:type", server_1.Logger)
|
|
285
|
+
], GlspElkLayoutEngine.prototype, "logger", void 0);
|
|
300
286
|
exports.GlspElkLayoutEngine = GlspElkLayoutEngine = __decorate([
|
|
301
287
|
(0, inversify_1.injectable)(),
|
|
302
288
|
__metadata("design:paramtypes", [Function, Object, Object, Object])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glsp-elk-layout-engine.js","sourceRoot":"","sources":["../src/glsp-elk-layout-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"glsp-elk-layout-engine.js","sourceRoot":"","sources":["../src/glsp-elk-layout-engine.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eclipse-glsp/layout-elk",
|
|
3
|
-
"version": "2.5.0-next.
|
|
3
|
+
"version": "2.5.0-next.126+01fc6b7",
|
|
4
4
|
"description": "Integration of ELK graph layout algorithms in GLSP Node Server",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eclipse",
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
"watch": "tsc -w"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@eclipse-glsp/server": "2.5.0-next.
|
|
53
|
-
"elkjs": "^0.
|
|
52
|
+
"@eclipse-glsp/server": "2.5.0-next.126+01fc6b7",
|
|
53
|
+
"elkjs": "^0.10.1"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"inversify": "^6.1.3"
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"publishConfig": {
|
|
59
59
|
"access": "public"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "01fc6b74bbadfe7a4f575ef5a0dca861f1b18c99"
|
|
62
62
|
}
|
package/src/di.config.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import { LayoutEngine, ModelState } from '@eclipse-glsp/server';
|
|
16
|
+
import { LayoutEngine, Logger, LoggerFactory, ModelState, NullLogger } from '@eclipse-glsp/server';
|
|
17
17
|
import ElkConstructor, { LayoutOptions } from 'elkjs/lib/elk.bundled';
|
|
18
18
|
import { ContainerModule } from 'inversify';
|
|
19
19
|
import { DefaultElementFilter, ElementFilter } from './element-filter';
|
|
@@ -69,7 +69,7 @@ export interface ElkModuleOptions {
|
|
|
69
69
|
* @returns A DI module that can be loaded as additional module when configuring a diagram module for a GLSP server.
|
|
70
70
|
*/
|
|
71
71
|
export function configureELKLayoutModule(options: ElkModuleOptions): ContainerModule {
|
|
72
|
-
return new ContainerModule(bind => {
|
|
72
|
+
return new ContainerModule((bind, unbind, isBound, rebind) => {
|
|
73
73
|
if (options.elementFilter) {
|
|
74
74
|
bind(ElementFilter).to(options.elementFilter).inSingletonScope();
|
|
75
75
|
} else {
|
|
@@ -107,5 +107,17 @@ export function configureELKLayoutModule(options: ElkModuleOptions): ContainerMo
|
|
|
107
107
|
})
|
|
108
108
|
.inSingletonScope();
|
|
109
109
|
bind(LayoutEngine).toService(GlspElkLayoutEngine);
|
|
110
|
+
|
|
111
|
+
if (!isBound(Logger)) {
|
|
112
|
+
bind(Logger).to(NullLogger).inSingletonScope();
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (!isBound(LoggerFactory)) {
|
|
116
|
+
bind(LoggerFactory).toFactory(dynamicContext => (caller: string) => {
|
|
117
|
+
const logger = dynamicContext.container.get(Logger);
|
|
118
|
+
logger.caller = caller;
|
|
119
|
+
return logger;
|
|
120
|
+
});
|
|
121
|
+
}
|
|
110
122
|
});
|
|
111
123
|
}
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
********************************************************************************/
|
|
15
15
|
import {
|
|
16
16
|
findParent,
|
|
17
|
-
findParentByClass,
|
|
18
17
|
GCompartment,
|
|
19
18
|
GEdge,
|
|
20
19
|
GGraph,
|
|
@@ -26,12 +25,14 @@ import {
|
|
|
26
25
|
GPort,
|
|
27
26
|
GShapeElement,
|
|
28
27
|
LayoutEngine,
|
|
28
|
+
LayoutOperation,
|
|
29
|
+
Logger,
|
|
29
30
|
MaybePromise,
|
|
30
31
|
ModelState,
|
|
31
32
|
Point
|
|
32
33
|
} from '@eclipse-glsp/server';
|
|
33
|
-
import { ELK,
|
|
34
|
-
import { injectable } from 'inversify';
|
|
34
|
+
import { ELK, ElkExtendedEdge, ElkGraphElement, ElkLabel, ElkNode, ElkPort, ElkShape } from 'elkjs/lib/elk-api';
|
|
35
|
+
import { inject, injectable } from 'inversify';
|
|
35
36
|
import { ElementFilter } from './element-filter';
|
|
36
37
|
import { LayoutConfigurator } from './layout-configurator';
|
|
37
38
|
|
|
@@ -50,9 +51,12 @@ export const ElkFactory = Symbol('ElkFactory');
|
|
|
50
51
|
*/
|
|
51
52
|
@injectable()
|
|
52
53
|
export class GlspElkLayoutEngine implements LayoutEngine {
|
|
54
|
+
@inject(Logger)
|
|
55
|
+
protected readonly logger: Logger;
|
|
56
|
+
|
|
53
57
|
protected readonly elk: ELK;
|
|
54
58
|
|
|
55
|
-
protected elkEdges:
|
|
59
|
+
protected elkEdges: ElkExtendedEdge[];
|
|
56
60
|
protected idToElkElement: Map<string, ElkGraphElement>;
|
|
57
61
|
|
|
58
62
|
constructor(
|
|
@@ -63,7 +67,7 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
63
67
|
) {
|
|
64
68
|
this.elk = elkFactory();
|
|
65
69
|
}
|
|
66
|
-
layout(): MaybePromise<GModelRoot> {
|
|
70
|
+
layout(operation?: LayoutOperation): MaybePromise<GModelRoot> {
|
|
67
71
|
const root = this.modelState.root;
|
|
68
72
|
if (!(root instanceof GGraph)) {
|
|
69
73
|
return root;
|
|
@@ -71,18 +75,23 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
71
75
|
|
|
72
76
|
this.elkEdges = [];
|
|
73
77
|
this.idToElkElement = new Map();
|
|
74
|
-
const elkGraph = this.transformToElk(root)
|
|
78
|
+
const elkGraph = this.transformToElk(root);
|
|
75
79
|
return this.elk.layout(elkGraph).then(result => {
|
|
76
80
|
this.applyLayout(result);
|
|
77
81
|
return root;
|
|
78
82
|
});
|
|
79
83
|
}
|
|
80
84
|
|
|
85
|
+
protected transformToElk(model: GGraph): ElkNode;
|
|
86
|
+
protected transformToElk(model: GNode): ElkNode;
|
|
87
|
+
protected transformToElk(model: GEdge): ElkExtendedEdge;
|
|
88
|
+
protected transformToElk(model: GLabel): ElkLabel;
|
|
89
|
+
protected transformToElk(model: GPort): ElkPort;
|
|
81
90
|
protected transformToElk(model: GModelElement): ElkGraphElement {
|
|
82
91
|
if (model instanceof GGraph) {
|
|
83
92
|
const graph = this.transformGraph(model);
|
|
84
93
|
this.elkEdges.forEach(elkEdge => {
|
|
85
|
-
const parent = this.findCommonAncestor(elkEdge
|
|
94
|
+
const parent = this.findCommonAncestor(elkEdge);
|
|
86
95
|
if (parent) {
|
|
87
96
|
parent.edges!.push(elkEdge);
|
|
88
97
|
}
|
|
@@ -121,9 +130,13 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
121
130
|
return result;
|
|
122
131
|
}
|
|
123
132
|
|
|
124
|
-
protected findCommonAncestor(elkEdge:
|
|
125
|
-
|
|
126
|
-
|
|
133
|
+
protected findCommonAncestor(elkEdge: ElkExtendedEdge): ElkNode | undefined {
|
|
134
|
+
if (elkEdge.sources.length === 0 || elkEdge.targets.length === 0) {
|
|
135
|
+
this.logger.warn('Edges with multiple sources or targets are not supported by the GLSPElkLayoutEngine', elkEdge);
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
const source = this.modelState.index.get(elkEdge.sources[0]);
|
|
139
|
+
const target = this.modelState.index.get(elkEdge.targets[0]);
|
|
127
140
|
if (!source || !target) {
|
|
128
141
|
return undefined;
|
|
129
142
|
}
|
|
@@ -135,14 +148,15 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
135
148
|
return undefined;
|
|
136
149
|
}
|
|
137
150
|
|
|
151
|
+
let ancestor: ElkGraphElement | undefined;
|
|
138
152
|
if (sourceParent === targetParent) {
|
|
139
|
-
|
|
153
|
+
ancestor = this.idToElkElement.get(sourceParent.id);
|
|
140
154
|
} else if (source === targetParent) {
|
|
141
|
-
|
|
155
|
+
ancestor = this.idToElkElement.get(source.id);
|
|
142
156
|
} else if (target === sourceParent) {
|
|
143
|
-
|
|
157
|
+
ancestor = this.idToElkElement.get(target.id);
|
|
144
158
|
}
|
|
145
|
-
return undefined;
|
|
159
|
+
return ancestor as ElkNode | undefined;
|
|
146
160
|
}
|
|
147
161
|
|
|
148
162
|
protected transformGraph(graph: GGraph): ElkGraphElement {
|
|
@@ -151,9 +165,9 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
151
165
|
layoutOptions: this.configurator.apply(graph)
|
|
152
166
|
};
|
|
153
167
|
if (graph.children) {
|
|
154
|
-
elkGraph.children = this.findChildren(graph, GNode).map(child => this.transformToElk(child))
|
|
168
|
+
elkGraph.children = this.findChildren(graph, GNode).map(child => this.transformToElk(child));
|
|
155
169
|
elkGraph.edges = [];
|
|
156
|
-
this.elkEdges.push(...
|
|
170
|
+
this.elkEdges.push(...this.findChildren(graph, GEdge).map(child => this.transformToElk(child)));
|
|
157
171
|
}
|
|
158
172
|
|
|
159
173
|
this.idToElkElement.set(graph.id, elkGraph);
|
|
@@ -167,12 +181,12 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
167
181
|
};
|
|
168
182
|
|
|
169
183
|
if (node.children) {
|
|
170
|
-
elkNode.children = this.findChildren(node, GNode).map(child => this.transformToElk(child))
|
|
184
|
+
elkNode.children = this.findChildren(node, GNode).map(child => this.transformToElk(child));
|
|
171
185
|
elkNode.edges = [];
|
|
172
|
-
this.elkEdges.push(...
|
|
186
|
+
this.elkEdges.push(...this.findChildren(node, GEdge).map(child => this.transformToElk(child)));
|
|
173
187
|
|
|
174
|
-
elkNode.labels = this.findChildren(node, GLabel).map(child => this.transformToElk(child))
|
|
175
|
-
elkNode.ports = this.findChildren(node, GPort).map(child => this.transformToElk(child))
|
|
188
|
+
elkNode.labels = this.findChildren(node, GLabel).map(child => this.transformToElk(child));
|
|
189
|
+
elkNode.ports = this.findChildren(node, GPort).map(child => this.transformToElk(child));
|
|
176
190
|
}
|
|
177
191
|
|
|
178
192
|
this.transformShape(elkNode, node);
|
|
@@ -192,39 +206,27 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
192
206
|
}
|
|
193
207
|
}
|
|
194
208
|
|
|
195
|
-
protected transformEdge(edge: GEdge):
|
|
196
|
-
const elkEdge:
|
|
209
|
+
protected transformEdge(edge: GEdge): ElkExtendedEdge {
|
|
210
|
+
const elkEdge: ElkExtendedEdge = {
|
|
197
211
|
id: edge.id,
|
|
198
|
-
|
|
199
|
-
|
|
212
|
+
sources: [edge.sourceId],
|
|
213
|
+
targets: [edge.targetId],
|
|
200
214
|
layoutOptions: this.configurator.apply(edge)
|
|
201
215
|
};
|
|
202
|
-
const sourceElement = this.modelState.index.get(edge.sourceId);
|
|
203
|
-
if (sourceElement instanceof GPort) {
|
|
204
|
-
const parentNode = findParentByClass(sourceElement, GNode);
|
|
205
|
-
if (parentNode) {
|
|
206
|
-
elkEdge.source = parentNode.id;
|
|
207
|
-
elkEdge.sourcePort = sourceElement.id;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
const targetElement = this.modelState.index.get(edge.targetId);
|
|
212
|
-
if (sourceElement instanceof GPort) {
|
|
213
|
-
const parentNode = findParentByClass(targetElement, GNode);
|
|
214
|
-
if (parentNode) {
|
|
215
|
-
elkEdge.target = parentNode.id;
|
|
216
|
-
elkEdge.targetPort = targetElement.id;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
216
|
|
|
220
217
|
if (edge.children) {
|
|
221
|
-
elkEdge.labels = this.findChildren(edge, GLabel).map(child => this.transformToElk(child))
|
|
218
|
+
elkEdge.labels = this.findChildren(edge, GLabel).map(child => this.transformToElk(child));
|
|
222
219
|
}
|
|
223
220
|
const points = edge.routingPoints;
|
|
224
221
|
if (points && points.length >= 2) {
|
|
225
|
-
elkEdge.
|
|
226
|
-
|
|
227
|
-
|
|
222
|
+
elkEdge.sections = [
|
|
223
|
+
{
|
|
224
|
+
id: edge.id + ':section',
|
|
225
|
+
startPoint: points[0],
|
|
226
|
+
bendPoints: points.slice(1, points.length - 1),
|
|
227
|
+
endPoint: points[points.length - 1]
|
|
228
|
+
}
|
|
229
|
+
];
|
|
228
230
|
}
|
|
229
231
|
this.idToElkElement.set(edge.id, elkEdge);
|
|
230
232
|
return elkEdge;
|
|
@@ -247,8 +249,8 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
247
249
|
layoutOptions: this.configurator.apply(port)
|
|
248
250
|
};
|
|
249
251
|
if (port.children) {
|
|
250
|
-
elkPort.labels = this.findChildren(port, GLabel).map(child => this.transformToElk(child))
|
|
251
|
-
this.elkEdges.push(...
|
|
252
|
+
elkPort.labels = this.findChildren(port, GLabel).map(child => this.transformToElk(child));
|
|
253
|
+
this.elkEdges.push(...this.findChildren(port, GEdge).map(child => this.transformToElk(child)));
|
|
252
254
|
}
|
|
253
255
|
this.transformShape(elkPort, port);
|
|
254
256
|
this.idToElkElement.set(port.id, elkPort);
|
|
@@ -294,7 +296,7 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
294
296
|
|
|
295
297
|
if (elkShape.labels) {
|
|
296
298
|
for (const elkLabel of elkShape.labels) {
|
|
297
|
-
const label = this.modelState.index.findByClass(elkLabel.id, GLabel);
|
|
299
|
+
const label = elkLabel.id ? this.modelState.index.findByClass(elkLabel.id, GLabel) : undefined;
|
|
298
300
|
if (label) {
|
|
299
301
|
this.applyShape(label, elkLabel);
|
|
300
302
|
}
|
|
@@ -302,10 +304,10 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
302
304
|
}
|
|
303
305
|
}
|
|
304
306
|
|
|
305
|
-
protected applyEdge(edge: GEdge, elkEdge:
|
|
307
|
+
protected applyEdge(edge: GEdge, elkEdge: ElkExtendedEdge): void {
|
|
306
308
|
const points: Point[] = [];
|
|
307
|
-
if (
|
|
308
|
-
const section =
|
|
309
|
+
if (elkEdge.sections && elkEdge.sections.length > 0) {
|
|
310
|
+
const section = elkEdge.sections[0];
|
|
309
311
|
if (section.startPoint) {
|
|
310
312
|
points.push(section.startPoint);
|
|
311
313
|
}
|
|
@@ -315,23 +317,12 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
315
317
|
if (section.endPoint) {
|
|
316
318
|
points.push(section.endPoint);
|
|
317
319
|
}
|
|
318
|
-
} else {
|
|
319
|
-
const section = elkEdge as ElkPrimitiveEdge;
|
|
320
|
-
if (section.sourcePoint) {
|
|
321
|
-
points.push(section.sourcePoint);
|
|
322
|
-
}
|
|
323
|
-
if (section.bendPoints) {
|
|
324
|
-
points.push(...section.bendPoints);
|
|
325
|
-
}
|
|
326
|
-
if (section.targetPoint) {
|
|
327
|
-
points.push(section.targetPoint);
|
|
328
|
-
}
|
|
329
320
|
}
|
|
330
321
|
edge.routingPoints = points;
|
|
331
322
|
|
|
332
323
|
if (elkEdge.labels) {
|
|
333
324
|
elkEdge.labels.forEach(elkLabel => {
|
|
334
|
-
const label = this.modelState.index.findByClass(elkLabel.id, GLabel);
|
|
325
|
+
const label = elkLabel.id ? this.modelState.index.findByClass(elkLabel.id, GLabel) : undefined;
|
|
335
326
|
if (label) {
|
|
336
327
|
this.applyShape(label, elkLabel);
|
|
337
328
|
}
|