@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.
- package/NOTICE.md +4 -2
- package/README.md +221 -13
- package/dist/elkjs/index.cjs +3 -2
- package/dist/elkjs/index.d.cts +13 -2
- package/dist/elkjs/index.d.mts +13 -2
- package/dist/elkjs/index.mjs +3 -3
- package/dist/elkjs/main.cjs +2 -2
- package/dist/elkjs/main.d.cts +2 -2
- package/dist/elkjs/main.d.mts +2 -2
- package/dist/elkjs/main.mjs +2 -2
- package/dist/elkjs/worker-api.cjs +1 -1
- package/dist/elkjs/worker-api.d.cts +2 -2
- package/dist/elkjs/worker-api.d.mts +2 -2
- package/dist/elkjs/worker-api.mjs +1 -1
- package/dist/elkjs/worker.cjs +2 -2
- package/dist/elkjs/worker.mjs +2 -2
- package/dist/elkjs-UciYx7lD.mjs +2973 -0
- package/dist/elkjs-ggjsBuVP.cjs +3002 -0
- package/dist/index-B6cWNrMw.d.cts +80 -0
- package/dist/index-CJQLUKD9.d.mts +80 -0
- package/dist/{index-BSH2bloA.d.mts → index-DT6lPMfS.d.cts} +117 -5
- package/dist/{index-CG712jzV.d.cts → index-F1U-fCTu.d.mts} +117 -5
- package/dist/index.cjs +39 -9
- package/dist/index.d.cts +4 -3
- package/dist/index.d.mts +4 -3
- package/dist/index.mjs +4 -3
- package/dist/layered/index.cjs +3 -1
- package/dist/layered/index.d.cts +3 -2
- package/dist/layered/index.d.mts +3 -2
- package/dist/layered/index.mjs +2 -2
- package/dist/{layered-Bz2nWmVp.mjs → layered-C7ERzZjR.mjs} +12592 -4682
- package/dist/{layered-Cf9Rn8l7.cjs → layered-CBPg6_6_.cjs} +12711 -4717
- package/dist/{layout-engine-BNex9jxg.cjs → layout-engine-DAw06RhN.cjs} +5 -18
- package/dist/{layout-engine-WbC0YjjT.mjs → layout-engine-DC3IYkIy.mjs} +3 -10
- package/dist/routing/index.cjs +29 -0
- package/dist/routing/index.d.cts +3 -0
- package/dist/routing/index.d.mts +3 -0
- package/dist/routing/index.mjs +3 -0
- package/dist/routing-CR8flv8b.mjs +2780 -0
- package/dist/routing-QIdGGFBe.cjs +2996 -0
- package/dist/types-CT2akdK0.d.mts +133 -0
- package/dist/types-uxPlGRof.d.cts +133 -0
- package/dist/{worker-client-DAT_z2OR.d.mts → worker-client-BwGGRD5y.d.mts} +1 -1
- package/dist/{worker-client-DVhklF6A.d.cts → worker-client-D4zNyPEI.d.cts} +1 -1
- package/package.json +14 -3
- package/src/authoring/coordinates.ts +38 -10
- package/src/authoring/partial.ts +7 -2
- package/src/authoring/routing.ts +4 -1
- package/src/constraints.ts +174 -6
- package/src/elkjs/index.ts +1397 -452
- package/src/elkjs/layout-quality.ts +219 -0
- package/src/elkjs/opposing-tracks.ts +161 -0
- package/src/elkjs/orthogonal-junctions.ts +174 -0
- package/src/elkjs/routes.ts +147 -0
- package/src/elkjs/statechart.ts +9 -3
- package/src/elkjs/types.ts +2 -0
- package/src/index.ts +8 -0
- package/src/internal/elkjs-compatibility.ts +4 -1
- package/src/internal/layered-trace.ts +48 -0
- package/src/internal/layout-engine.ts +2 -1
- package/src/java-random.ts +6 -0
- package/src/layered/bk-node-placement.ts +403 -92
- package/src/layered/center-labels.ts +398 -0
- package/src/layered/compaction-bounds.ts +26 -0
- package/src/layered/compaction-errors.ts +2 -0
- package/src/layered/compaction-scanline.ts +63 -0
- package/src/layered/compound-boundaries.ts +99 -0
- package/src/layered/compound.ts +445 -0
- package/src/layered/constraint-orientation.ts +141 -0
- package/src/layered/crossing-constraints.ts +243 -0
- package/src/layered/crossing-counter.ts +221 -0
- package/src/layered/crossing-graph.ts +401 -0
- package/src/layered/cycle-random.ts +22 -0
- package/src/layered/elk-port-lists.ts +243 -0
- package/src/layered/end-labels.ts +124 -0
- package/src/layered/external-port-dummy.ts +137 -0
- package/src/layered/feedback-chains.ts +114 -0
- package/src/layered/fixed-self-loop.ts +150 -0
- package/src/layered/greedy-switch-decider.ts +356 -0
- package/src/layered/grouped-compaction.ts +787 -0
- package/src/layered/gwt-sort.ts +53 -0
- package/src/layered/hierarchical-port-phases.ts +242 -0
- package/src/layered/hierarchical-port-restoration.ts +233 -0
- package/src/layered/hierarchical-port-routing.ts +179 -0
- package/src/layered/hierarchy-crossing.ts +121 -0
- package/src/layered/hierarchy-sweepiness.ts +83 -0
- package/src/layered/hints.ts +371 -0
- package/src/layered/hyperedge-dummy-merger.ts +195 -0
- package/src/layered/index.ts +911 -261
- package/src/layered/initial-model-order.ts +404 -0
- package/src/layered/inverted-ports.ts +207 -0
- package/src/layered/label-dummy-switcher.ts +200 -0
- package/src/layered/long-edges.ts +135 -44
- package/src/layered/loop-envelopes.ts +184 -0
- package/src/layered/native-routing.ts +275 -0
- package/src/layered/network-simplex.ts +11 -15
- package/src/layered/node-margins.ts +59 -0
- package/src/layered/north-south-ports.ts +271 -0
- package/src/layered/opposing-tracks.ts +944 -0
- package/src/layered/orthogonal-cycle-order.ts +106 -0
- package/src/layered/orthogonal-hypersegments.ts +92 -0
- package/src/layered/orthogonal-junctions.ts +202 -0
- package/src/layered/orthogonal-segments.ts +243 -0
- package/src/layered/placement-orientation.ts +22 -0
- package/src/layered/port-distributor.ts +192 -0
- package/src/layered/port-edge-order.ts +20 -0
- package/src/layered/replace-routing.ts +45 -0
- package/src/layered/routing-coordinates.ts +32 -0
- package/src/layered/separate-exterior-labels.ts +24 -6
- package/src/layered/spacing.ts +34 -12
- package/src/layered/splitter-order.ts +106 -0
- package/src/layered/strategies.ts +2024 -883
- package/src/layered/types.ts +34 -0
- package/src/layered/weighted-compaction.ts +84 -0
- package/src/routing/adapters.ts +143 -0
- package/src/routing/algorithms.ts +1088 -0
- package/src/routing/coordination.ts +91 -0
- package/src/routing/engine.ts +473 -0
- package/src/routing/index.ts +69 -0
- package/src/routing/layout-cache.ts +65 -0
- package/src/routing/model.ts +218 -0
- package/src/routing/path.ts +324 -0
- package/src/routing/persistent.ts +117 -0
- package/src/routing/search.ts +358 -0
- package/src/routing/spatial.ts +78 -0
- package/src/routing/types.ts +146 -0
- package/dist/elkjs-BVnDwnBQ.cjs +0 -1551
- package/dist/elkjs-CFlfkEBz.mjs +0 -1528
- /package/dist/{public-types-B8rAALJq.d.mts → public-types-9NCPoqbp.d.mts} +0 -0
- /package/dist/{public-types-CVB0hXGk.d.cts → public-types-BcRZoJE3.d.cts} +0 -0
- /package/dist/{worker-client-DkwS4sHx.mjs → worker-client-BNjwT1AJ.mjs} +0 -0
- /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 {
|
|
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
|
|
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
|
|
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):
|
|
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 {
|
|
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 {
|
|
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
|
|
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
|
|
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):
|
|
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 {
|
|
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 };
|