@statelyai/layout 0.1.3 → 0.2.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.
Files changed (60) hide show
  1. package/NOTICE.md +43 -0
  2. package/README.md +82 -4
  3. package/dist/elkjs/index.cjs +8 -0
  4. package/dist/elkjs/index.d.cts +146 -0
  5. package/dist/elkjs/index.d.mts +42 -39
  6. package/dist/elkjs/index.mjs +2 -1483
  7. package/dist/elkjs/main.cjs +17 -0
  8. package/dist/elkjs/main.d.cts +10 -0
  9. package/dist/elkjs/main.d.mts +11 -0
  10. package/dist/elkjs/main.mjs +17 -0
  11. package/dist/elkjs/worker-api.cjs +3 -0
  12. package/dist/elkjs/worker-api.d.cts +3 -0
  13. package/dist/elkjs/worker-api.d.mts +3 -0
  14. package/dist/elkjs/worker-api.mjs +3 -0
  15. package/dist/elkjs/worker.cjs +86 -0
  16. package/dist/elkjs/worker.d.cts +17 -0
  17. package/dist/elkjs/worker.d.mts +17 -0
  18. package/dist/elkjs/worker.mjs +86 -0
  19. package/dist/elkjs-BVnDwnBQ.cjs +1551 -0
  20. package/dist/elkjs-CFlfkEBz.mjs +1528 -0
  21. package/dist/{index-8xYkohbz.d.mts → index-BSH2bloA.d.mts} +77 -3
  22. package/dist/index-CG712jzV.d.cts +1286 -0
  23. package/dist/index.cjs +188 -0
  24. package/dist/index.d.cts +77 -0
  25. package/dist/index.d.mts +2 -2
  26. package/dist/index.mjs +24 -25
  27. package/dist/layered/index.cjs +38 -0
  28. package/dist/layered/index.d.cts +2 -0
  29. package/dist/layered/index.d.mts +1 -1
  30. package/dist/layered/index.mjs +1 -1
  31. package/dist/{layered-CoeH9LRO.mjs → layered-Bz2nWmVp.mjs} +2261 -47
  32. package/dist/layered-Cf9Rn8l7.cjs +12061 -0
  33. package/dist/layout-engine-BNex9jxg.cjs +712 -0
  34. package/dist/{spore-BtTSZbb6.mjs → layout-engine-WbC0YjjT.mjs} +159 -5
  35. package/dist/public-types-B8rAALJq.d.mts +109 -0
  36. package/dist/public-types-CVB0hXGk.d.cts +109 -0
  37. package/dist/worker-client-D3HMK33r.cjs +98 -0
  38. package/dist/worker-client-DAT_z2OR.d.mts +19 -0
  39. package/dist/worker-client-DVhklF6A.d.cts +19 -0
  40. package/dist/worker-client-DkwS4sHx.mjs +92 -0
  41. package/package.json +39 -9
  42. package/src/authoring/coordinates.ts +106 -0
  43. package/src/authoring/partial.ts +584 -0
  44. package/src/authoring/routing.ts +211 -0
  45. package/src/box.ts +22 -0
  46. package/src/constraints.ts +222 -0
  47. package/src/elkjs/index.ts +100 -37
  48. package/src/elkjs/main.ts +19 -0
  49. package/src/elkjs/public-types.ts +125 -0
  50. package/src/elkjs/worker-api.ts +29 -0
  51. package/src/elkjs/worker-client.ts +138 -0
  52. package/src/elkjs/worker.ts +117 -0
  53. package/src/index.ts +13 -0
  54. package/src/internal/elkjs-compatibility.ts +17 -0
  55. package/src/internal/layout-engine.ts +126 -0
  56. package/src/layered/index.ts +31 -3
  57. package/src/layout.ts +35 -28
  58. package/src/packing.ts +22 -0
  59. package/src/random.ts +75 -3
  60. package/src/types.ts +17 -2
