@node-projects/web-component-designer 0.0.148 → 0.0.150
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/services/bindingsService/BaseCustomWebcomponentBindingsService.js +2 -1
- package/dist/elements/services/bindingsService/SpecialTagsBindingService.js +1 -0
- package/dist/elements/widgets/designerView/designerCanvas.js +10 -1
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.d.ts +4 -0
- package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.js +16 -3
- package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtension.d.ts +12 -0
- package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtension.js +61 -0
- package/dist/elements/widgets/designerView/extensions/svg/LineExtension.d.ts +12 -0
- package/dist/elements/widgets/designerView/extensions/svg/LineExtension.js +59 -0
- package/dist/elements/widgets/designerView/extensions/svg/PathExtension.d.ts +6 -0
- package/dist/elements/widgets/designerView/extensions/svg/PathExtension.js +33 -0
- package/dist/elements/widgets/designerView/extensions/svg/RectExtension.d.ts +12 -0
- package/dist/elements/widgets/designerView/extensions/svg/RectExtension.js +61 -0
- package/dist/elements/widgets/designerView/tools/TextTool.js +5 -7
- package/dist/elements/widgets/treeView/treeViewExtended.js +4 -2
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BindingMode } from '../../item/BindingMode';
|
|
2
2
|
import { BindingTarget } from "../../item/BindingTarget.js";
|
|
3
|
+
import { PropertiesHelper } from "../propertiesService/services/PropertiesHelper";
|
|
3
4
|
export class BaseCustomWebcomponentBindingsService {
|
|
4
5
|
static type = 'base-custom-webcomponent-binding';
|
|
5
6
|
getBindings(designItem) {
|
|
@@ -32,7 +33,7 @@ export class BaseCustomWebcomponentBindingsService {
|
|
|
32
33
|
bnd.expression = value.substring(2, value.length - 4);
|
|
33
34
|
}
|
|
34
35
|
else {
|
|
35
|
-
bnd.targetName = name;
|
|
36
|
+
bnd.targetName = PropertiesHelper.dashToCamelCase(name);
|
|
36
37
|
bnd.target = BindingTarget.property;
|
|
37
38
|
bnd.expression = value.substring(2, value.length - 4);
|
|
38
39
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BindingTarget } from "../../item/BindingTarget.js";
|
|
2
2
|
import { BindingMode } from "../../item/BindingMode.js";
|
|
3
3
|
/* Service wich read binings from special HTMl elements -> like tag-binding */
|
|
4
|
+
//TODO: refactor so we could use it
|
|
4
5
|
export class SpecialTagsBindingService {
|
|
5
6
|
static type = 'visu-tagbinding-binding';
|
|
6
7
|
_bindingTagName = "visu-tagbinding";
|
|
@@ -213,7 +213,16 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
213
213
|
t += ',';
|
|
214
214
|
t += '#node-projects-designer-canvas-canvas ' + p;
|
|
215
215
|
}
|
|
216
|
-
|
|
216
|
+
let cssText = r.style.cssText;
|
|
217
|
+
//bugfix for chrome issue: https://bugs.chromium.org/p/chromium/issues/detail?id=1394353
|
|
218
|
+
if (r.styleMap && r.styleMap.get('grid-template') && r.styleMap.get('grid-template').toString().includes('repeat(')) {
|
|
219
|
+
let entr = r.styleMap.entries();
|
|
220
|
+
cssText = '';
|
|
221
|
+
for (let e of entr) {
|
|
222
|
+
cssText += e[0] + ':' + e[1].toString() + ';';
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
style += t + '{' + cssText + '}';
|
|
217
226
|
}
|
|
218
227
|
}
|
|
219
228
|
}
|
package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.d.ts
CHANGED
|
@@ -8,6 +8,10 @@ export declare class EditTextWithStyloExtension extends AbstractExtension implem
|
|
|
8
8
|
private _blurBound;
|
|
9
9
|
private static template;
|
|
10
10
|
private _resizeObserver;
|
|
11
|
+
private _rect1;
|
|
12
|
+
private _rect2;
|
|
13
|
+
private _rect3;
|
|
14
|
+
private _rect4;
|
|
11
15
|
private _foreignObject;
|
|
12
16
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
13
17
|
extend(): void;
|
package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.js
CHANGED
|
@@ -10,6 +10,10 @@ export class EditTextWithStyloExtension extends AbstractExtension {
|
|
|
10
10
|
<stylo-editor></stylo-editor>
|
|
11
11
|
`;
|
|
12
12
|
_resizeObserver;
|
|
13
|
+
_rect1;
|
|
14
|
+
_rect2;
|
|
15
|
+
_rect3;
|
|
16
|
+
_rect4;
|
|
13
17
|
_foreignObject;
|
|
14
18
|
constructor(extensionManager, designerView, extendedItem) {
|
|
15
19
|
super(extensionManager, designerView, extendedItem);
|
|
@@ -21,6 +25,7 @@ export class EditTextWithStyloExtension extends AbstractExtension {
|
|
|
21
25
|
this.extendedItem.element.addEventListener('input', this._contentEditedBound);
|
|
22
26
|
this.extendedItem.element.addEventListener('blur', this._blurBound);
|
|
23
27
|
this.extendedItem.element.focus();
|
|
28
|
+
this.designerCanvas.eatEvents = this.extendedItem.element;
|
|
24
29
|
this.designerCanvas.serviceContainer.globalContext.tool = new TextTool(true);
|
|
25
30
|
const elements = EditTextWithStyloExtension.template.content.cloneNode(true);
|
|
26
31
|
const foreignObject = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject');
|
|
@@ -33,6 +38,10 @@ export class EditTextWithStyloExtension extends AbstractExtension {
|
|
|
33
38
|
this.overlayLayerView.addOverlay(foreignObject, OverlayLayer.Foregorund);
|
|
34
39
|
this.overlays.push(foreignObject);
|
|
35
40
|
this._drawClickOverlayRects();
|
|
41
|
+
this._rect1.addEventListener('pointerdown', (e) => this._clickOutside(e));
|
|
42
|
+
this._rect2.addEventListener('pointerdown', (e) => this._clickOutside(e));
|
|
43
|
+
this._rect3.addEventListener('pointerdown', (e) => this._clickOutside(e));
|
|
44
|
+
this._rect4.addEventListener('pointerdown', (e) => this._clickOutside(e));
|
|
36
45
|
requestAnimationFrame(() => {
|
|
37
46
|
const stylo = foreignObject.querySelector('stylo-editor');
|
|
38
47
|
//@ts-ignore
|
|
@@ -46,7 +55,13 @@ export class EditTextWithStyloExtension extends AbstractExtension {
|
|
|
46
55
|
this._resizeObserver = new ResizeObserver(() => this._drawClickOverlayRects());
|
|
47
56
|
this._resizeObserver.observe(this.extendedItem.element);
|
|
48
57
|
}
|
|
49
|
-
_drawClickOverlayRects() {
|
|
58
|
+
_drawClickOverlayRects() {
|
|
59
|
+
const normalized = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);
|
|
60
|
+
this._rect1 = this._drawRect(0, 0, this.designerCanvas.containerBoundingRect.width, normalized.y, 'svg-transparent', this._rect1, OverlayLayer.Normal);
|
|
61
|
+
this._rect2 = this._drawRect(0, 0, normalized.x, this.designerCanvas.containerBoundingRect.height, 'svg-transparent', this._rect2, OverlayLayer.Normal);
|
|
62
|
+
this._rect3 = this._drawRect(normalized.x + normalized.width, 0, this.designerCanvas.containerBoundingRect.width, this.designerCanvas.containerBoundingRect.height, 'svg-transparent', this._rect3, OverlayLayer.Normal);
|
|
63
|
+
this._rect4 = this._drawRect(0, normalized.y + normalized.height, this.designerCanvas.containerBoundingRect.width, this.designerCanvas.containerBoundingRect.height, 'svg-transparent', this._rect4, OverlayLayer.Normal);
|
|
64
|
+
}
|
|
50
65
|
handlesPointerEvent(designerCanvas, event, currentElement) {
|
|
51
66
|
let p = event.composedPath();
|
|
52
67
|
const stylo = this._foreignObject.querySelector('stylo-editor');
|
|
@@ -60,8 +75,6 @@ export class EditTextWithStyloExtension extends AbstractExtension {
|
|
|
60
75
|
this._removeAllOverlays();
|
|
61
76
|
this.extendedItem.element.removeAttribute('contenteditable');
|
|
62
77
|
this.designerCanvas.eatEvents = null;
|
|
63
|
-
this.extendedItem.element.querySelectorAll('[paragraph_id]').forEach(x => x.removeAttribute('paragraph_id'));
|
|
64
|
-
this.extendedItem.element.querySelectorAll('[draggable]').forEach(x => x.removeAttribute('draggable'));
|
|
65
78
|
this.extendedItem.updateChildrenFromNodesChildren();
|
|
66
79
|
this.designerCanvas.clickOverlay.style.pointerEvents = 'auto';
|
|
67
80
|
}
|
|
@@ -2,6 +2,7 @@ import { IDesignItem } from "../../../../item/IDesignItem";
|
|
|
2
2
|
import { IDesignerCanvas } from "../../IDesignerCanvas";
|
|
3
3
|
import { AbstractExtension } from "../AbstractExtension";
|
|
4
4
|
import { IExtensionManager } from "../IExtensionManger";
|
|
5
|
+
import { IRect } from "../../../../../interfaces/IRect";
|
|
5
6
|
export declare class EllipsisExtension extends AbstractExtension {
|
|
6
7
|
private _parentRect;
|
|
7
8
|
private _ellipseElement;
|
|
@@ -19,11 +20,22 @@ export declare class EllipsisExtension extends AbstractExtension {
|
|
|
19
20
|
private _circle2;
|
|
20
21
|
private _circle3;
|
|
21
22
|
private _circle4;
|
|
23
|
+
private _parentCoordinates;
|
|
24
|
+
private _offsetSvg;
|
|
22
25
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
23
26
|
extend(): void;
|
|
24
27
|
pointerEvent(event: PointerEvent, circle: SVGCircleElement, e: SVGEllipseElement, index: number): void;
|
|
25
28
|
_drawPathCircle(x: number, y: number, e: SVGEllipseElement, index: number): SVGCircleElement;
|
|
26
29
|
_redrawPathCircle(x: number, y: number, oldCircle: SVGCircleElement): SVGCircleElement;
|
|
30
|
+
_getPointsFromEllipse(elementCoords: IRect): number[];
|
|
31
|
+
_getMinMaxValues(coords: any): {
|
|
32
|
+
xMin: number;
|
|
33
|
+
xMax: number;
|
|
34
|
+
yMin: number;
|
|
35
|
+
yMax: number;
|
|
36
|
+
};
|
|
37
|
+
_rearrangeSvgParent(newEllipseExtrema: any): void;
|
|
38
|
+
_rearrangePointsFromElement(oldParentCoords: IRect): void;
|
|
27
39
|
refresh(): void;
|
|
28
40
|
dispose(): void;
|
|
29
41
|
}
|
|
@@ -17,6 +17,8 @@ export class EllipsisExtension extends AbstractExtension {
|
|
|
17
17
|
_circle2;
|
|
18
18
|
_circle3;
|
|
19
19
|
_circle4;
|
|
20
|
+
_parentCoordinates;
|
|
21
|
+
_offsetSvg = 10.0;
|
|
20
22
|
constructor(extensionManager, designerView, extendedItem) {
|
|
21
23
|
super(extensionManager, designerView, extendedItem);
|
|
22
24
|
}
|
|
@@ -41,6 +43,7 @@ export class EllipsisExtension extends AbstractExtension {
|
|
|
41
43
|
this._startPos = cursorPos;
|
|
42
44
|
this._circlePos = { x: parseFloat(circle.getAttribute("cx")), y: parseFloat(circle.getAttribute("cy")) };
|
|
43
45
|
this._originalPoint = { x: this._rx, y: this._ry };
|
|
46
|
+
this._parentCoordinates = this.designerCanvas.getNormalizedElementCoordinates(this._ellipseElement.parentElement);
|
|
44
47
|
break;
|
|
45
48
|
case EventNames.PointerMove:
|
|
46
49
|
if (this._startPos && event.buttons > 0) {
|
|
@@ -87,6 +90,15 @@ export class EllipsisExtension extends AbstractExtension {
|
|
|
87
90
|
this._originalPoint = null;
|
|
88
91
|
this.extendedItem.setAttribute("rx", this._newRx.toString());
|
|
89
92
|
this.extendedItem.setAttribute("ry", this._newRy.toString());
|
|
93
|
+
if (getComputedStyle(this._ellipseElement.parentElement).position == "absolute") {
|
|
94
|
+
let group = this.extendedItem.openGroup('rearrangeSvg');
|
|
95
|
+
let newEllipseCoordinates = this.designerCanvas.getNormalizedElementCoordinates(this._ellipseElement);
|
|
96
|
+
let newEllipseCoordinatesCloud = this._getPointsFromEllipse(newEllipseCoordinates);
|
|
97
|
+
let newEllipseExtrema = this._getMinMaxValues(newEllipseCoordinatesCloud);
|
|
98
|
+
this._rearrangeSvgParent(newEllipseExtrema);
|
|
99
|
+
this._rearrangePointsFromElement(this._parentCoordinates);
|
|
100
|
+
group.commit();
|
|
101
|
+
}
|
|
90
102
|
break;
|
|
91
103
|
}
|
|
92
104
|
}
|
|
@@ -103,6 +115,55 @@ export class EllipsisExtension extends AbstractExtension {
|
|
|
103
115
|
circle.style.strokeWidth = (1 / this.designerCanvas.zoomFactor).toString();
|
|
104
116
|
return circle;
|
|
105
117
|
}
|
|
118
|
+
_getPointsFromEllipse(elementCoords) {
|
|
119
|
+
let Coords = [];
|
|
120
|
+
Coords.push(elementCoords.x);
|
|
121
|
+
Coords.push(elementCoords.x + elementCoords.width);
|
|
122
|
+
Coords.push(elementCoords.x);
|
|
123
|
+
Coords.push(elementCoords.x + elementCoords.width);
|
|
124
|
+
Coords.push(elementCoords.y);
|
|
125
|
+
Coords.push(elementCoords.y);
|
|
126
|
+
Coords.push(elementCoords.y + elementCoords.height);
|
|
127
|
+
Coords.push(elementCoords.y + elementCoords.height);
|
|
128
|
+
Coords.push(elementCoords.height);
|
|
129
|
+
Coords.push(elementCoords.width);
|
|
130
|
+
return Coords;
|
|
131
|
+
}
|
|
132
|
+
_getMinMaxValues(coords) {
|
|
133
|
+
let extrema = { xMin: 0.0, xMax: 0.0, yMin: 0.0, yMax: 0.0 };
|
|
134
|
+
for (let i = 0; i < coords.length - 2; i++) {
|
|
135
|
+
if (coords[i] < coords[i + 1] && i <= 3) {
|
|
136
|
+
extrema.xMin = coords[i];
|
|
137
|
+
}
|
|
138
|
+
else if (coords[i] < coords[i + 1] && i > 3 && i <= 7) {
|
|
139
|
+
extrema.yMin = coords[i];
|
|
140
|
+
}
|
|
141
|
+
if (coords[i] > coords[i + 1] && i <= 3) {
|
|
142
|
+
extrema.xMax = coords[i];
|
|
143
|
+
}
|
|
144
|
+
else if (coords[i] > coords[i + 1] && i > 3 && i <= 7) {
|
|
145
|
+
extrema.yMax = coords[i];
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return extrema;
|
|
149
|
+
}
|
|
150
|
+
_rearrangeSvgParent(newEllipseExtrema) {
|
|
151
|
+
let parentLeft = newEllipseExtrema.xMin - this._offsetSvg;
|
|
152
|
+
let parentTop = newEllipseExtrema.yMin - this._offsetSvg;
|
|
153
|
+
let widthEllipseElement = newEllipseExtrema.xMax - newEllipseExtrema.xMin + (2 * this._offsetSvg);
|
|
154
|
+
let heightEllipseElement = newEllipseExtrema.yMax - newEllipseExtrema.yMin + (2 * this._offsetSvg);
|
|
155
|
+
this.extendedItem.parent.setStyle("left", parentLeft.toString() + "px");
|
|
156
|
+
this.extendedItem.parent.setStyle("top", parentTop.toString() + "px");
|
|
157
|
+
this.extendedItem.parent.setStyle("height", heightEllipseElement.toString() + "px");
|
|
158
|
+
this.extendedItem.parent.setStyle("width", widthEllipseElement.toString() + "px");
|
|
159
|
+
}
|
|
160
|
+
_rearrangePointsFromElement(oldParentCoords) {
|
|
161
|
+
let newParentCoords = this.designerCanvas.getNormalizedElementCoordinates(this._ellipseElement.parentElement);
|
|
162
|
+
let diffX = oldParentCoords.x - newParentCoords.x;
|
|
163
|
+
let diffY = oldParentCoords.y - newParentCoords.y;
|
|
164
|
+
this.extendedItem.setAttribute('cx', (this._ellipseElement.cx.baseVal.value + diffX).toString());
|
|
165
|
+
this.extendedItem.setAttribute('cy', (this._ellipseElement.cy.baseVal.value + diffY).toString());
|
|
166
|
+
}
|
|
106
167
|
refresh() {
|
|
107
168
|
this._removeAllOverlays();
|
|
108
169
|
this.extend();
|
|
@@ -2,6 +2,7 @@ import { IDesignItem } from "../../../../item/IDesignItem";
|
|
|
2
2
|
import { IDesignerCanvas } from "../../IDesignerCanvas";
|
|
3
3
|
import { AbstractExtension } from "../AbstractExtension";
|
|
4
4
|
import { IExtensionManager } from "../IExtensionManger";
|
|
5
|
+
import { IRect } from "../../../../../interfaces/IRect";
|
|
5
6
|
export declare class LineExtension extends AbstractExtension {
|
|
6
7
|
private _parentRect;
|
|
7
8
|
private _lineElement;
|
|
@@ -11,10 +12,21 @@ export declare class LineExtension extends AbstractExtension {
|
|
|
11
12
|
private _originalPoint;
|
|
12
13
|
private _newLinePoint;
|
|
13
14
|
private _newCirclePoint;
|
|
15
|
+
private _parentCoordinates;
|
|
16
|
+
private _offsetSvg;
|
|
14
17
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
15
18
|
extend(): void;
|
|
16
19
|
pointerEvent(event: PointerEvent, circle: SVGCircleElement, l: SVGLineElement, index: number): void;
|
|
17
20
|
_drawPathCircle(x: number, y: number, l: SVGLineElement, index: number): void;
|
|
21
|
+
_getPointsFromRect(elementCoords: IRect): number[];
|
|
22
|
+
_getMinMaxValues(coords: any): {
|
|
23
|
+
xMin: number;
|
|
24
|
+
xMax: number;
|
|
25
|
+
yMin: number;
|
|
26
|
+
yMax: number;
|
|
27
|
+
};
|
|
28
|
+
_rearrangeSvgParent(newLineExtrema: any): void;
|
|
29
|
+
_rearrangePointsFromElement(oldParentCoords: IRect): void;
|
|
18
30
|
refresh(): void;
|
|
19
31
|
dispose(): void;
|
|
20
32
|
}
|
|
@@ -9,6 +9,8 @@ export class LineExtension extends AbstractExtension {
|
|
|
9
9
|
_originalPoint;
|
|
10
10
|
_newLinePoint;
|
|
11
11
|
_newCirclePoint;
|
|
12
|
+
_parentCoordinates;
|
|
13
|
+
_offsetSvg = 10.0;
|
|
12
14
|
constructor(extensionManager, designerView, extendedItem) {
|
|
13
15
|
super(extensionManager, designerView, extendedItem);
|
|
14
16
|
}
|
|
@@ -31,6 +33,7 @@ export class LineExtension extends AbstractExtension {
|
|
|
31
33
|
this._startPos = cursorPos;
|
|
32
34
|
this._circlePos = { x: parseFloat(circle.getAttribute("cx")), y: parseFloat(circle.getAttribute("cy")) };
|
|
33
35
|
this._originalPoint = { x: parseFloat(l.getAttribute("x" + index)), y: parseFloat(l.getAttribute("y" + index)) };
|
|
36
|
+
this._parentCoordinates = this.designerCanvas.getNormalizedElementCoordinates(this._lineElement.parentElement);
|
|
34
37
|
break;
|
|
35
38
|
case EventNames.PointerMove:
|
|
36
39
|
if (this._startPos && event.buttons > 0) {
|
|
@@ -68,6 +71,15 @@ export class LineExtension extends AbstractExtension {
|
|
|
68
71
|
this._originalPoint = null;
|
|
69
72
|
this.extendedItem.setAttribute('x' + index, this._newLinePoint.x.toString());
|
|
70
73
|
this.extendedItem.setAttribute('y' + index, this._newLinePoint.y.toString());
|
|
74
|
+
if (getComputedStyle(this._lineElement.parentElement).position == "absolute") {
|
|
75
|
+
let group = this.extendedItem.openGroup('rearrangeSvg');
|
|
76
|
+
let newLineCoordinates = this.designerCanvas.getNormalizedElementCoordinates(this._lineElement);
|
|
77
|
+
let newLineCoordinatesCloud = this._getPointsFromRect(newLineCoordinates);
|
|
78
|
+
let newLineExtrema = this._getMinMaxValues(newLineCoordinatesCloud);
|
|
79
|
+
this._rearrangeSvgParent(newLineExtrema);
|
|
80
|
+
this._rearrangePointsFromElement(this._parentCoordinates);
|
|
81
|
+
group.commit();
|
|
82
|
+
}
|
|
71
83
|
break;
|
|
72
84
|
}
|
|
73
85
|
}
|
|
@@ -78,6 +90,53 @@ export class LineExtension extends AbstractExtension {
|
|
|
78
90
|
circle.addEventListener(EventNames.PointerMove, event => this.pointerEvent(event, circle, l, index));
|
|
79
91
|
circle.addEventListener(EventNames.PointerUp, event => this.pointerEvent(event, circle, l, index));
|
|
80
92
|
}
|
|
93
|
+
_getPointsFromRect(elementCoords) {
|
|
94
|
+
let Coords = [];
|
|
95
|
+
Coords.push(elementCoords.x);
|
|
96
|
+
Coords.push(elementCoords.x + elementCoords.width);
|
|
97
|
+
Coords.push(elementCoords.y);
|
|
98
|
+
Coords.push(elementCoords.y + elementCoords.height);
|
|
99
|
+
Coords.push(elementCoords.height);
|
|
100
|
+
Coords.push(elementCoords.width);
|
|
101
|
+
return Coords;
|
|
102
|
+
}
|
|
103
|
+
_getMinMaxValues(coords) {
|
|
104
|
+
let extrema = { xMin: 0.0, xMax: 0.0, yMin: 0.0, yMax: 0.0 };
|
|
105
|
+
for (let i = 0; i < coords.length - 2; i++) {
|
|
106
|
+
if (coords[i] < coords[i + 1] && i <= 1) {
|
|
107
|
+
extrema.xMin = coords[i];
|
|
108
|
+
}
|
|
109
|
+
else if (coords[i] < coords[i + 1] && i > 1 && i <= 3) {
|
|
110
|
+
extrema.yMin = coords[i];
|
|
111
|
+
}
|
|
112
|
+
if (coords[i] > coords[i + 1] && i <= 1) {
|
|
113
|
+
extrema.xMax = coords[i];
|
|
114
|
+
}
|
|
115
|
+
else if (coords[i] > coords[i + 1] && i > 1 && i <= 3) {
|
|
116
|
+
extrema.yMax = coords[i];
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return extrema;
|
|
120
|
+
}
|
|
121
|
+
_rearrangeSvgParent(newLineExtrema) {
|
|
122
|
+
let parentLeft = newLineExtrema.xMin - this._offsetSvg;
|
|
123
|
+
let parentTop = newLineExtrema.yMin - this._offsetSvg;
|
|
124
|
+
let widthLineElement = newLineExtrema.xMax - newLineExtrema.xMin + (2 * this._offsetSvg);
|
|
125
|
+
let heightLineElement = newLineExtrema.yMax - newLineExtrema.yMin + (2 * this._offsetSvg);
|
|
126
|
+
this.extendedItem.parent.setStyle("left", parentLeft.toString() + "px");
|
|
127
|
+
this.extendedItem.parent.setStyle("top", parentTop.toString() + "px");
|
|
128
|
+
this.extendedItem.parent.setStyle("height", heightLineElement.toString() + "px");
|
|
129
|
+
this.extendedItem.parent.setStyle("width", widthLineElement.toString() + "px");
|
|
130
|
+
}
|
|
131
|
+
_rearrangePointsFromElement(oldParentCoords) {
|
|
132
|
+
let newParentCoords = this.designerCanvas.getNormalizedElementCoordinates(this._lineElement.parentElement);
|
|
133
|
+
let diffX = oldParentCoords.x - newParentCoords.x;
|
|
134
|
+
let diffY = oldParentCoords.y - newParentCoords.y;
|
|
135
|
+
this.extendedItem.setAttribute('x1', (this._lineElement.x1.baseVal.value + diffX).toString());
|
|
136
|
+
this.extendedItem.setAttribute('y1', (this._lineElement.y1.baseVal.value + diffY).toString());
|
|
137
|
+
this.extendedItem.setAttribute('x2', (this._lineElement.x2.baseVal.value + diffX).toString());
|
|
138
|
+
this.extendedItem.setAttribute('y2', (this._lineElement.y2.baseVal.value + diffY).toString());
|
|
139
|
+
}
|
|
81
140
|
refresh() {
|
|
82
141
|
this._removeAllOverlays();
|
|
83
142
|
this.extend();
|
|
@@ -5,6 +5,7 @@ import "../../../../helper/PathDataPolyfill";
|
|
|
5
5
|
import { IPoint } from "../../../../../interfaces/IPoint";
|
|
6
6
|
import { IExtensionManager } from "../IExtensionManger";
|
|
7
7
|
import { PathData } from "../../../../helper/PathDataPolyfill";
|
|
8
|
+
import { IRect } from "../../../../../interfaces/IRect";
|
|
8
9
|
export declare class PathExtension extends AbstractExtension {
|
|
9
10
|
private _lastPos;
|
|
10
11
|
private _parentRect;
|
|
@@ -12,12 +13,17 @@ export declare class PathExtension extends AbstractExtension {
|
|
|
12
13
|
private _circlePos;
|
|
13
14
|
private _originalPathPoint;
|
|
14
15
|
private _pathdata;
|
|
16
|
+
private _offsetSvg;
|
|
17
|
+
private _pathElement;
|
|
18
|
+
private _parentCoordinates;
|
|
15
19
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
16
20
|
extend(): void;
|
|
17
21
|
pointerEvent(event: PointerEvent, circle: SVGCircleElement, p: PathData, index: number): void;
|
|
18
22
|
_drawPathCircle(x: number, y: number, p: PathData, index: number): void;
|
|
19
23
|
_drawPathLine(x1: number, y1: number, x2: number, y2: number): void;
|
|
20
24
|
_checkCircleIndex(p: PathData, circlePos: IPoint): boolean;
|
|
25
|
+
_rearrangeSvgElement(): void;
|
|
26
|
+
_rearrangePointsFromElement(oldParentCoords: IRect, pathData: PathData[]): void;
|
|
21
27
|
refresh(): void;
|
|
22
28
|
dispose(): void;
|
|
23
29
|
}
|
|
@@ -10,12 +10,16 @@ export class PathExtension extends AbstractExtension {
|
|
|
10
10
|
_circlePos;
|
|
11
11
|
_originalPathPoint;
|
|
12
12
|
_pathdata;
|
|
13
|
+
_offsetSvg = 10.0;
|
|
14
|
+
_pathElement;
|
|
15
|
+
_parentCoordinates;
|
|
13
16
|
constructor(extensionManager, designerView, extendedItem) {
|
|
14
17
|
super(extensionManager, designerView, extendedItem);
|
|
15
18
|
}
|
|
16
19
|
extend() {
|
|
17
20
|
this._parentRect = this.extendedItem.element.parentElement.getBoundingClientRect();
|
|
18
21
|
this._pathdata = this.extendedItem.node.getPathData({ normalize: false });
|
|
22
|
+
this._pathElement = this.extendedItem.node;
|
|
19
23
|
this._lastPos = { x: 0, y: 0 };
|
|
20
24
|
for (let p of this._pathdata) {
|
|
21
25
|
switch (p.type) {
|
|
@@ -111,6 +115,7 @@ export class PathExtension extends AbstractExtension {
|
|
|
111
115
|
this._startPos = cursorPos;
|
|
112
116
|
this._circlePos = { x: parseFloat(circle.getAttribute("cx")), y: parseFloat(circle.getAttribute("cy")) };
|
|
113
117
|
this._originalPathPoint = { x: p.values[index], y: p.values[index + 1] };
|
|
118
|
+
this._parentCoordinates = this.extendedItem.element.parentElement.getBoundingClientRect();
|
|
114
119
|
break;
|
|
115
120
|
case EventNames.PointerMove:
|
|
116
121
|
if (this._startPos && event.buttons > 0) {
|
|
@@ -158,6 +163,13 @@ export class PathExtension extends AbstractExtension {
|
|
|
158
163
|
this._circlePos = null;
|
|
159
164
|
this._lastPos = null;
|
|
160
165
|
this.extendedItem.setAttribute('d', createPathD(this._pathdata));
|
|
166
|
+
if (getComputedStyle(this._pathElement.parentElement).position == "absolute") {
|
|
167
|
+
let group = this.extendedItem.openGroup('rearrangeSvg');
|
|
168
|
+
let dataPath = this._pathdata;
|
|
169
|
+
this._rearrangeSvgElement();
|
|
170
|
+
this._rearrangePointsFromElement(this._parentCoordinates, dataPath);
|
|
171
|
+
group.commit();
|
|
172
|
+
}
|
|
161
173
|
break;
|
|
162
174
|
}
|
|
163
175
|
}
|
|
@@ -277,6 +289,27 @@ export class PathExtension extends AbstractExtension {
|
|
|
277
289
|
}
|
|
278
290
|
return false;
|
|
279
291
|
}
|
|
292
|
+
_rearrangeSvgElement() {
|
|
293
|
+
let newElementCoords = this.extendedItem.element.getBoundingClientRect();
|
|
294
|
+
let parentLeft = (newElementCoords.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor - this._offsetSvg;
|
|
295
|
+
let parentTop = (newElementCoords.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor - this._offsetSvg;
|
|
296
|
+
let heightSvgElement = newElementCoords.height + (2 * this._offsetSvg);
|
|
297
|
+
let widthSvgElement = newElementCoords.width + (2 * this._offsetSvg);
|
|
298
|
+
this.extendedItem.element.parentElement.style.setProperty("left", parentLeft.toString() + "px");
|
|
299
|
+
this.extendedItem.element.parentElement.style.setProperty("top", parentTop.toString() + "px");
|
|
300
|
+
this.extendedItem.element.parentElement.style.setProperty("height", heightSvgElement.toString() + "px");
|
|
301
|
+
this.extendedItem.element.parentElement.style.setProperty("width", widthSvgElement.toString() + "px");
|
|
302
|
+
}
|
|
303
|
+
_rearrangePointsFromElement(oldParentCoords, pathData) {
|
|
304
|
+
let newParentCoords = this.extendedItem.element.parentElement.getBoundingClientRect();
|
|
305
|
+
let diffX = oldParentCoords.x - newParentCoords.x;
|
|
306
|
+
let diffY = oldParentCoords.y - newParentCoords.y;
|
|
307
|
+
for (let i = 0; i < pathData.length; i++) {
|
|
308
|
+
pathData[i].values[0] = pathData[i].values[0] + diffX;
|
|
309
|
+
pathData[i].values[1] = pathData[i].values[1] + diffY;
|
|
310
|
+
}
|
|
311
|
+
this.extendedItem.element.setAttribute("d", createPathD(this._pathdata));
|
|
312
|
+
}
|
|
280
313
|
refresh() {
|
|
281
314
|
this._removeAllOverlays();
|
|
282
315
|
this.extend();
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IRect } from "../../../../../interfaces/IRect";
|
|
1
2
|
import { IDesignItem } from "../../../../item/IDesignItem";
|
|
2
3
|
import { IDesignerCanvas } from "../../IDesignerCanvas";
|
|
3
4
|
import { AbstractExtension } from "../AbstractExtension";
|
|
@@ -18,6 +19,8 @@ export declare class RectExtension extends AbstractExtension {
|
|
|
18
19
|
private _circle3;
|
|
19
20
|
private _circle4;
|
|
20
21
|
private _rect;
|
|
22
|
+
private _parentCoordinates;
|
|
23
|
+
private _offsetSvg;
|
|
21
24
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
22
25
|
extend(): void;
|
|
23
26
|
pointerEvent(event: PointerEvent, circle: SVGCircleElement, r: SVGRectElement, index: number): void;
|
|
@@ -29,6 +32,15 @@ export declare class RectExtension extends AbstractExtension {
|
|
|
29
32
|
w: number;
|
|
30
33
|
h: number;
|
|
31
34
|
};
|
|
35
|
+
_getPointsFromRect(elementCoords: IRect): number[];
|
|
36
|
+
_getMinMaxValues(coords: any): {
|
|
37
|
+
xMin: number;
|
|
38
|
+
xMax: number;
|
|
39
|
+
yMin: number;
|
|
40
|
+
yMax: number;
|
|
41
|
+
};
|
|
42
|
+
_rearrangeSvgParent(newRectExtrema: any): void;
|
|
43
|
+
_rearrangePointsFromElement(oldParentCoords: IRect): void;
|
|
32
44
|
refresh(): void;
|
|
33
45
|
dispose(): void;
|
|
34
46
|
}
|
|
@@ -16,6 +16,8 @@ export class RectExtension extends AbstractExtension {
|
|
|
16
16
|
_circle3;
|
|
17
17
|
_circle4;
|
|
18
18
|
_rect = { x: 0, y: 0, w: 0, h: 0 };
|
|
19
|
+
_parentCoordinates;
|
|
20
|
+
_offsetSvg = 10.0;
|
|
19
21
|
constructor(extensionManager, designerView, extendedItem) {
|
|
20
22
|
super(extensionManager, designerView, extendedItem);
|
|
21
23
|
}
|
|
@@ -40,6 +42,7 @@ export class RectExtension extends AbstractExtension {
|
|
|
40
42
|
this._startPos = cursorPos;
|
|
41
43
|
this._circlePos = { x: parseFloat(circle.getAttribute("cx")), y: parseFloat(circle.getAttribute("cy")) };
|
|
42
44
|
this._originalPoint = { x: this._x, y: this._y };
|
|
45
|
+
this._parentCoordinates = this.designerCanvas.getNormalizedElementCoordinates(this._rectElement.parentElement);
|
|
43
46
|
break;
|
|
44
47
|
case EventNames.PointerMove:
|
|
45
48
|
if (this._startPos && event.buttons > 0) {
|
|
@@ -92,6 +95,15 @@ export class RectExtension extends AbstractExtension {
|
|
|
92
95
|
this.extendedItem.setAttribute("y", this._rect.y.toString());
|
|
93
96
|
this.extendedItem.setAttribute("width", this._rect.w.toString());
|
|
94
97
|
this.extendedItem.setAttribute("height", this._rect.h.toString());
|
|
98
|
+
if (getComputedStyle(this._rectElement.parentElement).position == "absolute") {
|
|
99
|
+
let group = this.extendedItem.openGroup('rearrangeSvg');
|
|
100
|
+
let newRectCoordinates = this.designerCanvas.getNormalizedElementCoordinates(this._rectElement);
|
|
101
|
+
let newRectCoordinatesCloud = this._getPointsFromRect(newRectCoordinates);
|
|
102
|
+
let newRectExtrema = this._getMinMaxValues(newRectCoordinatesCloud);
|
|
103
|
+
this._rearrangeSvgParent(newRectExtrema);
|
|
104
|
+
this._rearrangePointsFromElement(this._parentCoordinates);
|
|
105
|
+
group.commit();
|
|
106
|
+
}
|
|
95
107
|
break;
|
|
96
108
|
}
|
|
97
109
|
}
|
|
@@ -128,6 +140,55 @@ export class RectExtension extends AbstractExtension {
|
|
|
128
140
|
}
|
|
129
141
|
return rect;
|
|
130
142
|
}
|
|
143
|
+
_getPointsFromRect(elementCoords) {
|
|
144
|
+
let Coords = [];
|
|
145
|
+
Coords.push(elementCoords.x);
|
|
146
|
+
Coords.push(elementCoords.x + elementCoords.width);
|
|
147
|
+
Coords.push(elementCoords.x);
|
|
148
|
+
Coords.push(elementCoords.x + elementCoords.width);
|
|
149
|
+
Coords.push(elementCoords.y);
|
|
150
|
+
Coords.push(elementCoords.y);
|
|
151
|
+
Coords.push(elementCoords.y + elementCoords.height);
|
|
152
|
+
Coords.push(elementCoords.y + elementCoords.height);
|
|
153
|
+
Coords.push(elementCoords.height);
|
|
154
|
+
Coords.push(elementCoords.width);
|
|
155
|
+
return Coords;
|
|
156
|
+
}
|
|
157
|
+
_getMinMaxValues(coords) {
|
|
158
|
+
let extrema = { xMin: 0.0, xMax: 0.0, yMin: 0.0, yMax: 0.0 };
|
|
159
|
+
for (let i = 0; i < coords.length - 2; i++) {
|
|
160
|
+
if (coords[i] < coords[i + 1] && i <= 3) {
|
|
161
|
+
extrema.xMin = coords[i];
|
|
162
|
+
}
|
|
163
|
+
else if (coords[i] < coords[i + 1] && i > 3 && i <= 7) {
|
|
164
|
+
extrema.yMin = coords[i];
|
|
165
|
+
}
|
|
166
|
+
if (coords[i] > coords[i + 1] && i <= 3) {
|
|
167
|
+
extrema.xMax = coords[i];
|
|
168
|
+
}
|
|
169
|
+
else if (coords[i] > coords[i + 1] && i > 3 && i <= 8) {
|
|
170
|
+
extrema.yMax = coords[i];
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return extrema;
|
|
174
|
+
}
|
|
175
|
+
_rearrangeSvgParent(newRectExtrema) {
|
|
176
|
+
let parentLeft = newRectExtrema.xMin - this._offsetSvg;
|
|
177
|
+
let parentTop = newRectExtrema.yMin - this._offsetSvg;
|
|
178
|
+
let widthRectElement = newRectExtrema.xMax - newRectExtrema.xMin + (2 * this._offsetSvg);
|
|
179
|
+
let heightRectElement = newRectExtrema.yMax - newRectExtrema.yMin + (2 * this._offsetSvg);
|
|
180
|
+
this.extendedItem.parent.setStyle("left", parentLeft.toString() + "px");
|
|
181
|
+
this.extendedItem.parent.setStyle("top", parentTop.toString() + "px");
|
|
182
|
+
this.extendedItem.parent.setStyle("height", heightRectElement.toString() + "px");
|
|
183
|
+
this.extendedItem.parent.setStyle("width", widthRectElement.toString() + "px");
|
|
184
|
+
}
|
|
185
|
+
_rearrangePointsFromElement(oldParentCoords) {
|
|
186
|
+
let newParentCoords = this.designerCanvas.getNormalizedElementCoordinates(this._rectElement.parentElement);
|
|
187
|
+
let diffX = oldParentCoords.x - newParentCoords.x;
|
|
188
|
+
let diffY = oldParentCoords.y - newParentCoords.y;
|
|
189
|
+
this.extendedItem.setAttribute('x', (this._rectElement.x.baseVal.value + diffX).toString());
|
|
190
|
+
this.extendedItem.setAttribute('y', (this._rectElement.y.baseVal.value + diffY).toString());
|
|
191
|
+
}
|
|
131
192
|
refresh() {
|
|
132
193
|
this._removeAllOverlays();
|
|
133
194
|
this.extend();
|
|
@@ -35,13 +35,11 @@ export class TextTool {
|
|
|
35
35
|
setTimeout(() => { span.focus(); }, 50);
|
|
36
36
|
}
|
|
37
37
|
else {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
designerCanvas.serviceContainer.globalContext.finishedWithTool(this);
|
|
44
|
-
}
|
|
38
|
+
for (let e of this._textEditExtensions) {
|
|
39
|
+
if (e.handlesPointerEvent) {
|
|
40
|
+
const ret = e.handlesPointerEvent(designerCanvas, event, currentElement);
|
|
41
|
+
if (!ret) {
|
|
42
|
+
designerCanvas.serviceContainer.globalContext.finishedWithTool(this);
|
|
45
43
|
}
|
|
46
44
|
}
|
|
47
45
|
}
|
|
@@ -3,6 +3,7 @@ import { NodeType } from '../../item/NodeType';
|
|
|
3
3
|
import { assetsPath } from '../../../Constants';
|
|
4
4
|
import { ContextMenu } from '../../helper/contextMenu/ContextMenu';
|
|
5
5
|
import { switchContainer } from '../../helper/SwitchContainerHelper';
|
|
6
|
+
import { DomConverter } from '../designerView/DomConverter';
|
|
6
7
|
export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
|
|
7
8
|
_treeDiv;
|
|
8
9
|
_tree;
|
|
@@ -195,7 +196,8 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
|
|
|
195
196
|
}
|
|
196
197
|
}
|
|
197
198
|
}
|
|
198
|
-
|
|
199
|
+
const disableExpand = event.originalEvent.ctrlKey || event.originalEvent.shiftKey;
|
|
200
|
+
return !disableExpand;
|
|
199
201
|
},
|
|
200
202
|
createNode: (event, data) => {
|
|
201
203
|
let node = data.node;
|
|
@@ -336,7 +338,7 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
|
|
|
336
338
|
currentNode = this._tree.getRootNode();
|
|
337
339
|
}
|
|
338
340
|
const newNode = currentNode.addChildren({
|
|
339
|
-
title: item.nodeType === NodeType.Element ? item.name + " " + (item.id ? ('#' + item.id) : '') : '<small><small><small>#' + (item.nodeType === NodeType.TextNode ? 'text' : 'comment') + ' </small></small></small> ' + item.content,
|
|
341
|
+
title: item.nodeType === NodeType.Element ? item.name + " " + (item.id ? ('#' + item.id) : '') : '<small><small><small>#' + (item.nodeType === NodeType.TextNode ? 'text' : 'comment') + ' </small></small></small> ' + DomConverter.normalizeContentValue(item.content),
|
|
340
342
|
folder: item.children.length > 0 ? true : false,
|
|
341
343
|
//@ts-ignore
|
|
342
344
|
ref: item
|
package/dist/index.d.ts
CHANGED
|
@@ -23,7 +23,6 @@ export type { IBindableObjectsService } from "./elements/services/bindableObject
|
|
|
23
23
|
export type { IBindableObjectDragDropService } from "./elements/services/bindableObjectsService/IBindableObjectDragDropService.js";
|
|
24
24
|
export type { IBindingService } from "./elements/services/bindingsService/IBindingService.js";
|
|
25
25
|
export * from "./elements/services/bindingsService/BaseCustomWebcomponentBindingsService.js";
|
|
26
|
-
export * from "./elements/services/bindingsService/SpecialTagsBindingService.js";
|
|
27
26
|
export * from "./elements/services/placementService/DefaultPlacementService.js";
|
|
28
27
|
export * from "./elements/services/placementService/FlexBoxPlacementService.js";
|
|
29
28
|
export * from "./elements/services/placementService/GridPlacementService.js";
|
package/dist/index.js
CHANGED
|
@@ -16,7 +16,6 @@ export * from "./elements/item/BindingMode.js";
|
|
|
16
16
|
export * from "./elements/item/BindingTarget.js";
|
|
17
17
|
export * from "./elements/services/bindableObjectsService/BindableObjectType.js";
|
|
18
18
|
export * from "./elements/services/bindingsService/BaseCustomWebcomponentBindingsService.js";
|
|
19
|
-
export * from "./elements/services/bindingsService/SpecialTagsBindingService.js";
|
|
20
19
|
export * from "./elements/services/placementService/DefaultPlacementService.js";
|
|
21
20
|
export * from "./elements/services/placementService/FlexBoxPlacementService.js";
|
|
22
21
|
export * from "./elements/services/placementService/GridPlacementService.js";
|