@node-projects/web-component-designer 0.0.36 → 0.0.40

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 (61) hide show
  1. package/assets/images/chromeDevtools/flex-direction-row-icon.svg +82 -1
  2. package/assets/images/chromeDevtools/{flex-nowrap-icon.svg → flex-wrap-nowrap-icon.svg} +0 -0
  3. package/assets/images/chromeDevtools/{flex-wrap-icon.svg → flex-wrap-wrap-icon.svg} +0 -0
  4. package/dist/elements/controls/DesignerTabControl.js +1 -1
  5. package/dist/elements/controls/ThicknessEditor.d.ts +20 -4
  6. package/dist/elements/controls/ThicknessEditor.js +74 -9
  7. package/dist/elements/item/DesignItem.d.ts +1 -0
  8. package/dist/elements/item/DesignItem.js +3 -0
  9. package/dist/elements/item/IDesignItem.d.ts +1 -0
  10. package/dist/elements/services/ServiceContainer.d.ts +2 -0
  11. package/dist/elements/services/ServiceContainer.js +1 -0
  12. package/dist/elements/services/propertiesService/propertyEditors/BasePropertyEditor.js +6 -1
  13. package/dist/elements/services/propertiesService/propertyEditors/NumberPropertyEditor.js +1 -1
  14. package/dist/elements/services/propertiesService/propertyEditors/ThicknessPropertyEditor.js +2 -2
  15. package/dist/elements/services/propertiesService/services/CssPropertiesService.js +10 -0
  16. package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +1 -0
  17. package/dist/elements/widgets/designerView/designerCanvas.d.ts +3 -0
  18. package/dist/elements/widgets/designerView/designerCanvas.js +20 -1
  19. package/dist/elements/widgets/designerView/extensions/AbstractExtension copy.d.ts +22 -0
  20. package/dist/elements/widgets/designerView/extensions/AbstractExtension copy.js +52 -0
  21. package/dist/elements/widgets/designerView/extensions/AbstractExtension.d.ts +2 -12
  22. package/dist/elements/widgets/designerView/extensions/AbstractExtension.js +3 -73
  23. package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.d.ts +16 -0
  24. package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.js +50 -0
  25. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension.js +2 -2
  26. package/dist/elements/widgets/designerView/extensions/CanvasExtension.js +2 -2
  27. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.js +4 -4
  28. package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +1 -0
  29. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +14 -0
  30. package/dist/elements/widgets/designerView/extensions/ExtensionType.d.ts +0 -3
  31. package/dist/elements/widgets/designerView/extensions/ExtensionType.js +0 -3
  32. package/dist/elements/widgets/designerView/extensions/GrayOutExtension.js +5 -5
  33. package/dist/elements/widgets/designerView/extensions/GridExtension.js +2 -2
  34. package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +1 -0
  35. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.js +1 -1
  36. package/dist/elements/widgets/designerView/extensions/MouseOverExtension.js +2 -2
  37. package/dist/elements/widgets/designerView/extensions/PathExtension.js +2 -2
  38. package/dist/elements/widgets/designerView/extensions/PositionExtension.js +6 -6
  39. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtension.js +2 -2
  40. package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +21 -21
  41. package/dist/elements/widgets/designerView/extensions/RotateExtension.js +3 -3
  42. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.js +1 -1
  43. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +6 -6
  44. package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.d.ts +3 -14
  45. package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.js +4 -75
  46. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension copy.d.ts +13 -0
  47. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension copy.js +27 -0
  48. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.d.ts +13 -0
  49. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.js +26 -0
  50. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.d.ts +7 -0
  51. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.js +10 -0
  52. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectanglePointerExtension copy.d.ts +7 -1
  53. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectanglePointerExtension copy.js +15 -8
  54. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtension.d.ts +1 -1
  55. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.d.ts +1 -4
  56. package/dist/elements/widgets/designerView/overlayLayerView.d.ts +4 -0
  57. package/dist/elements/widgets/designerView/overlayLayerView.js +62 -1
  58. package/dist/elements/widgets/designerView/tools/PointerTool.js +1 -5
  59. package/dist/index.d.ts +5 -0
  60. package/dist/index.js +3 -0
  61. package/package.json +3 -3
