@node-projects/web-component-designer 0.0.151 → 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.
@@ -58,9 +58,9 @@ export function placeDesignItem(container, designItem, offset, mode) {
58
58
  }
59
59
  if (!hasPositionedLayout)
60
60
  designItem.setStyle('position', 'absolute');
61
- if (oldLeft)
61
+ if (oldLeft || oldRight == null)
62
62
  designItem.setStyle('left', (offset.x + (oldLeft ?? 0) + containerLeft) + "px");
63
- if (oldTop)
63
+ if (oldTop || oldBottom == null)
64
64
  designItem.setStyle('top', (offset.y + (oldTop ?? 0) + containerTop) + "px");
65
65
  if (oldRight)
66
66
  designItem.setStyle('right', ((oldRight ?? 0) - offset.x + containerRight) + "px");
@@ -71,6 +71,7 @@ import { EllipsisExtensionProvider } from '../widgets/designerView/extensions/sv
71
71
  import { PropertyGroupsService } from './propertiesService/PropertyGroupsService.js';
72
72
  import { PlacementExtensionProvider } from '../widgets/designerView/extensions/PlacementExtensionProvider.js';
73
73
  import { FlexboxExtensionProvider } from '../widgets/designerView/extensions/FlexboxExtensionProvider.js';
74
+ import { FlexboxExtensionDesignViewConfigButtons } from '../widgets/designerView/extensions/FlexboxExtensionDesignViewConfigButtons.js';
74
75
  export function createDefaultServiceContainer() {
75
76
  let serviceContainer = new ServiceContainer();
76
77
  serviceContainer.register("propertyService", new PolymerPropertiesService());
@@ -153,7 +154,7 @@ export function createDefaultServiceContainer() {
153
154
  serviceContainer.designerPointerExtensions.push(
154
155
  //new CursorLinePointerExtensionProvider()
155
156
  );
156
- serviceContainer.designViewConfigButtons.push(new ButtonSeperatorProvider(20), new GridExtensionDesignViewConfigButtons());
157
+ serviceContainer.designViewConfigButtons.push(new ButtonSeperatorProvider(20), new GridExtensionDesignViewConfigButtons(), new FlexboxExtensionDesignViewConfigButtons());
157
158
  serviceContainer.designViewToolbarButtons.push(new PointerToolButtonProvider(), new SeperatorToolProvider(22), new SelectorToolButtonProvider(), new SeperatorToolProvider(22), new ZoomToolButtonProvider(), new SeperatorToolProvider(22), new DrawToolButtonProvider(), new SeperatorToolProvider(5), new TextToolButtonProvider());
158
159
  serviceContainer.designerContextMenuExtensions = [
159
160
  new CopyPasteContextMenu(),
@@ -105,6 +105,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
105
105
  width: 100%;
106
106
  height: 100%;
107
107
  transform-origin: 0 0;
108
+ position: relative;
108
109
  }
109
110
 
110
111
  #node-projects-designer-canvas-canvas.dragFileActive {
@@ -0,0 +1,6 @@
1
+ import { DesignerView } from "../designerView.js";
2
+ import { IDesignerCanvas } from "../IDesignerCanvas";
3
+ import { IDesignViewConfigButtonsProvider } from "../IDesignViewConfigButtonsProvider.js";
4
+ export declare class FlexboxExtensionDesignViewConfigButtons implements IDesignViewConfigButtonsProvider {
5
+ provideButtons(designerView: DesignerView, designerCanvas: IDesignerCanvas): HTMLElement[];
6
+ }
@@ -0,0 +1,21 @@
1
+ import { flexboxExtensionShowOverlayOptionName } from "./FlexboxExtensionProvider.js";
2
+ export class FlexboxExtensionDesignViewConfigButtons {
3
+ provideButtons(designerView, designerCanvas) {
4
+ const extensionOptions = designerCanvas.instanceServiceContainer.designContext.extensionOptions;
5
+ const btn = document.createElement('div');
6
+ btn.innerText = 'F';
7
+ btn.title = 'show flexbox overlay';
8
+ btn.className = 'toolbar-control';
9
+ if (extensionOptions[flexboxExtensionShowOverlayOptionName] !== false)
10
+ btn.classList.add('selected');
11
+ btn.onclick = () => {
12
+ const val = extensionOptions[flexboxExtensionShowOverlayOptionName];
13
+ extensionOptions[flexboxExtensionShowOverlayOptionName] = val === false ? true : false;
14
+ if (extensionOptions[flexboxExtensionShowOverlayOptionName] !== false)
15
+ btn.classList.add('selected');
16
+ else
17
+ btn.classList.remove('selected');
18
+ };
19
+ return [btn];
20
+ }
21
+ }
@@ -3,6 +3,7 @@ import { IDesignItem } from "../../../item/IDesignItem";
3
3
  import { IDesignerCanvas } from "../IDesignerCanvas";
4
4
  import { IDesignerExtension } from "./IDesignerExtension";
5
5
  import { IExtensionManager } from "./IExtensionManger";
6
+ export declare const flexboxExtensionShowOverlayOptionName = "flexboxExtensionShowOverlay";
6
7
  export declare class FlexboxExtensionProvider implements IDesignerExtensionProvider {
7
8
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
9
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
@@ -1,10 +1,11 @@
1
1
  import { css } from "@node-projects/base-custom-webcomponent";
2
2
  import { FlexboxExtension } from "./FlexboxExtension";
3
+ export const flexboxExtensionShowOverlayOptionName = 'flexboxExtensionShowOverlay';
3
4
  export class FlexboxExtensionProvider {
4
5
  shouldExtend(extensionManager, designerView, designItem) {
5
6
  const display = getComputedStyle(designItem.element).display;
6
7
  if (display == 'flex' || display == 'inline-flex')
7
- return true;
8
+ return designerView.instanceServiceContainer.designContext.extensionOptions[flexboxExtensionShowOverlayOptionName] !== false;
8
9
  return false;
9
10
  }
10
11
  getExtension(extensionManager, designerView, designItem) {
@@ -0,0 +1,6 @@
1
+ import { DesignerView } from "../designerView.js";
2
+ import { IDesignerCanvas } from "../IDesignerCanvas";
3
+ import { IDesignViewConfigButtonsProvider } from "../IDesignViewConfigButtonsProvider.js";
4
+ export declare class GridExtensionDesignViewConfigButtons implements IDesignViewConfigButtonsProvider {
5
+ provideButtons(designerView: DesignerView, designerCanvas: IDesignerCanvas): HTMLElement[];
6
+ }
@@ -0,0 +1,21 @@
1
+ import { gridExtensionShowOverlayOptionName } from "./GridExtensionProvider.js";
2
+ export class GridExtensionDesignViewConfigButtons {
3
+ provideButtons(designerView, designerCanvas) {
4
+ const extensionOptions = designerCanvas.instanceServiceContainer.designContext.extensionOptions;
5
+ const btn = document.createElement('div');
6
+ btn.innerText = 'G';
7
+ btn.title = 'show grid overlay';
8
+ btn.className = 'toolbar-control';
9
+ if (extensionOptions[gridExtensionShowOverlayOptionName] !== false)
10
+ btn.classList.add('selected');
11
+ btn.onclick = () => {
12
+ const val = extensionOptions[gridExtensionShowOverlayOptionName];
13
+ extensionOptions[gridExtensionShowOverlayOptionName] = val === false ? true : false;
14
+ if (extensionOptions[gridExtensionShowOverlayOptionName] !== false)
15
+ btn.classList.add('selected');
16
+ else
17
+ btn.classList.remove('selected');
18
+ };
19
+ return [btn];
20
+ }
21
+ }
@@ -1,3 +1,4 @@
1
+ import { getDesignerCanvasNormalizedTransformedCornerDOMPoints } from "../../../helper/TransformHelper";
1
2
  import { AbstractExtension } from './AbstractExtension';
2
3
  import { OverlayLayer } from "./OverlayLayer.js";
3
4
  export class InvisibleDivExtension extends AbstractExtension {
@@ -9,8 +10,8 @@ export class InvisibleDivExtension extends AbstractExtension {
9
10
  this.refresh();
10
11
  }
11
12
  refresh() {
12
- const itemRect = this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);
13
- this._rect = this._drawRect(itemRect.x, itemRect.y, itemRect.width, itemRect.height, 'svg-invisible-div', this._rect, OverlayLayer.Background);
13
+ let transformedCornerPoints = getDesignerCanvasNormalizedTransformedCornerDOMPoints(this.extendedItem.element, 0, this.designerCanvas);
14
+ this._rect = this._drawTransformedRect(transformedCornerPoints, 'svg-invisible-div', this._rect, OverlayLayer.Background);
14
15
  }
15
16
  dispose() {
16
17
  this._removeAllOverlays();
@@ -3,10 +3,7 @@ import { IDesignerCanvas } from "../IDesignerCanvas";
3
3
  import { AbstractExtension } from "./AbstractExtension";
4
4
  import { IExtensionManager } from "./IExtensionManger";
5
5
  export declare class MouseOverExtension extends AbstractExtension {
6
- private _line1;
7
- private _line2;
8
- private _line3;
9
- private _line4;
6
+ private _rect;
10
7
  constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
11
8
  extend(): void;
12
9
  refresh(): void;
@@ -2,10 +2,7 @@ import { getDesignerCanvasNormalizedTransformedCornerDOMPoints } from "../../../
2
2
  import { AbstractExtension } from "./AbstractExtension";
3
3
  const offset = 3;
4
4
  export class MouseOverExtension extends AbstractExtension {
5
- _line1;
6
- _line2;
7
- _line3;
8
- _line4;
5
+ _rect;
9
6
  constructor(extensionManager, designerView, extendedItem) {
10
7
  super(extensionManager, designerView, extendedItem);
11
8
  }
@@ -14,14 +11,8 @@ export class MouseOverExtension extends AbstractExtension {
14
11
  }
15
12
  refresh() {
16
13
  let transformedCornerPoints = getDesignerCanvasNormalizedTransformedCornerDOMPoints(this.extendedItem.element, offset, this.designerCanvas);
17
- this._line1 = this._drawLine(transformedCornerPoints[0].x, transformedCornerPoints[0].y, transformedCornerPoints[1].x, transformedCornerPoints[1].y, 'svg-hover', this._line1);
18
- this._line2 = this._drawLine(transformedCornerPoints[0].x, transformedCornerPoints[0].y, transformedCornerPoints[2].x, transformedCornerPoints[2].y, 'svg-hover', this._line2);
19
- this._line3 = this._drawLine(transformedCornerPoints[1].x, transformedCornerPoints[1].y, transformedCornerPoints[3].x, transformedCornerPoints[3].y, 'svg-hover', this._line3);
20
- this._line4 = this._drawLine(transformedCornerPoints[2].x, transformedCornerPoints[2].y, transformedCornerPoints[3].x, transformedCornerPoints[3].y, 'svg-hover', this._line4);
21
- this._line1.style.strokeWidth = (2 / this.designerCanvas.zoomFactor).toString();
22
- this._line2.style.strokeWidth = (2 / this.designerCanvas.zoomFactor).toString();
23
- this._line3.style.strokeWidth = (2 / this.designerCanvas.zoomFactor).toString();
24
- this._line4.style.strokeWidth = (2 / this.designerCanvas.zoomFactor).toString();
14
+ this._rect = this._drawTransformedRect(transformedCornerPoints, 'svg-hover', this._rect);
15
+ this._rect.style.strokeWidth = (2 / this.designerCanvas.zoomFactor).toString();
25
16
  }
26
17
  dispose() {
27
18
  this._removeAllOverlays();
@@ -14,8 +14,8 @@ export class TransformOriginExtension extends AbstractExtension {
14
14
  const y = 1;
15
15
  const to = computed.transformOrigin.split(' '); // This value remains the same regardless of scalefactor
16
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
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
19
  const toDOMPoint = new DOMPoint(rect.x + toInPercentage[x] * rect.width, rect.y + toInPercentage[y] * rect.height);
20
20
  this._circle = this._drawCircle(toDOMPoint.x, toDOMPoint.y, 5 / this.designerCanvas.scaleFactor, 'svg-transform-origin');
21
21
  this._circle.style.strokeWidth = (1 / this.designerCanvas.zoomFactor).toString();
package/dist/index.d.ts CHANGED
@@ -162,6 +162,7 @@ export * from "./elements/widgets/designerView/extensions/CanvasExtensionProvide
162
162
  export * from "./elements/widgets/designerView/extensions/ExtensionManager.js";
163
163
  export * from "./elements/widgets/designerView/extensions/FlexboxExtension.js";
164
164
  export * from "./elements/widgets/designerView/extensions/FlexboxExtensionProvider.js";
165
+ export * from "./elements/widgets/designerView/extensions/FlexboxExtensionDesignViewConfigButtons.js";
165
166
  export * from "./elements/widgets/designerView/extensions/GrayOutExtension.js";
166
167
  export * from "./elements/widgets/designerView/extensions/GrayOutExtensionProvider.js";
167
168
  export * from "./elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.js";
package/dist/index.js CHANGED
@@ -119,6 +119,7 @@ export * from "./elements/widgets/designerView/extensions/CanvasExtensionProvide
119
119
  export * from "./elements/widgets/designerView/extensions/ExtensionManager.js";
120
120
  export * from "./elements/widgets/designerView/extensions/FlexboxExtension.js";
121
121
  export * from "./elements/widgets/designerView/extensions/FlexboxExtensionProvider.js";
122
+ export * from "./elements/widgets/designerView/extensions/FlexboxExtensionDesignViewConfigButtons.js";
122
123
  export * from "./elements/widgets/designerView/extensions/GrayOutExtension.js";
123
124
  export * from "./elements/widgets/designerView/extensions/GrayOutExtensionProvider.js";
124
125
  export * from "./elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.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.151",
4
+ "version": "0.0.152",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",