package/dist/index.cjs ADDED
@@ -0,0 +1,188 @@
1
+ const require_layered = require('./layered-Cf9Rn8l7.cjs');
2
+ const require_layout_engine = require('./layout-engine-BNex9jxg.cjs');
3
+ let _statelyai_graph = require("@statelyai/graph");
4
+
5
+ //#region src/layout.ts
6
+ const algorithms = new Map(Object.entries(require_layout_engine.builtInLayoutAlgorithms).map(([id, algorithm]) => [id, algorithm]));
7
+ function supportsScope(algorithm, scope) {
8
+ switch (scope.mode) {
9
+ case "full": return algorithm.capabilities.full;
10
+ case "incremental": return algorithm.capabilities.incremental;
11
+ case "partial": return algorithm.capabilities.partial;
12
+ case "route-only": return algorithm.capabilities.routeOnly;
13
+ }
14
+ }
15
+ function samePoints(a, b) {
16
+ if (a === b) return true;
17
+ if (!a || !b || a.length !== b.length) return false;
18
+ return a.every((point, index) => {
19
+ const other = b[index];
20
+ return other !== void 0 && point.x === other.x && point.y === other.y;
21
+ });
22
+ }
23
+ function getLayoutPatches(input, output) {
24
+ const patches = [];
25
+ const outputNodes = new Map(output.nodes.map((node) => [node.id, node]));
26
+ const outputEdges = new Map(output.edges.map((edge) => [edge.id, edge]));
27
+ for (const node of input.nodes) {
28
+ const next = outputNodes.get(node.id);
29
+ if (!next) continue;
30
+ if (node.x !== next.x || node.y !== next.y || node.width !== next.width || node.height !== next.height || node.ports !== next.ports) patches.push({
31
+ op: "updateNode",
32
+ id: node.id,
33
+ data: {
34
+ ...node.x === next.x ? {} : { x: next.x ?? null },
35
+ ...node.y === next.y ? {} : { y: next.y ?? null },
36
+ ...node.width === next.width ? {} : { width: next.width ?? null },
37
+ ...node.height === next.height ? {} : { height: next.height ?? null },
38
+ ...node.ports === next.ports ? {} : { ports: next.ports ?? null }
39
+ },
40
+ description: "Apply layout geometry"
41
+ });
42
+ }
43
+ for (const edge of input.edges) {
44
+ const next = outputEdges.get(edge.id);
45
+ if (!next) continue;
46
+ if (edge.x !== next.x || edge.y !== next.y || edge.width !== next.width || edge.height !== next.height || edge.routing !== next.routing || !samePoints(edge.points, next.points)) patches.push({
47
+ op: "updateEdge",
48
+ id: edge.id,
49
+ data: {
50
+ ...edge.x === next.x ? {} : { x: next.x ?? null },
51
+ ...edge.y === next.y ? {} : { y: next.y ?? null },
52
+ ...edge.width === next.width ? {} : { width: next.width ?? null },
53
+ ...edge.height === next.height ? {} : { height: next.height ?? null },
54
+ ...edge.routing === next.routing ? {} : { routing: next.routing ?? null },
55
+ ...samePoints(edge.points, next.points) ? {} : { points: next.points ?? null }
56
+ },
57
+ description: "Apply layout geometry"
58
+ });
59
+ }
60
+ return patches;
61
+ }
62
+ /** Register or replace a layout algorithm for subsequent `getLayout` calls. */
63
+ function registerLayoutAlgorithm(algorithm) {
64
+ const previous = algorithms.get(algorithm.id);
65
+ algorithms.set(algorithm.id, algorithm);
66
+ return () => {
67
+ if (previous) algorithms.set(algorithm.id, previous);
68
+ else algorithms.delete(algorithm.id);
69
+ };
70
+ }
71
+ function getLayoutAlgorithm(id) {
72
+ return algorithms.get(id) ?? require_layout_engine.getBuiltInLayoutAlgorithm(id);
73
+ }
74
+ /**
75
+ * Run a registered or inline algorithm against an `@statelyai/graph` graph.
76
+ * The input is not mutated.
77
+ */
78
+ async function getLayout(request) {
79
+ const startedAt = performance.now();
80
+ const scope = request.scope ?? { mode: "full" };
81
+ const diagnostics = [];
82
+ const phases = [];
83
+ const algorithm = typeof request.algorithm === "object" ? request.algorithm : getLayoutAlgorithm(request.algorithm ?? "layered");
84
+ if (!algorithm) throw new require_layered.LayoutError(`Unknown layout algorithm: ${request.algorithm ?? "layered"}`, "UNKNOWN_ALGORITHM");
85
+ if (!supportsScope(algorithm, scope)) throw new require_layered.UnsupportedLayoutError(`${algorithm.id} does not support ${scope.mode} layout yet`);
86
+ if (request.constraints?.length && !algorithm.capabilities.constraints) throw new require_layered.UnsupportedLayoutError(`${algorithm.id} does not support geometry constraints`);
87
+ const issues = (0, _statelyai_graph.getGraphIssues)(request.graph);
88
+ if (issues.length > 0) throw new require_layered.LayoutError(issues.map((issue) => issue.message).join("; "), "INVALID_GRAPH");
89
+ const context = {
90
+ scope,
91
+ constraints: request.constraints,
92
+ diagnostics,
93
+ ...request.signal === void 0 ? {} : { signal: request.signal },
94
+ measurePhase(id, run) {
95
+ const phaseStartedAt = performance.now();
96
+ const record = () => {
97
+ phases.push({
98
+ id,
99
+ durationMs: performance.now() - phaseStartedAt
100
+ });
101
+ };
102
+ try {
103
+ const result = run();
104
+ if (result instanceof Promise) return result.finally(record);
105
+ record();
106
+ return result;
107
+ } catch (error) {
108
+ record();
109
+ throw error;
110
+ }
111
+ },
112
+ throwIfAborted() {
113
+ if (request.signal?.aborted) throw request.signal.reason ?? /* @__PURE__ */ new Error("Layout aborted");
114
+ }
115
+ };
116
+ context.throwIfAborted();
117
+ const graph = await require_layout_engine.executeLayoutAlgorithm({
118
+ algorithm,
119
+ graph: request.graph,
120
+ options: request.options,
121
+ context
122
+ });
123
+ context.throwIfAborted();
124
+ return {
125
+ graph,
126
+ patches: getLayoutPatches(request.graph, graph),
127
+ diagnostics,
128
+ metrics: {
129
+ durationMs: performance.now() - startedAt,
130
+ nodeCount: graph.nodes.length,
131
+ edgeCount: graph.edges.length,
132
+ phases
133
+ }
134
+ };
135
+ }
136
+
137
+ //#endregion
138
+ exports.LayoutError = require_layered.LayoutError;
139
+ exports.UnsupportedLayoutError = require_layered.UnsupportedLayoutError;
140
+ exports.assignLayersByBreadthFirstModelOrder = require_layered.assignLayersByBreadthFirstModelOrder;
141
+ exports.assignLayersByDepthFirstModelOrder = require_layered.assignLayersByDepthFirstModelOrder;
142
+ exports.assignLayersByLongestPath = require_layered.assignLayersByLongestPath;
143
+ exports.assignLayersByLongestPathToSink = require_layered.assignLayersByLongestPathToSink;
144
+ exports.assignLayersInteractively = require_layered.assignLayersInteractively;
145
+ exports.assignLayersWithCoffmanGraham = require_layered.assignLayersWithCoffmanGraham;
146
+ exports.assignLayersWithMinWidth = require_layered.assignLayersWithMinWidth;
147
+ exports.assignLayersWithNetworkSimplex = require_layered.assignLayersWithNetworkSimplex;
148
+ exports.assignLayersWithStretchWidth = require_layered.assignLayersWithStretchWidth;
149
+ exports.boxAlgorithm = require_layout_engine.boxAlgorithm;
150
+ exports.breakCyclesByModelOrder = require_layered.breakCyclesByModelOrder;
151
+ exports.breakCyclesByStronglyConnectedConnectivity = require_layered.breakCyclesByStronglyConnectedConnectivity;
152
+ exports.breakCyclesByStronglyConnectedNodeType = require_layered.breakCyclesByStronglyConnectedNodeType;
153
+ exports.breakCyclesGreedily = require_layered.breakCyclesGreedily;
154
+ exports.breakCyclesGreedilyByModelOrder = require_layered.breakCyclesGreedilyByModelOrder;
155
+ exports.breakCyclesInteractively = require_layered.breakCyclesInteractively;
156
+ exports.breakCyclesWithDepthFirstSearch = require_layered.breakCyclesWithDepthFirstSearch;
157
+ exports.breakCyclesWithModelOrderBreadthFirstSearch = require_layered.breakCyclesWithModelOrderBreadthFirstSearch;
158
+ exports.breakCyclesWithModelOrderDepthFirstSearch = require_layered.breakCyclesWithModelOrderDepthFirstSearch;
159
+ exports.c = require_layered.c;
160
+ exports.elkLayeredEnumValues = require_layered.elkLayeredEnumValues;
161
+ exports.elkLayeredOptionDefinitions = require_layered.elkLayeredOptionDefinitions;
162
+ exports.fixedAlgorithm = require_layout_engine.fixedAlgorithm;
163
+ exports.fromElkLayeredOptionId = require_layered.fromElkLayeredOptionId;
164
+ exports.getBoxLayout = require_layout_engine.getBoxLayout;
165
+ exports.getFixedLayout = require_layout_engine.getFixedLayout;
166
+ exports.getLayeredLayout = require_layered.getLayeredLayout;
167
+ exports.getLayout = getLayout;
168
+ exports.getLayoutAlgorithm = getLayoutAlgorithm;
169
+ exports.getRandomLayout = require_layout_engine.getRandomLayout;
170
+ exports.getRectanglePackingLayout = require_layout_engine.getRectanglePackingLayout;
171
+ exports.getSporeCompactionLayout = require_layout_engine.getSporeCompactionLayout;
172
+ exports.getSporeOverlapRemovalLayout = require_layout_engine.getSporeOverlapRemovalLayout;
173
+ exports.layeredAlgorithm = require_layered.layeredAlgorithm;
174
+ exports.minimizeCrossingsInteractively = require_layered.minimizeCrossingsInteractively;
175
+ exports.minimizeCrossingsWithBarycenter = require_layered.minimizeCrossingsWithBarycenter;
176
+ exports.minimizeCrossingsWithMedian = require_layered.minimizeCrossingsWithMedian;
177
+ exports.minimizeCrossingsWithModelOrder = require_layered.minimizeCrossingsWithModelOrder;
178
+ exports.placeNodesInLayers = require_layered.placeNodesInLayers;
179
+ exports.placeNodesInteractively = require_layered.placeNodesInteractively;
180
+ exports.randomAlgorithm = require_layout_engine.randomAlgorithm;
181
+ exports.rectanglePackingAlgorithm = require_layout_engine.rectanglePackingAlgorithm;
182
+ exports.registerLayoutAlgorithm = registerLayoutAlgorithm;
183
+ exports.routeEdgesOrthogonally = require_layered.routeEdgesOrthogonally;
184
+ exports.routeEdgesWithPolylines = require_layered.routeEdgesWithPolylines;
185
+ exports.routeEdgesWithSplines = require_layered.routeEdgesWithSplines;
186
+ exports.sporeCompactionAlgorithm = require_layout_engine.sporeCompactionAlgorithm;
187
+ exports.sporeOverlapRemovalAlgorithm = require_layout_engine.sporeOverlapRemovalAlgorithm;
188
+ exports.toElkLayeredOptions = require_layered.toElkLayeredOptions;
@@ -0,0 +1,77 @@
1
+ import { $ as LayeringStrategy, A as routeEdgesOrthogonally, B as LayerOrder, C as breakCyclesWithModelOrderDepthFirstSearch, Ct as GeometryReference, D as minimizeCrossingsWithModelOrder, Dt as WaypointConstraint, E as minimizeCrossingsWithMedian, Et as PinConstraint, F as CycleBreaker, G as LayoutPadding, H as LayeredPhaseInput, I as EdgeRouter, J as NodeSize, K as NodePlacement, L as EdgeRoutes, M as routeEdgesWithSplines, N as AcyclicOrientation, O as placeNodesInLayers, Ot as c, P as CrossingMinimizer, Q as LayeredAdvancedOptions, R as LayerAssigner, S as breakCyclesWithModelOrderBreadthFirstSearch, St as GeometryAttribute, T as minimizeCrossingsWithBarycenter, Tt as LinearConstraint, U as LayeredSpacing, V as LayeredLayoutOptions, W as LayeredStrategies, X as CycleBreakingStrategy, Y as CrossingMinimizationStrategy, Z as EdgeRoutingStyle, _ as breakCyclesByStronglyConnectedNodeType, _t as LayoutResult, at as ElkLayeredOptionName, b as breakCyclesInteractively, bt as ConstraintStrength, c as assignLayersWithNetworkSimplex, ct as AnyGraph, d as assignLayersByLongestPath, dt as LayoutDiagnostic, et as NodePlacementStrategy, f as assignLayersByLongestPathToSink, ft as LayoutDirection, g as breakCyclesByStronglyConnectedConnectivity, gt as LayoutRequest, h as breakCyclesByModelOrder, ht as LayoutPhaseMetrics, it as ElkLayeredOptionId, j as routeEdgesWithPolylines, k as placeNodesInteractively, l as assignLayersByBreadthFirstModelOrder, lt as LayoutAlgorithm, m as assignLayersWithCoffmanGraham, mt as LayoutMetrics, n as layeredAlgorithm, nt as toElkLayeredOptions, o as assignLayersWithStretchWidth, ot as ElkLayeredOptionValueByName, p as assignLayersInteractively, pt as LayoutExecutionContext, q as NodePlacer, rt as elkLayeredEnumValues, s as assignLayersWithMinWidth, st as elkLayeredOptionDefinitions, t as getLayeredLayout, tt as fromElkLayeredOptionId, u as assignLayersByDepthFirstModelOrder, ut as LayoutCapabilities, v as breakCyclesGreedily, vt as LayoutScope, w as minimizeCrossingsInteractively, wt as LayoutConstraint, x as breakCyclesWithDepthFirstSearch, xt as DistributeConstraint, y as breakCyclesGreedilyByModelOrder, yt as AlignConstraint, z as LayerAssignment } from "./index-CG712jzV.cjs";
2
+ import { Graph, GraphNode, VisualGraph } from "@statelyai/graph";
3
+ import { LayoutOptions } from "@statelyai/graph/layout";
4
+
5
+ //#region src/errors.d.ts
6
+ declare class LayoutError extends Error {
7
+ readonly code: string;
8
+ constructor(message: string, code: string);
9
+ }
10
+ declare class UnsupportedLayoutError extends LayoutError {
11
+ constructor(message: string);
12
+ }
13
+ //#endregion
14
+ //#region src/box.d.ts
15
+
16
+ interface BoxLayoutOptions extends Pick<LayoutOptions, "direction" | "measure"> {
17
+ spacing?: number;
18
+ padding?: number | Partial<LayoutPadding>;
19
+ aspectRatio?: number;
20
+ interactive?: boolean;
21
+ expandNodes?: boolean;
22
+ priority?: (node: GraphNode) => number | undefined;
23
+ }
24
+ /** ELK Box SIMPLE packing translated onto `@statelyai/graph`. */
25
+ declare function getBoxLayout<N, E, G, P>(graph: Graph<N, E, G, P> | VisualGraph<N, E, G, P>, options?: BoxLayoutOptions): VisualGraph<N, E, G, P>;
26
+ declare const boxAlgorithm: LayoutAlgorithm<BoxLayoutOptions>;
27
+ //#endregion
28
+ //#region src/fixed.d.ts
29
+ interface FixedLayoutOptions extends Pick<LayoutOptions, "direction" | "measure"> {}
30
+ /** Preserve authored positions and routes while completing visual geometry. */
31
+ declare function getFixedLayout<N, E, G, P>(graph: Graph<N, E, G, P> | VisualGraph<N, E, G, P>, options?: FixedLayoutOptions): VisualGraph<N, E, G, P>;
32
+ declare const fixedAlgorithm: LayoutAlgorithm<FixedLayoutOptions>;
33
+ //#endregion
34
+ //#region src/packing.d.ts
35
+ interface RectanglePackingLayoutOptions extends Pick<LayoutOptions, "direction" | "measure"> {
36
+ spacing?: number;
37
+ padding?: number | Partial<LayoutPadding>;
38
+ targetWidth?: number;
39
+ }
40
+ /** Deterministic shelf-based rectangle packing for `@statelyai/graph`. */
41
+ declare function getRectanglePackingLayout<N, E, G, P>(graph: Graph<N, E, G, P> | VisualGraph<N, E, G, P>, options?: RectanglePackingLayoutOptions): VisualGraph<N, E, G, P>;
42
+ declare const rectanglePackingAlgorithm: LayoutAlgorithm<RectanglePackingLayoutOptions>;
43
+ //#endregion
44
+ //#region src/random.d.ts
45
+ interface RandomLayoutOptions extends Pick<LayoutOptions, "direction" | "measure"> {
46
+ spacing?: number;
47
+ padding?: number | Partial<LayoutPadding>;
48
+ aspectRatio?: number;
49
+ seed?: number;
50
+ }
51
+ /** Seeded random distribution using Java's 48-bit `Random` sequence. */
52
+ declare function getRandomLayout<N, E, G, P>(graph: Graph<N, E, G, P> | VisualGraph<N, E, G, P>, options?: RandomLayoutOptions): VisualGraph<N, E, G, P>;
53
+ declare const randomAlgorithm: LayoutAlgorithm<RandomLayoutOptions>;
54
+ //#endregion
55
+ //#region src/spore.d.ts
56
+ interface SporeLayoutOptions extends Pick<LayoutOptions, "direction" | "measure"> {
57
+ spacing?: number;
58
+ padding?: number | Partial<LayoutPadding>;
59
+ }
60
+ /** Compact an existing layout while preserving its relative directions. */
61
+ declare function getSporeCompactionLayout<N, E, G, P>(graph: Graph<N, E, G, P> | VisualGraph<N, E, G, P>, options?: SporeLayoutOptions): VisualGraph<N, E, G, P>;
62
+ /** Remove overlap while preserving existing distances that already fit. */
63
+ declare function getSporeOverlapRemovalLayout<N, E, G, P>(graph: Graph<N, E, G, P> | VisualGraph<N, E, G, P>, options?: SporeLayoutOptions): VisualGraph<N, E, G, P>;
64
+ declare const sporeCompactionAlgorithm: LayoutAlgorithm<SporeLayoutOptions>;
65
+ declare const sporeOverlapRemovalAlgorithm: LayoutAlgorithm<SporeLayoutOptions>;
66
+ //#endregion
67
+ //#region src/layout.d.ts
68
+ /** Register or replace a layout algorithm for subsequent `getLayout` calls. */
69
+ declare function registerLayoutAlgorithm<O>(algorithm: LayoutAlgorithm<O>): () => void;
70
+ declare function getLayoutAlgorithm(id: string): LayoutAlgorithm<unknown> | undefined;
71
+ /**
72
+ * Run a registered or inline algorithm against an `@statelyai/graph` graph.
73
+ * The input is not mutated.
74
+ */
75
+ declare function getLayout<N, E, G, P, O = unknown>(request: LayoutRequest<N, E, G, P, O>): Promise<LayoutResult<N, E, G, P>>;
76
+ //#endregion
77
+ export { type AcyclicOrientation, type AlignConstraint, type AnyGraph, type BoxLayoutOptions, type ConstraintStrength, type CrossingMinimizationStrategy, type CrossingMinimizer, type CycleBreaker, type CycleBreakingStrategy, type DistributeConstraint, type EdgeRouter, type EdgeRoutes, type EdgeRoutingStyle, type ElkLayeredOptionId, type ElkLayeredOptionName, type ElkLayeredOptionValueByName, type FixedLayoutOptions, type GeometryAttribute, type GeometryReference, type LayerAssigner, type LayerAssignment, type LayerOrder, type LayeredAdvancedOptions, type LayeredLayoutOptions, type LayeredPhaseInput, type LayeredSpacing, type LayeredStrategies, type LayeringStrategy, type LayoutAlgorithm, type LayoutCapabilities, type LayoutConstraint, type LayoutDiagnostic, type LayoutDirection, LayoutError, type LayoutExecutionContext, type LayoutMetrics, type LayoutPadding, type LayoutPhaseMetrics, type LayoutRequest, type LayoutResult, type LayoutScope, type LinearConstraint, type NodePlacement, type NodePlacementStrategy, type NodePlacer, type NodeSize, type PinConstraint, type RandomLayoutOptions, type RectanglePackingLayoutOptions, type SporeLayoutOptions, UnsupportedLayoutError, type WaypointConstraint, assignLayersByBreadthFirstModelOrder, assignLayersByDepthFirstModelOrder, assignLayersByLongestPath, assignLayersByLongestPathToSink, assignLayersInteractively, assignLayersWithCoffmanGraham, assignLayersWithMinWidth, assignLayersWithNetworkSimplex, assignLayersWithStretchWidth, boxAlgorithm, breakCyclesByModelOrder, breakCyclesByStronglyConnectedConnectivity, breakCyclesByStronglyConnectedNodeType, breakCyclesGreedily, breakCyclesGreedilyByModelOrder, breakCyclesInteractively, breakCyclesWithDepthFirstSearch, breakCyclesWithModelOrderBreadthFirstSearch, breakCyclesWithModelOrderDepthFirstSearch, c, elkLayeredEnumValues, elkLayeredOptionDefinitions, fixedAlgorithm, fromElkLayeredOptionId, getBoxLayout, getFixedLayout, getLayeredLayout, getLayout, getLayoutAlgorithm, getRandomLayout, getRectanglePackingLayout, getSporeCompactionLayout, getSporeOverlapRemovalLayout, layeredAlgorithm, minimizeCrossingsInteractively, minimizeCrossingsWithBarycenter, minimizeCrossingsWithMedian, minimizeCrossingsWithModelOrder, placeNodesInLayers, placeNodesInteractively, randomAlgorithm, rectanglePackingAlgorithm, registerLayoutAlgorithm, routeEdgesOrthogonally, routeEdgesWithPolylines, routeEdgesWithSplines, sporeCompactionAlgorithm, sporeOverlapRemovalAlgorithm, toElkLayeredOptions };
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as LayeringStrategy, A as routeEdgesOrthogonally, B as LayerOrder, C as breakCyclesWithModelOrderDepthFirstSearch, D as minimizeCrossingsWithModelOrder, E as minimizeCrossingsWithMedian, F as CycleBreaker, G as LayoutPadding, H as LayeredPhaseInput, I as EdgeRouter, J as NodeSize, K as NodePlacement, L as EdgeRoutes, M as routeEdgesWithSplines, N as AcyclicOrientation, O as placeNodesInLayers, P as CrossingMinimizer, Q as LayeredAdvancedOptions, R as LayerAssigner, S as breakCyclesWithModelOrderBreadthFirstSearch, T as minimizeCrossingsWithBarycenter, U as LayeredSpacing, V as LayeredLayoutOptions, W as LayeredStrategies, X as CycleBreakingStrategy, Y as CrossingMinimizationStrategy, Z as EdgeRoutingStyle, _ as breakCyclesByStronglyConnectedNodeType, _t as LayoutResult, at as ElkLayeredOptionName, b as breakCyclesInteractively, c as assignLayersWithNetworkSimplex, ct as AnyGraph, d as assignLayersByLongestPath, dt as LayoutDiagnostic, et as NodePlacementStrategy, f as assignLayersByLongestPathToSink, ft as LayoutDirection, g as breakCyclesByStronglyConnectedConnectivity, gt as LayoutRequest, h as breakCyclesByModelOrder, ht as LayoutPhaseMetrics, it as ElkLayeredOptionId, j as routeEdgesWithPolylines, k as placeNodesInteractively, l as assignLayersByBreadthFirstModelOrder, lt as LayoutAlgorithm, m as assignLayersWithCoffmanGraham, mt as LayoutMetrics, n as layeredAlgorithm, nt as toElkLayeredOptions, o as assignLayersWithStretchWidth, ot as ElkLayeredOptionValueByName, p as assignLayersInteractively, pt as LayoutExecutionContext, q as NodePlacer, rt as elkLayeredEnumValues, s as assignLayersWithMinWidth, st as elkLayeredOptionDefinitions, t as getLayeredLayout, tt as fromElkLayeredOptionId, u as assignLayersByDepthFirstModelOrder, ut as LayoutCapabilities, v as breakCyclesGreedily, vt as LayoutScope, w as minimizeCrossingsInteractively, x as breakCyclesWithDepthFirstSearch, y as breakCyclesGreedilyByModelOrder, z as LayerAssignment } from "./index-8xYkohbz.mjs";
1
+ import { $ as LayeringStrategy, A as routeEdgesOrthogonally, B as LayerOrder, C as breakCyclesWithModelOrderDepthFirstSearch, Ct as GeometryReference, D as minimizeCrossingsWithModelOrder, Dt as WaypointConstraint, E as minimizeCrossingsWithMedian, Et as PinConstraint, F as CycleBreaker, G as LayoutPadding, H as LayeredPhaseInput, I as EdgeRouter, J as NodeSize, K as NodePlacement, L as EdgeRoutes, M as routeEdgesWithSplines, N as AcyclicOrientation, O as placeNodesInLayers, Ot as c, P as CrossingMinimizer, Q as LayeredAdvancedOptions, R as LayerAssigner, S as breakCyclesWithModelOrderBreadthFirstSearch, St as GeometryAttribute, T as minimizeCrossingsWithBarycenter, Tt as LinearConstraint, U as LayeredSpacing, V as LayeredLayoutOptions, W as LayeredStrategies, X as CycleBreakingStrategy, Y as CrossingMinimizationStrategy, Z as EdgeRoutingStyle, _ as breakCyclesByStronglyConnectedNodeType, _t as LayoutResult, at as ElkLayeredOptionName, b as breakCyclesInteractively, bt as ConstraintStrength, c as assignLayersWithNetworkSimplex, ct as AnyGraph, d as assignLayersByLongestPath, dt as LayoutDiagnostic, et as NodePlacementStrategy, f as assignLayersByLongestPathToSink, ft as LayoutDirection, g as breakCyclesByStronglyConnectedConnectivity, gt as LayoutRequest, h as breakCyclesByModelOrder, ht as LayoutPhaseMetrics, it as ElkLayeredOptionId, j as routeEdgesWithPolylines, k as placeNodesInteractively, l as assignLayersByBreadthFirstModelOrder, lt as LayoutAlgorithm, m as assignLayersWithCoffmanGraham, mt as LayoutMetrics, n as layeredAlgorithm, nt as toElkLayeredOptions, o as assignLayersWithStretchWidth, ot as ElkLayeredOptionValueByName, p as assignLayersInteractively, pt as LayoutExecutionContext, q as NodePlacer, rt as elkLayeredEnumValues, s as assignLayersWithMinWidth, st as elkLayeredOptionDefinitions, t as getLayeredLayout, tt as fromElkLayeredOptionId, u as assignLayersByDepthFirstModelOrder, ut as LayoutCapabilities, v as breakCyclesGreedily, vt as LayoutScope, w as minimizeCrossingsInteractively, wt as LayoutConstraint, x as breakCyclesWithDepthFirstSearch, xt as DistributeConstraint, y as breakCyclesGreedilyByModelOrder, yt as AlignConstraint, z as LayerAssignment } from "./index-BSH2bloA.mjs";
2
2
  import { LayoutOptions } from "@statelyai/graph/layout";
