@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.
@@ -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":";;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,iDAAmG;AACnG,uDAAsE;AACtE,yCAA4C;AAC5C,qDAAuE;AACvE,qEAA2E;AAC3E,+DAAuF;AAkCvF;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,wBAAwB,CAAC,OAAyB;IAC9D,OAAO,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QACzD,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;QAElD,IAAI,CAAC,OAAO,CAAC,eAAM,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,eAAM,CAAC,CAAC,EAAE,CAAC,mBAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,sBAAa,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,sBAAa,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,MAAc,EAAE,EAAE;gBAC/D,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,eAAM,CAAC,CAAC;gBACpD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;gBACvB,OAAO,MAAM,CAAC;YAClB,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AApDD,4DAoDC"}
@@ -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, 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
40
  layout(): MaybePromise<GModelRoot>;
40
- protected transformToElk(model: GModelElement): ElkGraphElement;
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,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
- 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":"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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.123+948f71a",
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.123+948f71a",
53
- "elkjs": "^0.7.1"
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": "948f71ac24366102dbc6b9352f5d10b5777b150b"
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, ElkEdge, ElkExtendedEdge, ElkGraphElement, ElkLabel, ElkNode, ElkPort, ElkPrimitiveEdge, ElkShape } from 'elkjs/lib/elk-api';
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: ElkEdge[];
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) as ElkNode;
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 as ElkPrimitiveEdge);
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: ElkPrimitiveEdge): ElkNode | undefined {
125
- const source = this.modelState.index.get(elkEdge.source);
126
- const target = this.modelState.index.get(elkEdge.target);
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
- return this.idToElkElement.get(sourceParent.id);
152
+ ancestor = this.idToElkElement.get(sourceParent.id);
140
153
  } else if (source === targetParent) {
141
- return this.idToElkElement.get(source.id);
154
+ ancestor = this.idToElkElement.get(source.id);
142
155
  } else if (target === sourceParent) {
143
- return this.idToElkElement.get(target.id);
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)) as ElkNode[];
167
+ elkGraph.children = this.findChildren(graph, GNode).map(child => this.transformToElk(child));
155
168
  elkGraph.edges = [];
156
- this.elkEdges.push(...(this.findChildren(graph, GEdge).map(child => this.transformToElk(child)) as ElkEdge[]));
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)) as ElkNode[];
183
+ elkNode.children = this.findChildren(node, GNode).map(child => this.transformToElk(child));
171
184
  elkNode.edges = [];
172
- this.elkEdges.push(...(this.findChildren(node, GEdge).map(child => this.transformToElk(child)) as ElkEdge[]));
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)) as ElkLabel[];
175
- elkNode.ports = this.findChildren(node, GPort).map(child => this.transformToElk(child)) as ElkPort[];
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): ElkEdge {
196
- const elkEdge: ElkPrimitiveEdge = {
208
+ protected transformEdge(edge: GEdge): ElkExtendedEdge {
209
+ const elkEdge: ElkExtendedEdge = {
197
210
  id: edge.id,
198
- source: edge.sourceId,
199
- target: edge.targetId,
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)) as ElkLabel[];
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.sourcePoint = points[0];
226
- elkEdge.bendPoints = points.slice(1, points.length - 1);
227
- elkEdge.targetPoint = points[points.length - 1];
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)) as ElkLabel[];
251
- this.elkEdges.push(...(this.findChildren(port, GEdge).map(child => this.transformToElk(child)) as ElkEdge[]));
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: ElkEdge): void {
306
+ protected applyEdge(edge: GEdge, elkEdge: ElkExtendedEdge): void {
306
307
  const points: Point[] = [];
307
- if ((elkEdge as any).sections && (elkEdge as any).sections.length > 0) {
308
- const section = (elkEdge as ElkExtendedEdge).sections[0];
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
  }