aurea-eden 1.46.0 → 1.46.1

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
@@ -214,7 +214,10 @@ const barValues = {
214
214
  'Task_4': [
215
215
  { heightValue: 42, colorValue: 70 },
216
216
  { heightValue: 30, colorValue: 90, colorsInverted: true }
217
- ]
217
+ ],
218
+
219
+ // Clear bars explicitly (omitting the ID entirely also works)
220
+ 'Task_5': 0
218
221
  };
219
222
  </script>
220
223
  ```
@@ -357,6 +360,14 @@ diagram.addTask('a1')
357
360
 
358
361
  Colors are normalized **per slot** across all elements. All elements' first bars are normalized together, all second bars separately — so each slot independently represents a different KPI dimension.
359
362
 
363
+ #### Clearing Bars
364
+
365
+ To remove a value bar from an element that previously displayed one, you can either:
366
+ 1. Completely omit the element's ID from the `values` object in your next reactive update.
367
+ 2. Explicitly set the value to `0` or an empty array `[]`.
368
+
369
+ The Vue wrapper will automatically clean up the 3D meshes without crashing the WebGL context.
370
+
360
371
  #### Badge labels in ANALYZE mode
361
372
 
362
373
  Each bar (or combined group for 3+ bars) gets an animated floating label that counts up from zero to the final value during the rise animation. If the element has an active-task type set, the label also carries the appropriate star icon.
@@ -539,6 +550,8 @@ export { CurvedConnectorShape };
539
550
 
540
551
  ```
541
552
  aurea-eden/
553
+ ├── data/
554
+ │ └── bpmn/ # BPMN 2.0 XML templates
542
555
  ├── lib/
543
556
  │ ├── components/ # Vue component (AureaEdenBpmnDiagram.vue)
544
557
  │ ├── connectors/ # Connector base class
@@ -553,8 +566,7 @@ aurea-eden/
553
566
  │ ├── CustomNotationDemo/
554
567
  │ ├── OrderProcessingDemo/
555
568
  │ ├── ShapesDemo/
556
- ├── SimpleBPMN/
557
- │ └── VueWrapperBpmnDemo/
569
+ └── SimpleBPMN/
558
570
  ├── assets/ # Static assets (logo, demo screenshots)
559
571
  ├── dist/ # Built library (ES module + UMD)
560
572
  ├── dist-site/ # Built demo site
@@ -60172,6 +60172,9 @@ SPREAD LOG: Target ${nodeId} Port ${basePort}`);
60172
60172
  "eventBasedGateway",
60173
60173
  "complexGateway",
60174
60174
  "endEvent",
60175
+ "intermediateCatchEvent",
60176
+ "intermediateThrowEvent",
60177
+ "boundaryEvent",
60175
60178
  "subProcess",
60176
60179
  "callActivity"
60177
60180
  ];
@@ -60440,7 +60443,7 @@ SPREAD LOG: Target ${nodeId} Port ${basePort}`);
60440
60443
  return text.replace(/\n/g, "\\n").replace(/'/g, "\\'");
60441
60444
  }
60442
60445
  }
