@metadev/daga 1.1.0 → 1.2.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.
@@ -7,7 +7,7 @@ import * as i4 from '@angular/forms';
7
7
  import { FormsModule } from '@angular/forms';
8
8
  import * as i3 from '@metadev/lux';
9
9
  import { LuxModule } from '@metadev/lux';
10
- import { Subject, delay, map, combineLatest } from 'rxjs';
10
+ import { Subject, combineLatest, delay, map } from 'rxjs';
11
11
 
12
12
  var Side;
13
13
  (function (Side) {
@@ -71,12 +71,56 @@ class CollapseButtonComponent {
71
71
  selection.style(this.rule, this.collapsed ? this.collapsedValue : this.visibleValue);
72
72
  }
73
73
  }
74
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CollapseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
75
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: CollapseButtonComponent, isStandalone: true, selector: "daga-collapse-button", inputs: { collapsableSelector: "collapsableSelector", collapsableAdditionalSelector: "collapsableAdditionalSelector", collapsed: "collapsed", disabled: "disabled", direction: "direction", rule: "rule", collapsedValue: "collapsedValue", visibleValue: "visibleValue" }, ngImport: i0, template: "<button class=\"collapse-button {{ direction }}\" (click)=\"toggleCollapse()\">\n <img\n *ngIf=\"direction === Side.Bottom && disabled\"\n src=\"/assets/daga/icon/action/drop-vertical-none.svg\"\n />\n <img\n *ngIf=\"direction === Side.Bottom && !disabled && collapsed\"\n src=\"/assets/daga/icon/action/drop-vertical-down.svg\"\n />\n <img\n *ngIf=\"direction === Side.Bottom && !disabled && !collapsed\"\n src=\"/assets/daga/icon/action/drop-vertical-up.svg\"\n />\n\n <img\n *ngIf=\"direction === Side.Top && disabled\"\n src=\"/assets/daga/icon/action/drop-vertical-none.svg\"\n />\n <img\n *ngIf=\"direction === Side.Top && !disabled && collapsed\"\n src=\"/assets/daga/icon/action/drop-vertical-up.svg\"\n />\n <img\n *ngIf=\"direction === Side.Top && !disabled && !collapsed\"\n src=\"/assets/daga/icon/action/drop-vertical-down.svg\"\n />\n\n <img\n *ngIf=\"direction === Side.Left && disabled\"\n src=\"/assets/daga/icon/action/drop-horizontal-none.svg\"\n />\n <img\n *ngIf=\"direction === Side.Left && !disabled && collapsed\"\n src=\"/assets/daga/icon/action/drop-horizontal-left.svg\"\n />\n <img\n *ngIf=\"direction === Side.Left && !disabled && !collapsed\"\n src=\"/assets/daga/icon/action/drop-horizontal-right.svg\"\n />\n\n <img\n *ngIf=\"direction === Side.Right && disabled\"\n src=\"/assets/daga/icon/action/drop-horizontal-none.svg\"\n />\n <img\n *ngIf=\"direction === Side.Right && !disabled && collapsed\"\n src=\"/assets/daga/icon/action/drop-horizontal-right.svg\"\n />\n <img\n *ngIf=\"direction === Side.Right && !disabled && !collapsed\"\n src=\"/assets/daga/icon/action/drop-horizontal-left.svg\"\n />\n</button>\n", styles: [".collapse-button{width:100%;height:100%;min-width:2rem;min-height:2rem;margin:0;border:0;padding:0;background-color:transparent;cursor:pointer}.collapse-button img{width:1.5rem;height:1.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
74
+ getClass() {
75
+ switch (this.direction) {
76
+ case Side.Right:
77
+ if (this.disabled) {
78
+ return 'horizontal-none';
79
+ }
80
+ else if (this.collapsed) {
81
+ return 'horizontal-right';
82
+ }
83
+ else {
84
+ return 'horizontal-left';
85
+ }
86
+ case Side.Bottom:
87
+ if (this.disabled) {
88
+ return 'vertical-none';
89
+ }
90
+ else if (this.collapsed) {
91
+ return 'vertical-down';
92
+ }
93
+ else {
94
+ return 'vertical-up';
95
+ }
96
+ case Side.Left:
97
+ if (this.disabled) {
98
+ return 'horizontal-none';
99
+ }
100
+ else if (this.collapsed) {
101
+ return 'horizontal-left';
102
+ }
103
+ else {
104
+ return 'horizontal-right';
105
+ }
106
+ case Side.Top:
107
+ if (this.disabled) {
108
+ return 'vertical-none';
109
+ }
110
+ else if (this.collapsed) {
111
+ return 'vertical-up';
112
+ }
113
+ else {
114
+ return 'vertical-down';
115
+ }
116
+ }
117
+ }
118
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CollapseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
119
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: CollapseButtonComponent, isStandalone: true, selector: "daga-collapse-button", inputs: { collapsableSelector: "collapsableSelector", collapsableAdditionalSelector: "collapsableAdditionalSelector", collapsed: "collapsed", disabled: "disabled", direction: "direction", rule: "rule", collapsedValue: "collapsedValue", visibleValue: "visibleValue" }, ngImport: i0, template: "<button class=\"collapse-button {{ direction }}\" (click)=\"toggleCollapse()\">\n <div [class]=\"getClass()\"></div>\n</button>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
76
120
  }
77
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CollapseButtonComponent, decorators: [{
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CollapseButtonComponent, decorators: [{
78
122
  type: Component,
79
- args: [{ standalone: true, selector: 'daga-collapse-button', imports: [CommonModule], template: "<button class=\"collapse-button {{ direction }}\" (click)=\"toggleCollapse()\">\n <img\n *ngIf=\"direction === Side.Bottom && disabled\"\n src=\"/assets/daga/icon/action/drop-vertical-none.svg\"\n />\n <img\n *ngIf=\"direction === Side.Bottom && !disabled && collapsed\"\n src=\"/assets/daga/icon/action/drop-vertical-down.svg\"\n />\n <img\n *ngIf=\"direction === Side.Bottom && !disabled && !collapsed\"\n src=\"/assets/daga/icon/action/drop-vertical-up.svg\"\n />\n\n <img\n *ngIf=\"direction === Side.Top && disabled\"\n src=\"/assets/daga/icon/action/drop-vertical-none.svg\"\n />\n <img\n *ngIf=\"direction === Side.Top && !disabled && collapsed\"\n src=\"/assets/daga/icon/action/drop-vertical-up.svg\"\n />\n <img\n *ngIf=\"direction === Side.Top && !disabled && !collapsed\"\n src=\"/assets/daga/icon/action/drop-vertical-down.svg\"\n />\n\n <img\n *ngIf=\"direction === Side.Left && disabled\"\n src=\"/assets/daga/icon/action/drop-horizontal-none.svg\"\n />\n <img\n *ngIf=\"direction === Side.Left && !disabled && collapsed\"\n src=\"/assets/daga/icon/action/drop-horizontal-left.svg\"\n />\n <img\n *ngIf=\"direction === Side.Left && !disabled && !collapsed\"\n src=\"/assets/daga/icon/action/drop-horizontal-right.svg\"\n />\n\n <img\n *ngIf=\"direction === Side.Right && disabled\"\n src=\"/assets/daga/icon/action/drop-horizontal-none.svg\"\n />\n <img\n *ngIf=\"direction === Side.Right && !disabled && collapsed\"\n src=\"/assets/daga/icon/action/drop-horizontal-right.svg\"\n />\n <img\n *ngIf=\"direction === Side.Right && !disabled && !collapsed\"\n src=\"/assets/daga/icon/action/drop-horizontal-left.svg\"\n />\n</button>\n", styles: [".collapse-button{width:100%;height:100%;min-width:2rem;min-height:2rem;margin:0;border:0;padding:0;background-color:transparent;cursor:pointer}.collapse-button img{width:1.5rem;height:1.5rem}\n"] }]
123
+ args: [{ standalone: true, selector: 'daga-collapse-button', imports: [CommonModule], template: "<button class=\"collapse-button {{ direction }}\" (click)=\"toggleCollapse()\">\n <div [class]=\"getClass()\"></div>\n</button>\n" }]
80
124
  }], propDecorators: { collapsableSelector: [{
81
125
  type: Input
82
126
  }], collapsableAdditionalSelector: [{
@@ -514,7 +558,7 @@ class ForceLayout {
514
558
  temperature = temperature * coolingFactor;
515
559
  // calculate the center of the diagram for applying gravity
516
560
  const diagramCenterCoords = [0, 0];
517
- if (gravityFactor !== 0) {
561
+ if (gravityFactor > 0) {
518
562
  for (const node of model.nodes) {
519
563
  diagramCenterCoords[0] =
520
564
  diagramCenterCoords[0] + node.coords[0] + node.width / 2;
@@ -585,7 +629,7 @@ class ForceLayout {
585
629
  newNode2Coords[1] + shiftNodeIfOverlap * (Math.random() * 2 - 1);
586
630
  }
587
631
  // apply gravity force
588
- if (gravityFactor !== 0) {
632
+ if (gravityFactor > 0) {
589
633
  newNode2Coords[0] =
590
634
  newNode2Coords[0] -
591
635
  (node2CenterCoords[0] - diagramCenterCoords[0]) * gravityFactor;
@@ -1325,6 +1369,17 @@ class ActionQueue {
1325
1369
  }
1326
1370
  }
1327
1371
  }
1372
+ var DiagramActions;
1373
+ (function (DiagramActions) {
1374
+ DiagramActions["AddConnectionAction"] = "add-connection";
1375
+ DiagramActions["AddNodeAction"] = "add-node";
1376
+ DiagramActions["EditFieldAction"] = "edit-field";
1377
+ DiagramActions["MoveNodeAction"] = "move-node";
1378
+ DiagramActions["RemoveAction"] = "remove";
1379
+ DiagramActions["StretchNodeAction"] = "stretch-node";
1380
+ DiagramActions["StretchSectionAction"] = "stretch-section";
1381
+ DiagramActions["UpdateValuesAction"] = "update-values";
1382
+ })(DiagramActions || (DiagramActions = {}));
1328
1383
  class AddNodeAction {
1329
1384
  constructor(canvas, type, coords, label, values, id) {
1330
1385
  this.canvas = canvas;
@@ -2317,6 +2372,14 @@ class DiagramConnectionSet extends DiagramEntitySet {
2317
2372
  }
2318
2373
 
2319
2374
  let idTicker$3 = 0;
2375
+ const DIAGRAM_SECTION_LOOK_DEFAULTS = {
2376
+ lookType: 'shaped-look',
2377
+ shape: ClosedShape.Rectangle,
2378
+ color: '#FFFFFF',
2379
+ borderColor: '#000000',
2380
+ selectedColor: '#FFFFFF',
2381
+ selectedBorderColor: '#000000'
2382
+ };
2320
2383
  const DIAGRAM_SECTION_DEFAULTS = {
2321
2384
  sectionsX: 1,
2322
2385
  sectionsY: 1,
@@ -2325,7 +2388,7 @@ const DIAGRAM_SECTION_DEFAULTS = {
2325
2388
  margin: 0,
2326
2389
  label: null,
2327
2390
  ports: [],
2328
- look: DIAGRAM_LOOK_DEFAULTS
2391
+ look: DIAGRAM_SECTION_LOOK_DEFAULTS
2329
2392
  };
2330
2393
  class DiagramSection extends DiagramElement {
2331
2394
  get name() {
@@ -2614,7 +2677,7 @@ class DiagramSectionSet extends DiagramEntitySet {
2614
2677
  }
2615
2678
 
2616
2679
  let idTicker$2 = 0;
2617
- const DIAGRAM_LOOK_DEFAULTS = {
2680
+ const DIAGRAM_NODE_LOOK_DEFAULTS = {
2618
2681
  lookType: 'shaped-look',
2619
2682
  shape: ClosedShape.Rectangle,
2620
2683
  color: '#FFFFFF',
@@ -2633,7 +2696,7 @@ const DIAGRAM_NODE_TYPE_DEFAULTS = {
2633
2696
  label: null,
2634
2697
  ports: [],
2635
2698
  sections: null,
2636
- look: DIAGRAM_LOOK_DEFAULTS,
2699
+ look: DIAGRAM_NODE_LOOK_DEFAULTS,
2637
2700
  isUnique: false,
2638
2701
  priority: 0,
2639
2702
  properties: []
@@ -3364,6 +3427,7 @@ class DiagramCanvas {
3364
3427
  this.priorityThreshold = config.defaultPriorityThreshold;
3365
3428
  this.priorityThresholds = config.priorityThresholds || [];
3366
3429
  this.layoutFormat = config.layoutFormat;
3430
+ this.userActions = config.userActions || {};
3367
3431
  this.validators = [];
3368
3432
  this.actionQueue = new ActionQueue(ACTION_QUEUE_SIZE);
3369
3433
  // load node types
@@ -3416,7 +3480,9 @@ class DiagramCanvas {
3416
3480
  d3.select(this.diagramRoot).node()?.focus();
3417
3481
  })
3418
3482
  .on(Events.KeyUp, (event) => {
3419
- if (!event.ctrlKey && event.key === Keys.Delete) {
3483
+ if (!event.ctrlKey &&
3484
+ event.key === Keys.Delete &&
3485
+ this.userActions[DiagramActions.RemoveAction] !== false) {
3420
3486
  // delete selection
3421
3487
  if (this.userSelection.length > 0) {
3422
3488
  const nodesToBeDeleted = [];
@@ -3663,37 +3729,43 @@ class DiagramCanvas {
3663
3729
  .call(d3
3664
3730
  .drag()
3665
3731
  .on(DragEvents.Start, (event, d) => {
3666
- d3.select('body').style('cursor', 'grabbing');
3667
- this.draggingFrom = [event.x, event.y];
3668
- this.currentAction = new MoveNodeAction(this, d.id, d.coords, [0, 0]);
3732
+ if (this.userActions[DiagramActions.MoveNodeAction] !== false) {
3733
+ d3.select('body').style('cursor', 'grabbing');
3734
+ this.draggingFrom = [event.x, event.y];
3735
+ this.currentAction = new MoveNodeAction(this, d.id, d.coords, [0, 0]);
3736
+ }
3669
3737
  })
3670
3738
  .on(DragEvents.Drag, (event, d) => {
3671
- const newNodeCoords = [
3672
- event.x - d.width / 2,
3673
- event.y - d.height / 2
3674
- ];
3675
- d.move(newNodeCoords);
3676
- })
3677
- .on(DragEvents.End, (event, d) => {
3678
- // prevent drag behavior if mouse hasn't moved
3679
- if ((this.draggingFrom[0] !== event.x ||
3680
- this.draggingFrom[1] !== event.y) &&
3681
- this.currentAction instanceof MoveNodeAction) {
3682
- let newNodeCoords = [
3739
+ if (this.userActions[DiagramActions.MoveNodeAction] !== false) {
3740
+ const newNodeCoords = [
3683
3741
  event.x - d.width / 2,
3684
3742
  event.y - d.height / 2
3685
3743
  ];
3686
- if (this.snapToGrid) {
3687
- newNodeCoords = this.getClosestGridPoint(newNodeCoords);
3688
- }
3689
3744
  d.move(newNodeCoords);
3690
- this.currentAction.to = newNodeCoords;
3691
- this.actionQueue.add(this.currentAction);
3692
3745
  }
3693
- else {
3694
- this.currentAction = undefined;
3746
+ })
3747
+ .on(DragEvents.End, (event, d) => {
3748
+ if (this.userActions[DiagramActions.MoveNodeAction] !== false) {
3749
+ // prevent drag behavior if mouse hasn't moved
3750
+ if ((this.draggingFrom[0] !== event.x ||
3751
+ this.draggingFrom[1] !== event.y) &&
3752
+ this.currentAction instanceof MoveNodeAction) {
3753
+ let newNodeCoords = [
3754
+ event.x - d.width / 2,
3755
+ event.y - d.height / 2
3756
+ ];
3757
+ if (this.snapToGrid) {
3758
+ newNodeCoords = this.getClosestGridPoint(newNodeCoords);
3759
+ }
3760
+ d.move(newNodeCoords);
3761
+ this.currentAction.to = newNodeCoords;
3762
+ this.actionQueue.add(this.currentAction);
3763
+ }
3764
+ else {
3765
+ this.currentAction = undefined;
3766
+ }
3767
+ d3.select('body').style('cursor', 'auto');
3695
3768
  }
3696
- d3.select('body').style('cursor', 'auto');
3697
3769
  }));
3698
3770
  enterSelection.filter('.shaped-look').append('path');
3699
3771
  enterSelection
@@ -3752,31 +3824,36 @@ class DiagramCanvas {
3752
3824
  .attr('stroke', 'transparent')
3753
3825
  .attr('stroke-width', `${RESIZER_THICKNESS}px`)
3754
3826
  .on(Events.MouseOver, (event, d) => {
3755
- if (d.type.resizableX) {
3827
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3828
+ d.type.resizableX) {
3756
3829
  d3.select('body').style('cursor', 'ew-resize');
3757
3830
  }
3758
3831
  })
3759
3832
  .on(Events.MouseOut, (event, d) => {
3760
- if (d.type.resizableX) {
3833
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3834
+ d.type.resizableX) {
3761
3835
  d3.select('body').style('cursor', 'auto');
3762
3836
  }
3763
3837
  })
3764
3838
  .call(d3
3765
3839
  .drag()
3766
3840
  .on(DragEvents.Start, (event, d) => {
3767
- if (d.type.resizableX) {
3841
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3842
+ d.type.resizableX) {
3768
3843
  d3.select('body').style('cursor', 'ew-resize');
3769
3844
  this.currentAction = new StretchNodeAction(this, d.id, Side.Left, d.width, d.width);
3770
3845
  }
3771
3846
  })
3772
3847
  .on(DragEvents.Drag, (event, d) => {
3773
- if (d.type.resizableX) {
3848
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3849
+ d.type.resizableX) {
3774
3850
  const pointerCoords = this.getPointerLocationRelativeToCanvas(event);
3775
3851
  d.stretch(Side.Left, d.coords[0] - pointerCoords[0]);
3776
3852
  }
3777
3853
  })
3778
3854
  .on(DragEvents.End, (event, d) => {
3779
- if (d.type.resizableX) {
3855
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3856
+ d.type.resizableX) {
3780
3857
  let pointerCoords = this.getPointerLocationRelativeToCanvas(event);
3781
3858
  if (this.snapToGrid) {
3782
3859
  pointerCoords = this.getClosestGridPoint(pointerCoords);
@@ -3795,31 +3872,36 @@ class DiagramCanvas {
3795
3872
  .attr('stroke', 'transparent')
3796
3873
  .attr('stroke-width', `${RESIZER_THICKNESS}px`)
3797
3874
  .on(Events.MouseOver, (event, d) => {
3798
- if (d.type.resizableY) {
3875
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3876
+ d.type.resizableY) {
3799
3877
  d3.select('body').style('cursor', 'ns-resize');
3800
3878
  }
3801
3879
  })
3802
3880
  .on(Events.MouseOut, (event, d) => {
3803
- if (d.type.resizableY) {
3881
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3882
+ d.type.resizableY) {
3804
3883
  d3.select('body').style('cursor', 'auto');
3805
3884
  }
3806
3885
  })
3807
3886
  .call(d3
3808
3887
  .drag()
3809
3888
  .on(DragEvents.Start, (event, d) => {
3810
- if (d.type.resizableY) {
3889
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3890
+ d.type.resizableY) {
3811
3891
  d3.select('body').style('cursor', 'ns-resize');
3812
3892
  this.currentAction = new StretchNodeAction(this, d.id, Side.Top, d.height, d.height);
3813
3893
  }
3814
3894
  })
3815
3895
  .on(DragEvents.Drag, (event, d) => {
3816
- if (d.type.resizableY) {
3896
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3897
+ d.type.resizableY) {
3817
3898
  const pointerCoords = this.getPointerLocationRelativeToCanvas(event);
3818
3899
  d.stretch(Side.Top, d.coords[1] - pointerCoords[1]);
3819
3900
  }
3820
3901
  })
3821
3902
  .on(DragEvents.End, (event, d) => {
3822
- if (d.type.resizableY) {
3903
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3904
+ d.type.resizableY) {
3823
3905
  let pointerCoords = this.getPointerLocationRelativeToCanvas(event);
3824
3906
  if (this.snapToGrid) {
3825
3907
  pointerCoords = this.getClosestGridPoint(pointerCoords);
@@ -3838,31 +3920,36 @@ class DiagramCanvas {
3838
3920
  .attr('stroke', 'transparent')
3839
3921
  .attr('stroke-width', `${RESIZER_THICKNESS}px`)
3840
3922
  .on(Events.MouseOver, (event, d) => {
3841
- if (d.type.resizableX) {
3923
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3924
+ d.type.resizableX) {
3842
3925
  d3.select('body').style('cursor', 'ew-resize');
3843
3926
  }
3844
3927
  })
3845
3928
  .on(Events.MouseOut, (event, d) => {
3846
- if (d.type.resizableX) {
3929
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3930
+ d.type.resizableX) {
3847
3931
  d3.select('body').style('cursor', 'auto');
3848
3932
  }
3849
3933
  })
3850
3934
  .call(d3
3851
3935
  .drag()
3852
3936
  .on(DragEvents.Start, (event, d) => {
3853
- if (d.type.resizableX) {
3937
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3938
+ d.type.resizableX) {
3854
3939
  d3.select('body').style('cursor', 'ew-resize');
3855
3940
  this.currentAction = new StretchNodeAction(this, d.id, Side.Right, d.width, d.width);
3856
3941
  }
3857
3942
  })
3858
3943
  .on(DragEvents.Drag, (event, d) => {
3859
- if (d.type.resizableX) {
3944
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3945
+ d.type.resizableX) {
3860
3946
  const pointerCoords = this.getPointerLocationRelativeToCanvas(event);
3861
3947
  d.stretch(Side.Right, pointerCoords[0] - (d.coords[0] + d.width));
3862
3948
  }
3863
3949
  })
3864
3950
  .on(DragEvents.End, (event, d) => {
3865
- if (d.type.resizableX) {
3951
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3952
+ d.type.resizableX) {
3866
3953
  let pointerCoords = this.getPointerLocationRelativeToCanvas(event);
3867
3954
  if (this.snapToGrid) {
3868
3955
  pointerCoords = this.getClosestGridPoint(pointerCoords);
@@ -3881,31 +3968,36 @@ class DiagramCanvas {
3881
3968
  .attr('stroke', 'transparent')
3882
3969
  .attr('stroke-width', `${RESIZER_THICKNESS}px`)
3883
3970
  .on(Events.MouseOver, (event, d) => {
3884
- if (d.type.resizableY) {
3971
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3972
+ d.type.resizableY) {
3885
3973
  d3.select('body').style('cursor', 'ns-resize');
3886
3974
  }
3887
3975
  })
3888
3976
  .on(Events.MouseOut, (event, d) => {
3889
- if (d.type.resizableY) {
3977
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3978
+ d.type.resizableY) {
3890
3979
  d3.select('body').style('cursor', 'auto');
3891
3980
  }
3892
3981
  })
3893
3982
  .call(d3
3894
3983
  .drag()
3895
3984
  .on(DragEvents.Start, (event, d) => {
3896
- if (d.type.resizableY) {
3985
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3986
+ d.type.resizableY) {
3897
3987
  d3.select('body').style('cursor', 'ns-resize');
3898
3988
  this.currentAction = new StretchNodeAction(this, d.id, Side.Bottom, d.height, d.height);
3899
3989
  }
3900
3990
  })
3901
3991
  .on(DragEvents.Drag, (event, d) => {
3902
- if (d.type.resizableY) {
3992
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
3993
+ d.type.resizableY) {
3903
3994
  const pointerCoords = this.getPointerLocationRelativeToCanvas(event);
3904
3995
  d.stretch(Side.Bottom, pointerCoords[1] - (d.coords[1] + d.height));
3905
3996
  }
3906
3997
  })
3907
3998
  .on(DragEvents.End, (event, d) => {
3908
- if (d.type.resizableY) {
3999
+ if (this.userActions[DiagramActions.StretchNodeAction] !== false &&
4000
+ d.type.resizableY) {
3909
4001
  let pointerCoords = this.getPointerLocationRelativeToCanvas(event);
3910
4002
  if (this.snapToGrid) {
3911
4003
  pointerCoords = this.getClosestGridPoint(pointerCoords);
@@ -4113,40 +4205,46 @@ class DiagramCanvas {
4113
4205
  .call(d3
4114
4206
  .drag()
4115
4207
  .on(DragEvents.Start, (event, d) => {
4116
- const node = d.node;
4117
- d3.select('body').style('cursor', 'grabbing');
4118
- this.draggingFrom = [event.x, event.y];
4119
- this.currentAction = new MoveNodeAction(this, node.id, node.coords, [0, 0]);
4208
+ if (this.userActions[DiagramActions.MoveNodeAction] !== false) {
4209
+ const node = d.node;
4210
+ d3.select('body').style('cursor', 'grabbing');
4211
+ this.draggingFrom = [event.x, event.y];
4212
+ this.currentAction = new MoveNodeAction(this, node.id, node.coords, [0, 0]);
4213
+ }
4120
4214
  })
4121
4215
  .on(DragEvents.Drag, (event, d) => {
4122
- const node = d.node;
4123
- const newNodeCoords = [
4124
- event.x - node.width / 2,
4125
- event.y - node.height / 2
4126
- ];
4127
- node.move(newNodeCoords);
4128
- })
4129
- .on(DragEvents.End, (event, d) => {
4130
- const node = d.node;
4131
- // prevent drag behavior if mouse hasn't moved
4132
- if ((this.draggingFrom[0] !== event.x ||
4133
- this.draggingFrom[1] !== event.y) &&
4134
- this.currentAction instanceof MoveNodeAction) {
4135
- let newNodeCoords = [
4216
+ if (this.userActions[DiagramActions.MoveNodeAction] !== false) {
4217
+ const node = d.node;
4218
+ const newNodeCoords = [
4136
4219
  event.x - node.width / 2,
4137
4220
  event.y - node.height / 2
4138
4221
  ];
4139
- if (this.snapToGrid) {
4140
- newNodeCoords = this.getClosestGridPoint(newNodeCoords);
4141
- }
4142
- d.node?.move(newNodeCoords);
4143
- this.currentAction.to = newNodeCoords;
4144
- this.actionQueue.add(this.currentAction);
4222
+ node.move(newNodeCoords);
4145
4223
  }
4146
- else {
4147
- this.currentAction = undefined;
4224
+ })
4225
+ .on(DragEvents.End, (event, d) => {
4226
+ if (this.userActions[DiagramActions.MoveNodeAction] !== false) {
4227
+ const node = d.node;
4228
+ // prevent drag behavior if mouse hasn't moved
4229
+ if ((this.draggingFrom[0] !== event.x ||
4230
+ this.draggingFrom[1] !== event.y) &&
4231
+ this.currentAction instanceof MoveNodeAction) {
4232
+ let newNodeCoords = [
4233
+ event.x - node.width / 2,
4234
+ event.y - node.height / 2
4235
+ ];
4236
+ if (this.snapToGrid) {
4237
+ newNodeCoords = this.getClosestGridPoint(newNodeCoords);
4238
+ }
4239
+ d.node?.move(newNodeCoords);
4240
+ this.currentAction.to = newNodeCoords;
4241
+ this.actionQueue.add(this.currentAction);
4242
+ }
4243
+ else {
4244
+ this.currentAction = undefined;
4245
+ }
4246
+ d3.select('body').style('cursor', 'auto');
4148
4247
  }
4149
- d3.select('body').style('cursor', 'auto');
4150
4248
  }));
4151
4249
  enterSelection.filter('.shaped-look').append('path');
4152
4250
  enterSelection
@@ -4205,31 +4303,36 @@ class DiagramCanvas {
4205
4303
  .attr('stroke', 'transparent')
4206
4304
  .attr('stroke-width', `${RESIZER_THICKNESS}px`)
4207
4305
  .on(Events.MouseOver, (event, d) => {
4208
- if (d.node?.type?.resizableX) {
4306
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4307
+ d.node?.type?.resizableX) {
4209
4308
  d3.select('body').style('cursor', 'ew-resize');
4210
4309
  }
4211
4310
  })
4212
4311
  .on(Events.MouseOut, (event, d) => {
4213
- if (d.node?.type?.resizableX) {
4312
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4313
+ d.node?.type?.resizableX) {
4214
4314
  d3.select('body').style('cursor', 'auto');
4215
4315
  }
4216
4316
  })
4217
4317
  .call(d3
4218
4318
  .drag()
4219
4319
  .on(DragEvents.Start, (event, d) => {
4220
- if (d.node?.type?.resizableX) {
4320
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4321
+ d.node?.type?.resizableX) {
4221
4322
  d3.select('body').style('cursor', 'ew-resize');
4222
4323
  this.currentAction = new StretchSectionAction(this, d.id, Side.Left, d.width, d.width);
4223
4324
  }
4224
4325
  })
4225
4326
  .on(DragEvents.Drag, (event, d) => {
4226
- if (d.node?.type?.resizableX) {
4327
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4328
+ d.node?.type?.resizableX) {
4227
4329
  const pointerCoords = this.getPointerLocationRelativeToCanvas(event);
4228
4330
  d.node.stretchSections(Side.Left, d.coords[0] - pointerCoords[0], d.coords);
4229
4331
  }
4230
4332
  })
4231
4333
  .on(DragEvents.End, (event, d) => {
4232
- if (d.node?.type?.resizableX) {
4334
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4335
+ d.node?.type?.resizableX) {
4233
4336
  let pointerCoords = this.getPointerLocationRelativeToCanvas(event);
4234
4337
  if (this.snapToGrid) {
4235
4338
  pointerCoords = this.getClosestGridPoint(pointerCoords);
@@ -4248,31 +4351,36 @@ class DiagramCanvas {
4248
4351
  .attr('stroke', 'transparent')
4249
4352
  .attr('stroke-width', `${RESIZER_THICKNESS}px`)
4250
4353
  .on(Events.MouseOver, (event, d) => {
4251
- if (d.node?.type?.resizableY) {
4354
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4355
+ d.node?.type?.resizableY) {
4252
4356
  d3.select('body').style('cursor', 'ns-resize');
4253
4357
  }
4254
4358
  })
4255
4359
  .on(Events.MouseOut, (event, d) => {
4256
- if (d.node?.type?.resizableY) {
4360
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4361
+ d.node?.type?.resizableY) {
4257
4362
  d3.select('body').style('cursor', 'auto');
4258
4363
  }
4259
4364
  })
4260
4365
  .call(d3
4261
4366
  .drag()
4262
4367
  .on(DragEvents.Start, (event, d) => {
4263
- if (d.node?.type?.resizableY) {
4368
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4369
+ d.node?.type?.resizableY) {
4264
4370
  d3.select('body').style('cursor', 'ns-resize');
4265
4371
  this.currentAction = new StretchSectionAction(this, d.id, Side.Top, d.height, d.height);
4266
4372
  }
4267
4373
  })
4268
4374
  .on(DragEvents.Drag, (event, d) => {
4269
- if (d.node?.type?.resizableY) {
4375
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4376
+ d.node?.type?.resizableY) {
4270
4377
  const pointerCoords = this.getPointerLocationRelativeToCanvas(event);
4271
4378
  d.node.stretchSections(Side.Top, d.coords[1] - pointerCoords[1], d.coords);
4272
4379
  }
4273
4380
  })
4274
4381
  .on(DragEvents.End, (event, d) => {
4275
- if (d.node?.type?.resizableY) {
4382
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4383
+ d.node?.type?.resizableY) {
4276
4384
  let pointerCoords = this.getPointerLocationRelativeToCanvas(event);
4277
4385
  if (this.snapToGrid) {
4278
4386
  pointerCoords = this.getClosestGridPoint(pointerCoords);
@@ -4291,31 +4399,36 @@ class DiagramCanvas {
4291
4399
  .attr('stroke', 'transparent')
4292
4400
  .attr('stroke-width', `${RESIZER_THICKNESS}px`)
4293
4401
  .on(Events.MouseOver, (event, d) => {
4294
- if (d.node?.type?.resizableX) {
4402
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4403
+ d.node?.type?.resizableX) {
4295
4404
  d3.select('body').style('cursor', 'ew-resize');
4296
4405
  }
4297
4406
  })
4298
4407
  .on(Events.MouseOut, (event, d) => {
4299
- if (d.node?.type?.resizableX) {
4408
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4409
+ d.node?.type?.resizableX) {
4300
4410
  d3.select('body').style('cursor', 'auto');
4301
4411
  }
4302
4412
  })
4303
4413
  .call(d3
4304
4414
  .drag()
4305
4415
  .on(DragEvents.Start, (event, d) => {
4306
- if (d.node?.type?.resizableX) {
4416
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4417
+ d.node?.type?.resizableX) {
4307
4418
  d3.select('body').style('cursor', 'ew-resize');
4308
4419
  this.currentAction = new StretchSectionAction(this, d.id, Side.Right, d.width, d.width);
4309
4420
  }
4310
4421
  })
4311
4422
  .on(DragEvents.Drag, (event, d) => {
4312
- if (d.node?.type?.resizableX) {
4423
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4424
+ d.node?.type?.resizableX) {
4313
4425
  const pointerCoords = this.getPointerLocationRelativeToCanvas(event);
4314
4426
  d.node.stretchSections(Side.Right, pointerCoords[0] - (d.coords[0] + d.width), d.coords);
4315
4427
  }
4316
4428
  })
4317
4429
  .on(DragEvents.End, (event, d) => {
4318
- if (d.node?.type?.resizableX) {
4430
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4431
+ d.node?.type?.resizableX) {
4319
4432
  let pointerCoords = this.getPointerLocationRelativeToCanvas(event);
4320
4433
  if (this.snapToGrid) {
4321
4434
  pointerCoords = this.getClosestGridPoint(pointerCoords);
@@ -4334,31 +4447,36 @@ class DiagramCanvas {
4334
4447
  .attr('stroke', 'transparent')
4335
4448
  .attr('stroke-width', `${RESIZER_THICKNESS}px`)
4336
4449
  .on(Events.MouseOver, (event, d) => {
4337
- if (d.node?.type?.resizableY) {
4450
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4451
+ d.node?.type?.resizableY) {
4338
4452
  d3.select('body').style('cursor', 'ns-resize');
4339
4453
  }
4340
4454
  })
4341
4455
  .on(Events.MouseOut, (event, d) => {
4342
- if (d.node?.type?.resizableY) {
4456
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4457
+ d.node?.type?.resizableY) {
4343
4458
  d3.select('body').style('cursor', 'auto');
4344
4459
  }
4345
4460
  })
4346
4461
  .call(d3
4347
4462
  .drag()
4348
4463
  .on(DragEvents.Start, (event, d) => {
4349
- if (d.node?.type?.resizableY) {
4464
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4465
+ d.node?.type?.resizableY) {
4350
4466
  d3.select('body').style('cursor', 'ns-resize');
4351
4467
  this.currentAction = new StretchSectionAction(this, d.id, Side.Bottom, d.height, d.height);
4352
4468
  }
4353
4469
  })
4354
4470
  .on(DragEvents.Drag, (event, d) => {
4355
- if (d.node?.type?.resizableY) {
4471
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4472
+ d.node?.type?.resizableY) {
4356
4473
  const pointerCoords = this.getPointerLocationRelativeToCanvas(event);
4357
4474
  d.node.stretchSections(Side.Bottom, pointerCoords[1] - (d.coords[1] + d.height), d.coords);
4358
4475
  }
4359
4476
  })
4360
4477
  .on(DragEvents.End, (event, d) => {
4361
- if (d.node?.type?.resizableY) {
4478
+ if (this.userActions[DiagramActions.StretchSectionAction] !== false &&
4479
+ d.node?.type?.resizableY) {
4362
4480
  let pointerCoords = this.getPointerLocationRelativeToCanvas(event);
4363
4481
  if (this.snapToGrid) {
4364
4482
  pointerCoords = this.getClosestGridPoint(pointerCoords);
@@ -4595,50 +4713,56 @@ class DiagramCanvas {
4595
4713
  .call(d3
4596
4714
  .drag()
4597
4715
  .on(DragEvents.Start, (event, d) => {
4598
- d3.select('body').style('cursor', 'grabbing');
4599
- this.startConnection(d);
4716
+ if (this.userActions[DiagramActions.AddConnectionAction] !== false) {
4717
+ d3.select('body').style('cursor', 'grabbing');
4718
+ this.startConnection(d);
4719
+ }
4600
4720
  })
4601
4721
  .on(DragEvents.Drag, (event) => {
4602
- if (this.unfinishedConnection !== undefined) {
4603
- this.unfinishedConnection.endCoords = [event.x, event.y];
4604
- this.updateConnectionsInView();
4722
+ if (this.userActions[DiagramActions.AddConnectionAction] !== false) {
4723
+ if (this.unfinishedConnection !== undefined) {
4724
+ this.unfinishedConnection.endCoords = [event.x, event.y];
4725
+ this.updateConnectionsInView();
4726
+ }
4605
4727
  }
4606
4728
  })
4607
4729
  .on(DragEvents.End, (event) => {
4608
- d3.select('body').style('cursor', 'auto');
4609
- if (this.mainUserHighlight instanceof DiagramPort) {
4610
- this.finishConnection(this.mainUserHighlight);
4611
- }
4612
- else if (this.mainUserHighlight instanceof DiagramNode ||
4613
- this.mainUserHighlight instanceof DiagramSection ||
4614
- this.mainUserHighlight instanceof DiagramField) {
4615
- let targetRootElement;
4616
- if (this.mainUserHighlight instanceof DiagramNode ||
4617
- this.mainUserHighlight instanceof DiagramSection) {
4618
- targetRootElement = this.mainUserHighlight;
4619
- }
4620
- else if (this.mainUserHighlight.rootElement instanceof DiagramNode ||
4621
- this.mainUserHighlight.rootElement instanceof DiagramSection) {
4622
- targetRootElement = this.mainUserHighlight.rootElement;
4623
- }
4624
- else {
4625
- this.dropConnection();
4626
- return;
4730
+ if (this.userActions[DiagramActions.AddConnectionAction] !== false) {
4731
+ d3.select('body').style('cursor', 'auto');
4732
+ if (this.mainUserHighlight instanceof DiagramPort) {
4733
+ this.finishConnection(this.mainUserHighlight);
4627
4734
  }
4628
- const closestPort = targetRootElement.getClosestPortToPoint([
4629
- event.x,
4630
- event.y
4631
- ]);
4632
- if (closestPort !== undefined) {
4633
- this.finishConnection(closestPort);
4735
+ else if (this.mainUserHighlight instanceof DiagramNode ||
4736
+ this.mainUserHighlight instanceof DiagramSection ||
4737
+ this.mainUserHighlight instanceof DiagramField) {
4738
+ let targetRootElement;
4739
+ if (this.mainUserHighlight instanceof DiagramNode ||
4740
+ this.mainUserHighlight instanceof DiagramSection) {
4741
+ targetRootElement = this.mainUserHighlight;
4742
+ }
4743
+ else if (this.mainUserHighlight.rootElement instanceof DiagramNode ||
4744
+ this.mainUserHighlight.rootElement instanceof DiagramSection) {
4745
+ targetRootElement = this.mainUserHighlight.rootElement;
4746
+ }
4747
+ else {
4748
+ this.dropConnection();
4749
+ return;
4750
+ }
4751
+ const closestPort = targetRootElement.getClosestPortToPoint([
4752
+ event.x,
4753
+ event.y
4754
+ ]);
4755
+ if (closestPort !== undefined) {
4756
+ this.finishConnection(closestPort);
4757
+ }
4758
+ else {
4759
+ this.dropConnection();
4760
+ }
4634
4761
  }
4635
4762
  else {
4636
4763
  this.dropConnection();
4637
4764
  }
4638
4765
  }
4639
- else {
4640
- this.dropConnection();
4641
- }
4642
4766
  }));
4643
4767
  enterSelection.append('circle');
4644
4768
  mergeSelection.attr('transform', (d) => `translate(${d.coords[0]},${d.coords[1]})`);
@@ -4783,7 +4907,8 @@ class DiagramCanvas {
4783
4907
  }
4784
4908
  })
4785
4909
  .on(Events.DoubleClick, (event, d) => {
4786
- if (d.editable) {
4910
+ if (this.userActions[DiagramActions.EditFieldAction] !== false &&
4911
+ d.editable) {
4787
4912
  this.currentAction = new EditFieldAction(this, d.id, d.text, '');
4788
4913
  this.createInputField(d.text, d.coords, d.width, d.height, d.fontSize, d.fontFamily, (text) => {
4789
4914
  d.text = text;
@@ -4801,54 +4926,60 @@ class DiagramCanvas {
4801
4926
  .call(d3
4802
4927
  .drag()
4803
4928
  .on(DragEvents.Start, (event, d) => {
4804
- if (d.rootElement instanceof DiagramNode ||
4805
- d.rootElement instanceof DiagramSection) {
4806
- const node = d.rootElement instanceof DiagramNode
4807
- ? d.rootElement
4808
- : d.rootElement.node;
4809
- d3.select('body').style('cursor', 'grabbing');
4810
- this.draggingFrom = [event.x, event.y];
4811
- this.currentAction = new MoveNodeAction(this, node.id, node.coords, [0, 0]);
4929
+ if (this.userActions[DiagramActions.MoveNodeAction] !== false) {
4930
+ if (d.rootElement instanceof DiagramNode ||
4931
+ d.rootElement instanceof DiagramSection) {
4932
+ const node = d.rootElement instanceof DiagramNode
4933
+ ? d.rootElement
4934
+ : d.rootElement.node;
4935
+ d3.select('body').style('cursor', 'grabbing');
4936
+ this.draggingFrom = [event.x, event.y];
4937
+ this.currentAction = new MoveNodeAction(this, node.id, node.coords, [0, 0]);
4938
+ }
4812
4939
  }
4813
4940
  })
4814
4941
  .on(DragEvents.Drag, (event, d) => {
4815
- if (d.rootElement instanceof DiagramNode ||
4816
- d.rootElement instanceof DiagramSection) {
4817
- const node = d.rootElement instanceof DiagramNode
4818
- ? d.rootElement
4819
- : d.rootElement.node;
4820
- const newNodeCoords = [
4821
- event.x - node.width / 2,
4822
- event.y - node.height / 2
4823
- ];
4824
- node.move(newNodeCoords);
4825
- }
4826
- })
4827
- .on(DragEvents.End, (event, d) => {
4828
- if (d.rootElement instanceof DiagramNode ||
4829
- d.rootElement instanceof DiagramSection) {
4830
- const node = d.rootElement instanceof DiagramNode
4831
- ? d.rootElement
4832
- : d.rootElement.node;
4833
- // prevent drag behavior if mouse hasn't moved
4834
- if ((this.draggingFrom[0] !== event.x ||
4835
- this.draggingFrom[1] !== event.y) &&
4836
- this.currentAction instanceof MoveNodeAction) {
4837
- let newNodeCoords = [
4942
+ if (this.userActions[DiagramActions.MoveNodeAction] !== false) {
4943
+ if (d.rootElement instanceof DiagramNode ||
4944
+ d.rootElement instanceof DiagramSection) {
4945
+ const node = d.rootElement instanceof DiagramNode
4946
+ ? d.rootElement
4947
+ : d.rootElement.node;
4948
+ const newNodeCoords = [
4838
4949
  event.x - node.width / 2,
4839
4950
  event.y - node.height / 2
4840
4951
  ];
4841
- if (this.snapToGrid) {
4842
- newNodeCoords = this.getClosestGridPoint(newNodeCoords);
4843
- }
4844
4952
  node.move(newNodeCoords);
4845
- this.currentAction.to = newNodeCoords;
4846
- this.actionQueue.add(this.currentAction);
4847
4953
  }
4848
- else {
4849
- this.currentAction = undefined;
4954
+ }
4955
+ })
4956
+ .on(DragEvents.End, (event, d) => {
4957
+ if (this.userActions[DiagramActions.MoveNodeAction] !== false) {
4958
+ if (d.rootElement instanceof DiagramNode ||
4959
+ d.rootElement instanceof DiagramSection) {
4960
+ const node = d.rootElement instanceof DiagramNode
4961
+ ? d.rootElement
4962
+ : d.rootElement.node;
4963
+ // prevent drag behavior if mouse hasn't moved
4964
+ if ((this.draggingFrom[0] !== event.x ||
4965
+ this.draggingFrom[1] !== event.y) &&
4966
+ this.currentAction instanceof MoveNodeAction) {
4967
+ let newNodeCoords = [
4968
+ event.x - node.width / 2,
4969
+ event.y - node.height / 2
4970
+ ];
4971
+ if (this.snapToGrid) {
4972
+ newNodeCoords = this.getClosestGridPoint(newNodeCoords);
4973
+ }
4974
+ node.move(newNodeCoords);
4975
+ this.currentAction.to = newNodeCoords;
4976
+ this.actionQueue.add(this.currentAction);
4977
+ }
4978
+ else {
4979
+ this.currentAction = undefined;
4980
+ }
4981
+ d3.select('body').style('cursor', 'auto');
4850
4982
  }
4851
- d3.select('body').style('cursor', 'auto');
4852
4983
  }
4853
4984
  }))
4854
4985
  .append('xhtml:div')
@@ -5395,10 +5526,10 @@ class CanvasProviderService {
5395
5526
  getCanvas() {
5396
5527
  return this._canvas;
5397
5528
  }
5398
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CanvasProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5399
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CanvasProviderService }); }
5529
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CanvasProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5530
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CanvasProviderService }); }
5400
5531
  }
5401
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CanvasProviderService, decorators: [{
5532
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CanvasProviderService, decorators: [{
5402
5533
  type: Injectable
5403
5534
  }] });
5404
5535
 
@@ -5482,12 +5613,12 @@ class DiagramButtonsComponent {
5482
5613
  redo() {
5483
5614
  this.canvas.actionQueue.redo();
5484
5615
  }
5485
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DiagramButtonsComponent, deps: [{ token: CanvasProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
5486
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: DiagramButtonsComponent, isStandalone: true, selector: "daga-diagram-buttons", inputs: { enableFilter: "enableFilter", enableLayout: "enableLayout", enableUndoRedo: "enableUndoRedo", enableZoom: "enableZoom", zoomRate: "zoomRate" }, viewQueries: [{ propertyName: "collapsableButtons", first: true, predicate: ["collapsableButtons"], descendants: true }], ngImport: i0, template: "<div class=\"diagram-buttons\">\n <button *ngIf=\"enableZoom\" class=\"zoom-in\" (click)=\"zoomIn()\">\n <span class=\"tooltip\">Zoom in</span>\n </button>\n <button *ngIf=\"enableZoom\" class=\"zoom-out\" (click)=\"zoomOut()\">\n <span class=\"tooltip\">Zoom out</span>\n </button>\n <div #collapsableButtons class=\"collapsable-buttons collapsed\">\n <button *ngIf=\"enableZoom\" class=\"center\" (click)=\"center()\">\n <span class=\"tooltip\">Fit diagram to screen</span>\n </button>\n <button *ngIf=\"enableUndoRedo\" class=\"undo\" (click)=\"undo()\">\n <span class=\"tooltip\">Undo</span>\n </button>\n <button *ngIf=\"enableUndoRedo\" class=\"redo\" (click)=\"redo()\">\n <span class=\"tooltip\">Redo</span>\n </button>\n <button\n *ngIf=\"enableLayout && canvas.layoutFormat\"\n class=\"layout\"\n (click)=\"layout()\"\n >\n <span class=\"tooltip\">Apply layout</span>\n </button>\n <button\n *ngIf=\"enableFilter && canvas.priorityThresholds.length >= 2\"\n class=\"filter\"\n [class]=\"filterOn ? 'on' : 'off'\"\n (click)=\"filter()\"\n >\n <span class=\"tooltip\">Apply filter</span>\n </button>\n </div>\n <button class=\"more-options\" (click)=\"toggleCollapse()\">\n <span *ngIf=\"!collapsed\" class=\"tooltip\">Less options</span>\n <span *ngIf=\"collapsed\" class=\"tooltip\">More options</span>\n </button>\n</div>\n", styles: [":host{position:absolute;right:1rem;bottom:1rem}.diagram-buttons button{position:relative;display:block;height:3rem;width:3rem;padding:0;border:0;margin-bottom:1rem;background-color:transparent}.diagram-buttons button .tooltip{visibility:hidden;z-index:1;position:absolute;top:.5rem;right:3.5rem;height:2rem;padding:.6rem;border-radius:.25rem;font-size:.8rem;font-weight:500;box-sizing:border-box;white-space:nowrap;color:#fff;background-color:#0009}.diagram-buttons button:hover .tooltip{visibility:visible}.diagram-buttons button.filter.on{background-image:url(/assets/daga/icon/buttons/filter-on.svg)}.diagram-buttons button.filter.on:hover{background-image:url(/assets/daga/icon/buttons/filter-on-hover.svg)}.diagram-buttons button.filter.off{background-image:url(/assets/daga/icon/buttons/filter-off.svg)}.diagram-buttons button.filter.off:hover{background-image:url(/assets/daga/icon/buttons/filter-off-hover.svg)}.diagram-buttons button.layout{background-image:url(/assets/daga/icon/buttons/layout.svg)}.diagram-buttons button.layout:hover{background-image:url(/assets/daga/icon/buttons/layout-hover.svg)}.diagram-buttons button.zoom-in{background-image:url(/assets/daga/icon/buttons/zoom-in.svg)}.diagram-buttons button.zoom-in:hover{background-image:url(/assets/daga/icon/buttons/zoom-in-hover.svg)}.diagram-buttons button.zoom-out{background-image:url(/assets/daga/icon/buttons/zoom-out.svg)}.diagram-buttons button.zoom-out:hover{background-image:url(/assets/daga/icon/buttons/zoom-out-hover.svg)}.diagram-buttons button.center{background-image:url(/assets/daga/icon/buttons/center.svg)}.diagram-buttons button.center:hover{background-image:url(/assets/daga/icon/buttons/center-hover.svg)}.diagram-buttons button.undo{background-image:url(/assets/daga/icon/buttons/undo.svg)}.diagram-buttons button.undo:hover{background-image:url(/assets/daga/icon/buttons/undo-hover.svg)}.diagram-buttons button.redo{background-image:url(/assets/daga/icon/buttons/redo.svg)}.diagram-buttons button.redo:hover{background-image:url(/assets/daga/icon/buttons/redo-hover.svg)}.diagram-buttons button.more-options{background-image:url(/assets/daga/icon/buttons/ellipsis.svg)}.diagram-buttons button.more-options:hover{background-image:url(/assets/daga/icon/buttons/ellipsis-hover.svg)}.diagram-buttons .collapsable-buttons.collapsing{animation-name:collapse-animation;animation-duration:1s;animation-fill-mode:forwards}.diagram-buttons .collapsable-buttons.expanding{animation-name:expand-animation;animation-duration:1s;animation-fill-mode:forwards}.diagram-buttons .collapsable-buttons.collapsed{transform:scaleY(0);height:0}@keyframes collapse-animation{0%{transform:scale(1);transform-origin:0% 0%;height:12rem}to{transform:scaleY(0);transform-origin:0% 0%;height:0}}@keyframes expand-animation{0%{transform:scaleY(0);transform-origin:0% 0%;height:0}to{transform:scale(1);transform-origin:0% 0%;height:12rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
5616
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DiagramButtonsComponent, deps: [{ token: CanvasProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
5617
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: DiagramButtonsComponent, isStandalone: true, selector: "daga-diagram-buttons", inputs: { enableFilter: "enableFilter", enableLayout: "enableLayout", enableUndoRedo: "enableUndoRedo", enableZoom: "enableZoom", zoomRate: "zoomRate" }, viewQueries: [{ propertyName: "collapsableButtons", first: true, predicate: ["collapsableButtons"], descendants: true }], ngImport: i0, template: "<div class=\"diagram-buttons\">\n <button *ngIf=\"enableZoom\" class=\"zoom-in\" (click)=\"zoomIn()\">\n <span class=\"tooltip\">Zoom in</span>\n </button>\n <button *ngIf=\"enableZoom\" class=\"zoom-out\" (click)=\"zoomOut()\">\n <span class=\"tooltip\">Zoom out</span>\n </button>\n <div #collapsableButtons class=\"collapsable-buttons collapsed\">\n <button *ngIf=\"enableZoom\" class=\"center\" (click)=\"center()\">\n <span class=\"tooltip\">Fit diagram to screen</span>\n </button>\n <button *ngIf=\"enableUndoRedo\" class=\"undo\" (click)=\"undo()\">\n <span class=\"tooltip\">Undo</span>\n </button>\n <button *ngIf=\"enableUndoRedo\" class=\"redo\" (click)=\"redo()\">\n <span class=\"tooltip\">Redo</span>\n </button>\n <button\n *ngIf=\"enableLayout && canvas.layoutFormat\"\n class=\"layout\"\n (click)=\"layout()\"\n >\n <span class=\"tooltip\">Apply layout</span>\n </button>\n <button\n *ngIf=\"enableFilter && canvas.priorityThresholds.length >= 2\"\n class=\"filter\"\n [class]=\"filterOn ? 'on' : 'off'\"\n (click)=\"filter()\"\n >\n <span class=\"tooltip\">Apply filter</span>\n </button>\n </div>\n <button class=\"more-options\" (click)=\"toggleCollapse()\">\n <span *ngIf=\"!collapsed\" class=\"tooltip\">Less options</span>\n <span *ngIf=\"collapsed\" class=\"tooltip\">More options</span>\n </button>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
5487
5618
  }
5488
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DiagramButtonsComponent, decorators: [{
5619
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DiagramButtonsComponent, decorators: [{
5489
5620
  type: Component,
5490
- args: [{ standalone: true, selector: 'daga-diagram-buttons', imports: [CommonModule], template: "<div class=\"diagram-buttons\">\n <button *ngIf=\"enableZoom\" class=\"zoom-in\" (click)=\"zoomIn()\">\n <span class=\"tooltip\">Zoom in</span>\n </button>\n <button *ngIf=\"enableZoom\" class=\"zoom-out\" (click)=\"zoomOut()\">\n <span class=\"tooltip\">Zoom out</span>\n </button>\n <div #collapsableButtons class=\"collapsable-buttons collapsed\">\n <button *ngIf=\"enableZoom\" class=\"center\" (click)=\"center()\">\n <span class=\"tooltip\">Fit diagram to screen</span>\n </button>\n <button *ngIf=\"enableUndoRedo\" class=\"undo\" (click)=\"undo()\">\n <span class=\"tooltip\">Undo</span>\n </button>\n <button *ngIf=\"enableUndoRedo\" class=\"redo\" (click)=\"redo()\">\n <span class=\"tooltip\">Redo</span>\n </button>\n <button\n *ngIf=\"enableLayout && canvas.layoutFormat\"\n class=\"layout\"\n (click)=\"layout()\"\n >\n <span class=\"tooltip\">Apply layout</span>\n </button>\n <button\n *ngIf=\"enableFilter && canvas.priorityThresholds.length >= 2\"\n class=\"filter\"\n [class]=\"filterOn ? 'on' : 'off'\"\n (click)=\"filter()\"\n >\n <span class=\"tooltip\">Apply filter</span>\n </button>\n </div>\n <button class=\"more-options\" (click)=\"toggleCollapse()\">\n <span *ngIf=\"!collapsed\" class=\"tooltip\">Less options</span>\n <span *ngIf=\"collapsed\" class=\"tooltip\">More options</span>\n </button>\n</div>\n", styles: [":host{position:absolute;right:1rem;bottom:1rem}.diagram-buttons button{position:relative;display:block;height:3rem;width:3rem;padding:0;border:0;margin-bottom:1rem;background-color:transparent}.diagram-buttons button .tooltip{visibility:hidden;z-index:1;position:absolute;top:.5rem;right:3.5rem;height:2rem;padding:.6rem;border-radius:.25rem;font-size:.8rem;font-weight:500;box-sizing:border-box;white-space:nowrap;color:#fff;background-color:#0009}.diagram-buttons button:hover .tooltip{visibility:visible}.diagram-buttons button.filter.on{background-image:url(/assets/daga/icon/buttons/filter-on.svg)}.diagram-buttons button.filter.on:hover{background-image:url(/assets/daga/icon/buttons/filter-on-hover.svg)}.diagram-buttons button.filter.off{background-image:url(/assets/daga/icon/buttons/filter-off.svg)}.diagram-buttons button.filter.off:hover{background-image:url(/assets/daga/icon/buttons/filter-off-hover.svg)}.diagram-buttons button.layout{background-image:url(/assets/daga/icon/buttons/layout.svg)}.diagram-buttons button.layout:hover{background-image:url(/assets/daga/icon/buttons/layout-hover.svg)}.diagram-buttons button.zoom-in{background-image:url(/assets/daga/icon/buttons/zoom-in.svg)}.diagram-buttons button.zoom-in:hover{background-image:url(/assets/daga/icon/buttons/zoom-in-hover.svg)}.diagram-buttons button.zoom-out{background-image:url(/assets/daga/icon/buttons/zoom-out.svg)}.diagram-buttons button.zoom-out:hover{background-image:url(/assets/daga/icon/buttons/zoom-out-hover.svg)}.diagram-buttons button.center{background-image:url(/assets/daga/icon/buttons/center.svg)}.diagram-buttons button.center:hover{background-image:url(/assets/daga/icon/buttons/center-hover.svg)}.diagram-buttons button.undo{background-image:url(/assets/daga/icon/buttons/undo.svg)}.diagram-buttons button.undo:hover{background-image:url(/assets/daga/icon/buttons/undo-hover.svg)}.diagram-buttons button.redo{background-image:url(/assets/daga/icon/buttons/redo.svg)}.diagram-buttons button.redo:hover{background-image:url(/assets/daga/icon/buttons/redo-hover.svg)}.diagram-buttons button.more-options{background-image:url(/assets/daga/icon/buttons/ellipsis.svg)}.diagram-buttons button.more-options:hover{background-image:url(/assets/daga/icon/buttons/ellipsis-hover.svg)}.diagram-buttons .collapsable-buttons.collapsing{animation-name:collapse-animation;animation-duration:1s;animation-fill-mode:forwards}.diagram-buttons .collapsable-buttons.expanding{animation-name:expand-animation;animation-duration:1s;animation-fill-mode:forwards}.diagram-buttons .collapsable-buttons.collapsed{transform:scaleY(0);height:0}@keyframes collapse-animation{0%{transform:scale(1);transform-origin:0% 0%;height:12rem}to{transform:scaleY(0);transform-origin:0% 0%;height:0}}@keyframes expand-animation{0%{transform:scaleY(0);transform-origin:0% 0%;height:0}to{transform:scale(1);transform-origin:0% 0%;height:12rem}}\n"] }]
5621
+ args: [{ standalone: true, selector: 'daga-diagram-buttons', imports: [CommonModule], template: "<div class=\"diagram-buttons\">\n <button *ngIf=\"enableZoom\" class=\"zoom-in\" (click)=\"zoomIn()\">\n <span class=\"tooltip\">Zoom in</span>\n </button>\n <button *ngIf=\"enableZoom\" class=\"zoom-out\" (click)=\"zoomOut()\">\n <span class=\"tooltip\">Zoom out</span>\n </button>\n <div #collapsableButtons class=\"collapsable-buttons collapsed\">\n <button *ngIf=\"enableZoom\" class=\"center\" (click)=\"center()\">\n <span class=\"tooltip\">Fit diagram to screen</span>\n </button>\n <button *ngIf=\"enableUndoRedo\" class=\"undo\" (click)=\"undo()\">\n <span class=\"tooltip\">Undo</span>\n </button>\n <button *ngIf=\"enableUndoRedo\" class=\"redo\" (click)=\"redo()\">\n <span class=\"tooltip\">Redo</span>\n </button>\n <button\n *ngIf=\"enableLayout && canvas.layoutFormat\"\n class=\"layout\"\n (click)=\"layout()\"\n >\n <span class=\"tooltip\">Apply layout</span>\n </button>\n <button\n *ngIf=\"enableFilter && canvas.priorityThresholds.length >= 2\"\n class=\"filter\"\n [class]=\"filterOn ? 'on' : 'off'\"\n (click)=\"filter()\"\n >\n <span class=\"tooltip\">Apply filter</span>\n </button>\n </div>\n <button class=\"more-options\" (click)=\"toggleCollapse()\">\n <span *ngIf=\"!collapsed\" class=\"tooltip\">Less options</span>\n <span *ngIf=\"collapsed\" class=\"tooltip\">More options</span>\n </button>\n</div>\n" }]
5491
5622
  }], ctorParameters: () => [{ type: CanvasProviderService }], propDecorators: { collapsableButtons: [{
5492
5623
  type: ViewChild,
5493
5624
  args: ['collapsableButtons']
@@ -5541,12 +5672,12 @@ class ErrorsComponent {
5541
5672
  }
5542
5673
  // TODO: IF ERROR IS IN AN ELEMENT BUT NOT IN A SPECIFIC PROPERTY, WE COULD HIGHLIGHT THE ELEMENT
5543
5674
  }
5544
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ErrorsComponent, deps: [{ token: CanvasProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
5545
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ErrorsComponent, isStandalone: true, selector: "daga-errors", viewQueries: [{ propertyName: "errorsContainer", first: true, predicate: ["errors"], descendants: true }], ngImport: i0, template: "<div #errorsContainer class=\"errors\">\n <div\n *ngIf=\"errors.length === 0\"\n class=\"errors-summary no-errors prevent-user-select\"\n >\n <span>No errors found</span>\n </div>\n <div\n *ngIf=\"errors.length > 0\"\n class=\"errors-summary with-errors prevent-user-select\"\n >\n <span>{{ errors.length }} errors found</span>\n <div class=\"collapse-button-container\">\n <daga-collapse-button\n [collapsableSelector]=\"errorsContainer\"\n [collapsableAdditionalSelector]=\"'.error-panel'\"\n [direction]=\"Side.Top\"\n [rule]=\"'display'\"\n [collapsedValue]=\"'none'\"\n [visibleValue]=\"'block'\"\n />\n </div>\n </div>\n <div *ngIf=\"errors.length > 0\" class=\"error-panel\">\n <ol>\n <li\n *ngFor=\"let error of errors; index as i\"\n (click)=\"showError(error)\"\n [innerHTML]=\"error.message\"\n ></li>\n </ol>\n </div>\n</div>\n", styles: [":host{left:2rem;bottom:0;position:absolute;width:calc(100% - 8rem)}.errors-summary{position:absolute;right:2rem;top:-2rem;height:2rem;border-top-left-radius:.5rem;border-top-right-radius:.5rem;display:flex;flex-direction:row;align-items:center}.errors-summary.no-errors{background-color:var(--panel-secondary-color);color:var(--font-color)}.errors-summary.with-errors{background-color:#e64545;color:#fff}.errors-summary span{flex:1 0 auto;padding:.5rem}.errors-summary .collapse-button-container{flex:0 0 auto;padding-left:.5rem;padding-right:.5rem;border-top-left-radius:.5rem;border-top-right-radius:.5rem;background-color:var(--error-color)}.errors-summary .collapse-button-container daga-collapse-button{filter:brightness(10)}.error-panel{width:100%;max-height:12rem;border-top-left-radius:.5rem;border-top-right-radius:.5rem;padding:.5rem;background-color:var(--font-color);color:#fff;overflow:auto}.error-panel ol{counter-reset:count;list-style:decimal;padding:0;padding-left:5rem;margin:0;font-size:.95rem}.error-panel ol li{counter-increment:count;cursor:pointer;padding-bottom:.25rem}.error-panel ol li:hover{text-decoration:underline}.error-panel ol li::marker{content:\"ERROR \" counters(count,\".\",decimal-leading-zero) \" \";font-family:var(--monospace-font-family);font-size:.9rem;font-weight:400;color:#ffffffbf}.error-panel ol li b{font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CollapseButtonComponent, selector: "daga-collapse-button", inputs: ["collapsableSelector", "collapsableAdditionalSelector", "collapsed", "disabled", "direction", "rule", "collapsedValue", "visibleValue"] }] }); }
5675
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ErrorsComponent, deps: [{ token: CanvasProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
5676
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ErrorsComponent, isStandalone: true, selector: "daga-errors", viewQueries: [{ propertyName: "errorsContainer", first: true, predicate: ["errors"], descendants: true }], ngImport: i0, template: "<div #errorsContainer class=\"errors\">\n <div\n *ngIf=\"errors.length === 0\"\n class=\"errors-summary no-errors prevent-user-select\"\n >\n <span>No errors found</span>\n </div>\n <div\n *ngIf=\"errors.length > 0\"\n class=\"errors-summary with-errors prevent-user-select\"\n >\n <span>{{ errors.length }} errors found</span>\n <div class=\"collapse-button-container\">\n <daga-collapse-button\n [collapsableSelector]=\"errorsContainer\"\n [collapsableAdditionalSelector]=\"'.error-panel'\"\n [direction]=\"Side.Top\"\n [rule]=\"'display'\"\n [collapsedValue]=\"'none'\"\n [visibleValue]=\"'block'\"\n />\n </div>\n </div>\n <div *ngIf=\"errors.length > 0\" class=\"error-panel\">\n <ol>\n <li\n *ngFor=\"let error of errors; index as i\"\n (click)=\"showError(error)\"\n [innerHTML]=\"error.message\"\n ></li>\n </ol>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CollapseButtonComponent, selector: "daga-collapse-button", inputs: ["collapsableSelector", "collapsableAdditionalSelector", "collapsed", "disabled", "direction", "rule", "collapsedValue", "visibleValue"] }] }); }
5546
5677
  }
5547
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ErrorsComponent, decorators: [{
5678
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ErrorsComponent, decorators: [{
5548
5679
  type: Component,
5549
- args: [{ standalone: true, selector: 'daga-errors', imports: [CommonModule, CollapseButtonComponent], template: "<div #errorsContainer class=\"errors\">\n <div\n *ngIf=\"errors.length === 0\"\n class=\"errors-summary no-errors prevent-user-select\"\n >\n <span>No errors found</span>\n </div>\n <div\n *ngIf=\"errors.length > 0\"\n class=\"errors-summary with-errors prevent-user-select\"\n >\n <span>{{ errors.length }} errors found</span>\n <div class=\"collapse-button-container\">\n <daga-collapse-button\n [collapsableSelector]=\"errorsContainer\"\n [collapsableAdditionalSelector]=\"'.error-panel'\"\n [direction]=\"Side.Top\"\n [rule]=\"'display'\"\n [collapsedValue]=\"'none'\"\n [visibleValue]=\"'block'\"\n />\n </div>\n </div>\n <div *ngIf=\"errors.length > 0\" class=\"error-panel\">\n <ol>\n <li\n *ngFor=\"let error of errors; index as i\"\n (click)=\"showError(error)\"\n [innerHTML]=\"error.message\"\n ></li>\n </ol>\n </div>\n</div>\n", styles: [":host{left:2rem;bottom:0;position:absolute;width:calc(100% - 8rem)}.errors-summary{position:absolute;right:2rem;top:-2rem;height:2rem;border-top-left-radius:.5rem;border-top-right-radius:.5rem;display:flex;flex-direction:row;align-items:center}.errors-summary.no-errors{background-color:var(--panel-secondary-color);color:var(--font-color)}.errors-summary.with-errors{background-color:#e64545;color:#fff}.errors-summary span{flex:1 0 auto;padding:.5rem}.errors-summary .collapse-button-container{flex:0 0 auto;padding-left:.5rem;padding-right:.5rem;border-top-left-radius:.5rem;border-top-right-radius:.5rem;background-color:var(--error-color)}.errors-summary .collapse-button-container daga-collapse-button{filter:brightness(10)}.error-panel{width:100%;max-height:12rem;border-top-left-radius:.5rem;border-top-right-radius:.5rem;padding:.5rem;background-color:var(--font-color);color:#fff;overflow:auto}.error-panel ol{counter-reset:count;list-style:decimal;padding:0;padding-left:5rem;margin:0;font-size:.95rem}.error-panel ol li{counter-increment:count;cursor:pointer;padding-bottom:.25rem}.error-panel ol li:hover{text-decoration:underline}.error-panel ol li::marker{content:\"ERROR \" counters(count,\".\",decimal-leading-zero) \" \";font-family:var(--monospace-font-family);font-size:.9rem;font-weight:400;color:#ffffffbf}.error-panel ol li b{font-weight:700}\n"] }]
5680
+ args: [{ standalone: true, selector: 'daga-errors', imports: [CommonModule, CollapseButtonComponent], template: "<div #errorsContainer class=\"errors\">\n <div\n *ngIf=\"errors.length === 0\"\n class=\"errors-summary no-errors prevent-user-select\"\n >\n <span>No errors found</span>\n </div>\n <div\n *ngIf=\"errors.length > 0\"\n class=\"errors-summary with-errors prevent-user-select\"\n >\n <span>{{ errors.length }} errors found</span>\n <div class=\"collapse-button-container\">\n <daga-collapse-button\n [collapsableSelector]=\"errorsContainer\"\n [collapsableAdditionalSelector]=\"'.error-panel'\"\n [direction]=\"Side.Top\"\n [rule]=\"'display'\"\n [collapsedValue]=\"'none'\"\n [visibleValue]=\"'block'\"\n />\n </div>\n </div>\n <div *ngIf=\"errors.length > 0\" class=\"error-panel\">\n <ol>\n <li\n *ngFor=\"let error of errors; index as i\"\n (click)=\"showError(error)\"\n [innerHTML]=\"error.message\"\n ></li>\n </ol>\n </div>\n</div>\n" }]
5550
5681
  }], ctorParameters: () => [{ type: CanvasProviderService }], propDecorators: { errorsContainer: [{
5551
5682
  type: ViewChild,
5552
5683
  args: ['errors']
@@ -5695,6 +5826,10 @@ class PaletteComponent {
5695
5826
  .style('top', 0)
5696
5827
  .style('z-index', 'auto');
5697
5828
  // try to place node
5829
+ if (this.canvas.userActions[DiagramActions.AddNodeAction] === false) {
5830
+ // can't place, the user isn't allowed to place nodes
5831
+ return;
5832
+ }
5698
5833
  if (type.isUnique &&
5699
5834
  this.canvas.model.nodes.find(type.id) !== undefined) {
5700
5835
  // can't place, it's unique and that node is already in the model
@@ -5896,12 +6031,12 @@ class PaletteComponent {
5896
6031
  .text(templateConfig.label);
5897
6032
  }
5898
6033
  }
5899
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: PaletteComponent, deps: [{ token: CanvasProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
5900
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: PaletteComponent, isStandalone: true, selector: "daga-palette", inputs: { palettes: "palettes", currentPalette: "currentPalette", currentCategory: "currentCategory", location: "location" }, viewQueries: [{ propertyName: "panel", first: true, predicate: ["panel"], descendants: true }], ngImport: i0, template: "<div #panel class=\"panel {{ location }}\">\n <daga-collapse-button\n #collapseButton\n [collapsableSelector]=\"panel\"\n [collapsableAdditionalSelector]=\"'.panel-content'\"\n [rule]=\"'display'\"\n [collapsedValue]=\"'none'\"\n [visibleValue]=\"'block'\"\n />\n <div class=\"panel-content\">\n <div *ngIf=\"palettes.length > 1\" class=\"panel-tabs\">\n <div\n *ngFor=\"let palette of palettes\"\n class=\"panel-tab\"\n [class]=\"palette === currentPalette ? 'current-tab' : ''\"\n (click)=\"switchPalette(palette)\"\n >\n {{ palette.name }}\n </div>\n </div>\n <div class=\"palette-view\"></div>\n </div>\n</div>\n", styles: [".panel{width:12rem}.palette-view{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CollapseButtonComponent, selector: "daga-collapse-button", inputs: ["collapsableSelector", "collapsableAdditionalSelector", "collapsed", "disabled", "direction", "rule", "collapsedValue", "visibleValue"] }] }); }
6034
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PaletteComponent, deps: [{ token: CanvasProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
6035
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: PaletteComponent, isStandalone: true, selector: "daga-palette", inputs: { palettes: "palettes", currentPalette: "currentPalette", currentCategory: "currentCategory", location: "location" }, viewQueries: [{ propertyName: "panel", first: true, predicate: ["panel"], descendants: true }], ngImport: i0, template: "<div #panel class=\"panel {{ location }}\">\n <daga-collapse-button\n #collapseButton\n [collapsableSelector]=\"panel\"\n [collapsableAdditionalSelector]=\"'.panel-content'\"\n [rule]=\"'display'\"\n [collapsedValue]=\"'none'\"\n [visibleValue]=\"'block'\"\n />\n <div class=\"panel-content\">\n <div *ngIf=\"palettes.length > 1\" class=\"panel-tabs\">\n <div\n *ngFor=\"let palette of palettes\"\n class=\"panel-tab\"\n [class]=\"palette === currentPalette ? 'current-tab' : ''\"\n (click)=\"switchPalette(palette)\"\n >\n {{ palette.name }}\n </div>\n </div>\n <div class=\"palette-view\"></div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CollapseButtonComponent, selector: "daga-collapse-button", inputs: ["collapsableSelector", "collapsableAdditionalSelector", "collapsed", "disabled", "direction", "rule", "collapsedValue", "visibleValue"] }] }); }
5901
6036
  }
5902
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: PaletteComponent, decorators: [{
6037
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PaletteComponent, decorators: [{
5903
6038
  type: Component,
5904
- args: [{ standalone: true, selector: 'daga-palette', imports: [CommonModule, CollapseButtonComponent], template: "<div #panel class=\"panel {{ location }}\">\n <daga-collapse-button\n #collapseButton\n [collapsableSelector]=\"panel\"\n [collapsableAdditionalSelector]=\"'.panel-content'\"\n [rule]=\"'display'\"\n [collapsedValue]=\"'none'\"\n [visibleValue]=\"'block'\"\n />\n <div class=\"panel-content\">\n <div *ngIf=\"palettes.length > 1\" class=\"panel-tabs\">\n <div\n *ngFor=\"let palette of palettes\"\n class=\"panel-tab\"\n [class]=\"palette === currentPalette ? 'current-tab' : ''\"\n (click)=\"switchPalette(palette)\"\n >\n {{ palette.name }}\n </div>\n </div>\n <div class=\"palette-view\"></div>\n </div>\n</div>\n", styles: [".panel{width:12rem}.palette-view{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1rem}\n"] }]
6039
+ args: [{ standalone: true, selector: 'daga-palette', imports: [CommonModule, CollapseButtonComponent], template: "<div #panel class=\"panel {{ location }}\">\n <daga-collapse-button\n #collapseButton\n [collapsableSelector]=\"panel\"\n [collapsableAdditionalSelector]=\"'.panel-content'\"\n [rule]=\"'display'\"\n [collapsedValue]=\"'none'\"\n [visibleValue]=\"'block'\"\n />\n <div class=\"panel-content\">\n <div *ngIf=\"palettes.length > 1\" class=\"panel-tabs\">\n <div\n *ngFor=\"let palette of palettes\"\n class=\"panel-tab\"\n [class]=\"palette === currentPalette ? 'current-tab' : ''\"\n (click)=\"switchPalette(palette)\"\n >\n {{ palette.name }}\n </div>\n </div>\n <div class=\"palette-view\"></div>\n </div>\n</div>\n" }]
5905
6040
  }], ctorParameters: () => [{ type: CanvasProviderService }], propDecorators: { panel: [{
5906
6041
  type: ViewChild,
5907
6042
  args: ['panel']
@@ -5969,12 +6104,12 @@ class TextListEditorComponent {
5969
6104
  this.addToValue();
5970
6105
  }
5971
6106
  }
5972
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: TextListEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
5973
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: TextListEditorComponent, isStandalone: true, selector: "daga-text-list-editor", inputs: { value: "value", valueInput: "valueInput", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div *ngFor=\"let item of value; let index = index\" class=\"value-item-element\">\n <lux-input\n type=\"text\"\n [disabled]=\"disabled\"\n [value]=\"item\"\n (focusout)=\"editFromValue(getValueFromEvent($event), index)\"\n ></lux-input>\n <button\n *ngIf=\"!disabled\"\n class=\"property-button\"\n (click)=\"removeFromValue(index)\"\n >\n <img src=\"/assets/daga/icon/property/close.svg\" />\n </button>\n</div>\n<div *ngIf=\"!disabled\" class=\"value-item-input\">\n <div class=\"relatively-positioned\">\n <lux-input\n type=\"text\"\n (keyup)=\"onKeyUp($event)\"\n [(ngModel)]=\"valueInput\"\n ></lux-input>\n <button\n *ngIf=\"valueInput !== ''\"\n class=\"clear\"\n (click)=\"clearInput()\"\n ></button>\n </div>\n <button class=\"property-button\" (click)=\"addToValue()\">\n <img src=\"/assets/daga/icon/property/add.svg\" />\n </button>\n</div>\n", styles: [".property{padding-top:.5rem;padding-bottom:.5rem}.property .property-name{display:flex;justify-content:space-between;align-items:center;height:1.5rem;padding-bottom:.5rem;margin:0;width:100%;font-size:.75rem;font-weight:500;text-transform:uppercase}.value-item-input,.value-item-element{display:flex;align-items:stretch;flex-direction:row;height:1.5rem;gap:.5rem}.value-item-element{margin-bottom:.5rem}.left-bar{padding-left:1rem;border-left:.25rem solid var(--property-background-color)}lux-input,.relatively-positioned,p.value-item{height:1.5rem;flex-grow:1;flex-basis:0}p.value-item{margin:0;overflow:hidden;text-overflow:ellipsis}.relatively-positioned{position:relative}button.property-button{min-width:1.5rem;min-height:1.5rem;width:1.5rem;height:1.5rem;padding:0;border-radius:.25rem;border:none;background-color:transparent;font-size:1rem}button.property-button img{padding:.25rem;width:1rem;height:1rem}button.property-button:hover{background-color:var(--property-background-color)}button.clear{position:absolute;top:0;right:0;min-width:1.5rem;min-height:1.5rem;width:1.5rem;height:1.5rem;padding:0;border-radius:.25rem;border:none;background-color:transparent;background:var(--lux-autocomplete-icon-clear);background-size:.5rem .5rem;z-index:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: LuxModule }, { kind: "component", type: i3.InputComponent, selector: "lux-input", inputs: ["rows", "cols", "step", "min", "max", "lang", "inlineErrors", "inputId", "aria-label", "readonly", "disabled", "pattern", "currency", "placeholder", "required", "type", "value"], outputs: ["valueChange", "keyPress"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
6107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TextListEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
6108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: TextListEditorComponent, isStandalone: true, selector: "daga-text-list-editor", inputs: { value: "value", valueInput: "valueInput", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div *ngFor=\"let item of value; let index = index\" class=\"value-item-element\">\n <lux-input\n type=\"text\"\n [disabled]=\"disabled\"\n [value]=\"item\"\n (focusout)=\"editFromValue(getValueFromEvent($event), index)\"\n ></lux-input>\n <button\n *ngIf=\"!disabled\"\n class=\"property-button\"\n (click)=\"removeFromValue(index)\"\n >\n <div class=\"icon close-icon\"></div>\n </button>\n</div>\n<div *ngIf=\"!disabled\" class=\"value-item-input\">\n <div class=\"relatively-positioned\">\n <lux-input\n type=\"text\"\n (keyup)=\"onKeyUp($event)\"\n [(ngModel)]=\"valueInput\"\n ></lux-input>\n <button\n *ngIf=\"valueInput !== ''\"\n class=\"clear\"\n (click)=\"clearInput()\"\n ></button>\n </div>\n <button class=\"property-button\" (click)=\"addToValue()\">\n <div class=\"icon add-icon\"></div>\n </button>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: LuxModule }, { kind: "component", type: i3.InputComponent, selector: "lux-input", inputs: ["rows", "cols", "step", "min", "max", "lang", "inlineErrors", "inputId", "aria-label", "readonly", "disabled", "pattern", "currency", "placeholder", "required", "type", "value"], outputs: ["valueChange", "keyPress"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
5974
6109
  }
5975
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: TextListEditorComponent, decorators: [{
6110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TextListEditorComponent, decorators: [{
5976
6111
  type: Component,
5977
- args: [{ standalone: true, selector: 'daga-text-list-editor', imports: [CommonModule, LuxModule, FormsModule], template: "<div *ngFor=\"let item of value; let index = index\" class=\"value-item-element\">\n <lux-input\n type=\"text\"\n [disabled]=\"disabled\"\n [value]=\"item\"\n (focusout)=\"editFromValue(getValueFromEvent($event), index)\"\n ></lux-input>\n <button\n *ngIf=\"!disabled\"\n class=\"property-button\"\n (click)=\"removeFromValue(index)\"\n >\n <img src=\"/assets/daga/icon/property/close.svg\" />\n </button>\n</div>\n<div *ngIf=\"!disabled\" class=\"value-item-input\">\n <div class=\"relatively-positioned\">\n <lux-input\n type=\"text\"\n (keyup)=\"onKeyUp($event)\"\n [(ngModel)]=\"valueInput\"\n ></lux-input>\n <button\n *ngIf=\"valueInput !== ''\"\n class=\"clear\"\n (click)=\"clearInput()\"\n ></button>\n </div>\n <button class=\"property-button\" (click)=\"addToValue()\">\n <img src=\"/assets/daga/icon/property/add.svg\" />\n </button>\n</div>\n", styles: [".property{padding-top:.5rem;padding-bottom:.5rem}.property .property-name{display:flex;justify-content:space-between;align-items:center;height:1.5rem;padding-bottom:.5rem;margin:0;width:100%;font-size:.75rem;font-weight:500;text-transform:uppercase}.value-item-input,.value-item-element{display:flex;align-items:stretch;flex-direction:row;height:1.5rem;gap:.5rem}.value-item-element{margin-bottom:.5rem}.left-bar{padding-left:1rem;border-left:.25rem solid var(--property-background-color)}lux-input,.relatively-positioned,p.value-item{height:1.5rem;flex-grow:1;flex-basis:0}p.value-item{margin:0;overflow:hidden;text-overflow:ellipsis}.relatively-positioned{position:relative}button.property-button{min-width:1.5rem;min-height:1.5rem;width:1.5rem;height:1.5rem;padding:0;border-radius:.25rem;border:none;background-color:transparent;font-size:1rem}button.property-button img{padding:.25rem;width:1rem;height:1rem}button.property-button:hover{background-color:var(--property-background-color)}button.clear{position:absolute;top:0;right:0;min-width:1.5rem;min-height:1.5rem;width:1.5rem;height:1.5rem;padding:0;border-radius:.25rem;border:none;background-color:transparent;background:var(--lux-autocomplete-icon-clear);background-size:.5rem .5rem;z-index:1}\n"] }]
6112
+ args: [{ standalone: true, selector: 'daga-text-list-editor', imports: [CommonModule, LuxModule, FormsModule], template: "<div *ngFor=\"let item of value; let index = index\" class=\"value-item-element\">\n <lux-input\n type=\"text\"\n [disabled]=\"disabled\"\n [value]=\"item\"\n (focusout)=\"editFromValue(getValueFromEvent($event), index)\"\n ></lux-input>\n <button\n *ngIf=\"!disabled\"\n class=\"property-button\"\n (click)=\"removeFromValue(index)\"\n >\n <div class=\"icon close-icon\"></div>\n </button>\n</div>\n<div *ngIf=\"!disabled\" class=\"value-item-input\">\n <div class=\"relatively-positioned\">\n <lux-input\n type=\"text\"\n (keyup)=\"onKeyUp($event)\"\n [(ngModel)]=\"valueInput\"\n ></lux-input>\n <button\n *ngIf=\"valueInput !== ''\"\n class=\"clear\"\n (click)=\"clearInput()\"\n ></button>\n </div>\n <button class=\"property-button\" (click)=\"addToValue()\">\n <div class=\"icon add-icon\"></div>\n </button>\n</div>\n" }]
5978
6113
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { value: [{
5979
6114
  type: Input
5980
6115
  }], valueInput: [{
@@ -6045,12 +6180,12 @@ class TextMapEditorComponent {
6045
6180
  this.addToValue();
6046
6181
  }
6047
6182
  }
6048
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: TextMapEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
6049
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: TextMapEditorComponent, isStandalone: true, selector: "daga-text-map-editor", inputs: { value: "value", keyInput: "keyInput", valueInput: "valueInput", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div *ngFor=\"let item of value | keyvalue\" class=\"value-item-element\">\n <lux-input\n type=\"text\"\n [disabled]=\"disabled\"\n [value]=\"item.key\"\n (focusout)=\"editKey(item.key, getValueFromEvent($event))\"\n ></lux-input>\n <lux-input\n type=\"text\"\n [disabled]=\"disabled\"\n [value]=\"item.value\"\n (focusout)=\"editValue(item.key, getValueFromEvent($event))\"\n ></lux-input>\n <button\n *ngIf=\"!disabled\"\n class=\"property-button\"\n (click)=\"removeFromValue(item.key)\"\n >\n <img src=\"/assets/daga/icon/property/close.svg\" />\n </button>\n</div>\n<div *ngIf=\"!disabled\" class=\"value-item-input\">\n <div class=\"relatively-positioned\">\n <lux-input\n type=\"text\"\n (keyup)=\"onKeyUp($event)\"\n [(ngModel)]=\"keyInput\"\n ></lux-input>\n <button\n *ngIf=\"keyInput !== ''\"\n class=\"clear\"\n (click)=\"clearKeyInput()\"\n ></button>\n </div>\n <div class=\"relatively-positioned\">\n <lux-input\n type=\"text\"\n (keyup)=\"onKeyUp($event)\"\n [(ngModel)]=\"valueInput\"\n ></lux-input>\n <button\n *ngIf=\"valueInput !== ''\"\n class=\"clear\"\n (click)=\"clearValueInput()\"\n ></button>\n </div>\n <button class=\"property-button\" (click)=\"addToValue()\">\n <img src=\"/assets/daga/icon/property/add.svg\" />\n </button>\n</div>\n", styles: [".property{padding-top:.5rem;padding-bottom:.5rem}.property .property-name{display:flex;justify-content:space-between;align-items:center;height:1.5rem;padding-bottom:.5rem;margin:0;width:100%;font-size:.75rem;font-weight:500;text-transform:uppercase}.value-item-input,.value-item-element{display:flex;align-items:stretch;flex-direction:row;height:1.5rem;gap:.5rem}.value-item-element{margin-bottom:.5rem}.left-bar{padding-left:1rem;border-left:.25rem solid var(--property-background-color)}lux-input,.relatively-positioned,p.value-item{height:1.5rem;flex-grow:1;flex-basis:0}p.value-item{margin:0;overflow:hidden;text-overflow:ellipsis}.relatively-positioned{position:relative}button.property-button{min-width:1.5rem;min-height:1.5rem;width:1.5rem;height:1.5rem;padding:0;border-radius:.25rem;border:none;background-color:transparent;font-size:1rem}button.property-button img{padding:.25rem;width:1rem;height:1rem}button.property-button:hover{background-color:var(--property-background-color)}button.clear{position:absolute;top:0;right:0;min-width:1.5rem;min-height:1.5rem;width:1.5rem;height:1.5rem;padding:0;border-radius:.25rem;border:none;background-color:transparent;background:var(--lux-autocomplete-icon-clear);background-size:.5rem .5rem;z-index:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: LuxModule }, { kind: "component", type: i3.InputComponent, selector: "lux-input", inputs: ["rows", "cols", "step", "min", "max", "lang", "inlineErrors", "inputId", "aria-label", "readonly", "disabled", "pattern", "currency", "placeholder", "required", "type", "value"], outputs: ["valueChange", "keyPress"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
6183
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TextMapEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
6184
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: TextMapEditorComponent, isStandalone: true, selector: "daga-text-map-editor", inputs: { value: "value", keyInput: "keyInput", valueInput: "valueInput", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div *ngFor=\"let item of value | keyvalue\" class=\"value-item-element\">\n <lux-input\n type=\"text\"\n [disabled]=\"disabled\"\n [value]=\"item.key\"\n (focusout)=\"editKey(item.key, getValueFromEvent($event))\"\n ></lux-input>\n <lux-input\n type=\"text\"\n [disabled]=\"disabled\"\n [value]=\"item.value\"\n (focusout)=\"editValue(item.key, getValueFromEvent($event))\"\n ></lux-input>\n <button\n *ngIf=\"!disabled\"\n class=\"property-button\"\n (click)=\"removeFromValue(item.key)\"\n >\n <div class=\"icon close-icon\"></div>\n </button>\n</div>\n<div *ngIf=\"!disabled\" class=\"value-item-input\">\n <div class=\"relatively-positioned\">\n <lux-input\n type=\"text\"\n (keyup)=\"onKeyUp($event)\"\n [(ngModel)]=\"keyInput\"\n ></lux-input>\n <button\n *ngIf=\"keyInput !== ''\"\n class=\"clear\"\n (click)=\"clearKeyInput()\"\n ></button>\n </div>\n <div class=\"relatively-positioned\">\n <lux-input\n type=\"text\"\n (keyup)=\"onKeyUp($event)\"\n [(ngModel)]=\"valueInput\"\n ></lux-input>\n <button\n *ngIf=\"valueInput !== ''\"\n class=\"clear\"\n (click)=\"clearValueInput()\"\n ></button>\n </div>\n <button class=\"property-button\" (click)=\"addToValue()\">\n <div class=\"icon add-icon\"></div>\n </button>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: LuxModule }, { kind: "component", type: i3.InputComponent, selector: "lux-input", inputs: ["rows", "cols", "step", "min", "max", "lang", "inlineErrors", "inputId", "aria-label", "readonly", "disabled", "pattern", "currency", "placeholder", "required", "type", "value"], outputs: ["valueChange", "keyPress"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
6050
6185
  }
6051
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: TextMapEditorComponent, decorators: [{
6186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TextMapEditorComponent, decorators: [{
6052
6187
  type: Component,
6053
- args: [{ standalone: true, selector: 'daga-text-map-editor', imports: [CommonModule, LuxModule, FormsModule], template: "<div *ngFor=\"let item of value | keyvalue\" class=\"value-item-element\">\n <lux-input\n type=\"text\"\n [disabled]=\"disabled\"\n [value]=\"item.key\"\n (focusout)=\"editKey(item.key, getValueFromEvent($event))\"\n ></lux-input>\n <lux-input\n type=\"text\"\n [disabled]=\"disabled\"\n [value]=\"item.value\"\n (focusout)=\"editValue(item.key, getValueFromEvent($event))\"\n ></lux-input>\n <button\n *ngIf=\"!disabled\"\n class=\"property-button\"\n (click)=\"removeFromValue(item.key)\"\n >\n <img src=\"/assets/daga/icon/property/close.svg\" />\n </button>\n</div>\n<div *ngIf=\"!disabled\" class=\"value-item-input\">\n <div class=\"relatively-positioned\">\n <lux-input\n type=\"text\"\n (keyup)=\"onKeyUp($event)\"\n [(ngModel)]=\"keyInput\"\n ></lux-input>\n <button\n *ngIf=\"keyInput !== ''\"\n class=\"clear\"\n (click)=\"clearKeyInput()\"\n ></button>\n </div>\n <div class=\"relatively-positioned\">\n <lux-input\n type=\"text\"\n (keyup)=\"onKeyUp($event)\"\n [(ngModel)]=\"valueInput\"\n ></lux-input>\n <button\n *ngIf=\"valueInput !== ''\"\n class=\"clear\"\n (click)=\"clearValueInput()\"\n ></button>\n </div>\n <button class=\"property-button\" (click)=\"addToValue()\">\n <img src=\"/assets/daga/icon/property/add.svg\" />\n </button>\n</div>\n", styles: [".property{padding-top:.5rem;padding-bottom:.5rem}.property .property-name{display:flex;justify-content:space-between;align-items:center;height:1.5rem;padding-bottom:.5rem;margin:0;width:100%;font-size:.75rem;font-weight:500;text-transform:uppercase}.value-item-input,.value-item-element{display:flex;align-items:stretch;flex-direction:row;height:1.5rem;gap:.5rem}.value-item-element{margin-bottom:.5rem}.left-bar{padding-left:1rem;border-left:.25rem solid var(--property-background-color)}lux-input,.relatively-positioned,p.value-item{height:1.5rem;flex-grow:1;flex-basis:0}p.value-item{margin:0;overflow:hidden;text-overflow:ellipsis}.relatively-positioned{position:relative}button.property-button{min-width:1.5rem;min-height:1.5rem;width:1.5rem;height:1.5rem;padding:0;border-radius:.25rem;border:none;background-color:transparent;font-size:1rem}button.property-button img{padding:.25rem;width:1rem;height:1rem}button.property-button:hover{background-color:var(--property-background-color)}button.clear{position:absolute;top:0;right:0;min-width:1.5rem;min-height:1.5rem;width:1.5rem;height:1.5rem;padding:0;border-radius:.25rem;border:none;background-color:transparent;background:var(--lux-autocomplete-icon-clear);background-size:.5rem .5rem;z-index:1}\n"] }]
6188
+ args: [{ standalone: true, selector: 'daga-text-map-editor', imports: [CommonModule, LuxModule, FormsModule], template: "<div *ngFor=\"let item of value | keyvalue\" class=\"value-item-element\">\n <lux-input\n type=\"text\"\n [disabled]=\"disabled\"\n [value]=\"item.key\"\n (focusout)=\"editKey(item.key, getValueFromEvent($event))\"\n ></lux-input>\n <lux-input\n type=\"text\"\n [disabled]=\"disabled\"\n [value]=\"item.value\"\n (focusout)=\"editValue(item.key, getValueFromEvent($event))\"\n ></lux-input>\n <button\n *ngIf=\"!disabled\"\n class=\"property-button\"\n (click)=\"removeFromValue(item.key)\"\n >\n <div class=\"icon close-icon\"></div>\n </button>\n</div>\n<div *ngIf=\"!disabled\" class=\"value-item-input\">\n <div class=\"relatively-positioned\">\n <lux-input\n type=\"text\"\n (keyup)=\"onKeyUp($event)\"\n [(ngModel)]=\"keyInput\"\n ></lux-input>\n <button\n *ngIf=\"keyInput !== ''\"\n class=\"clear\"\n (click)=\"clearKeyInput()\"\n ></button>\n </div>\n <div class=\"relatively-positioned\">\n <lux-input\n type=\"text\"\n (keyup)=\"onKeyUp($event)\"\n [(ngModel)]=\"valueInput\"\n ></lux-input>\n <button\n *ngIf=\"valueInput !== ''\"\n class=\"clear\"\n (click)=\"clearValueInput()\"\n ></button>\n </div>\n <button class=\"property-button\" (click)=\"addToValue()\">\n <div class=\"icon add-icon\"></div>\n </button>\n</div>\n" }]
6054
6189
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { value: [{
6055
6190
  type: Input
6056
6191
  }], keyInput: [{
@@ -6067,6 +6202,9 @@ class ObjectEditorComponent {
6067
6202
  get canvas() {
6068
6203
  return this.canvasProvider.getCanvas();
6069
6204
  }
6205
+ get userCanEdit() {
6206
+ return this.canvas.userActions[DiagramActions.UpdateValuesAction] !== false;
6207
+ }
6070
6208
  get valueSet() {
6071
6209
  return this._valueSet;
6072
6210
  }
@@ -6143,10 +6281,10 @@ class ObjectEditorComponent {
6143
6281
  }
6144
6282
  return date && !isNaN(date.valueOf()) ? new Date(date).toISOString() : '';
6145
6283
  }
6146
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ObjectEditorComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: CanvasProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
6147
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ObjectEditorComponent, isStandalone: true, selector: "daga-object-editor", inputs: { valueSet: "valueSet", depth: "depth" }, ngImport: i0, template: "<div\n *ngFor=\"let property of valueSet?.displayedProperties || []\"\n class=\"property\"\n [class]=\"property.name + ' depth-' + depth\"\n>\n <p class=\"property-name\">\n {{ property.name }}\n <button class=\"property-button\" (click)=\"hideProperty(property.name)\">\n <img src=\"/assets/daga/icon/property/hide.svg\" />\n </button>\n </p>\n\n <lux-input\n *ngIf=\"property.type === Type.Text\"\n type=\"text\"\n [disabled]=\"!property.editable\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <textarea\n *ngIf=\"property.type === Type.TextArea\"\n [ngModel]=\"valueSet?.getValue(property.name)\"\n (ngModelChange)=\"setValue(property, $event)\"\n ></textarea>\n <lux-input\n *ngIf=\"property.type === Type.Number\"\n type=\"number\"\n [disabled]=\"!property.editable\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Color\"\n type=\"color\"\n [disabled]=\"!property.editable\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Date\"\n type=\"date\"\n [disabled]=\"!property.editable\"\n [value]=\"convertDate(valueSet?.getValue(property.name))\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Time\"\n type=\"time\"\n [disabled]=\"!property.editable\"\n [value]=\"convertDate(valueSet?.getValue(property.name))\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Url\"\n type=\"url\"\n [disabled]=\"!property.editable\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-radiogroup\n *ngIf=\"property.type === Type.Boolean\"\n [disabled]=\"!property.editable\"\n [items]=\"booleanRadioItems\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-radiogroup>\n <lux-autocomplete\n *ngIf=\"property.type === Type.Option\"\n [disabled]=\"!property.editable\"\n [dataSource]=\"property.options || []\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-autocomplete>\n <lux-autocomplete-list\n *ngIf=\"property.type === Type.OptionList\"\n [disabled]=\"!property.editable\"\n [dataSource]=\"property.options || []\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-autocomplete-list>\n <daga-text-list-editor\n *ngIf=\"property.type === Type.TextList\"\n [disabled]=\"!property.editable\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></daga-text-list-editor>\n <daga-text-map-editor\n *ngIf=\"property.type === Type.TextMap\"\n [disabled]=\"!property.editable\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></daga-text-map-editor>\n <div *ngIf=\"property.type === Type.Object\" class=\"left-bar\">\n <daga-object-editor\n [valueSet]=\"valueSet?.getSubValueSet(property.name)\"\n [depth]=\"depth + 1\"\n ></daga-object-editor>\n </div>\n</div>\n<div class=\"property\" *ngIf=\"valueSet && valueSet.hiddenProperties.length > 0\">\n <p class=\"property-name\">Add property:</p>\n <select (change)=\"displayProperty($event)\">\n <option value=\"\">Select a property</option>\n <option\n *ngFor=\"let property of valueSet?.hiddenProperties || []\"\n [value]=\"property.name\"\n >\n {{ property.name }}\n </option>\n </select>\n</div>\n", styles: [".property{padding-top:.5rem;padding-bottom:.5rem}.property .property-name{display:flex;justify-content:space-between;align-items:center;height:1.5rem;padding-bottom:.5rem;margin:0;width:100%;font-size:.75rem;font-weight:500;text-transform:uppercase}.value-item-input,.value-item-element{display:flex;align-items:stretch;flex-direction:row;height:1.5rem;gap:.5rem}.value-item-element{margin-bottom:.5rem}.left-bar{padding-left:1rem;border-left:.25rem solid var(--property-background-color)}lux-input,.relatively-positioned,p.value-item{height:1.5rem;flex-grow:1;flex-basis:0}p.value-item{margin:0;overflow:hidden;text-overflow:ellipsis}.relatively-positioned{position:relative}button.property-button{min-width:1.5rem;min-height:1.5rem;width:1.5rem;height:1.5rem;padding:0;border-radius:.25rem;border:none;background-color:transparent;font-size:1rem}button.property-button img{padding:.25rem;width:1rem;height:1rem}button.property-button:hover{background-color:var(--property-background-color)}button.clear{position:absolute;top:0;right:0;min-width:1.5rem;min-height:1.5rem;width:1.5rem;height:1.5rem;padding:0;border-radius:.25rem;border:none;background-color:transparent;background:var(--lux-autocomplete-icon-clear);background-size:.5rem .5rem;z-index:1}\n"], dependencies: [{ kind: "component", type: ObjectEditorComponent, selector: "daga-object-editor", inputs: ["valueSet", "depth"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: LuxModule }, { kind: "component", type: i3.AutocompleteComponent, selector: "lux-autocomplete", inputs: ["inputId", "disabled", "readonly", "label", "canAddNewValues", "keepOpenAfterDelete", "value", "dataSource", "required", "placeholder", "resolveLabelsFunction", "populateFunction", "instance"], outputs: ["valueChange", "dataSourceChange"] }, { kind: "component", type: i3.AutocompleteListComponent, selector: "lux-autocomplete-list", inputs: ["value", "lang", "inputId", "dataSource", "placeholder", "disabled", "deleteLabelTemplate", "addMessage", "required", "resolveLabelsFunction", "populateFunction", "instance"], outputs: ["valueChange"] }, { kind: "component", type: i3.InputComponent, selector: "lux-input", inputs: ["rows", "cols", "step", "min", "max", "lang", "inlineErrors", "inputId", "aria-label", "readonly", "disabled", "pattern", "currency", "placeholder", "required", "type", "value"], outputs: ["valueChange", "keyPress"] }, { kind: "component", type: i3.RadiogroupComponent, selector: "lux-radiogroup", inputs: ["name", "disabled", "readonly", "required", "items", "value"], outputs: ["itemsChange", "valueChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TextListEditorComponent, selector: "daga-text-list-editor", inputs: ["value", "valueInput", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextMapEditorComponent, selector: "daga-text-map-editor", inputs: ["value", "keyInput", "valueInput", "disabled"], outputs: ["valueChange"] }] }); }
6284
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ObjectEditorComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: CanvasProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
6285
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ObjectEditorComponent, isStandalone: true, selector: "daga-object-editor", inputs: { valueSet: "valueSet", depth: "depth" }, ngImport: i0, template: "<div\n *ngFor=\"let property of valueSet?.displayedProperties || []\"\n class=\"property\"\n [class]=\"property.name + ' depth-' + depth\"\n>\n <p class=\"property-name\">\n {{ property.name }}\n <button class=\"property-button\" (click)=\"hideProperty(property.name)\">\n <div class=\"icon hide-icon\"></div>\n </button>\n </p>\n\n <lux-input\n *ngIf=\"property.type === Type.Text\"\n type=\"text\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <textarea\n *ngIf=\"property.type === Type.TextArea\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [ngModel]=\"valueSet?.getValue(property.name)\"\n (ngModelChange)=\"setValue(property, $event)\"\n ></textarea>\n <lux-input\n *ngIf=\"property.type === Type.Number\"\n type=\"number\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Color\"\n type=\"color\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Date\"\n type=\"date\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"convertDate(valueSet?.getValue(property.name))\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Time\"\n type=\"time\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"convertDate(valueSet?.getValue(property.name))\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Url\"\n type=\"url\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-radiogroup\n *ngIf=\"property.type === Type.Boolean\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [items]=\"booleanRadioItems\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-radiogroup>\n <lux-autocomplete\n *ngIf=\"property.type === Type.Option\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [dataSource]=\"property.options || []\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-autocomplete>\n <lux-autocomplete-list\n *ngIf=\"property.type === Type.OptionList\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [dataSource]=\"property.options || []\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-autocomplete-list>\n <daga-text-list-editor\n *ngIf=\"property.type === Type.TextList\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></daga-text-list-editor>\n <daga-text-map-editor\n *ngIf=\"property.type === Type.TextMap\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></daga-text-map-editor>\n <div *ngIf=\"property.type === Type.Object\" class=\"left-bar\">\n <daga-object-editor\n [valueSet]=\"valueSet?.getSubValueSet(property.name)\"\n [depth]=\"depth + 1\"\n ></daga-object-editor>\n </div>\n</div>\n<div class=\"property\" *ngIf=\"valueSet && valueSet.hiddenProperties.length > 0\">\n <p class=\"property-name\">Add property:</p>\n <select (change)=\"displayProperty($event)\">\n <option value=\"\">Select a property</option>\n <option\n *ngFor=\"let property of valueSet?.hiddenProperties || []\"\n [value]=\"property.name\"\n >\n {{ property.name }}\n </option>\n </select>\n</div>\n", dependencies: [{ kind: "component", type: ObjectEditorComponent, selector: "daga-object-editor", inputs: ["valueSet", "depth"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: LuxModule }, { kind: "component", type: i3.AutocompleteComponent, selector: "lux-autocomplete", inputs: ["inputId", "disabled", "readonly", "label", "canAddNewValues", "keepOpenAfterDelete", "value", "dataSource", "required", "placeholder", "resolveLabelsFunction", "populateFunction", "instance"], outputs: ["valueChange", "dataSourceChange"] }, { kind: "component", type: i3.AutocompleteListComponent, selector: "lux-autocomplete-list", inputs: ["value", "lang", "inputId", "dataSource", "placeholder", "disabled", "deleteLabelTemplate", "addMessage", "required", "resolveLabelsFunction", "populateFunction", "instance"], outputs: ["valueChange"] }, { kind: "component", type: i3.InputComponent, selector: "lux-input", inputs: ["rows", "cols", "step", "min", "max", "lang", "inlineErrors", "inputId", "aria-label", "readonly", "disabled", "pattern", "currency", "placeholder", "required", "type", "value"], outputs: ["valueChange", "keyPress"] }, { kind: "component", type: i3.RadiogroupComponent, selector: "lux-radiogroup", inputs: ["name", "disabled", "readonly", "required", "items", "value"], outputs: ["itemsChange", "valueChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TextListEditorComponent, selector: "daga-text-list-editor", inputs: ["value", "valueInput", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextMapEditorComponent, selector: "daga-text-map-editor", inputs: ["value", "keyInput", "valueInput", "disabled"], outputs: ["valueChange"] }] }); }
6148
6286
  }
6149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ObjectEditorComponent, decorators: [{
6287
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ObjectEditorComponent, decorators: [{
6150
6288
  type: Component,
6151
6289
  args: [{ standalone: true, selector: 'daga-object-editor', imports: [
6152
6290
  CommonModule,
@@ -6154,7 +6292,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
6154
6292
  FormsModule,
6155
6293
  TextListEditorComponent,
6156
6294
  TextMapEditorComponent
6157
- ], template: "<div\n *ngFor=\"let property of valueSet?.displayedProperties || []\"\n class=\"property\"\n [class]=\"property.name + ' depth-' + depth\"\n>\n <p class=\"property-name\">\n {{ property.name }}\n <button class=\"property-button\" (click)=\"hideProperty(property.name)\">\n <img src=\"/assets/daga/icon/property/hide.svg\" />\n </button>\n </p>\n\n <lux-input\n *ngIf=\"property.type === Type.Text\"\n type=\"text\"\n [disabled]=\"!property.editable\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <textarea\n *ngIf=\"property.type === Type.TextArea\"\n [ngModel]=\"valueSet?.getValue(property.name)\"\n (ngModelChange)=\"setValue(property, $event)\"\n ></textarea>\n <lux-input\n *ngIf=\"property.type === Type.Number\"\n type=\"number\"\n [disabled]=\"!property.editable\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Color\"\n type=\"color\"\n [disabled]=\"!property.editable\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Date\"\n type=\"date\"\n [disabled]=\"!property.editable\"\n [value]=\"convertDate(valueSet?.getValue(property.name))\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Time\"\n type=\"time\"\n [disabled]=\"!property.editable\"\n [value]=\"convertDate(valueSet?.getValue(property.name))\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Url\"\n type=\"url\"\n [disabled]=\"!property.editable\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-radiogroup\n *ngIf=\"property.type === Type.Boolean\"\n [disabled]=\"!property.editable\"\n [items]=\"booleanRadioItems\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-radiogroup>\n <lux-autocomplete\n *ngIf=\"property.type === Type.Option\"\n [disabled]=\"!property.editable\"\n [dataSource]=\"property.options || []\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-autocomplete>\n <lux-autocomplete-list\n *ngIf=\"property.type === Type.OptionList\"\n [disabled]=\"!property.editable\"\n [dataSource]=\"property.options || []\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-autocomplete-list>\n <daga-text-list-editor\n *ngIf=\"property.type === Type.TextList\"\n [disabled]=\"!property.editable\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></daga-text-list-editor>\n <daga-text-map-editor\n *ngIf=\"property.type === Type.TextMap\"\n [disabled]=\"!property.editable\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></daga-text-map-editor>\n <div *ngIf=\"property.type === Type.Object\" class=\"left-bar\">\n <daga-object-editor\n [valueSet]=\"valueSet?.getSubValueSet(property.name)\"\n [depth]=\"depth + 1\"\n ></daga-object-editor>\n </div>\n</div>\n<div class=\"property\" *ngIf=\"valueSet && valueSet.hiddenProperties.length > 0\">\n <p class=\"property-name\">Add property:</p>\n <select (change)=\"displayProperty($event)\">\n <option value=\"\">Select a property</option>\n <option\n *ngFor=\"let property of valueSet?.hiddenProperties || []\"\n [value]=\"property.name\"\n >\n {{ property.name }}\n </option>\n </select>\n</div>\n", styles: [".property{padding-top:.5rem;padding-bottom:.5rem}.property .property-name{display:flex;justify-content:space-between;align-items:center;height:1.5rem;padding-bottom:.5rem;margin:0;width:100%;font-size:.75rem;font-weight:500;text-transform:uppercase}.value-item-input,.value-item-element{display:flex;align-items:stretch;flex-direction:row;height:1.5rem;gap:.5rem}.value-item-element{margin-bottom:.5rem}.left-bar{padding-left:1rem;border-left:.25rem solid var(--property-background-color)}lux-input,.relatively-positioned,p.value-item{height:1.5rem;flex-grow:1;flex-basis:0}p.value-item{margin:0;overflow:hidden;text-overflow:ellipsis}.relatively-positioned{position:relative}button.property-button{min-width:1.5rem;min-height:1.5rem;width:1.5rem;height:1.5rem;padding:0;border-radius:.25rem;border:none;background-color:transparent;font-size:1rem}button.property-button img{padding:.25rem;width:1rem;height:1rem}button.property-button:hover{background-color:var(--property-background-color)}button.clear{position:absolute;top:0;right:0;min-width:1.5rem;min-height:1.5rem;width:1.5rem;height:1.5rem;padding:0;border-radius:.25rem;border:none;background-color:transparent;background:var(--lux-autocomplete-icon-clear);background-size:.5rem .5rem;z-index:1}\n"] }]
6295
+ ], template: "<div\n *ngFor=\"let property of valueSet?.displayedProperties || []\"\n class=\"property\"\n [class]=\"property.name + ' depth-' + depth\"\n>\n <p class=\"property-name\">\n {{ property.name }}\n <button class=\"property-button\" (click)=\"hideProperty(property.name)\">\n <div class=\"icon hide-icon\"></div>\n </button>\n </p>\n\n <lux-input\n *ngIf=\"property.type === Type.Text\"\n type=\"text\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <textarea\n *ngIf=\"property.type === Type.TextArea\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [ngModel]=\"valueSet?.getValue(property.name)\"\n (ngModelChange)=\"setValue(property, $event)\"\n ></textarea>\n <lux-input\n *ngIf=\"property.type === Type.Number\"\n type=\"number\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Color\"\n type=\"color\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Date\"\n type=\"date\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"convertDate(valueSet?.getValue(property.name))\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Time\"\n type=\"time\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"convertDate(valueSet?.getValue(property.name))\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-input\n *ngIf=\"property.type === Type.Url\"\n type=\"url\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-input>\n <lux-radiogroup\n *ngIf=\"property.type === Type.Boolean\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [items]=\"booleanRadioItems\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-radiogroup>\n <lux-autocomplete\n *ngIf=\"property.type === Type.Option\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [dataSource]=\"property.options || []\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-autocomplete>\n <lux-autocomplete-list\n *ngIf=\"property.type === Type.OptionList\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [dataSource]=\"property.options || []\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></lux-autocomplete-list>\n <daga-text-list-editor\n *ngIf=\"property.type === Type.TextList\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></daga-text-list-editor>\n <daga-text-map-editor\n *ngIf=\"property.type === Type.TextMap\"\n [disabled]=\"!property.editable || !userCanEdit\"\n [value]=\"valueSet?.getValue(property.name)\"\n (valueChange)=\"setValue(property, $event)\"\n ></daga-text-map-editor>\n <div *ngIf=\"property.type === Type.Object\" class=\"left-bar\">\n <daga-object-editor\n [valueSet]=\"valueSet?.getSubValueSet(property.name)\"\n [depth]=\"depth + 1\"\n ></daga-object-editor>\n </div>\n</div>\n<div class=\"property\" *ngIf=\"valueSet && valueSet.hiddenProperties.length > 0\">\n <p class=\"property-name\">Add property:</p>\n <select (change)=\"displayProperty($event)\">\n <option value=\"\">Select a property</option>\n <option\n *ngFor=\"let property of valueSet?.hiddenProperties || []\"\n [value]=\"property.name\"\n >\n {{ property.name }}\n </option>\n </select>\n</div>\n" }]
6158
6296
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: CanvasProviderService }], propDecorators: { valueSet: [{
6159
6297
  type: Input
6160
6298
  }], depth: [{
@@ -6192,12 +6330,12 @@ class PropertyEditorComponent {
6192
6330
  });
6193
6331
  }
6194
6332
  }
6195
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: PropertyEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
6196
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: PropertyEditorComponent, isStandalone: true, selector: "daga-property-editor", inputs: { location: "location", valueSet: "valueSet" }, viewQueries: [{ propertyName: "panel", first: true, predicate: ["panel"], descendants: true }], ngImport: i0, template: "<div #panel class=\"panel bottom {{ location }}\">\n <daga-collapse-button\n [collapsableSelector]=\"panel\"\n [collapsableAdditionalSelector]=\"'.panel-content'\"\n [rule]=\"'display'\"\n [collapsedValue]=\"'none'\"\n [visibleValue]=\"'block'\"\n [disabled]=\"\n !valueSet ||\n !valueSet.propertySet ||\n !valueSet.propertySet.hasProperties()\n \"\n />\n <div\n *ngIf=\"\n valueSet && valueSet.propertySet && valueSet.propertySet.hasProperties()\n \"\n class=\"panel-content\"\n >\n <p *ngIf=\"title\" class=\"title\">{{ title }}</p>\n <daga-object-editor [valueSet]=\"valueSet\"></daga-object-editor>\n </div>\n</div>\n", styles: [".panel{width:24rem}.title{margin:0;width:100%;font-size:1rem;font-weight:500}.panel-content{padding:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CollapseButtonComponent, selector: "daga-collapse-button", inputs: ["collapsableSelector", "collapsableAdditionalSelector", "collapsed", "disabled", "direction", "rule", "collapsedValue", "visibleValue"] }, { kind: "component", type: ObjectEditorComponent, selector: "daga-object-editor", inputs: ["valueSet", "depth"] }] }); }
6333
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PropertyEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
6334
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: PropertyEditorComponent, isStandalone: true, selector: "daga-property-editor", inputs: { location: "location", valueSet: "valueSet" }, viewQueries: [{ propertyName: "panel", first: true, predicate: ["panel"], descendants: true }], ngImport: i0, template: "<div #panel class=\"panel bottom {{ location }}\">\n <daga-collapse-button\n [collapsableSelector]=\"panel\"\n [collapsableAdditionalSelector]=\"'.panel-content'\"\n [rule]=\"'display'\"\n [collapsedValue]=\"'none'\"\n [visibleValue]=\"'block'\"\n [disabled]=\"\n !valueSet ||\n !valueSet.propertySet ||\n !valueSet.propertySet.hasProperties()\n \"\n />\n <div\n *ngIf=\"\n valueSet && valueSet.propertySet && valueSet.propertySet.hasProperties()\n \"\n class=\"panel-content\"\n >\n <p *ngIf=\"title\" class=\"title\">{{ title }}</p>\n <daga-object-editor [valueSet]=\"valueSet\"></daga-object-editor>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CollapseButtonComponent, selector: "daga-collapse-button", inputs: ["collapsableSelector", "collapsableAdditionalSelector", "collapsed", "disabled", "direction", "rule", "collapsedValue", "visibleValue"] }, { kind: "component", type: ObjectEditorComponent, selector: "daga-object-editor", inputs: ["valueSet", "depth"] }] }); }
6197
6335
  }
6198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: PropertyEditorComponent, decorators: [{
6336
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PropertyEditorComponent, decorators: [{
6199
6337
  type: Component,
6200
- args: [{ standalone: true, selector: 'daga-property-editor', imports: [CommonModule, CollapseButtonComponent, ObjectEditorComponent], template: "<div #panel class=\"panel bottom {{ location }}\">\n <daga-collapse-button\n [collapsableSelector]=\"panel\"\n [collapsableAdditionalSelector]=\"'.panel-content'\"\n [rule]=\"'display'\"\n [collapsedValue]=\"'none'\"\n [visibleValue]=\"'block'\"\n [disabled]=\"\n !valueSet ||\n !valueSet.propertySet ||\n !valueSet.propertySet.hasProperties()\n \"\n />\n <div\n *ngIf=\"\n valueSet && valueSet.propertySet && valueSet.propertySet.hasProperties()\n \"\n class=\"panel-content\"\n >\n <p *ngIf=\"title\" class=\"title\">{{ title }}</p>\n <daga-object-editor [valueSet]=\"valueSet\"></daga-object-editor>\n </div>\n</div>\n", styles: [".panel{width:24rem}.title{margin:0;width:100%;font-size:1rem;font-weight:500}.panel-content{padding:1rem}\n"] }]
6338
+ args: [{ standalone: true, selector: 'daga-property-editor', imports: [CommonModule, CollapseButtonComponent, ObjectEditorComponent], template: "<div #panel class=\"panel bottom {{ location }}\">\n <daga-collapse-button\n [collapsableSelector]=\"panel\"\n [collapsableAdditionalSelector]=\"'.panel-content'\"\n [rule]=\"'display'\"\n [collapsedValue]=\"'none'\"\n [visibleValue]=\"'block'\"\n [disabled]=\"\n !valueSet ||\n !valueSet.propertySet ||\n !valueSet.propertySet.hasProperties()\n \"\n />\n <div\n *ngIf=\"\n valueSet && valueSet.propertySet && valueSet.propertySet.hasProperties()\n \"\n class=\"panel-content\"\n >\n <p *ngIf=\"title\" class=\"title\">{{ title }}</p>\n <daga-object-editor [valueSet]=\"valueSet\"></daga-object-editor>\n </div>\n</div>\n" }]
6201
6339
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { panel: [{
6202
6340
  type: ViewChild,
6203
6341
  args: ['panel']
@@ -6217,10 +6355,10 @@ class DagaConfigurationService {
6217
6355
  getConfig() {
6218
6356
  return this._config;
6219
6357
  }
6220
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DagaConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6221
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DagaConfigurationService }); }
6358
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DagaConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6359
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DagaConfigurationService }); }
6222
6360
  }
6223
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DagaConfigurationService, decorators: [{
6361
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DagaConfigurationService, decorators: [{
6224
6362
  type: Injectable
6225
6363
  }] });
6226
6364
 
@@ -6242,10 +6380,10 @@ class DiagramEditorComponent {
6242
6380
  ngAfterViewInit() {
6243
6381
  this.canvasProvider.initCanvasView(this.appendTo.nativeElement);
6244
6382
  }
6245
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DiagramEditorComponent, deps: [{ token: DagaConfigurationService }, { token: CanvasProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
6246
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: DiagramEditorComponent, isStandalone: true, selector: "daga-diagram-editor", viewQueries: [{ propertyName: "appendTo", first: true, predicate: ["appendTo"], descendants: true }, { propertyName: "diagramButtons", first: true, predicate: ["diagramButtons"], descendants: true }, { propertyName: "palette", first: true, predicate: ["palette"], descendants: true }, { propertyName: "propertyEditor", first: true, predicate: ["propertyEditor"], descendants: true }], ngImport: i0, template: "<div class=\"append-to\" #appendTo></div>\n<daga-diagram-buttons #diagramButtons />\n<daga-palette\n *ngIf=\"config.palettes && config.palettes.length > 0\"\n #palette\n [location]=\"Corner.TopLeft\"\n [palettes]=\"config.palettes\"\n/>\n<daga-property-editor #propertyEditor [location]=\"Corner.TopRight\" />\n<daga-errors />\n", styles: [":host,.append-to{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DiagramButtonsComponent, selector: "daga-diagram-buttons", inputs: ["enableFilter", "enableLayout", "enableUndoRedo", "enableZoom", "zoomRate"] }, { kind: "component", type: PaletteComponent, selector: "daga-palette", inputs: ["palettes", "currentPalette", "currentCategory", "location"] }, { kind: "component", type: PropertyEditorComponent, selector: "daga-property-editor", inputs: ["location", "valueSet"] }, { kind: "component", type: ErrorsComponent, selector: "daga-errors" }] }); }
6383
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DiagramEditorComponent, deps: [{ token: DagaConfigurationService }, { token: CanvasProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
6384
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: DiagramEditorComponent, isStandalone: true, selector: "daga-diagram-editor", viewQueries: [{ propertyName: "appendTo", first: true, predicate: ["appendTo"], descendants: true }, { propertyName: "diagramButtons", first: true, predicate: ["diagramButtons"], descendants: true }, { propertyName: "palette", first: true, predicate: ["palette"], descendants: true }, { propertyName: "propertyEditor", first: true, predicate: ["propertyEditor"], descendants: true }], ngImport: i0, template: "<div class=\"append-to\" #appendTo></div>\n<daga-diagram-buttons #diagramButtons />\n<daga-palette\n *ngIf=\"config.palettes && config.palettes.length > 0\"\n #palette\n [location]=\"Corner.TopLeft\"\n [palettes]=\"config.palettes\"\n/>\n<daga-property-editor #propertyEditor [location]=\"Corner.TopRight\" />\n<daga-errors />\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DiagramButtonsComponent, selector: "daga-diagram-buttons", inputs: ["enableFilter", "enableLayout", "enableUndoRedo", "enableZoom", "zoomRate"] }, { kind: "component", type: PaletteComponent, selector: "daga-palette", inputs: ["palettes", "currentPalette", "currentCategory", "location"] }, { kind: "component", type: PropertyEditorComponent, selector: "daga-property-editor", inputs: ["location", "valueSet"] }, { kind: "component", type: ErrorsComponent, selector: "daga-errors" }] }); }
6247
6385
  }
6248
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DiagramEditorComponent, decorators: [{
6386
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DiagramEditorComponent, decorators: [{
6249
6387
  type: Component,
6250
6388
  args: [{ standalone: true, selector: 'daga-diagram-editor', imports: [
6251
6389
  CommonModule,
@@ -6253,7 +6391,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
6253
6391
  PaletteComponent,
6254
6392
  PropertyEditorComponent,
6255
6393
  ErrorsComponent
6256
- ], template: "<div class=\"append-to\" #appendTo></div>\n<daga-diagram-buttons #diagramButtons />\n<daga-palette\n *ngIf=\"config.palettes && config.palettes.length > 0\"\n #palette\n [location]=\"Corner.TopLeft\"\n [palettes]=\"config.palettes\"\n/>\n<daga-property-editor #propertyEditor [location]=\"Corner.TopRight\" />\n<daga-errors />\n", styles: [":host,.append-to{display:block;width:100%;height:100%}\n"] }]
6394
+ ], template: "<div class=\"append-to\" #appendTo></div>\n<daga-diagram-buttons #diagramButtons />\n<daga-palette\n *ngIf=\"config.palettes && config.palettes.length > 0\"\n #palette\n [location]=\"Corner.TopLeft\"\n [palettes]=\"config.palettes\"\n/>\n<daga-property-editor #propertyEditor [location]=\"Corner.TopRight\" />\n<daga-errors />\n" }]
6257
6395
  }], ctorParameters: () => [{ type: DagaConfigurationService }, { type: CanvasProviderService }], propDecorators: { appendTo: [{
6258
6396
  type: ViewChild,
6259
6397
  args: ['appendTo']
@@ -6280,19 +6418,24 @@ class DiagramComponent {
6280
6418
  ngOnInit() {
6281
6419
  this.configurationService.init(this.config);
6282
6420
  }
6283
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DiagramComponent, deps: [{ token: DagaConfigurationService }, { token: CanvasProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
6284
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: DiagramComponent, isStandalone: true, selector: "daga-diagram", inputs: { config: "config" }, providers: [CanvasProviderService, DagaConfigurationService], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{position:relative;display:block;min-width:40rem;min-height:20rem;width:100%;height:100%}\n"] }); }
6421
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DiagramComponent, deps: [{ token: DagaConfigurationService }, { token: CanvasProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
6422
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: DiagramComponent, isStandalone: true, selector: "daga-diagram", inputs: { config: "config" }, providers: [CanvasProviderService, DagaConfigurationService], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
6285
6423
  }
6286
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DiagramComponent, decorators: [{
6424
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DiagramComponent, decorators: [{
6287
6425
  type: Component,
6288
- args: [{ standalone: true, selector: 'daga-diagram', template: `<ng-content></ng-content>`, providers: [CanvasProviderService, DagaConfigurationService], styles: [":host{position:relative;display:block;min-width:40rem;min-height:20rem;width:100%;height:100%}\n"] }]
6426
+ args: [{
6427
+ standalone: true,
6428
+ selector: 'daga-diagram',
6429
+ template: `<ng-content></ng-content>`,
6430
+ providers: [CanvasProviderService, DagaConfigurationService]
6431
+ }]
6289
6432
  }], ctorParameters: () => [{ type: DagaConfigurationService }, { type: CanvasProviderService }], propDecorators: { config: [{
6290
6433
  type: Input
6291
6434
  }] } });
6292
6435
 
6293
6436
  class DagaModule {
6294
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DagaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6295
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.6", ngImport: i0, type: DagaModule, imports: [CollapseButtonComponent,
6437
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DagaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6438
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: DagaModule, imports: [CollapseButtonComponent,
6296
6439
  DiagramButtonsComponent,
6297
6440
  DiagramComponent,
6298
6441
  DiagramEditorComponent,
@@ -6305,7 +6448,7 @@ class DagaModule {
6305
6448
  CommonModule,
6306
6449
  FormsModule,
6307
6450
  LuxModule], exports: [DiagramComponent, DiagramEditorComponent] }); }
6308
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DagaModule, providers: [DagaConfigurationService, CanvasProviderService], imports: [CollapseButtonComponent,
6451
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DagaModule, providers: [DagaConfigurationService, CanvasProviderService], imports: [CollapseButtonComponent,
6309
6452
  DiagramButtonsComponent,
6310
6453
  DiagramEditorComponent,
6311
6454
  ErrorsComponent,
@@ -6318,7 +6461,7 @@ class DagaModule {
6318
6461
  FormsModule,
6319
6462
  LuxModule] }); }
6320
6463
  }
6321
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: DagaModule, decorators: [{
6464
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DagaModule, decorators: [{
6322
6465
  type: NgModule,
6323
6466
  args: [{
6324
6467
  declarations: [],
@@ -6594,5 +6737,5 @@ class DagaImporter {
6594
6737
  * Generated bundle index. Do not edit.
6595
6738
  */
6596
6739
 
6597
- export { ACTION_QUEUE_SIZE, ActionQueue, AddConnectionAction, AddNodeAction, AdjacencyLayout, BreadthAdjacencyLayout, BreadthLayout, CanvasProviderService, CollapseButtonComponent, DagaConfigurationService, DagaExporter, DagaImporter, DagaModule, DiagramButtonsComponent, DiagramCanvas, DiagramComponent, DiagramConnection, DiagramConnectionType, DiagramEditorComponent, DiagramElement, DiagramField, DiagramModel, DiagramNode, DiagramNodeType, DiagramPort, EditFieldAction, ErrorsComponent, ForceLayout, HorizontalLayout, MoveNodeAction, ObjectEditorComponent, PaletteComponent, PriorityLayout, Property, PropertyEditorComponent, PropertySet, RemoveAction, StretchNodeAction, TextListEditorComponent, TextMapEditorComponent, Type, UpdateValuesAction, ValueSet, VerticalLayout, layouts };
6740
+ export { ACTION_QUEUE_SIZE, ActionQueue, AddConnectionAction, AddNodeAction, AdjacencyLayout, BreadthAdjacencyLayout, BreadthLayout, CanvasProviderService, ClosedShape, CollapseButtonComponent, Corner, DagaConfigurationService, DagaExporter, DagaImporter, DagaModule, DiagramActions, DiagramButtonsComponent, DiagramCanvas, DiagramComponent, DiagramConnection, DiagramConnectionSet, DiagramConnectionType, DiagramEditorComponent, DiagramElement, DiagramEntitySet, DiagramField, DiagramFieldSet, DiagramModel, DiagramNode, DiagramNodeSet, DiagramNodeType, DiagramPort, DiagramPortSet, DiagramSection, DiagramSectionSet, EditFieldAction, ErrorsComponent, ForceLayout, HorizontalAlign, HorizontalLayout, LineShape, LineStyle, MoveNodeAction, ObjectEditorComponent, PaletteComponent, PriorityLayout, Property, PropertyEditorComponent, PropertySet, RemoveAction, Side, StretchNodeAction, TextListEditorComponent, TextMapEditorComponent, Type, UpdateValuesAction, ValueSet, VerticalAlign, VerticalLayout, layouts };
6598
6741
  //# sourceMappingURL=metadev-daga.mjs.map