@statelyai/layout 0.2.0 → 0.4.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 (132) hide show
  1. package/NOTICE.md +4 -2
  2. package/README.md +221 -13
  3. package/dist/elkjs/index.cjs +3 -2
  4. package/dist/elkjs/index.d.cts +13 -2
  5. package/dist/elkjs/index.d.mts +13 -2
  6. package/dist/elkjs/index.mjs +3 -3
  7. package/dist/elkjs/main.cjs +2 -2
  8. package/dist/elkjs/main.d.cts +2 -2
  9. package/dist/elkjs/main.d.mts +2 -2
  10. package/dist/elkjs/main.mjs +2 -2
  11. package/dist/elkjs/worker-api.cjs +1 -1
  12. package/dist/elkjs/worker-api.d.cts +2 -2
  13. package/dist/elkjs/worker-api.d.mts +2 -2
  14. package/dist/elkjs/worker-api.mjs +1 -1
  15. package/dist/elkjs/worker.cjs +2 -2
  16. package/dist/elkjs/worker.mjs +2 -2
  17. package/dist/elkjs-UciYx7lD.mjs +2973 -0
  18. package/dist/elkjs-ggjsBuVP.cjs +3002 -0
  19. package/dist/index-B6cWNrMw.d.cts +80 -0
  20. package/dist/index-CJQLUKD9.d.mts +80 -0
  21. package/dist/{index-BSH2bloA.d.mts → index-DT6lPMfS.d.cts} +117 -5
  22. package/dist/{index-CG712jzV.d.cts → index-F1U-fCTu.d.mts} +117 -5
  23. package/dist/index.cjs +39 -9
  24. package/dist/index.d.cts +4 -3
  25. package/dist/index.d.mts +4 -3
  26. package/dist/index.mjs +4 -3
  27. package/dist/layered/index.cjs +3 -1
  28. package/dist/layered/index.d.cts +3 -2
  29. package/dist/layered/index.d.mts +3 -2
  30. package/dist/layered/index.mjs +2 -2
  31. package/dist/{layered-Bz2nWmVp.mjs → layered-C7ERzZjR.mjs} +12592 -4682
  32. package/dist/{layered-Cf9Rn8l7.cjs → layered-CBPg6_6_.cjs} +12711 -4717
  33. package/dist/{layout-engine-BNex9jxg.cjs → layout-engine-DAw06RhN.cjs} +5 -18
  34. package/dist/{layout-engine-WbC0YjjT.mjs → layout-engine-DC3IYkIy.mjs} +3 -10
  35. package/dist/routing/index.cjs +29 -0
  36. package/dist/routing/index.d.cts +3 -0
  37. package/dist/routing/index.d.mts +3 -0
  38. package/dist/routing/index.mjs +3 -0
  39. package/dist/routing-CR8flv8b.mjs +2780 -0
  40. package/dist/routing-QIdGGFBe.cjs +2996 -0
  41. package/dist/types-CT2akdK0.d.mts +133 -0
  42. package/dist/types-uxPlGRof.d.cts +133 -0
  43. package/dist/{worker-client-DAT_z2OR.d.mts → worker-client-BwGGRD5y.d.mts} +1 -1
  44. package/dist/{worker-client-DVhklF6A.d.cts → worker-client-D4zNyPEI.d.cts} +1 -1
  45. package/package.json +14 -3
  46. package/src/authoring/coordinates.ts +38 -10
  47. package/src/authoring/partial.ts +7 -2
  48. package/src/authoring/routing.ts +4 -1
  49. package/src/constraints.ts +174 -6
  50. package/src/elkjs/index.ts +1397 -452
  51. package/src/elkjs/layout-quality.ts +219 -0
  52. package/src/elkjs/opposing-tracks.ts +161 -0
  53. package/src/elkjs/orthogonal-junctions.ts +174 -0
  54. package/src/elkjs/routes.ts +147 -0
  55. package/src/elkjs/statechart.ts +9 -3
  56. package/src/elkjs/types.ts +2 -0
  57. package/src/index.ts +8 -0
  58. package/src/internal/elkjs-compatibility.ts +4 -1
  59. package/src/internal/layered-trace.ts +48 -0
  60. package/src/internal/layout-engine.ts +2 -1
  61. package/src/java-random.ts +6 -0
  62. package/src/layered/bk-node-placement.ts +403 -92
  63. package/src/layered/center-labels.ts +398 -0
  64. package/src/layered/compaction-bounds.ts +26 -0
  65. package/src/layered/compaction-errors.ts +2 -0
  66. package/src/layered/compaction-scanline.ts +63 -0
  67. package/src/layered/compound-boundaries.ts +99 -0
  68. package/src/layered/compound.ts +445 -0
  69. package/src/layered/constraint-orientation.ts +141 -0
  70. package/src/layered/crossing-constraints.ts +243 -0
  71. package/src/layered/crossing-counter.ts +221 -0
  72. package/src/layered/crossing-graph.ts +401 -0
  73. package/src/layered/cycle-random.ts +22 -0
  74. package/src/layered/elk-port-lists.ts +243 -0
  75. package/src/layered/end-labels.ts +124 -0
  76. package/src/layered/external-port-dummy.ts +137 -0
  77. package/src/layered/feedback-chains.ts +114 -0
  78. package/src/layered/fixed-self-loop.ts +150 -0
  79. package/src/layered/greedy-switch-decider.ts +356 -0
  80. package/src/layered/grouped-compaction.ts +787 -0
  81. package/src/layered/gwt-sort.ts +53 -0
  82. package/src/layered/hierarchical-port-phases.ts +242 -0
  83. package/src/layered/hierarchical-port-restoration.ts +233 -0
  84. package/src/layered/hierarchical-port-routing.ts +179 -0
  85. package/src/layered/hierarchy-crossing.ts +121 -0
  86. package/src/layered/hierarchy-sweepiness.ts +83 -0
  87. package/src/layered/hints.ts +371 -0
  88. package/src/layered/hyperedge-dummy-merger.ts +195 -0
  89. package/src/layered/index.ts +911 -261
  90. package/src/layered/initial-model-order.ts +404 -0
  91. package/src/layered/inverted-ports.ts +207 -0
  92. package/src/layered/label-dummy-switcher.ts +200 -0
  93. package/src/layered/long-edges.ts +135 -44
  94. package/src/layered/loop-envelopes.ts +184 -0
  95. package/src/layered/native-routing.ts +275 -0
  96. package/src/layered/network-simplex.ts +11 -15
  97. package/src/layered/node-margins.ts +59 -0
  98. package/src/layered/north-south-ports.ts +271 -0
  99. package/src/layered/opposing-tracks.ts +944 -0
  100. package/src/layered/orthogonal-cycle-order.ts +106 -0
  101. package/src/layered/orthogonal-hypersegments.ts +92 -0
  102. package/src/layered/orthogonal-junctions.ts +202 -0
  103. package/src/layered/orthogonal-segments.ts +243 -0
  104. package/src/layered/placement-orientation.ts +22 -0
  105. package/src/layered/port-distributor.ts +192 -0
  106. package/src/layered/port-edge-order.ts +20 -0
  107. package/src/layered/replace-routing.ts +45 -0
  108. package/src/layered/routing-coordinates.ts +32 -0
  109. package/src/layered/separate-exterior-labels.ts +24 -6
  110. package/src/layered/spacing.ts +34 -12
  111. package/src/layered/splitter-order.ts +106 -0
  112. package/src/layered/strategies.ts +2024 -883
  113. package/src/layered/types.ts +34 -0
  114. package/src/layered/weighted-compaction.ts +84 -0
  115. package/src/routing/adapters.ts +143 -0
  116. package/src/routing/algorithms.ts +1088 -0
  117. package/src/routing/coordination.ts +91 -0
  118. package/src/routing/engine.ts +473 -0
  119. package/src/routing/index.ts +69 -0
  120. package/src/routing/layout-cache.ts +65 -0
  121. package/src/routing/model.ts +218 -0
  122. package/src/routing/path.ts +324 -0
  123. package/src/routing/persistent.ts +117 -0
  124. package/src/routing/search.ts +358 -0
  125. package/src/routing/spatial.ts +78 -0
  126. package/src/routing/types.ts +146 -0
  127. package/dist/elkjs-BVnDwnBQ.cjs +0 -1551
  128. package/dist/elkjs-CFlfkEBz.mjs +0 -1528
  129. /package/dist/{public-types-B8rAALJq.d.mts → public-types-9NCPoqbp.d.mts} +0 -0
  130. /package/dist/{public-types-CVB0hXGk.d.cts → public-types-BcRZoJE3.d.cts} +0 -0
  131. /package/dist/{worker-client-DkwS4sHx.mjs → worker-client-BNjwT1AJ.mjs} +0 -0
  132. /package/dist/{worker-client-D3HMK33r.cjs → worker-client-D4oEvhAl.cjs} +0 -0
