@metadev/daga 1.0.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.
Files changed (33) hide show
  1. package/Changelog.md +24 -1
  2. package/README.md +1 -1
  3. package/assets/fonts/DMMono-Medium.ttf +0 -0
  4. package/assets/fonts/DMMono-Medium.woff +0 -0
  5. package/assets/fonts/DMMono-Medium.woff2 +0 -0
  6. package/assets/fonts/WonderUnitSans-Medium.ttf +0 -0
  7. package/assets/fonts/WonderUnitSans-Medium.woff +0 -0
  8. package/assets/fonts/WonderUnitSans-Medium.woff2 +0 -0
  9. package/assets/styles/_collapse-button.scss +37 -0
  10. package/assets/styles/_diagram-buttons.scss +132 -0
  11. package/assets/styles/_diagram.scss +15 -0
  12. package/assets/styles/_errors.scss +83 -0
  13. package/assets/styles/_palette.scss +12 -0
  14. package/assets/styles/_property-editor.scss +160 -0
  15. package/assets/styles/daga.scss +152 -0
  16. package/fesm2022/metadev-daga.mjs +1257 -996
  17. package/fesm2022/metadev-daga.mjs.map +1 -1
  18. package/index.d.ts +16 -7
  19. package/lib/collapse-button/collapse-button.component.d.ts +1 -0
  20. package/lib/diagram-editor/diagram/diagram-action.d.ts +10 -1
  21. package/lib/diagram-editor/diagram/diagram-canvas.d.ts +8 -1
  22. package/lib/diagram-editor/diagram/diagram-config.d.ts +8 -0
  23. package/lib/diagram-editor/diagram/diagram-connection.d.ts +12 -3
  24. package/lib/diagram-editor/diagram/diagram-element.d.ts +74 -2
  25. package/lib/diagram-editor/diagram/diagram-field.d.ts +13 -3
  26. package/lib/diagram-editor/diagram/diagram-model.d.ts +10 -42
  27. package/lib/diagram-editor/diagram/diagram-node.d.ts +12 -3
  28. package/lib/diagram-editor/diagram/diagram-port.d.ts +12 -3
  29. package/lib/diagram-editor/diagram/diagram-section.d.ts +12 -2
  30. package/lib/interfaces/canvas.d.ts +7 -1
  31. package/lib/object-editor/object-editor.component.d.ts +1 -0
  32. package/package.json +1 -1
  33. package/assets/styles/styles.scss +0 -181
package/Changelog.md CHANGED
@@ -4,6 +4,29 @@ List of releases and changes.
4
4
 
