@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.
Files changed (65) hide show
  1. package/dist/elements/helper/ElementHelper.js +31 -6
  2. package/dist/elements/helper/SvgHelper.d.ts +1 -0
  3. package/dist/elements/helper/SvgHelper.js +13 -0
  4. package/dist/elements/helper/TransformHelper.d.ts +5 -1
  5. package/dist/elements/helper/TransformHelper.js +35 -27
  6. package/dist/elements/helper/contextMenu/ContextMenu.js +9 -1
  7. package/dist/elements/item/DesignItem.d.ts +12 -2
  8. package/dist/elements/item/DesignItem.js +55 -20
  9. package/dist/elements/item/IDesignItem.d.ts +10 -2
  10. package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.js +1 -1
  11. package/dist/elements/services/htmlParserService/DefaultHtmlParserService.d.ts +1 -1
  12. package/dist/elements/services/htmlParserService/DefaultHtmlParserService.js +3 -3
  13. package/dist/elements/services/htmlParserService/LitElementParserService.js +2 -2
  14. package/dist/elements/services/htmlParserService/NodeHtmlParserService.js +2 -2
  15. package/dist/elements/services/htmlWriterService/AbstractHtmlWriterService.js +3 -3
  16. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.js +3 -3
  17. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService.js +3 -3
  18. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.d.ts +2 -2
  19. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.js +3 -2
  20. package/dist/elements/services/modelCommandService/DefaultModelCommandService.js +6 -4
  21. package/dist/elements/services/placementService/DefaultPlacementService.js +5 -5
  22. package/dist/elements/services/propertiesService/IPropertiesService.d.ts +6 -1
  23. package/dist/elements/services/propertiesService/IPropertiesService.js +6 -1
  24. package/dist/elements/services/propertiesService/IProperty.d.ts +1 -0
  25. package/dist/elements/services/propertiesService/propertyEditors/BasePropertyEditor.js +4 -4
  26. package/dist/elements/services/propertiesService/services/AbstractPolymerLikePropertiesService.d.ts +2 -1
  27. package/dist/elements/services/propertiesService/services/AbstractPolymerLikePropertiesService.js +3 -2
  28. package/dist/elements/services/propertiesService/services/AbstractPropertiesService.d.ts +3 -3
  29. package/dist/elements/services/propertiesService/services/AbstractPropertiesService.js +16 -20
  30. package/dist/elements/services/propertiesService/services/AttributesPropertiesService.d.ts +3 -3
  31. package/dist/elements/services/propertiesService/services/AttributesPropertiesService.js +10 -11
  32. package/dist/elements/services/propertiesService/services/CommonPropertiesService.d.ts +2 -1
  33. package/dist/elements/services/propertiesService/services/CommonPropertiesService.js +3 -2
  34. package/dist/elements/services/propertiesService/services/CssPropertiesService.d.ts +2 -1
  35. package/dist/elements/services/propertiesService/services/CssPropertiesService.js +4 -3
  36. package/dist/elements/services/propertiesService/services/ListPropertiesService.d.ts +2 -1
  37. package/dist/elements/services/propertiesService/services/ListPropertiesService.js +3 -2
  38. package/dist/elements/services/propertiesService/services/NativeElementsPropertiesService.d.ts +2 -1
  39. package/dist/elements/services/propertiesService/services/NativeElementsPropertiesService.js +3 -2
  40. package/dist/elements/services/propertiesService/services/WebcomponentManifestPropertiesService.d.ts +2 -2
  41. package/dist/elements/services/propertiesService/services/WebcomponentManifestPropertiesService.js +3 -2
  42. package/dist/elements/services/selectionService/SelectionService.d.ts +4 -0
  43. package/dist/elements/services/selectionService/SelectionService.js +11 -0
  44. package/dist/elements/services/undoService/UndoService.d.ts +1 -1
  45. package/dist/elements/services/undoService/transactionItems/AttributeChangeAction.js +4 -4
  46. package/dist/elements/services/undoService/transactionItems/CssStyleChangeAction.js +4 -4
  47. package/dist/elements/services/undoService/transactionItems/InsertAction.d.ts +2 -2
  48. package/dist/elements/services/undoService/transactionItems/InsertAction.js +5 -5
  49. package/dist/elements/services/undoService/transactionItems/SelectionChangedAction.d.ts +14 -0
  50. package/dist/elements/services/undoService/transactionItems/SelectionChangedAction.js +28 -0
  51. package/dist/elements/widgets/codeView/code-view-monaco.js +21 -1
  52. package/dist/elements/widgets/designerView/designerCanvas.js +8 -4
  53. package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +36 -31
  54. package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.js +3 -0
  55. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +2 -2
  56. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtensionProvider.js +2 -1
  57. package/dist/elements/widgets/designerView/extensions/svg/LineExtensionProvider.js +3 -1
  58. package/dist/elements/widgets/designerView/extensions/svg/PathExtensionProvider.js +3 -1
  59. package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider.js +3 -1
  60. package/dist/elements/widgets/propertyGrid/PropertyGrid.js +5 -0
  61. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.d.ts +1 -0
  62. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.js +34 -7
  63. package/dist/index.d.ts +0 -1
  64. package/dist/index.js +0 -1
  65. 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(designItem: IDesignItem, index: number, newItem: IDesignItem);
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
- designItem: IDesignItem;
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(designItem, index, newItem) {
2
+ constructor(containerItem, index, newItem) {
3
3
  this.title = "Insert Item";
4
- this.designItem = designItem;
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.designItem, this.newItem];
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.designItem._insertChildInternal(this.newItem, this.index);
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
- designItem;
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.setSelectedElements(null);
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
- grp.commit();
668
- requestAnimationFrame(() => this.instanceServiceContainer.selectionService.setSelectedElements([di]));
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 { convertCoordinates, getDomMatrix, getDesignerCanvasNormalizedTransformedCornerDOMPoints, normalizeToAbsolutePosition } from "../../../helper/TransformHelper.js";
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 => parseInt(x.replace('px', '')));
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 = convertCoordinates(new DOMPoint(trackX, trackY, 0, 0), matrix);
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 + transformedTrack.x);
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 + transformedTrack.x + 'px';
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 + transformedTrack.x);
185
+ width = (this._initialSizes[i].width + deltaX);
180
186
  this.extendedItem.element.style.width = width + 'px';
