aurea-eden 1.43.1 → 1.44.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/README.md CHANGED
@@ -72,6 +72,8 @@ Aurea EDEN addresses this gap.
72
72
  | **Value Bars** | Animate 3D data columns atop elements in ANALYZE mode — color-coded per slot |
73
73
  | **Multiple Bars** | Elements can carry 1–N side-by-side bars, independently normalized per slot |
74
74
  | **Active Task Badges** | Gold/silver animated 3D star badges for my-task / other-task process states |
75
+ | **Native Auto-Layout** | Robust 2-pass BFS topology engine with support for geometric user overrides |
76
+ | **Headless Graphs** | Decoupled semantics allow instantiating and exporting zero-coordinate edges natively |
75
77
  | **Method Chaining API** | Fluent, composable API: `.addTask().positionRightOf().addValueBar()...` |
76
78
  | **BPMN Import** | Parse BPMN 2.0 XML and render it as a live 3D diagram |
77
79
  | **Vue Component** | Drop-in `<AureaEdenBpmnDiagram>` component for Vue 3 / Vuetify apps |
@@ -294,6 +296,25 @@ Connection point identifiers: `'N'`, `'S'`, `'E'`, `'W'` (and their full-name eq
294
296
 
295
297
  ---
296
298
 
299
+ ### Auto-Layout (Topology Engine)
300
+
301
+ Aurea EDEN features a powerful, fully-native multi-pass rendering engine that eliminates the need for manual `.positionRightOf()` boilerplate when handling complex logical graphs.
302
+
303
+ ```javascript
304
+ // 1. Pass the unpositioned, arbitrary topology
305
+ // 2. Provide an optional array of manual visual overrides
306
+ diagram.autoLayout([
307
+ { elementId: 'task_3', placementCommand: 'positionUpOf', relativeToId: 'task_2' }
308
+ ]);
309
+ ```
310
+ * **Pass 1:** Cleanses manual alignment drift and reorganizes the logical graph using a mathematically pure Breadth-First-Search (BFS) parallel lane strategy.
311
+ * **Pass 2:** Automatically executes a Topological Depth-First-Search (DFS) sort across your explicit visual `overrides` array, safely applying them without creating dependency cycles.
312
+ * **Pass 3:** Scans the finished scene and resolves any remaining physical AABB overlaps through geometric physics sweeps.
313
+
314
+ > **Note:** The semantic connection framework is fully decoupled from visual geometry. This means you can flawlessly instantiate hundreds of zero-coordinate sequence edges "headlessly" without breaking the engine, and then perfectly reorganize them later with a single `.autoLayout()` call!
315
+
316
+ ---
317
+
297
318
  ### Value Bars (ANALYZE mode)
298
319
 
299
320
  Value bars are 3D columns that rise from elements when the diagram is in `ANALYZE` mode. Each element can have **one or more** bars placed side-by-side (element width is divided equally).
@@ -60421,7 +60421,7 @@ SPREAD LOG: Target ${nodeId} Port ${basePort}`);
60421
60421
  return text.replace(/\n/g, "\\n").replace(/'/g, "\\'");
60422
60422
  }
60423
60423
  }
60424
- const version = "1.43.1";
60424
+ const version = "1.44.0";
60425
60425
  var Easing = Object.freeze({
60426
60426
  Linear: Object.freeze({
60427
60427
  None: function(amount) {
@@ -64618,9 +64618,17 @@ class RoundedCornerOrthogonalConnectorShape extends Shape2 {
64618
64618
  const width = lineWidth / 2;
64619
64619
  const color = Colors.ELEMENT_STROKE;
64620
64620
  const extrudeSettings = ExtrusionParameters$1;
64621
- if (!connectorPoints || connectorPoints.length < 2) {
64621
+ let pathLength = 0;
64622
+ if (connectorPoints && connectorPoints.length >= 2) {
64623
+ for (let i3 = 1; i3 < connectorPoints.length; i3++) {
64624
+ pathLength += Math.sqrt(
64625
+ Math.pow(connectorPoints[i3].x - connectorPoints[i3 - 1].x, 2) + Math.pow(connectorPoints[i3].y - connectorPoints[i3 - 1].y, 2)
64626
+ );
64627
+ }
64628
+ }
64629
+ if (!connectorPoints || connectorPoints.length < 2 || pathLength < 1e-3) {
64622
64630
  super(new BufferGeometry(), new DiagramEditMaterial(color));
64623
- this.points = [];
64631
+ this.points = connectorPoints || [];
64624
64632
  return;
64625
64633
  }
64626
64634
  var connectorShape = new Shape$1();
@@ -65320,6 +65328,11 @@ class StraightDottedConnectorShape extends Shape2 {
65320
65328
  const gapLength = radius * 6;
65321
65329
  const direction = new Vector2().subVectors(p2, p1);
65322
65330
  const totalLength = direction.length();
65331
+ if (totalLength < 1e-3) {
65332
+ super(new BufferGeometry(), new DiagramEditMaterial(color));
65333
+ this.points = connectorPoints || [];
65334
+ return;
65335
+ }
65323
65336
  direction.normalize();
65324
65337
  const shapes = [];
65325
65338
  let currentDist = 0;