@statelyai/layout 0.1.3 → 0.3.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 (85) hide show
  1. package/NOTICE.md +43 -0
  2. package/README.md +153 -6
  3. package/dist/elkjs/index.cjs +9 -0
  4. package/dist/elkjs/index.d.cts +155 -0
  5. package/dist/elkjs/index.d.mts +51 -39
  6. package/dist/elkjs/index.mjs +3 -1484
  7. package/dist/elkjs/main.cjs +17 -0
  8. package/dist/elkjs/main.d.cts +10 -0
  9. package/dist/elkjs/main.d.mts +11 -0
  10. package/dist/elkjs/main.mjs +17 -0
  11. package/dist/elkjs/worker-api.cjs +3 -0
  12. package/dist/elkjs/worker-api.d.cts +3 -0
  13. package/dist/elkjs/worker-api.d.mts +3 -0
  14. package/dist/elkjs/worker-api.mjs +3 -0
  15. package/dist/elkjs/worker.cjs +86 -0
  16. package/dist/elkjs/worker.d.cts +17 -0
  17. package/dist/elkjs/worker.d.mts +17 -0
  18. package/dist/elkjs/worker.mjs +86 -0
  19. package/dist/elkjs-DaHMISnQ.mjs +1677 -0
  20. package/dist/elkjs-dMghiiWW.cjs +1706 -0
  21. package/dist/index-BEA_pzeT.d.cts +72 -0
  22. package/dist/{index-8xYkohbz.d.mts → index-D9dhxrRl.d.cts} +111 -5
  23. package/dist/index-DNTLRsDl.d.mts +72 -0
  24. package/dist/index-DNixtE3h.d.mts +1318 -0
  25. package/dist/index.cjs +215 -0
  26. package/dist/index.d.cts +78 -0
  27. package/dist/index.d.mts +4 -3
  28. package/dist/index.mjs +25 -25
  29. package/dist/layered/index.cjs +38 -0
  30. package/dist/layered/index.d.cts +3 -0
  31. package/dist/layered/index.d.mts +3 -2
  32. package/dist/layered/index.mjs +1 -1
  33. package/dist/layered-B2buJqMf.cjs +12009 -0
  34. package/dist/{layered-CoeH9LRO.mjs → layered-DGFTeQSl.mjs} +2323 -149
  35. package/dist/{spore-BtTSZbb6.mjs → layout-engine-Cs5tatA6.mjs} +159 -5
  36. package/dist/layout-engine-Dn1PiFwP.cjs +712 -0
  37. package/dist/public-types-9NCPoqbp.d.mts +109 -0
  38. package/dist/public-types-BcRZoJE3.d.cts +109 -0
  39. package/dist/routing/index.cjs +28 -0
  40. package/dist/routing/index.d.cts +3 -0
  41. package/dist/routing/index.d.mts +3 -0
  42. package/dist/routing/index.mjs +3 -0
  43. package/dist/routing-A2hrK9MP.mjs +2396 -0
  44. package/dist/routing-ujEP7Qh6.cjs +2606 -0
  45. package/dist/types-CT2akdK0.d.mts +133 -0
  46. package/dist/types-uxPlGRof.d.cts +133 -0
  47. package/dist/worker-client-BNjwT1AJ.mjs +92 -0
  48. package/dist/worker-client-BwGGRD5y.d.mts +19 -0
  49. package/dist/worker-client-D4oEvhAl.cjs +98 -0
  50. package/dist/worker-client-D4zNyPEI.d.cts +19 -0
  51. package/package.json +45 -10
  52. package/src/authoring/coordinates.ts +114 -0
  53. package/src/authoring/partial.ts +584 -0
  54. package/src/authoring/routing.ts +211 -0
  55. package/src/box.ts +22 -0
  56. package/src/constraints.ts +222 -0
  57. package/src/elkjs/index.ts +104 -39
  58. package/src/elkjs/main.ts +19 -0
  59. package/src/elkjs/public-types.ts +125 -0
  60. package/src/elkjs/routes.ts +147 -0
  61. package/src/elkjs/worker-api.ts +29 -0
  62. package/src/elkjs/worker-client.ts +138 -0
  63. package/src/elkjs/worker.ts +117 -0
  64. package/src/index.ts +19 -0
  65. package/src/internal/elkjs-compatibility.ts +17 -0
  66. package/src/internal/layout-engine.ts +126 -0
  67. package/src/layered/compound.ts +417 -0
  68. package/src/layered/index.ts +58 -105
  69. package/src/layered/types.ts +21 -0
  70. package/src/layout.ts +35 -28
  71. package/src/packing.ts +22 -0
  72. package/src/random.ts +75 -3
  73. package/src/routing/adapters.ts +111 -0
  74. package/src/routing/algorithms.ts +676 -0
  75. package/src/routing/coordination.ts +86 -0
  76. package/src/routing/engine.ts +473 -0
  77. package/src/routing/index.ts +68 -0
  78. package/src/routing/layout-cache.ts +65 -0
  79. package/src/routing/model.ts +218 -0
  80. package/src/routing/path.ts +324 -0
  81. package/src/routing/persistent.ts +117 -0
  82. package/src/routing/search.ts +276 -0
  83. package/src/routing/spatial.ts +78 -0
  84. package/src/routing/types.ts +146 -0
  85. package/src/types.ts +17 -2