3
3
  import { Graph, GraphNode, VisualGraph } from "@statelyai/graph";
4
4
 
@@ -74,4 +74,4 @@ declare function getLayoutAlgorithm(id: string): LayoutAlgorithm<unknown> | unde
74
74
  */
75
75
  declare function getLayout<N, E, G, P, O = unknown>(request: LayoutRequest<N, E, G, P, O>): Promise<LayoutResult<N, E, G, P>>;
76
76
  //#endregion
77
- export { type AcyclicOrientation, type AnyGraph, type BoxLayoutOptions, type CrossingMinimizationStrategy, type CrossingMinimizer, type CycleBreaker, type CycleBreakingStrategy, type EdgeRouter, type EdgeRoutes, type EdgeRoutingStyle, type ElkLayeredOptionId, type ElkLayeredOptionName, type ElkLayeredOptionValueByName, type FixedLayoutOptions, type LayerAssigner, type LayerAssignment, type LayerOrder, type LayeredAdvancedOptions, type LayeredLayoutOptions, type LayeredPhaseInput, type LayeredSpacing, type LayeredStrategies, type LayeringStrategy, type LayoutAlgorithm, type LayoutCapabilities, type LayoutDiagnostic, type LayoutDirection, LayoutError, type LayoutExecutionContext, type LayoutMetrics, type LayoutPadding, type LayoutPhaseMetrics, type LayoutRequest, type LayoutResult, type LayoutScope, type NodePlacement, type NodePlacementStrategy, type NodePlacer, type NodeSize, type RandomLayoutOptions, type RectanglePackingLayoutOptions, type SporeLayoutOptions, UnsupportedLayoutError, assignLayersByBreadthFirstModelOrder, assignLayersByDepthFirstModelOrder, assignLayersByLongestPath, assignLayersByLongestPathToSink, assignLayersInteractively, assignLayersWithCoffmanGraham, assignLayersWithMinWidth, assignLayersWithNetworkSimplex, assignLayersWithStretchWidth, boxAlgorithm, breakCyclesByModelOrder, breakCyclesByStronglyConnectedConnectivity, breakCyclesByStronglyConnectedNodeType, breakCyclesGreedily, breakCyclesGreedilyByModelOrder, breakCyclesInteractively, breakCyclesWithDepthFirstSearch, breakCyclesWithModelOrderBreadthFirstSearch, breakCyclesWithModelOrderDepthFirstSearch, elkLayeredEnumValues, elkLayeredOptionDefinitions, fixedAlgorithm, fromElkLayeredOptionId, getBoxLayout, getFixedLayout, getLayeredLayout, getLayout, getLayoutAlgorithm, getRandomLayout, getRectanglePackingLayout, getSporeCompactionLayout, getSporeOverlapRemovalLayout, layeredAlgorithm, minimizeCrossingsInteractively, minimizeCrossingsWithBarycenter, minimizeCrossingsWithMedian, minimizeCrossingsWithModelOrder, placeNodesInLayers, placeNodesInteractively, randomAlgorithm, rectanglePackingAlgorithm, registerLayoutAlgorithm, routeEdgesOrthogonally, routeEdgesWithPolylines, routeEdgesWithSplines, sporeCompactionAlgorithm, sporeOverlapRemovalAlgorithm, toElkLayeredOptions };
77
+ export { type AcyclicOrientation, type AlignConstraint, type AnyGraph, type BoxLayoutOptions, type ConstraintStrength, type CrossingMinimizationStrategy, type CrossingMinimizer, type CycleBreaker, type CycleBreakingStrategy, type DistributeConstraint, type EdgeRouter, type EdgeRoutes, type EdgeRoutingStyle, type ElkLayeredOptionId, type ElkLayeredOptionName, type ElkLayeredOptionValueByName, type FixedLayoutOptions, type GeometryAttribute, type GeometryReference, type LayerAssigner, type LayerAssignment, type LayerOrder, type LayeredAdvancedOptions, type LayeredLayoutOptions, type LayeredPhaseInput, type LayeredSpacing, type LayeredStrategies, type LayeringStrategy, type LayoutAlgorithm, type LayoutCapabilities, type LayoutConstraint, type LayoutDiagnostic, type LayoutDirection, LayoutError, type LayoutExecutionContext, type LayoutMetrics, type LayoutPadding, type LayoutPhaseMetrics, type LayoutRequest, type LayoutResult, type LayoutScope, type LinearConstraint, type NodePlacement, type NodePlacementStrategy, type NodePlacer, type NodeSize, type PinConstraint, type RandomLayoutOptions, type RectanglePackingLayoutOptions, type SporeLayoutOptions, UnsupportedLayoutError, type WaypointConstraint, assignLayersByBreadthFirstModelOrder, assignLayersByDepthFirstModelOrder, assignLayersByLongestPath, assignLayersByLongestPathToSink, assignLayersInteractively, assignLayersWithCoffmanGraham, assignLayersWithMinWidth, assignLayersWithNetworkSimplex, assignLayersWithStretchWidth, boxAlgorithm, breakCyclesByModelOrder, breakCyclesByStronglyConnectedConnectivity, breakCyclesByStronglyConnectedNodeType, breakCyclesGreedily, breakCyclesGreedilyByModelOrder, breakCyclesInteractively, breakCyclesWithDepthFirstSearch, breakCyclesWithModelOrderBreadthFirstSearch, breakCyclesWithModelOrderDepthFirstSearch, c, elkLayeredEnumValues, elkLayeredOptionDefinitions, fixedAlgorithm, fromElkLayeredOptionId, getBoxLayout, getFixedLayout, getLayeredLayout, getLayout, getLayoutAlgorithm, getRandomLayout, getRectanglePackingLayout, getSporeCompactionLayout, getSporeOverlapRemovalLayout, layeredAlgorithm, minimizeCrossingsInteractively, minimizeCrossingsWithBarycenter, minimizeCrossingsWithMedian, minimizeCrossingsWithModelOrder, placeNodesInLayers, placeNodesInteractively, randomAlgorithm, rectanglePackingAlgorithm, registerLayoutAlgorithm, routeEdgesOrthogonally, routeEdgesWithPolylines, routeEdgesWithSplines, sporeCompactionAlgorithm, sporeOverlapRemovalAlgorithm, toElkLayeredOptions };
package/dist/index.mjs CHANGED
@@ -1,17 +1,9 @@
1
- import { A as minimizeCrossingsWithBarycenter, B as LayoutError, C as breakCyclesGreedilyByModelOrder, D as breakCyclesWithModelOrderDepthFirstSearch, E as breakCyclesWithModelOrderBreadthFirstSearch, I as routeEdgesOrthogonally, L as routeEdgesWithPolylines, M as minimizeCrossingsWithModelOrder, N as placeNodesInLayers, P as placeNodesInteractively, R as routeEdgesWithSplines, S as breakCyclesGreedily, T as breakCyclesWithDepthFirstSearch, V as UnsupportedLayoutError, _ as assignLayersInteractively, a as elkLayeredEnumValues, b as breakCyclesByStronglyConnectedConnectivity, d as assignLayersWithMinWidth, f as assignLayersWithNetworkSimplex, g as assignLayersByLongestPathToSink, h as assignLayersByLongestPath, i as toElkLayeredOptions, j as minimizeCrossingsWithMedian, k as minimizeCrossingsInteractively, m as assignLayersByDepthFirstModelOrder, n as layeredAlgorithm, o as elkLayeredOptionDefinitions, p as assignLayersByBreadthFirstModelOrder, r as fromElkLayeredOptionId, t as getLayeredLayout, u as assignLayersWithStretchWidth, v as assignLayersWithCoffmanGraham, w as breakCyclesInteractively, x as breakCyclesByStronglyConnectedNodeType, y as breakCyclesByModelOrder } from "./layered-CoeH9LRO.mjs";
2
- import { a as getRandomLayout, c as rectanglePackingAlgorithm, d as fixedAlgorithm, f as getFixedLayout, i as sporeOverlapRemovalAlgorithm, l as boxAlgorithm, n as getSporeOverlapRemovalLayout, o as randomAlgorithm, r as sporeCompactionAlgorithm, s as getRectanglePackingLayout, t as getSporeCompactionLayout, u as getBoxLayout } from "./spore-BtTSZbb6.mjs";
1
+ import { A as minimizeCrossingsInteractively, C as breakCyclesGreedily, D as breakCyclesWithModelOrderBreadthFirstSearch, E as breakCyclesWithDepthFirstSearch, F as placeNodesInteractively, H as UnsupportedLayoutError, L as routeEdgesOrthogonally, M as minimizeCrossingsWithMedian, N as minimizeCrossingsWithModelOrder, O as breakCyclesWithModelOrderDepthFirstSearch, P as placeNodesInLayers, R as routeEdgesWithPolylines, S as breakCyclesByStronglyConnectedNodeType, T as breakCyclesInteractively, V as LayoutError, _ as assignLayersByLongestPathToSink, a as elkLayeredEnumValues, b as breakCyclesByModelOrder, d as assignLayersWithMinWidth, f as assignLayersWithNetworkSimplex, g as assignLayersByLongestPath, h as assignLayersByDepthFirstModelOrder, i as toElkLayeredOptions, j as minimizeCrossingsWithBarycenter, m as assignLayersByBreadthFirstModelOrder, n as layeredAlgorithm, o as elkLayeredOptionDefinitions, p as c, r as fromElkLayeredOptionId, t as getLayeredLayout, u as assignLayersWithStretchWidth, v as assignLayersInteractively, w as breakCyclesGreedilyByModelOrder, x as breakCyclesByStronglyConnectedConnectivity, y as assignLayersWithCoffmanGraham, z as routeEdgesWithSplines } from "./layered-Bz2nWmVp.mjs";
2
+ import { _ as getFixedLayout, a as getSporeCompactionLayout, c as sporeOverlapRemovalAlgorithm, d as getRectanglePackingLayout, f as rectanglePackingAlgorithm, g as fixedAlgorithm, i as getBuiltInLayoutAlgorithm, l as getRandomLayout, m as getBoxLayout, o as getSporeOverlapRemovalLayout, p as boxAlgorithm, r as executeLayoutAlgorithm, s as sporeCompactionAlgorithm, t as builtInLayoutAlgorithms, u as randomAlgorithm } from "./layout-engine-WbC0YjjT.mjs";
3
3
  import { getGraphIssues } from "@statelyai/graph";
