@eclipse-glsp/layout-elk 2.5.0-next.123 → 2.5.0-next.125
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 +12 -7
- package/lib/glsp-elk-layout-engine.d.ts.map +1 -1
- package/lib/glsp-elk-layout-engine.js +27 -41
- 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 +52 -62
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, 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
40
|
layout(): MaybePromise<GModelRoot>;
|
|
40
|
-
protected transformToElk(model:
|
|
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,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,IAAI,YAAY,CAAC,UAAU,CAAC;IAelC,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"}
|
|
@@ -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.125+72bdfaa",
|
|
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.125+72bdfaa",
|
|
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": "72bdfaa5e25ed0cc386b324be5f960e56a3c440c"
|
|
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,13 @@ import {
|
|
|
26
25
|
GPort,
|
|
27
26
|
GShapeElement,
|
|
28
27
|
LayoutEngine,
|
|
28
|
+
Logger,
|
|
29
29
|
MaybePromise,
|
|
30
30
|
ModelState,
|
|
31
31
|
Point
|
|
32
32
|
} from '@eclipse-glsp/server';
|
|
33
|
-
import { ELK,
|
|
34
|
-
import { injectable } from 'inversify';
|
|
33
|
+
import { ELK, ElkExtendedEdge, ElkGraphElement, ElkLabel, ElkNode, ElkPort, ElkShape } from 'elkjs/lib/elk-api';
|
|
34
|
+
import { inject, injectable } from 'inversify';
|
|
35
35
|
import { ElementFilter } from './element-filter';
|
|
36
36
|
import { LayoutConfigurator } from './layout-configurator';
|
|
37
37
|
|
|
@@ -50,9 +50,12 @@ export const ElkFactory = Symbol('ElkFactory');
|
|
|
50
50
|
*/
|
|
51
51
|
@injectable()
|
|
52
52
|
export class GlspElkLayoutEngine implements LayoutEngine {
|
|
53
|
+
@inject(Logger)
|
|
54
|
+
protected readonly logger: Logger;
|
|
55
|
+
|
|
53
56
|
protected readonly elk: ELK;
|
|
54
57
|
|
|
55
|
-
protected elkEdges:
|
|
58
|
+
protected elkEdges: ElkExtendedEdge[];
|
|
56
59
|
protected idToElkElement: Map<string, ElkGraphElement>;
|
|
57
60
|
|
|
58
61
|
constructor(
|
|
@@ -71,18 +74,23 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
71
74
|
|
|
72
75
|
this.elkEdges = [];
|
|
73
76
|
this.idToElkElement = new Map();
|
|
74
|
-
const elkGraph = this.transformToElk(root)
|
|
77
|
+
const elkGraph = this.transformToElk(root);
|
|
75
78
|
return this.elk.layout(elkGraph).then(result => {
|
|
76
79
|
this.applyLayout(result);
|
|
77
80
|
return root;
|
|
78
81
|
});
|
|
79
82
|
}
|
|
80
83
|
|
|
84
|
+
protected transformToElk(model: GGraph): ElkNode;
|
|
85
|
+
protected transformToElk(model: GNode): ElkNode;
|
|
86
|
+
protected transformToElk(model: GEdge): ElkExtendedEdge;
|
|
87
|
+
protected transformToElk(model: GLabel): ElkLabel;
|
|
88
|
+
protected transformToElk(model: GPort): ElkPort;
|
|
81
89
|
protected transformToElk(model: GModelElement): ElkGraphElement {
|
|
82
90
|
if (model instanceof GGraph) {
|
|
83
91
|
const graph = this.transformGraph(model);
|
|
84
92
|
this.elkEdges.forEach(elkEdge => {
|
|
85
|
-
const parent = this.findCommonAncestor(elkEdge
|
|
93
|
+
const parent = this.findCommonAncestor(elkEdge);
|
|
86
94
|
if (parent) {
|
|
87
95
|
parent.edges!.push(elkEdge);
|
|
88
96
|
}
|
|
@@ -121,9 +129,13 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
121
129
|
return result;
|
|
122
130
|
}
|
|
123
131
|
|
|
124
|
-
protected findCommonAncestor(elkEdge:
|
|
125
|
-
|
|
126
|
-
|
|
132
|
+
protected findCommonAncestor(elkEdge: ElkExtendedEdge): ElkNode | undefined {
|
|
133
|
+
if (elkEdge.sources.length === 0 || elkEdge.targets.length === 0) {
|
|
134
|
+
this.logger.warn('Edges with multiple sources or targets are not supported by the GLSPElkLayoutEngine', elkEdge);
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
const source = this.modelState.index.get(elkEdge.sources[0]);
|
|
138
|
+
const target = this.modelState.index.get(elkEdge.targets[0]);
|
|
127
139
|
if (!source || !target) {
|
|
128
140
|
return undefined;
|
|
129
141
|
}
|
|
@@ -135,14 +147,15 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
135
147
|
return undefined;
|
|
136
148
|
}
|
|
137
149
|
|
|
150
|
+
let ancestor: ElkGraphElement | undefined;
|
|
138
151
|
if (sourceParent === targetParent) {
|
|
139
|
-
|
|
152
|
+
ancestor = this.idToElkElement.get(sourceParent.id);
|
|
140
153
|
} else if (source === targetParent) {
|
|
141
|
-
|
|
154
|
+
ancestor = this.idToElkElement.get(source.id);
|
|
142
155
|
} else if (target === sourceParent) {
|
|
143
|
-
|
|
156
|
+
ancestor = this.idToElkElement.get(target.id);
|
|
144
157
|
}
|
|
145
|
-
return undefined;
|
|
158
|
+
return ancestor as ElkNode | undefined;
|
|
146
159
|
}
|
|
147
160
|
|
|
148
161
|
protected transformGraph(graph: GGraph): ElkGraphElement {
|
|
@@ -151,9 +164,9 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
151
164
|
layoutOptions: this.configurator.apply(graph)
|
|
152
165
|
};
|
|
153
166
|
if (graph.children) {
|
|
154
|
-
elkGraph.children = this.findChildren(graph, GNode).map(child => this.transformToElk(child))
|
|
167
|
+
elkGraph.children = this.findChildren(graph, GNode).map(child => this.transformToElk(child));
|
|
155
168
|
elkGraph.edges = [];
|
|
156
|
-
this.elkEdges.push(...
|
|
169
|
+
this.elkEdges.push(...this.findChildren(graph, GEdge).map(child => this.transformToElk(child)));
|
|
157
170
|
}
|
|
158
171
|
|
|
159
172
|
this.idToElkElement.set(graph.id, elkGraph);
|
|
@@ -167,12 +180,12 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
167
180
|
};
|
|
168
181
|
|
|
169
182
|
if (node.children) {
|
|
170
|
-
elkNode.children = this.findChildren(node, GNode).map(child => this.transformToElk(child))
|
|
183
|
+
elkNode.children = this.findChildren(node, GNode).map(child => this.transformToElk(child));
|
|
171
184
|
elkNode.edges = [];
|
|
172
|
-
this.elkEdges.push(...
|
|
185
|
+
this.elkEdges.push(...this.findChildren(node, GEdge).map(child => this.transformToElk(child)));
|
|
173
186
|
|
|
174
|
-
elkNode.labels = this.findChildren(node, GLabel).map(child => this.transformToElk(child))
|
|
175
|
-
elkNode.ports = this.findChildren(node, GPort).map(child => this.transformToElk(child))
|
|
187
|
+
elkNode.labels = this.findChildren(node, GLabel).map(child => this.transformToElk(child));
|
|
188
|
+
elkNode.ports = this.findChildren(node, GPort).map(child => this.transformToElk(child));
|
|
176
189
|
}
|
|
177
190
|
|
|
178
191
|
this.transformShape(elkNode, node);
|
|
@@ -192,39 +205,27 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
192
205
|
}
|
|
193
206
|
}
|
|
194
207
|
|
|
195
|
-
protected transformEdge(edge: GEdge):
|
|
196
|
-
const elkEdge:
|
|
208
|
+
protected transformEdge(edge: GEdge): ElkExtendedEdge {
|
|
209
|
+
const elkEdge: ElkExtendedEdge = {
|
|
197
210
|
id: edge.id,
|
|
198
|
-
|
|
199
|
-
|
|
211
|
+
sources: [edge.sourceId],
|
|
212
|
+
targets: [edge.targetId],
|
|
200
213
|
layoutOptions: this.configurator.apply(edge)
|
|
201
214
|
};
|
|
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
215
|
|
|
220
216
|
if (edge.children) {
|
|
221
|
-
elkEdge.labels = this.findChildren(edge, GLabel).map(child => this.transformToElk(child))
|
|
217
|
+
elkEdge.labels = this.findChildren(edge, GLabel).map(child => this.transformToElk(child));
|
|
222
218
|
}
|
|
223
219
|
const points = edge.routingPoints;
|
|
224
220
|
if (points && points.length >= 2) {
|
|
225
|
-
elkEdge.
|
|
226
|
-
|
|
227
|
-
|
|
221
|
+
elkEdge.sections = [
|
|
222
|
+
{
|
|
223
|
+
id: edge.id + ':section',
|
|
224
|
+
startPoint: points[0],
|
|
225
|
+
bendPoints: points.slice(1, points.length - 1),
|
|
226
|
+
endPoint: points[points.length - 1]
|
|
227
|
+
}
|
|
228
|
+
];
|
|
228
229
|
}
|
|
229
230
|
this.idToElkElement.set(edge.id, elkEdge);
|
|
230
231
|
return elkEdge;
|
|
@@ -247,8 +248,8 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
247
248
|
layoutOptions: this.configurator.apply(port)
|
|
248
249
|
};
|
|
249
250
|
if (port.children) {
|
|
250
|
-
elkPort.labels = this.findChildren(port, GLabel).map(child => this.transformToElk(child))
|
|
251
|
-
this.elkEdges.push(...
|
|
251
|
+
elkPort.labels = this.findChildren(port, GLabel).map(child => this.transformToElk(child));
|
|
252
|
+
this.elkEdges.push(...this.findChildren(port, GEdge).map(child => this.transformToElk(child)));
|
|
252
253
|
}
|
|
253
254
|
this.transformShape(elkPort, port);
|
|
254
255
|
this.idToElkElement.set(port.id, elkPort);
|
|
@@ -294,7 +295,7 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
294
295
|
|
|
295
296
|
if (elkShape.labels) {
|
|
296
297
|
for (const elkLabel of elkShape.labels) {
|
|
297
|
-
const label = this.modelState.index.findByClass(elkLabel.id, GLabel);
|
|
298
|
+
const label = elkLabel.id ? this.modelState.index.findByClass(elkLabel.id, GLabel) : undefined;
|
|
298
299
|
if (label) {
|
|
299
300
|
this.applyShape(label, elkLabel);
|
|
300
301
|
}
|
|
@@ -302,10 +303,10 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
302
303
|
}
|
|
303
304
|
}
|
|
304
305
|
|
|
305
|
-
protected applyEdge(edge: GEdge, elkEdge:
|
|
306
|
+
protected applyEdge(edge: GEdge, elkEdge: ElkExtendedEdge): void {
|
|
306
307
|
const points: Point[] = [];
|
|
307
|
-
if (
|
|
308
|
-
const section =
|
|
308
|
+
if (elkEdge.sections && elkEdge.sections.length > 0) {
|
|
309
|
+
const section = elkEdge.sections[0];
|
|
309
310
|
if (section.startPoint) {
|
|
310
311
|
points.push(section.startPoint);
|
|
311
312
|
}
|
|
@@ -315,23 +316,12 @@ export class GlspElkLayoutEngine implements LayoutEngine {
|
|
|
315
316
|
if (section.endPoint) {
|
|
316
317
|
points.push(section.endPoint);
|
|
317
318
|
}
|
|
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
319
|
}
|
|
330
320
|
edge.routingPoints = points;
|
|
331
321
|
|
|
332
322
|
if (elkEdge.labels) {
|
|
333
323
|
elkEdge.labels.forEach(elkLabel => {
|
|
334
|
-
const label = this.modelState.index.findByClass(elkLabel.id, GLabel);
|
|
324
|
+
const label = elkLabel.id ? this.modelState.index.findByClass(elkLabel.id, GLabel) : undefined;
|
|
335
325
|
if (label) {
|
|
336
326
|
this.applyShape(label, elkLabel);
|
|
337
327
|
}
|