@node-projects/web-component-designer 0.0.149 → 0.0.151

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 (58) 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 +8 -1
  8. package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.js +2 -1
  9. package/dist/elements/services/bindingsService/SpecialTagsBindingService.js +1 -0
  10. package/dist/elements/services/placementService/DefaultPlacementService.d.ts +1 -0
  11. package/dist/elements/services/placementService/DefaultPlacementService.js +24 -8
  12. package/dist/elements/services/placementService/FlexBoxPlacementService.d.ts +1 -0
  13. package/dist/elements/services/placementService/FlexBoxPlacementService.js +2 -0
  14. package/dist/elements/services/placementService/GridPlacementService.d.ts +1 -0
  15. package/dist/elements/services/placementService/GridPlacementService.js +2 -0
  16. package/dist/elements/services/placementService/IPlacementService.d.ts +1 -0
  17. package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +4 -0
  18. package/dist/elements/widgets/designerView/IPlacementView.d.ts +0 -1
  19. package/dist/elements/widgets/designerView/designerCanvas.d.ts +2 -2
  20. package/dist/elements/widgets/designerView/designerCanvas.js +19 -9
  21. package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.d.ts +2 -0
  22. package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.js +8 -0
  23. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +1 -0
  24. package/dist/elements/widgets/designerView/extensions/ExtensionType.d.ts +2 -1
  25. package/dist/elements/widgets/designerView/extensions/ExtensionType.js +1 -0
  26. package/dist/elements/widgets/designerView/extensions/FlexboxExtension.d.ts +11 -0
  27. package/dist/elements/widgets/designerView/extensions/FlexboxExtension.js +20 -0
  28. package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.d.ts +10 -0
  29. package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.js +16 -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/GridExtensionProvider copy.d.ts +11 -0
  34. package/dist/elements/widgets/designerView/extensions/GridExtensionProvider copy.js +18 -0
  35. package/dist/elements/widgets/designerView/extensions/GridExtensionProvider.js +2 -1
  36. package/dist/elements/widgets/designerView/extensions/MouseOverExtension.d.ts +4 -1
  37. package/dist/elements/widgets/designerView/extensions/MouseOverExtension.js +14 -6
  38. package/dist/elements/widgets/designerView/extensions/PlacementExtension.d.ts +11 -0
  39. package/dist/elements/widgets/designerView/extensions/PlacementExtension.js +22 -0
  40. package/dist/elements/widgets/designerView/extensions/PlacementExtensionProvider.d.ts +10 -0
  41. package/dist/elements/widgets/designerView/extensions/PlacementExtensionProvider.js +13 -0
  42. package/dist/elements/widgets/designerView/extensions/ResizeExtension.d.ts +3 -1
  43. package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +201 -41
  44. package/dist/elements/widgets/designerView/extensions/RotateExtension.d.ts +8 -2
  45. package/dist/elements/widgets/designerView/extensions/RotateExtension.js +77 -43
  46. package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.js +1 -0
  47. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.d.ts +4 -1
  48. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.js +14 -9
  49. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +30 -20
  50. package/dist/elements/widgets/designerView/overlayLayerView.d.ts +1 -0
  51. package/dist/elements/widgets/designerView/overlayLayerView.js +10 -0
  52. package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +1 -0
  53. package/dist/elements/widgets/designerView/tools/PointerTool.js +16 -0
  54. package/dist/index.d.ts +2 -1
  55. package/dist/index.js +2 -1
  56. package/dist/interfaces/IPoint3D.d.ts +5 -0
  57. package/dist/interfaces/IPoint3D.js +1 -0
  58. 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(this.extendedItem.element.style.width); // This value remains the same regardless of scalefactor
18
+ toInPercentage[1] = parseInt(to[1]) / parseInt(this.extendedItem.element.style.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
@@ -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";
@@ -161,6 +160,8 @@ export * from "./elements/widgets/designerView/extensions/AltToEnterContainerExt
161
160
  export * from "./elements/widgets/designerView/extensions/CanvasExtension.js";
162
161
  export * from "./elements/widgets/designerView/extensions/CanvasExtensionProvider.js";
163
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";
164
165
  export * from "./elements/widgets/designerView/extensions/GrayOutExtension.js";
165
166
  export * from "./elements/widgets/designerView/extensions/GrayOutExtensionProvider.js";
166
167
  export * from "./elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.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";
@@ -118,6 +117,8 @@ export * from "./elements/widgets/designerView/extensions/AltToEnterContainerExt
118
117
  export * from "./elements/widgets/designerView/extensions/CanvasExtension.js";
119
118
  export * from "./elements/widgets/designerView/extensions/CanvasExtensionProvider.js";
120
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";
121
122
  export * from "./elements/widgets/designerView/extensions/GrayOutExtension.js";
122
123
  export * from "./elements/widgets/designerView/extensions/GrayOutExtensionProvider.js";
123
124
  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.149",
4
+ "version": "0.0.151",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",