@visuallyjs/browser-ui-angular 1.2.6 → 1.2.8
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/esm2022/index.mjs +2 -0
- package/esm2022/lib/browser-ui-angular.module.mjs +14 -4
- package/esm2022/lib/charts/area.chart.component.mjs +12 -9
- package/esm2022/lib/charts/bar.chart.component.mjs +12 -9
- package/esm2022/lib/charts/bubble.chart.component.mjs +12 -9
- package/esm2022/lib/charts/column.chart.component.mjs +12 -9
- package/esm2022/lib/charts/line.chart.component.mjs +12 -9
- package/esm2022/lib/charts/pie.chart.component.mjs +12 -9
- package/esm2022/lib/charts/sankey.chart.component.mjs +36 -10
- package/esm2022/lib/charts/scatter.chart.component.mjs +12 -9
- package/esm2022/lib/charts/series.based.chart.component.mjs +43 -10
- package/esm2022/lib/charts/xy.chart.component.mjs +12 -9
- package/esm2022/lib/controls-component.mjs +2 -2
- package/esm2022/lib/edge.property.mappings.inspector.component.mjs +69 -0
- package/esm2022/lib/edge.type.picker.component.mjs +1 -0
- package/esm2022/lib/shape-properties-inspector.component.mjs +255 -0
- package/fesm2022/visuallyjs-browser-ui-angular.mjs +499 -91
- package/fesm2022/visuallyjs-browser-ui-angular.mjs.map +1 -1
- package/index.d.ts +2 -0
- package/lib/browser-ui-angular.module.d.ts +4 -2
- package/lib/charts/area.chart.component.d.ts +7 -7
- package/lib/charts/bar.chart.component.d.ts +7 -7
- package/lib/charts/bubble.chart.component.d.ts +7 -7
- package/lib/charts/column.chart.component.d.ts +8 -7
- package/lib/charts/line.chart.component.d.ts +7 -7
- package/lib/charts/pie.chart.component.d.ts +7 -7
- package/lib/charts/sankey.chart.component.d.ts +12 -9
- package/lib/charts/scatter.chart.component.d.ts +7 -7
- package/lib/charts/series.based.chart.component.d.ts +9 -6
- package/lib/charts/xy.chart.component.d.ts +7 -7
- package/lib/controls-component.d.ts +1 -5
- package/lib/diagram-palette-component.d.ts +1 -1
- package/lib/edge.property.mappings.inspector.component.d.ts +38 -0
- package/lib/palette.component.d.ts +9 -9
- package/lib/shape-properties-inspector.component.d.ts +35 -0
- package/lib/shape.palette.component.d.ts +3 -3
- package/package.json +2 -2
- package/visuallyjs-browser-ui-angular.tgz +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Component, Input, inject } from "@angular/core";
|
|
2
|
+
import { INSPECTOR_CONTEXT_EDGE_PROPERTY_MAPPINGS } from "@visuallyjs/browser-ui";
|
|
3
|
+
import { VisuallyJsService } from "./vjs-service";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./edge.type.picker.component";
|
|
6
|
+
|
|
7
|
+
export class EdgePropertyMappingsInspectorComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.$vjs = inject(VisuallyJsService);
|
|
10
|
+
this._inspector = this.$vjs.inspector;
|
|
11
|
+
}
|
|
12
|
+
get cls() {
|
|
13
|
+
return this.cssClass || "vjs-inspector-section";
|
|
14
|
+
}
|
|
15
|
+
resolveMappings() {
|
|
16
|
+
if (this.mappings) {
|
|
17
|
+
return this.mappings;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
const mappings = this._inspector().getFromContext(INSPECTOR_CONTEXT_EDGE_PROPERTY_MAPPINGS);
|
|
21
|
+
return mappings || this._inspector().$ui.$getEdgePropertyMappings();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
toList(pm) {
|
|
25
|
+
const p = pm.property;
|
|
26
|
+
return Array.isArray(p) ? p : [p];
|
|
27
|
+
}
|
|
28
|
+
getPropertyKey(pm) {
|
|
29
|
+
return this.toList(pm).join(" ");
|
|
30
|
+
}
|
|
31
|
+
getName(pm) {
|
|
32
|
+
return this.getPropertyName ? this.getPropertyName(pm) : pm.name || this.getPropertyKey(pm);
|
|
33
|
+
}
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EdgePropertyMappingsInspectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: EdgePropertyMappingsInspectorComponent, selector: "vjs-edge-properties-inspector", inputs: { getPropertyName: "getPropertyName", showName: "showName", cssClass: "cssClass", mappings: "mappings" }, ngImport: i0, template: `
|
|
36
|
+
@for (pm of resolveMappings(); track getPropertyKey(pm)) {
|
|
37
|
+
<div [class]="cls">
|
|
38
|
+
@if (showName !== false) {
|
|
39
|
+
<div>{{ getName(pm) }}</div>
|
|
40
|
+
}
|
|
41
|
+
<vjs-edge-type [propertyName]="getPropertyKey(pm)"></vjs-edge-type>
|
|
42
|
+
</div>
|
|
43
|
+
}
|
|
44
|
+
`, isInline: true, dependencies: [{ kind: "component", type: i1.EdgeTypePickerComponent, selector: "vjs-edge-type", inputs: ["propertyName", "edgeMappings"], outputs: ["changeEvent"] }] }); }
|
|
45
|
+
}
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EdgePropertyMappingsInspectorComponent, decorators: [{
|
|
47
|
+
type: Component,
|
|
48
|
+
args: [{
|
|
49
|
+
selector: "vjs-edge-properties-inspector",
|
|
50
|
+
template: `
|
|
51
|
+
@for (pm of resolveMappings(); track getPropertyKey(pm)) {
|
|
52
|
+
<div [class]="cls">
|
|
53
|
+
@if (showName !== false) {
|
|
54
|
+
<div>{{ getName(pm) }}</div>
|
|
55
|
+
}
|
|
56
|
+
<vjs-edge-type [propertyName]="getPropertyKey(pm)"></vjs-edge-type>
|
|
57
|
+
</div>
|
|
58
|
+
}
|
|
59
|
+
`
|
|
60
|
+
}]
|
|
61
|
+
}], propDecorators: { getPropertyName: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], showName: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], cssClass: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], mappings: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}] } });
|
|
@@ -21,6 +21,7 @@ export class EdgeTypePickerComponent {
|
|
|
21
21
|
if (inspector != null) {
|
|
22
22
|
this.initialised = true;
|
|
23
23
|
inspector.onChange(() => {
|
|
24
|
+
this.edgeTypePicker.reset();
|
|
24
25
|
this.edgeTypePicker.select(this.propertyName, inspector.getValue(this.propertyName));
|
|
25
26
|
});
|
|
26
27
|
const current = inspector.getValue(this.propertyName) || '';
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { Component, Input, inject, effect, signal } from "@angular/core";
|
|
2
|
+
import { EVENT_CHANGE, isNode, isString } from "@visuallyjs/browser-ui";
|
|
3
|
+
import { VisuallyJsService } from "./vjs-service";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./color.tag.component";
|
|
6
|
+
const MAX_RADIOS = 7;
|
|
7
|
+
const TRUE_FALSE = ["True", "False"];
|
|
8
|
+
|
|
9
|
+
export class ShapePropertiesInspectorComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
|
|
12
|
+
this.vertex = null;
|
|
13
|
+
this.$vjs = inject(VisuallyJsService);
|
|
14
|
+
this._inspector = this.$vjs.inspector;
|
|
15
|
+
this._inspectorRevision = signal(0);
|
|
16
|
+
this._inspectorChangeListener = () => this._inspectorRevision.update(revision => revision + 1);
|
|
17
|
+
this._inspectorChangeEffect = effect(onCleanup => {
|
|
18
|
+
const inspector = this._inspector();
|
|
19
|
+
if (inspector) {
|
|
20
|
+
inspector.bind(EVENT_CHANGE, this._inspectorChangeListener);
|
|
21
|
+
onCleanup(() => inspector.unbind(EVENT_CHANGE, this._inspectorChangeListener));
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
get currentMaxRadios() {
|
|
26
|
+
return this.maxRadios == null ? MAX_RADIOS : this.maxRadios;
|
|
27
|
+
}
|
|
28
|
+
get shapeDef() {
|
|
29
|
+
if (this._inspector() == null || this.vertex == null || !isNode(this.vertex)) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const { type, category } = this.vertex.data;
|
|
33
|
+
if (!type || !category) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const shapeLibrary = this._inspector().$ui.getShapeLibrary();
|
|
37
|
+
const shapeSet = shapeLibrary.getShapeSet(category);
|
|
38
|
+
if (!shapeSet) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return shapeSet.shapes.find(s => s.type === type);
|
|
42
|
+
}
|
|
43
|
+
getBooleanLabel(prop, value) {
|
|
44
|
+
const labels = prop.booleanLabels || TRUE_FALSE;
|
|
45
|
+
return labels[value ? 0 : 1];
|
|
46
|
+
}
|
|
47
|
+
getShapePropertyValueLabel(v) {
|
|
48
|
+
return isString(v) ? v : v.label;
|
|
49
|
+
}
|
|
50
|
+
getShapePropertyValueValue(v) {
|
|
51
|
+
return isString(v) ? v : v.value;
|
|
52
|
+
}
|
|
53
|
+
getPropertyDisplayValue(prop) {
|
|
54
|
+
// Reading this signal makes the rendered value refresh on inspector changes.
|
|
55
|
+
this._inspectorRevision();
|
|
56
|
+
const inspector = this._inspector();
|
|
57
|
+
let value = inspector?.getValue(prop.id);
|
|
58
|
+
if (value == null && this.vertex) {
|
|
59
|
+
value = prop.id.split(".").reduce((current, part) => current == null ? current : current[part], this.vertex.data);
|
|
60
|
+
}
|
|
61
|
+
if (value == null) {
|
|
62
|
+
value = prop.defaultValue;
|
|
63
|
+
}
|
|
64
|
+
if (value == null) {
|
|
65
|
+
return "";
|
|
66
|
+
}
|
|
67
|
+
if (typeof value === "object") {
|
|
68
|
+
return JSON.stringify(value) || "";
|
|
69
|
+
}
|
|
70
|
+
return String(value);
|
|
71
|
+
}
|
|
72
|
+
isBoolean(prop) {
|
|
73
|
+
return prop.type === 'boolean';
|
|
74
|
+
}
|
|
75
|
+
hasValues(prop) {
|
|
76
|
+
return prop.values && prop.values.length > 0;
|
|
77
|
+
}
|
|
78
|
+
useRadio(prop) {
|
|
79
|
+
return this.hasValues(prop) && prop.editor !== 'select' && prop.values.length <= this.currentMaxRadios;
|
|
80
|
+
}
|
|
81
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShapePropertiesInspectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
82
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ShapePropertiesInspectorComponent, selector: "vjs-shape-properties-inspector", inputs: { vertex: "vertex", maxRadios: "maxRadios" }, ngImport: i0, template: `
|
|
83
|
+
@if (shapeDef && shapeDef.properties) {
|
|
84
|
+
@for (prop of shapeDef.properties; track prop.id) {
|
|
85
|
+
|
|
86
|
+
<div class="vjs-inspector-field">
|
|
87
|
+
@if (prop.readOnly || !isBoolean(prop) || prop.editor === 'select' || prop.editor === 'radio') {
|
|
88
|
+
<label class="vjs-inspector-property-label">{{ prop.label || prop.id }}</label>
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
@if (prop.readOnly) {
|
|
92
|
+
<output class="vjs-inspector-property-value">{{ getPropertyDisplayValue(prop) }}</output>
|
|
93
|
+
} @else if (prop.type === 'string') {
|
|
94
|
+
@if (hasValues(prop)) {
|
|
95
|
+
@if (useRadio(prop)) {
|
|
96
|
+
<div class="vjs-radio-group">
|
|
97
|
+
@for (v of prop.values; track getShapePropertyValueLabel(v)) {
|
|
98
|
+
<label>
|
|
99
|
+
<input type="radio" [name]="prop.id" [attr.vjs-att]="prop.id" [value]="getShapePropertyValueValue(v)" /> {{ getShapePropertyValueLabel(v) }}
|
|
100
|
+
</label>
|
|
101
|
+
}
|
|
102
|
+
</div>
|
|
103
|
+
} @else {
|
|
104
|
+
<select [attr.vjs-att]="prop.id">
|
|
105
|
+
@for (v of prop.values; track getShapePropertyValueLabel(v)) {
|
|
106
|
+
<option [value]="getShapePropertyValueValue(v)">{{ getShapePropertyValueLabel(v) }}</option>
|
|
107
|
+
}
|
|
108
|
+
</select>
|
|
109
|
+
}
|
|
110
|
+
} @else {
|
|
111
|
+
<input type="text" [attr.vjs-att]="prop.id" [placeholder]="prop.description" />
|
|
112
|
+
}
|
|
113
|
+
} @else if (prop.type === 'text') {
|
|
114
|
+
<textarea rows="5" [attr.vjs-att]="prop.id" [placeholder]="prop.description"></textarea>
|
|
115
|
+
} @else if (prop.type === 'number') {
|
|
116
|
+
@if (hasValues(prop)) {
|
|
117
|
+
@if (useRadio(prop)) {
|
|
118
|
+
<div class="vjs-radio-group">
|
|
119
|
+
@for (v of prop.values; track getShapePropertyValueLabel(v)) {
|
|
120
|
+
<label>
|
|
121
|
+
<input type="radio" [name]="prop.id" [attr.vjs-att]="prop.id" [value]="getShapePropertyValueValue(v)" /> {{ getShapePropertyValueLabel(v) }}
|
|
122
|
+
</label>
|
|
123
|
+
}
|
|
124
|
+
</div>
|
|
125
|
+
} @else {
|
|
126
|
+
<select [attr.vjs-att]="prop.id">
|
|
127
|
+
@for (v of prop.values; track getShapePropertyValueLabel(v)) {
|
|
128
|
+
<option [value]="getShapePropertyValueValue(v)">{{ getShapePropertyValueLabel(v) }}</option>
|
|
129
|
+
}
|
|
130
|
+
</select>
|
|
131
|
+
}
|
|
132
|
+
} @else {
|
|
133
|
+
<input type="number" [attr.vjs-att]="prop.id" [placeholder]="prop.description" [attr.min]="prop.min" [attr.max]="prop.max" />
|
|
134
|
+
}
|
|
135
|
+
} @else if (prop.type === 'color') {
|
|
136
|
+
<vjs-color [propertyName]="prop.id"></vjs-color>
|
|
137
|
+
} @else if (isBoolean(prop)) {
|
|
138
|
+
@if (prop.editor === 'select') {
|
|
139
|
+
<select [attr.vjs-att]="prop.id" vjs-datatype="boolean">
|
|
140
|
+
<option value=""></option>
|
|
141
|
+
<option value="true">{{ getBooleanLabel(prop, true) }}</option>
|
|
142
|
+
<option value="false">{{ getBooleanLabel(prop, false) }}</option>
|
|
143
|
+
</select>
|
|
144
|
+
} @else if (prop.editor === 'radio') {
|
|
145
|
+
<div class="vjs-radio-group">
|
|
146
|
+
<label><input type="radio" [name]="prop.id" [attr.vjs-att]="prop.id" vjs-datatype="boolean" value="true" /><span>{{ getBooleanLabel(prop, true) }}</span></label>
|
|
147
|
+
<label><input type="radio" [name]="prop.id" [attr.vjs-att]="prop.id" vjs-datatype="boolean" value="false" /><span>{{ getBooleanLabel(prop, false) }}</span></label>
|
|
148
|
+
</div>
|
|
149
|
+
} @else {
|
|
150
|
+
<label>
|
|
151
|
+
<input type="checkbox" vjs-datatype="boolean" [attr.vjs-att]="prop.id" /> {{ prop.label || prop.id }}
|
|
152
|
+
</label>
|
|
153
|
+
}
|
|
154
|
+
} @else {
|
|
155
|
+
<input type="text" [attr.vjs-att]="prop.id" [placeholder]="prop.description" />
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
@if (prop.description) {
|
|
159
|
+
<div class="vjs-field-desc">{{ prop.description }}</div>
|
|
160
|
+
}
|
|
161
|
+
</div>
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
`, isInline: true, styles: [":host{display:contents}\n"], dependencies: [{ kind: "component", type: i1.ColorPickerComponent, selector: "vjs-color", inputs: ["propertyName", "maxColors"], outputs: ["changeEvent"] }] }); }
|
|
165
|
+
}
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShapePropertiesInspectorComponent, decorators: [{
|
|
167
|
+
type: Component,
|
|
168
|
+
args: [{ selector: 'vjs-shape-properties-inspector', template: `
|
|
169
|
+
@if (shapeDef && shapeDef.properties) {
|
|
170
|
+
@for (prop of shapeDef.properties; track prop.id) {
|
|
171
|
+
|
|
172
|
+
<div class="vjs-inspector-field">
|
|
173
|
+
@if (prop.readOnly || !isBoolean(prop) || prop.editor === 'select' || prop.editor === 'radio') {
|
|
174
|
+
<label class="vjs-inspector-property-label">{{ prop.label || prop.id }}</label>
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
@if (prop.readOnly) {
|
|
178
|
+
<output class="vjs-inspector-property-value">{{ getPropertyDisplayValue(prop) }}</output>
|
|
179
|
+
} @else if (prop.type === 'string') {
|
|
180
|
+
@if (hasValues(prop)) {
|
|
181
|
+
@if (useRadio(prop)) {
|
|
182
|
+
<div class="vjs-radio-group">
|
|
183
|
+
@for (v of prop.values; track getShapePropertyValueLabel(v)) {
|
|
184
|
+
<label>
|
|
185
|
+
<input type="radio" [name]="prop.id" [attr.vjs-att]="prop.id" [value]="getShapePropertyValueValue(v)" /> {{ getShapePropertyValueLabel(v) }}
|
|
186
|
+
</label>
|
|
187
|
+
}
|
|
188
|
+
</div>
|
|
189
|
+
} @else {
|
|
190
|
+
<select [attr.vjs-att]="prop.id">
|
|
191
|
+
@for (v of prop.values; track getShapePropertyValueLabel(v)) {
|
|
192
|
+
<option [value]="getShapePropertyValueValue(v)">{{ getShapePropertyValueLabel(v) }}</option>
|
|
193
|
+
}
|
|
194
|
+
</select>
|
|
195
|
+
}
|
|
196
|
+
} @else {
|
|
197
|
+
<input type="text" [attr.vjs-att]="prop.id" [placeholder]="prop.description" />
|
|
198
|
+
}
|
|
199
|
+
} @else if (prop.type === 'text') {
|
|
200
|
+
<textarea rows="5" [attr.vjs-att]="prop.id" [placeholder]="prop.description"></textarea>
|
|
201
|
+
} @else if (prop.type === 'number') {
|
|
202
|
+
@if (hasValues(prop)) {
|
|
203
|
+
@if (useRadio(prop)) {
|
|
204
|
+
<div class="vjs-radio-group">
|
|
205
|
+
@for (v of prop.values; track getShapePropertyValueLabel(v)) {
|
|
206
|
+
<label>
|
|
207
|
+
<input type="radio" [name]="prop.id" [attr.vjs-att]="prop.id" [value]="getShapePropertyValueValue(v)" /> {{ getShapePropertyValueLabel(v) }}
|
|
208
|
+
</label>
|
|
209
|
+
}
|
|
210
|
+
</div>
|
|
211
|
+
} @else {
|
|
212
|
+
<select [attr.vjs-att]="prop.id">
|
|
213
|
+
@for (v of prop.values; track getShapePropertyValueLabel(v)) {
|
|
214
|
+
<option [value]="getShapePropertyValueValue(v)">{{ getShapePropertyValueLabel(v) }}</option>
|
|
215
|
+
}
|
|
216
|
+
</select>
|
|
217
|
+
}
|
|
218
|
+
} @else {
|
|
219
|
+
<input type="number" [attr.vjs-att]="prop.id" [placeholder]="prop.description" [attr.min]="prop.min" [attr.max]="prop.max" />
|
|
220
|
+
}
|
|
221
|
+
} @else if (prop.type === 'color') {
|
|
222
|
+
<vjs-color [propertyName]="prop.id"></vjs-color>
|
|
223
|
+
} @else if (isBoolean(prop)) {
|
|
224
|
+
@if (prop.editor === 'select') {
|
|
225
|
+
<select [attr.vjs-att]="prop.id" vjs-datatype="boolean">
|
|
226
|
+
<option value=""></option>
|
|
227
|
+
<option value="true">{{ getBooleanLabel(prop, true) }}</option>
|
|
228
|
+
<option value="false">{{ getBooleanLabel(prop, false) }}</option>
|
|
229
|
+
</select>
|
|
230
|
+
} @else if (prop.editor === 'radio') {
|
|
231
|
+
<div class="vjs-radio-group">
|
|
232
|
+
<label><input type="radio" [name]="prop.id" [attr.vjs-att]="prop.id" vjs-datatype="boolean" value="true" /><span>{{ getBooleanLabel(prop, true) }}</span></label>
|
|
233
|
+
<label><input type="radio" [name]="prop.id" [attr.vjs-att]="prop.id" vjs-datatype="boolean" value="false" /><span>{{ getBooleanLabel(prop, false) }}</span></label>
|
|
234
|
+
</div>
|
|
235
|
+
} @else {
|
|
236
|
+
<label>
|
|
237
|
+
<input type="checkbox" vjs-datatype="boolean" [attr.vjs-att]="prop.id" /> {{ prop.label || prop.id }}
|
|
238
|
+
</label>
|
|
239
|
+
}
|
|
240
|
+
} @else {
|
|
241
|
+
<input type="text" [attr.vjs-att]="prop.id" [placeholder]="prop.description" />
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
@if (prop.description) {
|
|
245
|
+
<div class="vjs-field-desc">{{ prop.description }}</div>
|
|
246
|
+
}
|
|
247
|
+
</div>
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
`, styles: [":host{display:contents}\n"] }]
|
|
251
|
+
}], propDecorators: { vertex: [{
|
|
252
|
+
type: Input
|
|
253
|
+
}], maxRadios: [{
|
|
254
|
+
type: Input
|
|
255
|
+
}] } });
|