4
4
 
5
5
  //#region src/layout.ts
6
- const algorithms = new Map([
7
- ["box", boxAlgorithm],
8
- ["layered", layeredAlgorithm],
9
- ["fixed", fixedAlgorithm],
10
- ["rectpacking", rectanglePackingAlgorithm],
11
- ["random", randomAlgorithm],
12
- ["sporeCompaction", sporeCompactionAlgorithm],
13
- ["sporeOverlap", sporeOverlapRemovalAlgorithm]
14
- ]);
6
+ const algorithms = new Map(Object.entries(builtInLayoutAlgorithms).map(([id, algorithm]) => [id, algorithm]));
15
7
  function supportsScope(algorithm, scope) {
16
8
  switch (scope.mode) {
17
9
  case "full": return algorithm.capabilities.full;
@@ -39,11 +31,11 @@ function getLayoutPatches(input, output) {
39
31
  op: "updateNode",
40
32
  id: node.id,
41
33
  data: {
42
- x: next.x,
43
- y: next.y,
44
- width: next.width,
45
- height: next.height,
46
- ...next.ports === void 0 ? {} : { ports: next.ports }
34
+ ...node.x === next.x ? {} : { x: next.x ?? null },
35
+ ...node.y === next.y ? {} : { y: next.y ?? null },
36
+ ...node.width === next.width ? {} : { width: next.width ?? null },
37
+ ...node.height === next.height ? {} : { height: next.height ?? null },
38
+ ...node.ports === next.ports ? {} : { ports: next.ports ?? null }
47
39
  },
48
40
  description: "Apply layout geometry"
49
41
  });
@@ -55,12 +47,12 @@ function getLayoutPatches(input, output) {
55
47
  op: "updateEdge",
56
48
  id: edge.id,
57
49
  data: {
58
- x: next.x,
59
- y: next.y,
60
- width: next.width,
61
- height: next.height,
62
- ...next.routing === void 0 ? {} : { routing: next.routing },
63
- ...next.points === void 0 ? {} : { points: next.points }
50
+ ...edge.x === next.x ? {} : { x: next.x ?? null },
51
+ ...edge.y === next.y ? {} : { y: next.y ?? null },
52
+ ...edge.width === next.width ? {} : { width: next.width ?? null },
53
+ ...edge.height === next.height ? {} : { height: next.height ?? null },
54
+ ...edge.routing === next.routing ? {} : { routing: next.routing ?? null },
55
+ ...samePoints(edge.points, next.points) ? {} : { points: next.points ?? null }
64
56
  },
65
57
  description: "Apply layout geometry"
66
58
  });
