@node-projects/web-component-designer 0.0.154 → 0.0.156
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/ElementHelper.js +31 -6
- package/dist/elements/helper/SvgHelper.d.ts +1 -0
- package/dist/elements/helper/SvgHelper.js +13 -0
- package/dist/elements/helper/TransformHelper.d.ts +5 -1
- package/dist/elements/helper/TransformHelper.js +35 -27
- package/dist/elements/helper/contextMenu/ContextMenu.js +9 -1
- package/dist/elements/item/DesignItem.d.ts +12 -2
- package/dist/elements/item/DesignItem.js +55 -20
- package/dist/elements/item/IDesignItem.d.ts +10 -2
- package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.js +1 -1
- package/dist/elements/services/htmlParserService/DefaultHtmlParserService.d.ts +1 -1
- package/dist/elements/services/htmlParserService/DefaultHtmlParserService.js +3 -3
- package/dist/elements/services/htmlParserService/LitElementParserService.js +2 -2
- package/dist/elements/services/htmlParserService/NodeHtmlParserService.js +2 -2
- package/dist/elements/services/htmlWriterService/AbstractHtmlWriterService.js +3 -3
- package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.js +3 -3
- package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService.js +3 -3
- package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.d.ts +2 -2
- package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.js +3 -2
- package/dist/elements/services/modelCommandService/DefaultModelCommandService.js +6 -4
- package/dist/elements/services/placementService/DefaultPlacementService.js +5 -5
- package/dist/elements/services/propertiesService/IPropertiesService.d.ts +6 -1
- package/dist/elements/services/propertiesService/IPropertiesService.js +6 -1
- package/dist/elements/services/propertiesService/IProperty.d.ts +1 -0
- package/dist/elements/services/propertiesService/propertyEditors/BasePropertyEditor.js +4 -4
- package/dist/elements/services/propertiesService/services/AbstractPolymerLikePropertiesService.d.ts +2 -1
- package/dist/elements/services/propertiesService/services/AbstractPolymerLikePropertiesService.js +3 -2
- package/dist/elements/services/propertiesService/services/AbstractPropertiesService.d.ts +3 -3
- package/dist/elements/services/propertiesService/services/AbstractPropertiesService.js +16 -20
- package/dist/elements/services/propertiesService/services/AttributesPropertiesService.d.ts +3 -3
- package/dist/elements/services/propertiesService/services/AttributesPropertiesService.js +10 -11
- package/dist/elements/services/propertiesService/services/CommonPropertiesService.d.ts +2 -1
- package/dist/elements/services/propertiesService/services/CommonPropertiesService.js +3 -2
- package/dist/elements/services/propertiesService/services/CssPropertiesService.d.ts +2 -1
- package/dist/elements/services/propertiesService/services/CssPropertiesService.js +4 -3
- package/dist/elements/services/propertiesService/services/ListPropertiesService.d.ts +2 -1
- package/dist/elements/services/propertiesService/services/ListPropertiesService.js +3 -2
- package/dist/elements/services/propertiesService/services/NativeElementsPropertiesService.d.ts +2 -1
- package/dist/elements/services/propertiesService/services/NativeElementsPropertiesService.js +3 -2
- package/dist/elements/services/propertiesService/services/WebcomponentManifestPropertiesService.d.ts +2 -2
- package/dist/elements/services/propertiesService/services/WebcomponentManifestPropertiesService.js +3 -2
- package/dist/elements/services/selectionService/SelectionService.d.ts +4 -0
- package/dist/elements/services/selectionService/SelectionService.js +11 -0
- package/dist/elements/services/undoService/UndoService.d.ts +1 -1
- package/dist/elements/services/undoService/transactionItems/AttributeChangeAction.js +4 -4
- package/dist/elements/services/undoService/transactionItems/CssStyleChangeAction.js +4 -4
- package/dist/elements/services/undoService/transactionItems/InsertAction.d.ts +2 -2
- package/dist/elements/services/undoService/transactionItems/InsertAction.js +5 -5
- package/dist/elements/services/undoService/transactionItems/SelectionChangedAction.d.ts +14 -0
- package/dist/elements/services/undoService/transactionItems/SelectionChangedAction.js +28 -0
- package/dist/elements/widgets/codeView/code-view-monaco.js +21 -1
- package/dist/elements/widgets/designerView/designerCanvas.js +8 -4
- package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +36 -31
- package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.js +3 -0
- package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +2 -2
- package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtensionProvider.js +2 -1
- package/dist/elements/widgets/designerView/extensions/svg/LineExtensionProvider.js +3 -1
- package/dist/elements/widgets/designerView/extensions/svg/PathExtensionProvider.js +3 -1
- package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider.js +3 -1
- package/dist/elements/widgets/propertyGrid/PropertyGrid.js +5 -0
- package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.d.ts +1 -0
- package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.js +34 -7
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/package.json +4 -4
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ITransactionItem } from '../ITransactionItem';
|
|
2
2
|
import { IDesignItem } from '../../../item/IDesignItem';
|
|
3
3
|
export declare class InsertAction implements ITransactionItem {
|
|
4
|
-
constructor(
|
|
4
|
+
constructor(containerItem: IDesignItem, index: number, newItem: IDesignItem);
|
|
5
5
|
title?: string;
|
|
6
6
|
get affectedItems(): IDesignItem[];
|
|
7
7
|
undo(): void;
|
|
8
8
|
do(): void;
|
|
9
|
-
|
|
9
|
+
containerItem: IDesignItem;
|
|
10
10
|
index: number;
|
|
11
11
|
newItem: IDesignItem;
|
|
12
12
|
mergeWith(other: ITransactionItem): boolean;
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
export class InsertAction {
|
|
2
|
-
constructor(
|
|
2
|
+
constructor(containerItem, index, newItem) {
|
|
3
3
|
this.title = "Insert Item";
|
|
4
|
-
this.
|
|
4
|
+
this.containerItem = containerItem;
|
|
5
5
|
this.index = index;
|
|
6
6
|
this.newItem = newItem;
|
|
7
7
|
}
|
|
8
8
|
title;
|
|
9
9
|
get affectedItems() {
|
|
10
|
-
return [this.
|
|
10
|
+
return [this.containerItem, this.newItem];
|
|
11
11
|
}
|
|
12
12
|
undo() {
|
|
13
13
|
this.newItem.parent._removeChildInternal(this.newItem);
|
|
14
14
|
this.affectedItems[0].instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'removed', designItems: [this.newItem] });
|
|
15
15
|
}
|
|
16
16
|
do() {
|
|
17
|
-
this.
|
|
17
|
+
this.containerItem._insertChildInternal(this.newItem, this.index);
|
|
18
18
|
this.affectedItems[0].instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'added', designItems: [this.newItem] });
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
containerItem;
|
|
21
21
|
index;
|
|
22
22
|
newItem;
|
|
23
23
|
mergeWith(other) {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ITransactionItem } from '../ITransactionItem';
|
|
2
|
+
import { IDesignItem } from '../../../item/IDesignItem';
|
|
3
|
+
import { ISelectionService } from '../../selectionService/ISelectionService';
|
|
4
|
+
export declare class SelectionChangedAction implements ITransactionItem {
|
|
5
|
+
constructor(oldSelection: IDesignItem[], newSelection: IDesignItem[], selectionService: ISelectionService);
|
|
6
|
+
title?: string;
|
|
7
|
+
get affectedItems(): IDesignItem[];
|
|
8
|
+
undo(): void;
|
|
9
|
+
do(): void;
|
|
10
|
+
oldSelection: IDesignItem[];
|
|
11
|
+
newSelection: IDesignItem[];
|
|
12
|
+
selectionService: ISelectionService;
|
|
13
|
+
mergeWith(other: ITransactionItem): boolean;
|
|
14
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export class SelectionChangedAction {
|
|
2
|
+
constructor(oldSelection, newSelection, selectionService) {
|
|
3
|
+
this.title = "Change Selection";
|
|
4
|
+
this.oldSelection = oldSelection;
|
|
5
|
+
this.newSelection = newSelection;
|
|
6
|
+
this.selectionService = selectionService;
|
|
7
|
+
}
|
|
8
|
+
title;
|
|
9
|
+
get affectedItems() {
|
|
10
|
+
if (this.oldSelection && this.newSelection)
|
|
11
|
+
return [...this.oldSelection, ...this.newSelection];
|
|
12
|
+
if (this.oldSelection)
|
|
13
|
+
return [...this.oldSelection];
|
|
14
|
+
return [...this.newSelection];
|
|
15
|
+
}
|
|
16
|
+
undo() {
|
|
17
|
+
this.selectionService._withoutUndoSetSelectedElements(this.oldSelection);
|
|
18
|
+
}
|
|
19
|
+
do() {
|
|
20
|
+
this.selectionService._withoutUndoSetSelectedElements(this.newSelection);
|
|
21
|
+
}
|
|
22
|
+
oldSelection;
|
|
23
|
+
newSelection;
|
|
24
|
+
selectionService;
|
|
25
|
+
mergeWith(other) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -75,8 +75,28 @@ export class CodeViewMonaco extends BaseCustomWebComponentLazyAppend {
|
|
|
75
75
|
minimap: {
|
|
76
76
|
size: 'fill'
|
|
77
77
|
},
|
|
78
|
-
fixedOverflowWidgets: true
|
|
78
|
+
fixedOverflowWidgets: true,
|
|
79
|
+
scrollbar: {
|
|
80
|
+
useShadows: false,
|
|
81
|
+
verticalHasArrows: true,
|
|
82
|
+
horizontalHasArrows: true,
|
|
83
|
+
vertical: 'visible',
|
|
84
|
+
horizontal: 'visible'
|
|
85
|
+
}
|
|
79
86
|
});
|
|
87
|
+
//@ts-ignore
|
|
88
|
+
monaco.editor.defineTheme('myTheme', {
|
|
89
|
+
base: 'vs',
|
|
90
|
+
inherit: true,
|
|
91
|
+
//@ts-ignore
|
|
92
|
+
rules: [{ background: 'EDF9FA' }],
|
|
93
|
+
colors: {
|
|
94
|
+
'editor.selectionBackground': '#add6ff',
|
|
95
|
+
'editor.inactiveSelectionBackground': '#add6ff'
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
//@ts-ignore
|
|
99
|
+
monaco.editor.setTheme('myTheme');
|
|
80
100
|
this._monacoEditor.layout();
|
|
81
101
|
let changeContentListener = this._monacoEditor.getModel().onDidChangeContent(e => {
|
|
82
102
|
this.onTextChanged.emit(this._monacoEditor.getValue());
|
|
@@ -427,7 +427,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
427
427
|
this.serviceContainer = serviceContainer;
|
|
428
428
|
this.instanceServiceContainer = new InstanceServiceContainer(this);
|
|
429
429
|
this.instanceServiceContainer.register("undoService", new UndoService(this));
|
|
430
|
-
this.instanceServiceContainer.register("selectionService", new SelectionService);
|
|
430
|
+
this.instanceServiceContainer.register("selectionService", new SelectionService(this));
|
|
431
431
|
this.rootDesignItem = DesignItem.GetOrCreateDesignItem(this._canvas, this.serviceContainer, this.instanceServiceContainer);
|
|
432
432
|
this.instanceServiceContainer.register("contentService", new ContentService(this.rootDesignItem));
|
|
433
433
|
this.extensionManager = new ExtensionManager(this);
|
|
@@ -498,7 +498,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
498
498
|
this.rootDesignItem._removeChildInternal(i);
|
|
499
499
|
this.addDesignItems(designItems);
|
|
500
500
|
this.instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'parsed' });
|
|
501
|
-
this.instanceServiceContainer.selectionService.
|
|
501
|
+
this.instanceServiceContainer.selectionService._withoutUndoSetSelectedElements(null);
|
|
502
502
|
}
|
|
503
503
|
addDesignItems(designItems) {
|
|
504
504
|
if (designItems) {
|
|
@@ -663,9 +663,13 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
663
663
|
di.setStyle('position', 'absolute');
|
|
664
664
|
di.setStyle('left', (position.x - pos.x) + 'px');
|
|
665
665
|
di.setStyle('top', (position.y - pos.y) + 'px');
|
|
666
|
+
const containerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainer, getComputedStyle(newContainer.element)));
|
|
667
|
+
containerService.enterContainer(newContainer, [di]);
|
|
666
668
|
this.instanceServiceContainer.undoService.execute(new InsertAction(newContainer, newContainer.childCount, di));
|
|
667
|
-
|
|
668
|
-
|
|
669
|
+
requestAnimationFrame(() => {
|
|
670
|
+
this.instanceServiceContainer.selectionService.setSelectedElements([di]);
|
|
671
|
+
grp.commit();
|
|
672
|
+
});
|
|
669
673
|
}
|
|
670
674
|
}
|
|
671
675
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventNames } from "../../../../enums/EventNames";
|
|
2
|
-
import {
|
|
2
|
+
import { transformPointByInverseMatrix, getDomMatrix, getDesignerCanvasNormalizedTransformedCornerDOMPoints, normalizeToAbsolutePosition } from "../../../helper/TransformHelper.js";
|
|
3
3
|
import { AbstractExtension } from './AbstractExtension';
|
|
4
4
|
export class ResizeExtension extends AbstractExtension {
|
|
5
5
|
resizeAllSelected;
|
|
@@ -70,7 +70,7 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
70
70
|
//#endregion Calc element's dimension
|
|
71
71
|
this._initialSizes.push({ width: rect.width / this.designerCanvas.scaleFactor, height: rect.height / this.designerCanvas.scaleFactor });
|
|
72
72
|
this.extendedItem.element.style.width = this._initialSizes[0].width + 'px';
|
|
73
|
-
const toArr = getComputedStyle(this.extendedItem.element).transformOrigin.split(' ').map(x =>
|
|
73
|
+
const toArr = getComputedStyle(this.extendedItem.element).transformOrigin.split(' ').map(x => parseFloat(x.replace('px', '')));
|
|
74
74
|
const transformOrigin = new DOMPoint(toArr[0], toArr[1]);
|
|
75
75
|
this._initialComputedTransformOrigins.push(transformOrigin);
|
|
76
76
|
this._initialTransformOrigins.push(this.extendedItem.element.style.transformOrigin);
|
|
@@ -158,116 +158,121 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
158
158
|
let trackX = Math.round(diff.x - this._initialPoint.x - this._offsetPoint.x);
|
|
159
159
|
let trackY = Math.round(diff.y - this._initialPoint.y - this._offsetPoint.y);
|
|
160
160
|
let matrix = getDomMatrix(this.extendedItem.element);
|
|
161
|
-
let transformedTrack =
|
|
161
|
+
let transformedTrack = transformPointByInverseMatrix(new DOMPoint(trackX, trackY, 0, 0), matrix);
|
|
162
|
+
let deltaX = transformedTrack.x;
|
|
163
|
+
let deltaY = transformedTrack.y;
|
|
164
|
+
if (event.shiftKey) {
|
|
165
|
+
deltaX = deltaX < deltaY ? deltaX : deltaY;
|
|
166
|
+
deltaY = deltaX;
|
|
167
|
+
}
|
|
162
168
|
let i = 0;
|
|
163
169
|
let width = null;
|
|
164
170
|
let height = null;
|
|
165
171
|
switch (this._actionModeStarted) {
|
|
166
172
|
case 'e-resize':
|
|
167
|
-
width = (this._initialSizes[i].width +
|
|
173
|
+
width = (this._initialSizes[i].width + deltaX);
|
|
168
174
|
this.extendedItem.element.style.width = width + 'px';
|
|
169
175
|
if (this.resizeAllSelected) {
|
|
170
176
|
i++;
|
|
171
177
|
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
172
178
|
if (designItem !== this.extendedItem) {
|
|
173
|
-
designItem.element.style.width = this._initialSizes[i].width +
|
|
179
|
+
designItem.element.style.width = this._initialSizes[i].width + deltaX + 'px';
|
|
174
180
|
}
|
|
175
181
|
}
|
|
176
182
|
}
|
|
177
183
|
break;
|
|
178
184
|
case 'se-resize':
|
|
179
|
-
width = (this._initialSizes[i].width +
|
|
185
|
+
width = (this._initialSizes[i].width + deltaX);
|
|
180
186
|
this.extendedItem.element.style.width = width + 'px';
|
|
181
|
-
height = (this._initialSizes[i].height +
|
|
187
|
+
height = (this._initialSizes[i].height + deltaY);
|
|
182
188
|
this.extendedItem.element.style.height = height + 'px';
|
|
183
|
-
console.log(this.extendedItem.element.style.transformOrigin);
|
|
184
189
|
if (this.resizeAllSelected) {
|
|
185
190
|
i++;
|
|
186
191
|
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
187
192
|
if (designItem !== this.extendedItem) {
|
|
188
|
-
designItem.element.style.width = this._initialSizes[i].width +
|
|
189
|
-
designItem.element.style.height = this._initialSizes[i].height +
|
|
193
|
+
designItem.element.style.width = this._initialSizes[i].width + deltaX + 'px';
|
|
194
|
+
designItem.element.style.height = this._initialSizes[i].height + deltaY + 'px';
|
|
190
195
|
}
|
|
191
196
|
}
|
|
192
197
|
}
|
|
193
198
|
break;
|
|
194
199
|
case 's-resize':
|
|
195
|
-
height = (this._initialSizes[i].height +
|
|
200
|
+
height = (this._initialSizes[i].height + deltaY);
|
|
196
201
|
this.extendedItem.element.style.height = height + 'px';
|
|
197
202
|
if (this.resizeAllSelected) {
|
|
198
203
|
i++;
|
|
199
204
|
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
200
205
|
if (designItem !== this.extendedItem) {
|
|
201
|
-
designItem.element.style.height = this._initialSizes[i].height +
|
|
206
|
+
designItem.element.style.height = this._initialSizes[i].height + deltaY + 'px';
|
|
202
207
|
}
|
|
203
208
|
}
|
|
204
209
|
}
|
|
205
210
|
break;
|
|
206
211
|
case 'sw-resize':
|
|
207
|
-
width = (this._initialSizes[i].width -
|
|
212
|
+
width = (this._initialSizes[i].width - deltaX);
|
|
208
213
|
this.extendedItem.element.style.width = width + 'px';
|
|
209
|
-
height = (this._initialSizes[i].height +
|
|
214
|
+
height = (this._initialSizes[i].height + deltaY);
|
|
210
215
|
this.extendedItem.element.style.height = height + 'px';
|
|
211
216
|
if (this.resizeAllSelected) {
|
|
212
217
|
i++;
|
|
213
218
|
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
214
219
|
if (designItem !== this.extendedItem) {
|
|
215
|
-
designItem.element.style.width = this._initialSizes[i].width +
|
|
216
|
-
designItem.element.style.height = this._initialSizes[i].height +
|
|
220
|
+
designItem.element.style.width = this._initialSizes[i].width + deltaX + 'px';
|
|
221
|
+
designItem.element.style.height = this._initialSizes[i].height + deltaY + 'px';
|
|
217
222
|
}
|
|
218
223
|
}
|
|
219
224
|
}
|
|
220
225
|
break;
|
|
221
226
|
case 'w-resize':
|
|
222
|
-
width = (this._initialSizes[i].width -
|
|
227
|
+
width = (this._initialSizes[i].width - deltaX);
|
|
223
228
|
this.extendedItem.element.style.width = width + 'px';
|
|
224
229
|
if (this.resizeAllSelected) {
|
|
225
230
|
i++;
|
|
226
231
|
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
227
232
|
if (designItem !== this.extendedItem) {
|
|
228
|
-
designItem.element.style.width = this._initialSizes[i].width +
|
|
233
|
+
designItem.element.style.width = this._initialSizes[i].width + deltaX + 'px';
|
|
229
234
|
}
|
|
230
235
|
}
|
|
231
236
|
}
|
|
232
237
|
break;
|
|
233
238
|
case 'nw-resize':
|
|
234
|
-
width = (this._initialSizes[i].width -
|
|
239
|
+
width = (this._initialSizes[i].width - deltaX);
|
|
235
240
|
this.extendedItem.element.style.width = width + 'px';
|
|
236
|
-
height = (this._initialSizes[i].height -
|
|
241
|
+
height = (this._initialSizes[i].height - deltaY);
|
|
237
242
|
this.extendedItem.element.style.height = height + 'px';
|
|
238
243
|
if (this.resizeAllSelected) {
|
|
239
244
|
i++;
|
|
240
245
|
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
241
246
|
if (designItem !== this.extendedItem) {
|
|
242
|
-
designItem.element.style.width = this._initialSizes[i].width +
|
|
243
|
-
designItem.element.style.height = this._initialSizes[i].height +
|
|
247
|
+
designItem.element.style.width = this._initialSizes[i].width + deltaX + 'px';
|
|
248
|
+
designItem.element.style.height = this._initialSizes[i].height + deltaY + 'px';
|
|
244
249
|
}
|
|
245
250
|
}
|
|
246
251
|
}
|
|
247
252
|
break;
|
|
248
253
|
case 'n-resize':
|
|
249
|
-
height = (this._initialSizes[i].height -
|
|
254
|
+
height = (this._initialSizes[i].height - deltaY);
|
|
250
255
|
this.extendedItem.element.style.height = height + 'px';
|
|
251
256
|
if (this.resizeAllSelected) {
|
|
252
257
|
i++;
|
|
253
258
|
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
254
259
|
if (designItem !== this.extendedItem) {
|
|
255
|
-
designItem.element.style.height = this._initialSizes[i].height +
|
|
260
|
+
designItem.element.style.height = this._initialSizes[i].height + deltaY + 'px';
|
|
256
261
|
}
|
|
257
262
|
}
|
|
258
263
|
}
|
|
259
264
|
break;
|
|
260
265
|
case 'ne-resize':
|
|
261
|
-
width = (this._initialSizes[i].width +
|
|
266
|
+
width = (this._initialSizes[i].width + deltaX);
|
|
262
267
|
this.extendedItem.element.style.width = width + 'px';
|
|
263
|
-
height = (this._initialSizes[i].height -
|
|
268
|
+
height = (this._initialSizes[i].height - deltaY);
|
|
264
269
|
this.extendedItem.element.style.height = height + 'px';
|
|
265
270
|
if (this.resizeAllSelected) {
|
|
266
271
|
i++;
|
|
267
272
|
for (const designItem of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements) {
|
|
268
273
|
if (designItem !== this.extendedItem) {
|
|
269
|
-
designItem.element.style.width = this._initialSizes[i].width +
|
|
270
|
-
designItem.element.style.height = this._initialSizes[i].height +
|
|
274
|
+
designItem.element.style.width = this._initialSizes[i].width + deltaX + 'px';
|
|
275
|
+
designItem.element.style.height = this._initialSizes[i].height + deltaY + 'px';
|
|
271
276
|
}
|
|
272
277
|
}
|
|
273
278
|
}
|
|
@@ -286,14 +291,14 @@ export class ResizeExtension extends AbstractExtension {
|
|
|
286
291
|
this.extendedItem.setStyle('height', this.extendedItem.element.style.height);
|
|
287
292
|
this.extendedItem.setStyle('left', normalizeToAbsolutePosition(this.extendedItem.element, 'left'));
|
|
288
293
|
this.extendedItem.setStyle('top', normalizeToAbsolutePosition(this.extendedItem.element, 'top'));
|
|
289
|
-
let p3Abs = new DOMPoint(this.extendedItem.element.offsetLeft +
|
|
294
|
+
let p3Abs = new DOMPoint(this.extendedItem.element.offsetLeft + parseFloat(getComputedStyle(this.extendedItem.element).transformOrigin.split(' ')[0].replace('px', '')), this.extendedItem.element.offsetTop + parseFloat(getComputedStyle(this.extendedItem.element).transformOrigin.split(' ')[1].replace('px', '')));
|
|
290
295
|
this.extendedItem.element.style.transformOrigin = this._initialTransformOrigins[0];
|
|
291
|
-
let p1Abs = new DOMPoint(this.extendedItem.element.offsetLeft +
|
|
296
|
+
let p1Abs = new DOMPoint(this.extendedItem.element.offsetLeft + parseFloat(getComputedStyle(this.extendedItem.element).transformOrigin.split(' ')[0].replace('px', '')), this.extendedItem.element.offsetTop + parseFloat(getComputedStyle(this.extendedItem.element).transformOrigin.split(' ')[1].replace('px', '')));
|
|
292
297
|
let p1 = new DOMPoint(p1Abs.x - p3Abs.x, -(p1Abs.y - p3Abs.y));
|
|
293
298
|
let matrix = new DOMMatrix(getComputedStyle(this.extendedItem.element).transform);
|
|
294
299
|
let deltaX = 0;
|
|
295
300
|
let deltaY = 0;
|
|
296
|
-
let p1transformed = p1
|
|
301
|
+
let p1transformed = transformPointByInverseMatrix(p1, matrix);
|
|
297
302
|
let p2Abs = new DOMPoint(p3Abs.x + p1transformed.x, p3Abs.y - p1transformed.y);
|
|
298
303
|
let p1p2 = new DOMPoint(p2Abs.x - p1Abs.x, -(p2Abs.y - p1Abs.y));
|
|
299
304
|
let p1p2transformed = p1p2.matrixTransform(matrix);
|
|
@@ -2,6 +2,9 @@ import { RotateExtension } from "./RotateExtension";
|
|
|
2
2
|
import { css } from "@node-projects/base-custom-webcomponent";
|
|
3
3
|
export class RotateExtensionProvider {
|
|
4
4
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
5
|
+
if (designItem.element instanceof SVGElement) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
5
8
|
return true;
|
|
6
9
|
}
|
|
7
10
|
getExtension(extensionManager, designerView, designItem) {
|
|
@@ -23,8 +23,8 @@ export class TransformOriginExtension extends AbstractExtension {
|
|
|
23
23
|
this._circle.addEventListener(EventNames.PointerDown, event => this.pointerEvent(event));
|
|
24
24
|
this._circle.addEventListener(EventNames.PointerMove, event => this.pointerEvent(event));
|
|
25
25
|
this._circle.addEventListener(EventNames.PointerUp, event => this.pointerEvent(event)); //TODO: -> assign to window
|
|
26
|
-
if (this.extendedItem.
|
|
27
|
-
this._oldValue = this.extendedItem.
|
|
26
|
+
if (this.extendedItem.getStyle('transform-origin')) {
|
|
27
|
+
this._oldValue = this.extendedItem.getStyle('transform-origin');
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
pointerEvent(event) {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { EllipsisExtension } from "./EllipsisExtension";
|
|
2
|
+
import { isVisualSvgElement } from "../../../../helper/SvgHelper";
|
|
2
3
|
export class EllipsisExtensionProvider {
|
|
3
4
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
4
5
|
if (designItem.node instanceof SVGEllipseElement) {
|
|
5
|
-
return
|
|
6
|
+
return isVisualSvgElement(designItem.node);
|
|
6
7
|
}
|
|
7
8
|
return false;
|
|
8
9
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { LineExtension } from "./LineExtension";
|
|
2
|
+
import { isVisualSvgElement } from "../../../../helper/SvgHelper";
|
|
2
3
|
export class LineExtensionProvider {
|
|
3
4
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
4
5
|
if (designItem.node instanceof SVGLineElement) {
|
|
5
|
-
return
|
|
6
|
+
return isVisualSvgElement(designItem.node);
|
|
7
|
+
;
|
|
6
8
|
}
|
|
7
9
|
return false;
|
|
8
10
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { PathExtension } from "./PathExtension";
|
|
2
|
+
import { isVisualSvgElement } from "../../../../helper/SvgHelper";
|
|
2
3
|
export class PathExtensionProvider {
|
|
3
4
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
4
5
|
if (designItem.node instanceof SVGPathElement) {
|
|
5
|
-
return
|
|
6
|
+
return isVisualSvgElement(designItem.node);
|
|
7
|
+
;
|
|
6
8
|
}
|
|
7
9
|
return false;
|
|
8
10
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { RectExtension } from "./RectExtension";
|
|
2
|
+
import { isVisualSvgElement } from "../../../../helper/SvgHelper";
|
|
2
3
|
export class RectExtentionProvider {
|
|
3
4
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
4
5
|
if (designItem.node instanceof SVGRectElement) {
|
|
5
|
-
return
|
|
6
|
+
return isVisualSvgElement(designItem.node);
|
|
7
|
+
;
|
|
6
8
|
}
|
|
7
9
|
return false;
|
|
8
10
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PropertyGridPropertyList } from './PropertyGridPropertyList';
|
|
2
2
|
import { DesignerTabControl } from '../../controls/DesignerTabControl';
|
|
3
3
|
import { BaseCustomWebComponentLazyAppend, css } from '@node-projects/base-custom-webcomponent';
|
|
4
|
+
import { RefreshMode } from '../../services/propertiesService/IPropertiesService';
|
|
4
5
|
export class PropertyGrid extends BaseCustomWebComponentLazyAppend {
|
|
5
6
|
_serviceContainer;
|
|
6
7
|
_designerTabControl;
|
|
@@ -35,6 +36,10 @@ export class PropertyGrid extends BaseCustomWebComponentLazyAppend {
|
|
|
35
36
|
});
|
|
36
37
|
this._itemsObserver = new MutationObserver((m) => {
|
|
37
38
|
for (const a of this._propertyGridPropertyLists) {
|
|
39
|
+
if (a.propertiesService.getRefreshMode(this._selectedItems[0]) == RefreshMode.fullOnValueChange) {
|
|
40
|
+
a.createElements(this._selectedItems[0]);
|
|
41
|
+
a.designItemsChanged(this._selectedItems);
|
|
42
|
+
}
|
|
38
43
|
a.refreshForDesignItems(this._selectedItems);
|
|
39
44
|
}
|
|
40
45
|
});
|
|
@@ -9,6 +9,7 @@ export declare class PropertyGridPropertyList extends BaseCustomWebComponentLazy
|
|
|
9
9
|
private _serviceContainer;
|
|
10
10
|
private _propertiesService;
|
|
11
11
|
private _designItems;
|
|
12
|
+
get propertiesService(): IPropertiesService;
|
|
12
13
|
static get style(): CSSStyleSheet;
|
|
13
14
|
constructor(serviceContainer: ServiceContainer);
|
|
14
15
|
setPropertiesService(propertiesService: IPropertiesService): void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BaseCustomWebComponentLazyAppend, css, DomHelper } from '@node-projects/base-custom-webcomponent';
|
|
2
|
+
import { RefreshMode } from '../../services/propertiesService/IPropertiesService';
|
|
2
3
|
import { ValueType } from '../../services/propertiesService/ValueType';
|
|
3
4
|
import { ContextMenu } from '../../helper/contextMenu/ContextMenu';
|
|
4
5
|
import { PropertyType } from '../../services/propertiesService/PropertyType';
|
|
@@ -8,6 +9,9 @@ export class PropertyGridPropertyList extends BaseCustomWebComponentLazyAppend {
|
|
|
8
9
|
_serviceContainer;
|
|
9
10
|
_propertiesService;
|
|
10
11
|
_designItems;
|
|
12
|
+
get propertiesService() {
|
|
13
|
+
return this._propertiesService;
|
|
14
|
+
}
|
|
11
15
|
static get style() {
|
|
12
16
|
return css `
|
|
13
17
|
:host{
|
|
@@ -93,7 +97,7 @@ export class PropertyGridPropertyList extends BaseCustomWebComponentLazyAppend {
|
|
|
93
97
|
}
|
|
94
98
|
}
|
|
95
99
|
createElements(designItem) {
|
|
96
|
-
if (this._propertiesService && (this._propertiesService.
|
|
100
|
+
if (this._propertiesService && (this._propertiesService.getRefreshMode(designItem) != RefreshMode.none) || this._propertyMap.size == 0) {
|
|
97
101
|
DomHelper.removeAllChildnodes(this._div);
|
|
98
102
|
this._propertyMap.clear();
|
|
99
103
|
if (this._propertiesService) {
|
|
@@ -139,11 +143,29 @@ export class PropertyGridPropertyList extends BaseCustomWebComponentLazyAppend {
|
|
|
139
143
|
this._div.appendChild(label);
|
|
140
144
|
}
|
|
141
145
|
else {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
146
|
+
if (!p.renamable) {
|
|
147
|
+
let label = document.createElement("label");
|
|
148
|
+
label.htmlFor = p.name;
|
|
149
|
+
label.textContent = p.name;
|
|
150
|
+
label.title = p.name;
|
|
151
|
+
this._div.appendChild(label);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
let label = document.createElement("input");
|
|
155
|
+
let input = editor.element;
|
|
156
|
+
label.value = p.name;
|
|
157
|
+
label.onkeyup = e => {
|
|
158
|
+
if (e.key == 'Enter' && label.value) {
|
|
159
|
+
const pg = this._designItems[0].openGroup("rename property name from '" + p.name + "' to '" + label.value + "'");
|
|
160
|
+
p.service.clearValue(this._designItems, p);
|
|
161
|
+
p.name = label.value;
|
|
162
|
+
p.service.setValue(this._designItems, p, input.value);
|
|
163
|
+
pg.commit();
|
|
164
|
+
this._designItems[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(this._designItems);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
this._div.appendChild(label);
|
|
168
|
+
}
|
|
147
169
|
}
|
|
148
170
|
editor.element.id = p.name;
|
|
149
171
|
this._div.appendChild(editor.element);
|
|
@@ -156,7 +178,12 @@ export class PropertyGridPropertyList extends BaseCustomWebComponentLazyAppend {
|
|
|
156
178
|
}
|
|
157
179
|
openContextMenu(event, property) {
|
|
158
180
|
const ctxMenu = [
|
|
159
|
-
{
|
|
181
|
+
{
|
|
182
|
+
title: 'clear', action: (e) => {
|
|
183
|
+
property.service.clearValue(this._designItems, property);
|
|
184
|
+
this._designItems[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(this._designItems);
|
|
185
|
+
}
|
|
186
|
+
},
|
|
160
187
|
];
|
|
161
188
|
if (this._serviceContainer.config.openBindingsEditor) {
|
|
162
189
|
ctxMenu.push(...[
|
package/dist/index.d.ts
CHANGED
|
@@ -107,7 +107,6 @@ export * from "./elements/services/undoService/transactionItems/CssStyleChangeAc
|
|
|
107
107
|
export * from "./elements/services/undoService/transactionItems/DeleteAction.js";
|
|
108
108
|
export * from "./elements/services/undoService/transactionItems/InsertAction.js";
|
|
109
109
|
export * from "./elements/services/undoService/transactionItems/InsertChildAction.js";
|
|
110
|
-
export * from "./elements/services/undoService/transactionItems/PropertyChangeAction.js";
|
|
111
110
|
export * from "./elements/services/BaseServiceContainer.js";
|
|
112
111
|
export * from "./elements/services/InstanceServiceContainer.js";
|
|
113
112
|
export type { IService } from "./elements/services/IService.js";
|
package/dist/index.js
CHANGED
|
@@ -74,7 +74,6 @@ export * from "./elements/services/undoService/transactionItems/CssStyleChangeAc
|
|
|
74
74
|
export * from "./elements/services/undoService/transactionItems/DeleteAction.js";
|
|
75
75
|
export * from "./elements/services/undoService/transactionItems/InsertAction.js";
|
|
76
76
|
export * from "./elements/services/undoService/transactionItems/InsertChildAction.js";
|
|
77
|
-
export * from "./elements/services/undoService/transactionItems/PropertyChangeAction.js";
|
|
78
77
|
export * from "./elements/services/BaseServiceContainer.js";
|
|
79
78
|
export * from "./elements/services/InstanceServiceContainer.js";
|
|
80
79
|
export * from "./elements/services/ServiceContainer.js";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"description": "A UI designer for Polymer apps",
|
|
3
3
|
"name": "@node-projects/web-component-designer",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.156",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"author": "",
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"prepublishOnly": "npm run build"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@node-projects/base-custom-webcomponent": "^0.10.
|
|
17
|
-
"@types/node": "^18.11.
|
|
16
|
+
"@node-projects/base-custom-webcomponent": "^0.10.5",
|
|
17
|
+
"@types/node": "^18.11.11",
|
|
18
18
|
"construct-style-sheets-polyfill": "^3.1.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@types/codemirror": "^5.60.5",
|
|
25
25
|
"@types/jquery": "^3.5.14",
|
|
26
26
|
"@types/jquery.fancytree": "0.0.7",
|
|
27
|
-
"ace-builds": "^1.13.
|
|
27
|
+
"ace-builds": "^1.13.2",
|
|
28
28
|
"codemirror": "^6.0.1",
|
|
29
29
|
"esprima-next": "^5.8.4",
|
|
30
30
|
"html2canvas": "*",
|