@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.
- package/Changelog.md +19 -1
- package/README.md +1 -1
- package/assets/fonts/DMMono-Medium.ttf +0 -0
- package/assets/fonts/DMMono-Medium.woff +0 -0
- package/assets/fonts/DMMono-Medium.woff2 +0 -0
- package/assets/fonts/WonderUnitSans-Medium.ttf +0 -0
- package/assets/fonts/WonderUnitSans-Medium.woff +0 -0
- package/assets/fonts/WonderUnitSans-Medium.woff2 +0 -0
- package/assets/styles/_collapse-button.scss +37 -0
- package/assets/styles/_diagram-buttons.scss +132 -0
- package/assets/styles/_diagram.scss +15 -0
- package/assets/styles/_errors.scss +83 -0
- package/assets/styles/_palette.scss +12 -0
- package/assets/styles/_property-editor.scss +160 -0
- package/assets/styles/daga.scss +152 -0
- package/fesm2022/metadev-daga.mjs +364 -221
- package/fesm2022/metadev-daga.mjs.map +1 -1
- package/index.d.ts +16 -7
- package/lib/collapse-button/collapse-button.component.d.ts +1 -0
- package/lib/diagram-editor/diagram/diagram-action.d.ts +10 -1
- package/lib/diagram-editor/diagram/diagram-canvas.d.ts +4 -1
- package/lib/diagram-editor/diagram/diagram-config.d.ts +8 -0
- package/lib/diagram-editor/diagram/diagram-node.d.ts +1 -1
- package/lib/diagram-editor/diagram/diagram-section.d.ts +3 -1
- package/lib/interfaces/canvas.d.ts +7 -1
- package/lib/object-editor/object-editor.component.d.ts +1 -0
- package/package.json +1 -1
- package/assets/styles/styles.scss +0 -181
|
@@ -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
|
|
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
|
-
|
|
75
|
-
|
|
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.
|
|
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 <
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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 &&
|
|
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
|
-
|
|
3667
|
-
|
|
3668
|
-
|
|
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
|
-
|
|
3672
|
-
|
|
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
|
-
|
|
3694
|
-
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
4117
|
-
|
|
4118
|
-
|
|
4119
|
-
|
|
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
|
-
|
|
4123
|
-
|
|
4124
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4147
|
-
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
4599
|
-
|
|
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.
|
|
4603
|
-
this.unfinishedConnection
|
|
4604
|
-
|
|
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
|
-
|
|
4609
|
-
|
|
4610
|
-
|
|
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
|
-
|
|
4629
|
-
|
|
4630
|
-
|
|
4631
|
-
|
|
4632
|
-
|
|
4633
|
-
|
|
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 (
|
|
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 (
|
|
4805
|
-
d.rootElement instanceof
|
|
4806
|
-
|
|
4807
|
-
|
|
4808
|
-
|
|
4809
|
-
|
|
4810
|
-
|
|
4811
|
-
|
|
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 (
|
|
4816
|
-
d.rootElement instanceof
|
|
4817
|
-
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
|
|
4821
|
-
|
|
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
|
-
|
|
4849
|
-
|
|
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.
|
|
5399
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
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.
|
|
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.
|
|
5486
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
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.
|
|
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"
|
|
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.
|
|
5545
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
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.
|
|
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"
|
|
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.
|
|
5900
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
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.
|
|
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"
|
|
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.
|
|
5973
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
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.
|
|
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 <
|
|
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.
|
|
6049
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
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.
|
|
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 <
|
|
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.
|
|
6147
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
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.
|
|
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 <
|
|
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.
|
|
6196
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
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.
|
|
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"
|
|
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.
|
|
6221
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
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.
|
|
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.
|
|
6246
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
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.
|
|
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"
|
|
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.
|
|
6284
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
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.
|
|
6424
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DiagramComponent, decorators: [{
|
|
6287
6425
|
type: Component,
|
|
6288
|
-
args: [{
|
|
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.
|
|
6295
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.
|
|
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.
|
|
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.
|
|
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
|