@node-projects/web-component-designer 0.0.150 → 0.0.152

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 (60) hide show
  1. package/dist/elements/helper/ElementHelper.d.ts +5 -0
  2. package/dist/elements/helper/ElementHelper.js +20 -0
  3. package/dist/elements/helper/GridHelper.js +2 -2
  4. package/dist/elements/helper/LayoutHelper.js +8 -2
  5. package/dist/elements/helper/TransformHelper.d.ts +17 -3
  6. package/dist/elements/helper/TransformHelper.js +204 -13
  7. package/dist/elements/services/DefaultServiceBootstrap.js +10 -2
  8. package/dist/elements/services/placementService/DefaultPlacementService.d.ts +1 -0
  9. package/dist/elements/services/placementService/DefaultPlacementService.js +24 -8
  10. package/dist/elements/services/placementService/FlexBoxPlacementService.d.ts +1 -0
  11. package/dist/elements/services/placementService/FlexBoxPlacementService.js +2 -0
  12. package/dist/elements/services/placementService/GridPlacementService.d.ts +1 -0
  13. package/dist/elements/services/placementService/GridPlacementService.js +2 -0
  14. package/dist/elements/services/placementService/IPlacementService.d.ts +1 -0
  15. package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +4 -0
  16. package/dist/elements/widgets/designerView/IPlacementView.d.ts +0 -1
  17. package/dist/elements/widgets/designerView/designerCanvas.d.ts +2 -2
  18. package/dist/elements/widgets/designerView/designerCanvas.js +10 -8
  19. package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.d.ts +2 -0
  20. package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.js +8 -0
  21. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +1 -0
  22. package/dist/elements/widgets/designerView/extensions/ExtensionType.d.ts +2 -1
  23. package/dist/elements/widgets/designerView/extensions/ExtensionType.js +1 -0
  24. package/dist/elements/widgets/designerView/extensions/FlexboxExtension.d.ts +11 -0
  25. package/dist/elements/widgets/designerView/extensions/FlexboxExtension.js +20 -0
  26. package/dist/elements/widgets/designerView/extensions/FlexboxExtensionDesignViewConfigButtons.d.ts +6 -0
  27. package/dist/elements/widgets/designerView/extensions/FlexboxExtensionDesignViewConfigButtons.js +21 -0
  28. package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.d.ts +11 -0
  29. package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.js +17 -0
  30. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.js +3 -2
  31. package/dist/elements/widgets/designerView/extensions/GridExtension copy.d.ts +10 -0
  32. package/dist/elements/widgets/designerView/extensions/GridExtension copy.js +30 -0
  33. package/dist/elements/widgets/designerView/extensions/GridExtensionDesignViewConfigButtons copy.d.ts +6 -0
  34. package/dist/elements/widgets/designerView/extensions/GridExtensionDesignViewConfigButtons copy.js +21 -0
  35. package/dist/elements/widgets/designerView/extensions/GridExtensionProvider copy.d.ts +11 -0
  36. package/dist/elements/widgets/designerView/extensions/GridExtensionProvider copy.js +18 -0
  37. package/dist/elements/widgets/designerView/extensions/GridExtensionProvider.js +2 -1
  38. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.js +3 -2
  39. package/dist/elements/widgets/designerView/extensions/MouseOverExtension.js +3 -4
  40. package/dist/elements/widgets/designerView/extensions/PlacementExtension.d.ts +11 -0
  41. package/dist/elements/widgets/designerView/extensions/PlacementExtension.js +22 -0
  42. package/dist/elements/widgets/designerView/extensions/PlacementExtensionProvider.d.ts +10 -0
  43. package/dist/elements/widgets/designerView/extensions/PlacementExtensionProvider.js +13 -0
  44. package/dist/elements/widgets/designerView/extensions/ResizeExtension.d.ts +3 -1
  45. package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +201 -41
  46. package/dist/elements/widgets/designerView/extensions/RotateExtension.d.ts +8 -2
  47. package/dist/elements/widgets/designerView/extensions/RotateExtension.js +77 -43
  48. package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.js +1 -0
  49. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.d.ts +4 -1
  50. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.js +14 -9
  51. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +30 -20
  52. package/dist/elements/widgets/designerView/overlayLayerView.d.ts +1 -0
  53. package/dist/elements/widgets/designerView/overlayLayerView.js +10 -0
  54. package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +1 -0
  55. package/dist/elements/widgets/designerView/tools/PointerTool.js +16 -0
  56. package/dist/index.d.ts +3 -0
  57. package/dist/index.js +3 -0
  58. package/dist/interfaces/IPoint3D.d.ts +5 -0
  59. package/dist/interfaces/IPoint3D.js +1 -0
  60. package/package.json +1 -1
