@foblex/flow-elk-layout 18.5.0 → 18.6.1

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.
Files changed (37) hide show
  1. package/fesm2022/foblex-flow-elk-layout.mjs +3 -3
  2. package/fesm2022/foblex-flow-elk-layout.mjs.map +1 -1
  3. package/index.d.ts +73 -5
  4. package/package.json +1 -3
  5. package/esm2022/foblex-flow-elk-layout.mjs +0 -5
  6. package/esm2022/lib/configurations/default-elk-layout-engine-options.mjs +0 -12
  7. package/esm2022/lib/configurations/index.mjs +0 -2
  8. package/esm2022/lib/engines/elk-layout-engine.mjs +0 -149
  9. package/esm2022/lib/engines/index.mjs +0 -2
  10. package/esm2022/lib/enums/e-elk-layout-algorithm.mjs +0 -16
  11. package/esm2022/lib/enums/index.mjs +0 -2
  12. package/esm2022/lib/index.mjs +0 -5
  13. package/esm2022/lib/models/i-elk-layout-edge.mjs +0 -2
  14. package/esm2022/lib/models/i-elk-layout-engine-options.mjs +0 -2
  15. package/esm2022/lib/models/i-elk-layout-instance.mjs +0 -2
  16. package/esm2022/lib/models/i-elk-layout-module.mjs +0 -2
  17. package/esm2022/lib/models/i-elk-layout-node.mjs +0 -2
  18. package/esm2022/lib/models/i-elk-layout-positioned-node.mjs +0 -2
  19. package/esm2022/lib/models/i-elk-layout-response.mjs +0 -2
  20. package/esm2022/lib/models/index.mjs +0 -8
  21. package/esm2022/public-api.mjs +0 -2
  22. package/lib/configurations/default-elk-layout-engine-options.d.ts +0 -2
  23. package/lib/configurations/index.d.ts +0 -1
  24. package/lib/engines/elk-layout-engine.d.ts +0 -18
  25. package/lib/engines/index.d.ts +0 -1
  26. package/lib/enums/e-elk-layout-algorithm.d.ts +0 -14
  27. package/lib/enums/index.d.ts +0 -1
  28. package/lib/index.d.ts +0 -4
  29. package/lib/models/i-elk-layout-edge.d.ts +0 -5
  30. package/lib/models/i-elk-layout-engine-options.d.ts +0 -5
  31. package/lib/models/i-elk-layout-instance.d.ts +0 -3
  32. package/lib/models/i-elk-layout-module.d.ts +0 -4
  33. package/lib/models/i-elk-layout-node.d.ts +0 -7
  34. package/lib/models/i-elk-layout-positioned-node.d.ts +0 -4
  35. package/lib/models/i-elk-layout-response.d.ts +0 -4
  36. package/lib/models/index.d.ts +0 -7
  37. package/public-api.d.ts +0 -1
@@ -164,10 +164,10 @@ class ElkLayoutEngine extends FLayoutEngine {
164
164
  return 'DOWN';
165
165
  }
166
166
  }
167
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElkLayoutEngine, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
168
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElkLayoutEngine });
167
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ElkLayoutEngine, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
168
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ElkLayoutEngine });
169
169
  }
170
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElkLayoutEngine, decorators: [{
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ElkLayoutEngine, decorators: [{
171
171
  type: Injectable
172
172
  }], ctorParameters: () => [] });
173
173
 
