@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.
@@ -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,CAwCnF"}
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;
@@ -1 +1 @@
1
- {"version":3,"file":"di.config.js","sourceRoot":"","sources":["../src/di.config.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,iDAAgE;AAChE,uDAAsE;AACtE,yCAA4C;AAC5C,qDAAuE;AACvE,qEAA2E;AAC3E,+DAAuF;AAkCvF;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,wBAAwB,CAAC,OAAyB;IAC9D,OAAO,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;QAC9B,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,8BAAa,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACrE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,8BAAa,CAAC,CAAC,EAAE,CAAC,qCAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACpE,CAAC;QAED,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC7B,IAAI,CAAC,wCAAkB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,wCAAkB,CAAC;iBACnB,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,gDAA0B,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;iBAC3G,gBAAgB,EAAE,CAAC;QAC5B,CAAC;QAED,MAAM,UAAU,GAAe,GAAG,EAAE,CAChC,IAAI,qBAAc,CAAC;YACf,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;YAClD,oFAAoF;YACpF,oGAAoG;YACpG,kCAAkC;YAClC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAsB,CAAC,CAAC,CAAC,SAAS;SAC1G,CAAC,CAAC;QAEP,IAAI,CAAC,mCAAU,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAE7C,IAAI,CAAC,4CAAmB,CAAC;aACpB,cAAc,CAAC,OAAO,CAAC,EAAE;YACtB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAa,mCAAU,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAgB,8BAAa,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAqB,wCAAkB,CAAC,CAAC;YAC3E,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAa,mBAAU,CAAC,CAAC;YACzD,OAAO,IAAI,4CAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QAC9E,CAAC,CAAC;aACD,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,qBAAY,CAAC,CAAC,SAAS,CAAC,4CAAmB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACP,CAAC;AAxCD,4DAwCC"}
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, ElkEdge, ElkGraphElement, ElkLabel, ElkNode, ElkPort, ElkPrimitiveEdge, ElkShape } from 'elkjs/lib/elk-api';
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: ElkEdge[];
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: GModelElement): ElkGraphElement;
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: ElkPrimitiveEdge): ElkNode | undefined;
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): ElkEdge;
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: ElkEdge): void;
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,EAIH,KAAK,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,wBAAwB,EACxB,UAAU,EACV,KAAK,EACL,KAAK,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,UAAU,EAEb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAmB,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE3I,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;IAQhD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa;IACxC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,kBAAkB;IACnD,SAAS,CAAC,UAAU,EAAE,UAAU;IATpC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAE5B,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC9B,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,aAAa,GAAG,eAAe;IAuB/D;;;;;;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,gBAAgB,GAAG,OAAO,GAAG,SAAS;IAwB5E,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,OAAO;IAsC7C,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,OAAO,GAAG,IAAI;CAoC3D"}
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
- const source = this.modelState.index.get(elkEdge.source);
102
- const target = this.modelState.index.get(elkEdge.target);
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
- return this.idToElkElement.get(sourceParent.id);
117
+ ancestor = this.idToElkElement.get(sourceParent.id);
113
118
  }
114
119
  else if (source === targetParent) {
115
- return this.idToElkElement.get(source.id);
120
+ ancestor = this.idToElkElement.get(source.id);
116
121
  }
117
122
  else if (target === sourceParent) {
118
- return this.idToElkElement.get(target.id);
123
+ ancestor = this.idToElkElement.get(target.id);
119
124
  }
