@statelyai/layout 0.4.1 → 0.4.2

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.
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, '__esModule', { value: true });
2
- require('../layered-5RxQhryb.cjs');
3
- const require_elkjs = require('../elkjs-DNfXDPup.cjs');
2
+ require('../layered-BJu8A21s.cjs');
3
+ const require_elkjs = require('../elkjs-CnBvdyBu.cjs');
4
4
 
5
5
  exports.compileStatechartLayout = require_elkjs.compileStatechartLayout;
6
6
  exports.default = require_elkjs.ELK;
@@ -1,4 +1,4 @@
1
- import "../layered-DSesbctm.mjs";
2
- import { a as scoreStatechartLayout, i as layoutStatechart, n as getElkRoutes, r as compileStatechartLayout, t as ELK } from "../elkjs-BBfKN4Dw.mjs";
1
+ import "../layered-BsAdm_u8.mjs";
2
+ import { a as scoreStatechartLayout, i as layoutStatechart, n as getElkRoutes, r as compileStatechartLayout, t as ELK } from "../elkjs-CSi7oB5J.mjs";
3
3
 
4
4
  export { compileStatechartLayout, ELK as default, getElkRoutes, layoutStatechart, scoreStatechartLayout };
@@ -1,4 +1,4 @@
1
- require('../layered-5RxQhryb.cjs');
1
+ require('../layered-BJu8A21s.cjs');
2
2
  const require_elkjs_worker = require('./worker.cjs');
3
3
  const require_worker_client = require('../worker-client-D4oEvhAl.cjs');
4
4
 
@@ -1,4 +1,4 @@
1
- import "../layered-DSesbctm.mjs";
1
+ import "../layered-BsAdm_u8.mjs";
2
2
  import { Worker } from "./worker.mjs";
3
3
  import { t as WorkerELK } from "../worker-client-BNjwT1AJ.mjs";
4
4
 
@@ -1,5 +1,5 @@
1
- require('../layered-5RxQhryb.cjs');
2
- const require_elkjs = require('../elkjs-DNfXDPup.cjs');
1
+ require('../layered-BJu8A21s.cjs');
2
+ const require_elkjs = require('../elkjs-CnBvdyBu.cjs');
3
3
 
4
4
  //#region src/elkjs/worker.ts