60443
- const version = "1.46.0";
60446
+ const version = "1.46.1";
60444
60447
  var Easing = Object.freeze({
60445
60448
  Linear: Object.freeze({
60446
60449
  None: function(amount) {
@@ -68071,22 +68074,24 @@ class Diagram {
68071
68074
  if (barHeight > maxBarHeight) maxBarHeight = barHeight;
68072
68075
  const rawColor = getColorForValue(colorValue, slotMin, slotMax, colorsInverted);
68073
68076
  const barColor = isDark ? new Color(65535) : rawColor;
68074
- const slotShape = totalBars === 1 ? element.shape.getOuterShape() : createRoundedBarSlotShape(elementSize.x, elementSize.y, barIndex, totalBars);
68075
- const barShape = new ValueBarShape(slotShape, barHeight, barColor, this.theme);
68076
- const barElement = new Element(`${element.elementId}_bar_${barIndex}`, barShape);
68077
- barElement.themable = false;
68078
- barElement.userData.barIndex = barIndex;
68079
- barElement.userData.barDef = barDef;
68080
- barElement.userData.slotMin = slotMin;
68081
- barElement.userData.slotMax = slotMax;
68082
- this.addElement(barElement).positionAt(element.getPosition());
68083
- element.valueBars.push({ element: barElement, positionOffset: new Vector3(0, 0, 0) });
68084
- barElement.scale.z = 0;
68085
- const animationState = { progress: 0 };
68086
- const tween = new Tween(animationState).to({ progress: 1 }, 1500).easing(Easing.Quartic.Out).onUpdate(() => {
68087
- barElement.scale.z = animationState.progress;
68088
- }).start();
68089
- this.analysisTweens.push(tween);
68077
+ if (barHeight > 0) {
68078
+ const slotShape = totalBars === 1 ? element.shape.getOuterShape() : createRoundedBarSlotShape(elementSize.x, elementSize.y, barIndex, totalBars);
68079
+ const barShape = new ValueBarShape(slotShape, barHeight, barColor, this.theme);
68080
+ const barElement = new Element(`${element.elementId}_bar_${barIndex}`, barShape);
68081
+ barElement.themable = false;
68082
+ barElement.userData.barIndex = barIndex;
68083
+ barElement.userData.barDef = barDef;
68084
+ barElement.userData.slotMin = slotMin;
68085
+ barElement.userData.slotMax = slotMax;
68086
+ this.addElement(barElement).positionAt(element.getPosition());
68087
+ element.valueBars.push({ element: barElement, positionOffset: new Vector3(0, 0, 0) });
68088
+ barElement.scale.z = 0;
68089
+ const animationState = { progress: 0 };
68090
+ const tween = new Tween(animationState).to({ progress: 1 }, 1500).easing(Easing.Quartic.Out).onUpdate(() => {
68091
+ barElement.scale.z = animationState.progress;
68092
+ }).start();
68093
+ this.analysisTweens.push(tween);
68094
+ }
68090
68095
  });
68091
68096
  const taskType = element.userData.taskType;
68092
68097
  let minZ = 0;
@@ -68726,19 +68731,29 @@ class Diagram {
68726
68731
  * Clears all elements and connectors from the diagram.
68727
68732
  */
68728
68733
  clear() {
68734
+ if (this.tween) this.tween.stop();
68735
+ if (this.analysisTweens) {
68736
+ this.analysisTweens.forEach((t2) => t2.stop());
68737
+ this.analysisTweens = [];
68738
+ }
68739
+ this.removeValueBars();
68729
68740
  if (this.elements.length > 0) {
68730
68741
  this.elements.forEach((element) => {
68731
68742
  this.scene.remove(element);
68743
+ if (element.dispose) element.dispose();
68732
68744
  });
68733
68745
  }
68734
68746
  if (this.connectors.length > 0) {
68735
68747
  this.connectors.forEach((connector) => {
68736
68748
  this.scene.remove(connector);
68749
+ if (connector.geometry) connector.geometry.dispose();
68750
+ if (connector.material) connector.material.dispose();
68737
68751
  });
68738
68752
  }
68739
68753
  this.elements = [];
68740
68754
  this.connectors = [];
68741
68755
  this.elementConnectors.clear();
68756
+ this.mode = "VIEW";
68742
68757
  }
68743
68758
  // ================================================================
68744
68759
  // Diagram JSON
@@ -69384,6 +69399,23 @@ class BpmnDiagram extends Diagram {
69384
69399
  _el.textStyle = { fontSize: BPMN_DIMS.FONT_SIZE_EVENT, align: BPMN_DIMS.TEXT_ALIGN_EVENT, offset: new Vector3(0, -(height / 2) - BPMN_DIMS.LABEL_GAP_BELOW, 3), vAlign: "top", faceCamera: BPMN_DIMS.FACE_CAMERA_EVENT };
69385
69400
  return _el;
69386
69401
  }
69402
+ addIntermediateThrowEvent(elementId, width = BPMN_DIMS.EVENT_SIZE, height = BPMN_DIMS.EVENT_SIZE) {
69403
+ const _el = this.addIntermediateEvent(elementId, width, height);
69404
+ _el.bpmnType = "bpmn:IntermediateThrowEvent";
69405
+ return _el;
69406
+ }
69407
+ addIntermediateCatchEvent(elementId, width = BPMN_DIMS.EVENT_SIZE, height = BPMN_DIMS.EVENT_SIZE) {
69408
+ const _el = this.addIntermediateEvent(elementId, width, height);
69409
+ _el.bpmnType = "bpmn:IntermediateCatchEvent";
69410
+ return _el;
69411
+ }
69412
+ addBoundaryEvent(elementId, width = BPMN_DIMS.EVENT_SIZE, height = BPMN_DIMS.EVENT_SIZE) {
69413
+ const _el = this.addElement(new Element(elementId, new CircleShape(width, height))).addIcon(intermediate, "center", BPMN_DIMS.ICON_SIZE_LARGE);
69414
+ _el.semanticType = "event";
69415
+ _el.bpmnType = "bpmn:BoundaryEvent";
69416
+ _el.textStyle = { fontSize: BPMN_DIMS.FONT_SIZE_EVENT, align: BPMN_DIMS.TEXT_ALIGN_EVENT, offset: new Vector3(0, -(height / 2) - BPMN_DIMS.LABEL_GAP_BELOW, 3), vAlign: "top", faceCamera: BPMN_DIMS.FACE_CAMERA_EVENT };
69417
+ return _el;
69418
+ }
69387
69419
  // End Events
69388
69420
  addEndEvent(elementId, width = BPMN_DIMS.EVENT_SIZE, height = BPMN_DIMS.EVENT_SIZE) {
69389
69421
  const _el = this.addElement(new Element(elementId, new CircleShape(width, height, BPMN_DIMS.END_EVENT_LINE_WIDTH)));