@@ -8,25 +8,39 @@ export class TransformOriginExtension extends AbstractExtension {
8
8
  super(extensionManager, designerView, extendedItem);
9
9
  }
10
10
  extend() {
11
- const rect = this.extendedItem.element.getBoundingClientRect();
11
+ const rect = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);
12
12
  const computed = getComputedStyle(this.extendedItem.element);
13
- const to = computed.transformOrigin.split(' ');
14
- this._circle = this._drawCircle((rect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor + Number.parseFloat(to[0].replace('px', '')), (rect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor + Number.parseFloat(to[1].replace('px', '')), 5 / this.designerCanvas.scaleFactor, 'svg-transform-origin');
13
+ const x = 0;
14
+ const y = 1;
15
+ const to = computed.transformOrigin.split(' '); // This value remains the same regardless of scalefactor
16
+ const toInPercentage = [];
17
+ toInPercentage[0] = parseInt(to[0]) / parseInt(getComputedStyle(this.extendedItem.element).width); // This value remains the same regardless of scalefactor
18
+ toInPercentage[1] = parseInt(to[1]) / parseInt(getComputedStyle(this.extendedItem.element).height); // This value remains the same regardless of scalefactor
19
+ const toDOMPoint = new DOMPoint(rect.x + toInPercentage[x] * rect.width, rect.y + toInPercentage[y] * rect.height);
20
+ this._circle = this._drawCircle(toDOMPoint.x, toDOMPoint.y, 5 / this.designerCanvas.scaleFactor, 'svg-transform-origin');
15
21
  this._circle.style.strokeWidth = (1 / this.designerCanvas.zoomFactor).toString();
16
- this._circle.style.cursor = 'pointer';
17
- this._circle2 = this._drawCircle((rect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor + Number.parseFloat(to[0].replace('px', '')), (rect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor + Number.parseFloat(to[1].replace('px', '')), 1 / this.designerCanvas.scaleFactor, 'svg-transform-origin');
22
+ this._circle.setAttribute('style', 'cursor: pointer');
23
+ this._circle2 = this._drawCircle(toDOMPoint.x, toDOMPoint.y, 1 / this.designerCanvas.scaleFactor, 'svg-transform-origin');
18
24
  this._circle2.style.strokeWidth = (1 / this.designerCanvas.zoomFactor).toString();
19
- this._circle2.style.pointerEvents = 'none';
25
+ this._circle2.setAttribute('style', 'pointer-events: none');
20
26
  this._circle.addEventListener(EventNames.PointerDown, event => this.pointerEvent(event));
21
27
  this._circle.addEventListener(EventNames.PointerMove, event => this.pointerEvent(event));
22
28
  this._circle.addEventListener(EventNames.PointerUp, event => this.pointerEvent(event)); //TODO: -> assign to window
29
+ if (this.extendedItem.styles.get('transform-origin') == null || this.extendedItem.styles.get('transform-origin') == '') {
30
+ this.extendedItem.setStyle('transform-origin', this._circle.getAttribute('cx') + ' ' + this._circle.getAttribute('cy'));
31
+ }
23
32
  }
24
33
  pointerEvent(event) {
25
34
  event.stopPropagation();
26
- const rect = this.extendedItem.element.getBoundingClientRect();
27
- const rectNr = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element); //.getBoundingClientRect();
35
+ const rect = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);
28
36
  const computed = getComputedStyle(this.extendedItem.element);
29
- const to = computed.transformOrigin.split(' ');
37
+ const x = 0;
38
+ const y = 1;
39
+ const to = computed.transformOrigin.split(' '); // This value remains the same regardless of scalefactor
40
+ const toInPercentage = [];
41
+ toInPercentage[0] = parseInt(to[0]) / parseInt(this.extendedItem.element.style.width); // This value remains the same regardless of scalefactor
42
+ toInPercentage[1] = parseInt(to[1]) / parseInt(this.extendedItem.element.style.height); // This value remains the same regardless of scalefactor
43
+ const toDOMPoint = new DOMPoint(rect.x + toInPercentage[x] * rect.width, rect.y + toInPercentage[y] * rect.height);
30
44
  const normalized = this.designerCanvas.getNormalizedEventCoordinates(event);
31
45
  switch (event.type) {
32
46
  case EventNames.PointerDown:
@@ -37,10 +51,10 @@ export class TransformOriginExtension extends AbstractExtension {
37
51
  if (this._startPos && event.buttons > 0) {
38
52
  const dx = normalized.x - this._startPos.x;
39
53
  const dy = normalized.y - this._startPos.y;
40
- this._circle.setAttribute('cx', ((rect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor + Number.parseFloat(to[0].replace('px', '')) + dx));
41
- this._circle.setAttribute('cy', ((rect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor + Number.parseFloat(to[1].replace('px', '')) + dy));
42
- this._circle2.setAttribute('cx', ((rect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor + Number.parseFloat(to[0].replace('px', '')) + dx));
43
- this._circle2.setAttribute('cy', ((rect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor + Number.parseFloat(to[1].replace('px', '')) + dy));
54
+ this._circle.setAttribute('cx', (toDOMPoint.x + dx));
55
+ this._circle.setAttribute('cy', (toDOMPoint.y + dy));
56
+ this._circle2.setAttribute('cx', (toDOMPoint.x + dx));
57
+ this._circle2.setAttribute('cy', (toDOMPoint.y + dy));
44
58
  }
45
59
  break;
46
60
  case EventNames.PointerUp:
@@ -48,13 +62,9 @@ export class TransformOriginExtension extends AbstractExtension {
48
62
  if (this._startPos) {
49
63
  const dx = normalized.x - this._startPos.x;
50
64
  const dy = normalized.y - this._startPos.y;
51
- const x = Number.parseFloat(to[0].replace('px', ''));
52
- const y = Number.parseFloat(to[1].replace('px', ''));
53
- const newX = (dx + x);
54
- const newY = (dy + y);
55
- const przX = Math.round(newX / rectNr.width * 10000) / 100;
56
- const przY = Math.round(newY / rectNr.height * 10000) / 100;
57
- this.extendedItem.setStyle('transform-origin', przX + '% ' + przY + '%');
65
+ const newX = (dx + parseFloat(to[x]));
66
+ const newY = (dy + parseFloat(to[y]));
67
+ this.extendedItem.setStyle('transform-origin', newX + 'px' + ' ' + newY + 'px');
58
68
  this.refresh();
59
69
  this._startPos = null;
60
70
  }
@@ -23,6 +23,7 @@ export declare class OverlayLayerView extends BaseCustomWebComponentConstructorA
23
23
  drawLine(x1: number, y1: number, x2: number, y2: number, className?: string, line?: SVGLineElement, overlayLayer?: OverlayLayer): SVGLineElement;
24
24
  drawCircle(x: number, y: number, radius: number, className?: string, circle?: SVGCircleElement, overlayLayer?: OverlayLayer): SVGCircleElement;
25
25
  drawRect(x: number, y: number, w: number, h: number, className?: string, rect?: SVGRectElement, overlayLayer?: OverlayLayer): SVGRectElement;
26
+ drawPath(data: string, className?: string, path?: SVGPathElement, overlayLayer?: OverlayLayer): SVGPathElement;
26
27
  drawText(text: string, x: number, y: number, className?: string, textEl?: SVGTextElement, overlayLayer?: OverlayLayer): SVGTextElement;
27
28
  drawTextWithBackground(text: string, x: number, y: number, backgroundColor: string, className?: string, existingEls?: [SVGFilterElement, SVGFEFloodElement, SVGTextElement, SVGTextElement], overlayLayer?: OverlayLayer): [SVGFilterElement, SVGFEFloodElement, SVGTextElement, SVGTextElement];
28
29
  }
@@ -135,6 +135,16 @@ export class OverlayLayerView extends BaseCustomWebComponentConstructorAppend {
135
135
  rect.setAttribute('class', className);
136
136
  return rect;
137
137
  }
138
+ drawPath(data, className, path, overlayLayer) {
139
+ if (!path) {
140
+ path = document.createElementNS("http://www.w3.org/2000/svg", "path");
141
+ this.addOverlay(path, overlayLayer);
142
+ }
143
+ path.setAttribute('d', data);
144
+ if (className)
145
+ path.setAttribute('class', className);
146
+ return path;
147
+ }
138
148
  drawText(text, x, y, className, textEl, overlayLayer) {
139
149
  if (!textEl) {
140
150
  textEl = document.createElementNS("http://www.w3.org/2000/svg", "text");
@@ -18,6 +18,7 @@ export declare class PointerTool implements ITool {
18
18
  private _dragExtensionItem;
19
19
  private _moveItemsOffset;
20
20
  private _initialOffset;
21
+ private _started;
21
22
  private _firstTimeInMove;
22
23
  private _secondTimeInMove;
23
24
  private _changeGroup;
@@ -17,6 +17,8 @@ export class PointerTool {
17
17
  _dragExtensionItem;
18
18
  _moveItemsOffset = { x: 0, y: 0 };
19
19
  _initialOffset;
20
+ _started = false;
21
+ ;
20
22
  _firstTimeInMove;
21
23
  _secondTimeInMove;
22
24
  _changeGroup;
@@ -273,6 +275,15 @@ export class PointerTool {
273
275
  }
274
276
  else {
275
277
  const cp = { x: currentPoint.x - this._moveItemsOffset.x, y: currentPoint.y - this._moveItemsOffset.y };
278
+ if (!this._started) {
279
+ for (const item of this._actionStartedDesignItems) {
280
+ designerCanvas.extensionManager.removeExtension(item, ExtensionType.Placement);
281
+ designerCanvas.extensionManager.removeExtension(item, ExtensionType.MouseOver);
282
+ designerCanvas.extensionManager.applyExtension(item, ExtensionType.Placement);
283
+ }
284
+ currentContainerService.startPlace(event, designerCanvas, this._actionStartedDesignItem.parent, this._initialPoint, this._initialOffset, cp, this._actionStartedDesignItems);
285
+ this._started = true;
286
+ }
276
287
  currentContainerService.place(event, designerCanvas, this._actionStartedDesignItem.parent, this._initialPoint, this._initialOffset, cp, this._actionStartedDesignItems);
277
288
  }
278
289
  designerCanvas.extensionManager.refreshExtensions(this._actionStartedDesignItems);
@@ -282,6 +293,7 @@ export class PointerTool {
282
293
  }
283
294
  case EventNames.PointerUp:
284
295
  {
296
+ this._started = false;
285
297
  if (!this._movedSinceStartedAction || this._actionType == PointerActionType.DragOrSelect) {
286
298
  if (this._previousEventName == EventNames.PointerDown && !event.shiftKey && !event.ctrlKey) {
287
299
  designerCanvas.instanceServiceContainer.selectionService.setSelectedElements([this._actionStartedDesignItem]);
@@ -301,6 +313,10 @@ export class PointerTool {
301
313
  containerService.finishPlace(event, designerCanvas, this._actionStartedDesignItem.parent, this._initialPoint, this._initialOffset, cp, designerCanvas.instanceServiceContainer.selectionService.selectedElements);
302
314
  this._changeGroup.commit();
303
315
  this._changeGroup = null;
316
+ for (const item of this._actionStartedDesignItems) {
317
+ designerCanvas.extensionManager.applyExtension(item, ExtensionType.MouseOver);
318
+ designerCanvas.extensionManager.removeExtension(item, ExtensionType.Placement);
319
+ }
304
320
  }
305
321
  designerCanvas.extensionManager.removeExtension(this._dragExtensionItem, ExtensionType.ContainerDrag);
306
322
  this._dragExtensionItem = null;
package/dist/index.d.ts CHANGED
@@ -160,6 +160,9 @@ export * from "./elements/widgets/designerView/extensions/AltToEnterContainerExt
160
160
  export * from "./elements/widgets/designerView/extensions/CanvasExtension.js";
161
161
  export * from "./elements/widgets/designerView/extensions/CanvasExtensionProvider.js";
162
162
  export * from "./elements/widgets/designerView/extensions/ExtensionManager.js";
163
+ export * from "./elements/widgets/designerView/extensions/FlexboxExtension.js";
164
+ export * from "./elements/widgets/designerView/extensions/FlexboxExtensionProvider.js";
165
+ export * from "./elements/widgets/designerView/extensions/FlexboxExtensionDesignViewConfigButtons.js";
163
166
  export * from "./elements/widgets/designerView/extensions/GrayOutExtension.js";
164
167
  export * from "./elements/widgets/designerView/extensions/GrayOutExtensionProvider.js";
165
168
  export * from "./elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.js";
package/dist/index.js CHANGED
@@ -117,6 +117,9 @@ export * from "./elements/widgets/designerView/extensions/AltToEnterContainerExt
117
117
  export * from "./elements/widgets/designerView/extensions/CanvasExtension.js";
118
118
  export * from "./elements/widgets/designerView/extensions/CanvasExtensionProvider.js";
119
119
  export * from "./elements/widgets/designerView/extensions/ExtensionManager.js";
120
+ export * from "./elements/widgets/designerView/extensions/FlexboxExtension.js";
121
+ export * from "./elements/widgets/designerView/extensions/FlexboxExtensionProvider.js";
122
+ export * from "./elements/widgets/designerView/extensions/FlexboxExtensionDesignViewConfigButtons.js";
120
123
  export * from "./elements/widgets/designerView/extensions/GrayOutExtension.js";
121
124
  export * from "./elements/widgets/designerView/extensions/GrayOutExtensionProvider.js";
122
125
  export * from "./elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.js";
@@ -0,0 +1,5 @@
1
+ export interface IPoint3D {
2
+ x: number;
3
+ y: number;
4
+ z: number;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
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.150",
4
+ "version": "0.0.152",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",