181
- height = (this._initialSizes[i].height + transformedTrack.y);
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 + transformedTrack.x + 'px';
189
- designItem.element.style.height = this._initialSizes[i].height + transformedTrack.y + 'px';
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 + transformedTrack.y);
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 + transformedTrack.y + 'px';
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 - transformedTrack.x);
212
+ width = (this._initialSizes[i].width - deltaX);
208
213
  this.extendedItem.element.style.width = width + 'px';
209
- height = (this._initialSizes[i].height + transformedTrack.y);
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 + transformedTrack.x + 'px';
216
- designItem.element.style.height = this._initialSizes[i].height + transformedTrack.y + 'px';
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 - transformedTrack.x);
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 + transformedTrack.x + 'px';
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 - transformedTrack.x);
239
+ width = (this._initialSizes[i].width - deltaX);
235
240
  this.extendedItem.element.style.width = width + 'px';
236
- height = (this._initialSizes[i].height - transformedTrack.y);
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 + transformedTrack.x + 'px';
243
- designItem.element.style.height = this._initialSizes[i].height + transformedTrack.y + 'px';
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 - transformedTrack.y);
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 + transformedTrack.y + 'px';
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 + transformedTrack.x);
266
+ width = (this._initialSizes[i].width + deltaX);
262
267
  this.extendedItem.element.style.width = width + 'px';
263
- height = (this._initialSizes[i].height - transformedTrack.y);
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 + transformedTrack.x + 'px';
270
- designItem.element.style.height = this._initialSizes[i].height + transformedTrack.y + 'px';
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 + parseInt(getComputedStyle(this.extendedItem.element).transformOrigin.split(' ')[0].replace('px', '')), this.extendedItem.element.offsetTop + parseInt(getComputedStyle(this.extendedItem.element).transformOrigin.split(' ')[1].replace('px', '')));
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 + parseInt(getComputedStyle(this.extendedItem.element).transformOrigin.split(' ')[0].replace('px', '')), this.extendedItem.element.offsetTop + parseInt(getComputedStyle(this.extendedItem.element).transformOrigin.split(' ')[1].replace('px', '')));
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.matrixTransform(matrix.inverse());
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.styles.get('transform-origin')) {
27
- this._oldValue = this.extendedItem.styles.get('transform-origin');
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 true;
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 true;
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 true;
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 true;
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.listNeedsRefresh(designItem)) || this._propertyMap.size == 0) {
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
- let label = document.createElement("label");
143
- label.htmlFor = p.name;
144
- label.textContent = p.name;
145
- label.title = p.name;
146
- this._div.appendChild(label);
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
- { title: 'clear', action: (e) => property.service.clearValue(this._designItems, property) },
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.154",
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.3",
17
- "@types/node": "^18.11.9",
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.1",
27
+ "ace-builds": "^1.13.2",
28
28
  "codemirror": "^6.0.1",
29
29
  "esprima-next": "^5.8.4",
30
30
  "html2canvas": "*",