@node-projects/web-component-designer 0.0.244 → 0.0.245
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/dist/elements/helper/GridHelper.js +4 -3
- package/dist/elements/helper/TransformHelper.d.ts +1 -0
- package/dist/elements/helper/TransformHelper.js +20 -2
- package/dist/elements/services/placementService/FlexBoxPlacementService.js +36 -12
- package/dist/elements/services/propertiesService/services/CssProperties.json +48 -6
- package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.js +7 -0
- package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.js +9 -1
- package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.js +7 -0
- package/dist/elements/widgets/designerView/overlayLayerView.d.ts +1 -0
- package/dist/elements/widgets/designerView/overlayLayerView.js +9 -0
- package/package.json +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { getDesignerCanvasNormalizedTransformedCornerDOMPoints } from "./TransformHelper.js";
|
|
1
2
|
export function CalculateGridInformation(designItem) {
|
|
2
3
|
//todo:
|
|
3
4
|
//same name should combine columns/rows
|
|
4
5
|
let itemRect = designItem.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(designItem.element);
|
|
5
|
-
|
|
6
|
+
let transformedCornerPoints = getDesignerCanvasNormalizedTransformedCornerDOMPoints(designItem.element, null, designItem.instanceServiceContainer.designerCanvas);
|
|
6
7
|
const computedStyle = getComputedStyle(designItem.element);
|
|
7
8
|
const rows = computedStyle.gridTemplateRows.split(' ');
|
|
8
9
|
const columns = computedStyle.gridTemplateColumns.split(' ');
|
|
@@ -12,8 +13,8 @@ export function CalculateGridInformation(designItem) {
|
|
|
12
13
|
let xGap = 0;
|
|
13
14
|
let yGap = 0;
|
|
14
15
|
let rw = 0;
|
|
15
|
-
let xOffset =
|
|
16
|
-
let yOffset =
|
|
16
|
+
let xOffset = transformedCornerPoints[0].x;
|
|
17
|
+
let yOffset = transformedCornerPoints[0].y;
|
|
17
18
|
let gridA = null;
|
|
18
19
|
if (computedStyle.gridTemplateAreas && computedStyle.gridTemplateAreas !== 'none')
|
|
19
20
|
gridA = computedStyle.gridTemplateAreas.split('\"');
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IPoint } from "../../interfaces/IPoint.js";
|
|
2
2
|
import { IDesignerCanvas } from "../widgets/designerView/IDesignerCanvas.js";
|
|
3
|
+
export declare function getElementCombinedTransform(element: HTMLElement): DOMMatrix;
|
|
3
4
|
export declare function combineTransforms(element: HTMLElement, actualTransforms: string, requestedTransformation: string): void;
|
|
4
5
|
export declare function getDomMatrix(element: HTMLElement): DOMMatrix;
|
|
5
6
|
export declare function transformPointByInverseMatrix(point: DOMPoint, matrix: DOMMatrix): DOMPoint;
|
|
@@ -5,6 +5,24 @@ let identityMatrix = [
|
|
|
5
5
|
0, 0, 1, 0,
|
|
6
6
|
0, 0, 0, 1
|
|
7
7
|
];
|
|
8
|
+
export function getElementCombinedTransform(element) {
|
|
9
|
+
//https://www.w3.org/TR/css-transforms-2/#ctm
|
|
10
|
+
let s = getComputedStyle(element);
|
|
11
|
+
let m = new DOMMatrix();
|
|
12
|
+
if (s.translate != 'none') {
|
|
13
|
+
m = m.multiply(new DOMMatrix('translate(' + s.translate + ')'));
|
|
14
|
+
}
|
|
15
|
+
if (s.rotate != 'none') {
|
|
16
|
+
m = m.multiply(new DOMMatrix('rotate(' + s.rotate + ')'));
|
|
17
|
+
}
|
|
18
|
+
if (s.scale != 'none') {
|
|
19
|
+
m = m.multiply(new DOMMatrix('scale(' + s.rotate + ')'));
|
|
20
|
+
}
|
|
21
|
+
if (s.transform != 'none') {
|
|
22
|
+
m = m.multiply(new DOMMatrix(s.transform));
|
|
23
|
+
}
|
|
24
|
+
return m;
|
|
25
|
+
}
|
|
8
26
|
export function combineTransforms(element, actualTransforms, requestedTransformation) {
|
|
9
27
|
if (actualTransforms == null || actualTransforms == '') {
|
|
10
28
|
element.style.transform = requestedTransformation;
|
|
@@ -100,8 +118,8 @@ export function getResultingTransformationBetweenElementAndAllAncestors(element,
|
|
|
100
118
|
let originalElementAndAllParentsMultipliedMatrix;
|
|
101
119
|
while (actualElement != ancestor) {
|
|
102
120
|
const newElement = getParentElementIncludingSlots(actualElement);
|
|
103
|
-
actualElementMatrix =
|
|
104
|
-
newElementMatrix =
|
|
121
|
+
actualElementMatrix = getElementCombinedTransform(actualElement);
|
|
122
|
+
newElementMatrix = getElementCombinedTransform(newElement);
|
|
105
123
|
newElementMatrix.m41 = newElementMatrix.m42 = 0;
|
|
106
124
|
if (actualElement == element) {
|
|
107
125
|
originalElementAndAllParentsMultipliedMatrix = actualElementMatrix.multiply(newElementMatrix);
|
|
@@ -44,23 +44,31 @@ export class FlexBoxPlacementService {
|
|
|
44
44
|
const pos = placementView.getNormalizedEventCoordinates(event);
|
|
45
45
|
const style = getComputedStyle(container.element);
|
|
46
46
|
const childrenWithPos = Array.from(container.children()).filter(x => !x.isEmptyTextNode).map(x => [x, placementView.getNormalizedElementCoordinates(x.element)]);
|
|
47
|
-
if (style.flexDirection == 'row') {
|
|
47
|
+
if (style.flexDirection == 'row' || style.flexDirection == 'row-reverse') {
|
|
48
48
|
childrenWithPos.sort(x => x[1].x);
|
|
49
49
|
let elBefore = null;
|
|
50
50
|
for (let c of childrenWithPos) {
|
|
51
51
|
if (c[1].x + c[1].width / 2 < pos.x) {
|
|
52
52
|
elBefore = c;
|
|
53
|
+
if (style.flexDirection == 'row-reverse')
|
|
54
|
+
break;
|
|
53
55
|
}
|
|
54
56
|
}
|
|
55
57
|
let posBefore = childrenWithPos.indexOf(elBefore);
|
|
56
58
|
let posDrag = childrenWithPos.indexOf(childrenWithPos.find(x => x[0] == items[0]));
|
|
57
59
|
if (elBefore && elBefore[0] != items[0]) {
|
|
58
|
-
if (posBefore
|
|
60
|
+
if (style.flexDirection == 'row-reverse' && posBefore - 1 === posDrag)
|
|
61
|
+
return;
|
|
62
|
+
if (style.flexDirection == 'row' && posBefore + 1 === posDrag)
|
|
59
63
|
return;
|
|
60
64
|
const sel = [...container.instanceServiceContainer.selectionService.selectedElements];
|
|
61
65
|
let cg = items[0].openGroup('move in flexbox');
|
|
62
|
-
items[0].
|
|
63
|
-
|
|
66
|
+
if (items[0].parent)
|
|
67
|
+
items[0].remove();
|
|
68
|
+
if (style.flexDirection == 'row-reverse')
|
|
69
|
+
elBefore[0].insertAdjacentElement(items[0], 'beforebegin');
|
|
70
|
+
else
|
|
71
|
+
elBefore[0].insertAdjacentElement(items[0], 'afterend');
|
|
64
72
|
cg.commit();
|
|
65
73
|
container.instanceServiceContainer.selectionService.setSelectedElements(sel);
|
|
66
74
|
}
|
|
@@ -69,29 +77,41 @@ export class FlexBoxPlacementService {
|
|
|
69
77
|
return;
|
|
70
78
|
const sel = [...container.instanceServiceContainer.selectionService.selectedElements];
|
|
71
79
|
let cg = items[0].openGroup('move in flexbox');
|
|
72
|
-
items[0].
|
|
73
|
-
|
|
80
|
+
if (items[0].parent)
|
|
81
|
+
items[0].remove();
|
|
82
|
+
if (style.flexDirection == 'row-reverse')
|
|
83
|
+
container.insertChild(items[0]);
|
|
84
|
+
else
|
|
85
|
+
container.insertChild(items[0], 0);
|
|
74
86
|
cg.commit();
|
|
75
87
|
container.instanceServiceContainer.selectionService.setSelectedElements(sel);
|
|
76
88
|
}
|
|
77
89
|
}
|
|
78
|
-
else if (style.flexDirection == 'column') {
|
|
90
|
+
else if (style.flexDirection == 'column' || style.flexDirection == 'column-reverse') {
|
|
79
91
|
childrenWithPos.sort(x => x[1].y);
|
|
80
92
|
let elBefore = null;
|
|
81
93
|
for (let c of childrenWithPos) {
|
|
82
94
|
if (c[1].y + c[1].height / 2 < pos.y) {
|
|
83
95
|
elBefore = c;
|
|
96
|
+
if (style.flexDirection == 'column-reverse')
|
|
97
|
+
break;
|
|
84
98
|
}
|
|
85
99
|
}
|
|
86
100
|
let posBefore = childrenWithPos.indexOf(elBefore);
|
|
87
101
|
let posDrag = childrenWithPos.indexOf(childrenWithPos.find(x => x[0] == items[0]));
|
|
88
102
|
if (elBefore && elBefore[0] != items[0]) {
|
|
89
|
-
if (posBefore
|
|
103
|
+
if (style.flexDirection == 'column-reverse' && posBefore - 1 === posDrag)
|
|
104
|
+
return;
|
|
105
|
+
if (style.flexDirection == 'column' && posBefore + 1 === posDrag)
|
|
90
106
|
return;
|
|
91
107
|
const sel = [...container.instanceServiceContainer.selectionService.selectedElements];
|
|
92
108
|
let cg = items[0].openGroup('move in flexbox');
|
|
93
|
-
items[0].
|
|
94
|
-
|
|
109
|
+
if (items[0].parent)
|
|
110
|
+
items[0].remove();
|
|
111
|
+
if (style.flexDirection == 'column-reverse')
|
|
112
|
+
elBefore[0].insertAdjacentElement(items[0], 'beforebegin');
|
|
113
|
+
else
|
|
114
|
+
elBefore[0].insertAdjacentElement(items[0], 'afterend');
|
|
95
115
|
cg.commit();
|
|
96
116
|
container.instanceServiceContainer.selectionService.setSelectedElements(sel);
|
|
97
117
|
}
|
|
@@ -100,8 +120,12 @@ export class FlexBoxPlacementService {
|
|
|
100
120
|
return;
|
|
101
121
|
const sel = [...container.instanceServiceContainer.selectionService.selectedElements];
|
|
102
122
|
let cg = items[0].openGroup('move in flexbox');
|
|
103
|
-
items[0].
|
|
104
|
-
|
|
123
|
+
if (items[0].parent)
|
|
124
|
+
items[0].remove();
|
|
125
|
+
if (style.flexDirection == 'column-reverse')
|
|
126
|
+
container.insertChild(items[0]);
|
|
127
|
+
else
|
|
128
|
+
container.insertChild(items[0], 0);
|
|
105
129
|
cg.commit();
|
|
106
130
|
container.instanceServiceContainer.selectionService.setSelectedElements(sel);
|
|
107
131
|
}
|
|
@@ -3,7 +3,26 @@
|
|
|
3
3
|
"type": "color"
|
|
4
4
|
},
|
|
5
5
|
"additiveSymbols": {},
|
|
6
|
-
"alignContent": {
|
|
6
|
+
"alignContent": {
|
|
7
|
+
"type": "list",
|
|
8
|
+
"values": [
|
|
9
|
+
"start",
|
|
10
|
+
"end",
|
|
11
|
+
"flex-start",
|
|
12
|
+
"flex-end",
|
|
13
|
+
"center",
|
|
14
|
+
"normal",
|
|
15
|
+
"baseline",
|
|
16
|
+
"first baseline",
|
|
17
|
+
"last baseline",
|
|
18
|
+
"space-between",
|
|
19
|
+
"space-around",
|
|
20
|
+
"space-evenly",
|
|
21
|
+
"stretch",
|
|
22
|
+
"safe",
|
|
23
|
+
"unsafe"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
7
26
|
"alignItems": {},
|
|
8
27
|
"alignSelf": {},
|
|
9
28
|
"alignmentBaseline": {},
|
|
@@ -229,11 +248,30 @@
|
|
|
229
248
|
"filter": {},
|
|
230
249
|
"flex": {},
|
|
231
250
|
"flexBasis": {},
|
|
232
|
-
"flexDirection": {
|
|
251
|
+
"flexDirection": {
|
|
252
|
+
"type": "list",
|
|
253
|
+
"values": [
|
|
254
|
+
"row",
|
|
255
|
+
"column",
|
|
256
|
+
"row-reverse",
|
|
257
|
+
"column-reverse"
|
|
258
|
+
]
|
|
259
|
+
},
|
|
233
260
|
"flexFlow": {},
|
|
234
|
-
"flexGrow": {
|
|
235
|
-
|
|
236
|
-
|
|
261
|
+
"flexGrow": {
|
|
262
|
+
"type": "number"
|
|
263
|
+
},
|
|
264
|
+
"flexShrink": {
|
|
265
|
+
"type": "number"
|
|
266
|
+
},
|
|
267
|
+
"flexWrap": {
|
|
268
|
+
"type": "list",
|
|
269
|
+
"values": [
|
|
270
|
+
"nowrap",
|
|
271
|
+
"wrap",
|
|
272
|
+
"wrap-reverse"
|
|
273
|
+
]
|
|
274
|
+
},
|
|
237
275
|
"float": {},
|
|
238
276
|
"floodColor": {
|
|
239
277
|
"type": "color"
|
|
@@ -413,7 +451,11 @@
|
|
|
413
451
|
"pointerEvents": {},
|
|
414
452
|
"position": {
|
|
415
453
|
"type": "list",
|
|
416
|
-
"values": [
|
|
454
|
+
"values": [
|
|
455
|
+
"static",
|
|
456
|
+
"relative",
|
|
457
|
+
"absolute"
|
|
458
|
+
]
|
|
417
459
|
},
|
|
418
460
|
"prefix": {},
|
|
419
461
|
"quotes": {},
|
|
@@ -11,6 +11,7 @@ export declare abstract class AbstractExtensionBase {
|
|
|
11
11
|
constructor(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas);
|
|
12
12
|
protected _removeAllOverlays(): void;
|
|
13
13
|
protected _addOverlay(element: SVGGraphicsElement, overlayLayer?: OverlayLayer): void;
|
|
14
|
+
protected _drawGroup(className?: string, group?: SVGGElement, overlayLayer?: OverlayLayer): SVGGElement;
|
|
14
15
|
protected _drawLine(x1: number, y1: number, x2: number, y2: number, className?: string, line?: SVGLineElement, overlayLayer?: OverlayLayer): SVGLineElement;
|
|
15
16
|
protected _drawCircle(x: number, y: number, radius: number, className?: string, circle?: SVGCircleElement, overlayLayer?: OverlayLayer): SVGCircleElement;
|
|
16
17
|
protected _drawRect(x: number, y: number, w: number, h: number, className?: string, rect?: SVGRectElement, overlayLayer?: OverlayLayer): SVGRectElement;
|
|
@@ -24,6 +24,13 @@ export class AbstractExtensionBase {
|
|
|
24
24
|
this.overlayLayerView.addOverlay(this.constructor.name, element, overlayLayer);
|
|
25
25
|
this.overlays.push(element);
|
|
26
26
|
}
|
|
27
|
+
_drawGroup(className, group, overlayLayer) {
|
|
28
|
+
const newGroup = this.overlayLayerView.drawGroup(this.constructor.name, className, group, overlayLayer);
|
|
29
|
+
if (!group) {
|
|
30
|
+
this.overlays.push(newGroup);
|
|
31
|
+
}
|
|
32
|
+
return newGroup;
|
|
33
|
+
}
|
|
27
34
|
_drawLine(x1, y1, x2, y2, className, line, overlayLayer) {
|
|
28
35
|
const newLine = this.overlayLayerView.drawLine(this.constructor.name, x1, y1, x2, y2, className, line, overlayLayer);
|
|
29
36
|
if (!line) {
|
|
@@ -6,6 +6,7 @@ export declare class DisplayGridExtension extends AbstractExtension {
|
|
|
6
6
|
private _cells;
|
|
7
7
|
private _texts;
|
|
8
8
|
private _gaps;
|
|
9
|
+
private _group;
|
|
9
10
|
private gridInformation;
|
|
10
11
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
11
12
|
extend(event?: Event): void;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { CalculateGridInformation } from "../../../../helper/GridHelper.js";
|
|
2
|
+
import { getElementCombinedTransform } from "../../../../helper/TransformHelper.js";
|
|
2
3
|
import { AbstractExtension } from '../AbstractExtension.js';
|
|
3
4
|
import { OverlayLayer } from "../OverlayLayer.js";
|
|
4
5
|
export class DisplayGridExtension extends AbstractExtension {
|
|
5
6
|
_cells;
|
|
6
7
|
_texts;
|
|
7
8
|
_gaps;
|
|
9
|
+
_group;
|
|
8
10
|
gridInformation;
|
|
9
11
|
constructor(extensionManager, designerView, extendedItem) {
|
|
10
12
|
super(extensionManager, designerView, extendedItem);
|
|
@@ -16,17 +18,23 @@ export class DisplayGridExtension extends AbstractExtension {
|
|
|
16
18
|
refresh(event) {
|
|
17
19
|
this.gridInformation = CalculateGridInformation(this.extendedItem);
|
|
18
20
|
let cells = this.gridInformation.cells;
|
|
21
|
+
this._group = this._drawGroup(null, this._group, OverlayLayer.Background);
|
|
22
|
+
this._group.style.transform = getElementCombinedTransform(this.extendedItem.element).toString();
|
|
23
|
+
this._group.style.transformOrigin = '0 0';
|
|
24
|
+
this._group.style.transformBox = 'fill-box';
|
|
19
25
|
if (cells[0][0] && !isNaN(cells[0][0].height) && !isNaN(cells[0][0].width)) {
|
|
20
26
|
if (this.gridInformation.cells.length != this._cells.length || this.gridInformation.cells[0].length != this._cells[0].length)
|
|
21
27
|
this._initSVGArrays();
|
|
22
28
|
//draw gaps
|
|
23
29
|
this.gridInformation.gaps.forEach((gap, i) => {
|
|
24
|
-
this._gaps[i] = this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-gap', this._gaps[i], OverlayLayer.
|
|
30
|
+
this._gaps[i] = this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-gap', this._gaps[i], OverlayLayer.Background);
|
|
31
|
+
this._group.appendChild(this._gaps[i]);
|
|
25
32
|
});
|
|
26
33
|
//draw cells
|
|
27
34
|
cells.forEach((row, i) => {
|
|
28
35
|
row.forEach((cell, j) => {
|
|
29
36
|
this._cells[i][j] = this._drawRect(cell.x, cell.y, cell.width, cell.height, 'svg-grid', this._cells[i][j], OverlayLayer.Background);
|
|
37
|
+
this._group.appendChild(this._cells[i][j]);
|
|
30
38
|
if (cell.name) {
|
|
31
39
|
this._texts[i][j] = this._drawText(cell.name, cell.x, cell.y, 'svg-grid-area', this._texts[i][j], OverlayLayer.Background);
|
|
32
40
|
this._texts[i][j].setAttribute("dominant-baseline", "hanging");
|
package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare class EditGridColumnRowSizesExtension extends AbstractExtension {
|
|
|
8
8
|
private _resizers;
|
|
9
9
|
private _initalPos;
|
|
10
10
|
private _initialSizes;
|
|
11
|
+
private _group;
|
|
11
12
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
12
13
|
extend(event?: Event): void;
|
|
13
14
|
refresh(event?: Event): void;
|
package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EventNames } from "../../../../../enums/EventNames.js";
|
|
2
2
|
import { convertCssUnit, convertCssUnitToPixel, getCssUnit } from "../../../../helper/CssUnitConverter.js";
|
|
3
3
|
import { CalculateGridInformation } from "../../../../helper/GridHelper.js";
|
|
4
|
+
import { getElementCombinedTransform } from "../../../../helper/TransformHelper.js";
|
|
4
5
|
import { AbstractExtension } from '../AbstractExtension.js';
|
|
5
6
|
import { OverlayLayer } from "../OverlayLayer.js";
|
|
6
7
|
export class EditGridColumnRowSizesExtension extends AbstractExtension {
|
|
@@ -8,6 +9,7 @@ export class EditGridColumnRowSizesExtension extends AbstractExtension {
|
|
|
8
9
|
_resizers = [];
|
|
9
10
|
_initalPos;
|
|
10
11
|
_initialSizes;
|
|
12
|
+
_group;
|
|
11
13
|
constructor(extensionManager, designerView, extendedItem) {
|
|
12
14
|
super(extensionManager, designerView, extendedItem);
|
|
13
15
|
}
|
|
@@ -16,6 +18,10 @@ export class EditGridColumnRowSizesExtension extends AbstractExtension {
|
|
|
16
18
|
}
|
|
17
19
|
refresh(event) {
|
|
18
20
|
this.gridInformation = CalculateGridInformation(this.extendedItem);
|
|
21
|
+
this._group = this._drawGroup(null, this._group, OverlayLayer.Background);
|
|
22
|
+
this._group.style.transform = getElementCombinedTransform(this.extendedItem.element).toString();
|
|
23
|
+
this._group.style.transformOrigin = '0 0';
|
|
24
|
+
this._group.style.transformBox = 'fill-box';
|
|
19
25
|
this.gridInformation.gaps.forEach((gap, i) => {
|
|
20
26
|
if (gap.width < 3) {
|
|
21
27
|
gap.width = 3;
|
|
@@ -26,6 +32,7 @@ export class EditGridColumnRowSizesExtension extends AbstractExtension {
|
|
|
26
32
|
gap.y--;
|
|
27
33
|
}
|
|
28
34
|
let rect = this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-resizer-' + gap.type, this._resizers[i], OverlayLayer.Normal);
|
|
35
|
+
this._group.appendChild(rect);
|
|
29
36
|
if (!this._resizers[i]) {
|
|
30
37
|
this._resizers[i] = rect;
|
|
31
38
|
rect.addEventListener(EventNames.PointerDown, event => this._pointerActionTypeResize(event, rect, gap));
|
|
@@ -20,6 +20,7 @@ export declare class OverlayLayerView extends BaseCustomWebComponentConstructorA
|
|
|
20
20
|
removeAllOverlays(): void;
|
|
21
21
|
createPoint(): DOMPointInit;
|
|
22
22
|
elementFromPoint(x: number, y: number): Element;
|
|
23
|
+
drawGroup(overlaySource: string, className?: string, group?: SVGGElement, overlayLayer?: OverlayLayer): SVGGElement;
|
|
23
24
|
drawLine(overlaySource: string, x1: number, y1: number, x2: number, y2: number, className?: string, line?: SVGLineElement, overlayLayer?: OverlayLayer): SVGLineElement;
|
|
24
25
|
drawCircle(overlaySource: string, x: number, y: number, radius: number, className?: string, circle?: SVGCircleElement, overlayLayer?: OverlayLayer): SVGCircleElement;
|
|
25
26
|
drawRect(overlaySource: string, x: number, y: number, w: number, h: number, className?: string, rect?: SVGRectElement, overlayLayer?: OverlayLayer): SVGRectElement;
|
|
@@ -101,6 +101,15 @@ export class OverlayLayerView extends BaseCustomWebComponentConstructorAppend {
|
|
|
101
101
|
//@ts-ignore
|
|
102
102
|
return this.shadowRoot.elementFromPoint(x, y);
|
|
103
103
|
}
|
|
104
|
+
drawGroup(overlaySource, className, group, overlayLayer) {
|
|
105
|
+
if (!group) {
|
|
106
|
+
group = document.createElementNS("http://www.w3.org/2000/svg", "g");
|
|
107
|
+
this.addOverlay(overlaySource, group, overlayLayer);
|
|
108
|
+
}
|
|
109
|
+
if (className)
|
|
110
|
+
group.setAttribute('class', className);
|
|
111
|
+
return group;
|
|
112
|
+
}
|
|
104
113
|
drawLine(overlaySource, x1, y1, x2, y2, className, line, overlayLayer) {
|
|
105
114
|
if (!line) {
|
|
106
115
|
line = document.createElementNS("http://www.w3.org/2000/svg", "line");
|