@node-projects/web-component-designer 0.0.80 → 0.0.84

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 (78) hide show
  1. package/dist/elements/helper/PathDataPolyfill.d.ts +11 -10
  2. package/dist/elements/helper/PathDataPolyfill.js +35 -0
  3. package/dist/elements/services/DefaultServiceBootstrap.js +12 -5
  4. package/dist/elements/services/htmlWriterService/AbstractHtmlWriterService.d.ts +10 -0
  5. package/dist/elements/services/htmlWriterService/AbstractHtmlWriterService.js +62 -0
  6. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.d.ts +5 -5
  7. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.js +4 -4
  8. package/dist/elements/services/htmlWriterService/HtmlWriterService copy.d.ts +12 -0
  9. package/dist/elements/services/htmlWriterService/HtmlWriterService copy.js +118 -0
  10. package/dist/elements/services/htmlWriterService/HtmlWriterService.d.ts +6 -6
  11. package/dist/elements/services/htmlWriterService/HtmlWriterService.js +6 -33
  12. package/dist/elements/services/htmlWriterService/IHtmlWriterOptions.d.ts +2 -0
  13. package/dist/elements/services/htmlWriterService/IHtmlWriterOptions.js +5 -3
  14. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.js +3 -1
  15. package/dist/elements/widgets/codeView/code-view-code-mirror.js +1 -1
  16. package/dist/elements/widgets/designerView/DomConverter.d.ts +3 -3
  17. package/dist/elements/widgets/designerView/DomConverter.js +7 -4
  18. package/dist/elements/widgets/designerView/designerCanvas.d.ts +2 -0
  19. package/dist/elements/widgets/designerView/designerCanvas.js +20 -8
  20. package/dist/elements/widgets/designerView/designerView.js +25 -7
  21. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtension.d.ts +14 -0
  22. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtension.js +38 -0
  23. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtensionProvider.d.ts +10 -0
  24. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtensionProvider.js +13 -0
  25. package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +5 -4
  26. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +41 -15
  27. package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +2 -2
  28. package/dist/elements/widgets/designerView/extensions/IframeExtension.d.ts +11 -0
  29. package/dist/elements/widgets/designerView/extensions/IframeExtension.js +46 -0
  30. package/dist/elements/widgets/designerView/extensions/IframeExtensionProvider.d.ts +9 -0
  31. package/dist/elements/widgets/designerView/extensions/IframeExtensionProvider.js +9 -0
  32. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.d.ts +1 -1
  33. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.js +2 -2
  34. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtensionProvider.d.ts +2 -2
  35. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtensionProvider.js +3 -3
  36. package/dist/elements/widgets/designerView/extensions/PathExtension.d.ts +1 -2
  37. package/dist/elements/widgets/designerView/extensions/PathExtension.js +117 -44
  38. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtension copy.d.ts +13 -0
  39. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtension copy.js +21 -0
  40. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtensionProvider copy.d.ts +10 -0
  41. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtensionProvider copy.js +13 -0
  42. package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +11 -3
  43. package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.js +2 -1
  44. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +13 -12
  45. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js +0 -1
  46. package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.d.ts +8 -0
  47. package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.js +31 -0
  48. package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.d.ts +8 -0
  49. package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.js +34 -0
  50. package/dist/elements/widgets/designerView/tools/DrawElementTool.d.ts +1 -0
  51. package/dist/elements/widgets/designerView/tools/DrawElementTool.js +1 -0
  52. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.d.ts +1 -0
  53. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.js +1 -0
  54. package/dist/elements/widgets/designerView/tools/DrawLineTool.d.ts +1 -0
  55. package/dist/elements/widgets/designerView/tools/DrawLineTool.js +1 -0
  56. package/dist/elements/widgets/designerView/tools/DrawPathTool.d.ts +1 -0
  57. package/dist/elements/widgets/designerView/tools/DrawPathTool.js +6 -1
  58. package/dist/elements/widgets/designerView/tools/DrawRectTool.d.ts +1 -0
  59. package/dist/elements/widgets/designerView/tools/DrawRectTool.js +1 -0
  60. package/dist/elements/widgets/designerView/tools/ITool.d.ts +1 -0
  61. package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.d.ts +1 -0
  62. package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.js +1 -0
  63. package/dist/elements/widgets/designerView/tools/PanTool.d.ts +1 -0
  64. package/dist/elements/widgets/designerView/tools/PanTool.js +1 -0
  65. package/dist/elements/widgets/designerView/tools/PickColorTool.d.ts +1 -0
  66. package/dist/elements/widgets/designerView/tools/PickColorTool.js +1 -0
  67. package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +1 -0
  68. package/dist/elements/widgets/designerView/tools/PointerTool.js +1 -0
  69. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.d.ts +1 -0
  70. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.js +1 -0
  71. package/dist/elements/widgets/designerView/tools/TextTool.d.ts +1 -0
  72. package/dist/elements/widgets/designerView/tools/TextTool.js +1 -0
  73. package/dist/elements/widgets/designerView/tools/ZoomTool.d.ts +1 -0
  74. package/dist/elements/widgets/designerView/tools/ZoomTool.js +1 -0
  75. package/dist/elements/widgets/treeView/treeViewExtended.js +1 -0
  76. package/dist/index.d.ts +5 -2
  77. package/dist/index.js +5 -2
  78. package/package.json +9 -9