@@ -1 +1 @@
1
- {"version":3,"file":"foblex-flow-elk-layout.mjs","sources":["../../../libs/f-layout/elk/src/lib/enums/e-elk-layout-algorithm.ts","../../../libs/f-layout/elk/src/lib/configurations/default-elk-layout-engine-options.ts","../../../libs/f-layout/elk/src/lib/engines/elk-layout-engine.ts","../../../libs/f-layout/elk/src/foblex-flow-elk-layout.ts"],"sourcesContent":["export enum EElkLayoutAlgorithm {\n FIXED = 'fixed',\n BOX = 'box',\n RANDOM = 'random',\n LAYERED = 'layered',\n STRESS = 'stress',\n MRTREE = 'mrtree',\n RADIAL = 'radial',\n FORCE = 'force',\n DISCO = 'disco',\n SPORE_OVERLAP = 'sporeOverlap',\n SPORE_COMPACTION = 'sporeCompaction',\n RECT_PACKING = 'rectpacking',\n}\n","import { SizeExtensions } from '@foblex/2d';\nimport { EFLayoutDirection } from '@foblex/flow';\nimport { EElkLayoutAlgorithm } from '../enums';\nimport { IElkLayoutEngineOptions } from '../models';\n\nexport const DEFAULT_ELK_LAYOUT_ENGINE_OPTIONS: IElkLayoutEngineOptions = {\n direction: EFLayoutDirection.TOP_BOTTOM,\n nodeGap: 48,\n layerGap: 48,\n algorithm: EElkLayoutAlgorithm.LAYERED,\n defaultNodeSize: SizeExtensions.initialize(120, 72),\n layoutOptions: {},\n};\n","import { Injectable } from '@angular/core';\nimport { IPoint, PointExtensions, SizeExtensions } from '@foblex/2d';\nimport {\n EFLayoutDirection,\n FLayoutEngine,\n IFLayoutCalculationOptions,\n IFLayoutConnection,\n IFLayoutNode,\n IFLayoutResult,\n mergeLayoutNodes,\n} from '@foblex/flow';\nimport { DEFAULT_ELK_LAYOUT_ENGINE_OPTIONS } from '../configurations';\nimport { EElkLayoutAlgorithm } from '../enums';\nimport {\n IElkLayoutEdge,\n IElkLayoutEngineOptions,\n IElkLayoutModule,\n IElkLayoutNode,\n IElkLayoutResponse,\n} from '../models';\n\n@Injectable()\nexport class ElkLayoutEngine extends FLayoutEngine<IElkLayoutEngineOptions> {\n private _elkCtor?: Promise<IElkLayoutModule>;\n\n public constructor() {\n super(DEFAULT_ELK_LAYOUT_ENGINE_OPTIONS);\n }\n\n protected override mergeOptions(\n currentOptions: IElkLayoutEngineOptions,\n nextOptions: Partial<IElkLayoutEngineOptions> = {},\n ): IElkLayoutEngineOptions {\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 layoutOptions: {\n ...(currentOptions.layoutOptions || {}),\n ...(nextOptions.layoutOptions || {}),\n },\n };\n }\n\n public override async calculate(\n nodes: IFLayoutNode[],\n connections: IFLayoutConnection[],\n options?: IFLayoutCalculationOptions<IElkLayoutEngineOptions>,\n ): Promise<IFLayoutResult> {\n const layoutOptions = this.resolveLayoutOptions(options);\n const elkModule = await this._loadElk();\n const layout = (await new elkModule.default().layout(\n this._buildLayoutConfiguration(nodes, connections, layoutOptions),\n )) as IElkLayoutResponse;\n const positions = new Map<string, IPoint>();\n\n layout.children?.forEach((node) => {\n positions.set(node.id, PointExtensions.initialize(node.x, node.y));\n });\n\n return {\n nodes: mergeLayoutNodes(nodes, positions),\n };\n }\n\n private _buildLayoutConfiguration(\n nodes: IFLayoutNode[],\n connections: IFLayoutConnection[],\n options: IElkLayoutEngineOptions,\n ): {\n id: string;\n layoutOptions: Record<string, string>;\n children: IElkLayoutNode[];\n edges: IElkLayoutEdge[];\n } {\n const layoutOptions: Record<string, string> = {\n 'elk.algorithm': this._mapAlgorithm(options.algorithm),\n 'elk.direction': this._mapDirection(options.direction),\n 'spacing.nodeNode': `${options.nodeGap}`,\n 'spacing.nodeNodeBetweenLayers': `${options.layerGap}`,\n ...(options.layoutOptions || {}),\n };\n const graphNodes = nodes.map((node) => this._buildGraphNode(node, options.defaultNodeSize));\n const graphEdges = connections.reduce<IElkLayoutEdge[]>((result, connection, index) => {\n if (!graphNodes.some((node) => node.id === connection.source)) {\n return result;\n }\n\n if (!graphNodes.some((node) => node.id === connection.target)) {\n return result;\n }\n\n result.push({\n id: this._createEdgeId(connection, index),\n sources: [connection.source],\n targets: [connection.target],\n });\n\n return result;\n }, []);\n\n return {\n id: 'root',\n layoutOptions,\n children: graphNodes,\n edges: graphEdges,\n };\n }\n\n private _buildGraphNode(\n node: IFLayoutNode,\n defaultNodeSize: { width: number; height: number },\n ): IElkLayoutNode {\n const size = node.size ?? defaultNodeSize;\n const graphNode: IElkLayoutNode = {\n id: node.id,\n width: size.width,\n height: size.height,\n };\n const position = this._getNodePosition(node);\n\n if (!position) {\n return graphNode;\n }\n\n return {\n ...graphNode,\n x: position.x,\n y: position.y,\n };\n }\n\n private _loadElk(): Promise<IElkLayoutModule> {\n if (!this._elkCtor) {\n this._elkCtor = import('elkjs/lib/elk.bundled');\n }\n\n return this._elkCtor;\n }\n\n private _getNodePosition(node: IFLayoutNode): IPoint | null {\n const positionedNode = node as IFLayoutNode & { position?: IPoint };\n\n if (!positionedNode.position) {\n return null;\n }\n\n return positionedNode.position;\n }\n\n private _mapAlgorithm(algorithm: EElkLayoutAlgorithm): string {\n switch (algorithm) {\n case EElkLayoutAlgorithm.FIXED:\n return 'fixed';\n case EElkLayoutAlgorithm.BOX:\n return 'box';\n case EElkLayoutAlgorithm.RANDOM:\n return 'random';\n case EElkLayoutAlgorithm.LAYERED:\n return 'layered';\n case EElkLayoutAlgorithm.STRESS:\n return 'stress';\n case EElkLayoutAlgorithm.MRTREE:\n return 'mrtree';\n case EElkLayoutAlgorithm.RADIAL:\n return 'radial';\n case EElkLayoutAlgorithm.FORCE:\n return 'force';\n case EElkLayoutAlgorithm.DISCO:\n return 'disco';\n case EElkLayoutAlgorithm.SPORE_OVERLAP:\n return 'sporeOverlap';\n case EElkLayoutAlgorithm.SPORE_COMPACTION:\n return 'sporeCompaction';\n case EElkLayoutAlgorithm.RECT_PACKING:\n return 'rectpacking';\n default:\n return 'layered';\n }\n }\n\n private _createEdgeId(connection: IFLayoutConnection, index: number): string {\n return `${connection.source}->${connection.target}-${index}`;\n }\n\n private _mapDirection(direction: EFLayoutDirection): 'DOWN' | 'UP' | 'RIGHT' | 'LEFT' {\n switch (direction) {\n case EFLayoutDirection.BOTTOM_TOP:\n return 'UP';\n case EFLayoutDirection.LEFT_RIGHT:\n return 'RIGHT';\n case EFLayoutDirection.RIGHT_LEFT:\n return 'LEFT';\n case EFLayoutDirection.TOP_BOTTOM:\n default:\n return 'DOWN';\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"foblex-flow-elk-layout.mjs","sources":["../../../libs/f-layout/elk/src/lib/enums/e-elk-layout-algorithm.ts","../../../libs/f-layout/elk/src/lib/configurations/default-elk-layout-engine-options.ts","../../../libs/f-layout/elk/src/lib/engines/elk-layout-engine.ts","../../../libs/f-layout/elk/src/foblex-flow-elk-layout.ts"],"sourcesContent":["export enum EElkLayoutAlgorithm {\n FIXED = 'fixed',\n BOX = 'box',\n RANDOM = 'random',\n LAYERED = 'layered',\n STRESS = 'stress',\n MRTREE = 'mrtree',\n RADIAL = 'radial',\n FORCE = 'force',\n DISCO = 'disco',\n SPORE_OVERLAP = 'sporeOverlap',\n SPORE_COMPACTION = 'sporeCompaction',\n RECT_PACKING = 'rectpacking',\n}\n","import { SizeExtensions } from '@foblex/2d';\nimport { EFLayoutDirection } from '@foblex/flow';\nimport { EElkLayoutAlgorithm } from '../enums';\nimport { IElkLayoutEngineOptions } from '../models';\n\nexport const DEFAULT_ELK_LAYOUT_ENGINE_OPTIONS: IElkLayoutEngineOptions = {\n direction: EFLayoutDirection.TOP_BOTTOM,\n nodeGap: 48,\n layerGap: 48,\n algorithm: EElkLayoutAlgorithm.LAYERED,\n defaultNodeSize: SizeExtensions.initialize(120, 72),\n layoutOptions: {},\n};\n","import { Injectable } from '@angular/core';\nimport { IPoint, PointExtensions, SizeExtensions } from '@foblex/2d';\nimport {\n EFLayoutDirection,\n FLayoutEngine,\n IFLayoutCalculationOptions,\n IFLayoutConnection,\n IFLayoutNode,\n IFLayoutResult,\n mergeLayoutNodes,\n} from '@foblex/flow';\nimport { DEFAULT_ELK_LAYOUT_ENGINE_OPTIONS } from '../configurations';\nimport { EElkLayoutAlgorithm } from '../enums';\nimport {\n IElkLayoutEdge,\n IElkLayoutEngineOptions,\n IElkLayoutModule,\n IElkLayoutNode,\n IElkLayoutResponse,\n} from '../models';\n\n@Injectable()\nexport class ElkLayoutEngine extends FLayoutEngine<IElkLayoutEngineOptions> {\n private _elkCtor?: Promise<IElkLayoutModule>;\n\n public constructor() {\n super(DEFAULT_ELK_LAYOUT_ENGINE_OPTIONS);\n }\n\n protected override mergeOptions(\n currentOptions: IElkLayoutEngineOptions,\n nextOptions: Partial<IElkLayoutEngineOptions> = {},\n ): IElkLayoutEngineOptions {\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 layoutOptions: {\n ...(currentOptions.layoutOptions || {}),\n ...(nextOptions.layoutOptions || {}),\n },\n };\n }\n\n public override async calculate(\n nodes: IFLayoutNode[],\n connections: IFLayoutConnection[],\n options?: IFLayoutCalculationOptions<IElkLayoutEngineOptions>,\n ): Promise<IFLayoutResult> {\n const layoutOptions = this.resolveLayoutOptions(options);\n const elkModule = await this._loadElk();\n const layout = (await new elkModule.default().layout(\n this._buildLayoutConfiguration(nodes, connections, layoutOptions),\n )) as IElkLayoutResponse;\n const positions = new Map<string, IPoint>();\n\n layout.children?.forEach((node) => {\n positions.set(node.id, PointExtensions.initialize(node.x, node.y));\n });\n\n return {\n nodes: mergeLayoutNodes(nodes, positions),\n };\n }\n\n private _buildLayoutConfiguration(\n nodes: IFLayoutNode[],\n connections: IFLayoutConnection[],\n options: IElkLayoutEngineOptions,\n ): {\n id: string;\n layoutOptions: Record<string, string>;\n children: IElkLayoutNode[];\n edges: IElkLayoutEdge[];\n } {\n const layoutOptions: Record<string, string> = {\n 'elk.algorithm': this._mapAlgorithm(options.algorithm),\n 'elk.direction': this._mapDirection(options.direction),\n 'spacing.nodeNode': `${options.nodeGap}`,\n 'spacing.nodeNodeBetweenLayers': `${options.layerGap}`,\n ...(options.layoutOptions || {}),\n };\n const graphNodes = nodes.map((node) => this._buildGraphNode(node, options.defaultNodeSize));\n const graphEdges = connections.reduce<IElkLayoutEdge[]>((result, connection, index) => {\n if (!graphNodes.some((node) => node.id === connection.source)) {\n return result;\n }\n\n if (!graphNodes.some((node) => node.id === connection.target)) {\n return result;\n }\n\n result.push({\n id: this._createEdgeId(connection, index),\n sources: [connection.source],\n targets: [connection.target],\n });\n\n return result;\n }, []);\n\n return {\n id: 'root',\n layoutOptions,\n children: graphNodes,\n edges: graphEdges,\n };\n }\n\n private _buildGraphNode(\n node: IFLayoutNode,\n defaultNodeSize: { width: number; height: number },\n ): IElkLayoutNode {\n const size = node.size ?? defaultNodeSize;\n const graphNode: IElkLayoutNode = {\n id: node.id,\n width: size.width,\n height: size.height,\n };\n const position = this._getNodePosition(node);\n\n if (!position) {\n return graphNode;\n }\n\n return {\n ...graphNode,\n x: position.x,\n y: position.y,\n };\n }\n\n private _loadElk(): Promise<IElkLayoutModule> {\n if (!this._elkCtor) {\n this._elkCtor = import('elkjs/lib/elk.bundled');\n }\n\n return this._elkCtor;\n }\n\n private _getNodePosition(node: IFLayoutNode): IPoint | null {\n const positionedNode = node as IFLayoutNode & { position?: IPoint };\n\n if (!positionedNode.position) {\n return null;\n }\n\n return positionedNode.position;\n }\n\n private _mapAlgorithm(algorithm: EElkLayoutAlgorithm): string {\n switch (algorithm) {\n case EElkLayoutAlgorithm.FIXED:\n return 'fixed';\n case EElkLayoutAlgorithm.BOX:\n return 'box';\n case EElkLayoutAlgorithm.RANDOM:\n return 'random';\n case EElkLayoutAlgorithm.LAYERED:\n return 'layered';\n case EElkLayoutAlgorithm.STRESS:\n return 'stress';\n case EElkLayoutAlgorithm.MRTREE:\n return 'mrtree';\n case EElkLayoutAlgorithm.RADIAL:\n return 'radial';\n case EElkLayoutAlgorithm.FORCE:\n return 'force';\n case EElkLayoutAlgorithm.DISCO:\n return 'disco';\n case EElkLayoutAlgorithm.SPORE_OVERLAP:\n return 'sporeOverlap';\n case EElkLayoutAlgorithm.SPORE_COMPACTION:\n return 'sporeCompaction';\n case EElkLayoutAlgorithm.RECT_PACKING:\n return 'rectpacking';\n default:\n return 'layered';\n }\n }\n\n private _createEdgeId(connection: IFLayoutConnection, index: number): string {\n return `${connection.source}->${connection.target}-${index}`;\n }\n\n private _mapDirection(direction: EFLayoutDirection): 'DOWN' | 'UP' | 'RIGHT' | 'LEFT' {\n switch (direction) {\n case EFLayoutDirection.BOTTOM_TOP:\n return 'UP';\n case EFLayoutDirection.LEFT_RIGHT:\n return 'RIGHT';\n case EFLayoutDirection.RIGHT_LEFT:\n return 'LEFT';\n case EFLayoutDirection.TOP_BOTTOM:\n default:\n return 'DOWN';\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 CHANGED
@@ -1,5 +1,73 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@foblex/flow-elk-layout" />
5
- export * from './public-api';
1
+ import { IFLayoutAlgorithmOptions, FLayoutEngine, IFLayoutNode, IFLayoutConnection, IFLayoutCalculationOptions, IFLayoutResult } from '@foblex/flow';
2
+ import * as i0 from '@angular/core';
3
+ import { IPoint } from '@foblex/2d';
4
+
5
+ interface IElkLayoutEdge {
6
+ id: string;
7
+ sources: string[];
8
+ targets: string[];
9
+ }
10
+
11
+ declare enum EElkLayoutAlgorithm {
12
+ FIXED = "fixed",
13
+ BOX = "box",
14
+ RANDOM = "random",
15
+ LAYERED = "layered",
16
+ STRESS = "stress",
17
+ MRTREE = "mrtree",
18
+ RADIAL = "radial",
19
+ FORCE = "force",
20
+ DISCO = "disco",
21
+ SPORE_OVERLAP = "sporeOverlap",
22
+ SPORE_COMPACTION = "sporeCompaction",
23
+ RECT_PACKING = "rectpacking"
24
+ }
25
+
26
+ interface IElkLayoutEngineOptions extends IFLayoutAlgorithmOptions<EElkLayoutAlgorithm> {
27
+ layoutOptions?: Record<string, string>;
28
+ }
29
+
30
+ interface IElkLayoutInstance {
31
+ layout(config: unknown): Promise<unknown>;
32
+ }
33
+
34
+ interface IElkLayoutModule {
35
+ default: new () => IElkLayoutInstance;
36
+ }
37
+
38
+ interface IElkLayoutNode {
39
+ id: string;
40
+ width: number;
41
+ height: number;
42
+ x?: number;
43
+ y?: number;
44
+ }
45
+
46
+ interface IElkLayoutPositionedNode extends IPoint {
47
+ id: string;
48
+ }
49
+
50
+ interface IElkLayoutResponse {
51
+ children?: IElkLayoutPositionedNode[];
52
+ }
53
+
54
+ declare const DEFAULT_ELK_LAYOUT_ENGINE_OPTIONS: IElkLayoutEngineOptions;
55
+
56
+ declare class ElkLayoutEngine extends FLayoutEngine<IElkLayoutEngineOptions> {
57
+ private _elkCtor?;
58
+ constructor();
59
+ protected mergeOptions(currentOptions: IElkLayoutEngineOptions, nextOptions?: Partial<IElkLayoutEngineOptions>): IElkLayoutEngineOptions;
60
+ calculate(nodes: IFLayoutNode[], connections: IFLayoutConnection[], options?: IFLayoutCalculationOptions<IElkLayoutEngineOptions>): Promise<IFLayoutResult>;
61
+ private _buildLayoutConfiguration;
62
+ private _buildGraphNode;
63
+ private _loadElk;
64
+ private _getNodePosition;
65
+ private _mapAlgorithm;
66
+ private _createEdgeId;
67
+ private _mapDirection;
68
+ static ɵfac: i0.ɵɵFactoryDeclaration<ElkLayoutEngine, never>;
69
+ static ɵprov: i0.ɵɵInjectableDeclaration<ElkLayoutEngine>;
70
+ }
71
+
72
+ export { DEFAULT_ELK_LAYOUT_ENGINE_OPTIONS, EElkLayoutAlgorithm, ElkLayoutEngine };
73
+ export type { IElkLayoutEdge, IElkLayoutEngineOptions, IElkLayoutInstance, IElkLayoutModule, IElkLayoutNode, IElkLayoutPositionedNode, IElkLayoutResponse };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foblex/flow-elk-layout",
3
- "version": "18.5.0",
3
+ "version": "18.6.1",
4
4
  "description": "ELK.js layout engine adapter for Foblex Flow.",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -45,8 +45,6 @@
45
45
  },
46
46
  ".": {
47
47
  "types": "./index.d.ts",
48
- "esm2022": "./esm2022/foblex-flow-elk-layout.mjs",
49
- "esm": "./esm2022/foblex-flow-elk-layout.mjs",
50
48
  "default": "./fesm2022/foblex-flow-elk-layout.mjs"
51
49
  }
52
50
  }
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ibGV4LWZsb3ctZWxrLWxheW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYnMvZi1sYXlvdXQvZWxrL3NyYy9mb2JsZXgtZmxvdy1lbGstbGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,12 +0,0 @@
1
- import { SizeExtensions } from '@foblex/2d';
2
- import { EFLayoutDirection } from '@foblex/flow';
3
- import { EElkLayoutAlgorithm } from '../enums';
4
- export const DEFAULT_ELK_LAYOUT_ENGINE_OPTIONS = {
5
- direction: EFLayoutDirection.TOP_BOTTOM,
6
- nodeGap: 48,
7
- layerGap: 48,
8
- algorithm: EElkLayoutAlgorithm.LAYERED,
9
- defaultNodeSize: SizeExtensions.initialize(120, 72),
10
- layoutOptions: {},
11
- };
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1lbGstbGF5b3V0LWVuZ2luZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9mLWxheW91dC9lbGsvc3JjL2xpYi9jb25maWd1cmF0aW9ucy9kZWZhdWx0LWVsay1sYXlvdXQtZW5naW5lLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUE0QjtJQUN4RSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsVUFBVTtJQUN2QyxPQUFPLEVBQUUsRUFBRTtJQUNYLFFBQVEsRUFBRSxFQUFFO0lBQ1osU0FBUyxFQUFFLG1CQUFtQixDQUFDLE9BQU87SUFDdEMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxhQUFhLEVBQUUsRUFBRTtDQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2l6ZUV4dGVuc2lvbnMgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IEVGTGF5b3V0RGlyZWN0aW9uIH0gZnJvbSAnQGZvYmxleC9mbG93JztcbmltcG9ydCB7IEVFbGtMYXlvdXRBbGdvcml0aG0gfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQgeyBJRWxrTGF5b3V0RW5naW5lT3B0aW9ucyB9IGZyb20gJy4uL21vZGVscyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VMS19MQVlPVVRfRU5HSU5FX09QVElPTlM6IElFbGtMYXlvdXRFbmdpbmVPcHRpb25zID0ge1xuICBkaXJlY3Rpb246IEVGTGF5b3V0RGlyZWN0aW9uLlRPUF9CT1RUT00sXG4gIG5vZGVHYXA6IDQ4LFxuICBsYXllckdhcDogNDgsXG4gIGFsZ29yaXRobTogRUVsa0xheW91dEFsZ29yaXRobS5MQVlFUkVELFxuICBkZWZhdWx0Tm9kZVNpemU6IFNpemVFeHRlbnNpb25zLmluaXRpYWxpemUoMTIwLCA3MiksXG4gIGxheW91dE9wdGlvbnM6IHt9LFxufTtcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './default-elk-layout-engine-options';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2Vsay9zcmMvbGliL2NvbmZpZ3VyYXRpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtZWxrLWxheW91dC1lbmdpbmUtb3B0aW9ucyc7XG4iXX0=
@@ -1,149 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { PointExtensions, SizeExtensions } from '@foblex/2d';
3
- import { EFLayoutDirection, FLayoutEngine, mergeLayoutNodes, } from '@foblex/flow';
4
- import { DEFAULT_ELK_LAYOUT_ENGINE_OPTIONS } from '../configurations';
5
- import { EElkLayoutAlgorithm } from '../enums';
6
- import * as i0 from "@angular/core";
7
- export class ElkLayoutEngine extends FLayoutEngine {
8
- _elkCtor;
9
- constructor() {
10
- super(DEFAULT_ELK_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
- layoutOptions: {
20
- ...(currentOptions.layoutOptions || {}),
21
- ...(nextOptions.layoutOptions || {}),
22
- },
23
- };
24
- }
25
- async calculate(nodes, connections, options) {
26
- const layoutOptions = this.resolveLayoutOptions(options);
27
- const elkModule = await this._loadElk();
28
- const layout = (await new elkModule.default().layout(this._buildLayoutConfiguration(nodes, connections, layoutOptions)));
29
- const positions = new Map();
30
- layout.children?.forEach((node) => {
31
- positions.set(node.id, PointExtensions.initialize(node.x, node.y));
32
- });
33
- return {
34
- nodes: mergeLayoutNodes(nodes, positions),
35
- };
36
- }
37
- _buildLayoutConfiguration(nodes, connections, options) {
38
- const layoutOptions = {
39
- 'elk.algorithm': this._mapAlgorithm(options.algorithm),
40
- 'elk.direction': this._mapDirection(options.direction),
41
- 'spacing.nodeNode': `${options.nodeGap}`,
42
- 'spacing.nodeNodeBetweenLayers': `${options.layerGap}`,
43
- ...(options.layoutOptions || {}),
44
- };
45
- const graphNodes = nodes.map((node) => this._buildGraphNode(node, options.defaultNodeSize));
46
- const graphEdges = connections.reduce((result, connection, index) => {
47
- if (!graphNodes.some((node) => node.id === connection.source)) {
48
- return result;
49
- }
50
- if (!graphNodes.some((node) => node.id === connection.target)) {
51
- return result;
52
- }
53
- result.push({
54
- id: this._createEdgeId(connection, index),
55
- sources: [connection.source],
56
- targets: [connection.target],
57
- });
58
- return result;
59
- }, []);
60
- return {
61
- id: 'root',
62
- layoutOptions,
63
- children: graphNodes,
64
- edges: graphEdges,
65
- };
66
- }
67
- _buildGraphNode(node, defaultNodeSize) {
68
- const size = node.size ?? defaultNodeSize;
69
- const graphNode = {
70
- id: node.id,
71
- width: size.width,
72
- height: size.height,
73
- };
74
- const position = this._getNodePosition(node);
75
- if (!position) {
76
- return graphNode;
77
- }
78
- return {
79
- ...graphNode,
80
- x: position.x,
81
- y: position.y,
82
- };
83
- }
84
- _loadElk() {
85
- if (!this._elkCtor) {
86
- this._elkCtor = import('elkjs/lib/elk.bundled');
87
- }
88
- return this._elkCtor;
89
- }
90
- _getNodePosition(node) {
91
- const positionedNode = node;
92
- if (!positionedNode.position) {
93
- return null;
94
- }
95
- return positionedNode.position;
96
- }
97
- _mapAlgorithm(algorithm) {
98
- switch (algorithm) {
99
- case EElkLayoutAlgorithm.FIXED:
100
- return 'fixed';
101
- case EElkLayoutAlgorithm.BOX:
102
- return 'box';
103
- case EElkLayoutAlgorithm.RANDOM:
104
- return 'random';
105
- case EElkLayoutAlgorithm.LAYERED:
106
- return 'layered';
107
- case EElkLayoutAlgorithm.STRESS:
108
- return 'stress';
109
- case EElkLayoutAlgorithm.MRTREE:
110
- return 'mrtree';
111
- case EElkLayoutAlgorithm.RADIAL:
112
- return 'radial';
113
- case EElkLayoutAlgorithm.FORCE:
114
- return 'force';
115
- case EElkLayoutAlgorithm.DISCO:
116
- return 'disco';
117
- case EElkLayoutAlgorithm.SPORE_OVERLAP:
118
- return 'sporeOverlap';
119
- case EElkLayoutAlgorithm.SPORE_COMPACTION:
120
- return 'sporeCompaction';
121
- case EElkLayoutAlgorithm.RECT_PACKING:
122
- return 'rectpacking';
123
- default:
124
- return 'layered';
125
- }
126
- }
127
- _createEdgeId(connection, index) {
128
- return `${connection.source}->${connection.target}-${index}`;
129
- }
130
- _mapDirection(direction) {
131
- switch (direction) {
132
- case EFLayoutDirection.BOTTOM_TOP:
133
- return 'UP';
134
- case EFLayoutDirection.LEFT_RIGHT:
135
- return 'RIGHT';
136
- case EFLayoutDirection.RIGHT_LEFT:
137
- return 'LEFT';
138
- case EFLayoutDirection.TOP_BOTTOM:
139
- default:
140
- return 'DOWN';
141
- }
142
- }
143
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElkLayoutEngine, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
144
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElkLayoutEngine });
145
- }
146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElkLayoutEngine, decorators: [{
147
- type: Injectable
148
- }], ctorParameters: () => [] });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxrLWxheW91dC1lbmdpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2Vsay9zcmMvbGliL2VuZ2luZXMvZWxrLWxheW91dC1lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGFBQWEsRUFLYixnQkFBZ0IsR0FDakIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQVUvQyxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxhQUFzQztJQUNqRSxRQUFRLENBQTZCO0lBRTdDO1FBQ0UsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVrQixZQUFZLENBQzdCLGNBQXVDLEVBQ3ZDLGNBQWdELEVBQUU7UUFFbEQsT0FBTztZQUNMLEdBQUcsY0FBYztZQUNqQixHQUFHLFdBQVc7WUFDZCxlQUFlLEVBQUUsV0FBVyxDQUFDLGVBQWU7Z0JBQzFDLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUN2QixXQUFXLENBQUMsZUFBZSxDQUFDLEtBQUssRUFDakMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ25DO2dCQUNILENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUN2QixjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssRUFDcEMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ3RDO1lBQ0wsYUFBYSxFQUFFO2dCQUNiLEdBQUcsQ0FBQyxjQUFjLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsR0FBRyxDQUFD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QUFLLGlCQUFpQixDQUFDLFVBQVUsQ0FBQztZQUNsQztnQkFDRSxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQzt3R0F2TFUsZUFBZTs0R0FBZixlQUFlOzs0RkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVBvaW50LCBQb2ludEV4dGVuc2lvbnMsIFNpemVFeHRlbnNpb25zIH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQge1xuICBFRkxheW91dERpcmVjdGlvbixcbiAgRkxheW91dEVuZ2luZSxcbiAgSUZMYXlvdXRDYWxjdWxhdGlvbk9wdGlvbnMsXG4gIElGTGF5b3V0Q29ubmVjdGlvbixcbiAgSUZMYXlvdXROb2RlLFxuICBJRkxheW91dFJlc3VsdCxcbiAgbWVyZ2VMYXlvdXROb2Rlcyxcbn0gZnJvbSAnQGZvYmxleC9mbG93JztcbmltcG9ydCB7IERFRkFVTFRfRUxLX0xBWU9VVF9FTkdJTkVfT1BUSU9OUyB9IGZyb20gJy4uL2NvbmZpZ3VyYXRpb25zJztcbmltcG9ydCB7IEVFbGtMYXlvdXRBbGdvcml0aG0gfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQge1xuICBJRWxrTGF5b3V0RWRnZSxcbiAgSUVsa0xheW91dEVuZ2luZU9wdGlvbnMsXG4gIElFbGtMYXlvdXRNb2R1bGUsXG4gIElFbGtMYXlvdXROb2RlLFxuICBJRWxrTGF5b3V0UmVzcG9uc2UsXG59IGZyb20gJy4uL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbGtMYXlvdXRFbmdpbmUgZXh0ZW5kcyBGTGF5b3V0RW5naW5lPElFbGtMYXlvdXRFbmdpbmVPcHRpb25zPiB7XG4gIHByaXZhdGUgX2Vsa0N0b3I/OiBQcm9taXNlPElFbGtMYXlvdXRNb2R1bGU+O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihERUZBVUxUX0VMS19MQVlPVVRfRU5HSU5FX09QVElPTlMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG1lcmdlT3B0aW9ucyhcbiAgICBjdXJyZW50T3B0aW9uczogSUVsa0xheW91dEVuZ2luZU9wdGlvbnMsXG4gICAgbmV4dE9wdGlvbnM6IFBhcnRpYWw8SUVsa0xheW91dEVuZ2luZU9wdGlvbnM+ID0ge30sXG4gICk6IElFbGtMYXlvdXRFbmdpbmVPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY3VycmVudE9wdGlvbnMsXG4gICAgICAuLi5uZXh0T3B0aW9ucyxcbiAgICAgIGRlZmF1bHROb2RlU2l6ZTogbmV4dE9wdGlvbnMuZGVmYXVsdE5vZGVTaXplXG4gICAgICAgID8gU2l6ZUV4dGVuc2lvbnMuaW5pdGlhbGl6ZShcbiAgICAgICAgICAgIG5leHRPcHRpb25zLmRlZmF1bHROb2RlU2l6ZS53aWR0aCxcbiAgICAgICAgICAgIG5leHRPcHRpb25zLmRlZmF1bHROb2RlU2l6ZS5oZWlnaHQsXG4gICAgICAgICAgKVxuICAgICAgICA6IFNpemVFeHRlbnNpb25zLmluaXRpYWxpemUoXG4gICAgICAgICAgICBjdXJyZW50T3B0aW9ucy5kZWZhdWx0Tm9kZVNpemUud2lkdGgsXG4gICAgICAgICAgICBjdXJyZW50T3B0aW9ucy5kZWZhdWx0Tm9kZVNpemUuaGVpZ2h0LFxuICAgICAgICAgICksXG4gICAgICBsYXlvdXRPcHRpb25zOiB7XG4gICAgICAgIC4uLihjdXJyZW50T3B0aW9ucy5sYXlvdXRPcHRpb25zIHx8IHt9KSxcbiAgICAgICAgLi4uKG5leHRPcHRpb25zLmxheW91dE9wdGlvbnMgfHwge30pLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIGNhbGN1bGF0ZShcbiAgICBub2RlczogSUZMYXlvdXROb2RlW10sXG4gICAgY29ubmVjdGlvbnM6IElGTGF5b3V0Q29ubmVjdGlvbltdLFxuICAgIG9wdGlvbnM/OiBJRkxheW91dENhbGN1bGF0aW9uT3B0aW9uczxJRWxrTGF5b3V0RW5naW5lT3B0aW9ucz4sXG4gICk6IFByb21pc2U8SUZMYXlvdXRSZXN1bHQ+IHtcbiAgICBjb25zdCBsYXlvdXRPcHRpb25zID0gdGhpcy5yZXNvbHZlTGF5b3V0T3B0aW9ucyhvcHRpb25zKTtcbiAgICBjb25zdCBlbGtNb2R1bGUgPSBhd2FpdCB0aGlzLl9sb2FkRWxrKCk7XG4gICAgY29uc3QgbGF5b3V0ID0gKGF3YWl0IG5ldyBlbGtNb2R1bGUuZGVmYXVsdCgpLmxheW91dChcbiAgICAgIHRoaXMuX2J1aWxkTGF5b3V0Q29uZmlndXJhdGlvbihub2RlcywgY29ubmVjdGlvbnMsIGxheW91dE9wdGlvbnMpLFxuICAgICkpIGFzIElFbGtMYXlvdXRSZXNwb25zZTtcbiAgICBjb25zdCBwb3NpdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgSVBvaW50PigpO1xuXG4gICAgbGF5b3V0LmNoaWxkcmVuPy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICBwb3NpdGlvbnMuc2V0KG5vZGUuaWQsIFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKG5vZGUueCwgbm9kZS55KSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbm9kZXM6IG1lcmdlTGF5b3V0Tm9kZXMobm9kZXMsIHBvc2l0aW9ucyksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2J1aWxkTGF5b3V0Q29uZmlndXJhdGlvbihcbiAgICBub2RlczogSUZMYXlvdXROb2RlW10sXG4gICAgY29ubmVjdGlvbnM6IElGTGF5b3V0Q29ubmVjdGlvbltdLFxuICAgIG9wdGlvbnM6IElFbGtMYXlvdXRFbmdpbmVPcHRpb25zLFxuICApOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBsYXlvdXRPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIGNoaWxkcmVuOiBJRWxrTGF5b3V0Tm9kZVtdO1xuICAgIGVkZ2VzOiBJRWxrTGF5b3V0RWRnZVtdO1xuICB9IHtcbiAgICBjb25zdCBsYXlvdXRPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ2Vsay5hbGdvcml0aG0nOiB0aGlzLl9tYXBBbGdvcml0aG0ob3B0aW9ucy5hbGdvcml0aG0pLFxuICAgICAgJ2Vsay5kaXJlY3Rpb24nOiB0aGlzLl9tYXBEaXJlY3Rpb24ob3B0aW9ucy5kaXJlY3Rpb24pLFxuICAgICAgJ3NwYWNpbmcubm9kZU5vZGUnOiBgJHtvcHRpb25zLm5vZGVHYXB9YCxcbiAgICAgICdzcGFjaW5nLm5vZGVOb2RlQmV0d2VlbkxheWVycyc6IGAke29wdGlvbnMubGF5ZXJHYXB9YCxcbiAgICAgIC4uLihvcHRpb25zLmxheW91dE9wdGlvbnMgfHwge30pLFxuICAgIH07XG4gICAgY29uc3QgZ3JhcGhOb2RlcyA9IG5vZGVzLm1hcCgobm9kZSkgPT4gdGhpcy5fYnVpbGRHcmFwaE5vZGUobm9kZSwgb3B0aW9ucy5kZWZhdWx0Tm9kZVNpemUpKTtcbiAgICBjb25zdCBncmFwaEVkZ2VzID0gY29ubmVjdGlvbnMucmVkdWNlPElFbGtMYXlvdXRFZGdlW10+KChyZXN1bHQsIGNvbm5lY3Rpb24sIGluZGV4KSA9PiB7XG4gICAgICBpZiAoIWdyYXBoTm9kZXMuc29tZSgobm9kZSkgPT4gbm9kZS5pZCA9PT0gY29ubmVjdGlvbi5zb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGlmICghZ3JhcGhOb2Rlcy5zb21lKChub2RlKSA9PiBub2RlLmlkID09PSBjb25uZWN0aW9uLnRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICBpZDogdGhpcy5fY3JlYXRlRWRnZUlkKGNvbm5lY3Rpb24sIGluZGV4KSxcbiAgICAgICAgc291cmNlczogW2Nvbm5lY3Rpb24uc291cmNlXSxcbiAgICAgICAgdGFyZ2V0czogW2Nvbm5lY3Rpb24udGFyZ2V0XSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogJ3Jvb3QnLFxuICAgICAgbGF5b3V0T3B0aW9ucyxcbiAgICAgIGNoaWxkcmVuOiBncmFwaE5vZGVzLFxuICAgICAgZWRnZXM6IGdyYXBoRWRnZXMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2J1aWxkR3JhcGhOb2RlKFxuICAgIG5vZGU6IElGTGF5b3V0Tm9kZSxcbiAgICBkZWZhdWx0Tm9kZVNpemU6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSxcbiAgKTogSUVsa0xheW91dE5vZGUge1xuICAgIGNvbnN0IHNpemUgPSBub2RlLnNpemUgPz8gZGVmYXVsdE5vZGVTaXplO1xuICAgIGNvbnN0IGdyYXBoTm9kZTogSUVsa0xheW91dE5vZGUgPSB7XG4gICAgICBpZDogbm9kZS5pZCxcbiAgICAgIHdpZHRoOiBzaXplLndpZHRoLFxuICAgICAgaGVpZ2h0OiBzaXplLmhlaWdodCxcbiAgICB9O1xuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5fZ2V0Tm9kZVBvc2l0aW9uKG5vZGUpO1xuXG4gICAgaWYgKCFwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIGdyYXBoTm9kZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZ3JhcGhOb2RlLFxuICAgICAgeDogcG9zaXRpb24ueCxcbiAgICAgIHk6IHBvc2l0aW9uLnksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRFbGsoKTogUHJvbWlzZTxJRWxrTGF5b3V0TW9kdWxlPiB7XG4gICAgaWYgKCF0aGlzLl9lbGtDdG9yKSB7XG4gICAgICB0aGlzLl9lbGtDdG9yID0gaW1wb3J0KCdlbGtqcy9saWIvZWxrLmJ1bmRsZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZWxrQ3RvcjtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE5vZGVQb3NpdGlvbihub2RlOiBJRkxheW91dE5vZGUpOiBJUG9pbnQgfCBudWxsIHtcbiAgICBjb25zdCBwb3NpdGlvbmVkTm9kZSA9IG5vZGUgYXMgSUZMYXlvdXROb2RlICYgeyBwb3NpdGlvbj86IElQb2ludCB9O1xuXG4gICAgaWYgKCFwb3NpdGlvbmVkTm9kZS5wb3NpdGlvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvc2l0aW9uZWROb2RlLnBvc2l0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBfbWFwQWxnb3JpdGhtKGFsZ29yaXRobTogRUVsa0xheW91dEFsZ29yaXRobSk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChhbGdvcml0aG0pIHtcbiAgICAgIGNhc2UgRUVsa0xheW91dEFsZ29yaXRobS5GSVhFRDpcbiAgICAgICAgcmV0dXJuICdmaXhlZCc7XG4gICAgICBjYXNlIEVFbGtMYXlvdXRBbGdvcml0aG0uQk9YOlxuICAgICAgICByZXR1cm4gJ2JveCc7XG4gICAgICBjYXNlIEVFbGtMYXlvdXRBbGdvcml0aG0uUkFORE9NOlxuICAgICAgICByZXR1cm4gJ3JhbmRvbSc7XG4gICAgICBjYXNlIEVFbGtMYXlvdXRBbGdvcml0aG0uTEFZRVJFRDpcbiAgICAgICAgcmV0dXJuICdsYXllcmVkJztcbiAgICAgIGNhc2UgRUVsa0xheW91dEFsZ29yaXRobS5TVFJFU1M6XG4gICAgICAgIHJldHVybiAnc3RyZXNzJztcbiAgICAgIGNhc2UgRUVsa0xheW91dEFsZ29yaXRobS5NUlRSRUU6XG4gICAgICAgIHJldHVybiAnbXJ0cmVlJztcbiAgICAgIGNhc2UgRUVsa0xheW91dEFsZ29yaXRobS5SQURJQUw6XG4gICAgICAgIHJldHVybiAncmFkaWFsJztcbiAgICAgIGNhc2UgRUVsa0xheW91dEFsZ29yaXRobS5GT1JDRTpcbiAgICAgICAgcmV0dXJuICdmb3JjZSc7XG4gICAgICBjYXNlIEVFbGtMYXlvdXRBbGdvcml0aG0uRElTQ086XG4gICAgICAgIHJldHVybiAnZGlzY28nO1xuICAgICAgY2FzZSBFRWxrTGF5b3V0QWxnb3JpdGhtLlNQT1JFX09WRVJMQVA6XG4gICAgICAgIHJldHVybiAnc3BvcmVPdmVybGFwJztcbiAgICAgIGNhc2UgRUVsa0xheW91dEFsZ29yaXRobS5TUE9SRV9DT01QQUNUSU9OOlxuICAgICAgICByZXR1cm4gJ3Nwb3JlQ29tcGFjdGlvbic7XG4gICAgICBjYXNlIEVFbGtMYXlvdXRBbGdvcml0aG0uUkVDVF9QQUNLSU5HOlxuICAgICAgICByZXR1cm4gJ3JlY3RwYWNraW5nJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnbGF5ZXJlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlRWRnZUlkKGNvbm5lY3Rpb246IElGTGF5b3V0Q29ubmVjdGlvbiwgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2Nvbm5lY3Rpb24uc291cmNlfS0+JHtjb25uZWN0aW9uLnRhcmdldH0tJHtpbmRleH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBfbWFwRGlyZWN0aW9uKGRpcmVjdGlvbjogRUZMYXlvdXREaXJlY3Rpb24pOiAnRE9XTicgfCAnVVAnIHwgJ1JJR0hUJyB8ICdMRUZUJyB7XG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgRUZMYXlvdXREaXJlY3Rpb24uQk9UVE9NX1RPUDpcbiAgICAgICAgcmV0dXJuICdVUCc7XG4gICAgICBjYXNlIEVGTGF5b3V0RGlyZWN0aW9uLkxFRlRfUklHSFQ6XG4gICAgICAgIHJldHVybiAnUklHSFQnO1xuICAgICAgY2FzZSBFRkxheW91dERpcmVjdGlvbi5SSUdIVF9MRUZUOlxuICAgICAgICByZXR1cm4gJ0xFRlQnO1xuICAgICAgY2FzZSBFRkxheW91dERpcmVjdGlvbi5UT1BfQk9UVE9NOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdET1dOJztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './elk-layout-engine';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2Vsay9zcmMvbGliL2VuZ2luZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZWxrLWxheW91dC1lbmdpbmUnO1xuIl19
@@ -1,16 +0,0 @@
1
- export var EElkLayoutAlgorithm;
2
- (function (EElkLayoutAlgorithm) {
3
- EElkLayoutAlgorithm["FIXED"] = "fixed";
4
- EElkLayoutAlgorithm["BOX"] = "box";
5
- EElkLayoutAlgorithm["RANDOM"] = "random";
6
- EElkLayoutAlgorithm["LAYERED"] = "layered";
7
- EElkLayoutAlgorithm["STRESS"] = "stress";
8
- EElkLayoutAlgorithm["MRTREE"] = "mrtree";
9
- EElkLayoutAlgorithm["RADIAL"] = "radial";
10
- EElkLayoutAlgorithm["FORCE"] = "force";
11
- EElkLayoutAlgorithm["DISCO"] = "disco";
12
- EElkLayoutAlgorithm["SPORE_OVERLAP"] = "sporeOverlap";
13
- EElkLayoutAlgorithm["SPORE_COMPACTION"] = "sporeCompaction";
14
- EElkLayoutAlgorithm["RECT_PACKING"] = "rectpacking";
15
- })(EElkLayoutAlgorithm || (EElkLayoutAlgorithm = {}));
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZS1lbGstbGF5b3V0LWFsZ29yaXRobS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZi1sYXlvdXQvZWxrL3NyYy9saWIvZW51bXMvZS1lbGstbGF5b3V0LWFsZ29yaXRobS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxtQkFhWDtBQWJELFdBQVksbUJBQW1CO0lBQzdCLHNDQUFlLENBQUE7SUFDZixrQ0FBVyxDQUFBO0lBQ1gsd0NBQWlCLENBQUE7SUFDakIsMENBQW1CLENBQUE7SUFDbkIsd0NBQWlCLENBQUE7SUFDakIsd0NBQWlCLENBQUE7SUFDakIsd0NBQWlCLENBQUE7SUFDakIsc0NBQWUsQ0FBQTtJQUNmLHNDQUFlLENBQUE7SUFDZixxREFBOEIsQ0FBQTtJQUM5QiwyREFBb0MsQ0FBQTtJQUNwQyxtREFBNEIsQ0FBQTtBQUM5QixDQUFDLEVBYlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQWE5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEVFbGtMYXlvdXRBbGdvcml0aG0ge1xuICBGSVhFRCA9ICdmaXhlZCcsXG4gIEJPWCA9ICdib3gnLFxuICBSQU5ET00gPSAncmFuZG9tJyxcbiAgTEFZRVJFRCA9ICdsYXllcmVkJyxcbiAgU1RSRVNTID0gJ3N0cmVzcycsXG4gIE1SVFJFRSA9ICdtcnRyZWUnLFxuICBSQURJQUwgPSAncmFkaWFsJyxcbiAgRk9SQ0UgPSAnZm9yY2UnLFxuICBESVNDTyA9ICdkaXNjbycsXG4gIFNQT1JFX09WRVJMQVAgPSAnc3BvcmVPdmVybGFwJyxcbiAgU1BPUkVfQ09NUEFDVElPTiA9ICdzcG9yZUNvbXBhY3Rpb24nLFxuICBSRUNUX1BBQ0tJTkcgPSAncmVjdHBhY2tpbmcnLFxufVxuIl19
@@ -1,2 +0,0 @@
1
- export * from './e-elk-layout-algorithm';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2Vsay9zcmMvbGliL2VudW1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2UtZWxrLWxheW91dC1hbGdvcml0aG0nO1xuIl19
@@ -1,5 +0,0 @@
1
- export * from './configurations';
2
- export * from './engines';
3
- export * from './enums';
4
- export * from './models';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2Vsay9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbmZpZ3VyYXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vZW5naW5lcyc7XG5leHBvcnQgKiBmcm9tICcuL2VudW1zJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1lbGstbGF5b3V0LWVkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2Vsay9zcmMvbGliL21vZGVscy9pLWVsay1sYXlvdXQtZWRnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJRWxrTGF5b3V0RWRnZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNvdXJjZXM6IHN0cmluZ1tdO1xuICB0YXJnZXRzOiBzdHJpbmdbXTtcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1lbGstbGF5b3V0LWVuZ2luZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9mLWxheW91dC9lbGsvc3JjL2xpYi9tb2RlbHMvaS1lbGstbGF5b3V0LWVuZ2luZS1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRkxheW91dEFsZ29yaXRobU9wdGlvbnMgfSBmcm9tICdAZm9ibGV4L2Zsb3cnO1xuaW1wb3J0IHsgRUVsa0xheW91dEFsZ29yaXRobSB9IGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGludGVyZmFjZSBJRWxrTGF5b3V0RW5naW5lT3B0aW9ucyBleHRlbmRzIElGTGF5b3V0QWxnb3JpdGhtT3B0aW9uczxFRWxrTGF5b3V0QWxnb3JpdGhtPiB7XG4gIGxheW91dE9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1lbGstbGF5b3V0LWluc3RhbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9mLWxheW91dC9lbGsvc3JjL2xpYi9tb2RlbHMvaS1lbGstbGF5b3V0LWluc3RhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElFbGtMYXlvdXRJbnN0YW5jZSB7XG4gIGxheW91dChjb25maWc6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+O1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1lbGstbGF5b3V0LW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZi1sYXlvdXQvZWxrL3NyYy9saWIvbW9kZWxzL2ktZWxrLWxheW91dC1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElFbGtMYXlvdXRJbnN0YW5jZSB9IGZyb20gJy4vaS1lbGstbGF5b3V0LWluc3RhbmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBJRWxrTGF5b3V0TW9kdWxlIHtcbiAgZGVmYXVsdDogbmV3ICgpID0+IElFbGtMYXlvdXRJbnN0YW5jZTtcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1lbGstbGF5b3V0LW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2Vsay9zcmMvbGliL21vZGVscy9pLWVsay1sYXlvdXQtbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJRWxrTGF5b3V0Tm9kZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICB4PzogbnVtYmVyO1xuICB5PzogbnVtYmVyO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1lbGstbGF5b3V0LXBvc2l0aW9uZWQtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZi1sYXlvdXQvZWxrL3NyYy9saWIvbW9kZWxzL2ktZWxrLWxheW91dC1wb3NpdGlvbmVkLW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQb2ludCB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbGtMYXlvdXRQb3NpdGlvbmVkTm9kZSBleHRlbmRzIElQb2ludCB7XG4gIGlkOiBzdHJpbmc7XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1lbGstbGF5b3V0LXJlc3BvbnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9mLWxheW91dC9lbGsvc3JjL2xpYi9tb2RlbHMvaS1lbGstbGF5b3V0LXJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRWxrTGF5b3V0UG9zaXRpb25lZE5vZGUgfSBmcm9tICcuL2ktZWxrLWxheW91dC1wb3NpdGlvbmVkLW5vZGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbGtMYXlvdXRSZXNwb25zZSB7XG4gIGNoaWxkcmVuPzogSUVsa0xheW91dFBvc2l0aW9uZWROb2RlW107XG59XG4iXX0=
@@ -1,8 +0,0 @@
1
- export * from './i-elk-layout-edge';
2
- export * from './i-elk-layout-engine-options';
3
- export * from './i-elk-layout-instance';
4
- export * from './i-elk-layout-module';
5
- export * from './i-elk-layout-node';
6
- export * from './i-elk-layout-positioned-node';
7
- export * from './i-elk-layout-response';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2YtbGF5b3V0L2Vsay9zcmMvbGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pLWVsay1sYXlvdXQtZWRnZSc7XG5leHBvcnQgKiBmcm9tICcuL2ktZWxrLWxheW91dC1lbmdpbmUtb3B0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2ktZWxrLWxheW91dC1pbnN0YW5jZSc7XG5leHBvcnQgKiBmcm9tICcuL2ktZWxrLWxheW91dC1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pLWVsay1sYXlvdXQtbm9kZSc7XG5leHBvcnQgKiBmcm9tICcuL2ktZWxrLWxheW91dC1wb3NpdGlvbmVkLW5vZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pLWVsay1sYXlvdXQtcmVzcG9uc2UnO1xuIl19
@@ -1,2 +0,0 @@
1
- export * from './lib';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYnMvZi1sYXlvdXQvZWxrL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWInO1xuIl19
@@ -1,2 +0,0 @@
1
- import { IElkLayoutEngineOptions } from '../models';
2
- export declare const DEFAULT_ELK_LAYOUT_ENGINE_OPTIONS: IElkLayoutEngineOptions;
@@ -1 +0,0 @@
1
- export * from './default-elk-layout-engine-options';
@@ -1,18 +0,0 @@
1
- import { FLayoutEngine, IFLayoutCalculationOptions, IFLayoutConnection, IFLayoutNode, IFLayoutResult } from '@foblex/flow';
2
- import { IElkLayoutEngineOptions } from '../models';
3
- import * as i0 from "@angular/core";
4
- export declare class ElkLayoutEngine extends FLayoutEngine<IElkLayoutEngineOptions> {
5
- private _elkCtor?;
6
- constructor();
7
- protected mergeOptions(currentOptions: IElkLayoutEngineOptions, nextOptions?: Partial<IElkLayoutEngineOptions>): IElkLayoutEngineOptions;
8
- calculate(nodes: IFLayoutNode[], connections: IFLayoutConnection[], options?: IFLayoutCalculationOptions<IElkLayoutEngineOptions>): Promise<IFLayoutResult>;
9
- private _buildLayoutConfiguration;
10
- private _buildGraphNode;
11
- private _loadElk;
12
- private _getNodePosition;
13
- private _mapAlgorithm;
14
- private _createEdgeId;
15
- private _mapDirection;
16
- static ɵfac: i0.ɵɵFactoryDeclaration<ElkLayoutEngine, never>;
17
- static ɵprov: i0.ɵɵInjectableDeclaration<ElkLayoutEngine>;
18
- }
@@ -1 +0,0 @@
1
- export * from './elk-layout-engine';
@@ -1,14 +0,0 @@
1
- export declare enum EElkLayoutAlgorithm {
2
- FIXED = "fixed",
3
- BOX = "box",
4
- RANDOM = "random",
5
- LAYERED = "layered",
6
- STRESS = "stress",
7
- MRTREE = "mrtree",
8
- RADIAL = "radial",
9
- FORCE = "force",
10
- DISCO = "disco",
11
- SPORE_OVERLAP = "sporeOverlap",
12
- SPORE_COMPACTION = "sporeCompaction",
13
- RECT_PACKING = "rectpacking"
14
- }
@@ -1 +0,0 @@
1
- export * from './e-elk-layout-algorithm';
package/lib/index.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export * from './configurations';
2
- export * from './engines';
3
- export * from './enums';
4
- export * from './models';
@@ -1,5 +0,0 @@
1
- export interface IElkLayoutEdge {
2
- id: string;
3
- sources: string[];
4
- targets: string[];
5
- }
@@ -1,5 +0,0 @@
1
- import { IFLayoutAlgorithmOptions } from '@foblex/flow';
2
- import { EElkLayoutAlgorithm } from '../enums';
3
- export interface IElkLayoutEngineOptions extends IFLayoutAlgorithmOptions<EElkLayoutAlgorithm> {
4
- layoutOptions?: Record<string, string>;
5
- }
@@ -1,3 +0,0 @@
1
- export interface IElkLayoutInstance {
2
- layout(config: unknown): Promise<unknown>;
3
- }
@@ -1,4 +0,0 @@
1
- import { IElkLayoutInstance } from './i-elk-layout-instance';
2
- export interface IElkLayoutModule {
3
- default: new () => IElkLayoutInstance;
4
- }
@@ -1,7 +0,0 @@
1
- export interface IElkLayoutNode {
2
- id: string;
3
- width: number;
4
- height: number;
5
- x?: number;
6
- y?: number;
7
- }
@@ -1,4 +0,0 @@
1
- import { IPoint } from '@foblex/2d';
2
- export interface IElkLayoutPositionedNode extends IPoint {
3
- id: string;
4
- }
@@ -1,4 +0,0 @@
1
- import { IElkLayoutPositionedNode } from './i-elk-layout-positioned-node';
2
- export interface IElkLayoutResponse {
3
- children?: IElkLayoutPositionedNode[];
4
- }
@@ -1,7 +0,0 @@
1
- export * from './i-elk-layout-edge';
2
- export * from './i-elk-layout-engine-options';
3
- export * from './i-elk-layout-instance';
4
- export * from './i-elk-layout-module';
5
- export * from './i-elk-layout-node';
6
- export * from './i-elk-layout-positioned-node';
7
- export * from './i-elk-layout-response';
package/public-api.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from './lib';