@node-projects/web-component-designer 0.0.79 → 0.0.83

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 (85) hide show
  1. package/.github/FUNDING.yml +1 -0
  2. package/dist/elements/helper/PathDataPolyfill.d.ts +11 -10
  3. package/dist/elements/helper/PathDataPolyfill.js +36 -1
  4. package/dist/elements/services/DefaultServiceBootstrap.js +9 -3
  5. package/dist/elements/services/htmlWriterService/AbstractHtmlWriterService.d.ts +10 -0
  6. package/dist/elements/services/htmlWriterService/AbstractHtmlWriterService.js +62 -0
  7. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.d.ts +5 -5
  8. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.js +4 -4
  9. package/dist/elements/services/htmlWriterService/HtmlWriterService copy.d.ts +4 -14
  10. package/dist/elements/services/htmlWriterService/HtmlWriterService copy.js +100 -100
  11. package/dist/elements/services/htmlWriterService/HtmlWriterService.d.ts +6 -6
  12. package/dist/elements/services/htmlWriterService/HtmlWriterService.js +6 -33
  13. package/dist/elements/services/htmlWriterService/IHtmlWriterOptions.d.ts +2 -0
  14. package/dist/elements/services/htmlWriterService/IHtmlWriterOptions.js +5 -3
  15. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.js +3 -1
  16. package/dist/elements/widgets/codeView/code-view-ace.js +1 -1
  17. package/dist/elements/widgets/codeView/code-view-code-mirror.js +1 -1
  18. package/dist/elements/widgets/designerView/DomConverter.d.ts +3 -3
  19. package/dist/elements/widgets/designerView/DomConverter.js +7 -4
  20. package/dist/elements/widgets/designerView/designerCanvas.d.ts +2 -0
  21. package/dist/elements/widgets/designerView/designerCanvas.js +11 -4
  22. package/dist/elements/widgets/designerView/designerView.js +25 -7
  23. package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +5 -4
  24. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +41 -15
  25. package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +2 -2
  26. package/dist/elements/widgets/designerView/extensions/IframeExtension.d.ts +11 -0
  27. package/dist/elements/widgets/designerView/extensions/IframeExtension.js +46 -0
  28. package/dist/elements/widgets/designerView/extensions/IframeExtensionProvider.d.ts +9 -0
  29. package/dist/elements/widgets/designerView/extensions/IframeExtensionProvider.js +9 -0
  30. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.d.ts +1 -1
  31. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.js +2 -2
  32. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtensionProvider.d.ts +2 -2
  33. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtensionProvider.js +3 -3
  34. package/dist/elements/widgets/designerView/extensions/PathExtension.d.ts +2 -1
  35. package/dist/elements/widgets/designerView/extensions/PathExtension.js +139 -12
  36. package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +11 -3
  37. package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.js +2 -1
  38. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js +0 -1
  39. package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.d.ts +8 -0
  40. package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.js +31 -0
  41. package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.d.ts +8 -0
  42. package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.js +34 -0
  43. package/dist/elements/widgets/designerView/tools/DrawElementTool.d.ts +1 -0
  44. package/dist/elements/widgets/designerView/tools/DrawElementTool.js +1 -0
  45. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.d.ts +1 -0
  46. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.js +2 -0
  47. package/dist/elements/widgets/designerView/tools/DrawLineTool.d.ts +1 -0
  48. package/dist/elements/widgets/designerView/tools/DrawLineTool.js +2 -0
  49. package/dist/elements/widgets/designerView/tools/DrawPathTool.d.ts +1 -1
  50. package/dist/elements/widgets/designerView/tools/DrawPathTool.js +18 -9
  51. package/dist/elements/widgets/designerView/tools/DrawRectTool.d.ts +1 -0
  52. package/dist/elements/widgets/designerView/tools/DrawRectTool.js +2 -0
  53. package/dist/elements/widgets/designerView/tools/ITool.d.ts +1 -0
  54. package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.d.ts +1 -0
  55. package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.js +1 -0
  56. package/dist/elements/widgets/designerView/tools/PanTool.d.ts +1 -0
  57. package/dist/elements/widgets/designerView/tools/PanTool.js +1 -0
  58. package/dist/elements/widgets/designerView/tools/PickColorTool.d.ts +1 -0
  59. package/dist/elements/widgets/designerView/tools/PickColorTool.js +1 -0
  60. package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +1 -0
  61. package/dist/elements/widgets/designerView/tools/PointerTool.js +1 -0
  62. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.d.ts +1 -0
  63. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.js +1 -0
  64. package/dist/elements/widgets/designerView/tools/TextTool.d.ts +1 -0
  65. package/dist/elements/widgets/designerView/tools/TextTool.js +1 -0
  66. package/dist/elements/widgets/designerView/tools/ZoomTool.d.ts +1 -0
  67. package/dist/elements/widgets/designerView/tools/ZoomTool.js +1 -0
  68. package/dist/elements/widgets/treeView/treeViewExtended.js +1 -0
  69. package/dist/index.d.ts +2 -0
  70. package/dist/index.js +2 -0
  71. package/package.json +9 -9
  72. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService copy.d.ts +0 -22
  73. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService copy.js +0 -125
  74. package/dist/elements/services/htmlWriterService/LitElementWriterService.d.ts +0 -14
  75. package/dist/elements/services/htmlWriterService/LitElementWriterService.js +0 -123
  76. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService copy.d.ts +0 -22
  77. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService copy.js +0 -125
  78. package/dist/elements/services/initializationService/IIntializationService copy.d.ts +0 -4
  79. package/dist/elements/services/initializationService/IIntializationService copy.js +0 -1
  80. package/dist/elements/services/manifestLoaders/WebcomponentManifestParserService.d.ts +0 -26
  81. package/dist/elements/services/manifestLoaders/WebcomponentManifestParserService.js +0 -69
  82. package/dist/elements/services/webcomponentManifestParserService/WebcomponentManifestParserService.1.d.ts +0 -0
  83. package/dist/elements/services/webcomponentManifestParserService/WebcomponentManifestParserService.1.js +0 -1
  84. package/dist/elements/services/webcomponentManifestParserService/webcomponentManifestParserService.d.ts +0 -26
  85. package/dist/elements/services/webcomponentManifestParserService/webcomponentManifestParserService.js +0 -69