@@ -0,0 +1,13 @@
1
+ import { AbstractDesignerPointerExtension } from './AbstractDesignerPointerExtension';
2
+ export declare class CursorLinePointerExtension extends AbstractDesignerPointerExtension {
3
+ private _lineOffset;
4
+ private _lineLength;
5
+ private _circle;
6
+ private _line1;
7
+ private _line2;
8
+ private _line3;
9
+ private _line4;
10
+ refresh(event: PointerEvent): void;
11
+ dispose(): void;
12
+ style: CSSStyleSheet;
13
+ }
@@ -0,0 +1,26 @@
1
+ import { css } from '@node-projects/base-custom-webcomponent';
2
+ import { OverlayLayer } from '../OverlayLayer.js';
3
+ import { AbstractDesignerPointerExtension } from './AbstractDesignerPointerExtension';
4
+ export class CursorLinePointerExtension extends AbstractDesignerPointerExtension {
5
+ _lineOffset = 5;
6
+ _lineLength = 10;
7
+ _circle;
8
+ _line1;
9
+ _line2;
10
+ _line3;
11
+ _line4;
12
+ refresh(event) {
13
+ let mp = this.designerCanvas.getNormalizedEventCoordinates(event);
14
+ this._circle = this._drawCircle(mp.x, mp.y, 1, 'svg-cursor-line', this._circle, OverlayLayer.Foregorund);
15
+ this._line1 = this._drawLine(mp.x, mp.y - this._lineOffset, mp.x, mp.y - this._lineOffset - this._lineLength, 'svg-cursor-line', this._line1, OverlayLayer.Foregorund);
16
+ this._line2 = this._drawLine(mp.x, mp.y + this._lineOffset, mp.x, mp.y + this._lineOffset + this._lineLength, 'svg-cursor-line', this._line2, OverlayLayer.Foregorund);
17
+ this._line3 = this._drawLine(mp.x - this._lineOffset, mp.y, mp.x - this._lineOffset - this._lineLength, mp.y, 'svg-cursor-line', this._line3, OverlayLayer.Foregorund);
18
+ this._line4 = this._drawLine(mp.x + this._lineOffset, mp.y, mp.x + this._lineOffset + this._lineLength, mp.y, 'svg-cursor-line', this._line4, OverlayLayer.Foregorund);
19
+ }
20
+ dispose() {
21
+ super._removeAllOverlays();
22
+ }
23
+ style = css `
24
+ .svg-cursor-line { stroke: black; pointer-events: none }
25
+ `;
26
+ }
@@ -0,0 +1,7 @@
1
+ import { IDesignerCanvas } from '../../IDesignerCanvas.js';
2
+ import { IDesignerPointerExtension } from './IDesignerPointerExtension.js';
3
+ import { IDesignerPointerExtensionProvider } from './IDesignerPointerExtensionProvider.js';
4
+ export declare class CursorLinePointerExtensionProvider implements IDesignerPointerExtensionProvider {
5
+ getExtension(designerCanvas: IDesignerCanvas): IDesignerPointerExtension;
6
+ style: CSSStyleSheet;
7
+ }
@@ -0,0 +1,10 @@
1
+ import { css } from '@node-projects/base-custom-webcomponent';
2
+ import { CursorLinePointerExtension } from './CursorLinePointerExtension.js';
3
+ export class CursorLinePointerExtensionProvider {
4
+ getExtension(designerCanvas) {
5
+ return new CursorLinePointerExtension(designerCanvas.extensionManager, designerCanvas);
6
+ }
7
+ style = css `
8
+ .svg-cursor-line { stroke: black; pointer-events: none }
9
+ `;
10
+ }
@@ -1,7 +1,13 @@
1
1
  import { AbstractDesignerPointerExtension } from './AbstractDesignerPointerExtension';
2
2
  export declare class CursorRectanglePointerExtension extends AbstractDesignerPointerExtension {
3
- private _rect;
3
+ private _lineOffset;
4
+ private _lineLength;
5
+ private _line1;
6
+ private _line2;
7
+ private _line3;
8
+ private _line4;
4
9
  extend(event: PointerEvent): void;
5
10
  refresh(event: PointerEvent): void;
6
11
  dispose(): void;
12
+ style: CSSStyleSheet;
7
13
  }
@@ -1,20 +1,27 @@
1
+ import { css } from '@node-projects/base-custom-webcomponent';
1
2
  import { OverlayLayer } from '../OverlayLayer.js';
2
3
  import { AbstractDesignerPointerExtension } from './AbstractDesignerPointerExtension';