@@ -0,0 +1,80 @@
1
+ import { a as RouteBounds, c as RoutePath, l as RoutePoint, n as NativeRoutingStrategy, r as Route, s as RoutePatch } from "./types-uxPlGRof.cjs";
2
+ import { GraphPatch, VisualGraph } from "@statelyai/graph";
3
+
4
+ //#region src/routing/engine.d.ts
5
+ declare function applyRoutePatches(routes: ReadonlyMap<string, Route>, patches: readonly RoutePatch[]): ReadonlyMap<string, Route>;
6
+ //#endregion
7
+ //#region src/routing/path.d.ts
8
+ declare function pathFromPoints(points: readonly RoutePoint[]): RoutePath;
9
+ interface FlattenPathOptions {
10
+ readonly tolerance?: number;
11
+ readonly maxSegments?: number;
12
+ }
13
+ /** Adaptive, bounded-error polyline approximation. Throws rather than silently exceeding tolerance. */
14
+ declare function flattenPath(path: RoutePath, options?: FlattenPathOptions): RoutePoint[];
15
+ /** Conservative bounds: control hulls and full ellipse envelopes contain every curve. */
16
+ declare function getPathBounds(path: RoutePath): RouteBounds;
17
+ declare function getPathLength(path: RoutePath, options?: FlattenPathOptions): number;
18
+ declare function getPointAtLength(path: RoutePath, length: number, options?: FlattenPathOptions): RoutePoint;
19
+ declare function getTangentAtLength(path: RoutePath, length: number, options?: FlattenPathOptions): RoutePoint;
20
+ /** Round line-to-line corners only; existing curves and path endpoints are retained. */
21
+ declare function roundCorners(path: RoutePath, options: {
22
+ readonly radius: number;
23
+ }): RoutePath;
24
+ declare function toSvgPath(path: RoutePath, options?: {
25
+ readonly radius?: number;
26
+ readonly precision?: number;
27
+ }): string;
28
+ //#endregion
29
+ //#region src/routing/adapters.d.ts
30
+ /** ELK/native spline output: start, then repeating control1/control2/end triples. */
31
+ declare function pathFromSplinePoints(points: readonly RoutePoint[]): RoutePath;
32
+ /** Normalize routes from any native layout algorithm, without running layout again. */
33
+ declare function getLayoutRoutes(graph: VisualGraph): ReadonlyMap<string, Route>;
34
+ /** One polyline per section preserves label gaps and branching for simple renderers. */
35
+ declare function routeToPolylines(route: Route, options?: {
36
+ readonly tolerance?: number;
37
+ }): readonly (readonly RoutePoint[])[];
38
+ /**
39
+ * One point list for consumers of `GraphEdge.points`. Sections are joined
40
+ * through their gaps (an edge label, for example); between orthogonal
41
+ * sections the join is orthogonal too, so it never adds a diagonal.
42
+ */
43
+ declare function routeToPoints(route: Route, options?: {
44
+ readonly tolerance?: number;
45
+ }): RoutePoint[];
46
+ /** Compatibility for single-section native consumers. Refuses to erase gaps or topology. */
47
+ declare function routeToGraphPatch(route: Route, options?: {
48
+ readonly tolerance?: number;
49
+ readonly offset?: RoutePoint;
50
+ }): GraphPatch;
51
+ //#endregion
52
+ //#region src/routing/index.d.ts
53
+ declare const straightRouting: NativeRoutingStrategy;
54
+ declare const bezierRouting: NativeRoutingStrategy;
55
+ declare const orthogonalRouting: NativeRoutingStrategy;
56
+ declare const polylineRouting: NativeRoutingStrategy;
57
+ declare const octilinearRouting: NativeRoutingStrategy;
58
+ declare const curvedRouting: NativeRoutingStrategy;
59
+ declare const organicRouting: NativeRoutingStrategy;
60
+ declare const parallelRouting: NativeRoutingStrategy;
61
+ declare const selfLoopRouting: NativeRoutingStrategy;
62
+ declare const fanRouting: NativeRoutingStrategy;
63
+ declare const busRouting: NativeRoutingStrategy;
64
+ declare const bundleRouting: NativeRoutingStrategy;
65
+ declare const routingStrategies: Readonly<{
66
+ straight: NativeRoutingStrategy;
67
+ bezier: NativeRoutingStrategy;
68
+ orthogonal: NativeRoutingStrategy;
69
+ polyline: NativeRoutingStrategy;
70
+ octilinear: NativeRoutingStrategy;
71
+ curved: NativeRoutingStrategy;
72
+ organic: NativeRoutingStrategy;
73
+ parallel: NativeRoutingStrategy;
74
+ "self-loop": NativeRoutingStrategy;
75
+ fan: NativeRoutingStrategy;
76
+ bus: NativeRoutingStrategy;
77
+ bundle: NativeRoutingStrategy;
78
+ }>;
79
+ //#endregion
80
+ export { getPointAtLength as C, toSvgPath as D, roundCorners as E, applyRoutePatches as O, getPathLength as S, pathFromPoints as T, routeToPoints as _, fanRouting as a, flattenPath as b, orthogonalRouting as c, routingStrategies as d, selfLoopRouting as f, routeToGraphPatch as g, pathFromSplinePoints as h, curvedRouting as i, parallelRouting as l, getLayoutRoutes as m, bundleRouting as n, octilinearRouting as o, straightRouting as p, busRouting as r, organicRouting as s, bezierRouting as t, polylineRouting as u, routeToPolylines as v, getTangentAtLength as w, getPathBounds as x, FlattenPathOptions as y };
@@ -0,0 +1,80 @@
1
+ import { a as RouteBounds, c as RoutePath, l as RoutePoint, n as NativeRoutingStrategy, r as Route, s as RoutePatch } from "./types-CT2akdK0.mjs";
2
+ import { GraphPatch, VisualGraph } from "@statelyai/graph";
3
+
4
+ //#region src/routing/engine.d.ts
5
+ declare function applyRoutePatches(routes: ReadonlyMap<string, Route>, patches: readonly RoutePatch[]): ReadonlyMap<string, Route>;
6
+ //#endregion
7
+ //#region src/routing/path.d.ts
8
+ declare function pathFromPoints(points: readonly RoutePoint[]): RoutePath;
9
+ interface FlattenPathOptions {
10
+ readonly tolerance?: number;
11
+ readonly maxSegments?: number;
12
+ }
13
+ /** Adaptive, bounded-error polyline approximation. Throws rather than silently exceeding tolerance. */
14
+ declare function flattenPath(path: RoutePath, options?: FlattenPathOptions): RoutePoint[];
15
+ /** Conservative bounds: control hulls and full ellipse envelopes contain every curve. */
16
+ declare function getPathBounds(path: RoutePath): RouteBounds;
17
+ declare function getPathLength(path: RoutePath, options?: FlattenPathOptions): number;
18
+ declare function getPointAtLength(path: RoutePath, length: number, options?: FlattenPathOptions): RoutePoint;
19
+ declare function getTangentAtLength(path: RoutePath, length: number, options?: FlattenPathOptions): RoutePoint;
20
+ /** Round line-to-line corners only; existing curves and path endpoints are retained. */
21
+ declare function roundCorners(path: RoutePath, options: {
22
+ readonly radius: number;
23
+ }): RoutePath;
24
+ declare function toSvgPath(path: RoutePath, options?: {
25
+ readonly radius?: number;
26
+ readonly precision?: number;
27
+ }): string;
28
+ //#endregion
29
+ //#region src/routing/adapters.d.ts
30
+ /** ELK/native spline output: start, then repeating control1/control2/end triples. */
31
+ declare function pathFromSplinePoints(points: readonly RoutePoint[]): RoutePath;
32
+ /** Normalize routes from any native layout algorithm, without running layout again. */
33
+ declare function getLayoutRoutes(graph: VisualGraph): ReadonlyMap<string, Route>;
34
+ /** One polyline per section preserves label gaps and branching for simple renderers. */
35
+ declare function routeToPolylines(route: Route, options?: {
36
+ readonly tolerance?: number;
37
+ }): readonly (readonly RoutePoint[])[];
38
+ /**
39
+ * One point list for consumers of `GraphEdge.points`. Sections are joined
40
+ * through their gaps (an edge label, for example); between orthogonal
41
+ * sections the join is orthogonal too, so it never adds a diagonal.
42
+ */
43
+ declare function routeToPoints(route: Route, options?: {
44
+ readonly tolerance?: number;
45
+ }): RoutePoint[];
46
+ /** Compatibility for single-section native consumers. Refuses to erase gaps or topology. */
47
+ declare function routeToGraphPatch(route: Route, options?: {
48
+ readonly tolerance?: number;
49
+ readonly offset?: RoutePoint;
50
+ }): GraphPatch;
51
+ //#endregion
52
+ //#region src/routing/index.d.ts
53
+ declare const straightRouting: NativeRoutingStrategy;
54
+ declare const bezierRouting: NativeRoutingStrategy;
55
+ declare const orthogonalRouting: NativeRoutingStrategy;
56
+ declare const polylineRouting: NativeRoutingStrategy;
57
+ declare const octilinearRouting: NativeRoutingStrategy;
58
+ declare const curvedRouting: NativeRoutingStrategy;
59
+ declare const organicRouting: NativeRoutingStrategy;
60
+ declare const parallelRouting: NativeRoutingStrategy;
61
+ declare const selfLoopRouting: NativeRoutingStrategy;
62
+ declare const fanRouting: NativeRoutingStrategy;
63
+ declare const busRouting: NativeRoutingStrategy;
64
+ declare const bundleRouting: NativeRoutingStrategy;
65
+ declare const routingStrategies: Readonly<{
66
+ straight: NativeRoutingStrategy;
67
+ bezier: NativeRoutingStrategy;
68
+ orthogonal: NativeRoutingStrategy;
69
+ polyline: NativeRoutingStrategy;
70
+ octilinear: NativeRoutingStrategy;
71
+ curved: NativeRoutingStrategy;
72
+ organic: NativeRoutingStrategy;
73
+ parallel: NativeRoutingStrategy;
74
+ "self-loop": NativeRoutingStrategy;
75
+ fan: NativeRoutingStrategy;
76
+ bus: NativeRoutingStrategy;
77
+ bundle: NativeRoutingStrategy;
78
+ }>;
79
+ //#endregion
80
+ export { getPointAtLength as C, toSvgPath as D, roundCorners as E, applyRoutePatches as O, getPathLength as S, pathFromPoints as T, routeToPoints as _, fanRouting as a, flattenPath as b, orthogonalRouting as c, routingStrategies as d, selfLoopRouting as f, routeToGraphPatch as g, pathFromSplinePoints as h, curvedRouting as i, parallelRouting as l, getLayoutRoutes as m, bundleRouting as n, octilinearRouting as o, straightRouting as p, busRouting as r, organicRouting as s, bezierRouting as t, polylineRouting as u, routeToPolylines as v, getTangentAtLength as w, getPathBounds as x, FlattenPathOptions as y };
@@ -1,5 +1,6 @@
1
- import { LayoutConstraints } from "@statelyai/graph/layout";
1
+ import { n as NativeRoutingStrategy, r as Route, v as RoutingSettings } from "./types-uxPlGRof.cjs";
2
2
  import { EntityRect, Graph, GraphEdge, GraphNode, GraphPatch, GraphPort, Point, VisualGraph } from "@statelyai/graph";