5
5
  /*******************************************************************************
@@ -1,5 +1,5 @@
1
- import "../layered-DSesbctm.mjs";
2
- import { t as ELK } from "../elkjs-BBfKN4Dw.mjs";
1
+ import "../layered-BsAdm_u8.mjs";
2
+ import { t as ELK } from "../elkjs-CSi7oB5J.mjs";
3
3
 
4
4
  //#region src/elkjs/worker.ts
5
5
  /*******************************************************************************
@@ -1,6 +1,6 @@
1
1
  import { T as pathFromPoints, g as pathFromSplinePoints, j as freeze } from "./routing-CR8flv8b.mjs";
2
- import { $ as attachExternalPortDummy, R as createLayerSweepSession, S as CROSSING_MODEL, Z as minimizeHierarchyCrossings, b as elkjs0111ResultPolicy, c as elkLayeredOptionDefinitions, et as createExternalPortDummy, h as separateOpposingTracks, nt as createOrthogonalHypersegments, t as createLayeredScopePipeline, tt as externalPortDummyOf, v as isPerpendicularPortRestored, y as hierarchicalPortSides } from "./layered-DSesbctm.mjs";
3
- import { n as executeElkjs0111Layout } from "./layout-engine-GpBIX6ng.mjs";
2
+ import { $ as attachExternalPortDummy, R as createLayerSweepSession, S as CROSSING_MODEL, Z as minimizeHierarchyCrossings, b as elkjs0111ResultPolicy, c as elkLayeredOptionDefinitions, et as createExternalPortDummy, h as separateOpposingTracks, nt as createOrthogonalHypersegments, t as createLayeredScopePipeline, tt as externalPortDummyOf, v as isPerpendicularPortRestored, y as hierarchicalPortSides } from "./layered-BsAdm_u8.mjs";
3
+ import { n as executeElkjs0111Layout } from "./layout-engine-DnlmGxHL.mjs";
4
4
  import { createGraph } from "@statelyai/graph";
5
5
 
6
6
  //#region src/layered/hierarchy-sweepiness.ts
@@ -1805,6 +1805,13 @@ var ELK = class {
1805
1805
  return (sourceConstraint === "FIRST" || sourceConstraint === "FIRST_SEPARATE") && (targetConstraint === "FIRST" || targetConstraint === "FIRST_SEPARATE");
1806
1806
  })) throw new Error("org.eclipse.elk.core.UnsupportedConfigurationException: Layer constraints conflict");
1807
1807
  const padding = parsePadding(getOption(layoutOptions, "padding"), algorithm === "layered" ? 12 : 0);
1808
+ const parsedSettings = /* @__PURE__ */ new WeakMap();
1809
+ const elementSettings = (elementOptions) => {
1810
+ const key = elementOptions ?? noElementOptions;
1811
+ let settings = parsedSettings.get(key);
1812
+ if (!settings) parsedSettings.set(key, settings = getElementLayeredSettings(key));
1813
+ return settings;
1814
+ };
1808
1815
  const options = {
1809
1816
  direction: getDirection(layoutOptions),
1810
1817
  spacing: {
@@ -1821,13 +1828,13 @@ var ELK = class {
1821
1828
  },
1822
1829
  nodeSettings: (node) => {
1823
1830
  const child = findById(graph.children, node.id)?.item;
1824
- return getElementLayeredSettings(child?.layoutOptions ?? {});
1831
+ return elementSettings(child?.layoutOptions);
1825
1832
  },
1826
1833
  edgeSettings: (edge) => {
1827
1834
  const elkEdge = findById(graph.edges, edge.id)?.item;
1828
1835
  return {
1829
- ...getElementLayeredSettings(elkEdge?.layoutOptions ?? {}),
1830
- ...getElementLayeredSettings(elkEdge?.labels?.[0]?.layoutOptions ?? {}),
1836
+ ...elementSettings(elkEdge?.layoutOptions),
1837
+ ...elementSettings(elkEdge?.labels?.[0]?.layoutOptions),
1831
1838
  "edge.hierarchyRank": elkEdge && hierarchySegmentRank.get(elkEdge)
1832
1839
  };
1833
1840
  },
@@ -1836,7 +1843,7 @@ var ELK = class {
1836
1843
  const found = findById(child?.ports, port.name);
1837
1844
  const elkPort = found?.item;
1838
1845
  return {
1839
- ...getElementLayeredSettings(elkPort?.layoutOptions ?? {}),
1846
+ ...elementSettings(elkPort?.layoutOptions),
1840
1847
  "port.authoredIndex": found?.position,
1841
1848
  "port.labelWidth": Math.max(0, ...(elkPort?.labels ?? []).map((label) => label.width ?? 0)),
1842
1849
  "port.labelHeight": Math.max(0, ...(elkPort?.labels ?? []).map((label) => label.height ?? 0))
@@ -2302,12 +2309,14 @@ function applyNodeMicroLayout(graph, globalOptions) {
2302
2309
  node.height = height;
2303
2310
  }
2304
2311
  }
2312
+ const exactKeysBySuffix = /* @__PURE__ */ new Map();
2305
2313
  function getOption(options, suffix) {
2306
- const exactKeys = [
2314
+ let exactKeys = exactKeysBySuffix.get(suffix);
2315
+ if (!exactKeys) exactKeysBySuffix.set(suffix, exactKeys = [
2307
2316
  suffix,
2308
2317
  `elk.${suffix}`,
2309
2318
  `org.eclipse.elk.${suffix}`
2310
- ];
2319
+ ]);
2311
2320
  for (const key of exactKeys) if (options[key] !== void 0) return options[key];
2312
2321
  }
2313
2322
  const ergonomicallyMappedLayeredSettings = new Set([
@@ -2386,6 +2395,7 @@ function findById(items, id) {
2386
2395
  position
2387
2396
  };
2388
2397
  }
2398
+ const noElementOptions = {};
2389
2399
  function getElementLayeredSettings(options) {
2390
2400
  const settings = {};
2391
2401
  const chosen = /* @__PURE__ */ new Map();
@@ -1,6 +1,6 @@
1
1
  const require_routing = require('./routing-QIdGGFBe.cjs');
2
- const require_layered = require('./layered-5RxQhryb.cjs');
3
- const require_layout_engine = require('./layout-engine-CLFySz3R.cjs');
2
+ const require_layered = require('./layered-BJu8A21s.cjs');
3
+ const require_layout_engine = require('./layout-engine-BFP1TZbF.cjs');
4
4
  let _statelyai_graph = require("@statelyai/graph");
5
5
 
6
6
  //#region src/layered/hierarchy-sweepiness.ts
@@ -1805,6 +1805,13 @@ var ELK = class {
1805
1805
  return (sourceConstraint === "FIRST" || sourceConstraint === "FIRST_SEPARATE") && (targetConstraint === "FIRST" || targetConstraint === "FIRST_SEPARATE");
1806
1806
  })) throw new Error("org.eclipse.elk.core.UnsupportedConfigurationException: Layer constraints conflict");
1807
1807
  const padding = parsePadding(getOption(layoutOptions, "padding"), algorithm === "layered" ? 12 : 0);
1808
+ const parsedSettings = /* @__PURE__ */ new WeakMap();
1809
+ const elementSettings = (elementOptions) => {
1810
+ const key = elementOptions ?? noElementOptions;
1811
+ let settings = parsedSettings.get(key);
1812
+ if (!settings) parsedSettings.set(key, settings = getElementLayeredSettings(key));
1813
+ return settings;
1814
+ };
1808
1815
  const options = {
1809
1816
  direction: getDirection(layoutOptions),
1810
1817
  spacing: {
@@ -1821,13 +1828,13 @@ var ELK = class {
1821
1828
  },
1822
1829
  nodeSettings: (node) => {
1823
1830
  const child = findById(graph.children, node.id)?.item;
1824
- return getElementLayeredSettings(child?.layoutOptions ?? {});
1831
+ return elementSettings(child?.layoutOptions);
1825
1832
  },
1826
1833
  edgeSettings: (edge) => {
1827
1834
  const elkEdge = findById(graph.edges, edge.id)?.item;
1828
1835
  return {
1829
- ...getElementLayeredSettings(elkEdge?.layoutOptions ?? {}),
1830
- ...getElementLayeredSettings(elkEdge?.labels?.[0]?.layoutOptions ?? {}),
1836
+ ...elementSettings(elkEdge?.layoutOptions),
1837
+ ...elementSettings(elkEdge?.labels?.[0]?.layoutOptions),
1831
1838
  "edge.hierarchyRank": elkEdge && hierarchySegmentRank.get(elkEdge)
1832
1839
  };
1833
1840
  },
@@ -1836,7 +1843,7 @@ var ELK = class {
1836
1843
  const found = findById(child?.ports, port.name);
1837
1844
  const elkPort = found?.item;
1838
1845
  return {
1839
- ...getElementLayeredSettings(elkPort?.layoutOptions ?? {}),
1846
+ ...elementSettings(elkPort?.layoutOptions),
1840
1847
  "port.authoredIndex": found?.position,
1841
1848
  "port.labelWidth": Math.max(0, ...(elkPort?.labels ?? []).map((label) => label.width ?? 0)),
1842
1849
  "port.labelHeight": Math.max(0, ...(elkPort?.labels ?? []).map((label) => label.height ?? 0))
@@ -2302,12 +2309,14 @@ function applyNodeMicroLayout(graph, globalOptions) {
2302
2309
  node.height = height;
2303
2310
  }
2304
2311
  }
2312
+ const exactKeysBySuffix = /* @__PURE__ */ new Map();
2305
2313
  function getOption(options, suffix) {
2306
- const exactKeys = [
2314
+ let exactKeys = exactKeysBySuffix.get(suffix);
2315
+ if (!exactKeys) exactKeysBySuffix.set(suffix, exactKeys = [
2307
2316
  suffix,
2308
2317
  `elk.${suffix}`,
2309
2318
  `org.eclipse.elk.${suffix}`
2310
- ];
2319
+ ]);
2311
2320
  for (const key of exactKeys) if (options[key] !== void 0) return options[key];
2312
2321
  }
2313
2322
  const ergonomicallyMappedLayeredSettings = new Set([
@@ -2386,6 +2395,7 @@ function findById(items, id) {
2386
2395
  position
2387
2396
  };
2388
2397
  }
2398
+ const noElementOptions = {};
2389
2399
  function getElementLayeredSettings(options) {
2390
2400
  const settings = {};
2391
2401
  const chosen = /* @__PURE__ */ new Map();
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  const require_routing = require('./routing-QIdGGFBe.cjs');
2
- const require_layered = require('./layered-5RxQhryb.cjs');
3
- const require_layout_engine = require('./layout-engine-CLFySz3R.cjs');
2
+ const require_layered = require('./layered-BJu8A21s.cjs');
3
+ const require_layout_engine = require('./layout-engine-BFP1TZbF.cjs');
4
4
  let _statelyai_graph = require("@statelyai/graph");
5
5
 
6
6
  //#region src/layout.ts
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { C as getPointAtLength, D as toSvgPath, E as roundCorners, F as LayoutError, I as UnsupportedLayoutError, S as getPathLength, T as pathFromPoints, _ as routeToGraphPatch, a as fanRouting, b as flattenPath, c as orthogonalRouting, d as routingStrategies, f as selfLoopRouting, g as pathFromSplinePoints, h as getLayoutRoutes, i as curvedRouting, l as parallelRouting, m as applyRoutePatches, n as bundleRouting, o as octilinearRouting, p as straightRouting, r as busRouting, s as organicRouting, t as bezierRouting, u as polylineRouting, v as routeToPoints, w as getTangentAtLength, x as getPathBounds, y as routeToPolylines } from "./routing-CR8flv8b.mjs";
2
- import { A as breakCyclesByStronglyConnectedConnectivity, B as minimizeCrossingsInteractively, C as assignLayersByBreadthFirstModelOrder, D as assignLayersInteractively, E as assignLayersByLongestPathToSink, F as breakCyclesWithDepthFirstSearch, G as placeNodesInteractively, H as minimizeCrossingsWithMedian, I as breakCyclesWithModelOrderBreadthFirstSearch, J as routeEdgesWithPolylines, L as breakCyclesWithModelOrderDepthFirstSearch, M as breakCyclesGreedily, N as breakCyclesGreedilyByModelOrder, O as assignLayersWithCoffmanGraham, P as breakCyclesInteractively, Q as assignLayersWithNetworkSimplex, T as assignLayersByLongestPath, U as minimizeCrossingsWithModelOrder, V as minimizeCrossingsWithBarycenter, W as placeNodesInLayers, Y as routeEdgesWithSplines, _ as statechartHints, a as fromElkLayeredOptionId, c as elkLayeredOptionDefinitions, f as assignLayersWithStretchWidth, g as hint, i as layeredAlgorithm, j as breakCyclesByStronglyConnectedNodeType, k as breakCyclesByModelOrder, m as c, o as toElkLayeredOptions, p as assignLayersWithMinWidth, q as routeEdgesOrthogonally, r as getLayeredLayout, s as elkLayeredEnumValues, w as assignLayersByDepthFirstModelOrder } from "./layered-DSesbctm.mjs";
3
- import { a as getSporeCompactionLayout, c as sporeOverlapRemovalAlgorithm, d as getRectanglePackingLayout, f as rectanglePackingAlgorithm, g as getFixedLayout, h as fixedAlgorithm, i as getBuiltInLayoutAlgorithm, l as getRandomLayout, m as getBoxLayout, o as getSporeOverlapRemovalLayout, p as boxAlgorithm, r as executeLayoutAlgorithm, s as sporeCompactionAlgorithm, t as builtInLayoutAlgorithms, u as randomAlgorithm } from "./layout-engine-GpBIX6ng.mjs";
2
+ import { A as breakCyclesByStronglyConnectedConnectivity, B as minimizeCrossingsInteractively, C as assignLayersByBreadthFirstModelOrder, D as assignLayersInteractively, E as assignLayersByLongestPathToSink, F as breakCyclesWithDepthFirstSearch, G as placeNodesInteractively, H as minimizeCrossingsWithMedian, I as breakCyclesWithModelOrderBreadthFirstSearch, J as routeEdgesWithPolylines, L as breakCyclesWithModelOrderDepthFirstSearch, M as breakCyclesGreedily, N as breakCyclesGreedilyByModelOrder, O as assignLayersWithCoffmanGraham, P as breakCyclesInteractively, Q as assignLayersWithNetworkSimplex, T as assignLayersByLongestPath, U as minimizeCrossingsWithModelOrder, V as minimizeCrossingsWithBarycenter, W as placeNodesInLayers, Y as routeEdgesWithSplines, _ as statechartHints, a as fromElkLayeredOptionId, c as elkLayeredOptionDefinitions, f as assignLayersWithStretchWidth, g as hint, i as layeredAlgorithm, j as breakCyclesByStronglyConnectedNodeType, k as breakCyclesByModelOrder, m as c, o as toElkLayeredOptions, p as assignLayersWithMinWidth, q as routeEdgesOrthogonally, r as getLayeredLayout, s as elkLayeredEnumValues, w as assignLayersByDepthFirstModelOrder } from "./layered-BsAdm_u8.mjs";
3
+ import { a as getSporeCompactionLayout, c as sporeOverlapRemovalAlgorithm, d as getRectanglePackingLayout, f as rectanglePackingAlgorithm, g as getFixedLayout, h as fixedAlgorithm, i as getBuiltInLayoutAlgorithm, l as getRandomLayout, m as getBoxLayout, o as getSporeOverlapRemovalLayout, p as boxAlgorithm, r as executeLayoutAlgorithm, s as sporeCompactionAlgorithm, t as builtInLayoutAlgorithms, u as randomAlgorithm } from "./layout-engine-DnlmGxHL.mjs";
4
4
  import { getGraphIssues } from "@statelyai/graph";
5
5
 
6
6
  //#region src/layout.ts
@@ -1,4 +1,4 @@
1
- const require_layered = require('../layered-5RxQhryb.cjs');
1
+ const require_layered = require('../layered-BJu8A21s.cjs');
2
2
 
3
3
  exports.assignLayersByBreadthFirstModelOrder = require_layered.assignLayersByBreadthFirstModelOrder;
4
4
  exports.assignLayersByDepthFirstModelOrder = require_layered.assignLayersByDepthFirstModelOrder;
@@ -1,3 +1,3 @@
1
- import { A as breakCyclesByStronglyConnectedConnectivity, B as minimizeCrossingsInteractively, C as assignLayersByBreadthFirstModelOrder, D as assignLayersInteractively, E as assignLayersByLongestPathToSink, F as breakCyclesWithDepthFirstSearch, G as placeNodesInteractively, H as minimizeCrossingsWithMedian, I as breakCyclesWithModelOrderBreadthFirstSearch, J as routeEdgesWithPolylines, L as breakCyclesWithModelOrderDepthFirstSearch, M as breakCyclesGreedily, N as breakCyclesGreedilyByModelOrder, O as assignLayersWithCoffmanGraham, P as breakCyclesInteractively, Q as assignLayersWithNetworkSimplex, T as assignLayersByLongestPath, U as minimizeCrossingsWithModelOrder, V as minimizeCrossingsWithBarycenter, W as placeNodesInLayers, Y as routeEdgesWithSplines, a as fromElkLayeredOptionId, c as elkLayeredOptionDefinitions, d as placeNodesWithBrandesKoepf, f as assignLayersWithStretchWidth, i as layeredAlgorithm, j as breakCyclesByStronglyConnectedNodeType, k as breakCyclesByModelOrder, l as placeNodesWithNetworkSimplex, n as elkjs0111LayeredAlgorithm, o as toElkLayeredOptions, p as assignLayersWithMinWidth, q as routeEdgesOrthogonally, r as getLayeredLayout, s as elkLayeredEnumValues, t as createLayeredScopePipeline, u as placeNodesWithLinearSegments, w as assignLayersByDepthFirstModelOrder } from "../layered-DSesbctm.mjs";
1
+ import { A as breakCyclesByStronglyConnectedConnectivity, B as minimizeCrossingsInteractively, C as assignLayersByBreadthFirstModelOrder, D as assignLayersInteractively, E as assignLayersByLongestPathToSink, F as breakCyclesWithDepthFirstSearch, G as placeNodesInteractively, H as minimizeCrossingsWithMedian, I as breakCyclesWithModelOrderBreadthFirstSearch, J as routeEdgesWithPolylines, L as breakCyclesWithModelOrderDepthFirstSearch, M as breakCyclesGreedily, N as breakCyclesGreedilyByModelOrder, O as assignLayersWithCoffmanGraham, P as breakCyclesInteractively, Q as assignLayersWithNetworkSimplex, T as assignLayersByLongestPath, U as minimizeCrossingsWithModelOrder, V as minimizeCrossingsWithBarycenter, W as placeNodesInLayers, Y as routeEdgesWithSplines, a as fromElkLayeredOptionId, c as elkLayeredOptionDefinitions, d as placeNodesWithBrandesKoepf, f as assignLayersWithStretchWidth, i as layeredAlgorithm, j as breakCyclesByStronglyConnectedNodeType, k as breakCyclesByModelOrder, l as placeNodesWithNetworkSimplex, n as elkjs0111LayeredAlgorithm, o as toElkLayeredOptions, p as assignLayersWithMinWidth, q as routeEdgesOrthogonally, r as getLayeredLayout, s as elkLayeredEnumValues, t as createLayeredScopePipeline, u as placeNodesWithLinearSegments, w as assignLayersByDepthFirstModelOrder } from "../layered-BsAdm_u8.mjs";
2
2
 
3
3
  export { assignLayersByBreadthFirstModelOrder, assignLayersByDepthFirstModelOrder, assignLayersByLongestPath, assignLayersByLongestPathToSink, assignLayersInteractively, assignLayersWithCoffmanGraham, assignLayersWithMinWidth, assignLayersWithNetworkSimplex, assignLayersWithStretchWidth, breakCyclesByModelOrder, breakCyclesByStronglyConnectedConnectivity, breakCyclesByStronglyConnectedNodeType, breakCyclesGreedily, breakCyclesGreedilyByModelOrder, breakCyclesInteractively, breakCyclesWithDepthFirstSearch, breakCyclesWithModelOrderBreadthFirstSearch, breakCyclesWithModelOrderDepthFirstSearch, createLayeredScopePipeline, elkLayeredEnumValues, elkLayeredOptionDefinitions, elkjs0111LayeredAlgorithm, fromElkLayeredOptionId, getLayeredLayout, layeredAlgorithm, minimizeCrossingsInteractively, minimizeCrossingsWithBarycenter, minimizeCrossingsWithMedian, minimizeCrossingsWithModelOrder, placeNodesInLayers, placeNodesInteractively, placeNodesWithBrandesKoepf, placeNodesWithLinearSegments, placeNodesWithNetworkSimplex, routeEdgesOrthogonally, routeEdgesWithPolylines, routeEdgesWithSplines, toElkLayeredOptions };