3
4
  export class CursorRectanglePointerExtension extends AbstractDesignerPointerExtension {
4
- _rect;
5
+ _lineOffset = 5;
6
+ _lineLength = 10;
7
+ _line1;
8
+ _line2;
9
+ _line3;
10
+ _line4;
5
11
  extend(event) {
6
- this._rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
7
- this.overlayLayerView.addOverlay(this._rect, OverlayLayer.Foregorund);
12
+ this.refresh(event);
8
13
  }
9
14
  refresh(event) {
10
15
  let mp = this.designerView.getNormalizedEventCoordinates(event);
11
- this._rect.setAttribute('class', 'svg-selector');
12
- this._rect.setAttribute('x', (mp.x - 5));
13
- this._rect.setAttribute('y', (mp.y - 5));
14
- this._rect.setAttribute('width', (10));
15
- this._rect.setAttribute('height', (10));
16
+ this._line1 = this._drawLine(mp.x, mp.y - this._lineOffset, mp.x, mp.y - this._lineOffset - this._lineLength, 'svg-cursor-line', this._line1, OverlayLayer.Foregorund);
17
+ this._line2 = this._drawLine(mp.x, mp.y + this._lineOffset, mp.x, mp.y + this._lineOffset + this._lineLength, 'svg-cursor-line', this._line2, OverlayLayer.Foregorund);
18
+ this._line3 = this._drawLine(mp.x - this._lineOffset, mp.y, mp.x - this._lineOffset - this._lineLength, mp.y, 'svg-cursor-line', this._line3, OverlayLayer.Foregorund);
19
+ this._line4 = this._drawLine(mp.x + this._lineOffset, mp.y, mp.x + this._lineOffset + this._lineLength, mp.y, 'svg-cursor-line', this._line4, OverlayLayer.Foregorund);
16
20
  }
17
21
  dispose() {
18
22
  super._removeAllOverlays();
19
23
  }
24
+ style = css `
25
+ .svg-cursor-line { stroke: black; pointer-events: none }
26
+ `;
20
27
  }
@@ -1,5 +1,5 @@
1
1
  import { IDisposable } from "../../../../../interfaces/IDisposable.js";
2
2
  export interface IDesignerPointerExtension extends IDisposable {
3
- extend(event: PointerEvent): any;
4
3
  refresh(event: PointerEvent): any;
4
+ style?: CSSStyleSheet;
5
5
  }
@@ -1,9 +1,6 @@
1
- import { IDesignItem } from "../../../../item/IDesignItem.js";
2
1
  import { IDesignerCanvas } from "../../IDesignerCanvas.js";
3
- import { IExtensionManager } from "../IExtensionManger.js";
4
2
  import { IDesignerPointerExtension } from "./IDesignerPointerExtension.js";
5
3
  export interface IDesignerPointerExtensionProvider {
6
- shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
7
- getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerPointerExtension;
4
+ getExtension(designerView: IDesignerCanvas): IDesignerPointerExtension;
8
5
  style?: CSSStyleSheet;
9
6
  }
@@ -17,4 +17,8 @@ export declare class OverlayLayerView extends BaseCustomWebComponentConstructorA
17
17
  removeAllNodesWithClass(className: string): void;
18
18
  createPoint(): DOMPointInit;
19
19
  elementFromPoint(x: number, y: number): Element;
20
+ drawLine(x1: number, y1: number, x2: number, y2: number, className?: string, line?: SVGLineElement, overlayLayer?: OverlayLayer): SVGLineElement;
21
+ drawCircle(x: number, y: number, radius: number, className?: string, circle?: SVGCircleElement, overlayLayer?: OverlayLayer): SVGCircleElement;
22
+ drawRect(x: number, y: number, w: number, h: number, className?: string, rect?: SVGRectElement, overlayLayer?: OverlayLayer): SVGRectElement;
23
+ drawText(text: string, x: number, y: number, className?: string, textEl?: SVGTextElement, overlayLayer?: OverlayLayer): SVGTextElement;
20
24
  }
@@ -47,6 +47,11 @@ export class OverlayLayerView extends BaseCustomWebComponentConstructorAppend {
47
47
  }
48
48
  }
49
49
  }
50
+ for (const ext of this._serviceContainer.designerPointerExtensions) {
51
+ if (ext.style) {
52
+ styles.push(ext.style);
53
+ }
54
+ }
50
55
  this.shadowRoot.adoptedStyleSheets = styles;
51
56
  }
52
57
  addOverlay(element, overlayLayer = OverlayLayer.Normal) {
@@ -63,7 +68,13 @@ export class OverlayLayerView extends BaseCustomWebComponentConstructorAppend {
63
68
  }
64
69
  }
65
70
  removeOverlay(element) {
66
- element.parentElement.removeChild(element);
71
+ try {
72
+ if (element)
73
+ element.parentElement.removeChild(element);
74
+ }
75
+ catch (err) {
76
+ console.error(err);
77
+ }
67
78
  }