3
+ import { LayoutConstraints } from "@statelyai/graph/layout";
3
4
 
4
5
  //#region src/constraints.d.ts
5
6
  type GeometryReference = {
@@ -143,6 +144,53 @@ interface LayoutResult<N = unknown, E = unknown, G = unknown, P = unknown> {
143
144
  metrics: LayoutMetrics;
144
145
  }
145
146
  //#endregion
147
+ //#region src/layered/hints.d.ts
148
+ /**
149
+ * Hints steer the layered phases toward a reader's expectations. They are
150
+ * preferences unless marked `require`, and never at the cost of a defect: a
151
+ * hint that would make nodes overlap is relaxed and reported instead.
152
+ */
153
+ type HintStrength = "prefer" | "require";
154
+ interface HintBase {
155
+ id: string;
156
+ strength?: HintStrength;
157
+ }
158
+ /** Place a node at the start (top-left) or end of its container. */
159
+ interface AnchorHint extends HintBase {
160
+ kind: "anchor";
161
+ nodeId: string;
162
+ corner: "start" | "end";
163
+ }
164
+ /** Align the centers of nodes that follow each other, such as sequential states. */
165
+ interface ChainHint extends HintBase {
166
+ kind: "chain";
167
+ nodeIds: readonly string[];
168
+ }
169
+ type LayoutHint = AnchorHint | ChainHint;
170
+ /** Serializable hint constructors, alongside the `c` geometry constraint constructors. */
171
+ declare const hint: {
172
+ anchor: (value: Omit<AnchorHint, "kind">) => AnchorHint;
173
+ chain: (value: Omit<ChainHint, "kind">) => ChainHint;
174
+ };
175
+ /**
176
+ * Hints for statecharts: each container's initial state (and the graph's)
177
+ * is required at the start, and each run of states joined one-to-one within
178
+ * the same parent forms a preferred chain. Callers can filter or extend the
179
+ * result.
180
+ */
181
+ declare function statechartHints(graph: {
182
+ initialNodeId?: string | null;
183
+ nodes: readonly {
184
+ id: string;
185
+ parentId?: string | null;
186
+ initialNodeId?: string | null;
187
+ }[];
188
+ edges: readonly {
189
+ sourceId: string;
190
+ targetId: string;
191
+ }[];
192
+ }): LayoutHint[];
193
+ //#endregion
146
194
  //#region src/layered/elk-options.generated.d.ts
147
195
  interface ElkLayeredOptionValueByName {
148
196
  "spacing.commentComment"?: number;
@@ -1151,6 +1199,8 @@ interface LayoutPadding {
1151
1199
  left: number;
1152
1200
  }
1153
1201
  interface LayeredPhaseInput {
1202
+ /** Authored edge order retained through label and long-edge expansion. */
1203
+ modelOrderByEdgeId?: ReadonlyMap<string, number>;
1154
1204
  graph: Graph<unknown, unknown, unknown, unknown>;
1155
1205
  sizes: ReadonlyMap<string, NodeSize>;
1156
1206
  direction: LayoutDirection;
@@ -1166,11 +1216,14 @@ interface AcyclicOrientation {
1166
1216
  reversedEdgeIds: ReadonlySet<string>;
1167
1217
  }
1168
1218
  interface LayerAssignment {
1219
+ layerCount?: number;
1169
1220
  layerByNodeId: ReadonlyMap<string, number>;
1170
1221
  /** Layer-internal seed order produced by layerers whose insertion order is observable. */
1171
1222
  seedOrder?: readonly string[];
1172
1223
  }
1173
1224
  interface LayerOrder {
1225
+ /** Canonical clockwise physical port identities, independent of edge reversal. */
1226
+ physicalPortOrderByNodeId?: ReadonlyMap<string, readonly string[]>;
1174
1227
  layers: readonly (readonly string[])[];
1175
1228
  /** Internal ELK sweep state retained for exact port-aware placement. */
1176
1229
  inputPortOrderByNodeId?: ReadonlyMap<string, readonly string[]>;
@@ -1182,6 +1235,8 @@ interface NodePlacement {
1182
1235
  }
1183
1236
  interface EdgeRoutes {
1184
1237
  pointsByEdgeId: ReadonlyMap<string, readonly Point[]>;
1238
+ /** Branch points generated on physical orthogonal hypersegments before restoration. */
1239
+ junctionPointsByEdgeId?: ReadonlyMap<string, readonly Point[]>;
1185
1240
  /** ELK spline segment NUB controls retained until long-edge joining. */
1186
1241
  splineNubControlsByEdgeId?: ReadonlyMap<string, readonly Point[]>;
1187
1242
  /** Reversed fixed-side routes that must stay outside the node envelope during compaction. */
@@ -1199,11 +1254,40 @@ interface LayeredStrategies {
1199
1254
  placeNodes?: NodePlacer;
1200
1255
  routeEdges?: EdgeRouter;
1201
1256
  }
1257
+ /** Geometry reserved while laying out a compound, before its ancestors. */
1258
+ interface CompoundLayoutOptions {
1259
+ padding?: number | Partial<LayoutPadding>;
1260
+ direction?: LayoutDirection;
1261
+ header?: NodeSize & {
1262
+ side?: "top" | "right" | "bottom" | "left";
1263
+ };
1264
+ minContentSize?: Partial<NodeSize>;
1265
+ }
1266
+ interface CompoundLayoutGeometry {
1267
+ /** Parent-relative outer rectangle; header/content are relative to this rectangle. */
1268
+ bounds: EntityRect;
1269
+ header?: EntityRect;
1270
+ content: EntityRect;
1271
+ }
1272
+ interface CompoundEdgeAttachment {
1273
+ /** Content attachments leave toward the interior; outer attachments leave outward. */
1274
+ source?: "content" | "outer";
1275
+ target?: "content" | "outer";
1276
+ }
1202
1277
  interface LayeredLayoutOptions {
1278
+ /** Replace initial routes after initial placement and routing, without moving geometry. */
1279
+ routing?: {
1280
+ strategy: Pick<NativeRoutingStrategy, "route">;
1281
+ settings?: RoutingSettings;
1282
+ };
1203
1283
  direction?: LayoutDirection;
1284
+ compound?: (node: GraphNode) => CompoundLayoutOptions | undefined;
1285
+ edgeAttachment?: (edge: GraphEdge) => CompoundEdgeAttachment | undefined;
1204
1286
  spacing?: Partial<LayeredSpacing>;
1205
1287
  padding?: number | Partial<LayoutPadding>;
1206
1288
  constraints?: LayoutConstraints;
1289
+ /** Reader-facing preferences applied during layering, ordering and placement. */
1290
+ hints?: readonly LayoutHint[];
1207
1291
  measure?: (node: GraphNode) => NodeSize;
1208
1292
  crossingSweeps?: number;
1209
1293
  strategies?: LayeredStrategies;
@@ -1217,11 +1301,20 @@ interface LayeredLayoutOptions {
1217
1301
  portSettings?: (port: GraphPort, node: GraphNode) => ElkLayeredOptionValueByName | undefined;
1218
1302
  }
1219
1303
  //#endregion
1304
+ //#region src/layered/compound.d.ts
1305
+ type CompoundVisualGraph<N = unknown, E = unknown, G = unknown, P = unknown> = VisualGraph<N, E, G, P> & {
1306
+ /** Nodes remain parent-relative; edge rectangles and points are world-space. */
1307
+ readonly edgeCoordinateSpace?: "world";
1308
+ readonly compoundGeometry: ReadonlyMap<string, CompoundLayoutGeometry>;
1309
+ /** World-space route sections preserve label gaps and fallback diagnostics. */
1310
+ readonly compoundRoutes: ReadonlyMap<string, Route>;
1311
+ };
1312
+ //#endregion
1220
1313
  //#region src/layered/strategies.d.ts
1221
1314
  declare const breakCyclesWithDepthFirstSearch: CycleBreaker;
1222
1315
  declare const breakCyclesGreedily: CycleBreaker;
1223
1316
  declare const breakCyclesGreedilyByModelOrder: CycleBreaker;
1224
- /** ELK MODEL_ORDER for flat graphs without FIRST/LAST layer constraints. */
1317
+ /** ELK MODEL_ORDER: layer-constrained nodes (e.g. external port dummies) order before/after the rest. */
1225
1318
  declare const breakCyclesByModelOrder: CycleBreaker;
1226
1319
  /** ELK INTERACTIVE: honor authored x-order, then remove any remaining DFS back edges. */
1227
1320
  declare const breakCyclesInteractively: CycleBreaker;
@@ -1262,7 +1355,7 @@ declare const assignLayersWithMinWidth: LayerAssigner;
1262
1355
  declare const assignLayersWithStretchWidth: LayerAssigner;
1263
1356
  //#endregion
1264
1357
  //#region src/layered/bk-node-placement.d.ts
1265
- /** ELK-compatible Brandes-Koepf placement for implicit center ports. */
1358
+ /** ELK-compatible Brandes-Koepf placement with port-aware compaction. */
1266
1359
  declare function placeNodesWithBrandesKoepf(input: LayeredPhaseInput, order: LayerOrder): NodePlacement;
1267
1360
  //#endregion
1268
1361
  //#region src/layered/linear-segments-node-placement.d.ts
@@ -1274,13 +1367,32 @@ declare function placeNodesWithLinearSegments(input: LayeredPhaseInput, order: L
1274
1367
  declare function placeNodesWithNetworkSimplex(input: LayeredPhaseInput, order: LayerOrder): NodePlacement;
1275
1368
  //#endregion
1276
1369
  //#region src/layered/index.d.ts
1370
+ /** @internal A prepared native scope, before crossing, placement or routing. */
1371
+ interface LayeredCrossingPhase {
1372
+ input: LayeredPhaseInput;
1373
+ orientation: AcyclicOrientation;
1374
+ assignment: LayerAssignment;
1375
+ /** Refresh compound body dimensions after child placement, before this scope resumes. */
1376
+ updateNodeSize(id: string, size: NodeSize): void;
1377
+ finishOrder(order: LayerOrder): LayerOrder;
1378
+ /** Run this scope's standalone minimizer, including authored ordering policies. */
1379
+ minimize(): LayerOrder;
1380
+ }
1381
+ /**
1382
+ * @internal Suspend a native scope at crossing minimization. A hierarchy
1383
+ * coordinator can prepare every scope, share sweep state, then resume each
1384
+ * scope with its final order. The ordinary entry point drains this same pipeline.
1385
+ */
1386
+ declare function createLayeredScopePipeline<N, E, G, P>(graph: Graph<N, E, G, P> | VisualGraph<N, E, G, P>, options: LayeredLayoutOptions, context?: LayoutExecutionContext): Generator<LayeredCrossingPhase, VisualGraph<N, E, G, P>, LayerOrder>;
1277
1387
  /**
1278
1388
  * Deterministic native layered layout for an `@statelyai/graph` graph.
1279
1389
  *
1280
1390
  * Supports flat and nested graphs, cycles, ports, self-loops, four directions,
1281
1391
  * custom phase strategies, and all layered edge-routing styles.
1282
1392
  */
1283
- declare function getLayeredLayout<N, E, G, P>(graph: Graph<N, E, G, P> | VisualGraph<N, E, G, P>, options?: LayeredLayoutOptions): VisualGraph<N, E, G, P>;
1393
+ declare function getLayeredLayout<N, E, G, P>(graph: Graph<N, E, G, P> | VisualGraph<N, E, G, P>, options?: LayeredLayoutOptions): CompoundVisualGraph<N, E, G, P>;
1284
1394
  declare const layeredAlgorithm: LayoutAlgorithm<LayeredLayoutOptions>;
1395
+ /** The pinned ELK adapter retains its established placement/routing contract. */
1396
+ declare const elkjs0111LayeredAlgorithm: LayoutAlgorithm<LayeredLayoutOptions>;
1285
1397
  //#endregion
1286
- export { LayeringStrategy as $, routeEdgesOrthogonally as A, LayerOrder as B, breakCyclesWithModelOrderDepthFirstSearch as C, GeometryReference as Ct, minimizeCrossingsWithModelOrder as D, WaypointConstraint as Dt, minimizeCrossingsWithMedian as E, PinConstraint as Et, CycleBreaker as F, LayoutPadding as G, LayeredPhaseInput as H, EdgeRouter as I, NodeSize as J, NodePlacement as K, EdgeRoutes as L, routeEdgesWithSplines as M, AcyclicOrientation as N, placeNodesInLayers as O, c as Ot, CrossingMinimizer as P, LayeredAdvancedOptions as Q, LayerAssigner as R, breakCyclesWithModelOrderBreadthFirstSearch as S, GeometryAttribute as St, minimizeCrossingsWithBarycenter as T, LinearConstraint as Tt, LayeredSpacing as U, LayeredLayoutOptions as V, LayeredStrategies as W, CycleBreakingStrategy as X, CrossingMinimizationStrategy as Y, EdgeRoutingStyle as Z, breakCyclesByStronglyConnectedNodeType as _, LayoutResult as _t, placeNodesWithBrandesKoepf as a, ElkLayeredOptionName as at, breakCyclesInteractively as b, ConstraintStrength as bt, assignLayersWithNetworkSimplex as c, AnyGraph as ct, assignLayersByLongestPath as d, LayoutDiagnostic as dt, NodePlacementStrategy as et, assignLayersByLongestPathToSink as f, LayoutDirection as ft, breakCyclesByStronglyConnectedConnectivity as g, LayoutRequest as gt, breakCyclesByModelOrder as h, LayoutPhaseMetrics as ht, placeNodesWithLinearSegments as i, ElkLayeredOptionId as it, routeEdgesWithPolylines as j, placeNodesInteractively as k, assignLayersByBreadthFirstModelOrder as l, LayoutAlgorithm as lt, assignLayersWithCoffmanGraham as m, LayoutMetrics as mt, layeredAlgorithm as n, toElkLayeredOptions as nt, assignLayersWithStretchWidth as o, ElkLayeredOptionValueByName as ot, assignLayersInteractively as p, LayoutExecutionContext as pt, NodePlacer as q, placeNodesWithNetworkSimplex as r, elkLayeredEnumValues as rt, assignLayersWithMinWidth as s, elkLayeredOptionDefinitions as st, getLayeredLayout as t, fromElkLayeredOptionId as tt, assignLayersByDepthFirstModelOrder as u, LayoutCapabilities as ut, breakCyclesGreedily as v, LayoutScope as vt, minimizeCrossingsInteractively as w, LayoutConstraint as wt, breakCyclesWithDepthFirstSearch as x, DistributeConstraint as xt, breakCyclesGreedilyByModelOrder as y, AlignConstraint as yt, LayerAssignment as z };
1398
+ export { NodePlacement as $, minimizeCrossingsWithModelOrder as A, LayoutResult as At, CompoundLayoutOptions as B, WaypointConstraint as Bt, breakCyclesInteractively as C, LayoutCapabilities as Ct, minimizeCrossingsInteractively as D, LayoutMetrics as Dt, breakCyclesWithModelOrderDepthFirstSearch as E, LayoutExecutionContext as Et, routeEdgesWithSplines as F, GeometryAttribute as Ft, LayerAssigner as G, CycleBreaker as H, CompoundVisualGraph as I, GeometryReference as It, LayeredLayoutOptions as J, LayerAssignment as K, AcyclicOrientation as L, LayoutConstraint as Lt, placeNodesInteractively as M, AlignConstraint as Mt, routeEdgesOrthogonally as N, ConstraintStrength as Nt, minimizeCrossingsWithBarycenter as O, LayoutPhaseMetrics as Ot, routeEdgesWithPolylines as P, DistributeConstraint as Pt, LayoutPadding as Q, CompoundEdgeAttachment as R, LinearConstraint as Rt, breakCyclesGreedilyByModelOrder as S, LayoutAlgorithm as St, breakCyclesWithModelOrderBreadthFirstSearch as T, LayoutDirection as Tt, EdgeRouter as U, CrossingMinimizer as V, c as Vt, EdgeRoutes as W, LayeredSpacing as X, LayeredPhaseInput as Y, LayeredStrategies as Z, assignLayersWithCoffmanGraham as _, HintStrength as _t, layeredAlgorithm as a, LayeredAdvancedOptions as at, breakCyclesByStronglyConnectedNodeType as b, statechartHints as bt, placeNodesWithBrandesKoepf as c, fromElkLayeredOptionId as ct, assignLayersWithNetworkSimplex as d, ElkLayeredOptionId as dt, NodePlacer as et, assignLayersByBreadthFirstModelOrder as f, ElkLayeredOptionName as ft, assignLayersInteractively as g, ChainHint as gt, assignLayersByLongestPathToSink as h, AnchorHint as ht, getLayeredLayout as i, EdgeRoutingStyle as it, placeNodesInLayers as j, LayoutScope as jt, minimizeCrossingsWithMedian as k, LayoutRequest as kt, assignLayersWithStretchWidth as l, toElkLayeredOptions as lt, assignLayersByLongestPath as m, elkLayeredOptionDefinitions as mt, createLayeredScopePipeline as n, CrossingMinimizationStrategy as nt, placeNodesWithNetworkSimplex as o, LayeringStrategy as ot, assignLayersByDepthFirstModelOrder as p, ElkLayeredOptionValueByName as pt, LayerOrder as q, elkjs0111LayeredAlgorithm as r, CycleBreakingStrategy as rt, placeNodesWithLinearSegments as s, NodePlacementStrategy as st, LayeredCrossingPhase as t, NodeSize as tt, assignLayersWithMinWidth as u, elkLayeredEnumValues as ut, breakCyclesByModelOrder as v, LayoutHint as vt, breakCyclesWithDepthFirstSearch as w, LayoutDiagnostic as wt, breakCyclesGreedily as x, AnyGraph as xt, breakCyclesByStronglyConnectedConnectivity as y, hint as yt, CompoundLayoutGeometry as z, PinConstraint as zt };
@@ -1,5 +1,6 @@
1
- import { EntityRect, Graph, GraphEdge, GraphNode, GraphPatch, GraphPort, Point, VisualGraph } from "@statelyai/graph";
1
+ import { n as NativeRoutingStrategy, r as Route, v as RoutingSettings } from "./types-CT2akdK0.mjs";
2
2
  import { LayoutConstraints } from "@statelyai/graph/layout";
3
+ import { EntityRect, Graph, GraphEdge, GraphNode, GraphPatch, GraphPort, Point, VisualGraph } from "@statelyai/graph";
3
4
 
4
5
  //#region src/constraints.d.ts
5
6
  type GeometryReference = {
@@ -143,6 +144,53 @@ interface LayoutResult<N = unknown, E = unknown, G = unknown, P = unknown> {
143
144
  metrics: LayoutMetrics;
144
145
  }
145
146
  //#endregion
147
+ //#region src/layered/hints.d.ts
148
+ /**
149
+ * Hints steer the layered phases toward a reader's expectations. They are
150
+ * preferences unless marked `require`, and never at the cost of a defect: a
151
+ * hint that would make nodes overlap is relaxed and reported instead.
152
+ */
153
+ type HintStrength = "prefer" | "require";
154
+ interface HintBase {
155
+ id: string;
156
+ strength?: HintStrength;
157
+ }
158
+ /** Place a node at the start (top-left) or end of its container. */
159
+ interface AnchorHint extends HintBase {
160
+ kind: "anchor";
161
+ nodeId: string;
162
+ corner: "start" | "end";
163
+ }
164
+ /** Align the centers of nodes that follow each other, such as sequential states. */
165
+ interface ChainHint extends HintBase {
166
+ kind: "chain";
167
+ nodeIds: readonly string[];
168
+ }
169
+ type LayoutHint = AnchorHint | ChainHint;
170
+ /** Serializable hint constructors, alongside the `c` geometry constraint constructors. */
171
+ declare const hint: {
172
+ anchor: (value: Omit<AnchorHint, "kind">) => AnchorHint;
173
+ chain: (value: Omit<ChainHint, "kind">) => ChainHint;
174
+ };
175
+ /**
176
+ * Hints for statecharts: each container's initial state (and the graph's)
177
+ * is required at the start, and each run of states joined one-to-one within
178
+ * the same parent forms a preferred chain. Callers can filter or extend the
179
+ * result.
180
+ */
181
+ declare function statechartHints(graph: {
182
+ initialNodeId?: string | null;
183
+ nodes: readonly {
184
+ id: string;
185
+ parentId?: string | null;
186
+ initialNodeId?: string | null;
187
+ }[];
188
+ edges: readonly {
189
+ sourceId: string;
190
+ targetId: string;
191
+ }[];
192
+ }): LayoutHint[];
193
+ //#endregion
146
194
  //#region src/layered/elk-options.generated.d.ts
147
195
  interface ElkLayeredOptionValueByName {
148
196
  "spacing.commentComment"?: number;
@@ -1151,6 +1199,8 @@ interface LayoutPadding {
1151
1199
  left: number;
1152
1200
  }
1153
1201
  interface LayeredPhaseInput {
1202
+ /** Authored edge order retained through label and long-edge expansion. */
1203
+ modelOrderByEdgeId?: ReadonlyMap<string, number>;
1154
1204
  graph: Graph<unknown, unknown, unknown, unknown>;
1155
1205
  sizes: ReadonlyMap<string, NodeSize>;
1156
1206
  direction: LayoutDirection;
@@ -1166,11 +1216,14 @@ interface AcyclicOrientation {
1166
1216
  reversedEdgeIds: ReadonlySet<string>;
1167
1217
  }
1168
1218
  interface LayerAssignment {
1219
+ layerCount?: number;
1169
1220
  layerByNodeId: ReadonlyMap<string, number>;
1170
1221
  /** Layer-internal seed order produced by layerers whose insertion order is observable. */
1171
1222
  seedOrder?: readonly string[];
1172
1223
  }
1173
1224
  interface LayerOrder {
1225
+ /** Canonical clockwise physical port identities, independent of edge reversal. */
1226
+ physicalPortOrderByNodeId?: ReadonlyMap<string, readonly string[]>;
1174
1227
  layers: readonly (readonly string[])[];
1175
1228
  /** Internal ELK sweep state retained for exact port-aware placement. */
1176
1229
  inputPortOrderByNodeId?: ReadonlyMap<string, readonly string[]>;
@@ -1182,6 +1235,8 @@ interface NodePlacement {
1182
1235
  }
1183
1236
  interface EdgeRoutes {
1184
1237
  pointsByEdgeId: ReadonlyMap<string, readonly Point[]>;
1238
+ /** Branch points generated on physical orthogonal hypersegments before restoration. */
1239
+ junctionPointsByEdgeId?: ReadonlyMap<string, readonly Point[]>;
1185
1240
  /** ELK spline segment NUB controls retained until long-edge joining. */
1186
1241
  splineNubControlsByEdgeId?: ReadonlyMap<string, readonly Point[]>;
1187
1242
  /** Reversed fixed-side routes that must stay outside the node envelope during compaction. */
@@ -1199,11 +1254,40 @@ interface LayeredStrategies {
1199
1254
  placeNodes?: NodePlacer;
1200
1255
  routeEdges?: EdgeRouter;
1201
1256
  }
1257
+ /** Geometry reserved while laying out a compound, before its ancestors. */
1258
+ interface CompoundLayoutOptions {
1259
+ padding?: number | Partial<LayoutPadding>;
1260
+ direction?: LayoutDirection;
1261
+ header?: NodeSize & {
1262
+ side?: "top" | "right" | "bottom" | "left";
1263
+ };
1264
+ minContentSize?: Partial<NodeSize>;
1265
+ }
1266
+ interface CompoundLayoutGeometry {
1267
+ /** Parent-relative outer rectangle; header/content are relative to this rectangle. */
1268
+ bounds: EntityRect;
1269
+ header?: EntityRect;
1270
+ content: EntityRect;
1271
+ }
1272
+ interface CompoundEdgeAttachment {
1273
+ /** Content attachments leave toward the interior; outer attachments leave outward. */
1274
+ source?: "content" | "outer";
1275
+ target?: "content" | "outer";
1276
+ }
1202
1277
  interface LayeredLayoutOptions {
1278
+ /** Replace initial routes after initial placement and routing, without moving geometry. */
1279
+ routing?: {
1280
+ strategy: Pick<NativeRoutingStrategy, "route">;
1281
+ settings?: RoutingSettings;
1282
+ };
1203
1283
  direction?: LayoutDirection;
1284
+ compound?: (node: GraphNode) => CompoundLayoutOptions | undefined;
1285
+ edgeAttachment?: (edge: GraphEdge) => CompoundEdgeAttachment | undefined;
1204
1286
  spacing?: Partial<LayeredSpacing>;
1205
1287
  padding?: number | Partial<LayoutPadding>;
1206
1288
  constraints?: LayoutConstraints;
1289
+ /** Reader-facing preferences applied during layering, ordering and placement. */
1290
+ hints?: readonly LayoutHint[];
1207
1291
  measure?: (node: GraphNode) => NodeSize;
1208
1292
  crossingSweeps?: number;
1209
1293
  strategies?: LayeredStrategies;
@@ -1217,11 +1301,20 @@ interface LayeredLayoutOptions {
1217
1301
  portSettings?: (port: GraphPort, node: GraphNode) => ElkLayeredOptionValueByName | undefined;
1218
1302
  }
1219
1303
  //#endregion
1304
+ //#region src/layered/compound.d.ts
1305
+ type CompoundVisualGraph<N = unknown, E = unknown, G = unknown, P = unknown> = VisualGraph<N, E, G, P> & {
1306
+ /** Nodes remain parent-relative; edge rectangles and points are world-space. */
1307
+ readonly edgeCoordinateSpace?: "world";
1308
+ readonly compoundGeometry: ReadonlyMap<string, CompoundLayoutGeometry>;
1309
+ /** World-space route sections preserve label gaps and fallback diagnostics. */
1310
+ readonly compoundRoutes: ReadonlyMap<string, Route>;
1311
+ };
1312
+ //#endregion
1220
1313
  //#region src/layered/strategies.d.ts
1221
1314
  declare const breakCyclesWithDepthFirstSearch: CycleBreaker;
1222
1315
  declare const breakCyclesGreedily: CycleBreaker;
1223
1316
  declare const breakCyclesGreedilyByModelOrder: CycleBreaker;
1224
- /** ELK MODEL_ORDER for flat graphs without FIRST/LAST layer constraints. */
1317
+ /** ELK MODEL_ORDER: layer-constrained nodes (e.g. external port dummies) order before/after the rest. */
1225
1318
  declare const breakCyclesByModelOrder: CycleBreaker;
1226
1319
  /** ELK INTERACTIVE: honor authored x-order, then remove any remaining DFS back edges. */
1227
1320
  declare const breakCyclesInteractively: CycleBreaker;
@@ -1262,7 +1355,7 @@ declare const assignLayersWithMinWidth: LayerAssigner;
1262
1355
  declare const assignLayersWithStretchWidth: LayerAssigner;
1263
1356
  //#endregion
1264
1357
  //#region src/layered/bk-node-placement.d.ts
1265
- /** ELK-compatible Brandes-Koepf placement for implicit center ports. */
1358
+ /** ELK-compatible Brandes-Koepf placement with port-aware compaction. */
1266
1359
  declare function placeNodesWithBrandesKoepf(input: LayeredPhaseInput, order: LayerOrder): NodePlacement;
1267
1360
  //#endregion
1268
1361
  //#region src/layered/linear-segments-node-placement.d.ts
@@ -1274,13 +1367,32 @@ declare function placeNodesWithLinearSegments(input: LayeredPhaseInput, order: L
1274
1367
  declare function placeNodesWithNetworkSimplex(input: LayeredPhaseInput, order: LayerOrder): NodePlacement;
1275
1368
  //#endregion
1276
1369
  //#region src/layered/index.d.ts
1370
+ /** @internal A prepared native scope, before crossing, placement or routing. */
1371
+ interface LayeredCrossingPhase {
1372
+ input: LayeredPhaseInput;
1373
+ orientation: AcyclicOrientation;
1374
+ assignment: LayerAssignment;
1375
+ /** Refresh compound body dimensions after child placement, before this scope resumes. */
1376
+ updateNodeSize(id: string, size: NodeSize): void;
1377
+ finishOrder(order: LayerOrder): LayerOrder;
1378
+ /** Run this scope's standalone minimizer, including authored ordering policies. */
1379
+ minimize(): LayerOrder;
1380
+ }
1381
+ /**
1382
+ * @internal Suspend a native scope at crossing minimization. A hierarchy
1383
+ * coordinator can prepare every scope, share sweep state, then resume each
1384
+ * scope with its final order. The ordinary entry point drains this same pipeline.
1385
+ */
1386
+ declare function createLayeredScopePipeline<N, E, G, P>(graph: Graph<N, E, G, P> | VisualGraph<N, E, G, P>, options: LayeredLayoutOptions, context?: LayoutExecutionContext): Generator<LayeredCrossingPhase, VisualGraph<N, E, G, P>, LayerOrder>;
1277
1387
  /**
1278
1388
  * Deterministic native layered layout for an `@statelyai/graph` graph.
1279
1389
  *
1280
1390
  * Supports flat and nested graphs, cycles, ports, self-loops, four directions,
1281
1391
  * custom phase strategies, and all layered edge-routing styles.
1282
1392
  */
1283
- declare function getLayeredLayout<N, E, G, P>(graph: Graph<N, E, G, P> | VisualGraph<N, E, G, P>, options?: LayeredLayoutOptions): VisualGraph<N, E, G, P>;
1393
+ declare function getLayeredLayout<N, E, G, P>(graph: Graph<N, E, G, P> | VisualGraph<N, E, G, P>, options?: LayeredLayoutOptions): CompoundVisualGraph<N, E, G, P>;
1284
1394
  declare const layeredAlgorithm: LayoutAlgorithm<LayeredLayoutOptions>;
1395
+ /** The pinned ELK adapter retains its established placement/routing contract. */
1396
+ declare const elkjs0111LayeredAlgorithm: LayoutAlgorithm<LayeredLayoutOptions>;
1285
1397
  //#endregion
1286
- export { LayeringStrategy as $, routeEdgesOrthogonally as A, LayerOrder as B, breakCyclesWithModelOrderDepthFirstSearch as C, GeometryReference as Ct, minimizeCrossingsWithModelOrder as D, WaypointConstraint as Dt, minimizeCrossingsWithMedian as E, PinConstraint as Et, CycleBreaker as F, LayoutPadding as G, LayeredPhaseInput as H, EdgeRouter as I, NodeSize as J, NodePlacement as K, EdgeRoutes as L, routeEdgesWithSplines as M, AcyclicOrientation as N, placeNodesInLayers as O, c as Ot, CrossingMinimizer as P, LayeredAdvancedOptions as Q, LayerAssigner as R, breakCyclesWithModelOrderBreadthFirstSearch as S, GeometryAttribute as St, minimizeCrossingsWithBarycenter as T, LinearConstraint as Tt, LayeredSpacing as U, LayeredLayoutOptions as V, LayeredStrategies as W, CycleBreakingStrategy as X, CrossingMinimizationStrategy as Y, EdgeRoutingStyle as Z, breakCyclesByStronglyConnectedNodeType as _, LayoutResult as _t, placeNodesWithBrandesKoepf as a, ElkLayeredOptionName as at, breakCyclesInteractively as b, ConstraintStrength as bt, assignLayersWithNetworkSimplex as c, AnyGraph as ct, assignLayersByLongestPath as d, LayoutDiagnostic as dt, NodePlacementStrategy as et, assignLayersByLongestPathToSink as f, LayoutDirection as ft, breakCyclesByStronglyConnectedConnectivity as g, LayoutRequest as gt, breakCyclesByModelOrder as h, LayoutPhaseMetrics as ht, placeNodesWithLinearSegments as i, ElkLayeredOptionId as it, routeEdgesWithPolylines as j, placeNodesInteractively as k, assignLayersByBreadthFirstModelOrder as l, LayoutAlgorithm as lt, assignLayersWithCoffmanGraham as m, LayoutMetrics as mt, layeredAlgorithm as n, toElkLayeredOptions as nt, assignLayersWithStretchWidth as o, ElkLayeredOptionValueByName as ot, assignLayersInteractively as p, LayoutExecutionContext as pt, NodePlacer as q, placeNodesWithNetworkSimplex as r, elkLayeredEnumValues as rt, assignLayersWithMinWidth as s, elkLayeredOptionDefinitions as st, getLayeredLayout as t, fromElkLayeredOptionId as tt, assignLayersByDepthFirstModelOrder as u, LayoutCapabilities as ut, breakCyclesGreedily as v, LayoutScope as vt, minimizeCrossingsInteractively as w, LayoutConstraint as wt, breakCyclesWithDepthFirstSearch as x, DistributeConstraint as xt, breakCyclesGreedilyByModelOrder as y, AlignConstraint as yt, LayerAssignment as z };
1398
+ export { NodePlacement as $, minimizeCrossingsWithModelOrder as A, LayoutResult as At, CompoundLayoutOptions as B, WaypointConstraint as Bt, breakCyclesInteractively as C, LayoutCapabilities as Ct, minimizeCrossingsInteractively as D, LayoutMetrics as Dt, breakCyclesWithModelOrderDepthFirstSearch as E, LayoutExecutionContext as Et, routeEdgesWithSplines as F, GeometryAttribute as Ft, LayerAssigner as G, CycleBreaker as H, CompoundVisualGraph as I, GeometryReference as It, LayeredLayoutOptions as J, LayerAssignment as K, AcyclicOrientation as L, LayoutConstraint as Lt, placeNodesInteractively as M, AlignConstraint as Mt, routeEdgesOrthogonally as N, ConstraintStrength as Nt, minimizeCrossingsWithBarycenter as O, LayoutPhaseMetrics as Ot, routeEdgesWithPolylines as P, DistributeConstraint as Pt, LayoutPadding as Q, CompoundEdgeAttachment as R, LinearConstraint as Rt, breakCyclesGreedilyByModelOrder as S, LayoutAlgorithm as St, breakCyclesWithModelOrderBreadthFirstSearch as T, LayoutDirection as Tt, EdgeRouter as U, CrossingMinimizer as V, c as Vt, EdgeRoutes as W, LayeredSpacing as X, LayeredPhaseInput as Y, LayeredStrategies as Z, assignLayersWithCoffmanGraham as _, HintStrength as _t, layeredAlgorithm as a, LayeredAdvancedOptions as at, breakCyclesByStronglyConnectedNodeType as b, statechartHints as bt, placeNodesWithBrandesKoepf as c, fromElkLayeredOptionId as ct, assignLayersWithNetworkSimplex as d, ElkLayeredOptionId as dt, NodePlacer as et, assignLayersByBreadthFirstModelOrder as f, ElkLayeredOptionName as ft, assignLayersInteractively as g, ChainHint as gt, assignLayersByLongestPathToSink as h, AnchorHint as ht, getLayeredLayout as i, EdgeRoutingStyle as it, placeNodesInLayers as j, LayoutScope as jt, minimizeCrossingsWithMedian as k, LayoutRequest as kt, assignLayersWithStretchWidth as l, toElkLayeredOptions as lt, assignLayersByLongestPath as m, elkLayeredOptionDefinitions as mt, createLayeredScopePipeline as n, CrossingMinimizationStrategy as nt, placeNodesWithNetworkSimplex as o, LayeringStrategy as ot, assignLayersByDepthFirstModelOrder as p, ElkLayeredOptionValueByName as pt, LayerOrder as q, elkjs0111LayeredAlgorithm as r, CycleBreakingStrategy as rt, placeNodesWithLinearSegments as s, NodePlacementStrategy as st, LayeredCrossingPhase as t, NodeSize as tt, assignLayersWithMinWidth as u, elkLayeredEnumValues as ut, breakCyclesByModelOrder as v, LayoutHint as vt, breakCyclesWithDepthFirstSearch as w, LayoutDiagnostic as wt, breakCyclesGreedily as x, AnyGraph as xt, breakCyclesByStronglyConnectedConnectivity as y, hint as yt, CompoundLayoutGeometry as z, PinConstraint as zt };