@foblex/flow-dagre-layout 18.5.0
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/README.md +139 -0
- package/esm2022/foblex-flow-dagre-layout.mjs +5 -0
- package/esm2022/lib/configurations/default-dagre-layout-engine-options.mjs +11 -0
- package/esm2022/lib/configurations/index.mjs +2 -0
- package/esm2022/lib/engines/dagre-layout-engine.mjs +93 -0
- package/esm2022/lib/engines/index.mjs +2 -0
- package/esm2022/lib/enums/e-dagre-layout-algorithm.mjs +7 -0
- package/esm2022/lib/enums/index.mjs +2 -0
- package/esm2022/lib/index.mjs +5 -0
- package/esm2022/lib/models/i-dagre-layout-engine-options.mjs +2 -0
- package/esm2022/lib/models/index.mjs +2 -0
- package/esm2022/public-api.mjs +2 -0
- package/fesm2022/foblex-flow-dagre-layout.mjs +113 -0
- package/fesm2022/foblex-flow-dagre-layout.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/configurations/default-dagre-layout-engine-options.d.ts +2 -0
- package/lib/configurations/index.d.ts +1 -0
- package/lib/engines/dagre-layout-engine.d.ts +13 -0
- package/lib/engines/index.d.ts +1 -0
- package/lib/enums/e-dagre-layout-algorithm.d.ts +5 -0
- package/lib/enums/index.d.ts +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/models/i-dagre-layout-engine-options.d.ts +4 -0
- package/lib/models/index.d.ts +1 -0
- package/package.json +53 -0
- package/public-api.d.ts +1 -0
- package/schematics/collection.json +15 -0
- package/schematics/ng-add/index.d.ts +3 -0
- package/schematics/ng-add/index.js +107 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/schema.json +13 -0
- package/schematics/shared/foblex-flow-dependencies.d.ts +4 -0
- package/schematics/shared/foblex-flow-dependencies.js +11 -0
- package/schematics/shared/foblex-flow-dependencies.js.map +1 -0
- package/schematics/shared/i-ng-add-schema.d.ts +3 -0
- package/schematics/shared/i-ng-add-schema.js +3 -0
- package/schematics/shared/i-ng-add-schema.js.map +1 -0
- package/schematics/shared/package-json.d.ts +2 -0
- package/schematics/shared/package-json.js +18 -0
- package/schematics/shared/package-json.js.map +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# @foblex/flow-dagre-layout
|
|
2
|
+
|
|
3
|
+
`@foblex/flow-dagre-layout` adds a manual layout adapter for [Dagre](https://github.com/dagrejs/dagre) in [Foblex Flow](https://flow.foblex.com).
|
|
4
|
+
|
|
5
|
+
Use this package when your graph is mostly hierarchical and you want predictable left-to-right or top-to-bottom layout for workflows, trees, dependency maps, or org-chart style editors.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
The easiest path is:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
ng add @foblex/flow-dagre-layout
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
If your app already manages Flow styles on its own, you can skip the default theme wiring:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
ng add @foblex/flow-dagre-layout --skipTheme
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
For Nx workspaces:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
nx g @foblex/flow-dagre-layout:add
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
`ng add` ensures these packages are present and only adds the missing ones:
|
|
28
|
+
|
|
29
|
+
- `@foblex/flow`
|
|
30
|
+
- `@foblex/platform`
|
|
31
|
+
- `@foblex/mediator`
|
|
32
|
+
- `@foblex/2d`
|
|
33
|
+
- `@foblex/utils`
|
|
34
|
+
- the Dagre package itself
|
|
35
|
+
|
|
36
|
+
It also adds `node_modules/@foblex/flow/styles/default.scss` to application styles when the theme entry is missing.
|
|
37
|
+
|
|
38
|
+
If you prefer manual installation:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm install @foblex/flow @foblex/flow-dagre-layout @foblex/platform@^1.0.4 @foblex/mediator@^1.1.3 @foblex/2d@^1.2.2 @foblex/utils@^1.1.1
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The underlying `dagre` package is shipped as a runtime dependency of this package, so you do not need to install it separately.
|
|
45
|
+
|
|
46
|
+
## What The Engine Does
|
|
47
|
+
|
|
48
|
+
`DagreLayoutEngine` calculates node positions from:
|
|
49
|
+
|
|
50
|
+
- node ids
|
|
51
|
+
- optional node sizes
|
|
52
|
+
- source/target connections
|
|
53
|
+
- layout options such as direction, spacing, and algorithm
|
|
54
|
+
|
|
55
|
+
The engine returns only calculated node positions. Your app stays in charge of graph state and decides how to merge those positions back into your own node model.
|
|
56
|
+
|
|
57
|
+
## Minimal Setup
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
import { Component, inject } from '@angular/core';
|
|
61
|
+
import {
|
|
62
|
+
EFLayoutDirection,
|
|
63
|
+
IFLayoutConnection,
|
|
64
|
+
IFLayoutNode,
|
|
65
|
+
provideFLayout,
|
|
66
|
+
} from '@foblex/flow';
|
|
67
|
+
import {
|
|
68
|
+
DagreLayoutEngine,
|
|
69
|
+
EDagreLayoutAlgorithm,
|
|
70
|
+
} from '@foblex/flow-dagre-layout';
|
|
71
|
+
|
|
72
|
+
@Component({
|
|
73
|
+
standalone: true,
|
|
74
|
+
providers: [provideFLayout(DagreLayoutEngine)],
|
|
75
|
+
template: '',
|
|
76
|
+
})
|
|
77
|
+
export class WorkflowLayoutExample {
|
|
78
|
+
private readonly _layout = inject(DagreLayoutEngine);
|
|
79
|
+
|
|
80
|
+
protected async relayout(): Promise<void> {
|
|
81
|
+
const nodes: IFLayoutNode[] = [
|
|
82
|
+
{ id: 'A' },
|
|
83
|
+
{ id: 'B' },
|
|
84
|
+
{ id: 'C' },
|
|
85
|
+
];
|
|
86
|
+
const connections: IFLayoutConnection[] = [
|
|
87
|
+
{ source: 'A', target: 'B' },
|
|
88
|
+
{ source: 'B', target: 'C' },
|
|
89
|
+
];
|
|
90
|
+
|
|
91
|
+
const result = await this._layout.calculate(nodes, connections, {
|
|
92
|
+
direction: EFLayoutDirection.LEFT_RIGHT,
|
|
93
|
+
algorithm: EDagreLayoutAlgorithm.NETWORK_SIMPLEX,
|
|
94
|
+
nodeGap: 32,
|
|
95
|
+
layerGap: 48,
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
const positions = new Map(result.nodes.map((node) => [node.id, node.position]));
|
|
99
|
+
|
|
100
|
+
console.log(positions.get('A'));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Main Options
|
|
106
|
+
|
|
107
|
+
- `direction`: `EFLayoutDirection`
|
|
108
|
+
- `algorithm`: `EDagreLayoutAlgorithm`
|
|
109
|
+
- `nodeGap`: horizontal or sibling spacing
|
|
110
|
+
- `layerGap`: spacing between ranks or levels
|
|
111
|
+
- `defaultNodeSize`: fallback size when a node does not provide `size`
|
|
112
|
+
|
|
113
|
+
Available algorithms:
|
|
114
|
+
|
|
115
|
+
- `EDagreLayoutAlgorithm.NETWORK_SIMPLEX`
|
|
116
|
+
- `EDagreLayoutAlgorithm.TIGHT_TREE`
|
|
117
|
+
- `EDagreLayoutAlgorithm.LONGEST_PATH`
|
|
118
|
+
|
|
119
|
+
## Typical Integration Flow
|
|
120
|
+
|
|
121
|
+
1. Build your own graph data.
|
|
122
|
+
2. Convert it to `IFLayoutNode[]` and `IFLayoutConnection[]`.
|
|
123
|
+
3. Call `calculate(...)`.
|
|
124
|
+
4. Merge returned positions into your view model.
|
|
125
|
+
5. Render nodes in `f-flow`.
|
|
126
|
+
|
|
127
|
+
## Example
|
|
128
|
+
|
|
129
|
+
- Live example: [https://flow.foblex.com/examples/dagre-layout](https://flow.foblex.com/examples/dagre-layout)
|
|
130
|
+
- Example source: [libs/f-examples/plugins/dagre-layout](https://github.com/Foblex/f-flow/tree/main/libs/f-examples/plugins/dagre-layout)
|
|
131
|
+
|
|
132
|
+
## When To Choose Dagre
|
|
133
|
+
|
|
134
|
+
Choose Dagre when you want:
|
|
135
|
+
|
|
136
|
+
- fast directed layout
|
|
137
|
+
- tree-like or layered structure
|
|
138
|
+
- simple and predictable spacing controls
|
|
139
|
+
- a smaller option surface than ELK.js
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ibGV4LWZsb3ctZGFncmUtbGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGlicy9mLWxheW91dC9kYWdyZS9zcmMvZm9ibGV4LWZsb3ctZGFncmUtbGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SizeExtensions } from '@foblex/2d';
|
|
2
|
+
import { EFLayoutDirection } from '@foblex/flow';
|
|
3
|
+
import { EDagreLayoutAlgorithm } from '../enums';
|
|
4
|
+
export const DEFAULT_DAGRE_LAYOUT_ENGINE_OPTIONS = {
|
|
5
|
+
direction: EFLayoutDirection.TOP_BOTTOM,
|
|
6
|
+
nodeGap: 48,
|
|
7
|
+
layerGap: 64,
|
|
8
|
+
algorithm: EDagreLayoutAlgorithm.NETWORK_SIMPLEX,
|
|
9
|
+
defaultNodeSize: SizeExtensions.initialize(120, 72),
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1kYWdyZS1sYXlvdXQtZW5naW5lLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2RhZ3JlL3NyYy9saWIvY29uZmlndXJhdGlvbnMvZGVmYXVsdC1kYWdyZS1sYXlvdXQtZW5naW5lLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR2pELE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUE4QjtJQUM1RSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsVUFBVTtJQUN2QyxPQUFPLEVBQUUsRUFBRTtJQUNYLFFBQVEsRUFBRSxFQUFFO0lBQ1osU0FBUyxFQUFFLHFCQUFxQixDQUFDLGVBQWU7SUFDaEQsZUFBZSxFQUFFLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztDQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2l6ZUV4dGVuc2lvbnMgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IEVGTGF5b3V0RGlyZWN0aW9uIH0gZnJvbSAnQGZvYmxleC9mbG93JztcbmltcG9ydCB7IEVEYWdyZUxheW91dEFsZ29yaXRobSB9IGZyb20gJy4uL2VudW1zJztcbmltcG9ydCB7IElEYWdyZUxheW91dEVuZ2luZU9wdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9EQUdSRV9MQVlPVVRfRU5HSU5FX09QVElPTlM6IElEYWdyZUxheW91dEVuZ2luZU9wdGlvbnMgPSB7XG4gIGRpcmVjdGlvbjogRUZMYXlvdXREaXJlY3Rpb24uVE9QX0JPVFRPTSxcbiAgbm9kZUdhcDogNDgsXG4gIGxheWVyR2FwOiA2NCxcbiAgYWxnb3JpdGhtOiBFRGFncmVMYXlvdXRBbGdvcml0aG0uTkVUV09SS19TSU1QTEVYLFxuICBkZWZhdWx0Tm9kZVNpemU6IFNpemVFeHRlbnNpb25zLmluaXRpYWxpemUoMTIwLCA3MiksXG59O1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './default-dagre-layout-engine-options';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2RhZ3JlL3NyYy9saWIvY29uZmlndXJhdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdC1kYWdyZS1sYXlvdXQtZW5naW5lLW9wdGlvbnMnO1xuIl19
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { PointExtensions, SizeExtensions } from '@foblex/2d';
|
|
3
|
+
import * as dagre from 'dagre';
|
|
4
|
+
import { EFLayoutDirection, FLayoutEngine, mergeLayoutNodes, } from '@foblex/flow';
|
|
5
|
+
import { DEFAULT_DAGRE_LAYOUT_ENGINE_OPTIONS } from '../configurations';
|
|
6
|
+
import { EDagreLayoutAlgorithm } from '../enums';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class DagreLayoutEngine extends FLayoutEngine {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(DEFAULT_DAGRE_LAYOUT_ENGINE_OPTIONS);
|
|
11
|
+
}
|
|
12
|
+
mergeOptions(currentOptions, nextOptions = {}) {
|
|
13
|
+
return {
|
|
14
|
+
...currentOptions,
|
|
15
|
+
...nextOptions,
|
|
16
|
+
defaultNodeSize: nextOptions.defaultNodeSize
|
|
17
|
+
? SizeExtensions.initialize(nextOptions.defaultNodeSize.width, nextOptions.defaultNodeSize.height)
|
|
18
|
+
: SizeExtensions.initialize(currentOptions.defaultNodeSize.width, currentOptions.defaultNodeSize.height),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
async calculate(nodes, connections, options) {
|
|
22
|
+
const layoutOptions = this.resolveLayoutOptions(options);
|
|
23
|
+
const graph = this._buildGraph(nodes, connections, layoutOptions);
|
|
24
|
+
const positions = new Map();
|
|
25
|
+
dagre.layout(graph);
|
|
26
|
+
graph.nodes().forEach((nodeId) => {
|
|
27
|
+
const graphNode = graph.node(nodeId);
|
|
28
|
+
const sourceNode = nodes.find((node) => node.id === nodeId);
|
|
29
|
+
if (!graphNode || !sourceNode) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const size = sourceNode.size ?? layoutOptions.defaultNodeSize;
|
|
33
|
+
positions.set(nodeId, PointExtensions.initialize(graphNode.x - size.width / 2, graphNode.y - size.height / 2));
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
nodes: mergeLayoutNodes(nodes, positions),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
_buildGraph(nodes, connections, options) {
|
|
40
|
+
const graph = new dagre.graphlib.Graph();
|
|
41
|
+
graph.setDefaultEdgeLabel(() => ({}));
|
|
42
|
+
graph.setGraph({
|
|
43
|
+
rankdir: this._mapDirection(options.direction),
|
|
44
|
+
nodesep: options.nodeGap,
|
|
45
|
+
ranksep: options.layerGap,
|
|
46
|
+
ranker: this._mapAlgorithm(options.algorithm),
|
|
47
|
+
});
|
|
48
|
+
nodes.forEach((node) => {
|
|
49
|
+
const size = node.size ?? options.defaultNodeSize;
|
|
50
|
+
graph.setNode(node.id, {
|
|
51
|
+
width: size.width,
|
|
52
|
+
height: size.height,
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
connections.forEach((connection) => {
|
|
56
|
+
if (!graph.hasNode(connection.source) || !graph.hasNode(connection.target)) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
graph.setEdge(connection.source, connection.target, {});
|
|
60
|
+
});
|
|
61
|
+
return graph;
|
|
62
|
+
}
|
|
63
|
+
_mapAlgorithm(algorithm) {
|
|
64
|
+
switch (algorithm) {
|
|
65
|
+
case EDagreLayoutAlgorithm.TIGHT_TREE:
|
|
66
|
+
return 'tight-tree';
|
|
67
|
+
case EDagreLayoutAlgorithm.LONGEST_PATH:
|
|
68
|
+
return 'longest-path';
|
|
69
|
+
case EDagreLayoutAlgorithm.NETWORK_SIMPLEX:
|
|
70
|
+
default:
|
|
71
|
+
return 'network-simplex';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
_mapDirection(direction) {
|
|
75
|
+
switch (direction) {
|
|
76
|
+
case EFLayoutDirection.BOTTOM_TOP:
|
|
77
|
+
return 'BT';
|
|
78
|
+
case EFLayoutDirection.LEFT_RIGHT:
|
|
79
|
+
return 'LR';
|
|
80
|
+
case EFLayoutDirection.RIGHT_LEFT:
|
|
81
|
+
return 'RL';
|
|
82
|
+
case EFLayoutDirection.TOP_BOTTOM:
|
|
83
|
+
default:
|
|
84
|
+
return 'TB';
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DagreLayoutEngine, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
88
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DagreLayoutEngine });
|
|
89
|
+
}
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DagreLayoutEngine, decorators: [{
|
|
91
|
+
type: Injectable
|
|
92
|
+
}], ctorParameters: () => [] });
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFncmUtbGF5b3V0LWVuZ2luZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZi1sYXlvdXQvZGFncmUvc3JjL2xpYi9lbmdpbmVzL2RhZ3JlLWxheW91dC1lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3RCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGFBQWEsRUFLYixnQkFBZ0IsR0FDakIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUlqRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsYUFBd0M7SUFDN0U7UUFDRSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRWtCLFlBQVksQ0FDN0IsY0FBeUMsRUFDekMsY0FBa0QsRUFBRTtRQUVwRCxPQUFPO1lBQ0wsR0FBRyxjQUFjO1lBQ2pCLEdBQUcsV0FBVztZQUNkLGVBQWUsRUFBRSxXQUFXLENBQUMsZUFBZTtnQkFDMUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQ3ZCLFdBQVcsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUNqQyxXQUFXLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDbkM7Z0JBQ0gsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQ3ZCLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUNwQyxjQUFjLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDdEM7U0FDTixDQUFDO0lBQ0osQ0FBQztJQUVlLEtBQUssQ0FBQyxTQUFTLENBQzdCLEtBQXFC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QUNmLENBQUM7SUFFTyxhQUFhLENBQ25CLFNBQWdDO1FBRWhDLFFBQVEsU0FBUyxFQUFFLENBQUM7WUFDbEIsS0FBSyxxQkFBcUIsQ0FBQyxVQUFVO2dCQUNuQyxPQUFPLFlBQVksQ0FBQztZQUN0QixLQUFLLHFCQUFxQixDQUFDLFlBQVk7Z0JBQ3JDLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLEtBQUsscUJBQXFCLENBQUMsZUFBZSxDQUFDO1lBQzNDO2dCQUNFLE9BQU8saUJBQWlCLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFTyxhQUFhLENBQUMsU0FBNEI7UUFDaEQsUUFBUSxTQUFTLEVBQUUsQ0FBQztZQUNsQixLQUFLLGlCQUFpQixDQUFDLFVBQVU7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxpQkFBaUIsQ0FBQyxVQUFVO2dCQUMvQixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssaUJBQWlCLENBQUMsVUFBVTtnQkFDL0IsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLGlCQUFpQixDQUFDLFVBQVUsQ0FBQztZQUNsQztnQkFDRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQzt3R0FySFUsaUJBQWlCOzRHQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQb2ludEV4dGVuc2lvbnMsIFNpemVFeHRlbnNpb25zIH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgKiBhcyBkYWdyZSBmcm9tICdkYWdyZSc7XG5pbXBvcnQgeyBncmFwaGxpYiB9IGZyb20gJ2RhZ3JlJztcbmltcG9ydCB7XG4gIEVGTGF5b3V0RGlyZWN0aW9uLFxuICBGTGF5b3V0RW5naW5lLFxuICBJRkxheW91dENhbGN1bGF0aW9uT3B0aW9ucyxcbiAgSUZMYXlvdXRDb25uZWN0aW9uLFxuICBJRkxheW91dE5vZGUsXG4gIElGTGF5b3V0UmVzdWx0LFxuICBtZXJnZUxheW91dE5vZGVzLFxufSBmcm9tICdAZm9ibGV4L2Zsb3cnO1xuaW1wb3J0IHsgREVGQVVMVF9EQUdSRV9MQVlPVVRfRU5HSU5FX09QVElPTlMgfSBmcm9tICcuLi9jb25maWd1cmF0aW9ucyc7XG5pbXBvcnQgeyBFRGFncmVMYXlvdXRBbGdvcml0aG0gfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQgeyBJRGFncmVMYXlvdXRFbmdpbmVPcHRpb25zIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhZ3JlTGF5b3V0RW5naW5lIGV4dGVuZHMgRkxheW91dEVuZ2luZTxJRGFncmVMYXlvdXRFbmdpbmVPcHRpb25zPiB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihERUZBVUxUX0RBR1JFX0xBWU9VVF9FTkdJTkVfT1BUSU9OUyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbWVyZ2VPcHRpb25zKFxuICAgIGN1cnJlbnRPcHRpb25zOiBJRGFncmVMYXlvdXRFbmdpbmVPcHRpb25zLFxuICAgIG5leHRPcHRpb25zOiBQYXJ0aWFsPElEYWdyZUxheW91dEVuZ2luZU9wdGlvbnM+ID0ge30sXG4gICk6IElEYWdyZUxheW91dEVuZ2luZU9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5jdXJyZW50T3B0aW9ucyxcbiAgICAgIC4uLm5leHRPcHRpb25zLFxuICAgICAgZGVmYXVsdE5vZGVTaXplOiBuZXh0T3B0aW9ucy5kZWZhdWx0Tm9kZVNpemVcbiAgICAgICAgPyBTaXplRXh0ZW5zaW9ucy5pbml0aWFsaXplKFxuICAgICAgICAgICAgbmV4dE9wdGlvbnMuZGVmYXVsdE5vZGVTaXplLndpZHRoLFxuICAgICAgICAgICAgbmV4dE9wdGlvbnMuZGVmYXVsdE5vZGVTaXplLmhlaWdodCxcbiAgICAgICAgICApXG4gICAgICAgIDogU2l6ZUV4dGVuc2lvbnMuaW5pdGlhbGl6ZShcbiAgICAgICAgICAgIGN1cnJlbnRPcHRpb25zLmRlZmF1bHROb2RlU2l6ZS53aWR0aCxcbiAgICAgICAgICAgIGN1cnJlbnRPcHRpb25zLmRlZmF1bHROb2RlU2l6ZS5oZWlnaHQsXG4gICAgICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIGNhbGN1bGF0ZShcbiAgICBub2RlczogSUZMYXlvdXROb2RlW10sXG4gICAgY29ubmVjdGlvbnM6IElGTGF5b3V0Q29ubmVjdGlvbltdLFxuICAgIG9wdGlvbnM/OiBJRkxheW91dENhbGN1bGF0aW9uT3B0aW9uczxJRGFncmVMYXlvdXRFbmdpbmVPcHRpb25zPixcbiAgKTogUHJvbWlzZTxJRkxheW91dFJlc3VsdD4ge1xuICAgIGNvbnN0IGxheW91dE9wdGlvbnMgPSB0aGlzLnJlc29sdmVMYXlvdXRPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IGdyYXBoID0gdGhpcy5fYnVpbGRHcmFwaChub2RlcywgY29ubmVjdGlvbnMsIGxheW91dE9wdGlvbnMpO1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0+KCk7XG5cbiAgICBkYWdyZS5sYXlvdXQoZ3JhcGgpO1xuXG4gICAgZ3JhcGgubm9kZXMoKS5mb3JFYWNoKChub2RlSWQpID0+IHtcbiAgICAgIGNvbnN0IGdyYXBoTm9kZSA9IGdyYXBoLm5vZGUobm9kZUlkKTtcbiAgICAgIGNvbnN0IHNvdXJjZU5vZGUgPSBub2Rlcy5maW5kKChub2RlKSA9PiBub2RlLmlkID09PSBub2RlSWQpO1xuXG4gICAgICBpZiAoIWdyYXBoTm9kZSB8fCAhc291cmNlTm9kZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNpemUgPSBzb3VyY2VOb2RlLnNpemUgPz8gbGF5b3V0T3B0aW9ucy5kZWZhdWx0Tm9kZVNpemU7XG5cbiAgICAgIHBvc2l0aW9ucy5zZXQoXG4gICAgICAgIG5vZGVJZCxcbiAgICAgICAgUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUoZ3JhcGhOb2RlLnggLSBzaXplLndpZHRoIC8gMiwgZ3JhcGhOb2RlLnkgLSBzaXplLmhlaWdodCAvIDIpLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBub2RlczogbWVyZ2VMYXlvdXROb2Rlcyhub2RlcywgcG9zaXRpb25zKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfYnVpbGRHcmFwaChcbiAgICBub2RlczogSUZMYXlvdXROb2RlW10sXG4gICAgY29ubmVjdGlvbnM6IElGTGF5b3V0Q29ubmVjdGlvbltdLFxuICAgIG9wdGlvbnM6IElEYWdyZUxheW91dEVuZ2luZU9wdGlvbnMsXG4gICk6IGdyYXBobGliLkdyYXBoIHtcbiAgICBjb25zdCBncmFwaCA9IG5ldyBkYWdyZS5ncmFwaGxpYi5HcmFwaCgpO1xuXG4gICAgZ3JhcGguc2V0RGVmYXVsdEVkZ2VMYWJlbCgoKSA9PiAoe30pKTtcbiAgICBncmFwaC5zZXRHcmFwaCh7XG4gICAgICByYW5rZGlyOiB0aGlzLl9tYXBEaXJlY3Rpb24ob3B0aW9ucy5kaXJlY3Rpb24pLFxuICAgICAgbm9kZXNlcDogb3B0aW9ucy5ub2RlR2FwLFxuICAgICAgcmFua3NlcDogb3B0aW9ucy5sYXllckdhcCxcbiAgICAgIHJhbmtlcjogdGhpcy5fbWFwQWxnb3JpdGhtKG9wdGlvbnMuYWxnb3JpdGhtKSxcbiAgICB9KTtcblxuICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IHNpemUgPSBub2RlLnNpemUgPz8gb3B0aW9ucy5kZWZhdWx0Tm9kZVNpemU7XG5cbiAgICAgIGdyYXBoLnNldE5vZGUobm9kZS5pZCwge1xuICAgICAgICB3aWR0aDogc2l6ZS53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBzaXplLmhlaWdodCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29ubmVjdGlvbnMuZm9yRWFjaCgoY29ubmVjdGlvbikgPT4ge1xuICAgICAgaWYgKCFncmFwaC5oYXNOb2RlKGNvbm5lY3Rpb24uc291cmNlKSB8fCAhZ3JhcGguaGFzTm9kZShjb25uZWN0aW9uLnRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBncmFwaC5zZXRFZGdlKGNvbm5lY3Rpb24uc291cmNlLCBjb25uZWN0aW9uLnRhcmdldCwge30pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdyYXBoO1xuICB9XG5cbiAgcHJpdmF0ZSBfbWFwQWxnb3JpdGhtKFxuICAgIGFsZ29yaXRobTogRURhZ3JlTGF5b3V0QWxnb3JpdGhtLFxuICApOiAnbmV0d29yay1zaW1wbGV4JyB8ICd0aWdodC10cmVlJyB8ICdsb25nZXN0LXBhdGgnIHtcbiAgICBzd2l0Y2ggKGFsZ29yaXRobSkge1xuICAgICAgY2FzZSBFRGFncmVMYXlvdXRBbGdvcml0aG0uVElHSFRfVFJFRTpcbiAgICAgICAgcmV0dXJuICd0aWdodC10cmVlJztcbiAgICAgIGNhc2UgRURhZ3JlTGF5b3V0QWxnb3JpdGhtLkxPTkdFU1RfUEFUSDpcbiAgICAgICAgcmV0dXJuICdsb25nZXN0LXBhdGgnO1xuICAgICAgY2FzZSBFRGFncmVMYXlvdXRBbGdvcml0aG0uTkVUV09SS19TSU1QTEVYOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICduZXR3b3JrLXNpbXBsZXgnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX21hcERpcmVjdGlvbihkaXJlY3Rpb246IEVGTGF5b3V0RGlyZWN0aW9uKTogJ1RCJyB8ICdCVCcgfCAnTFInIHwgJ1JMJyB7XG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgRUZMYXlvdXREaXJlY3Rpb24uQk9UVE9NX1RPUDpcbiAgICAgICAgcmV0dXJuICdCVCc7XG4gICAgICBjYXNlIEVGTGF5b3V0RGlyZWN0aW9uLkxFRlRfUklHSFQ6XG4gICAgICAgIHJldHVybiAnTFInO1xuICAgICAgY2FzZSBFRkxheW91dERpcmVjdGlvbi5SSUdIVF9MRUZUOlxuICAgICAgICByZXR1cm4gJ1JMJztcbiAgICAgIGNhc2UgRUZMYXlvdXREaXJlY3Rpb24uVE9QX0JPVFRPTTpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnVEInO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './dagre-layout-engine';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2RhZ3JlL3NyYy9saWIvZW5naW5lcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kYWdyZS1sYXlvdXQtZW5naW5lJztcbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export var EDagreLayoutAlgorithm;
|
|
2
|
+
(function (EDagreLayoutAlgorithm) {
|
|
3
|
+
EDagreLayoutAlgorithm["NETWORK_SIMPLEX"] = "network-simplex";
|
|
4
|
+
EDagreLayoutAlgorithm["TIGHT_TREE"] = "tight-tree";
|
|
5
|
+
EDagreLayoutAlgorithm["LONGEST_PATH"] = "longest-path";
|
|
6
|
+
})(EDagreLayoutAlgorithm || (EDagreLayoutAlgorithm = {}));
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZS1kYWdyZS1sYXlvdXQtYWxnb3JpdGhtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9mLWxheW91dC9kYWdyZS9zcmMvbGliL2VudW1zL2UtZGFncmUtbGF5b3V0LWFsZ29yaXRobS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxxQkFJWDtBQUpELFdBQVkscUJBQXFCO0lBQy9CLDREQUFtQyxDQUFBO0lBQ25DLGtEQUF5QixDQUFBO0lBQ3pCLHNEQUE2QixDQUFBO0FBQy9CLENBQUMsRUFKVyxxQkFBcUIsS0FBckIscUJBQXFCLFFBSWhDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRURhZ3JlTGF5b3V0QWxnb3JpdGhtIHtcbiAgTkVUV09SS19TSU1QTEVYID0gJ25ldHdvcmstc2ltcGxleCcsXG4gIFRJR0hUX1RSRUUgPSAndGlnaHQtdHJlZScsXG4gIExPTkdFU1RfUEFUSCA9ICdsb25nZXN0LXBhdGgnLFxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './e-dagre-layout-algorithm';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2RhZ3JlL3NyYy9saWIvZW51bXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZS1kYWdyZS1sYXlvdXQtYWxnb3JpdGhtJztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './configurations';
|
|
2
|
+
export * from './engines';
|
|
3
|
+
export * from './enums';
|
|
4
|
+
export * from './models';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2RhZ3JlL3NyYy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlndXJhdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9lbmdpbmVzJztcbmV4cG9ydCAqIGZyb20gJy4vZW51bXMnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1kYWdyZS1sYXlvdXQtZW5naW5lLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2RhZ3JlL3NyYy9saWIvbW9kZWxzL2ktZGFncmUtbGF5b3V0LWVuZ2luZS1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRkxheW91dEFsZ29yaXRobU9wdGlvbnMgfSBmcm9tICdAZm9ibGV4L2Zsb3cnO1xuaW1wb3J0IHsgRURhZ3JlTGF5b3V0QWxnb3JpdGhtIH0gZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEYWdyZUxheW91dEVuZ2luZU9wdGlvbnNcbiAgZXh0ZW5kcyBJRkxheW91dEFsZ29yaXRobU9wdGlvbnM8RURhZ3JlTGF5b3V0QWxnb3JpdGhtPiB7fVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './i-dagre-layout-engine-options';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2RhZ3JlL3NyYy9saWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ktZGFncmUtbGF5b3V0LWVuZ2luZS1vcHRpb25zJztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './lib';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYnMvZi1sYXlvdXQvZGFncmUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYic7XG4iXX0=
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { SizeExtensions, PointExtensions } from '@foblex/2d';
|
|
2
|
+
import { EFLayoutDirection, FLayoutEngine, mergeLayoutNodes } from '@foblex/flow';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { Injectable } from '@angular/core';
|
|
5
|
+
import * as dagre from 'dagre';
|
|
6
|
+
|
|
7
|
+
var EDagreLayoutAlgorithm;
|
|
8
|
+
(function (EDagreLayoutAlgorithm) {
|
|
9
|
+
EDagreLayoutAlgorithm["NETWORK_SIMPLEX"] = "network-simplex";
|
|
10
|
+
EDagreLayoutAlgorithm["TIGHT_TREE"] = "tight-tree";
|
|
11
|
+
EDagreLayoutAlgorithm["LONGEST_PATH"] = "longest-path";
|
|
12
|
+
})(EDagreLayoutAlgorithm || (EDagreLayoutAlgorithm = {}));
|
|
13
|
+
|
|
14
|
+
const DEFAULT_DAGRE_LAYOUT_ENGINE_OPTIONS = {
|
|
15
|
+
direction: EFLayoutDirection.TOP_BOTTOM,
|
|
16
|
+
nodeGap: 48,
|
|
17
|
+
layerGap: 64,
|
|
18
|
+
algorithm: EDagreLayoutAlgorithm.NETWORK_SIMPLEX,
|
|
19
|
+
defaultNodeSize: SizeExtensions.initialize(120, 72),
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
class DagreLayoutEngine extends FLayoutEngine {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(DEFAULT_DAGRE_LAYOUT_ENGINE_OPTIONS);
|
|
25
|
+
}
|
|
26
|
+
mergeOptions(currentOptions, nextOptions = {}) {
|
|
27
|
+
return {
|
|
28
|
+
...currentOptions,
|
|
29
|
+
...nextOptions,
|
|
30
|
+
defaultNodeSize: nextOptions.defaultNodeSize
|
|
31
|
+
? SizeExtensions.initialize(nextOptions.defaultNodeSize.width, nextOptions.defaultNodeSize.height)
|
|
32
|
+
: SizeExtensions.initialize(currentOptions.defaultNodeSize.width, currentOptions.defaultNodeSize.height),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async calculate(nodes, connections, options) {
|
|
36
|
+
const layoutOptions = this.resolveLayoutOptions(options);
|
|
37
|
+
const graph = this._buildGraph(nodes, connections, layoutOptions);
|
|
38
|
+
const positions = new Map();
|
|
39
|
+
dagre.layout(graph);
|
|
40
|
+
graph.nodes().forEach((nodeId) => {
|
|
41
|
+
const graphNode = graph.node(nodeId);
|
|
42
|
+
const sourceNode = nodes.find((node) => node.id === nodeId);
|
|
43
|
+
if (!graphNode || !sourceNode) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const size = sourceNode.size ?? layoutOptions.defaultNodeSize;
|
|
47
|
+
positions.set(nodeId, PointExtensions.initialize(graphNode.x - size.width / 2, graphNode.y - size.height / 2));
|
|
48
|
+
});
|
|
49
|
+
return {
|
|
50
|
+
nodes: mergeLayoutNodes(nodes, positions),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
_buildGraph(nodes, connections, options) {
|
|
54
|
+
const graph = new dagre.graphlib.Graph();
|
|
55
|
+
graph.setDefaultEdgeLabel(() => ({}));
|
|
56
|
+
graph.setGraph({
|
|
57
|
+
rankdir: this._mapDirection(options.direction),
|
|
58
|
+
nodesep: options.nodeGap,
|
|
59
|
+
ranksep: options.layerGap,
|
|
60
|
+
ranker: this._mapAlgorithm(options.algorithm),
|
|
61
|
+
});
|
|
62
|
+
nodes.forEach((node) => {
|
|
63
|
+
const size = node.size ?? options.defaultNodeSize;
|
|
64
|
+
graph.setNode(node.id, {
|
|
65
|
+
width: size.width,
|
|
66
|
+
height: size.height,
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
connections.forEach((connection) => {
|
|
70
|
+
if (!graph.hasNode(connection.source) || !graph.hasNode(connection.target)) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
graph.setEdge(connection.source, connection.target, {});
|
|
74
|
+
});
|
|
75
|
+
return graph;
|
|
76
|
+
}
|
|
77
|
+
_mapAlgorithm(algorithm) {
|
|
78
|
+
switch (algorithm) {
|
|
79
|
+
case EDagreLayoutAlgorithm.TIGHT_TREE:
|
|
80
|
+
return 'tight-tree';
|
|
81
|
+
case EDagreLayoutAlgorithm.LONGEST_PATH:
|
|
82
|
+
return 'longest-path';
|
|
83
|
+
case EDagreLayoutAlgorithm.NETWORK_SIMPLEX:
|
|
84
|
+
default:
|
|
85
|
+
return 'network-simplex';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
_mapDirection(direction) {
|
|
89
|
+
switch (direction) {
|
|
90
|
+
case EFLayoutDirection.BOTTOM_TOP:
|
|
91
|
+
return 'BT';
|
|
92
|
+
case EFLayoutDirection.LEFT_RIGHT:
|
|
93
|
+
return 'LR';
|
|
94
|
+
case EFLayoutDirection.RIGHT_LEFT:
|
|
95
|
+
return 'RL';
|
|
96
|
+
case EFLayoutDirection.TOP_BOTTOM:
|
|
97
|
+
default:
|
|
98
|
+
return 'TB';
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DagreLayoutEngine, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
102
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DagreLayoutEngine });
|
|
103
|
+
}
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DagreLayoutEngine, decorators: [{
|
|
105
|
+
type: Injectable
|
|
106
|
+
}], ctorParameters: () => [] });
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Generated bundle index. Do not edit.
|
|
110
|
+
*/
|
|
111
|
+
|
|
112
|
+
export { DEFAULT_DAGRE_LAYOUT_ENGINE_OPTIONS, DagreLayoutEngine, EDagreLayoutAlgorithm };
|
|
113
|
+
//# sourceMappingURL=foblex-flow-dagre-layout.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foblex-flow-dagre-layout.mjs","sources":["../../../libs/f-layout/dagre/src/lib/enums/e-dagre-layout-algorithm.ts","../../../libs/f-layout/dagre/src/lib/configurations/default-dagre-layout-engine-options.ts","../../../libs/f-layout/dagre/src/lib/engines/dagre-layout-engine.ts","../../../libs/f-layout/dagre/src/foblex-flow-dagre-layout.ts"],"sourcesContent":["export enum EDagreLayoutAlgorithm {\n NETWORK_SIMPLEX = 'network-simplex',\n TIGHT_TREE = 'tight-tree',\n LONGEST_PATH = 'longest-path',\n}\n","import { SizeExtensions } from '@foblex/2d';\nimport { EFLayoutDirection } from '@foblex/flow';\nimport { EDagreLayoutAlgorithm } from '../enums';\nimport { IDagreLayoutEngineOptions } from '../models';\n\nexport const DEFAULT_DAGRE_LAYOUT_ENGINE_OPTIONS: IDagreLayoutEngineOptions = {\n direction: EFLayoutDirection.TOP_BOTTOM,\n nodeGap: 48,\n layerGap: 64,\n algorithm: EDagreLayoutAlgorithm.NETWORK_SIMPLEX,\n defaultNodeSize: SizeExtensions.initialize(120, 72),\n};\n","import { Injectable } from '@angular/core';\nimport { PointExtensions, SizeExtensions } from '@foblex/2d';\nimport * as dagre from 'dagre';\nimport { graphlib } from 'dagre';\nimport {\n EFLayoutDirection,\n FLayoutEngine,\n IFLayoutCalculationOptions,\n IFLayoutConnection,\n IFLayoutNode,\n IFLayoutResult,\n mergeLayoutNodes,\n} from '@foblex/flow';\nimport { DEFAULT_DAGRE_LAYOUT_ENGINE_OPTIONS } from '../configurations';\nimport { EDagreLayoutAlgorithm } from '../enums';\nimport { IDagreLayoutEngineOptions } from '../models';\n\n@Injectable()\nexport class DagreLayoutEngine extends FLayoutEngine<IDagreLayoutEngineOptions> {\n public constructor() {\n super(DEFAULT_DAGRE_LAYOUT_ENGINE_OPTIONS);\n }\n\n protected override mergeOptions(\n currentOptions: IDagreLayoutEngineOptions,\n nextOptions: Partial<IDagreLayoutEngineOptions> = {},\n ): IDagreLayoutEngineOptions {\n return {\n ...currentOptions,\n ...nextOptions,\n defaultNodeSize: nextOptions.defaultNodeSize\n ? SizeExtensions.initialize(\n nextOptions.defaultNodeSize.width,\n nextOptions.defaultNodeSize.height,\n )\n : SizeExtensions.initialize(\n currentOptions.defaultNodeSize.width,\n currentOptions.defaultNodeSize.height,\n ),\n };\n }\n\n public override async calculate(\n nodes: IFLayoutNode[],\n connections: IFLayoutConnection[],\n options?: IFLayoutCalculationOptions<IDagreLayoutEngineOptions>,\n ): Promise<IFLayoutResult> {\n const layoutOptions = this.resolveLayoutOptions(options);\n const graph = this._buildGraph(nodes, connections, layoutOptions);\n const positions = new Map<string, { x: number; y: number }>();\n\n dagre.layout(graph);\n\n graph.nodes().forEach((nodeId) => {\n const graphNode = graph.node(nodeId);\n const sourceNode = nodes.find((node) => node.id === nodeId);\n\n if (!graphNode || !sourceNode) {\n return;\n }\n\n const size = sourceNode.size ?? layoutOptions.defaultNodeSize;\n\n positions.set(\n nodeId,\n PointExtensions.initialize(graphNode.x - size.width / 2, graphNode.y - size.height / 2),\n );\n });\n\n return {\n nodes: mergeLayoutNodes(nodes, positions),\n };\n }\n\n private _buildGraph(\n nodes: IFLayoutNode[],\n connections: IFLayoutConnection[],\n options: IDagreLayoutEngineOptions,\n ): graphlib.Graph {\n const graph = new dagre.graphlib.Graph();\n\n graph.setDefaultEdgeLabel(() => ({}));\n graph.setGraph({\n rankdir: this._mapDirection(options.direction),\n nodesep: options.nodeGap,\n ranksep: options.layerGap,\n ranker: this._mapAlgorithm(options.algorithm),\n });\n\n nodes.forEach((node) => {\n const size = node.size ?? options.defaultNodeSize;\n\n graph.setNode(node.id, {\n width: size.width,\n height: size.height,\n });\n });\n\n connections.forEach((connection) => {\n if (!graph.hasNode(connection.source) || !graph.hasNode(connection.target)) {\n return;\n }\n\n graph.setEdge(connection.source, connection.target, {});\n });\n\n return graph;\n }\n\n private _mapAlgorithm(\n algorithm: EDagreLayoutAlgorithm,\n ): 'network-simplex' | 'tight-tree' | 'longest-path' {\n switch (algorithm) {\n case EDagreLayoutAlgorithm.TIGHT_TREE:\n return 'tight-tree';\n case EDagreLayoutAlgorithm.LONGEST_PATH:\n return 'longest-path';\n case EDagreLayoutAlgorithm.NETWORK_SIMPLEX:\n default:\n return 'network-simplex';\n }\n }\n\n private _mapDirection(direction: EFLayoutDirection): 'TB' | 'BT' | 'LR' | 'RL' {\n switch (direction) {\n case EFLayoutDirection.BOTTOM_TOP:\n return 'BT';\n case EFLayoutDirection.LEFT_RIGHT:\n return 'LR';\n case EFLayoutDirection.RIGHT_LEFT:\n return 'RL';\n case EFLayoutDirection.TOP_BOTTOM:\n default:\n return 'TB';\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './default-dagre-layout-engine-options';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FLayoutEngine, IFLayoutCalculationOptions, IFLayoutConnection, IFLayoutNode, IFLayoutResult } from '@foblex/flow';
|
|
2
|
+
import { IDagreLayoutEngineOptions } from '../models';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class DagreLayoutEngine extends FLayoutEngine<IDagreLayoutEngineOptions> {
|
|
5
|
+
constructor();
|
|
6
|
+
protected mergeOptions(currentOptions: IDagreLayoutEngineOptions, nextOptions?: Partial<IDagreLayoutEngineOptions>): IDagreLayoutEngineOptions;
|
|
7
|
+
calculate(nodes: IFLayoutNode[], connections: IFLayoutConnection[], options?: IFLayoutCalculationOptions<IDagreLayoutEngineOptions>): Promise<IFLayoutResult>;
|
|
8
|
+
private _buildGraph;
|
|
9
|
+
private _mapAlgorithm;
|
|
10
|
+
private _mapDirection;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DagreLayoutEngine, never>;
|
|
12
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DagreLayoutEngine>;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dagre-layout-engine';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './e-dagre-layout-algorithm';
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './i-dagre-layout-engine-options';
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@foblex/flow-dagre-layout",
|
|
3
|
+
"version": "18.5.0",
|
|
4
|
+
"description": "Dagre layout engine adapter for Foblex Flow.",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"types": "index.d.ts",
|
|
7
|
+
"author": "Siarhei Huzarevich",
|
|
8
|
+
"homepage": "https://flow.foblex.com",
|
|
9
|
+
"docs": "https://flow.foblex.com/examples/dagre-layout",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/Foblex/f-flow.git"
|
|
13
|
+
},
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"private": false,
|
|
16
|
+
"keywords": [
|
|
17
|
+
"angular",
|
|
18
|
+
"flow",
|
|
19
|
+
"dagre",
|
|
20
|
+
"layout",
|
|
21
|
+
"graph",
|
|
22
|
+
"diagram",
|
|
23
|
+
"foblex"
|
|
24
|
+
],
|
|
25
|
+
"schematics": "./schematics/collection.json",
|
|
26
|
+
"ng-add": {
|
|
27
|
+
"save": "dependencies"
|
|
28
|
+
},
|
|
29
|
+
"peerDependencies": {
|
|
30
|
+
"@angular/common": ">=17.3.0",
|
|
31
|
+
"@angular/core": ">=17.3.0",
|
|
32
|
+
"@foblex/2d": "^1.2.2",
|
|
33
|
+
"@foblex/flow": "^18.4.0"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"dagre": "^0.8.5",
|
|
37
|
+
"tslib": "^2.3.0"
|
|
38
|
+
},
|
|
39
|
+
"sideEffects": false,
|
|
40
|
+
"module": "fesm2022/foblex-flow-dagre-layout.mjs",
|
|
41
|
+
"typings": "index.d.ts",
|
|
42
|
+
"exports": {
|
|
43
|
+
"./package.json": {
|
|
44
|
+
"default": "./package.json"
|
|
45
|
+
},
|
|
46
|
+
".": {
|
|
47
|
+
"types": "./index.d.ts",
|
|
48
|
+
"esm2022": "./esm2022/foblex-flow-dagre-layout.mjs",
|
|
49
|
+
"esm": "./esm2022/foblex-flow-dagre-layout.mjs",
|
|
50
|
+
"default": "./fesm2022/foblex-flow-dagre-layout.mjs"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
package/public-api.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
|
|
3
|
+
"schematics": {
|
|
4
|
+
"ng-add": {
|
|
5
|
+
"description": "Installs @foblex/flow-dagre-layout and the required Foblex Flow dependencies",
|
|
6
|
+
"factory": "./ng-add/index#ngAdd",
|
|
7
|
+
"schema": "./ng-add/schema.json"
|
|
8
|
+
},
|
|
9
|
+
"add": {
|
|
10
|
+
"description": "Installs @foblex/flow-dagre-layout and the required Foblex Flow dependencies (alias for Nx users)",
|
|
11
|
+
"factory": "./ng-add/index#ngAdd",
|
|
12
|
+
"schema": "./ng-add/schema.json"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ngAdd = ngAdd;
|
|
4
|
+
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
|
+
const tasks_1 = require("@angular-devkit/schematics/tasks");
|
|
6
|
+
const utility_1 = require("@schematics/angular/utility");
|
|
7
|
+
const dependencies_1 = require("@schematics/angular/utility/dependencies");
|
|
8
|
+
const foblex_flow_dependencies_1 = require("../shared/foblex-flow-dependencies");
|
|
9
|
+
const package_json_1 = require("../shared/package-json");
|
|
10
|
+
const DEFAULT_THEME_STYLE_PATH = 'node_modules/@foblex/flow/styles/default.scss';
|
|
11
|
+
const KNOWN_THEME_STYLE_PATHS = new Set([
|
|
12
|
+
DEFAULT_THEME_STYLE_PATH,
|
|
13
|
+
'@foblex/flow/styles/default.scss',
|
|
14
|
+
]);
|
|
15
|
+
function ngAdd(options) {
|
|
16
|
+
const installationState = { hasNewDependencies: false };
|
|
17
|
+
return (0, schematics_1.chain)([
|
|
18
|
+
addDependencies(installationState),
|
|
19
|
+
addDefaultTheme(options),
|
|
20
|
+
installDependencies(installationState),
|
|
21
|
+
]);
|
|
22
|
+
}
|
|
23
|
+
function addDependencies(installationState) {
|
|
24
|
+
return (tree, context) => {
|
|
25
|
+
context.logger.info('Installing dependencies for @foblex/flow-dagre-layout...');
|
|
26
|
+
foblex_flow_dependencies_1.FoblexFlowDependencies.forEach((dependency) => {
|
|
27
|
+
if ((0, package_json_1.hasPackageJsonDependency)(tree, dependency.name)) {
|
|
28
|
+
context.logger.info(`Skipped "${dependency.name}" because it is already present in package.json`);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
(0, dependencies_1.addPackageJsonDependency)(tree, {
|
|
32
|
+
type: dependencies_1.NodeDependencyType.Default,
|
|
33
|
+
name: dependency.name,
|
|
34
|
+
version: dependency.version,
|
|
35
|
+
});
|
|
36
|
+
installationState.hasNewDependencies = true;
|
|
37
|
+
context.logger.info(`Added "${dependency.name}" to package.json`);
|
|
38
|
+
});
|
|
39
|
+
return tree;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function addDefaultTheme(options) {
|
|
43
|
+
if (options.skipTheme) {
|
|
44
|
+
return (_tree, context) => {
|
|
45
|
+
context.logger.info('Skipped adding the default @foblex/flow theme.');
|
|
46
|
+
return _tree;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return (0, utility_1.updateWorkspace)((workspace) => {
|
|
50
|
+
for (const [, project] of workspace.projects) {
|
|
51
|
+
if (project.extensions['projectType'] !== 'application') {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
addStyleToTarget(project.targets.get('build'));
|
|
55
|
+
addStyleToTarget(project.targets.get('test'));
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function addStyleToTarget(target) {
|
|
60
|
+
var _a;
|
|
61
|
+
if (!target) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
ensureThemeInStyles(((_a = target.options) !== null && _a !== void 0 ? _a : (target.options = {})));
|
|
65
|
+
if (!target.configurations) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
Object.values(target.configurations).forEach((configuration) => {
|
|
69
|
+
if (!configuration) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
ensureThemeInStyles(configuration);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function ensureThemeInStyles(options) {
|
|
76
|
+
const styles = Array.isArray(options['styles']) ? [...options['styles']] : [];
|
|
77
|
+
if (styles.some(isThemeStyleEntry)) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
styles.push(DEFAULT_THEME_STYLE_PATH);
|
|
81
|
+
options['styles'] = styles;
|
|
82
|
+
}
|
|
83
|
+
function isThemeStyleEntry(entry) {
|
|
84
|
+
if (typeof entry === 'string') {
|
|
85
|
+
return KNOWN_THEME_STYLE_PATHS.has(entry);
|
|
86
|
+
}
|
|
87
|
+
if (!entry || typeof entry !== 'object' || Array.isArray(entry)) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
const input = entry['input'];
|
|
91
|
+
return typeof input === 'string' && KNOWN_THEME_STYLE_PATHS.has(input);
|
|
92
|
+
}
|
|
93
|
+
function installDependencies(installationState) {
|
|
94
|
+
return (_tree, context) => {
|
|
95
|
+
if (installationState.hasNewDependencies) {
|
|
96
|
+
context.addTask(new tasks_1.NodePackageInstallTask());
|
|
97
|
+
context.logger.info('Installed missing Foblex Flow dependencies.');
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
context.logger.info('Skipped dependency installation because all required Foblex Flow packages are already present.');
|
|
101
|
+
}
|
|
102
|
+
context.logger.info('Dagre support is ready.');
|
|
103
|
+
context.logger.info('Next step: provide DagreLayoutEngine and call calculate(...) in your flow component.');
|
|
104
|
+
return _tree;
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/f-layout/dagre/schematics/ng-add/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "FoblexFlowDagreLayoutNgAddSchema",
|
|
4
|
+
"title": "@foblex/flow-dagre-layout ng-add options",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"skipTheme": {
|
|
8
|
+
"type": "boolean",
|
|
9
|
+
"description": "Do not add the default @foblex/flow theme to application styles.",
|
|
10
|
+
"default": false
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FoblexFlowDependencies = void 0;
|
|
4
|
+
exports.FoblexFlowDependencies = [
|
|
5
|
+
{ name: '@foblex/flow', version: '^18.4.0' },
|
|
6
|
+
{ name: '@foblex/platform', version: '^1.0.4' },
|
|
7
|
+
{ name: '@foblex/mediator', version: '^1.1.3' },
|
|
8
|
+
{ name: '@foblex/2d', version: '^1.2.2' },
|
|
9
|
+
{ name: '@foblex/utils', version: '^1.1.1' },
|
|
10
|
+
];
|
|
11
|
+
//# sourceMappingURL=foblex-flow-dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foblex-flow-dependencies.js","sourceRoot":"","sources":["../../../../libs/f-layout/dagre/schematics/shared/foblex-flow-dependencies.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG;IACpC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE;IAC5C,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC/C,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC/C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE;IACzC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE;CAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i-ng-add-schema.js","sourceRoot":"","sources":["../../../../libs/f-layout/dagre/schematics/shared/i-ng-add-schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasPackageJsonDependency = hasPackageJsonDependency;
|
|
4
|
+
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
|
+
const PACKAGE_JSON_PATH = '/package.json';
|
|
6
|
+
function hasPackageJsonDependency(tree, packageName) {
|
|
7
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
8
|
+
const packageJson = readPackageJson(tree);
|
|
9
|
+
return Boolean((_f = (_d = (_b = (_a = packageJson.dependencies) === null || _a === void 0 ? void 0 : _a[packageName]) !== null && _b !== void 0 ? _b : (_c = packageJson.devDependencies) === null || _c === void 0 ? void 0 : _c[packageName]) !== null && _d !== void 0 ? _d : (_e = packageJson.peerDependencies) === null || _e === void 0 ? void 0 : _e[packageName]) !== null && _f !== void 0 ? _f : (_g = packageJson.optionalDependencies) === null || _g === void 0 ? void 0 : _g[packageName]);
|
|
10
|
+
}
|
|
11
|
+
function readPackageJson(tree) {
|
|
12
|
+
const packageJsonBuffer = tree.read(PACKAGE_JSON_PATH);
|
|
13
|
+
if (!packageJsonBuffer) {
|
|
14
|
+
throw new schematics_1.SchematicsException('Could not find package.json in the workspace root.');
|
|
15
|
+
}
|
|
16
|
+
return JSON.parse(packageJsonBuffer.toString('utf-8'));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=package-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../../../libs/f-layout/dagre/schematics/shared/package-json.ts"],"names":[],"mappings":";;AAWA,4DASC;AApBD,2DAAuE;AASvE,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAE1C,SAAgB,wBAAwB,CAAC,IAAU,EAAE,WAAmB;;IACtE,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAE1C,OAAO,OAAO,CACZ,MAAA,MAAA,MAAA,MAAA,WAAW,CAAC,YAAY,0CAAG,WAAW,CAAC,mCACrC,MAAA,WAAW,CAAC,eAAe,0CAAG,WAAW,CAAC,mCAC1C,MAAA,WAAW,CAAC,gBAAgB,0CAAG,WAAW,CAAC,mCAC3C,MAAA,WAAW,CAAC,oBAAoB,0CAAG,WAAW,CAAC,CAClD,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAAU;IACjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAEvD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,gCAAmB,CAAC,oDAAoD,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAiB,CAAC;AACzE,CAAC"}
|