@@ -0,0 +1,1318 @@
1
+ import { r as Route } from "./types-CT2akdK0.mjs";
2
+ import { LayoutConstraints } from "@statelyai/graph/layout";
3
+ import { EntityRect, Graph, GraphEdge, GraphNode, GraphPatch, GraphPort, Point, VisualGraph } from "@statelyai/graph";
4
+
5
+ //#region src/constraints.d.ts
6
+ type GeometryReference = {
7
+ nodeId: string;
8
+ } | {
9
+ edgeId: string;
10
+ part: "label";
11
+ };
12
+ type ConstraintStrength = "required" | "strong" | "medium" | "weak";
13
+ type GeometryAttribute = "x" | "y" | "centerX" | "centerY" | "right" | "bottom";
14
+ interface ConstraintBase {
15
+ id: string;
16
+ strength?: ConstraintStrength;
17
+ }
18
+ interface AlignConstraint extends ConstraintBase {
19
+ kind: "align";
20
+ entities: readonly GeometryReference[];
21
+ axis: "x" | "y";
22
+ anchor?: "start" | "center" | "end";
23
+ }
24
+ interface DistributeConstraint extends ConstraintBase {
25
+ kind: "distribute";
26
+ entities: readonly GeometryReference[];
27
+ axis: "x" | "y";
28
+ spacing?: "gaps" | "centers";
29
+ gap?: number;
30
+ }
31
+ interface PinConstraint extends ConstraintBase {
32
+ kind: "pin";
33
+ entity: GeometryReference;
34
+ x?: number;
35
+ y?: number;
36
+ }
37
+ interface LinearConstraint extends ConstraintBase {
38
+ kind: "linear";
39
+ terms: readonly {
40
+ entity: GeometryReference;
41
+ attribute: GeometryAttribute;
42
+ coefficient: number;
43
+ }[];
44
+ relation: "eq" | "le" | "ge";
45
+ value: number;
46
+ }
47
+ interface WaypointConstraint extends ConstraintBase {
48
+ kind: "waypoint";
49
+ edgeId: string;
50
+ point: {
51
+ x: number;
52
+ y: number;
53
+ };
54
+ }
55
+ type LayoutConstraint = AlignConstraint | DistributeConstraint | PinConstraint | LinearConstraint | WaypointConstraint;
56
+ /** Serializable constraint constructors; graph geometry stays in @statelyai/graph. */
57
+ declare const c: {
58
+ align: (value: Omit<AlignConstraint, "kind">) => AlignConstraint;
59
+ distribute: (value: Omit<DistributeConstraint, "kind">) => DistributeConstraint;
60
+ pin: (value: Omit<PinConstraint, "kind">) => PinConstraint;
61
+ linear: (value: Omit<LinearConstraint, "kind">) => LinearConstraint;
62
+ waypoint: (value: Omit<WaypointConstraint, "kind">) => WaypointConstraint;
63
+ };
64
+ //#endregion
65
+ //#region src/types.d.ts
66
+ type AnyGraph = Graph<unknown, unknown, unknown, unknown>;
67
+ type LayoutDirection = "up" | "down" | "left" | "right";
68
+ type LayoutScope = {
69
+ mode: "full";
70
+ } | {
71
+ mode: "incremental";
72
+ previous: VisualGraph;
73
+ } | {
74
+ mode: "partial";
75
+ /** Missing current geometry falls back to these matching entity IDs. */
76
+ previous?: VisualGraph;
77
+ /** Position permission only. Omitted or empty selects no nodes. */
78
+ nodeIds?: readonly string[];
79
+ /** Edge selection never grants permission to move endpoints. */
80
+ edgeIds?: readonly string[];
81
+ /** Defaults to affected; automatic changes obey edgeGeometry. */
82
+ routing?: "selected" | "affected";
83
+ /** Defaults to both; dimensions remain fixed. */
84
+ edgeGeometry?: "routes" | "labels" | "both";
85
+ } | {
86
+ mode: "route-only";
87
+ previous: VisualGraph;
88
+ edgeIds?: readonly string[];
89
+ };
90
+ interface LayoutDiagnostic {
91
+ severity: "info" | "warning" | "error";
92
+ code: string;
93
+ message: string;
94
+ entityIds?: readonly string[];
95
+ phase?: string;
96
+ constraintIds?: readonly string[];
97
+ geometry?: "node" | "routes" | "labels";
98
+ }
99
+ interface LayoutPhaseMetrics {
100
+ id: string;
101
+ durationMs: number;
102
+ }
103
+ interface LayoutMetrics {
104
+ durationMs: number;
105
+ nodeCount: number;
106
+ edgeCount: number;
107
+ phases: readonly LayoutPhaseMetrics[];
108
+ }
109
+ interface LayoutCapabilities {
110
+ /** Common geometry constraints; absent means unsupported. */
111
+ constraints?: boolean;
112
+ full: boolean;
113
+ incremental: boolean;
114
+ partial: boolean;
115
+ routeOnly: boolean;
116
+ hierarchy: boolean;
117
+ ports: boolean;
118
+ }
119
+ interface LayoutAlgorithm<Options = unknown> {
120
+ readonly id: string;
121
+ readonly capabilities: LayoutCapabilities;
122
+ layout<N, E, G, P>(graph: Graph<N, E, G, P> | VisualGraph<N, E, G, P>, options: Options, context: LayoutExecutionContext): VisualGraph<N, E, G, P> | Promise<VisualGraph<N, E, G, P>>;
123
+ }
124
+ interface LayoutExecutionContext {
125
+ readonly scope: LayoutScope;
126
+ readonly constraints?: readonly LayoutConstraint[];
127
+ readonly signal?: AbortSignal;
128
+ readonly diagnostics: LayoutDiagnostic[];
129
+ measurePhase<T>(id: string, run: () => T): T;
130
+ throwIfAborted(): void;
131
+ }
132
+ interface LayoutRequest<N = unknown, E = unknown, G = unknown, P = unknown, O = unknown> {
133
+ graph: Graph<N, E, G, P> | VisualGraph<N, E, G, P>;
134
+ algorithm?: string | LayoutAlgorithm<O>;
135
+ options?: O;
136
+ scope?: LayoutScope;
137
+ constraints?: readonly LayoutConstraint[];
138
+ signal?: AbortSignal;
139
+ }
140
+ interface LayoutResult<N = unknown, E = unknown, G = unknown, P = unknown> {
141
+ graph: VisualGraph<N, E, G, P>;
142
+ patches: readonly GraphPatch<N, E>[];
143
+ diagnostics: readonly LayoutDiagnostic[];
144
+ metrics: LayoutMetrics;
145
+ }
146
+ //#endregion
147
+ //#region src/layered/elk-options.generated.d.ts
148
+ interface ElkLayeredOptionValueByName {
149
+ "spacing.commentComment"?: number;
150
+ "spacing.commentNode"?: number;
151
+ "spacing.componentComponent"?: number;
152
+ "spacing.edgeEdge"?: number;
153
+ "spacing.edgeLabel"?: number;
154
+ "spacing.edgeNode"?: number;
155
+ "spacing.labelLabel"?: number;
156
+ "spacing.labelPortHorizontal"?: number;
157
+ "spacing.labelPortVertical"?: number;
158
+ "spacing.labelNode"?: number;
159
+ "spacing.node"?: number;
160
+ "spacing.nodeSelfLoop"?: number;
161
+ "spacing.portPort"?: number;
162
+ "spacing.individual"?: unknown;
163
+ "spacing.baseValue"?: number;
164
+ "spacing.edgeEdgeBetweenLayers"?: number;
165
+ "spacing.edgeNodeBetweenLayers"?: number;
166
+ "spacing.layer"?: number;
167
+ "priority"?: number;
168
+ "priority.direction"?: number;
169
+ "priority.shortness"?: number;
170
+ "priority.straightness"?: number;
171
+ "wrapping.strategy"?: string;
172
+ "wrapping.additionalEdgeSpacing"?: number;
173
+ "wrapping.correctionFactor"?: number;
174
+ "wrapping.cutting.strategy"?: string;
175
+ "wrapping.cutting.cuts"?: unknown;
176
+ "wrapping.cutting.msd.freedom"?: number;
177
+ "wrapping.validify.strategy"?: string;
178
+ "wrapping.validify.forbiddenIndices"?: unknown;
179
+ "wrapping.multiEdge.improveCuts"?: boolean;
180
+ "wrapping.multiEdge.distancePenalty"?: number;
181
+ "wrapping.multiEdge.improveWrappedEdges"?: boolean;
182
+ "layerUnzipping.strategy"?: string;
183
+ "layerUnzipping.minimizeEdgeLength"?: boolean;
184
+ "layerUnzipping.layerSplit"?: number;
185
+ "layerUnzipping.resetOnLongEdges"?: boolean;
186
+ "nodePlacement.networkSimplex.nodeFlexibility"?: string;
187
+ "nodePlacement.networkSimplex.nodeFlexibility.default"?: string;
188
+ "edgeRouting.splines.mode"?: string;
189
+ "edgeRouting.splines.sloppy.layerSpacingFactor"?: number;
190
+ "topdownLayout"?: boolean;
191
+ "topdown.scaleFactor"?: number;
192
+ "topdown.hierarchicalNodeWidth"?: number;
193
+ "topdown.hierarchicalNodeAspectRatio"?: number;
194
+ "topdown.nodeType"?: string;
195
+ "padding"?: unknown;
196
+ "edgeRouting"?: string;
197
+ "port.borderOffset"?: number;
198
+ "randomSeed"?: number;
199
+ "aspectRatio"?: number;
200
+ "noLayout"?: boolean;
201
+ "portConstraints"?: string;
202
+ "port.side"?: string;
203
+ "debugMode"?: boolean;
204
+ "alignment"?: string;
205
+ "hierarchyHandling"?: string;
206
+ "separateConnectedComponents"?: boolean;
207
+ "insideSelfLoops.activate"?: boolean;
208
+ "insideSelfLoops.yo"?: boolean;
209
+ "nodeSize.constraints"?: string;
210
+ "nodeSize.options"?: string;
211
+ "nodeSize.fixedGraphSize"?: boolean;
212
+ "direction"?: string;
213
+ "nodeLabels.placement"?: string;
214
+ "nodeLabels.padding"?: unknown;
215
+ "portLabels.placement"?: string;
216
+ "portLabels.nextToPortIfPossible"?: boolean;
217
+ "portLabels.treatAsGroup"?: boolean;
218
+ "portAlignment.default"?: string;
219
+ "portAlignment.north"?: string;
220
+ "portAlignment.south"?: string;
221
+ "portAlignment.west"?: string;
222
+ "portAlignment.east"?: string;
223
+ "unnecessaryBendpoints"?: boolean;
224
+ "layering.strategy"?: string;
225
+ "layering.nodePromotion.strategy"?: string;
226
+ "thoroughness"?: number;
227
+ "layering.layerConstraint"?: string;
228
+ "cycleBreaking.strategy"?: string;
229
+ "crossingMinimization.strategy"?: string;
230
+ "crossingMinimization.forceNodeModelOrder"?: boolean;
231
+ "crossingMinimization.greedySwitch.activationThreshold"?: number;
232
+ "crossingMinimization.greedySwitch.type"?: string;
233
+ "crossingMinimization.greedySwitchHierarchical.type"?: string;
234
+ "crossingMinimization.semiInteractive"?: boolean;
235
+ "mergeEdges"?: boolean;
236
+ "mergeHierarchyEdges"?: boolean;
237
+ "interactiveReferencePoint"?: string;
238
+ "nodePlacement.strategy"?: string;
239
+ "nodePlacement.bk.fixedAlignment"?: string;
240
+ "feedbackEdges"?: boolean;
241
+ "nodePlacement.linearSegments.deflectionDampening"?: number;
242
+ "edgeRouting.selfLoopDistribution"?: string;
243
+ "edgeRouting.selfLoopOrdering"?: string;
244
+ "contentAlignment"?: string;
245
+ "nodePlacement.bk.edgeStraightening"?: string;
246
+ "compaction.postCompaction.strategy"?: string;
247
+ "compaction.postCompaction.constraints"?: string;
248
+ "compaction.connectedComponents"?: boolean;
249
+ "highDegreeNodes.treatment"?: boolean;
250
+ "highDegreeNodes.threshold"?: number;
251
+ "highDegreeNodes.treeHeight"?: number;
252
+ "nodeSize.minimum"?: unknown;
253
+ "junctionPoints"?: unknown;
254
+ "edge.thickness"?: number;
255
+ "edgeLabels.placement"?: string;
256
+ "edgeLabels.inline"?: boolean;
257
+ "crossingMinimization.hierarchicalSweepiness"?: number;
258
+ "port.index"?: number;
259
+ "commentBox"?: boolean;
260
+ "hypernode"?: boolean;
261
+ "port.anchor"?: unknown;
262
+ "partitioning.activate"?: boolean;
263
+ "partitioning.partition"?: number;
264
+ "layering.minWidth.upperBoundOnWidth"?: number;
265
+ "layering.minWidth.upperLayerEstimationScalingFactor"?: number;
266
+ "position"?: unknown;
267
+ "allowNonFlowPortsToSwitchSides"?: boolean;
268
+ "layering.nodePromotion.maxIterations"?: number;
269
+ "edgeLabels.sideSelection"?: string;
270
+ "edgeLabels.centerLabelPlacementStrategy"?: string;
271
+ "margins"?: unknown;
272
+ "layering.coffmanGraham.layerBound"?: number;
273
+ "nodePlacement.favorStraightEdges"?: boolean;
274
+ "spacing.portsSurrounding"?: unknown;
275
+ "directionCongruency"?: string;
276
+ "portSortingStrategy"?: string;
277
+ "edgeRouting.polyline.slopedEdgeZoneWidth"?: number;
278
+ "crossingMinimization.inLayerPredOf"?: string;
279
+ "crossingMinimization.inLayerSuccOf"?: string;
280
+ "layering.layerChoiceConstraint"?: number;
281
+ "crossingMinimization.positionChoiceConstraint"?: number;
282
+ "interactiveLayout"?: boolean;
283
+ "layering.layerId"?: number;
284
+ "crossingMinimization.positionId"?: number;
285
+ "considerModelOrder.strategy"?: string;
286
+ "considerModelOrder.longEdgeStrategy"?: string;
287
+ "considerModelOrder.crossingCounterNodeInfluence"?: number;
288
+ "considerModelOrder.crossingCounterPortInfluence"?: number;
289
+ "considerModelOrder.noModelOrder"?: boolean;
290
+ "considerModelOrder.components"?: string;
291
+ "considerModelOrder.portModelOrder"?: boolean;
292
+ "considerModelOrder.groupModelOrder.cycleBreakingId"?: number;
293
+ "considerModelOrder.groupModelOrder.crossingMinimizationId"?: number;
294
+ "considerModelOrder.groupModelOrder.componentGroupId"?: number;
295
+ "considerModelOrder.groupModelOrder.cbGroupOrderStrategy"?: string;
296
+ "considerModelOrder.groupModelOrder.cmGroupOrderStrategy"?: string;
297
+ "considerModelOrder.groupModelOrder.cmEnforcedGroupOrders"?: unknown;
298
+ "considerModelOrder.groupModelOrder.cbPreferredSourceId"?: number;
299
+ "considerModelOrder.groupModelOrder.cbPreferredTargetId"?: number;
300
+ "generatePositionAndLayerIds"?: boolean;
301
+ }
302
+ declare const elkLayeredOptionDefinitions: readonly [{
303
+ readonly name: "spacing.commentComment";
304
+ readonly elkId: "org.eclipse.elk.spacing.commentComment";
305
+ readonly type: "DOUBLE";
306
+ readonly targets: readonly ["PARENTS"];
307
+ }, {
308
+ readonly name: "spacing.commentNode";
309
+ readonly elkId: "org.eclipse.elk.spacing.commentNode";
310
+ readonly type: "DOUBLE";
311
+ readonly targets: readonly ["PARENTS"];
312
+ }, {
313
+ readonly name: "spacing.componentComponent";
314
+ readonly elkId: "org.eclipse.elk.spacing.componentComponent";
315
+ readonly type: "DOUBLE";
316
+ readonly targets: readonly ["PARENTS"];
317
+ }, {
318
+ readonly name: "spacing.edgeEdge";
319
+ readonly elkId: "org.eclipse.elk.spacing.edgeEdge";
320
+ readonly type: "DOUBLE";
321
+ readonly targets: readonly ["PARENTS"];
322
+ }, {
323
+ readonly name: "spacing.edgeLabel";
324
+ readonly elkId: "org.eclipse.elk.spacing.edgeLabel";
325
+ readonly type: "DOUBLE";
326
+ readonly targets: readonly ["PARENTS"];
327
+ }, {
328
+ readonly name: "spacing.edgeNode";
329
+ readonly elkId: "org.eclipse.elk.spacing.edgeNode";
330
+ readonly type: "DOUBLE";
331
+ readonly targets: readonly ["PARENTS"];
332
+ }, {
333
+ readonly name: "spacing.labelLabel";
334
+ readonly elkId: "org.eclipse.elk.spacing.labelLabel";
335
+ readonly type: "DOUBLE";
336
+ readonly targets: readonly ["PARENTS"];
337
+ }, {
338
+ readonly name: "spacing.labelPortHorizontal";
339
+ readonly elkId: "org.eclipse.elk.spacing.labelPortHorizontal";
340
+ readonly type: "DOUBLE";
341
+ readonly targets: readonly ["PARENTS"];
342
+ }, {
343
+ readonly name: "spacing.labelPortVertical";
344
+ readonly elkId: "org.eclipse.elk.spacing.labelPortVertical";
345
+ readonly type: "DOUBLE";
346
+ readonly targets: readonly ["PARENTS"];
347
+ }, {
348
+ readonly name: "spacing.labelNode";
349
+ readonly elkId: "org.eclipse.elk.spacing.labelNode";
350
+ readonly type: "DOUBLE";
351
+ readonly targets: readonly ["PARENTS"];
352
+ }, {
353
+ readonly name: "spacing.node";
354
+ readonly elkId: "org.eclipse.elk.spacing.nodeNode";
355
+ readonly type: "DOUBLE";
356
+ readonly targets: readonly ["PARENTS"];
357
+ }, {
358
+ readonly name: "spacing.nodeSelfLoop";
359
+ readonly elkId: "org.eclipse.elk.spacing.nodeSelfLoop";
360
+ readonly type: "DOUBLE";
361
+ readonly targets: readonly ["PARENTS"];
362
+ }, {
363
+ readonly name: "spacing.portPort";
364
+ readonly elkId: "org.eclipse.elk.spacing.portPort";
365
+ readonly type: "DOUBLE";
366
+ readonly targets: readonly ["PARENTS", "NODES"];
367
+ }, {
368
+ readonly name: "spacing.individual";
369
+ readonly elkId: "org.eclipse.elk.spacing.individual";
370
+ readonly type: "OBJECT";
371
+ readonly targets: readonly ["NODES", "EDGES", "PORTS", "LABELS"];
372
+ }, {
373
+ readonly name: "spacing.baseValue";
374
+ readonly elkId: "org.eclipse.elk.layered.spacing.baseValue";
375
+ readonly type: "DOUBLE";
376
+ readonly targets: readonly ["PARENTS"];
377
+ }, {
378
+ readonly name: "spacing.edgeEdgeBetweenLayers";
379
+ readonly elkId: "org.eclipse.elk.layered.spacing.edgeEdgeBetweenLayers";
380
+ readonly type: "DOUBLE";
381
+ readonly targets: readonly ["PARENTS"];
382
+ }, {
383
+ readonly name: "spacing.edgeNodeBetweenLayers";
384
+ readonly elkId: "org.eclipse.elk.layered.spacing.edgeNodeBetweenLayers";
385
+ readonly type: "DOUBLE";
386
+ readonly targets: readonly ["PARENTS"];
387
+ }, {
388
+ readonly name: "spacing.layer";
389
+ readonly elkId: "org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers";
390
+ readonly type: "DOUBLE";
391
+ readonly targets: readonly ["PARENTS"];
392
+ }, {
393
+ readonly name: "priority";
394
+ readonly elkId: "org.eclipse.elk.priority";
395
+ readonly type: "INT";
396
+ readonly targets: readonly ["NODES", "EDGES"];
397
+ }, {
398
+ readonly name: "priority.direction";
399
+ readonly elkId: "org.eclipse.elk.layered.priority.direction";
400
+ readonly type: "INT";
401
+ readonly targets: readonly ["EDGES"];
402
+ }, {
403
+ readonly name: "priority.shortness";
404
+ readonly elkId: "org.eclipse.elk.layered.priority.shortness";
405
+ readonly type: "INT";
406
+ readonly targets: readonly ["EDGES"];
407
+ }, {
408
+ readonly name: "priority.straightness";
409
+ readonly elkId: "org.eclipse.elk.layered.priority.straightness";
410
+ readonly type: "INT";
411
+ readonly targets: readonly ["EDGES"];
412
+ }, {
413
+ readonly name: "wrapping.strategy";
414
+ readonly elkId: "org.eclipse.elk.layered.wrapping.strategy";
415
+ readonly type: "ENUM";
416
+ readonly targets: readonly ["PARENTS"];
417
+ }, {
418
+ readonly name: "wrapping.additionalEdgeSpacing";
419
+ readonly elkId: "org.eclipse.elk.layered.wrapping.additionalEdgeSpacing";
420
+ readonly type: "DOUBLE";
421
+ readonly targets: readonly ["PARENTS"];
422
+ }, {
423
+ readonly name: "wrapping.correctionFactor";
424
+ readonly elkId: "org.eclipse.elk.layered.wrapping.correctionFactor";
425
+ readonly type: "DOUBLE";
426
+ readonly targets: readonly ["PARENTS"];
427
+ }, {
428
+ readonly name: "wrapping.cutting.strategy";
429
+ readonly elkId: "org.eclipse.elk.layered.wrapping.cutting.strategy";
430
+ readonly type: "ENUM";
431
+ readonly targets: readonly ["PARENTS"];
432
+ }, {
433
+ readonly name: "wrapping.cutting.cuts";
434
+ readonly elkId: "org.eclipse.elk.layered.wrapping.cutting.cuts";
435
+ readonly type: "OBJECT";
436
+ readonly targets: readonly ["PARENTS"];
437
+ }, {
438
+ readonly name: "wrapping.cutting.msd.freedom";
439
+ readonly elkId: "org.eclipse.elk.layered.wrapping.cutting.msd.freedom";
440
+ readonly type: "INT";
441
+ readonly targets: readonly ["PARENTS"];
442
+ }, {
443
+ readonly name: "wrapping.validify.strategy";
444
+ readonly elkId: "org.eclipse.elk.layered.wrapping.validify.strategy";
445
+ readonly type: "ENUM";
446
+ readonly targets: readonly ["PARENTS"];
447
+ }, {
448
+ readonly name: "wrapping.validify.forbiddenIndices";
449
+ readonly elkId: "org.eclipse.elk.layered.wrapping.validify.forbiddenIndices";
450
+ readonly type: "OBJECT";
451
+ readonly targets: readonly ["PARENTS"];
452
+ }, {
453
+ readonly name: "wrapping.multiEdge.improveCuts";
454
+ readonly elkId: "org.eclipse.elk.layered.wrapping.multiEdge.improveCuts";
455
+ readonly type: "BOOLEAN";
456
+ readonly targets: readonly ["PARENTS"];
457
+ }, {
458
+ readonly name: "wrapping.multiEdge.distancePenalty";
459
+ readonly elkId: "org.eclipse.elk.layered.wrapping.multiEdge.distancePenalty";
460
+ readonly type: "DOUBLE";
461
+ readonly targets: readonly ["PARENTS"];
462
+ }, {
463
+ readonly name: "wrapping.multiEdge.improveWrappedEdges";
464
+ readonly elkId: "org.eclipse.elk.layered.wrapping.multiEdge.improveWrappedEdges";
465
+ readonly type: "BOOLEAN";
466
+ readonly targets: readonly ["PARENTS"];
467
+ }, {
468
+ readonly name: "layerUnzipping.strategy";
469
+ readonly elkId: "org.eclipse.elk.layered.layerUnzipping.strategy";
470
+ readonly type: "ENUM";
471
+ readonly targets: readonly ["PARENTS"];
472
+ }, {
473
+ readonly name: "layerUnzipping.minimizeEdgeLength";
474
+ readonly elkId: "org.eclipse.elk.layered.layerUnzipping.minimizeEdgeLength";
475
+ readonly type: "BOOLEAN";
476
+ readonly targets: readonly ["NODES"];
477
+ }, {
478
+ readonly name: "layerUnzipping.layerSplit";
479
+ readonly elkId: "org.eclipse.elk.layered.layerUnzipping.layerSplit";
480
+ readonly type: "INT";
481
+ readonly targets: readonly ["NODES"];
482
+ }, {
483
+ readonly name: "layerUnzipping.resetOnLongEdges";
484
+ readonly elkId: "org.eclipse.elk.layered.layerUnzipping.resetOnLongEdges";
485
+ readonly type: "BOOLEAN";
486
+ readonly targets: readonly ["NODES"];
487
+ }, {
488
+ readonly name: "nodePlacement.networkSimplex.nodeFlexibility";
489
+ readonly elkId: "org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility";
490
+ readonly type: "ENUM";
491
+ readonly targets: readonly ["NODES"];
492
+ }, {
493
+ readonly name: "nodePlacement.networkSimplex.nodeFlexibility.default";
494
+ readonly elkId: "org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility.default";
495
+ readonly type: "ENUM";
496
+ readonly targets: readonly ["PARENTS"];
497
+ }, {
498
+ readonly name: "edgeRouting.splines.mode";
499
+ readonly elkId: "org.eclipse.elk.layered.edgeRouting.splines.mode";
500
+ readonly type: "ENUM";
501
+ readonly targets: readonly ["PARENTS"];
502
+ }, {
503
+ readonly name: "edgeRouting.splines.sloppy.layerSpacingFactor";
504
+ readonly elkId: "org.eclipse.elk.layered.edgeRouting.splines.sloppy.layerSpacingFactor";
505
+ readonly type: "DOUBLE";
506
+ readonly targets: readonly ["PARENTS"];
507
+ }, {
508
+ readonly name: "topdownLayout";
509
+ readonly elkId: "org.eclipse.elk.topdownLayout";
510
+ readonly type: "BOOLEAN";
511
+ readonly targets: readonly ["PARENTS"];
512
+ }, {
513
+ readonly name: "topdown.scaleFactor";
514
+ readonly elkId: "org.eclipse.elk.topdown.scaleFactor";
515
+ readonly type: "DOUBLE";
516
+ readonly targets: readonly ["PARENTS"];
517
+ }, {
518
+ readonly name: "topdown.hierarchicalNodeWidth";
519
+ readonly elkId: "org.eclipse.elk.topdown.hierarchicalNodeWidth";
520
+ readonly type: "DOUBLE";
521
+ readonly targets: readonly ["PARENTS", "NODES"];
522
+ }, {
523
+ readonly name: "topdown.hierarchicalNodeAspectRatio";
524
+ readonly elkId: "org.eclipse.elk.topdown.hierarchicalNodeAspectRatio";
525
+ readonly type: "DOUBLE";
526
+ readonly targets: readonly ["PARENTS", "NODES"];
527
+ }, {
528
+ readonly name: "topdown.nodeType";
529
+ readonly elkId: "org.eclipse.elk.topdown.nodeType";
530
+ readonly type: "ENUM";
531
+ readonly targets: readonly ["NODES"];
532
+ }, {
533
+ readonly name: "padding";
534
+ readonly elkId: "org.eclipse.elk.padding";
535
+ readonly type: "OBJECT";
536
+ readonly targets: readonly ["PARENTS", "NODES"];
537
+ }, {
538
+ readonly name: "edgeRouting";
539
+ readonly elkId: "org.eclipse.elk.edgeRouting";
540
+ readonly type: "ENUM";
541
+ readonly targets: readonly ["PARENTS"];
542
+ }, {
543
+ readonly name: "port.borderOffset";
544
+ readonly elkId: "org.eclipse.elk.port.borderOffset";
545
+ readonly type: "DOUBLE";
546
+ readonly targets: readonly ["PORTS"];
547
+ }, {
548
+ readonly name: "randomSeed";
549
+ readonly elkId: "org.eclipse.elk.randomSeed";
550
+ readonly type: "INT";
551
+ readonly targets: readonly ["PARENTS"];
552
+ }, {
553
+ readonly name: "aspectRatio";
554
+ readonly elkId: "org.eclipse.elk.aspectRatio";
555
+ readonly type: "DOUBLE";
556
+ readonly targets: readonly ["PARENTS"];
557
+ }, {
558
+ readonly name: "noLayout";
559
+ readonly elkId: "org.eclipse.elk.noLayout";
560
+ readonly type: "BOOLEAN";
561
+ readonly targets: readonly ["NODES", "EDGES", "PORTS", "LABELS"];
562
+ }, {
563
+ readonly name: "portConstraints";
564
+ readonly elkId: "org.eclipse.elk.portConstraints";
565
+ readonly type: "ENUM";
566
+ readonly targets: readonly ["NODES"];
567
+ }, {
568
+ readonly name: "port.side";
569
+ readonly elkId: "org.eclipse.elk.port.side";
570
+ readonly type: "ENUM";
571
+ readonly targets: readonly ["PORTS"];
572
+ }, {
573
+ readonly name: "debugMode";
574
+ readonly elkId: "org.eclipse.elk.debugMode";
575
+ readonly type: "BOOLEAN";
576
+ readonly targets: readonly ["PARENTS"];
577
+ }, {
578
+ readonly name: "alignment";
579
+ readonly elkId: "org.eclipse.elk.alignment";
580
+ readonly type: "ENUM";
581
+ readonly targets: readonly ["NODES"];
582
+ }, {
583
+ readonly name: "hierarchyHandling";
584
+ readonly elkId: "org.eclipse.elk.hierarchyHandling";
585
+ readonly type: "ENUM";
586
+ readonly targets: readonly ["PARENTS", "NODES"];
587
+ }, {
588
+ readonly name: "separateConnectedComponents";
589
+ readonly elkId: "org.eclipse.elk.separateConnectedComponents";
590
+ readonly type: "BOOLEAN";
591
+ readonly targets: readonly ["PARENTS"];
592
+ }, {
593
+ readonly name: "insideSelfLoops.activate";
594
+ readonly elkId: "org.eclipse.elk.insideSelfLoops.activate";
595
+ readonly type: "BOOLEAN";
596
+ readonly targets: readonly ["NODES"];
597
+ }, {
598
+ readonly name: "insideSelfLoops.yo";
599
+ readonly elkId: "org.eclipse.elk.insideSelfLoops.yo";
600
+ readonly type: "BOOLEAN";
601
+ readonly targets: readonly ["EDGES"];
602
+ }, {
603
+ readonly name: "nodeSize.constraints";
604
+ readonly elkId: "org.eclipse.elk.nodeSize.constraints";
605
+ readonly type: "ENUMSET";
606
+ readonly targets: readonly ["NODES"];
607
+ }, {
608
+ readonly name: "nodeSize.options";
609
+ readonly elkId: "org.eclipse.elk.nodeSize.options";
610
+ readonly type: "ENUMSET";
611
+ readonly targets: readonly ["NODES"];
612
+ }, {
613
+ readonly name: "nodeSize.fixedGraphSize";
614
+ readonly elkId: "org.eclipse.elk.nodeSize.fixedGraphSize";
615
+ readonly type: "BOOLEAN";
616
+ readonly targets: readonly ["PARENTS"];
617
+ }, {
618
+ readonly name: "direction";
619
+ readonly elkId: "org.eclipse.elk.direction";
620
+ readonly type: "ENUM";
621
+ readonly targets: readonly ["PARENTS"];
622
+ }, {
623
+ readonly name: "nodeLabels.placement";
624
+ readonly elkId: "org.eclipse.elk.nodeLabels.placement";
625
+ readonly type: "ENUMSET";
626
+ readonly targets: readonly ["NODES", "LABELS"];
627
+ }, {
628
+ readonly name: "nodeLabels.padding";
629
+ readonly elkId: "org.eclipse.elk.nodeLabels.padding";
630
+ readonly type: "OBJECT";
631
+ readonly targets: readonly ["PARENTS"];
632
+ }, {
633
+ readonly name: "portLabels.placement";
634
+ readonly elkId: "org.eclipse.elk.portLabels.placement";
635
+ readonly type: "ENUMSET";
636
+ readonly targets: readonly ["NODES"];
637
+ }, {
638
+ readonly name: "portLabels.nextToPortIfPossible";
639
+ readonly elkId: "org.eclipse.elk.portLabels.nextToPortIfPossible";
640
+ readonly type: "BOOLEAN";
641
+ readonly targets: readonly ["NODES"];
642
+ }, {
643
+ readonly name: "portLabels.treatAsGroup";
644
+ readonly elkId: "org.eclipse.elk.portLabels.treatAsGroup";
645
+ readonly type: "BOOLEAN";
646
+ readonly targets: readonly ["NODES"];
647
+ }, {
648
+ readonly name: "portAlignment.default";
649
+ readonly elkId: "org.eclipse.elk.portAlignment.default";
650
+ readonly type: "ENUM";
651
+ readonly targets: readonly ["NODES"];
652
+ }, {
653
+ readonly name: "portAlignment.north";
654
+ readonly elkId: "org.eclipse.elk.portAlignment.north";
655
+ readonly type: "ENUM";
656
+ readonly targets: readonly ["NODES"];
657
+ }, {
658
+ readonly name: "portAlignment.south";
659
+ readonly elkId: "org.eclipse.elk.portAlignment.south";
660
+ readonly type: "ENUM";
661
+ readonly targets: readonly ["NODES"];
662
+ }, {
663
+ readonly name: "portAlignment.west";
664
+ readonly elkId: "org.eclipse.elk.portAlignment.west";
665
+ readonly type: "ENUM";
666
+ readonly targets: readonly ["NODES"];
667
+ }, {
668
+ readonly name: "portAlignment.east";
669
+ readonly elkId: "org.eclipse.elk.portAlignment.east";
670
+ readonly type: "ENUM";
671
+ readonly targets: readonly ["NODES"];
672
+ }, {
673
+ readonly name: "unnecessaryBendpoints";
674
+ readonly elkId: "org.eclipse.elk.layered.unnecessaryBendpoints";
675
+ readonly type: "BOOLEAN";
676
+ readonly targets: readonly ["PARENTS"];
677
+ }, {
678
+ readonly name: "layering.strategy";
679
+ readonly elkId: "org.eclipse.elk.layered.layering.strategy";
680
+ readonly type: "ENUM";
681
+ readonly targets: readonly ["PARENTS"];
682
+ }, {
683
+ readonly name: "layering.nodePromotion.strategy";
684
+ readonly elkId: "org.eclipse.elk.layered.layering.nodePromotion.strategy";
685
+ readonly type: "ENUM";
686
+ readonly targets: readonly ["PARENTS"];
687
+ }, {
688
+ readonly name: "thoroughness";
689
+ readonly elkId: "org.eclipse.elk.layered.thoroughness";
690
+ readonly type: "INT";
691
+ readonly targets: readonly ["PARENTS"];
692
+ }, {
693
+ readonly name: "layering.layerConstraint";
694
+ readonly elkId: "org.eclipse.elk.layered.layering.layerConstraint";
695
+ readonly type: "ENUM";
696
+ readonly targets: readonly ["NODES"];
697
+ }, {
698
+ readonly name: "cycleBreaking.strategy";
699
+ readonly elkId: "org.eclipse.elk.layered.cycleBreaking.strategy";
700
+ readonly type: "ENUM";
701
+ readonly targets: readonly ["PARENTS"];
702
+ }, {
703
+ readonly name: "crossingMinimization.strategy";
704
+ readonly elkId: "org.eclipse.elk.layered.crossingMinimization.strategy";
705
+ readonly type: "ENUM";
706
+ readonly targets: readonly ["PARENTS"];
707
+ }, {
708
+ readonly name: "crossingMinimization.forceNodeModelOrder";
709
+ readonly elkId: "org.eclipse.elk.layered.crossingMinimization.forceNodeModelOrder";
710
+ readonly type: "BOOLEAN";
711
+ readonly targets: readonly ["PARENTS"];
712
+ }, {
713
+ readonly name: "crossingMinimization.greedySwitch.activationThreshold";
714
+ readonly elkId: "org.eclipse.elk.layered.crossingMinimization.greedySwitch.activationThreshold";
715
+ readonly type: "INT";
716
+ readonly targets: readonly ["PARENTS"];
717
+ }, {
718
+ readonly name: "crossingMinimization.greedySwitch.type";
719
+ readonly elkId: "org.eclipse.elk.layered.crossingMinimization.greedySwitch.type";
720
+ readonly type: "ENUM";
721
+ readonly targets: readonly ["PARENTS"];
722
+ }, {
723
+ readonly name: "crossingMinimization.greedySwitchHierarchical.type";
724
+ readonly elkId: "org.eclipse.elk.layered.crossingMinimization.greedySwitchHierarchical.type";
725
+ readonly type: "ENUM";
726
+ readonly targets: readonly ["PARENTS"];
727
+ }, {
728
+ readonly name: "crossingMinimization.semiInteractive";
729
+ readonly elkId: "org.eclipse.elk.layered.crossingMinimization.semiInteractive";
730
+ readonly type: "BOOLEAN";
731
+ readonly targets: readonly ["PARENTS"];
732
+ }, {
733
+ readonly name: "mergeEdges";
734
+ readonly elkId: "org.eclipse.elk.layered.mergeEdges";
735
+ readonly type: "BOOLEAN";
736
+ readonly targets: readonly ["PARENTS"];
737
+ }, {
738
+ readonly name: "mergeHierarchyEdges";
739
+ readonly elkId: "org.eclipse.elk.layered.mergeHierarchyEdges";
740
+ readonly type: "BOOLEAN";
741
+ readonly targets: readonly ["PARENTS"];
742
+ }, {
743
+ readonly name: "interactiveReferencePoint";
744
+ readonly elkId: "org.eclipse.elk.layered.interactiveReferencePoint";
745
+ readonly type: "ENUM";
746
+ readonly targets: readonly ["PARENTS"];
747
+ }, {
748
+ readonly name: "nodePlacement.strategy";
749
+ readonly elkId: "org.eclipse.elk.layered.nodePlacement.strategy";
750
+ readonly type: "ENUM";
751
+ readonly targets: readonly ["PARENTS"];
752
+ }, {
753
+ readonly name: "nodePlacement.bk.fixedAlignment";
754
+ readonly elkId: "org.eclipse.elk.layered.nodePlacement.bk.fixedAlignment";
755
+ readonly type: "ENUM";
756
+ readonly targets: readonly ["PARENTS"];
757
+ }, {
758
+ readonly name: "feedbackEdges";
759
+ readonly elkId: "org.eclipse.elk.layered.feedbackEdges";
760
+ readonly type: "BOOLEAN";
761
+ readonly targets: readonly ["PARENTS"];
762
+ }, {
763
+ readonly name: "nodePlacement.linearSegments.deflectionDampening";
764
+ readonly elkId: "org.eclipse.elk.layered.nodePlacement.linearSegments.deflectionDampening";
765
+ readonly type: "DOUBLE";
766
+ readonly targets: readonly ["PARENTS"];
767
+ }, {
768
+ readonly name: "edgeRouting.selfLoopDistribution";
769
+ readonly elkId: "org.eclipse.elk.layered.edgeRouting.selfLoopDistribution";
770
+ readonly type: "ENUM";
771
+ readonly targets: readonly ["NODES"];
772
+ }, {
773
+ readonly name: "edgeRouting.selfLoopOrdering";
774
+ readonly elkId: "org.eclipse.elk.layered.edgeRouting.selfLoopOrdering";
775
+ readonly type: "ENUM";
776
+ readonly targets: readonly ["NODES"];
777
+ }, {
778
+ readonly name: "contentAlignment";
779
+ readonly elkId: "org.eclipse.elk.contentAlignment";
780
+ readonly type: "ENUMSET";
781
+ readonly targets: readonly ["PARENTS"];
782
+ }, {
783
+ readonly name: "nodePlacement.bk.edgeStraightening";
784
+ readonly elkId: "org.eclipse.elk.layered.nodePlacement.bk.edgeStraightening";
785
+ readonly type: "ENUM";
786
+ readonly targets: readonly ["PARENTS"];
787
+ }, {
788
+ readonly name: "compaction.postCompaction.strategy";
789
+ readonly elkId: "org.eclipse.elk.layered.compaction.postCompaction.strategy";
790
+ readonly type: "ENUM";
791
+ readonly targets: readonly ["PARENTS"];
792
+ }, {
793
+ readonly name: "compaction.postCompaction.constraints";
794
+ readonly elkId: "org.eclipse.elk.layered.compaction.postCompaction.constraints";
795
+ readonly type: "ENUM";
796
+ readonly targets: readonly ["PARENTS"];
797
+ }, {
798
+ readonly name: "compaction.connectedComponents";
799
+ readonly elkId: "org.eclipse.elk.layered.compaction.connectedComponents";
800
+ readonly type: "BOOLEAN";
801
+ readonly targets: readonly ["PARENTS"];
802
+ }, {
803
+ readonly name: "highDegreeNodes.treatment";
804
+ readonly elkId: "org.eclipse.elk.layered.highDegreeNodes.treatment";
805
+ readonly type: "BOOLEAN";
806
+ readonly targets: readonly ["PARENTS"];
807
+ }, {
808
+ readonly name: "highDegreeNodes.threshold";
809
+ readonly elkId: "org.eclipse.elk.layered.highDegreeNodes.threshold";
810
+ readonly type: "INT";
811
+ readonly targets: readonly ["PARENTS"];
812
+ }, {
813
+ readonly name: "highDegreeNodes.treeHeight";
814
+ readonly elkId: "org.eclipse.elk.layered.highDegreeNodes.treeHeight";
815
+ readonly type: "INT";
816
+ readonly targets: readonly ["PARENTS"];
817
+ }, {
818
+ readonly name: "nodeSize.minimum";
819
+ readonly elkId: "org.eclipse.elk.nodeSize.minimum";
820
+ readonly type: "OBJECT";
821
+ readonly targets: readonly ["NODES"];
822
+ }, {
823
+ readonly name: "junctionPoints";
824
+ readonly elkId: "org.eclipse.elk.junctionPoints";
825
+ readonly type: "OBJECT";
826
+ readonly targets: readonly ["EDGES"];
827
+ }, {
828
+ readonly name: "edge.thickness";
829
+ readonly elkId: "org.eclipse.elk.edge.thickness";
830
+ readonly type: "DOUBLE";
831
+ readonly targets: readonly ["EDGES"];
832
+ }, {
833
+ readonly name: "edgeLabels.placement";
834
+ readonly elkId: "org.eclipse.elk.edgeLabels.placement";
835
+ readonly type: "ENUM";
836
+ readonly targets: readonly ["LABELS"];
837
+ }, {
838
+ readonly name: "edgeLabels.inline";
839
+ readonly elkId: "org.eclipse.elk.edgeLabels.inline";
840
+ readonly type: "BOOLEAN";
841
+ readonly targets: readonly ["LABELS"];
842
+ }, {
843
+ readonly name: "crossingMinimization.hierarchicalSweepiness";
844
+ readonly elkId: "org.eclipse.elk.layered.crossingMinimization.hierarchicalSweepiness";
845
+ readonly type: "DOUBLE";
846
+ readonly targets: readonly ["PARENTS"];
847
+ }, {
848
+ readonly name: "port.index";
849
+ readonly elkId: "org.eclipse.elk.port.index";
850
+ readonly type: "INT";
851
+ readonly targets: readonly ["PORTS"];
852
+ }, {
853
+ readonly name: "commentBox";
854
+ readonly elkId: "org.eclipse.elk.commentBox";
855
+ readonly type: "BOOLEAN";
856
+ readonly targets: readonly ["NODES"];
857
+ }, {
858
+ readonly name: "hypernode";
859
+ readonly elkId: "org.eclipse.elk.hypernode";
860
+ readonly type: "BOOLEAN";
861
+ readonly targets: readonly ["NODES"];
862
+ }, {
863
+ readonly name: "port.anchor";
864
+ readonly elkId: "org.eclipse.elk.port.anchor";
865
+ readonly type: "OBJECT";
866
+ readonly targets: readonly ["PORTS"];
867
+ }, {
868
+ readonly name: "partitioning.activate";
869
+ readonly elkId: "org.eclipse.elk.partitioning.activate";
870
+ readonly type: "BOOLEAN";
871
+ readonly targets: readonly ["PARENTS"];
872
+ }, {
873
+ readonly name: "partitioning.partition";
874
+ readonly elkId: "org.eclipse.elk.partitioning.partition";
875
+ readonly type: "INT";
876
+ readonly targets: readonly ["PARENTS", "NODES"];
877
+ }, {
878
+ readonly name: "layering.minWidth.upperBoundOnWidth";
879
+ readonly elkId: "org.eclipse.elk.layered.layering.minWidth.upperBoundOnWidth";
880
+ readonly type: "INT";
881
+ readonly targets: readonly ["PARENTS"];
882
+ }, {
883
+ readonly name: "layering.minWidth.upperLayerEstimationScalingFactor";
884
+ readonly elkId: "org.eclipse.elk.layered.layering.minWidth.upperLayerEstimationScalingFactor";
885
+ readonly type: "INT";
886
+ readonly targets: readonly ["PARENTS"];
887
+ }, {
888
+ readonly name: "position";
889
+ readonly elkId: "org.eclipse.elk.position";
890
+ readonly type: "OBJECT";
891
+ readonly targets: readonly ["NODES", "PORTS", "LABELS"];
892
+ }, {
893
+ readonly name: "allowNonFlowPortsToSwitchSides";
894
+ readonly elkId: "org.eclipse.elk.layered.allowNonFlowPortsToSwitchSides";
895
+ readonly type: "BOOLEAN";
896
+ readonly targets: readonly ["PORTS"];
897
+ }, {
898
+ readonly name: "layering.nodePromotion.maxIterations";
899
+ readonly elkId: "org.eclipse.elk.layered.layering.nodePromotion.maxIterations";
900
+ readonly type: "INT";
901
+ readonly targets: readonly ["PARENTS"];
902
+ }, {
903
+ readonly name: "edgeLabels.sideSelection";
904
+ readonly elkId: "org.eclipse.elk.layered.edgeLabels.sideSelection";
905
+ readonly type: "ENUM";
906
+ readonly targets: readonly ["PARENTS"];
907
+ }, {
908
+ readonly name: "edgeLabels.centerLabelPlacementStrategy";
909
+ readonly elkId: "org.eclipse.elk.layered.edgeLabels.centerLabelPlacementStrategy";
910
+ readonly type: "ENUM";
911
+ readonly targets: readonly ["PARENTS", "LABELS"];
912
+ }, {
913
+ readonly name: "margins";
914
+ readonly elkId: "org.eclipse.elk.margins";
915
+ readonly type: "OBJECT";
916
+ readonly targets: readonly ["NODES"];
917
+ }, {
918
+ readonly name: "layering.coffmanGraham.layerBound";
919
+ readonly elkId: "org.eclipse.elk.layered.layering.coffmanGraham.layerBound";
920
+ readonly type: "INT";
921
+ readonly targets: readonly ["PARENTS"];
922
+ }, {
923
+ readonly name: "nodePlacement.favorStraightEdges";
924
+ readonly elkId: "org.eclipse.elk.layered.nodePlacement.favorStraightEdges";
925
+ readonly type: "BOOLEAN";
926
+ readonly targets: readonly ["PARENTS"];
927
+ }, {
928
+ readonly name: "spacing.portsSurrounding";
929
+ readonly elkId: "org.eclipse.elk.spacing.portsSurrounding";
930
+ readonly type: "OBJECT";
931
+ readonly targets: readonly ["PARENTS"];
932
+ }, {
933
+ readonly name: "directionCongruency";
934
+ readonly elkId: "org.eclipse.elk.layered.directionCongruency";
935
+ readonly type: "ENUM";
936
+ readonly targets: readonly ["PARENTS"];
937
+ }, {
938
+ readonly name: "portSortingStrategy";
939
+ readonly elkId: "org.eclipse.elk.layered.portSortingStrategy";
940
+ readonly type: "ENUM";
941
+ readonly targets: readonly ["PARENTS"];
942
+ }, {
943
+ readonly name: "edgeRouting.polyline.slopedEdgeZoneWidth";
944
+ readonly elkId: "org.eclipse.elk.layered.edgeRouting.polyline.slopedEdgeZoneWidth";
945
+ readonly type: "DOUBLE";
946
+ readonly targets: readonly ["PARENTS"];
947
+ }, {
948
+ readonly name: "crossingMinimization.inLayerPredOf";
949
+ readonly elkId: "org.eclipse.elk.layered.crossingMinimization.inLayerPredOf";
950
+ readonly type: "STRING";
951
+ readonly targets: readonly ["NODES"];
952
+ }, {
953
+ readonly name: "crossingMinimization.inLayerSuccOf";
954
+ readonly elkId: "org.eclipse.elk.layered.crossingMinimization.inLayerSuccOf";
955
+ readonly type: "STRING";
956
+ readonly targets: readonly ["NODES"];
957
+ }, {
958
+ readonly name: "layering.layerChoiceConstraint";
959
+ readonly elkId: "org.eclipse.elk.layered.layering.layerChoiceConstraint";
960
+ readonly type: "INT";
961
+ readonly targets: readonly ["NODES"];
962
+ }, {
963
+ readonly name: "crossingMinimization.positionChoiceConstraint";
964
+ readonly elkId: "org.eclipse.elk.layered.crossingMinimization.positionChoiceConstraint";
965
+ readonly type: "INT";
966
+ readonly targets: readonly ["NODES"];
967
+ }, {
968
+ readonly name: "interactiveLayout";
969
+ readonly elkId: "org.eclipse.elk.interactiveLayout";
970
+ readonly type: "BOOLEAN";
971
+ readonly targets: readonly ["PARENTS"];
972
+ }, {
973
+ readonly name: "layering.layerId";
974
+ readonly elkId: "org.eclipse.elk.layered.layering.layerId";
975
+ readonly type: "INT";
976
+ readonly targets: readonly ["NODES"];
977
+ }, {
978
+ readonly name: "crossingMinimization.positionId";
979
+ readonly elkId: "org.eclipse.elk.layered.crossingMinimization.positionId";
980
+ readonly type: "INT";
981
+ readonly targets: readonly ["NODES"];
982
+ }, {
983
+ readonly name: "considerModelOrder.strategy";
984
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.strategy";
985
+ readonly type: "ENUM";
986
+ readonly targets: readonly ["PARENTS"];
987
+ }, {
988
+ readonly name: "considerModelOrder.longEdgeStrategy";
989
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.longEdgeStrategy";
990
+ readonly type: "ENUM";
991
+ readonly targets: readonly ["PARENTS"];
992
+ }, {
993
+ readonly name: "considerModelOrder.crossingCounterNodeInfluence";
994
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.crossingCounterNodeInfluence";
995
+ readonly type: "DOUBLE";
996
+ readonly targets: readonly ["PARENTS"];
997
+ }, {
998
+ readonly name: "considerModelOrder.crossingCounterPortInfluence";
999
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.crossingCounterPortInfluence";
1000
+ readonly type: "DOUBLE";
1001
+ readonly targets: readonly ["PARENTS"];
1002
+ }, {
1003
+ readonly name: "considerModelOrder.noModelOrder";
1004
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.noModelOrder";
1005
+ readonly type: "BOOLEAN";
1006
+ readonly targets: readonly ["NODES"];
1007
+ }, {
1008
+ readonly name: "considerModelOrder.components";
1009
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.components";
1010
+ readonly type: "ENUM";
1011
+ readonly targets: readonly ["PARENTS"];
1012
+ }, {
1013
+ readonly name: "considerModelOrder.portModelOrder";
1014
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.portModelOrder";
1015
+ readonly type: "BOOLEAN";
1016
+ readonly targets: readonly ["PARENTS"];
1017
+ }, {
1018
+ readonly name: "considerModelOrder.groupModelOrder.cycleBreakingId";
1019
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.groupModelOrder.cycleBreakingId";
1020
+ readonly type: "INT";
1021
+ readonly targets: readonly ["NODES"];
1022
+ }, {
1023
+ readonly name: "considerModelOrder.groupModelOrder.crossingMinimizationId";
1024
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.groupModelOrder.crossingMinimizationId";
1025
+ readonly type: "INT";
1026
+ readonly targets: readonly ["NODES", "EDGES", "PORTS"];
1027
+ }, {
1028
+ readonly name: "considerModelOrder.groupModelOrder.componentGroupId";
1029
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.groupModelOrder.componentGroupId";
1030
+ readonly type: "INT";
1031
+ readonly targets: readonly ["NODES", "EDGES", "PORTS"];
1032
+ }, {
1033
+ readonly name: "considerModelOrder.groupModelOrder.cbGroupOrderStrategy";
1034
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.groupModelOrder.cbGroupOrderStrategy";
1035
+ readonly type: "ENUM";
1036
+ readonly targets: readonly ["PARENTS"];
1037
+ }, {
1038
+ readonly name: "considerModelOrder.groupModelOrder.cmGroupOrderStrategy";
1039
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.groupModelOrder.cmGroupOrderStrategy";
1040
+ readonly type: "ENUM";
1041
+ readonly targets: readonly ["PARENTS"];
1042
+ }, {
1043
+ readonly name: "considerModelOrder.groupModelOrder.cmEnforcedGroupOrders";
1044
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.groupModelOrder.cmEnforcedGroupOrders";
1045
+ readonly type: "OBJECT";
1046
+ readonly targets: readonly ["PARENTS"];
1047
+ }, {
1048
+ readonly name: "considerModelOrder.groupModelOrder.cbPreferredSourceId";
1049
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.groupModelOrder.cbPreferredSourceId";
1050
+ readonly type: "INT";
1051
+ readonly targets: readonly ["PARENTS"];
1052
+ }, {
1053
+ readonly name: "considerModelOrder.groupModelOrder.cbPreferredTargetId";
1054
+ readonly elkId: "org.eclipse.elk.layered.considerModelOrder.groupModelOrder.cbPreferredTargetId";
1055
+ readonly type: "INT";
1056
+ readonly targets: readonly ["PARENTS"];
1057
+ }, {
1058
+ readonly name: "generatePositionAndLayerIds";
1059
+ readonly elkId: "org.eclipse.elk.layered.generatePositionAndLayerIds";
1060
+ readonly type: "BOOLEAN";
1061
+ readonly targets: readonly ["PARENTS"];
1062
+ }];
1063
+ type ElkLayeredOptionName = keyof ElkLayeredOptionValueByName;
1064
+ type ElkLayeredOptionId = (typeof elkLayeredOptionDefinitions)[number]["elkId"];
1065
+ //#endregion
1066
+ //#region src/layered/elk-enum-values.d.ts
1067
+ /** Every ELK 0.11.1 enum constant, source-locked to its Java declaration. */
1068
+ declare const elkLayeredEnumValues: {
1069
+ readonly "wrapping.strategy": readonly ["OFF", "SINGLE_EDGE", "MULTI_EDGE"];
1070
+ readonly "wrapping.cutting.strategy": readonly ["ARD", "MSD", "MANUAL"];
1071
+ readonly "wrapping.validify.strategy": readonly ["NO", "GREEDY", "LOOK_BACK"];
1072
+ readonly "layerUnzipping.strategy": readonly ["NONE", "ALTERNATING"];
1073
+ readonly "nodePlacement.networkSimplex.nodeFlexibility": readonly ["NONE", "PORT_POSITION", "NODE_SIZE_WHERE_SPACE_PERMITS", "NODE_SIZE"];
1074
+ readonly "nodePlacement.networkSimplex.nodeFlexibility.default": readonly ["NONE", "PORT_POSITION", "NODE_SIZE_WHERE_SPACE_PERMITS", "NODE_SIZE"];
1075
+ readonly "edgeRouting.splines.mode": readonly ["CONSERVATIVE", "CONSERVATIVE_SOFT", "SLOPPY"];
1076
+ readonly "topdown.nodeType": readonly ["PARALLEL_NODE", "HIERARCHICAL_NODE", "ROOT_NODE"];
1077
+ readonly edgeRouting: readonly ["UNDEFINED", "POLYLINE", "ORTHOGONAL", "SPLINES"];
1078
+ readonly portConstraints: readonly ["UNDEFINED", "FREE", "FIXED_SIDE", "FIXED_ORDER", "FIXED_RATIO", "FIXED_POS"];
1079
+ readonly "port.side": readonly ["UNDEFINED", "NORTH", "EAST", "SOUTH", "WEST"];
1080
+ readonly alignment: readonly ["AUTOMATIC", "LEFT", "RIGHT", "TOP", "BOTTOM", "CENTER"];
1081
+ readonly hierarchyHandling: readonly ["INHERIT", "INCLUDE_CHILDREN", "SEPARATE_CHILDREN"];
1082
+ readonly "nodeSize.constraints": readonly ["PORTS", "PORT_LABELS", "NODE_LABELS", "MINIMUM_SIZE"];
1083
+ readonly "nodeSize.options": readonly ["DEFAULT_MINIMUM_SIZE", "MINIMUM_SIZE_ACCOUNTS_FOR_PADDING", "COMPUTE_PADDING", "OUTSIDE_NODE_LABELS_OVERHANG", "PORTS_OVERHANG", "UNIFORM_PORT_SPACING", "SPACE_EFFICIENT_PORT_LABELS", "FORCE_TABULAR_NODE_LABELS", "ASYMMETRICAL"];
1084
+ readonly direction: readonly ["UNDEFINED", "RIGHT", "LEFT", "DOWN", "UP"];
1085
+ readonly "nodeLabels.placement": readonly ["H_LEFT", "H_CENTER", "H_RIGHT", "V_TOP", "V_CENTER", "V_BOTTOM", "INSIDE", "OUTSIDE", "H_PRIORITY"];
1086
+ readonly "portLabels.placement": readonly ["OUTSIDE", "INSIDE", "NEXT_TO_PORT_IF_POSSIBLE", "ALWAYS_SAME_SIDE", "ALWAYS_OTHER_SAME_SIDE", "SPACE_EFFICIENT"];
1087
+ readonly "portAlignment.default": readonly ["DISTRIBUTED", "JUSTIFIED", "BEGIN", "CENTER", "END"];
1088
+ readonly "portAlignment.north": readonly ["DISTRIBUTED", "JUSTIFIED", "BEGIN", "CENTER", "END"];
1089
+ readonly "portAlignment.south": readonly ["DISTRIBUTED", "JUSTIFIED", "BEGIN", "CENTER", "END"];
1090
+ readonly "portAlignment.west": readonly ["DISTRIBUTED", "JUSTIFIED", "BEGIN", "CENTER", "END"];
1091
+ readonly "portAlignment.east": readonly ["DISTRIBUTED", "JUSTIFIED", "BEGIN", "CENTER", "END"];
1092
+ readonly "layering.strategy": readonly ["NETWORK_SIMPLEX", "LONGEST_PATH", "LONGEST_PATH_SOURCE", "COFFMAN_GRAHAM", "INTERACTIVE", "STRETCH_WIDTH", "MIN_WIDTH", "BF_MODEL_ORDER", "DF_MODEL_ORDER"];
1093
+ readonly "layering.nodePromotion.strategy": readonly ["NONE", "NIKOLOV", "NIKOLOV_PIXEL", "NIKOLOV_IMPROVED", "NIKOLOV_IMPROVED_PIXEL", "DUMMYNODE_PERCENTAGE", "NODECOUNT_PERCENTAGE", "NO_BOUNDARY", "MODEL_ORDER_LEFT_TO_RIGHT", "MODEL_ORDER_RIGHT_TO_LEFT"];
1094
+ readonly "layering.layerConstraint": readonly ["NONE", "FIRST", "FIRST_SEPARATE", "LAST", "LAST_SEPARATE"];
1095
+ readonly "cycleBreaking.strategy": readonly ["GREEDY", "DEPTH_FIRST", "INTERACTIVE", "MODEL_ORDER", "GREEDY_MODEL_ORDER", "SCC_CONNECTIVITY", "SCC_NODE_TYPE", "DFS_NODE_ORDER", "BFS_NODE_ORDER"];
1096
+ readonly "crossingMinimization.strategy": readonly ["LAYER_SWEEP", "MEDIAN_LAYER_SWEEP", "INTERACTIVE", "NONE"];
1097
+ readonly "crossingMinimization.greedySwitch.type": readonly ["ONE_SIDED", "TWO_SIDED", "OFF"];
1098
+ readonly "crossingMinimization.greedySwitchHierarchical.type": readonly ["ONE_SIDED", "TWO_SIDED", "OFF"];
1099
+ readonly interactiveReferencePoint: readonly ["CENTER", "TOP_LEFT"];
1100
+ readonly "nodePlacement.strategy": readonly ["SIMPLE", "INTERACTIVE", "LINEAR_SEGMENTS", "BRANDES_KOEPF", "NETWORK_SIMPLEX"];
1101
+ readonly "nodePlacement.bk.fixedAlignment": readonly ["NONE", "LEFTUP", "RIGHTUP", "LEFTDOWN", "RIGHTDOWN", "BALANCED"];
1102
+ readonly "edgeRouting.selfLoopDistribution": readonly ["EQUALLY", "NORTH", "NORTH_SOUTH"];
1103
+ readonly "edgeRouting.selfLoopOrdering": readonly ["STACKED", "REVERSE_STACKED", "SEQUENCED"];
1104
+ readonly contentAlignment: readonly ["V_TOP", "V_CENTER", "V_BOTTOM", "H_LEFT", "H_CENTER", "H_RIGHT"];
1105
+ readonly "nodePlacement.bk.edgeStraightening": readonly ["NONE", "IMPROVE_STRAIGHTNESS"];
1106
+ readonly "compaction.postCompaction.strategy": readonly ["NONE", "LEFT", "RIGHT", "LEFT_RIGHT_CONSTRAINT_LOCKING", "LEFT_RIGHT_CONNECTION_LOCKING", "EDGE_LENGTH"];
1107
+ readonly "compaction.postCompaction.constraints": readonly ["QUADRATIC", "SCANLINE"];
1108
+ readonly "edgeLabels.placement": readonly ["CENTER", "HEAD", "TAIL"];
1109
+ readonly "edgeLabels.sideSelection": readonly ["ALWAYS_UP", "ALWAYS_DOWN", "DIRECTION_UP", "DIRECTION_DOWN", "SMART_UP", "SMART_DOWN"];
1110
+ readonly "edgeLabels.centerLabelPlacementStrategy": readonly ["MEDIAN_LAYER", "TAIL_LAYER", "HEAD_LAYER", "SPACE_EFFICIENT_LAYER", "WIDEST_LAYER", "CENTER_LAYER"];
1111
+ readonly directionCongruency: readonly ["READING_DIRECTION", "ROTATION"];
1112
+ readonly portSortingStrategy: readonly ["INPUT_ORDER", "PORT_DEGREE"];
1113
+ readonly "considerModelOrder.strategy": readonly ["NONE", "NODES_AND_EDGES", "PREFER_EDGES", "PREFER_NODES"];
1114
+ readonly "considerModelOrder.longEdgeStrategy": readonly ["DUMMY_NODE_OVER", "DUMMY_NODE_UNDER", "EQUAL"];
1115
+ readonly "considerModelOrder.components": readonly ["NONE", "INSIDE_PORT_SIDE_GROUPS", "GROUP_MODEL_ORDER", "MODEL_ORDER"];
1116
+ readonly "considerModelOrder.groupModelOrder.cbGroupOrderStrategy": readonly ["ONLY_WITHIN_GROUP", "MODEL_ORDER", "ENFORCED"];
1117
+ readonly "considerModelOrder.groupModelOrder.cmGroupOrderStrategy": readonly ["ONLY_WITHIN_GROUP", "MODEL_ORDER", "ENFORCED"];
1118
+ };
1119
+ //#endregion
1120
+ //#region src/layered/elk-options.d.ts
1121
+ type CycleBreakingStrategy = (typeof elkLayeredEnumValues)["cycleBreaking.strategy"][number];
1122
+ type LayeringStrategy = (typeof elkLayeredEnumValues)["layering.strategy"][number];
1123
+ type CrossingMinimizationStrategy = (typeof elkLayeredEnumValues)["crossingMinimization.strategy"][number];
1124
+ type NodePlacementStrategy = (typeof elkLayeredEnumValues)["nodePlacement.strategy"][number];
1125
+ type EdgeRoutingStyle = (typeof elkLayeredEnumValues)["edgeRouting"][number];
1126
+ type StrictElkLayeredOptionValueByName = Omit<ElkLayeredOptionValueByName, keyof typeof elkLayeredEnumValues> & { [Name in keyof typeof elkLayeredEnumValues]?: (typeof elkLayeredEnumValues)[Name][number] };
1127
+ type LayeredAdvancedOptions = Omit<StrictElkLayeredOptionValueByName, "direction" | "padding" | "spacing.node" | "spacing.layer" | "cycleBreaking.strategy" | "layering.strategy" | "crossingMinimization.strategy" | "nodePlacement.strategy" | "edgeRouting"> & {
1128
+ "cycleBreaking.strategy"?: CycleBreakingStrategy;
1129
+ "layering.strategy"?: LayeringStrategy;
1130
+ "crossingMinimization.strategy"?: CrossingMinimizationStrategy;
1131
+ "nodePlacement.strategy"?: NodePlacementStrategy;
1132
+ edgeRouting?: EdgeRoutingStyle;
1133
+ };
1134
+ /** Translate every simplified layered setting to its exact ELK 0.11.1 option ID. */
1135
+ declare function toElkLayeredOptions(options: LayeredLayoutOptions): Partial<Record<ElkLayeredOptionId, unknown>>;
1136
+ /** Return the simplified public name for an exact ELK layered option ID. */
1137
+ declare function fromElkLayeredOptionId(id: ElkLayeredOptionId): ElkLayeredOptionName;
1138
+ //#endregion
1139
+ //#region src/layered/types.d.ts
1140
+ interface NodeSize {
1141
+ width: number;
1142
+ height: number;
1143
+ }
1144
+ interface LayeredSpacing {
1145
+ node: number;
1146
+ layer: number;
1147
+ }
1148
+ interface LayoutPadding {
1149
+ top: number;
1150
+ right: number;
1151
+ bottom: number;
1152
+ left: number;
1153
+ }
1154
+ interface LayeredPhaseInput {
1155
+ graph: Graph<unknown, unknown, unknown, unknown>;
1156
+ sizes: ReadonlyMap<string, NodeSize>;
1157
+ direction: LayoutDirection;
1158
+ spacing: LayeredSpacing;
1159
+ padding: LayoutPadding;
1160
+ constrainedLayerByNodeId: ReadonlyMap<string, number>;
1161
+ settings: LayeredAdvancedOptions;
1162
+ nodeSettings?: (node: GraphNode) => ElkLayeredOptionValueByName | undefined;
1163
+ edgeSettings?: (edge: GraphEdge) => ElkLayeredOptionValueByName | undefined;
1164
+ portSettings?: (port: GraphPort, node: GraphNode) => ElkLayeredOptionValueByName | undefined;
1165
+ }
1166
+ interface AcyclicOrientation {
1167
+ reversedEdgeIds: ReadonlySet<string>;
1168
+ }
1169
+ interface LayerAssignment {
1170
+ layerByNodeId: ReadonlyMap<string, number>;
1171
+ /** Layer-internal seed order produced by layerers whose insertion order is observable. */
1172
+ seedOrder?: readonly string[];
1173
+ }
1174
+ interface LayerOrder {
1175
+ layers: readonly (readonly string[])[];
1176
+ /** Internal ELK sweep state retained for exact port-aware placement. */
1177
+ inputPortOrderByNodeId?: ReadonlyMap<string, readonly string[]>;
1178
+ /** Internal ELK sweep state retained for exact port-aware placement. */
1179
+ outputPortOrderByNodeId?: ReadonlyMap<string, readonly string[]>;
1180
+ }
1181
+ interface NodePlacement {
1182
+ rectByNodeId: ReadonlyMap<string, EntityRect>;
1183
+ }
1184
+ interface EdgeRoutes {
1185
+ pointsByEdgeId: ReadonlyMap<string, readonly Point[]>;
1186
+ /** ELK spline segment NUB controls retained until long-edge joining. */
1187
+ splineNubControlsByEdgeId?: ReadonlyMap<string, readonly Point[]>;
1188
+ /** Reversed fixed-side routes that must stay outside the node envelope during compaction. */
1189
+ outsideFeedbackEdgeIds?: ReadonlySet<string>;
1190
+ }
1191
+ type CycleBreaker = (input: LayeredPhaseInput) => AcyclicOrientation;
1192
+ type LayerAssigner = (input: LayeredPhaseInput, orientation: AcyclicOrientation) => LayerAssignment;
1193
+ type CrossingMinimizer = (input: LayeredPhaseInput, orientation: AcyclicOrientation, assignment: LayerAssignment) => LayerOrder;
1194
+ type NodePlacer = (input: LayeredPhaseInput, order: LayerOrder) => NodePlacement;
1195
+ type EdgeRouter = (input: LayeredPhaseInput, orientation: AcyclicOrientation, placement: NodePlacement) => EdgeRoutes;
1196
+ interface LayeredStrategies {
1197
+ breakCycles?: CycleBreaker;
1198
+ assignLayers?: LayerAssigner;
1199
+ minimizeCrossings?: CrossingMinimizer;
1200
+ placeNodes?: NodePlacer;
1201
+ routeEdges?: EdgeRouter;
1202
+ }
1203
+ /** Geometry reserved while laying out a compound, before its ancestors. */
1204
+ interface CompoundLayoutOptions {
1205
+ padding?: number | Partial<LayoutPadding>;
1206
+ direction?: LayoutDirection;
1207
+ header?: NodeSize & {
1208
+ side?: "top" | "right" | "bottom" | "left";
1209
+ };
1210
+ minContentSize?: Partial<NodeSize>;
1211
+ }
1212
+ interface CompoundLayoutGeometry {
1213
+ /** Parent-relative outer rectangle; header/content are relative to this rectangle. */
1214
+ bounds: EntityRect;
1215
+ header?: EntityRect;
1216
+ content: EntityRect;
1217
+ }
1218
+ interface CompoundEdgeAttachment {
1219
+ /** Content attachments leave toward the interior; outer attachments leave outward. */
1220
+ source?: "content" | "outer";
1221
+ target?: "content" | "outer";
1222
+ }
1223
+ interface LayeredLayoutOptions {
1224
+ direction?: LayoutDirection;
1225
+ compound?: (node: GraphNode) => CompoundLayoutOptions | undefined;
1226
+ edgeAttachment?: (edge: GraphEdge) => CompoundEdgeAttachment | undefined;
1227
+ spacing?: Partial<LayeredSpacing>;
1228
+ padding?: number | Partial<LayoutPadding>;
1229
+ constraints?: LayoutConstraints;
1230
+ measure?: (node: GraphNode) => NodeSize;
1231
+ crossingSweeps?: number;
1232
+ strategies?: LayeredStrategies;
1233
+ /** ELK-equivalent settings keyed by simplified names without vendor prefixes. */
1234
+ settings?: LayeredAdvancedOptions;
1235
+ /** Per-node settings for ELK options whose target is a node. */
1236
+ nodeSettings?: (node: GraphNode) => ElkLayeredOptionValueByName | undefined;
1237
+ /** Per-edge settings for ELK options whose target is an edge. */
1238
+ edgeSettings?: (edge: GraphEdge) => ElkLayeredOptionValueByName | undefined;
1239
+ /** Per-port settings for ELK options whose target is a port. */
1240
+ portSettings?: (port: GraphPort, node: GraphNode) => ElkLayeredOptionValueByName | undefined;
1241
+ }
1242
+ //#endregion
1243
+ //#region src/layered/compound.d.ts
1244
+ type CompoundVisualGraph<N = unknown, E = unknown, G = unknown, P = unknown> = VisualGraph<N, E, G, P> & {
1245
+ /** Nodes remain parent-relative; edge rectangles and points are world-space. */
1246
+ readonly edgeCoordinateSpace?: "world";
1247
+ readonly compoundGeometry: ReadonlyMap<string, CompoundLayoutGeometry>;
1248
+ /** World-space route sections preserve label gaps and fallback diagnostics. */
1249
+ readonly compoundRoutes: ReadonlyMap<string, Route>;
1250
+ };
1251
+ //#endregion
1252
+ //#region src/layered/strategies.d.ts
1253
+ declare const breakCyclesWithDepthFirstSearch: CycleBreaker;
1254
+ declare const breakCyclesGreedily: CycleBreaker;
1255
+ declare const breakCyclesGreedilyByModelOrder: CycleBreaker;
1256
+ /** ELK MODEL_ORDER for flat graphs without FIRST/LAST layer constraints. */
1257
+ declare const breakCyclesByModelOrder: CycleBreaker;
1258
+ /** ELK INTERACTIVE: honor authored x-order, then remove any remaining DFS back edges. */
1259
+ declare const breakCyclesInteractively: CycleBreaker;
1260
+ declare const breakCyclesWithModelOrderDepthFirstSearch: CycleBreaker;
1261
+ /** ELK BFS_NODE_ORDER, with input node order as ELK's internal model order. */
1262
+ declare const breakCyclesWithModelOrderBreadthFirstSearch: CycleBreaker;
1263
+ declare const breakCyclesByStronglyConnectedConnectivity: CycleBreaker;
1264
+ declare const breakCyclesByStronglyConnectedNodeType: CycleBreaker;
1265
+ declare const assignLayersByLongestPath: LayerAssigner;
1266
+ /** ELK LONGEST_PATH: align sinks on the final layer. */
1267
+ declare const assignLayersByLongestPathToSink: LayerAssigner;
1268
+ /** ELK INTERACTIVE layering for normal flat nodes. */
1269
+ declare const assignLayersInteractively: LayerAssigner;
1270
+ /** ELK BF_MODEL_ORDER for normal flat nodes (label dummies are a later preprocessing slice). */
1271
+ declare const assignLayersByBreadthFirstModelOrder: LayerAssigner;
1272
+ /** ELK DF_MODEL_ORDER for normal flat nodes, before label-dummy insertion. */
1273
+ declare const assignLayersByDepthFirstModelOrder: LayerAssigner;
1274
+ /** ELK COFFMAN_GRAHAM for flat DAGs, including transitive reduction and layer bounds. */
1275
+ declare const assignLayersWithCoffmanGraham: LayerAssigner;
1276
+ declare function minimizeCrossingsWithBarycenter(sweeps?: number): CrossingMinimizer;
1277
+ declare function minimizeCrossingsWithMedian(sweeps?: number): CrossingMinimizer;
1278
+ declare const minimizeCrossingsWithModelOrder: CrossingMinimizer;
1279
+ declare const minimizeCrossingsInteractively: CrossingMinimizer;
1280
+ declare const placeNodesInLayers: NodePlacer;
1281
+ /** ELK INTERACTIVE placement for normal flat nodes, preserving cross-axis coordinates. */
1282
+ declare const placeNodesInteractively: NodePlacer;
1283
+ declare const routeEdgesOrthogonally: EdgeRouter;
1284
+ declare const routeEdgesWithPolylines: EdgeRouter;
1285
+ declare const routeEdgesWithSplines: EdgeRouter;
1286
+ //#endregion
1287
+ //#region src/layered/network-simplex.d.ts
1288
+ declare const assignLayersWithNetworkSimplex: LayerAssigner;
1289
+ //#endregion
1290
+ //#region src/layered/min-width.d.ts
1291
+ declare const assignLayersWithMinWidth: LayerAssigner;
1292
+ //#endregion
1293
+ //#region src/layered/stretch-width.d.ts
1294
+ declare const assignLayersWithStretchWidth: LayerAssigner;
1295
+ //#endregion
1296
+ //#region src/layered/bk-node-placement.d.ts
1297
+ /** ELK-compatible Brandes-Koepf placement for implicit center ports. */
1298
+ declare function placeNodesWithBrandesKoepf(input: LayeredPhaseInput, order: LayerOrder): NodePlacement;
1299
+ //#endregion
1300
+ //#region src/layered/linear-segments-node-placement.d.ts
1301
+ /** ELK-compatible force-based linear-segments placement. */
1302
+ declare function placeNodesWithLinearSegments(input: LayeredPhaseInput, order: LayerOrder): NodePlacement;
1303
+ //#endregion
1304
+ //#region src/layered/network-simplex-node-placement.d.ts
1305
+ /** ELK auxiliary-graph network-simplex placement for fixed-position ports. */
1306
+ declare function placeNodesWithNetworkSimplex(input: LayeredPhaseInput, order: LayerOrder): NodePlacement;
1307
+ //#endregion
1308
+ //#region src/layered/index.d.ts
1309
+ /**
1310
+ * Deterministic native layered layout for an `@statelyai/graph` graph.
1311
+ *
1312
+ * Supports flat and nested graphs, cycles, ports, self-loops, four directions,
1313
+ * custom phase strategies, and all layered edge-routing styles.
1314
+ */
1315
+ 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>;
1316
+ declare const layeredAlgorithm: LayoutAlgorithm<LayeredLayoutOptions>;
1317
+ //#endregion
1318
+ export { CrossingMinimizationStrategy as $, routeEdgesOrthogonally as A, PinConstraint as At, EdgeRouter as B, breakCyclesWithModelOrderDepthFirstSearch as C, AlignConstraint as Ct, minimizeCrossingsWithModelOrder as D, GeometryReference as Dt, minimizeCrossingsWithMedian as E, GeometryAttribute as Et, CompoundEdgeAttachment as F, LayeredLayoutOptions as G, LayerAssigner as H, CompoundLayoutGeometry as I, LayeredStrategies as J, LayeredPhaseInput as K, CompoundLayoutOptions as L, routeEdgesWithSplines as M, c as Mt, CompoundVisualGraph as N, placeNodesInLayers as O, LayoutConstraint as Ot, AcyclicOrientation as P, NodeSize as Q, CrossingMinimizer as R, breakCyclesWithModelOrderBreadthFirstSearch as S, LayoutScope as St, minimizeCrossingsWithBarycenter as T, DistributeConstraint as Tt, LayerAssignment as U, EdgeRoutes as V, LayerOrder as W, NodePlacement as X, LayoutPadding as Y, NodePlacer as Z, breakCyclesByStronglyConnectedNodeType as _, LayoutExecutionContext as _t, placeNodesWithBrandesKoepf as a, fromElkLayeredOptionId as at, breakCyclesInteractively as b, LayoutRequest as bt, assignLayersWithNetworkSimplex as c, ElkLayeredOptionId as ct, assignLayersByLongestPath as d, elkLayeredOptionDefinitions as dt, CycleBreakingStrategy as et, assignLayersByLongestPathToSink as f, AnyGraph as ft, breakCyclesByStronglyConnectedConnectivity as g, LayoutDirection as gt, breakCyclesByModelOrder as h, LayoutDiagnostic as ht, placeNodesWithLinearSegments as i, NodePlacementStrategy as it, routeEdgesWithPolylines as j, WaypointConstraint as jt, placeNodesInteractively as k, LinearConstraint as kt, assignLayersByBreadthFirstModelOrder as l, ElkLayeredOptionName as lt, assignLayersWithCoffmanGraham as m, LayoutCapabilities as mt, layeredAlgorithm as n, LayeredAdvancedOptions as nt, assignLayersWithStretchWidth as o, toElkLayeredOptions as ot, assignLayersInteractively as p, LayoutAlgorithm as pt, LayeredSpacing as q, placeNodesWithNetworkSimplex as r, LayeringStrategy as rt, assignLayersWithMinWidth as s, elkLayeredEnumValues as st, getLayeredLayout as t, EdgeRoutingStyle as tt, assignLayersByDepthFirstModelOrder as u, ElkLayeredOptionValueByName as ut, breakCyclesGreedily as v, LayoutMetrics as vt, minimizeCrossingsInteractively as w, ConstraintStrength as wt, breakCyclesWithDepthFirstSearch as x, LayoutResult as xt, breakCyclesGreedilyByModelOrder as y, LayoutPhaseMetrics as yt, CycleBreaker as z };