@@ -1,10 +1,13 @@
1
- import { IndentedTextWriter } from "../../helper/IndentedTextWriter";
1
+ import { IndentedTextWriter } from "../../helper/IndentedTextWriter.js";
2
2
  export class DomConverter {
3
- static normalizeAttributeValue(value) {
3
+ static normalizeAttributeValue(value, useSingleQuotes = false) {
4
4
  if (typeof value === 'number')
5
5
  value = value.toString();
6
- if (value)
6
+ if (value) {
7
+ if (useSingleQuotes)
8
+ return value.replaceAll('\'', ''');
7
9
  return value.replaceAll('"', '"');
10
+ }
8
11
  return value;
9
12
  }
10
13
  static normalizeContentValue(value) {
@@ -31,7 +34,7 @@ export class DomConverter {
31
34
  }
32
35
  static ConvertToString(designItems, designItemsAssignmentList) {
33
36
  let itw = new IndentedTextWriter();
34
- let options = { beautifyOutput: true, writeDesignerProperties: true, compressCssToShorthandProperties: true };
37
+ let options = { beautifyOutput: true, writeDesignerProperties: true, compressCssToShorthandProperties: true, parseJsonInAttributes: true, jsonWriteMode: 'beauty' };
35
38
  designItems[0].serviceContainer.htmlWriterService.write(itw, designItems, true, options, designItemsAssignmentList);
36
39
  return itw.getString();
37
40
  }
@@ -53,6 +53,8 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
53
53
  set designerWidth(value: string);
54
54
  get designerHeight(): string;
55
55
  set designerHeight(value: string);
56
+ get designerOffsetWidth(): number;
57
+ get designerOffsetHeight(): number;
56
58
  set additionalStyle(value: CSSStyleSheet);
57
59
  executeCommand(command: IUiCommand): Promise<void>;
58
60
  canExecuteCommand(command: IUiCommand): boolean;
@@ -138,10 +138,6 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
138
138
  this._canvas = this._getDomElement('node-projects-designer-canvas-canvas');
139
139
  this._canvasContainer = this._getDomElement('node-projects-designer-canvas-canvasContainer');
140
140
  this._outercanvas2 = this._getDomElement('node-projects-designer-canvas-outercanvas2');
141
- this.instanceServiceContainer = new InstanceServiceContainer(this);
142
- this.instanceServiceContainer.register("undoService", new UndoService(this));
143
- this.instanceServiceContainer.register("selectionService", new SelectionService);
144
- this.extensionManager = new ExtensionManager(this);
145
141
  this._onKeyDownBound = this.onKeyDown.bind(this);
146
142
  this._onKeyUpBound = this.onKeyUp.bind(this);
147
143
  this._onDblClickBound = this._onDblClick.bind(this);
@@ -163,6 +159,12 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
163
159
  this._canvasContainer.style.height = value;
164
160
  this.zoomFactorChanged();
165
161
  }
162
+ get designerOffsetWidth() {
163
+ return this._canvasContainer.offsetWidth;
164
+ }
165
+ get designerOffsetHeight() {
166
+ return this._canvasContainer.offsetHeight;
167
+ }
166
168
  set additionalStyle(value) {
167
169
  if (value) {
168
170
  for (let r of value.rules) {
@@ -301,8 +303,12 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
301
303
  }
302
304
  initialize(serviceContainer) {
303
305
  this.serviceContainer = serviceContainer;
306
+ this.instanceServiceContainer = new InstanceServiceContainer(this);
307
+ this.instanceServiceContainer.register("undoService", new UndoService(this));
308
+ this.instanceServiceContainer.register("selectionService", new SelectionService);
304
309
  this.rootDesignItem = DesignItem.GetOrCreateDesignItem(this._canvas, this.serviceContainer, this.instanceServiceContainer);
305
310
  this.instanceServiceContainer.register("contentService", new ContentService(this.rootDesignItem));
311
+ this.extensionManager = new ExtensionManager(this);
306
312
  this.overlayLayer = new OverlayLayerView(serviceContainer);
307
313
  this.overlayLayer.style.pointerEvents = 'none';
308
314
  this._canvasContainer.appendChild(this.overlayLayer);
@@ -358,6 +364,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
358
364
  this.snapLines.clearSnaplines();
359
365
  }
360
366
  setDesignItems(designItems) {
367
+ this._fillCalculationrects();
361
368
  this.instanceServiceContainer.undoService.clear();
362
369
  this.overlayLayer.removeAllOverlays();
363
370
  DomHelper.removeAllChildnodes(this.overlayLayer);
@@ -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;
@@ -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.onpointerdown = (e) => this._pointerEvent(e);
10
+ iframe.contentWindow.onpointermove = (e) => this._pointerEvent(e);
11
+ iframe.contentWindow.onpointerup = (e) => this._pointerEvent(e);
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;
@@ -2,6 +2,7 @@ import { IDesignItem } from "../../../item/IDesignItem";
2
2
  import { IDesignerCanvas } from "../IDesignerCanvas";
3
3
  import { AbstractExtension } from "./AbstractExtension";
4
4
  import "../../../helper/PathDataPolyfill";
5
+ import { IPoint } from "../../../../interfaces/IPoint";
5
6
  import { IExtensionManager } from "./IExtensionManger";
6
7
  import { PathData } from "../../../helper/PathDataPolyfill";
7
8
  export declare class PathExtension extends AbstractExtension {
@@ -14,9 +15,9 @@ export declare class PathExtension extends AbstractExtension {
14
15
  constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
15
16
  extend(): void;
16
17
  pointerEvent(event: PointerEvent, circle: SVGCircleElement, p: PathData, index: number): void;
17
- _drawPath(path: PathData[], index: number): void;
18
18
  _drawPathCircle(x: number, y: number, p: PathData, index: number): void;
19
19
  _drawPathLine(x1: number, y1: number, x2: number, y2: number): void;
20
+ _checkCircleIndex(p: PathData, circlePos: IPoint): boolean;
20
21
  refresh(): void;
21
22
  dispose(): void;
22
23
  }