@@ -77,7 +69,7 @@ function registerLayoutAlgorithm(algorithm) {
77
69
  };
78
70
  }
79
71
  function getLayoutAlgorithm(id) {
80
- return algorithms.get(id);
72
+ return algorithms.get(id) ?? getBuiltInLayoutAlgorithm(id);
81
73
  }
82
74
  /**
83
75
  * Run a registered or inline algorithm against an `@statelyai/graph` graph.
@@ -91,10 +83,12 @@ async function getLayout(request) {
91
83
  const algorithm = typeof request.algorithm === "object" ? request.algorithm : getLayoutAlgorithm(request.algorithm ?? "layered");
92
84
  if (!algorithm) throw new LayoutError(`Unknown layout algorithm: ${request.algorithm ?? "layered"}`, "UNKNOWN_ALGORITHM");
93
85
  if (!supportsScope(algorithm, scope)) throw new UnsupportedLayoutError(`${algorithm.id} does not support ${scope.mode} layout yet`);
86
+ if (request.constraints?.length && !algorithm.capabilities.constraints) throw new UnsupportedLayoutError(`${algorithm.id} does not support geometry constraints`);
94
87
  const issues = getGraphIssues(request.graph);
95
88
  if (issues.length > 0) throw new LayoutError(issues.map((issue) => issue.message).join("; "), "INVALID_GRAPH");
96
89
  const context = {
97
90
  scope,
91
+ constraints: request.constraints,
98
92
  diagnostics,
99
93
  ...request.signal === void 0 ? {} : { signal: request.signal },
100
94
  measurePhase(id, run) {
@@ -120,7 +114,12 @@ async function getLayout(request) {
120
114
  }
121
115
  };
122
116
  context.throwIfAborted();
123
- const graph = await algorithm.layout(request.graph, request.options, context);
117
+ const graph = await executeLayoutAlgorithm({
118
+ algorithm,
119
+ graph: request.graph,
120
+ options: request.options,
121
+ context
122
+ });
124
123
  context.throwIfAborted();
125
124
  return {
126
125
  graph,
@@ -136,4 +135,4 @@ async function getLayout(request) {
136
135
  }
137
136
 
138
137
  //#endregion
139
- export { LayoutError, UnsupportedLayoutError, assignLayersByBreadthFirstModelOrder, assignLayersByDepthFirstModelOrder, assignLayersByLongestPath, assignLayersByLongestPathToSink, assignLayersInteractively, assignLayersWithCoffmanGraham, assignLayersWithMinWidth, assignLayersWithNetworkSimplex, assignLayersWithStretchWidth, boxAlgorithm, breakCyclesByModelOrder, breakCyclesByStronglyConnectedConnectivity, breakCyclesByStronglyConnectedNodeType, breakCyclesGreedily, breakCyclesGreedilyByModelOrder, breakCyclesInteractively, breakCyclesWithDepthFirstSearch, breakCyclesWithModelOrderBreadthFirstSearch, breakCyclesWithModelOrderDepthFirstSearch, elkLayeredEnumValues, elkLayeredOptionDefinitions, fixedAlgorithm, fromElkLayeredOptionId, getBoxLayout, getFixedLayout, getLayeredLayout, getLayout, getLayoutAlgorithm, getRandomLayout, getRectanglePackingLayout, getSporeCompactionLayout, getSporeOverlapRemovalLayout, layeredAlgorithm, minimizeCrossingsInteractively, minimizeCrossingsWithBarycenter, minimizeCrossingsWithMedian, minimizeCrossingsWithModelOrder, placeNodesInLayers, placeNodesInteractively, randomAlgorithm, rectanglePackingAlgorithm, registerLayoutAlgorithm, routeEdgesOrthogonally, routeEdgesWithPolylines, routeEdgesWithSplines, sporeCompactionAlgorithm, sporeOverlapRemovalAlgorithm, toElkLayeredOptions };
138
+ export { LayoutError, UnsupportedLayoutError, assignLayersByBreadthFirstModelOrder, assignLayersByDepthFirstModelOrder, assignLayersByLongestPath, assignLayersByLongestPathToSink, assignLayersInteractively, assignLayersWithCoffmanGraham, assignLayersWithMinWidth, assignLayersWithNetworkSimplex, assignLayersWithStretchWidth, boxAlgorithm, breakCyclesByModelOrder, breakCyclesByStronglyConnectedConnectivity, breakCyclesByStronglyConnectedNodeType, breakCyclesGreedily, breakCyclesGreedilyByModelOrder, breakCyclesInteractively, breakCyclesWithDepthFirstSearch, breakCyclesWithModelOrderBreadthFirstSearch, breakCyclesWithModelOrderDepthFirstSearch, c, elkLayeredEnumValues, elkLayeredOptionDefinitions, fixedAlgorithm, fromElkLayeredOptionId, getBoxLayout, getFixedLayout, getLayeredLayout, getLayout, getLayoutAlgorithm, getRandomLayout, getRectanglePackingLayout, getSporeCompactionLayout, getSporeOverlapRemovalLayout, layeredAlgorithm, minimizeCrossingsInteractively, minimizeCrossingsWithBarycenter, minimizeCrossingsWithMedian, minimizeCrossingsWithModelOrder, placeNodesInLayers, placeNodesInteractively, randomAlgorithm, rectanglePackingAlgorithm, registerLayoutAlgorithm, routeEdgesOrthogonally, routeEdgesWithPolylines, routeEdgesWithSplines, sporeCompactionAlgorithm, sporeOverlapRemovalAlgorithm, toElkLayeredOptions };
@@ -0,0 +1,38 @@
1
+ const require_layered = require('../layered-Cf9Rn8l7.cjs');
2
+
3
+ exports.assignLayersByBreadthFirstModelOrder = require_layered.assignLayersByBreadthFirstModelOrder;
4
+ exports.assignLayersByDepthFirstModelOrder = require_layered.assignLayersByDepthFirstModelOrder;
5
+ exports.assignLayersByLongestPath = require_layered.assignLayersByLongestPath;
6
+ exports.assignLayersByLongestPathToSink = require_layered.assignLayersByLongestPathToSink;
7
+ exports.assignLayersInteractively = require_layered.assignLayersInteractively;
8
+ exports.assignLayersWithCoffmanGraham = require_layered.assignLayersWithCoffmanGraham;
9
+ exports.assignLayersWithMinWidth = require_layered.assignLayersWithMinWidth;
10
+ exports.assignLayersWithNetworkSimplex = require_layered.assignLayersWithNetworkSimplex;
11
+ exports.assignLayersWithStretchWidth = require_layered.assignLayersWithStretchWidth;
12
+ exports.breakCyclesByModelOrder = require_layered.breakCyclesByModelOrder;
13
+ exports.breakCyclesByStronglyConnectedConnectivity = require_layered.breakCyclesByStronglyConnectedConnectivity;
14
+ exports.breakCyclesByStronglyConnectedNodeType = require_layered.breakCyclesByStronglyConnectedNodeType;
15
+ exports.breakCyclesGreedily = require_layered.breakCyclesGreedily;
16
+ exports.breakCyclesGreedilyByModelOrder = require_layered.breakCyclesGreedilyByModelOrder;
17
+ exports.breakCyclesInteractively = require_layered.breakCyclesInteractively;
18
+ exports.breakCyclesWithDepthFirstSearch = require_layered.breakCyclesWithDepthFirstSearch;
19
+ exports.breakCyclesWithModelOrderBreadthFirstSearch = require_layered.breakCyclesWithModelOrderBreadthFirstSearch;
20
+ exports.breakCyclesWithModelOrderDepthFirstSearch = require_layered.breakCyclesWithModelOrderDepthFirstSearch;
21
+ exports.elkLayeredEnumValues = require_layered.elkLayeredEnumValues;
22
+ exports.elkLayeredOptionDefinitions = require_layered.elkLayeredOptionDefinitions;
23
+ exports.fromElkLayeredOptionId = require_layered.fromElkLayeredOptionId;
24
+ exports.getLayeredLayout = require_layered.getLayeredLayout;
25
+ exports.layeredAlgorithm = require_layered.layeredAlgorithm;
26
+ exports.minimizeCrossingsInteractively = require_layered.minimizeCrossingsInteractively;
27
+ exports.minimizeCrossingsWithBarycenter = require_layered.minimizeCrossingsWithBarycenter;
28
+ exports.minimizeCrossingsWithMedian = require_layered.minimizeCrossingsWithMedian;
29
+ exports.minimizeCrossingsWithModelOrder = require_layered.minimizeCrossingsWithModelOrder;
30
+ exports.placeNodesInLayers = require_layered.placeNodesInLayers;
31
+ exports.placeNodesInteractively = require_layered.placeNodesInteractively;
32
+ exports.placeNodesWithBrandesKoepf = require_layered.placeNodesWithBrandesKoepf;
33
+ exports.placeNodesWithLinearSegments = require_layered.placeNodesWithLinearSegments;
34
+ exports.placeNodesWithNetworkSimplex = require_layered.placeNodesWithNetworkSimplex;
35
+ exports.routeEdgesOrthogonally = require_layered.routeEdgesOrthogonally;
36
+ exports.routeEdgesWithPolylines = require_layered.routeEdgesWithPolylines;
37
+ exports.routeEdgesWithSplines = require_layered.routeEdgesWithSplines;
38
+ exports.toElkLayeredOptions = require_layered.toElkLayeredOptions;
@@ -0,0 +1,2 @@
1
+ import { $ as LayeringStrategy, A as routeEdgesOrthogonally, B as LayerOrder, C as breakCyclesWithModelOrderDepthFirstSearch, D as minimizeCrossingsWithModelOrder, E as minimizeCrossingsWithMedian, F as CycleBreaker, G as LayoutPadding, H as LayeredPhaseInput, I as EdgeRouter, J as NodeSize, K as NodePlacement, L as EdgeRoutes, M as routeEdgesWithSplines, N as AcyclicOrientation, O as placeNodesInLayers, P as CrossingMinimizer, Q as LayeredAdvancedOptions, R as LayerAssigner, S as breakCyclesWithModelOrderBreadthFirstSearch, T as minimizeCrossingsWithBarycenter, U as LayeredSpacing, V as LayeredLayoutOptions, W as LayeredStrategies, X as CycleBreakingStrategy, Y as CrossingMinimizationStrategy, Z as EdgeRoutingStyle, _ as breakCyclesByStronglyConnectedNodeType, a as placeNodesWithBrandesKoepf, at as ElkLayeredOptionName, b as breakCyclesInteractively, c as assignLayersWithNetworkSimplex, d as assignLayersByLongestPath, et as NodePlacementStrategy, f as assignLayersByLongestPathToSink, g as breakCyclesByStronglyConnectedConnectivity, h as breakCyclesByModelOrder, i as placeNodesWithLinearSegments, it as ElkLayeredOptionId, j as routeEdgesWithPolylines, k as placeNodesInteractively, l as assignLayersByBreadthFirstModelOrder, m as assignLayersWithCoffmanGraham, n as layeredAlgorithm, nt as toElkLayeredOptions, o as assignLayersWithStretchWidth, ot as ElkLayeredOptionValueByName, p as assignLayersInteractively, q as NodePlacer, r as placeNodesWithNetworkSimplex, rt as elkLayeredEnumValues, s as assignLayersWithMinWidth, st as elkLayeredOptionDefinitions, t as getLayeredLayout, tt as fromElkLayeredOptionId, u as assignLayersByDepthFirstModelOrder, v as breakCyclesGreedily, w as minimizeCrossingsInteractively, x as breakCyclesWithDepthFirstSearch, y as breakCyclesGreedilyByModelOrder, z as LayerAssignment } from "../index-CG712jzV.cjs";
2
+ export { AcyclicOrientation, CrossingMinimizationStrategy, CrossingMinimizer, CycleBreaker, CycleBreakingStrategy, EdgeRouter, EdgeRoutes, EdgeRoutingStyle, ElkLayeredOptionId, ElkLayeredOptionName, ElkLayeredOptionValueByName, LayerAssigner, LayerAssignment, LayerOrder, LayeredAdvancedOptions, LayeredLayoutOptions, LayeredPhaseInput, LayeredSpacing, LayeredStrategies, LayeringStrategy, LayoutPadding, NodePlacement, NodePlacementStrategy, NodePlacer, NodeSize, assignLayersByBreadthFirstModelOrder, assignLayersByDepthFirstModelOrder, assignLayersByLongestPath, assignLayersByLongestPathToSink, assignLayersInteractively, assignLayersWithCoffmanGraham, assignLayersWithMinWidth, assignLayersWithNetworkSimplex, assignLayersWithStretchWidth, breakCyclesByModelOrder, breakCyclesByStronglyConnectedConnectivity, breakCyclesByStronglyConnectedNodeType, breakCyclesGreedily, breakCyclesGreedilyByModelOrder, breakCyclesInteractively, breakCyclesWithDepthFirstSearch, breakCyclesWithModelOrderBreadthFirstSearch, breakCyclesWithModelOrderDepthFirstSearch, elkLayeredEnumValues, elkLayeredOptionDefinitions, fromElkLayeredOptionId, getLayeredLayout, layeredAlgorithm, minimizeCrossingsInteractively, minimizeCrossingsWithBarycenter, minimizeCrossingsWithMedian, minimizeCrossingsWithModelOrder, placeNodesInLayers, placeNodesInteractively, placeNodesWithBrandesKoepf, placeNodesWithLinearSegments, placeNodesWithNetworkSimplex, routeEdgesOrthogonally, routeEdgesWithPolylines, routeEdgesWithSplines, toElkLayeredOptions };
@@ -1,2 +1,2 @@
1
- import { $ as LayeringStrategy, A as routeEdgesOrthogonally, B as LayerOrder, C as breakCyclesWithModelOrderDepthFirstSearch, D as minimizeCrossingsWithModelOrder, E as minimizeCrossingsWithMedian, F as CycleBreaker, G as LayoutPadding, H as LayeredPhaseInput, I as EdgeRouter, J as NodeSize, K as NodePlacement, L as EdgeRoutes, M as routeEdgesWithSplines, N as AcyclicOrientation, O as placeNodesInLayers, P as CrossingMinimizer, Q as LayeredAdvancedOptions, R as LayerAssigner, S as breakCyclesWithModelOrderBreadthFirstSearch, T as minimizeCrossingsWithBarycenter, U as LayeredSpacing, V as LayeredLayoutOptions, W as LayeredStrategies, X as CycleBreakingStrategy, Y as CrossingMinimizationStrategy, Z as EdgeRoutingStyle, _ as breakCyclesByStronglyConnectedNodeType, a as placeNodesWithBrandesKoepf, at as ElkLayeredOptionName, b as breakCyclesInteractively, c as assignLayersWithNetworkSimplex, d as assignLayersByLongestPath, et as NodePlacementStrategy, f as assignLayersByLongestPathToSink, g as breakCyclesByStronglyConnectedConnectivity, h as breakCyclesByModelOrder, i as placeNodesWithLinearSegments, it as ElkLayeredOptionId, j as routeEdgesWithPolylines, k as placeNodesInteractively, l as assignLayersByBreadthFirstModelOrder, m as assignLayersWithCoffmanGraham, n as layeredAlgorithm, nt as toElkLayeredOptions, o as assignLayersWithStretchWidth, ot as ElkLayeredOptionValueByName, p as assignLayersInteractively, q as NodePlacer, r as placeNodesWithNetworkSimplex, rt as elkLayeredEnumValues, s as assignLayersWithMinWidth, st as elkLayeredOptionDefinitions, t as getLayeredLayout, tt as fromElkLayeredOptionId, u as assignLayersByDepthFirstModelOrder, v as breakCyclesGreedily, w as minimizeCrossingsInteractively, x as breakCyclesWithDepthFirstSearch, y as breakCyclesGreedilyByModelOrder, z as LayerAssignment } from "../index-8xYkohbz.mjs";
1
+ import { $ as LayeringStrategy, A as routeEdgesOrthogonally, B as LayerOrder, C as breakCyclesWithModelOrderDepthFirstSearch, D as minimizeCrossingsWithModelOrder, E as minimizeCrossingsWithMedian, F as CycleBreaker, G as LayoutPadding, H as LayeredPhaseInput, I as EdgeRouter, J as NodeSize, K as NodePlacement, L as EdgeRoutes, M as routeEdgesWithSplines, N as AcyclicOrientation, O as placeNodesInLayers, P as CrossingMinimizer, Q as LayeredAdvancedOptions, R as LayerAssigner, S as breakCyclesWithModelOrderBreadthFirstSearch, T as minimizeCrossingsWithBarycenter, U as LayeredSpacing, V as LayeredLayoutOptions, W as LayeredStrategies, X as CycleBreakingStrategy, Y as CrossingMinimizationStrategy, Z as EdgeRoutingStyle, _ as breakCyclesByStronglyConnectedNodeType, a as placeNodesWithBrandesKoepf, at as ElkLayeredOptionName, b as breakCyclesInteractively, c as assignLayersWithNetworkSimplex, d as assignLayersByLongestPath, et as NodePlacementStrategy, f as assignLayersByLongestPathToSink, g as breakCyclesByStronglyConnectedConnectivity, h as breakCyclesByModelOrder, i as placeNodesWithLinearSegments, it as ElkLayeredOptionId, j as routeEdgesWithPolylines, k as placeNodesInteractively, l as assignLayersByBreadthFirstModelOrder, m as assignLayersWithCoffmanGraham, n as layeredAlgorithm, nt as toElkLayeredOptions, o as assignLayersWithStretchWidth, ot as ElkLayeredOptionValueByName, p as assignLayersInteractively, q as NodePlacer, r as placeNodesWithNetworkSimplex, rt as elkLayeredEnumValues, s as assignLayersWithMinWidth, st as elkLayeredOptionDefinitions, t as getLayeredLayout, tt as fromElkLayeredOptionId, u as assignLayersByDepthFirstModelOrder, v as breakCyclesGreedily, w as minimizeCrossingsInteractively, x as breakCyclesWithDepthFirstSearch, y as breakCyclesGreedilyByModelOrder, z as LayerAssignment } from "../index-BSH2bloA.mjs";
2
2
  export { AcyclicOrientation, CrossingMinimizationStrategy, CrossingMinimizer, CycleBreaker, CycleBreakingStrategy, EdgeRouter, EdgeRoutes, EdgeRoutingStyle, ElkLayeredOptionId, ElkLayeredOptionName, ElkLayeredOptionValueByName, LayerAssigner, LayerAssignment, LayerOrder, LayeredAdvancedOptions, LayeredLayoutOptions, LayeredPhaseInput, LayeredSpacing, LayeredStrategies, LayeringStrategy, LayoutPadding, NodePlacement, NodePlacementStrategy, NodePlacer, NodeSize, assignLayersByBreadthFirstModelOrder, assignLayersByDepthFirstModelOrder, assignLayersByLongestPath, assignLayersByLongestPathToSink, assignLayersInteractively, assignLayersWithCoffmanGraham, assignLayersWithMinWidth, assignLayersWithNetworkSimplex, assignLayersWithStretchWidth, breakCyclesByModelOrder, breakCyclesByStronglyConnectedConnectivity, breakCyclesByStronglyConnectedNodeType, breakCyclesGreedily, breakCyclesGreedilyByModelOrder, breakCyclesInteractively, breakCyclesWithDepthFirstSearch, breakCyclesWithModelOrderBreadthFirstSearch, breakCyclesWithModelOrderDepthFirstSearch, elkLayeredEnumValues, elkLayeredOptionDefinitions, fromElkLayeredOptionId, getLayeredLayout, layeredAlgorithm, minimizeCrossingsInteractively, minimizeCrossingsWithBarycenter, minimizeCrossingsWithMedian, minimizeCrossingsWithModelOrder, placeNodesInLayers, placeNodesInteractively, placeNodesWithBrandesKoepf, placeNodesWithLinearSegments, placeNodesWithNetworkSimplex, routeEdgesOrthogonally, routeEdgesWithPolylines, routeEdgesWithSplines, toElkLayeredOptions };
@@ -1,3 +1,3 @@
1
- import { A as minimizeCrossingsWithBarycenter, C as breakCyclesGreedilyByModelOrder, D as breakCyclesWithModelOrderDepthFirstSearch, E as breakCyclesWithModelOrderBreadthFirstSearch, I as routeEdgesOrthogonally, L as routeEdgesWithPolylines, M as minimizeCrossingsWithModelOrder, N as placeNodesInLayers, P as placeNodesInteractively, R as routeEdgesWithSplines, S as breakCyclesGreedily, T as breakCyclesWithDepthFirstSearch, _ as assignLayersInteractively, a as elkLayeredEnumValues, b as breakCyclesByStronglyConnectedConnectivity, c as placeNodesWithLinearSegments, d as assignLayersWithMinWidth, f as assignLayersWithNetworkSimplex, g as assignLayersByLongestPathToSink, h as assignLayersByLongestPath, i as toElkLayeredOptions, j as minimizeCrossingsWithMedian, k as minimizeCrossingsInteractively, l as placeNodesWithBrandesKoepf, m as assignLayersByDepthFirstModelOrder, n as layeredAlgorithm, o as elkLayeredOptionDefinitions, p as assignLayersByBreadthFirstModelOrder, r as fromElkLayeredOptionId, s as placeNodesWithNetworkSimplex, t as getLayeredLayout, u as assignLayersWithStretchWidth, v as assignLayersWithCoffmanGraham, w as breakCyclesInteractively, x as breakCyclesByStronglyConnectedNodeType, y as breakCyclesByModelOrder } from "../layered-CoeH9LRO.mjs";
1
+ import { A as minimizeCrossingsInteractively, C as breakCyclesGreedily, D as breakCyclesWithModelOrderBreadthFirstSearch, E as breakCyclesWithDepthFirstSearch, F as placeNodesInteractively, L as routeEdgesOrthogonally, M as minimizeCrossingsWithMedian, N as minimizeCrossingsWithModelOrder, O as breakCyclesWithModelOrderDepthFirstSearch, P as placeNodesInLayers, R as routeEdgesWithPolylines, S as breakCyclesByStronglyConnectedNodeType, T as breakCyclesInteractively, _ as assignLayersByLongestPathToSink, a as elkLayeredEnumValues, b as breakCyclesByModelOrder, c as placeNodesWithLinearSegments, d as assignLayersWithMinWidth, f as assignLayersWithNetworkSimplex, g as assignLayersByLongestPath, h as assignLayersByDepthFirstModelOrder, i as toElkLayeredOptions, j as minimizeCrossingsWithBarycenter, l as placeNodesWithBrandesKoepf, m as assignLayersByBreadthFirstModelOrder, n as layeredAlgorithm, o as elkLayeredOptionDefinitions, r as fromElkLayeredOptionId, s as placeNodesWithNetworkSimplex, t as getLayeredLayout, u as assignLayersWithStretchWidth, v as assignLayersInteractively, w as breakCyclesGreedilyByModelOrder, x as breakCyclesByStronglyConnectedConnectivity, y as assignLayersWithCoffmanGraham, z as routeEdgesWithSplines } from "../layered-Bz2nWmVp.mjs";
2
2
 
3
3
  export { assignLayersByBreadthFirstModelOrder, assignLayersByDepthFirstModelOrder, assignLayersByLongestPath, assignLayersByLongestPathToSink, assignLayersInteractively, assignLayersWithCoffmanGraham, assignLayersWithMinWidth, assignLayersWithNetworkSimplex, assignLayersWithStretchWidth, breakCyclesByModelOrder, breakCyclesByStronglyConnectedConnectivity, breakCyclesByStronglyConnectedNodeType, breakCyclesGreedily, breakCyclesGreedilyByModelOrder, breakCyclesInteractively, breakCyclesWithDepthFirstSearch, breakCyclesWithModelOrderBreadthFirstSearch, breakCyclesWithModelOrderDepthFirstSearch, elkLayeredEnumValues, elkLayeredOptionDefinitions, fromElkLayeredOptionId, getLayeredLayout, layeredAlgorithm, minimizeCrossingsInteractively, minimizeCrossingsWithBarycenter, minimizeCrossingsWithMedian, minimizeCrossingsWithModelOrder, placeNodesInLayers, placeNodesInteractively, placeNodesWithBrandesKoepf, placeNodesWithLinearSegments, placeNodesWithNetworkSimplex, routeEdgesOrthogonally, routeEdgesWithPolylines, routeEdgesWithSplines, toElkLayeredOptions };