120
- return undefined;
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
- source: edge.sourceId,
165
- target: edge.targetId,
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.sourcePoint = points[0];
190
- elkEdge.bendPoints = points.slice(1, points.length - 1);
191
- elkEdge.targetPoint = points[points.length - 1];
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":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;kFAakF;AAClF,iDAkB8B;AAE9B,yCAA+C;AAC/C,qDAAiD;AACjD,+DAA2D;AAS9C,QAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAE/C;;;GAGG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAS5B,YACI,UAAsB,EACH,MAAqB,EACrB,YAAgC,EACzC,UAAsB;QAFb,WAAM,GAAN,MAAM,CAAe;QACrB,iBAAY,GAAZ,YAAY,CAAoB;QACzC,eAAU,GAAV,UAAU,CAAY;QAEhC,IAAI,CAAC,GAAG,GAAG,UAAU,EAAE,CAAC;IAC5B,CAAC;IACD,MAAM,CAAC,SAA2B;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,CAAC,IAAI,YAAY,eAAM,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC;IAOS,cAAc,CAAC,KAAoB;QACzC,IAAI,KAAK,YAAY,eAAM,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAChD,IAAI,MAAM,EAAE,CAAC;oBACT,MAAM,CAAC,KAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACjB,CAAC;aAAM,IAAI,KAAK,YAAY,cAAK,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,KAAK,YAAY,cAAK,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,KAAK,YAAY,eAAM,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,KAAK,YAAY,cAAK,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;OAMG;IACO,YAAY,CAA0B,OAAsB,EAAE,WAAwC;QAC5G,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC7B,IAAI,KAAK,YAAY,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,KAAK,YAAY,qBAAY,EAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;YAC1D,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAClB,CAAC;IAES,kBAAkB,CAAC,OAAwB;QACjD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qFAAqF,EAAE,OAAO,CAAC,CAAC;YACjH,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,YAAY,GAAG,IAAA,mBAAU,EAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,YAAY,cAAK,IAAI,MAAM,YAAY,eAAM,CAAC,CAAC;QAC9G,MAAM,YAAY,GAAG,IAAA,mBAAU,EAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,YAAY,cAAK,IAAI,MAAM,YAAY,eAAM,CAAC,CAAC;QAE9G,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,QAAqC,CAAC;QAC1C,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;YAChC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;aAAM,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YACjC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YACjC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,QAA+B,CAAC;IAC3C,CAAC;IAES,cAAc,CAAC,KAAa;QAClC,MAAM,QAAQ,GAAY;YACtB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;SAChD,CAAC;QACF,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,cAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7F,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,cAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpG,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC5C,OAAO,QAAQ,CAAC;IACpB,CAAC;IAES,aAAa,CAAC,IAAW;QAC/B,MAAM,OAAO,GAAY;YACrB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;SAC/C,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,cAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3F,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,cAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE/F,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,eAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1F,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,cAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5F,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAE1C,OAAO,OAAO,CAAC;IACnB,CAAC;IAES,cAAc,CAAC,QAAkB,EAAE,KAAoB;QAC7D,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjB,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9B,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YAClC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QACxC,CAAC;IACL,CAAC;IAES,aAAa,CAAC,IAAW;QAC/B,MAAM,OAAO,GAAoB;YAC7B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;YACxB,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;YACxB,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;SAC/C,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,eAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QAClC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,QAAQ,GAAG;gBACf;oBACI,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,UAAU;oBACxB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;oBACrB,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC9C,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;iBACtC;aACJ,CAAC;QACN,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC;IACnB,CAAC;IAES,cAAc,CAAC,KAAa;QAClC,MAAM,QAAQ,GAAa;YACvB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;SAChD,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC5C,OAAO,QAAQ,CAAC;IACpB,CAAC;IAES,aAAa,CAAC,IAAW;QAC/B,MAAM,OAAO,GAAY;YACrB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;SAC/C,CAAC;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,eAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1F,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,cAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC;IACnB,CAAC;IAES,WAAW,CAAC,OAAgB;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,OAAO,YAAY,cAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACnD,IAAI,IAAI,YAAY,cAAK,EAAE,CAAC;oBACxB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAClC,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,cAAK,CAAC,CAAC;gBAClE,IAAI,IAAI,EAAE,CAAC;oBACP,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACnC,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAES,UAAU,CAAC,KAAoB,EAAE,QAAkB;QACzD,IAAI,QAAQ,CAAC,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACvD,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;QACtD,CAAC;QACD,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChE,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpE,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClB,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,eAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/F,IAAI,KAAK,EAAE,CAAC;oBACR,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACrC,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAES,SAAS,CAAC,IAAW,EAAE,OAAwB;QACrD,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACpC,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAE5B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,eAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/F,IAAI,KAAK,EAAE,CAAC;oBACR,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACrC,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;CACJ,CAAA;AAvRY,kDAAmB;AAET;IADlB,IAAA,kBAAM,EAAC,eAAM,CAAC;8BACY,eAAM;mDAAC;8BAFzB,mBAAmB;IAD/B,IAAA,sBAAU,GAAE;;GACA,mBAAmB,CAuR/B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-glsp/layout-elk",
3
- "version": "2.5.0-next.123+948f71a",
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.123+948f71a",
53
- "elkjs": "^0.7.1"
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": "948f71ac24366102dbc6b9352f5d10b5777b150b"
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, ElkEdge, ElkExtendedEdge, ElkGraphElement, ElkLabel, ElkNode, ElkPort, ElkPrimitiveEdge, ElkShape } from 'elkjs/lib/elk-api';
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: ElkEdge[];
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) as ElkNode;
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 as ElkPrimitiveEdge);
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: ElkPrimitiveEdge): ElkNode | undefined {
125
- const source = this.modelState.index.get(elkEdge.source);
126
- const target = this.modelState.index.get(elkEdge.target);
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
- return this.idToElkElement.get(sourceParent.id);
153
+ ancestor = this.idToElkElement.get(sourceParent.id);
140
154
  } else if (source === targetParent) {
141
- return this.idToElkElement.get(source.id);
155
+ ancestor = this.idToElkElement.get(source.id);
142
156
  } else if (target === sourceParent) {
143
- return this.idToElkElement.get(target.id);
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)) as ElkNode[];
168
+ elkGraph.children = this.findChildren(graph, GNode).map(child => this.transformToElk(child));
155
169
  elkGraph.edges = [];
156
- this.elkEdges.push(...(this.findChildren(graph, GEdge).map(child => this.transformToElk(child)) as ElkEdge[]));
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)) as ElkNode[];
184
+ elkNode.children = this.findChildren(node, GNode).map(child => this.transformToElk(child));
171
185
  elkNode.edges = [];
172
- this.elkEdges.push(...(this.findChildren(node, GEdge).map(child => this.transformToElk(child)) as ElkEdge[]));
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)) as ElkLabel[];
175
- elkNode.ports = this.findChildren(node, GPort).map(child => this.transformToElk(child)) as ElkPort[];
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): ElkEdge {
196
- const elkEdge: ElkPrimitiveEdge = {
209
+ protected transformEdge(edge: GEdge): ElkExtendedEdge {
210
+ const elkEdge: ElkExtendedEdge = {
197
211
  id: edge.id,
198
- source: edge.sourceId,
199
- target: edge.targetId,
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)) as ElkLabel[];
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.sourcePoint = points[0];
226
- elkEdge.bendPoints = points.slice(1, points.length - 1);
227
- elkEdge.targetPoint = points[points.length - 1];
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)) as ElkLabel[];
251
- this.elkEdges.push(...(this.findChildren(port, GEdge).map(child => this.transformToElk(child)) as ElkEdge[]));
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: ElkEdge): void {
307
+ protected applyEdge(edge: GEdge, elkEdge: ElkExtendedEdge): void {
306
308
  const points: Point[] = [];
307
- if ((elkEdge as any).sections && (elkEdge as any).sections.length > 0) {
308
- const section = (elkEdge as ElkExtendedEdge).sections[0];
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
  }