@@ -68,6 +68,7 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
68
68
  background-color:rgba(164,206,249,.6);
69
69
  }
70
70
  #outer {
71
+ user-select: none;
71
72
  display: flex;
72
73
  flex-direction: column;
73
74
  width: 100%;
@@ -201,17 +202,27 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
201
202
  this._lowertoolbar = this._getDomElement('lowertoolbar');
202
203
  this._sVert = this._getDomElement('s-vert');
203
204
  this._sHor = this._getDomElement('s-hor');
204
- this._sVert.addEventListener('scrollbar-input', () => this._onScrollbar());
205
- this._sHor.addEventListener('scrollbar-input', () => this._onScrollbar());
205
+ this._sVert.addEventListener('scrollbar-input', (e) => this._onScrollbar(e));
206
+ this._sHor.addEventListener('scrollbar-input', (e) => this._onScrollbar(e));
206
207
  }
207
- _onScrollbar() {
208
- const x = this.designerCanvas.offsetWidth * (this._sHor.value - 0.5) * -1;
209
- const y = this.designerCanvas.offsetHeight * (this._sVert.value - 0.5) * -1;
208
+ _onScrollbar(e) {
209
+ if (e?.detail == 'incrementLarge')
210
+ e.target.value += 0.25;
211
+ else if (e?.detail == 'decrementLarge')
212
+ e.target.value -= 0.25;
213
+ else if (e?.detail == 'incrementSmall')
214
+ e.target.value += 0.05;
215
+ else if (e?.detail == 'decrementSmall')
216
+ e.target.value -= 0.05;
217
+ const w = this.designerCanvas.designerOffsetWidth > this.designerCanvas.offsetWidth ? this.designerCanvas.designerOffsetWidth : this.designerCanvas.offsetWidth;
218
+ const h = this.designerCanvas.designerOffsetHeight > this.designerCanvas.offsetHeight ? this.designerCanvas.designerOffsetHeight : this.designerCanvas.offsetHeight;
219
+ const x = w * (this._sHor.value - 0.5) * -2;
220
+ const y = h * (this._sVert.value - 0.5) * -2;
210
221
  this.designerCanvas.canvasOffset = { x, y };
211
222
  }
212
223
  _onWheel(event) {
224
+ event.preventDefault();
213
225
  if (event.ctrlKey) {
214
- event.preventDefault();
215
226
  let zf = this._designerCanvas.zoomFactor;
216
227
  zf += event.deltaY * -0.001; //deltamode = 0
217
228
  if (zf < 0.02)
@@ -220,6 +231,11 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
220
231
  this._zoomInput.value = Math.round(zf * 100) + '%';
221
232
  //TODO: we should zoom on the current cursor position, so it stays the center
222
233
  }
234
+ else {
235
+ this._sHor.value += event.deltaX / 1000;
236
+ this._sVert.value += event.deltaY / 1000;
237
+ this._onScrollbar(null);
238
+ }
223
239
  }
224
240
  get designerWidth() {
225
241
  return this._designerCanvas.designerWidth;
@@ -259,7 +275,9 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
259
275
  }
260
276
  getHTML(designItemsAssignmentList) {
261
277
  //this.instanceServiceContainer.selectionService.setSelectedElements(null);
262
- return DomConverter.ConvertToString([...this._designerCanvas.rootDesignItem.children()], designItemsAssignmentList);
278
+ if (this._designerCanvas.rootDesignItem.childCount > 0)
279
+ return DomConverter.ConvertToString(Array.from(this._designerCanvas.rootDesignItem.children()), designItemsAssignmentList);
280
+ return '';
263
281
  }
264
282
  async parseHTML(html) {
265
283
  const parserService = this.serviceContainer.htmlParserService;
@@ -0,0 +1,14 @@
1
+ import { IDesignItem } from "../../../item/IDesignItem";
2
+ import { IDesignerCanvas } from "../IDesignerCanvas";
3
+ import { AbstractExtension } from './AbstractExtension';
4
+ import { IExtensionManager } from "./IExtensionManger";
5
+ export declare class ElementDragTitleExtension extends AbstractExtension {
6
+ private _rect;
7
+ private _text;
8
+ constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
9
+ extend(): void;
10
+ _drawMoveOverlay(itemRect: DOMRect): void;
11
+ refresh(): void;
12
+ _pointerEvent(event: PointerEvent): void;
13
+ dispose(): void;
14
+ }
@@ -0,0 +1,38 @@
1
+ import { AbstractExtension } from './AbstractExtension';
2
+ export class ElementDragTitleExtension extends AbstractExtension {
3
+ _rect;
4
+ _text;
5
+ constructor(extensionManager, designerView, extendedItem) {
6
+ super(extensionManager, designerView, extendedItem);
7
+ }
8
+ extend() {
9
+ const boundRect = this.extendedItem.element.getBoundingClientRect();
10
+ this._rect = this._drawRect((boundRect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor, (boundRect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor - 16, 60, 15, 'svg-primary-selection-move', this._rect);
11
+ this._text = this._drawText(this.extendedItem.name.substring(0, 10) + '…', (boundRect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor, (boundRect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor - 5, 'svg-text-primary', this._text);
12
+ this._rect.addEventListener('pointerdown', (e) => this._pointerEvent(e));
13
+ this._rect.addEventListener('pointermove', (e) => this._pointerEvent(e));
14
+ this._rect.addEventListener('pointerup', (e) => this._pointerEvent(e));
15
+ }
16
+ _drawMoveOverlay(itemRect) {
17
+ }
18
+ refresh() {
19
+ const boundRect = this.extendedItem.element.getBoundingClientRect();
20
+ const xr = (boundRect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor;
21
+ const yr = (boundRect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor - 16;
22
+ this._rect.setAttribute('x', xr);
23
+ this._rect.setAttribute('y', yr);
24
+ const x = (boundRect.x - this.designerCanvas.containerBoundingRect.x) / this.designerCanvas.scaleFactor;
25
+ const y = (boundRect.y - this.designerCanvas.containerBoundingRect.y) / this.designerCanvas.scaleFactor - 5;
26
+ this._text.setAttribute('x', x);
27
+ this._text.setAttribute('y', y);
28
+ }
29
+ _pointerEvent(event) {
30
+ event.preventDefault();
31
+ event.stopPropagation();
32
+ //@ts-ignore
33
+ this.designerCanvas._pointerEventHandlerBound(event, this.extendedItem.element);
34
+ }
35
+ dispose() {
36
+ this._removeAllOverlays();
37
+ }
38
+ }
@@ -0,0 +1,10 @@
1
+ import { IDesignerExtensionProvider } from "./IDesignerExtensionProvider";
2
+ import { IDesignItem } from "../../../item/IDesignItem";
3
+ import { IDesignerCanvas } from "../IDesignerCanvas";
4
+ import { IDesignerExtension } from "./IDesignerExtension";
5
+ import { IExtensionManager } from "./IExtensionManger";
6
+ export declare class ElementDragTitleExtensionProvider implements IDesignerExtensionProvider {
7
+ shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
+ getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
+ readonly style: CSSStyleSheet;
10
+ }
@@ -0,0 +1,13 @@
1
+ import { ElementDragTitleExtension } from "./ElementDragTitleExtension";
2
+ import { css } from "@node-projects/base-custom-webcomponent";
3
+ export class ElementDragTitleExtensionProvider {
4
+ shouldExtend(extensionManager, designerView, designItem) {
5
+ return true;
6
+ }
7
+ getExtension(extensionManager, designerView, designItem) {
8
+ return new ElementDragTitleExtension(extensionManager, designerView, designItem);
9
+ }
10
+ style = css `
11
+ .svg-text-primary { stroke: none; fill: white; stroke-width: 1; font-size: 10px; font-family: monospace; }
12
+ `;
13
+ }
@@ -3,11 +3,12 @@ import { IDesignerCanvas } from "../IDesignerCanvas";
3
3
  import { ExtensionType } from './ExtensionType';
4
4
  import { IExtensionManager } from "./IExtensionManger";
5
5
  export declare class ExtensionManager implements IExtensionManager {
6
- designerView: IDesignerCanvas;
7
- constructor(designerView: IDesignerCanvas);
6
+ designerCanvas: IDesignerCanvas;
7
+ constructor(designerCanvas: IDesignerCanvas);
8
+ private _contentChanged;
8
9
  private _selectedElementsChanged;
9
- applyExtension(designItem: IDesignItem, extensionType: ExtensionType): void;
10
- applyExtensions(designItems: IDesignItem[], extensionType: ExtensionType): void;
10
+ applyExtension(designItem: IDesignItem, extensionType: ExtensionType, recursive?: boolean): void;
11
+ applyExtensions(designItems: IDesignItem[], extensionType: ExtensionType, recursive?: boolean): void;
11
12
  removeExtension(designItem: IDesignItem, extensionType?: ExtensionType): void;
12
13
  removeExtensions(designItems: IDesignItem[], extensionType?: ExtensionType): void;
13
14
  refreshExtension(designItem: IDesignItem, extensionType?: ExtensionType): void;
@@ -1,16 +1,32 @@
1
1
  import { DesignItem } from "../../../item/DesignItem";
2
2
  import { ExtensionType } from './ExtensionType';
3
3
  export class ExtensionManager {
4
- designerView;
5
- constructor(designerView) {
6
- this.designerView = designerView;
7
- designerView.instanceServiceContainer.selectionService.onSelectionChanged.on(this._selectedElementsChanged.bind(this));
8
- //TODO: Create Permanent Extensions. We need a Event for new DesignItem Added and Removed from DOM
4
+ designerCanvas;
5
+ constructor(designerCanvas) {
6
+ this.designerCanvas = designerCanvas;
7
+ designerCanvas.instanceServiceContainer.selectionService.onSelectionChanged.on(this._selectedElementsChanged.bind(this));
8
+ designerCanvas.instanceServiceContainer.contentService.onContentChanged.on(this._contentChanged.bind(this));
9
+ }
10
+ _contentChanged(contentChanged) {
11
+ switch (contentChanged.changeType) {
12
+ case 'added':
13
+ this.applyExtensions(contentChanged.designItems, ExtensionType.Permanent, true);
14
+ break;
15
+ case 'moved':
16
+ this.refreshExtensions(contentChanged.designItems, ExtensionType.Permanent);
17
+ break;
18
+ case 'parsed':
19
+ this.applyExtensions(Array.from(this.designerCanvas.rootDesignItem.children()), ExtensionType.Permanent, true);
20
+ break;
21
+ case 'removed':
22
+ this.removeExtensions(contentChanged.designItems, ExtensionType.Permanent);
23
+ break;
24
+ }
9
25
  }
10
26
  _selectedElementsChanged(selectionChangedEvent) {
11
27
  if (selectionChangedEvent.oldSelectedElements && selectionChangedEvent.oldSelectedElements.length) {
12
28
  if (selectionChangedEvent.oldSelectedElements[0].parent) {
13
- const primaryContainer = DesignItem.GetOrCreateDesignItem(selectionChangedEvent.oldSelectedElements[0].parent.element, this.designerView.serviceContainer, this.designerView.instanceServiceContainer);
29
+ const primaryContainer = DesignItem.GetOrCreateDesignItem(selectionChangedEvent.oldSelectedElements[0].parent.element, this.designerCanvas.serviceContainer, this.designerCanvas.instanceServiceContainer);
14
30
  this.removeExtension(primaryContainer, ExtensionType.PrimarySelectionContainer);
15
31
  this.removeExtension(selectionChangedEvent.oldSelectedElements[0], ExtensionType.PrimarySelection);
16
32
  this.removeExtensions(selectionChangedEvent.oldSelectedElements, ExtensionType.Selection);
@@ -19,21 +35,21 @@ export class ExtensionManager {
19
35
  if (selectionChangedEvent.selectedElements && selectionChangedEvent.selectedElements.length) {
20
36
  this.applyExtensions(selectionChangedEvent.selectedElements, ExtensionType.Selection);
21
37
  this.applyExtension(selectionChangedEvent.selectedElements[0], ExtensionType.PrimarySelection);
22
- const primaryContainer = DesignItem.GetOrCreateDesignItem(selectionChangedEvent.selectedElements[0].parent.element, this.designerView.serviceContainer, this.designerView.instanceServiceContainer);
38
+ const primaryContainer = DesignItem.GetOrCreateDesignItem(selectionChangedEvent.selectedElements[0].parent.element, this.designerCanvas.serviceContainer, this.designerCanvas.instanceServiceContainer);
23
39
  this.applyExtension(primaryContainer, ExtensionType.PrimarySelectionContainer);
24
40
  }
25
41
  this.refreshExtensions(selectionChangedEvent.selectedElements);
26
42
  }
27
- applyExtension(designItem, extensionType) {
43
+ applyExtension(designItem, extensionType, recursive = false) {
28
44
  if (designItem) {
29
- const extProv = this.designerView.serviceContainer.designerExtensions.get(extensionType);
45
+ const extProv = this.designerCanvas.serviceContainer.designerExtensions.get(extensionType);
30
46
  if (extProv) {
31
47
  for (let e of extProv) {
32
- if (e.shouldExtend(this, this.designerView, designItem)) {
48
+ if (e.shouldExtend(this, this.designerCanvas, designItem)) {
33
49
  let appE = designItem.appliedDesignerExtensions.get(extensionType);
34
50
  if (!appE)
35
51
  appE = [];
36
- const ext = e.getExtension(this, this.designerView, designItem);
52
+ const ext = e.getExtension(this, this.designerCanvas, designItem);
37
53
  try {
38
54
  ext.extend();
39
55
  }
@@ -45,19 +61,24 @@ export class ExtensionManager {
45
61
  }
46
62
  }
47
63
  }
64
+ if (recursive) {
65
+ for (const d of designItem.children()) {
66
+ this.applyExtension(d, extensionType, recursive);
67
+ }
68
+ }
48
69
  }
49
70
  }
50
- applyExtensions(designItems, extensionType) {
71
+ applyExtensions(designItems, extensionType, recursive = false) {
51
72
  if (designItems) {
52
- const extProv = this.designerView.serviceContainer.designerExtensions.get(extensionType);
73
+ const extProv = this.designerCanvas.serviceContainer.designerExtensions.get(extensionType);
53
74
  if (extProv) {
54
75
  for (let e of extProv) {
55
76
  for (let i of designItems) {
56
- if (e.shouldExtend(this, this.designerView, i)) {
77
+ if (e.shouldExtend(this, this.designerCanvas, i)) {
57
78
  let appE = i.appliedDesignerExtensions.get(extensionType);
58
79
  if (!appE)
59
80
  appE = [];
60
- const ext = e.getExtension(this, this.designerView, i);
81
+ const ext = e.getExtension(this, this.designerCanvas, i);
61
82
  try {
62
83
  ext.extend();
63
84
  }
@@ -70,6 +91,11 @@ export class ExtensionManager {
70
91
  }
71
92
  }
72
93
  }
94
+ if (recursive) {
95
+ for (const d of designItems) {
96
+ this.applyExtensions(Array.from(d.children()), extensionType, recursive);
97
+ }
98
+ }
73
99
  }
74
100
  }
75
101
  removeExtension(designItem, extensionType) {
@@ -1,8 +1,8 @@
1
1
  import { IDesignItem } from "../../../item/IDesignItem";
2
2
  import { ExtensionType } from './ExtensionType';
3
3
  export interface IExtensionManager {
4
- applyExtension(designItem: IDesignItem, extensionType: ExtensionType): any;
5
- applyExtensions(designItems: IDesignItem[], extensionType: ExtensionType): any;
4
+ applyExtension(designItem: IDesignItem, extensionType: ExtensionType, recursive?: boolean): any;
5
+ applyExtensions(designItems: IDesignItem[], extensionType: ExtensionType, recursive?: boolean): any;
6
6
  removeExtension(designItem: IDesignItem, extensionType?: ExtensionType): any;
7
7
  removeExtensions(designItems: IDesignItem[], extensionType?: ExtensionType): any;
8
8
  refreshExtension(designItem: IDesignItem, extensionType?: ExtensionType): any;
@@ -0,0 +1,11 @@
1
+ import { IDesignItem } from "../../../item/IDesignItem";
2
+ import { IDesignerCanvas } from "../IDesignerCanvas";
3
+ import { AbstractExtension } from './AbstractExtension';
4
+ import { IExtensionManager } from "./IExtensionManger";
5
+ export declare class IframeExtension extends AbstractExtension {
6
+ constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
7
+ extend(): void;
8
+ _pointerEvent(event: PointerEvent): void;
9
+ refresh(): void;
10
+ dispose(): void;
11
+ }
@@ -0,0 +1,46 @@
1
+ import { AbstractExtension } from './AbstractExtension';
2
+ export class IframeExtension extends AbstractExtension {
3
+ constructor(extensionManager, designerView, extendedItem) {
4
+ super(extensionManager, designerView, extendedItem);
5
+ }
6
+ extend() {
7
+ // forward events to designer, so iframe is selectable via click
8
+ let iframe = this.extendedItem.element;
9
+ iframe.contentWindow.addEventListener('pointerdown', (e) => this._pointerEvent(e), { capture: true });
10
+ iframe.contentWindow.addEventListener('pointermove', (e) => this._pointerEvent(e), { capture: true });
11
+ iframe.contentWindow.addEventListener('pointerup', (e) => this._pointerEvent(e), { capture: true });
12
+ }
13
+ _pointerEvent(event) {
14
+ const rect = this.extendedItem.element.getBoundingClientRect();
15
+ const that = this;
16
+ const handler = {
17
+ get(target, property) {
18
+ switch (property) {
19
+ case 'composedPath':
20
+ return () => [that.extendedItem.element];
21
+ case 'x':
22
+ case 'clientX':
23
+ case 'offsetX':
24
+ case 'pageX':
25
+ return target[property] + rect.x;
26
+ case 'y':
27
+ case 'clientY':
28
+ case 'offsetY':
29
+ case 'pageY':
30
+ return target[property] + rect.y;
31
+ }
32
+ return target[property];
33
+ }
34
+ };
35
+ event.preventDefault();
36
+ event.stopPropagation();
37
+ const proxy = new Proxy(event, handler);
38
+ //@ts-ignore
39
+ this.designerCanvas._pointerEventHandlerBound(proxy);
40
+ }
41
+ refresh() {
42
+ }
43
+ dispose() {
44
+ this._removeAllOverlays();
45
+ }
46
+ }
@@ -0,0 +1,9 @@
1
+ import { IDesignerExtensionProvider } from "./IDesignerExtensionProvider";
2
+ import { IDesignItem } from "../../../item/IDesignItem";
3
+ import { IDesignerCanvas } from "../IDesignerCanvas";
4
+ import { IDesignerExtension } from "./IDesignerExtension";
5
+ import { IExtensionManager } from "./IExtensionManger";
6
+ export declare class IframeExtensionProvider implements IDesignerExtensionProvider {
7
+ shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
8
+ getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
+ }
@@ -0,0 +1,9 @@
1
+ import { IframeExtension } from "./IframeExtension.js";
2
+ export class IframeExtensionProvider {
3
+ shouldExtend(extensionManager, designerCanvas, designItem) {
4
+ return designItem.name == 'iframe';
5
+ }
6
+ getExtension(extensionManager, designerCanvas, designItem) {
7
+ return new IframeExtension(extensionManager, designerCanvas, designItem);
8
+ }
9
+ }
@@ -4,7 +4,7 @@ import { AbstractExtension } from './AbstractExtension';
4
4
  import { IExtensionManager } from "./IExtensionManger";
5
5
  export declare class InvisibleDivExtension extends AbstractExtension {
6
6
  private _rect;
7
- constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
7
+ constructor(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, extendedItem: IDesignItem);
8
8
  extend(): void;
9
9
  refresh(): void;
10
10
  dispose(): void;
@@ -1,8 +1,8 @@
1
1
  import { AbstractExtension } from './AbstractExtension';
2
2
  export class InvisibleDivExtension extends AbstractExtension {
3
3
  _rect;
4
- constructor(extensionManager, designerView, extendedItem) {
5
- super(extensionManager, designerView, extendedItem);
4
+ constructor(extensionManager, designerCanvas, extendedItem) {
5
+ super(extensionManager, designerCanvas, extendedItem);
6
6
  }
7
7
  extend() {
8
8
  this.refresh();
@@ -4,7 +4,7 @@ import { IDesignerCanvas } from "../IDesignerCanvas";
4
4
  import { IDesignerExtension } from "./IDesignerExtension";
5
5
  import { IExtensionManager } from "./IExtensionManger";
6
6
  export declare class InvisibleDivExtensionProvider implements IDesignerExtensionProvider {
7
- shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
- getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
7
+ shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
8
+ getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
9
  readonly style: CSSStyleSheet;
10
10
  }
@@ -1,15 +1,15 @@
1
1
  import { InvisibleDivExtension } from "./InvisibleDivExtension";
2
2
  import { css } from "@node-projects/base-custom-webcomponent";
3
3
  export class InvisibleDivExtensionProvider {
4
- shouldExtend(extensionManager, designerView, designItem) {
4
+ shouldExtend(extensionManager, designerCanvas, designItem) {
5
5
  if (designItem.name == 'div') {
6
6
  const st = window.getComputedStyle(designItem.element);
7
7
  return st.backgroundColor == 'rgba(0, 0, 0, 0)' && st.borderStyle == 'none';
8
8
  }
9
9
  return false;
10
10
  }
11
- getExtension(extensionManager, designerView, designItem) {
12
- return new InvisibleDivExtension(extensionManager, designerView, designItem);
11
+ getExtension(extensionManager, designerCanvas, designItem) {
12
+ return new InvisibleDivExtension(extensionManager, designerCanvas, designItem);
13
13
  }
14
14
  style = css `
15
15
  .svg-invisible-div { stroke: lightgray; fill: transparent; stroke-width: 1;
@@ -15,10 +15,9 @@ export declare class PathExtension extends AbstractExtension {
15
15
  constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
16
16
  extend(): void;
17
17
  pointerEvent(event: PointerEvent, circle: SVGCircleElement, p: PathData, index: number): void;
18
- _drawPath(path: PathData[], index: number): string;
19
18
  _drawPathCircle(x: number, y: number, p: PathData, index: number): void;
20
19
  _drawPathLine(x1: number, y1: number, x2: number, y2: number): void;
21
- _drawHelpLine(pStart: IPoint, pEnd: IPoint): void;
20
+ _checkCircleIndex(p: PathData, circlePos: IPoint): boolean;
22
21
  refresh(): void;
23
22
  dispose(): void;
24
23
  }