68
79
  removeAllNodesWithClass(className) {
69
80
  const nodes = this._svg.querySelectorAll('.' + className);
@@ -79,5 +90,55 @@ export class OverlayLayerView extends BaseCustomWebComponentConstructorAppend {
79
90
  //@ts-ignore
80
91
  return this.shadowRoot.elementFromPoint(x, y);
81
92
  }
93
+ drawLine(x1, y1, x2, y2, className, line, overlayLayer) {
94
+ if (!line) {
95
+ line = document.createElementNS("http://www.w3.org/2000/svg", "line");
96
+ this.addOverlay(line, overlayLayer);
97
+ }
98
+ line.setAttribute('x1', x1);
99
+ line.setAttribute('y1', y1);
100
+ line.setAttribute('x2', x2);
101
+ line.setAttribute('y2', y2);
102
+ if (className)
103
+ line.setAttribute('class', className);
104
+ return line;
105
+ }
106
+ drawCircle(x, y, radius, className, circle, overlayLayer) {
107
+ if (!circle) {
108
+ circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
109
+ this.addOverlay(circle, overlayLayer);
110
+ }
111
+ circle.setAttribute('cx', x);
112
+ circle.setAttribute('cy', y);
113
+ circle.setAttribute('r', radius);
114
+ if (className)
115
+ circle.setAttribute('class', className);
116
+ return circle;
117
+ }
118
+ drawRect(x, y, w, h, className, rect, overlayLayer) {
119
+ if (!rect) {
120
+ rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
121
+ this.addOverlay(rect, overlayLayer);
122
+ }
123
+ rect.setAttribute('x', x);
124
+ rect.setAttribute('y', y);
125
+ rect.setAttribute('width', w);
126
+ rect.setAttribute('height', h);
127
+ if (className)
128
+ rect.setAttribute('class', className);
129
+ return rect;
130
+ }
131
+ drawText(text, x, y, className, textEl, overlayLayer) {
132
+ if (!textEl) {
133
+ textEl = document.createElementNS("http://www.w3.org/2000/svg", "text");
134
+ this.addOverlay(textEl, overlayLayer);
135
+ }
136
+ textEl.setAttribute('x', x);
137
+ textEl.setAttribute('y', y);
138
+ textEl.textContent = text;
139
+ if (className)
140
+ textEl.setAttribute('class', className);
141
+ return textEl;
142
+ }
82
143
  }
83
144
  customElements.define(OverlayLayerView.is, OverlayLayerView);
@@ -40,11 +40,7 @@ export class PointerTool {
40
40
  const currentDesignItem = DesignItem.GetOrCreateDesignItem(currentElement, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
41
41
  if (this._actionType == null) {
42
42
  this._initialPoint = currentPoint;
43
- const targetRect = currentElement.getBoundingClientRect();
44
- this._initialOffset = {
45
- x: event.x - targetRect.x,
46
- y: event.y - targetRect.y
47
- };
43
+ this._initialOffset = designerCanvas.getNormalizedOffsetInElement(event, currentElement);
48
44
  if (event.type == EventNames.PointerDown) {
49
45
  this._actionStartedDesignItem = currentDesignItem;
50
46
  designerCanvas.snapLines.clearSnaplines();
package/dist/index.d.ts CHANGED
@@ -135,6 +135,11 @@ export * from "./elements/widgets/designerView/extensions/contextMenu/CopyPasteC
135
135
  export * from "./elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js";
136
136
  export * from "./elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.js";
137
137
  export * from "./elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.js";
138
+ export type { IDesignerPointerExtension } from "./elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtension.js";
139
+ export type { IDesignerPointerExtensionProvider } from "./elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.js";
140
+ export * from "./elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.js";
141
+ export * from "./elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.js";
142
+ export * from "./elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.js";
138
143
  export * from "./elements/widgets/demoView/demoView.js";
139
144
  export * from "./elements/widgets/paletteView/paletteElements.js";
140
145
  export * from "./elements/widgets/paletteView/paletteView.js";
package/dist/index.js CHANGED
@@ -98,6 +98,9 @@ export * from "./elements/widgets/designerView/extensions/contextMenu/CopyPasteC
98
98
  export * from "./elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js";
99
99
  export * from "./elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.js";
100
100
  export * from "./elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.js";
101
+ export * from "./elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.js";
102
+ export * from "./elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.js";
103
+ export * from "./elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.js";
101
104
  export * from "./elements/widgets/demoView/demoView.js";
102
105
  export * from "./elements/widgets/paletteView/paletteElements.js";
103
106
  export * from "./elements/widgets/paletteView/paletteView.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.36",
4
+ "version": "0.0.40",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",
@@ -11,14 +11,14 @@
11
11
  "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"
12
12
  },
13
13
  "dependencies": {
14
- "@node-projects/base-custom-webcomponent": "^0.2.0",
14
+ "@node-projects/base-custom-webcomponent": "^0.3.0",
15
15
  "construct-style-sheets-polyfill": "^3.0.4"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@node-projects/lean-he-esm": "^3.3.0",
19
19
  "@node-projects/node-html-parser-esm": "^2.4.1",
20
20
  "@types/codemirror": "^5.60.5",
21
- "@types/jquery": "^3.5.8",
21
+ "@types/jquery": "^3.5.9",
22
22
  "@types/jquery.fancytree": "0.0.7",
23
23
  "ace-builds": "^1.4.13",
24
24
  "codemirror": "^5.64.0",