5
5
  ![Daga logo](https://metadev.pro/icons/daga-logo-header.svg)
6
6
 
7
+ ## v. 1.2.0
8
+
9
+ Date: _2024.02.08_
10
+
11
+ - Enable configuring what user actions are allowed [#47](https://github.com/metadevpro/daga/issues/47) [#54](https://github.com/metadevpro/daga/pull/54)
12
+ - Add missing exports to index and clean up unused utils [#55](https://github.com/metadevpro/daga/pull/55)
13
+ - Use separate configuration defaults for `DiagramNode` and `DiagramSection` [#56](https://github.com/metadevpro/daga/pull/56)
14
+ - Add TypeDoc for automatic documentation generation [#58](https://github.com/metadevpro/daga/pull/58)
15
+ - Move all styles to a dedicated `styles` folder [#60](https://github.com/metadevpro/daga/pull/60)
16
+ - Remove unused CSS variables [#60](https://github.com/metadevpro/daga/pull/60)
17
+ - Remove ampersands from stylesheets [#60](https://github.com/metadevpro/daga/pull/60)
18
+ - Prefix Daga's CSS variables with `daga-` [#60](https://github.com/metadevpro/daga/pull/60)
19
+ - Update libraries [#60](https://github.com/metadevpro/daga/pull/60)
20
+
21
+ ## v. 1.1.0
22
+
23
+ Date: _2024.02.05_
24
+
25
+ - Refactor API for sets of elements of Diagram Model [#51](https://github.com/metadevpro/daga/pull/51)
26
+ - Make diagrams not absolutely positioned in CSS [#50](https://github.com/metadevpro/daga/issues/50), [#52](https://github.com/metadevpro/daga/pull/52)
27
+
7
28
  ## v. 1.0.0
8
29
 
9
- _2024.02.01_ First public version. ⚔️🚀🎉
30
+ Date: _2024.02.01_
31
+
32
+ - First public version. ⚔️🚀🎉
package/README.md CHANGED
@@ -10,7 +10,7 @@ Diagramming library for models.
10
10
 
11
11
  ## Diagram Example
12
12
 
13
- ![Sample diagram](https://metadev.pro/img/daga-diagram.svg)
13
+ ![Sample diagram](https://metadev.pro/img/daga/daga-diagram.svg)
14
14
 
15
15
  ## Documentation
16
16
 
Binary file
Binary file
Binary file
@@ -0,0 +1,37 @@
1
+ daga-collapse-button {
2
+ .collapse-button {
3
+ width: 100%;
4
+ height: 100%;
5
+ min-width: 2rem;
6
+ min-height: 2rem;
7
+ margin: 0;
8
+ border: 0;
9
+ padding: 0;
10
+ background-color: transparent;
11
+ cursor: pointer;
12
+ div {
13
+ background-size: contain;
14
+ margin: auto;
15
+ width: 1.5rem;
16
+ height: 1.5rem;
17
+ }
18
+ div.horizontal-none {
19
+ background-image: url(../icon/action/drop-horizontal-none.svg);
20
+ }
21
+ div.horizontal-left {
22
+ background-image: url(../icon/action/drop-horizontal-left.svg);
23
+ }
24
+ div.horizontal-right {
25
+ background-image: url(../icon/action/drop-horizontal-right.svg);
26
+ }
27
+ div.vertical-none {
28
+ background-image: url(../icon/action/drop-vertical-none.svg);
29
+ }
30
+ div.vertical-up {
31
+ background-image: url(../icon/action/drop-vertical-up.svg);
32
+ }
33
+ div.vertical-down {
34
+ background-image: url(../icon/action/drop-vertical-down.svg);
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,132 @@
1
+ daga-diagram-buttons {
2
+ .diagram-buttons {
3
+ position: absolute;
4
+ right: 1rem;
5
+ bottom: 1rem;
6
+ button {
7
+ position: relative;
8
+ display: block;
9
+ height: 3rem;
10
+ width: 3rem;
11
+ padding: 0;
12
+ border: 0;
13
+ margin-bottom: 1rem;
14
+ background-color: transparent;
15
+ .tooltip {
16
+ visibility: hidden;
17
+ z-index: 1;
18
+ position: absolute;
19
+ top: 0.5rem;
20
+ right: 3.5rem;
21
+ height: 2rem;
22
+ padding: 0.6rem;
23
+ border-radius: 0.25rem;
24
+ font-size: 0.8rem;
25
+ font-weight: 500;
26
+ box-sizing: border-box;
27
+ white-space: nowrap;
28
+ color: #ffffff;
29
+ background-color: rgba(0, 0, 0, 0.6);
30
+ }
31
+ }
32
+ button:hover .tooltip {
33
+ visibility: visible;
34
+ }
35
+ button:hover .tooltip {
36
+ visibility: visible;
37
+ }
38
+ button.filter.on {
39
+ background-image: url(../icon/buttons/filter-on.svg);
40
+ }
41
+ button.filter.on:hover {
42
+ background-image: url(../icon/buttons/filter-on-hover.svg);
43
+ }
44
+ button.filter.off {
45
+ background-image: url(../icon/buttons/filter-off.svg);
46
+ }
47
+ button.filter.off:hover {
48
+ background-image: url(../icon/buttons/filter-off-hover.svg);
49
+ }
50
+ button.layout {
51
+ background-image: url(../icon/buttons/layout.svg);
52
+ }
53
+ button.layout:hover {
54
+ background-image: url(../icon/buttons/layout-hover.svg);
55
+ }
56
+ button.zoom-in {
57
+ background-image: url(../icon/buttons/zoom-in.svg);
58
+ }
59
+ button.zoom-in:hover {
60
+ background-image: url(../icon/buttons/zoom-in-hover.svg);
61
+ }
62
+ button.zoom-out {
63
+ background-image: url(../icon/buttons/zoom-out.svg);
64
+ }
65
+ button.zoom-out:hover {
66
+ background-image: url(../icon/buttons/zoom-out-hover.svg);
67
+ }
68
+ button.center {
69
+ background-image: url(../icon/buttons/center.svg);
70
+ }
71
+ button.center:hover {
72
+ background-image: url(../icon/buttons/center-hover.svg);
73
+ }
74
+ button.undo {
75
+ background-image: url(../icon/buttons/undo.svg);
76
+ }
77
+ button.undo:hover {
78
+ background-image: url(../icon/buttons/undo-hover.svg);
79
+ }
80
+ button.redo {
81
+ background-image: url(../icon/buttons/redo.svg);
82
+ }
83
+ button.redo:hover {
84
+ background-image: url(../icon/buttons/redo-hover.svg);
85
+ }
86
+ button.more-options {
87
+ background-image: url(../icon/buttons/ellipsis.svg);
88
+ }
89
+ button.more-options:hover {
90
+ background-image: url(../icon/buttons/ellipsis-hover.svg);
91
+ }
92
+ .collapsable-buttons.collapsing {
93
+ animation-name: collapse-animation;
94
+ animation-duration: 1s;
95
+ animation-fill-mode: forwards;
96
+ }
97
+ .collapsable-buttons.expanding {
98
+ animation-name: expand-animation;
99
+ animation-duration: 1s;
100
+ animation-fill-mode: forwards;
101
+ }
102
+ .collapsable-buttons.collapsed {
103
+ transform: scale(1, 0);
104
+ height: 0;
105
+ }
106
+ }
107
+
108
+ @keyframes collapse-animation {
109
+ from {
110
+ transform: scale(1, 1);
111
+ transform-origin: 0% 0%;
112
+ height: 12rem;
113
+ }
114
+ to {
115
+ transform: scale(1, 0);
116
+ transform-origin: 0% 0%;
117
+ height: 0;
118
+ }
119
+ }
120
+ @keyframes expand-animation {
121
+ from {
122
+ transform: scale(1, 0);
123
+ transform-origin: 0% 0%;
124
+ height: 0;
125
+ }
126
+ to {
127
+ transform: scale(1, 1);
128
+ transform-origin: 0% 0%;
129
+ height: 12rem;
130
+ }
131
+ }
132
+ }
@@ -0,0 +1,15 @@
1
+ daga-diagram {
2
+ position: relative;
3
+ display: block;
4
+ min-width: 40rem;
5
+ min-height: 20rem;
6
+ width: 100%;
7
+ height: 100%;
8
+ }
9
+
10
+ daga-diagram-editor,
11
+ .append-to {
12
+ display: block;
13
+ width: 100%;
14
+ height: 100%;
15
+ }
@@ -0,0 +1,83 @@
1
+ daga-errors {
2
+ left: 2rem;
3
+ bottom: 0;
4
+ position: absolute;
5
+ width: calc(100% - 8rem);
6
+
7
+ .errors-summary {
8
+ position: absolute;
9
+ right: 2rem;
10
+ top: -2rem;
11
+ height: 2rem;
12
+ border-top-left-radius: 0.5rem;
13
+ border-top-right-radius: 0.5rem;
14
+ display: flex;
15
+ flex-direction: row;
16
+ align-items: center;
17
+
18
+ span {
19
+ flex: 1 0 auto;
20
+ padding: 0.5rem;
21
+ }
22
+
23
+ .collapse-button-container {
24
+ flex: 0 0 auto;
25
+ padding-left: 0.5rem;
26
+ padding-right: 0.5rem;
27
+ border-top-left-radius: 0.5rem;
28
+ border-top-right-radius: 0.5rem;
29
+ background-color: var(--daga-error-color);
30
+
31
+ daga-collapse-button {
32
+ filter: brightness(10);
33
+ }
34
+ }
35
+ }
36
+ .errors-summary.no-errors {
37
+ background-color: var(--daga-panel-secondary-color);
38
+ color: var(--daga-font-color);
39
+ }
40
+ .errors-summary.with-errors {
41
+ background-color: #e64545;
42
+ color: #ffffff;
43
+ }
44
+ .error-panel {
45
+ width: 100%;
46
+ max-height: 12rem;
47
+ border-top-left-radius: 0.5rem;
48
+ border-top-right-radius: 0.5rem;
49
+ padding: 0.5rem;
50
+ background-color: var(--daga-font-color);
51
+ color: white;
52
+ overflow: auto;
53
+
54
+ ol {
55
+ counter-reset: count;
56
+ list-style: decimal;
57
+ padding: 0;
58
+ padding-left: 5rem;
59
+ margin: 0;
60
+ font-size: 0.95rem;
61
+
62
+ li {
63
+ counter-increment: count;
64
+ cursor: pointer;
65
+ padding-bottom: 0.25rem;
66
+
67
+ b {
68
+ font-weight: 700;
69
+ }
70
+ }
71
+ li:hover {
72
+ text-decoration: underline;
73
+ }
74
+ li::marker {
75
+ content: 'ERROR ' counters(count, '.', decimal-leading-zero) ' ';
76
+ font-family: var(--daga-monospace-font-family);
77
+ font-size: 0.9rem;
78
+ font-weight: 400;
79
+ color: rgba(255, 255, 255, 0.75);
80
+ }
81
+ }
82
+ }
83
+ }
@@ -0,0 +1,12 @@
1
+ daga-palette {
2
+ .panel {
3
+ width: 12rem;
4
+ }
5
+ .palette-view {
6
+ display: flex;
7
+ flex-direction: column;
8
+ align-items: center;
9
+ gap: 1rem;
10
+ padding: 1rem;
11
+ }
12
+ }
@@ -0,0 +1,160 @@
1
+ daga-property-editor {
2
+ .panel {
3
+ width: 24rem;
4
+ }
5
+ .title {
6
+ margin: 0;
7
+ width: 100%;
8
+ font-size: 1rem;
9
+ font-weight: 500;
10
+ }
11
+ .panel-content {
12
+ padding: 1rem;
13
+ }
14
+ .property {
15
+ color: var(--daga-font-color);
16
+ :disabled,
17
+ .disabled {
18
+ color: var(--daga-font-color-disabled);
19
+ }
20
+ input,
21
+ select,
22
+ textarea,
23
+ button,
24
+ .radio-item {
25
+ background-color: var(--daga-property-background-color);
26
+ border: 1px solid var(--daga-property-border-color);
27
+ font-weight: 500;
28
+ font-size: 0.8rem;
29
+ }
30
+ input,
31
+ select,
32
+ textarea {
33
+ border-radius: var(--lux-border-radius);
34
+ box-sizing: border-box;
35
+ font-family: var(--daga-monospace-font-family);
36
+ width: 100%;
37
+ }
38
+ input,
39
+ select {
40
+ height: 1.5rem;
41
+ }
42
+ select {
43
+ padding: 0 0.5rem;
44
+ }
45
+ textarea {
46
+ height: 5rem;
47
+ padding: var(--lux-input-padding, 0rem 0.5rem);
48
+ resize: none;
49
+ }
50
+ .radio-item {
51
+ width: 50%;
52
+ }
53
+ .radio-item.radio-start {
54
+ border-bottom-left-radius: var(--lux-border-radius);
55
+ border-top-left-radius: var(--lux-border-radius);
56
+ }
57
+ .radio-item.radio-end {
58
+ border-bottom-right-radius: var(--lux-border-radius);
59
+ border-top-right-radius: var(--lux-border-radius);
60
+ }
61
+ }
62
+ }
63
+
64
+ daga-object-editor,
65
+ daga-text-list-editor,
66
+ daga-text-map-editor {
67
+ .property {
68
+ padding-top: 0.5rem;
69
+ padding-bottom: 0.5rem;
70
+ .property-name {
71
+ display: flex;
72
+ justify-content: space-between;
73
+ align-items: center;
74
+ height: 1.5rem;
75
+ padding-bottom: 0.5rem;
76
+ margin: 0;
77
+ width: 100%;
78
+ font-size: 0.75rem;
79
+ font-weight: 500;
80
+ text-transform: uppercase;
81
+ }
82
+ }
83
+
84
+ .value-item-input {
85
+ display: flex;
86
+ align-items: stretch;
87
+ flex-direction: row;
88
+ height: 1.5rem;
89
+ gap: 0.5rem;
90
+ }
91
+ .value-item-element {
92
+ @extend .value-item-input;
93
+ margin-bottom: 0.5rem;
94
+ }
95
+ .left-bar {
96
+ padding-left: 1rem;
97
+ border-left: 0.25rem solid var(--daga-property-background-color);
98
+ }
99
+
100
+ lux-input {
101
+ height: 1.5rem;
102
+ flex-grow: 1;
103
+ flex-basis: 0;
104
+ }
105
+ p.value-item {
106
+ @extend lux-input;
107
+ margin: 0;
108
+ overflow: hidden;
109
+ text-overflow: ellipsis;
110
+ }
111
+ .relatively-positioned {
112
+ @extend lux-input;
113
+ position: relative;
114
+ }
115
+ button.property-button {
116
+ .icon {
117
+ background-size: contain;
118
+ margin: 0.25rem;
119
+ width: 1rem;
120
+ height: 1rem;
121
+ }
122
+ .hide-icon {
123
+ background-image: url(../icon/property/hide.svg);
124
+ }
125
+ .close-icon {
126
+ background-image: url(../icon/property/close.svg);
127
+ }
128
+ .add-icon {
129
+ background-image: url(../icon/property/add.svg);
130
+ }
131
+ min-width: 1.5rem;
132
+ min-height: 1.5rem;
133
+ width: 1.5rem;
134
+ height: 1.5rem;
135
+ padding: 0;
136
+ border-radius: 0.25rem;
137
+ border: none;
138
+ background-color: transparent;
139
+ font-size: 1rem;
140
+ }
141
+ button.property-button:hover {
142
+ background-color: var(--daga-property-background-color);
143
+ }
144
+ button.clear {
145
+ position: absolute;
146
+ top: 0;
147
+ right: 0;
148
+ min-width: 1.5rem;
149
+ min-height: 1.5rem;
150
+ width: 1.5rem;
151
+ height: 1.5rem;
152
+ padding: 0;
153
+ border-radius: 0.25rem;
154
+ border: none;
155
+ background-color: transparent;
156
+ background: var(--lux-autocomplete-icon-clear);
157
+ background-size: 0.5rem 0.5rem;
158
+ z-index: 1;
159
+ }
160
+ }
@@ -0,0 +1,152 @@
1
+ @import 'collapse-button.scss';
2
+ @import 'diagram-buttons.scss';
3
+ @import 'diagram.scss';
4
+ @import 'errors.scss';
5
+ @import 'palette.scss';
6
+ @import 'property-editor.scss';
7
+
8
+ :root {
9
+ --daga-font-color: #233154;
10
+ --daga-font-color-disabled: #808080;
11
+ --daga-panel-background-color: #ffffff;
12
+ --daga-panel-secondary-color: #f7f8fc;
13
+ --daga-panel-border-color: #e6e6e6;
14
+ --daga-property-background-color: #f5f8fa;
15
+ --daga-property-border-color: #e1e4ff;
16
+ --daga-error-color: #ff6363;
17
+
18
+ --daga-primary-font-family: 'WonderUnitSans', sans-serif;
19
+ --daga-monospace-font-family: 'DMMono', monospace;
20
+
21
+ --lux-disabled-border-color: var(--daga-property-border-color);
22
+ --lux-disabled-color: var(--daga-property-background-color);
23
+ --lux-input-border-color: var(--daga-property-border-color);
24
+ --lux-radiogroup-color: var(--daga-font-color);
25
+ --lux-radiogroup-selected-background-color: #0095f9;
26
+ --lux-border-radius: 0.25rem;
27
+ --lux-autocomplete-input-padding: 0 0.5rem;
28
+ --lux-autocomplete-icon-clear: url(../icon/action/filter-clear.png) no-repeat
29
+ center;
30
+ --lux-autocomplete-icon-dropdown: url(../icon/action/drop-down-arrow.svg)
31
+ no-repeat center;
32
+ }
33
+
34
+ @font-face {
35
+ font-display: block;
36
+ font-family: 'WonderUnitSans';
37
+ font-style: normal;
38
+ font-weight: normal;
39
+ src:
40
+ url('../fonts/WonderUnitSans-Medium.woff2') format('woff2'),
41
+ url('../fonts/WonderUnitSans-Medium.woff') format('woff'),
42
+ url('../fonts/WonderUnitSans-Medium.ttf') format('truetype');
43
+ font-display: swap;
44
+ }
45
+ @font-face {
46
+ font-display: block;
47
+ font-family: 'DMMono';
48
+ font-style: normal;
49
+ font-weight: normal;
50
+ src:
51
+ url('../fonts/DMMono-Medium.woff2') format('woff2'),
52
+ url('../fonts/DMMono-Medium.woff') format('woff'),
53
+ url('../fonts/DMMono-Medium.ttf') format('truetype');
54
+ font-display: swap;
55
+ }
56
+
57
+ daga-diagram {
58
+ div,
59
+ p,
60
+ li,
61
+ button,
62
+ input,
63
+ option {
64
+ font-family: var(--daga-primary-font-family);
65
+ }
66
+ code {
67
+ font-family: var(--daga-monospace-font-family);
68
+ }
69
+
70
+ .prevent-user-select {
71
+ user-select: none;
72
+ }
73
+
74
+ .top-left {
75
+ left: 0;
76
+ top: 0;
77
+ }
78
+ .top-right {
79
+ right: 0;
80
+ top: 0;
81
+ }
82
+ .bottom-left {
83
+ bottom: 0;
84
+ left: 0;
85
+ }
86
+ .bottom-right {
87
+ bottom: 0;
88
+ right: 0;
89
+ }
90
+ .panel {
91
+ background-color: var(--daga-panel-secondary-color);
92
+ border: 1px solid var(--daga-panel-border-color);
93
+ border-radius: 1rem;
94
+ box-shadow: 0 0 0.5rem rgba(0, 0, 0, 0.1);
95
+ display: flex;
96
+ flex-direction: column;
97
+ margin: 1rem;
98
+ max-height: calc(100% - 2rem);
99
+ max-width: calc(100% - 2rem);
100
+ position: absolute;
101
+ .collapse-button.bottom {
102
+ border-radius: 0.75rem 0.75rem 0 0;
103
+ }
104
+ .collapse-button.top {
105
+ border-radius: 0 0 0.75rem 0.75rem;
106
+ }
107
+ .collapse-button.right {
108
+ border-radius: 0.75rem 0 0 0.75rem;
109
+ }
110
+ .collapse-button.left {
111
+ border-radius: 0 0.75rem 0.75rem 0;
112
+ }
113
+ .panel-content {
114
+ background-color: var(--daga-panel-background-color);
115
+ border: 0;
116
+ border-radius: 1rem;
117
+ flex: 1 1 auto;
118
+ overflow: auto;
119
+ }
120
+ .panel-tabs {
121
+ background-color: var(--daga-panel-secondary-color);
122
+ display: flex;
123
+ flex-direction: row;
124
+ overflow-x: auto;
125
+ padding-top: 0.5rem;
126
+ .panel-tab {
127
+ flex-grow: 1;
128
+ flex-shrink: 0;
129
+ padding: 0.5rem;
130
+ text-align: center;
131
+ user-select: none;
132
+ }
133
+ .panel-tab.current-tab {
134
+ background-color: var(--daga-panel-background-color);
135
+ border-top-left-radius: 0.5rem;
136
+ border-top-right-radius: 0.5rem;
137
+ }
138
+ }
139
+ }
140
+ .panel.bottom {
141
+ flex-flow: column;
142
+ }
143
+ .panel.top {
144
+ flex-flow: column-reverse;
145
+ }
146
+ .panel.right {
147
+ flex-flow: row;
148
+ }
149
+ .panel.left {
150
+ flex-flow: row-reverse;
151
+ }
152
+ }