@eclipse-glsp/layout-elk 1.1.0-next.e3f33d3.49 → 1.1.0-next.f692ea4.55
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/element-filter.d.ts +1 -1
- package/lib/element-filter.js +1 -1
- package/lib/glsp-elk-layout-engine.d.ts +1 -1
- package/lib/glsp-elk-layout-engine.js +1 -1
- package/lib/layout-configurator.d.ts +1 -1
- package/lib/layout-configurator.js +1 -1
- package/package.json +3 -3
- package/src/di.config.spec.ts +24 -2
- package/src/element-filter.ts +1 -1
- package/src/glsp-elk-layout-engine.ts +1 -1
- package/src/layout-configurator.ts +1 -1
- package/lib/di.config.spec.d.ts +0 -2
- package/lib/di.config.spec.d.ts.map +0 -1
- package/lib/di.config.spec.js +0 -96
- package/lib/di.config.spec.js.map +0 -1
package/lib/element-filter.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2018-
|
|
2
|
+
* Copyright (c) 2018-2023 TypeFox and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
package/lib/element-filter.js
CHANGED
|
@@ -11,7 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.DefaultElementFilter = exports.ElementFilter = void 0;
|
|
13
13
|
/********************************************************************************
|
|
14
|
-
* Copyright (c) 2018-
|
|
14
|
+
* Copyright (c) 2018-2023 TypeFox and others.
|
|
15
15
|
*
|
|
16
16
|
* This program and the accompanying materials are made available under the
|
|
17
17
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2018-
|
|
2
|
+
* Copyright (c) 2018-2023 TypeFox and others.
|
|
3
3
|
* This program and the accompanying materials are made available under the
|
|
4
4
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
5
5
|
* http://www.eclipse.org/legal/epl-2.0.
|
|
@@ -11,7 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.GlspElkLayoutEngine = void 0;
|
|
13
13
|
/********************************************************************************
|
|
14
|
-
* Copyright (c) 2018-
|
|
14
|
+
* Copyright (c) 2018-2023 TypeFox and others.
|
|
15
15
|
* This program and the accompanying materials are made available under the
|
|
16
16
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
17
17
|
* http://www.eclipse.org/legal/epl-2.0.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2022 STMicroelectronics and others.
|
|
2
|
+
* Copyright (c) 2022-2023 STMicroelectronics and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -11,7 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.FallbackLayoutConfigurator = exports.AbstractLayoutConfigurator = exports.LayoutConfigurator = void 0;
|
|
13
13
|
/********************************************************************************
|
|
14
|
-
* Copyright (c) 2022 STMicroelectronics and others.
|
|
14
|
+
* Copyright (c) 2022-2023 STMicroelectronics and others.
|
|
15
15
|
*
|
|
16
16
|
* This program and the accompanying materials are made available under the
|
|
17
17
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eclipse-glsp/layout-elk",
|
|
3
|
-
"version": "1.1.0-next.
|
|
3
|
+
"version": "1.1.0-next.f692ea4.55+f692ea4",
|
|
4
4
|
"description": "Integration of ELK graph layout algorithms in GLSP Node Server",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eclipse",
|
|
@@ -50,12 +50,12 @@
|
|
|
50
50
|
"watch": "tsc -w"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@eclipse-glsp/server": "1.1.0-next.
|
|
53
|
+
"@eclipse-glsp/server": "1.1.0-next.f692ea4.55+f692ea4",
|
|
54
54
|
"elkjs": "^0.7.1",
|
|
55
55
|
"sprotty-elk": "0.12.0"
|
|
56
56
|
},
|
|
57
57
|
"publishConfig": {
|
|
58
58
|
"access": "public"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "f692ea4c66ddb29f09e8f76738a4a0b63fdf96d8"
|
|
61
61
|
}
|
package/src/di.config.spec.ts
CHANGED
|
@@ -13,8 +13,16 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import {
|
|
17
|
-
|
|
16
|
+
import {
|
|
17
|
+
DefaultModelState,
|
|
18
|
+
DiagramConfiguration,
|
|
19
|
+
EdgeTypeHint,
|
|
20
|
+
GGraph,
|
|
21
|
+
GModelElementConstructor,
|
|
22
|
+
ModelState,
|
|
23
|
+
ServerLayoutKind,
|
|
24
|
+
ShapeTypeHint
|
|
25
|
+
} from '@eclipse-glsp/server';
|
|
18
26
|
import { expect } from 'chai';
|
|
19
27
|
import { Container, ContainerModule, injectable } from 'inversify';
|
|
20
28
|
import * as sinon from 'sinon';
|
|
@@ -28,6 +36,20 @@ class CustomLayoutConfigurator extends AbstractLayoutConfigurator {}
|
|
|
28
36
|
@injectable()
|
|
29
37
|
class CustomElementFilter extends DefaultElementFilter {}
|
|
30
38
|
|
|
39
|
+
class StubDiagramConfiguration implements DiagramConfiguration {
|
|
40
|
+
typeMapping = new Map<string, GModelElementConstructor>();
|
|
41
|
+
|
|
42
|
+
shapeTypeHints: ShapeTypeHint[] = [];
|
|
43
|
+
|
|
44
|
+
edgeTypeHints: EdgeTypeHint[] = [];
|
|
45
|
+
|
|
46
|
+
layoutKind = ServerLayoutKind.NONE;
|
|
47
|
+
|
|
48
|
+
needsClientLayout = true;
|
|
49
|
+
|
|
50
|
+
animatedUpdate = true;
|
|
51
|
+
}
|
|
52
|
+
|
|
31
53
|
describe('test configureELKLayoutModule', () => {
|
|
32
54
|
const sandbox = sinon.createSandbox();
|
|
33
55
|
const mockDiagramConfiguration = new StubDiagramConfiguration();
|
package/src/element-filter.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2018-
|
|
2
|
+
* Copyright (c) 2018-2023 TypeFox and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2018-
|
|
2
|
+
* Copyright (c) 2018-2023 TypeFox and others.
|
|
3
3
|
* This program and the accompanying materials are made available under the
|
|
4
4
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
5
5
|
* http://www.eclipse.org/legal/epl-2.0.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2022 STMicroelectronics and others.
|
|
2
|
+
* Copyright (c) 2022-2023 STMicroelectronics and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
package/lib/di.config.spec.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"di.config.spec.d.ts","sourceRoot":"","sources":["../src/di.config.spec.ts"],"names":[],"mappings":""}
|
package/lib/di.config.spec.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
/********************************************************************************
|
|
10
|
-
* Copyright (c) 2022-2023 STMicroelectronics and others.
|
|
11
|
-
*
|
|
12
|
-
* This program and the accompanying materials are made available under the
|
|
13
|
-
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
14
|
-
* http://www.eclipse.org/legal/epl-2.0.
|
|
15
|
-
*
|
|
16
|
-
* This Source Code may also be made available under the following Secondary
|
|
17
|
-
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
18
|
-
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
19
|
-
* with the GNU Classpath Exception which is available at
|
|
20
|
-
* https://www.gnu.org/software/classpath/license.html.
|
|
21
|
-
*
|
|
22
|
-
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
23
|
-
********************************************************************************/
|
|
24
|
-
const server_1 = require("@eclipse-glsp/server");
|
|
25
|
-
const mock_util_1 = require("@eclipse-glsp/server/lib/common/test/mock-util");
|
|
26
|
-
const chai_1 = require("chai");
|
|
27
|
-
const inversify_1 = require("inversify");
|
|
28
|
-
const sinon = require("sinon");
|
|
29
|
-
const di_config_1 = require("./di.config");
|
|
30
|
-
const element_filter_1 = require("./element-filter");
|
|
31
|
-
const layout_configurator_1 = require("./layout-configurator");
|
|
32
|
-
let CustomLayoutConfigurator = class CustomLayoutConfigurator extends layout_configurator_1.AbstractLayoutConfigurator {
|
|
33
|
-
};
|
|
34
|
-
CustomLayoutConfigurator = __decorate([
|
|
35
|
-
(0, inversify_1.injectable)()
|
|
36
|
-
], CustomLayoutConfigurator);
|
|
37
|
-
let CustomElementFilter = class CustomElementFilter extends element_filter_1.DefaultElementFilter {
|
|
38
|
-
};
|
|
39
|
-
CustomElementFilter = __decorate([
|
|
40
|
-
(0, inversify_1.injectable)()
|
|
41
|
-
], CustomElementFilter);
|
|
42
|
-
describe('test configureELKLayoutModule', () => {
|
|
43
|
-
const sandbox = sinon.createSandbox();
|
|
44
|
-
const mockDiagramConfiguration = new mock_util_1.StubDiagramConfiguration();
|
|
45
|
-
const typeMappings = new Map();
|
|
46
|
-
typeMappings.set('graph', server_1.GGraph);
|
|
47
|
-
sandbox.stub(mockDiagramConfiguration, 'typeMapping').value(typeMappings);
|
|
48
|
-
const modelState = new server_1.DefaultModelState();
|
|
49
|
-
const baseModule = new inversify_1.ContainerModule(bind => {
|
|
50
|
-
bind(server_1.ModelState).toConstantValue(modelState);
|
|
51
|
-
});
|
|
52
|
-
it('configure with minimal options', () => {
|
|
53
|
-
const algorithm = 'layered';
|
|
54
|
-
const elkModule = (0, di_config_1.configureELKLayoutModule)({ algorithms: [algorithm] });
|
|
55
|
-
const container = new inversify_1.Container();
|
|
56
|
-
container.load(baseModule, elkModule);
|
|
57
|
-
const filter = container.get(element_filter_1.ElementFilter);
|
|
58
|
-
(0, chai_1.expect)(filter).to.be.an.instanceOf(element_filter_1.DefaultElementFilter);
|
|
59
|
-
const configurator = container.get(layout_configurator_1.LayoutConfigurator);
|
|
60
|
-
(0, chai_1.expect)(configurator).to.be.an.instanceOf(layout_configurator_1.FallbackLayoutConfigurator);
|
|
61
|
-
const graphOptions = configurator.apply(new server_1.GGraph());
|
|
62
|
-
(0, chai_1.expect)(graphOptions).not.to.be.undefined;
|
|
63
|
-
(0, chai_1.expect)(graphOptions['elk.algorithm']).to.equal(algorithm);
|
|
64
|
-
});
|
|
65
|
-
it('configure with additional default layout options', () => {
|
|
66
|
-
const algorithm = 'layered';
|
|
67
|
-
const defaultLayoutOptions = {
|
|
68
|
-
'elk.direction': 'LEFT',
|
|
69
|
-
'elk.edgeRouting': 'POLYLINE'
|
|
70
|
-
};
|
|
71
|
-
const elkModule = (0, di_config_1.configureELKLayoutModule)({ algorithms: [algorithm], defaultLayoutOptions });
|
|
72
|
-
const container = new inversify_1.Container();
|
|
73
|
-
container.load(baseModule, elkModule);
|
|
74
|
-
const configurator = container.get(layout_configurator_1.LayoutConfigurator);
|
|
75
|
-
const graphOptions = configurator.apply(new server_1.GGraph());
|
|
76
|
-
(0, chai_1.expect)(graphOptions).not.to.be.undefined;
|
|
77
|
-
(0, chai_1.expect)(graphOptions).to.include(defaultLayoutOptions);
|
|
78
|
-
});
|
|
79
|
-
it('configure with custom layout configurator', () => {
|
|
80
|
-
const algorithm = 'layered';
|
|
81
|
-
const elkModule = (0, di_config_1.configureELKLayoutModule)({ algorithms: [algorithm], layoutConfigurator: CustomLayoutConfigurator });
|
|
82
|
-
const container = new inversify_1.Container();
|
|
83
|
-
container.load(baseModule, elkModule);
|
|
84
|
-
const configurator = container.get(layout_configurator_1.LayoutConfigurator);
|
|
85
|
-
(0, chai_1.expect)(configurator).to.be.an.instanceOf(CustomLayoutConfigurator);
|
|
86
|
-
});
|
|
87
|
-
it('configure with custom element filter', () => {
|
|
88
|
-
const algorithm = 'layered';
|
|
89
|
-
const elkModule = (0, di_config_1.configureELKLayoutModule)({ algorithms: [algorithm], elementFilter: CustomElementFilter });
|
|
90
|
-
const container = new inversify_1.Container();
|
|
91
|
-
container.load(baseModule, elkModule);
|
|
92
|
-
const filter = container.get(element_filter_1.ElementFilter);
|
|
93
|
-
(0, chai_1.expect)(filter).to.be.an.instanceOf(CustomElementFilter);
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
//# sourceMappingURL=di.config.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"di.config.spec.js","sourceRoot":"","sources":["../src/di.config.spec.ts"],"names":[],"mappings":"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"}
|