@node-projects/web-component-designer 0.0.251 → 0.0.253

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 (99) hide show
  1. package/dist/elements/item/DesignItem.d.ts +2 -0
  2. package/dist/elements/item/DesignItem.js +14 -3
  3. package/dist/elements/item/IDesignItem.d.ts +2 -0
  4. package/dist/elements/services/DefaultServiceBootstrap.js +12 -9
  5. package/dist/elements/services/dragDropService/DragDropService.js +6 -6
  6. package/dist/elements/services/placementService/DefaultPlacementService.d.ts +1 -1
  7. package/dist/elements/services/placementService/DefaultPlacementService.js +4 -6
  8. package/dist/elements/services/placementService/FlexBoxPlacementService.d.ts +4 -2
  9. package/dist/elements/services/placementService/FlexBoxPlacementService.js +8 -4
  10. package/dist/elements/services/placementService/GridPlacementService.d.ts +4 -2
  11. package/dist/elements/services/placementService/GridPlacementService.js +8 -4
  12. package/dist/elements/services/placementService/IPlacementService.d.ts +1 -1
  13. package/dist/elements/services/propertiesService/PropertyTabsService.js +1 -0
  14. package/dist/elements/services/propertiesService/services/CssProperties.json +39 -6
  15. package/dist/elements/services/propertiesService/services/CssPropertiesService.d.ts +2 -1
  16. package/dist/elements/services/propertiesService/services/CssPropertiesService.js +9 -0
  17. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.js +1 -0
  18. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +9 -1
  19. package/dist/elements/widgets/designerView/extensions/ExtensionType.d.ts +10 -3
  20. package/dist/elements/widgets/designerView/extensions/ExtensionType.js +9 -2
  21. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.js +4 -0
  22. package/dist/elements/widgets/designerView/tools/DrawLineTool.js +4 -0
  23. package/dist/elements/widgets/designerView/tools/DrawPathTool.js +4 -0
  24. package/dist/elements/widgets/designerView/tools/DrawRectTool.js +4 -0
  25. package/dist/elements/widgets/designerView/tools/PointerTool.js +5 -5
  26. package/dist/index.d.ts +0 -1
  27. package/package.json +4 -4
  28. package/dist/elements/services/dragDropService/ExternalDragDropService copy.d.ts +0 -6
  29. package/dist/elements/services/dragDropService/ExternalDragDropService copy.js +0 -28
  30. package/dist/elements/services/dragDropService/IExternalDragDropService copy.d.ts +0 -5
  31. package/dist/elements/services/dragDropService/IExternalDragDropService copy.js +0 -1
  32. package/dist/elements/services/htmlParserService/AbstractClassElementParserService.d.ts +0 -9
  33. package/dist/elements/services/htmlParserService/AbstractClassElementParserService.js +0 -46
  34. package/dist/elements/services/htmlParserService/BaseCustomWebcomponentParserService copy.d.ts +0 -11
  35. package/dist/elements/services/htmlParserService/BaseCustomWebcomponentParserService copy.js +0 -90
  36. package/dist/elements/services/propertiesService/DefaultEditorTypesService copy.d.ts +0 -6
  37. package/dist/elements/services/propertiesService/DefaultEditorTypesService copy.js +0 -64
  38. package/dist/elements/services/propertiesService/GridEditorTypesService.d.ts +0 -6
  39. package/dist/elements/services/propertiesService/GridEditorTypesService.js +0 -64
  40. package/dist/elements/services/propertiesService/propertyEditors/GridCellPropertyEditor.d.ts +0 -9
  41. package/dist/elements/services/propertiesService/propertyEditors/GridCellPropertyEditor.js +0 -16
  42. package/dist/elements/services/propertiesService/propertyEditors/JsonPropertyEditor copy.d.ts +0 -9
  43. package/dist/elements/services/propertiesService/propertyEditors/JsonPropertyEditor copy.js +0 -21
  44. package/dist/elements/services/undoService/transactionItems/AttributeChangeAction copy.d.ts +0 -15
  45. package/dist/elements/services/undoService/transactionItems/AttributeChangeAction copy.js +0 -70
  46. package/dist/elements/services/undoService/transactionItems/ContentChangeAction.d.ts +0 -13
  47. package/dist/elements/services/undoService/transactionItems/ContentChangeAction.js +0 -38
  48. package/dist/elements/services/undoService/transactionItems/CssStyleChangeAction copy.d.ts +0 -14
  49. package/dist/elements/services/undoService/transactionItems/CssStyleChangeAction copy.js +0 -44
  50. package/dist/elements/services/undoService/transactionItems/InsertChildAction copy.d.ts +0 -16
  51. package/dist/elements/services/undoService/transactionItems/InsertChildAction copy.js +0 -37
  52. package/dist/elements/services/undoService/transactionItems/StylesheetStyleChangeAction.d.ts +0 -17
  53. package/dist/elements/services/undoService/transactionItems/StylesheetStyleChangeAction.js +0 -28
  54. package/dist/elements/widgets/codeView/code-view-ace copy.d.ts +0 -24
  55. package/dist/elements/widgets/codeView/code-view-ace copy.js +0 -133
  56. package/dist/elements/widgets/codeView/code-view-code-mirror copy.d.ts +0 -25
  57. package/dist/elements/widgets/codeView/code-view-code-mirror copy.js +0 -106
  58. package/dist/elements/widgets/codeView/code-view-code-mirror-6.d.ts +0 -25
  59. package/dist/elements/widgets/codeView/code-view-code-mirror-6.js +0 -102
  60. package/dist/elements/widgets/codeView/code-view-jar.d.ts +0 -23
  61. package/dist/elements/widgets/codeView/code-view-jar.js +0 -121
  62. package/dist/elements/widgets/designerView/extensions/GridExtension.d.ts +0 -51
  63. package/dist/elements/widgets/designerView/extensions/GridExtension.js +0 -346
  64. package/dist/elements/widgets/designerView/extensions/GridExtensionProvider.d.ts +0 -11
  65. package/dist/elements/widgets/designerView/extensions/GridExtensionProvider.js +0 -22
  66. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension copy 2.d.ts +0 -51
  67. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension copy 2.js +0 -346
  68. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension copy.d.ts +0 -51
  69. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension copy.js +0 -346
  70. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension.d.ts +0 -16
  71. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension.js +0 -71
  72. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtensionProvider copy.d.ts +0 -10
  73. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtensionProvider copy.js +0 -22
  74. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtensionProvider.d.ts +0 -10
  75. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtensionProvider.js +0 -18
  76. package/dist/elements/widgets/designerView/extensions/grid/GridExtension copy.d.ts +0 -51
  77. package/dist/elements/widgets/designerView/extensions/grid/GridExtension copy.js +0 -346
  78. package/dist/elements/widgets/designerView/extensions/grid/GridExtension.d.ts +0 -51
  79. package/dist/elements/widgets/designerView/extensions/grid/GridExtension.js +0 -346
  80. package/dist/elements/widgets/designerView/extensions/grid/GridExtensionProvider copy.d.ts +0 -11
  81. package/dist/elements/widgets/designerView/extensions/grid/GridExtensionProvider copy.js +0 -22
  82. package/dist/elements/widgets/designerView/extensions/grid/GridExtensionProvider.d.ts +0 -11
  83. package/dist/elements/widgets/designerView/extensions/grid/GridExtensionProvider.js +0 -22
  84. package/dist/elements/widgets/designerView/extensions/grid/NewEditGridExtensionProvider.d.ts +0 -10
  85. package/dist/elements/widgets/designerView/extensions/grid/NewEditGridExtensionProvider.js +0 -22
  86. package/dist/elements/widgets/designerView/extensions/grid/OldEditGridExtension.d.ts +0 -51
  87. package/dist/elements/widgets/designerView/extensions/grid/OldEditGridExtension.js +0 -346
  88. package/dist/elements/widgets/designerView/extensions/grid/OldEditGridExtensionProvider.d.ts +0 -10
  89. package/dist/elements/widgets/designerView/extensions/grid/OldEditGridExtensionProvider.js +0 -22
  90. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstExtensionProvider.d.ts +0 -12
  91. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstExtensionProvider.js +0 -17
  92. package/dist/elements/widgets/designerView/extensions/logic/DisplayGridExtensionProvider.d.ts +0 -11
  93. package/dist/elements/widgets/designerView/extensions/logic/DisplayGridExtensionProvider.js +0 -23
  94. package/dist/elements/widgets/designerView/extensions/logic/OrCombineContainerProvider.d.ts +0 -12
  95. package/dist/elements/widgets/designerView/extensions/logic/OrCombineContainerProvider.js +0 -17
  96. package/dist/interfaces/ICommandHandler.d.ts +0 -5
  97. package/dist/interfaces/ICommandHandler.js +0 -1
  98. package/dist/polyfill/mobileDragDrop.d.ts +0 -2
  99. package/dist/polyfill/mobileDragDrop.js +0 -32
@@ -8,6 +8,7 @@ import { IDesignerExtension } from '../widgets/designerView/extensions/IDesigner
8
8
  import { ISize } from '../../interfaces/ISize.js';
9
9
  import { IDesignerExtensionProvider } from '../widgets/designerView/extensions/IDesignerExtensionProvider.js';
10
10
  import { IStyleRule } from '../services/stylesheetService/IStylesheetService.js';
11
+ import { IPlacementService } from '../services/placementService/IPlacementService.js';
11
12
  export declare class DesignItem implements IDesignItem {
12
13
  lastContainerSize: ISize;
13
14
  parsedNode: any;
@@ -85,4 +86,5 @@ export declare class DesignItem implements IDesignItem {
85
86
  _insertChildInternal(designItem: IDesignItem, index?: number): void;
86
87
  _removeChildInternal(designItem: IDesignItem): void;
87
88
  _refreshIfStyleSheet(): void;
89
+ getPlacementService(style?: CSSStyleDeclaration): IPlacementService;
88
90
  }
@@ -422,8 +422,10 @@ export class DesignItem {
422
422
  }
423
423
  // Internal implementations wich don't use undo/redo
424
424
  _insertChildInternal(designItem, index) {
425
- if (designItem.parent && this.instanceServiceContainer.selectionService.primarySelection == designItem)
425
+ if (designItem.parent && this.instanceServiceContainer.selectionService.primarySelection == designItem) {
426
426
  designItem.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(designItem.parent, ExtensionType.PrimarySelectionContainer);
427
+ designItem.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(designItem.parent, ExtensionType.PrimarySelectionContainerAndCanBeEntered);
428
+ }
427
429
  if (designItem.parent) {
428
430
  designItem.parent._removeChildInternal(designItem);
429
431
  }
@@ -438,13 +440,18 @@ export class DesignItem {
438
440
  }
439
441
  designItem._parent = this;
440
442
  //todo: is this still needed???
441
- if (this.instanceServiceContainer.selectionService.primarySelection == designItem)
443
+ if (this.instanceServiceContainer.selectionService.primarySelection == designItem) {
442
444
  designItem.instanceServiceContainer.designerCanvas.extensionManager.applyExtension(designItem.parent, ExtensionType.PrimarySelectionContainer);
445
+ if (designItem.getPlacementService().isEnterableContainer(this))
446
+ designItem.instanceServiceContainer.designerCanvas.extensionManager.applyExtension(designItem.parent, ExtensionType.PrimarySelectionContainerAndCanBeEntered);
447
+ }
443
448
  this._refreshIfStyleSheet();
444
449
  }
445
450
  _removeChildInternal(designItem) {
446
- if (designItem.parent && this.instanceServiceContainer.selectionService.primarySelection == designItem)
451
+ if (designItem.parent && this.instanceServiceContainer.selectionService.primarySelection == designItem) {
447
452
  designItem.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(designItem.parent, ExtensionType.PrimarySelectionContainer);
453
+ designItem.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(designItem.parent, ExtensionType.PrimarySelectionAndCanBeEntered);
454
+ }
448
455
  designItem.instanceServiceContainer.designerCanvas.extensionManager.removeExtensions([designItem], true);
449
456
  const index = this._childArray.indexOf(designItem);
450
457
  if (index > -1) {
@@ -465,4 +472,8 @@ export class DesignItem {
465
472
  else if (this.name == 'link') {
466
473
  }
467
474
  }
475
+ getPlacementService(style) {
476
+ style ??= getComputedStyle(this.element);
477
+ return this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this, style));
478
+ }
468
479
  }
@@ -7,6 +7,7 @@ import { IDesignerExtension } from '../widgets/designerView/extensions/IDesigner
7
7
  import { ISize } from "../../interfaces/ISize.js";
8
8
  import { IDesignerExtensionProvider } from '../widgets/designerView/extensions/IDesignerExtensionProvider.js';
9
9
  import { IStyleRule } from '../services/stylesheetService/IStylesheetService.js';
10
+ import { IPlacementService } from '../services/placementService/IPlacementService.js';
10
11
  export interface IDesignItem {
11
12
  lastContainerSize: ISize;
12
13
  replaceNode(newNode: Node): any;
@@ -67,4 +68,5 @@ export interface IDesignItem {
67
68
  hideAtDesignTime: boolean;
68
69
  hideAtRunTime: boolean;
69
70
  lockAtDesignTime: boolean;
71
+ getPlacementService(style?: CSSStyleDeclaration): IPlacementService;
70
72
  }
@@ -85,6 +85,10 @@ import { MultipleSelectionRectExtensionProvider } from '../widgets/designerView/
85
85
  import { DragDropService } from './dragDropService/DragDropService.js';
86
86
  export function createDefaultServiceContainer() {
87
87
  let serviceContainer = new ServiceContainer();
88
+ let defaultPlacementService = new DefaultPlacementService();
89
+ serviceContainer.register("containerService", defaultPlacementService);
90
+ serviceContainer.register("containerService", new GridPlacementService(defaultPlacementService));
91
+ serviceContainer.register("containerService", new FlexBoxPlacementService(defaultPlacementService));
88
92
  serviceContainer.register("propertyService", new PolymerPropertiesService());
89
93
  serviceContainer.register("propertyService", new LitElementPropertiesService());
90
94
  serviceContainer.register("propertyService", new NativeElementsPropertiesService());
@@ -95,9 +99,6 @@ export function createDefaultServiceContainer() {
95
99
  serviceContainer.register("instanceService", new DefaultInstanceService());
96
100
  serviceContainer.register("editorTypesService", new DefaultEditorTypesService());
97
101
  serviceContainer.register("htmlWriterService", new HtmlWriterService());
98
- serviceContainer.register("containerService", new DefaultPlacementService());
99
- serviceContainer.register("containerService", new GridPlacementService());
100
- serviceContainer.register("containerService", new FlexBoxPlacementService());
101
102
  serviceContainer.register("snaplinesProviderService", new SnaplinesProviderService());
102
103
  serviceContainer.register("htmlParserService", new DefaultHtmlParserService());
103
104
  serviceContainer.register("elementAtPointService", new ElementAtPointService());
@@ -118,9 +119,6 @@ export function createDefaultServiceContainer() {
118
119
  ]);
119
120
  serviceContainer.designerExtensions.set(ExtensionType.PrimarySelection, [
120
121
  new ElementDragTitleExtensionProvider(),
121
- new DisplayGridExtensionProvider(),
122
- new EditGridColumnRowSizesExtensionProvider(),
123
- new FlexboxExtensionProvider(),
124
122
  new TransformOriginExtensionProvider(),
125
123
  new CanvasExtensionProvider(),
126
124
  new PositionExtensionProvider(),
@@ -132,10 +130,15 @@ export function createDefaultServiceContainer() {
132
130
  new RotateExtensionProvider(),
133
131
  new MultipleSelectionRectExtensionProvider(),
134
132
  ]);
133
+ serviceContainer.designerExtensions.set(ExtensionType.PrimarySelectionAndCanBeEntered, [
134
+ new DisplayGridExtensionProvider(),
135
+ new EditGridColumnRowSizesExtensionProvider(),
136
+ new FlexboxExtensionProvider(),
137
+ ]);
135
138
  serviceContainer.designerExtensions.set(ExtensionType.Selection, [
136
139
  new SelectionDefaultExtensionProvider()
137
140
  ]);
138
- serviceContainer.designerExtensions.set(ExtensionType.PrimarySelectionContainer, [
141
+ serviceContainer.designerExtensions.set(ExtensionType.PrimarySelectionContainerAndCanBeEntered, [
139
142
  new DisplayGridExtensionProvider(),
140
143
  new EditGridColumnRowSizesExtensionProvider(),
141
144
  new FlexboxExtensionProvider()
@@ -149,11 +152,11 @@ export function createDefaultServiceContainer() {
149
152
  serviceContainer.designerExtensions.set(ExtensionType.ContainerDrag, [
150
153
  new GrayOutExtensionProvider()
151
154
  ]);
152
- serviceContainer.designerExtensions.set(ExtensionType.ContainerDragOver, [
155
+ serviceContainer.designerExtensions.set(ExtensionType.ContainerDragOverAndCanBeEntered, [
153
156
  new ApplyFirstMachingExtensionProvider(new DisplayGridExtensionProvider(), new GrayOutDragOverContainerExtensionProvider()),
154
157
  new AltToEnterContainerExtensionProvider()
155
158
  ]);
156
- serviceContainer.designerExtensions.set(ExtensionType.ContainerExternalDragOver, [
159
+ serviceContainer.designerExtensions.set(ExtensionType.ContainerExternalDragOverAndCanBeEntered, [
157
160
  new ApplyFirstMachingExtensionProvider(new DisplayGridExtensionProvider(), new GrayOutDragOverContainerExtensionProvider()),
158
161
  ]);
159
162
  serviceContainer.designerExtensions.set(ExtensionType.Doubleclick, [
@@ -10,28 +10,28 @@ export class DragDropService {
10
10
  }
11
11
  dragLeave(designerCanvas, event) {
12
12
  if (this._dragOverExtensionItem) {
13
- designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOver);
13
+ designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOverAndCanBeEntered);
14
14
  this._dragOverExtensionItem = null;
15
15
  }
16
16
  }
17
17
  dragOver(designerCanvas, event) {
18
18
  let [newContainer] = this.getPossibleContainerForDragDrop(designerCanvas, event);
19
19
  if (this._dragOverExtensionItem != newContainer) {
20
- designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOver);
21
- designerCanvas.extensionManager.applyExtension(newContainer, ExtensionType.ContainerExternalDragOver, event);
20
+ designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOverAndCanBeEntered);
21
+ designerCanvas.extensionManager.applyExtension(newContainer, ExtensionType.ContainerExternalDragOverAndCanBeEntered, event);
22
22
  this._dragOverExtensionItem = newContainer;
23
23
  }
24
24
  else {
25
25
  if (event.x != this._oldX && event.y != this._oldY) {
26
26
  this._oldX = event.x;
27
27
  this._oldY = event.y;
28
- designerCanvas.extensionManager.refreshExtension(newContainer, ExtensionType.ContainerExternalDragOver, event);
28
+ designerCanvas.extensionManager.refreshExtension(newContainer, ExtensionType.ContainerExternalDragOverAndCanBeEntered, event);
29
29
  }
30
30
  }
31
31
  }
32
32
  async drop(designerCanvas, event) {
33
33
  if (this._dragOverExtensionItem) {
34
- designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOver);
34
+ designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOverAndCanBeEntered);
35
35
  this._dragOverExtensionItem = null;
36
36
  }
37
37
  let [newContainer] = this.getPossibleContainerForDragDrop(designerCanvas, event);
@@ -76,7 +76,7 @@ export class DragDropService {
76
76
  newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
77
77
  if (newContainerService) {
78
78
  //TODO: Maybe the check for SVG Elemnt should be in "canEnterByDrop"?
79
- if (newContainerService.canEnterByDrop(newContainerElementDesignItem) && !(newContainerElementDesignItem.element instanceof SVGElement)) {
79
+ if (newContainerService.isEnterableContainer(newContainerElementDesignItem) && !(newContainerElementDesignItem.element instanceof SVGElement)) {
80
80
  break;
81
81
  }
82
82
  else {
@@ -4,8 +4,8 @@ import type { IDesignItem } from '../../item/IDesignItem.js';
4
4
  import { IPlacementView } from '../../widgets/designerView/IPlacementView.js';
5
5
  export declare class DefaultPlacementService implements IPlacementService {
6
6
  serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): boolean;
7
+ isEnterableContainer(container: IDesignItem): boolean;
7
8
  canEnter(container: IDesignItem, items: IDesignItem[]): boolean;
8
- canEnterByDrop(container: IDesignItem): boolean;
9
9
  canLeave(container: IDesignItem, items: IDesignItem[]): boolean;
10
10
  getElementOffset(container: IDesignItem, designItem?: IDesignItem): IPoint;
11
11
  private calculateTrack;
@@ -10,19 +10,17 @@ export class DefaultPlacementService {
10
10
  return false;
11
11
  return true;
12
12
  }
13
- canEnter(container, items) {
13
+ isEnterableContainer(container) {
14
14
  if (DomConverter.IsSelfClosingElement(container.element.localName))
15
15
  return false;
16
16
  if (container.element.shadowRoot && container.element.shadowRoot.querySelector('slot') == null)
17
17
  return false;
18
- if (!items.every(x => !x.element.contains(container.element)))
19
- return false;
20
18
  return true;
21
19
  }
22
- canEnterByDrop(container) {
23
- if (DomConverter.IsSelfClosingElement(container.element.localName))
20
+ canEnter(container, items) {
21
+ if (!this.isEnterableContainer(container))
24
22
  return false;
25
- if (container.element.shadowRoot && container.element.shadowRoot.querySelector('slot') == null)
23
+ if (!items.every(x => !x.element.contains(container.element)))
26
24
  return false;
27
25
  return true;
28
26
  }
@@ -3,11 +3,13 @@ import { IDesignItem } from '../../item/IDesignItem.js';
3
3
  import { IPlacementView } from '../../widgets/designerView/IPlacementView.js';
4
4
  import { IPlacementService } from './IPlacementService.js';
5
5
  export declare class FlexBoxPlacementService implements IPlacementService {
6
+ private _basePlacementService;
7
+ constructor(basePlacementService: IPlacementService);
6
8
  enterContainer(container: IDesignItem, items: IDesignItem[]): void;
7
9
  leaveContainer(container: IDesignItem, items: IDesignItem[]): void;
8
10
  serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): boolean;
9
- canEnter(container: IDesignItem, items: IDesignItem[]): boolean;
10
- canEnterByDrop(container: IDesignItem): boolean;
11
+ isEnterableContainer(container: IDesignItem): any;
12
+ canEnter(container: IDesignItem, items: IDesignItem[]): any;
11
13
  canLeave(container: IDesignItem, items: IDesignItem[]): boolean;
12
14
  getElementOffset(container: IDesignItem, designItem?: IDesignItem): IPoint;
13
15
  placePoint(event: MouseEvent, placementView: IPlacementView, container: IDesignItem, startPoint: IPoint, offsetInControl: IPoint, newPoint: IPoint, items: IDesignItem[]): IPoint;
@@ -1,5 +1,9 @@
1
1
  import { DefaultPlacementService } from './DefaultPlacementService.js';
2
2
  export class FlexBoxPlacementService {
3
+ _basePlacementService;
4
+ constructor(basePlacementService) {
5
+ this._basePlacementService = basePlacementService ?? new DefaultPlacementService();
6
+ }
3
7
  enterContainer(container, items) {
4
8
  for (let i of items) {
5
9
  i.removeStyle("position");
@@ -22,11 +26,11 @@ export class FlexBoxPlacementService {
22
26
  return true;
23
27
  return false;
24
28
  }
25
- canEnter(container, items) {
26
- return true;
29
+ isEnterableContainer(container) {
30
+ return this._basePlacementService.isEnterableContainer(container);
27
31
  }
28
- canEnterByDrop(container) {
29
- return true;
32
+ canEnter(container, items) {
33
+ return this._basePlacementService.canEnter(container, items);
30
34
  }
31
35
  canLeave(container, items) {
32
36
  return true;
@@ -3,11 +3,13 @@ import type { IPlacementService } from './IPlacementService.js';
3
3
  import type { IDesignItem } from '../../item/IDesignItem.js';
4
4
  import { IPlacementView } from '../../widgets/designerView/IPlacementView.js';
5
5
  export declare class GridPlacementService implements IPlacementService {
6
+ private _basePlacementService;
7
+ constructor(basePlacementService: IPlacementService);
6
8
  enterContainer(container: IDesignItem, items: IDesignItem[]): void;
7
9
  leaveContainer(container: IDesignItem, items: IDesignItem[]): void;
8
10
  serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): boolean;
9
- canEnter(container: IDesignItem, items: IDesignItem[]): boolean;
10
- canEnterByDrop(container: IDesignItem): boolean;
11
+ isEnterableContainer(container: IDesignItem): any;
12
+ canEnter(container: IDesignItem, items: IDesignItem[]): any;
11
13
  canLeave(container: IDesignItem, items: IDesignItem[]): boolean;
12
14
  getElementOffset(container: IDesignItem, designItem?: IDesignItem): IPoint;
13
15
  placePoint(event: MouseEvent, placementView: IPlacementView, container: IDesignItem, startPoint: IPoint, offsetInControl: IPoint, newPoint: IPoint, items: IDesignItem[]): IPoint;
@@ -2,6 +2,10 @@ import { CalculateGridInformation } from '../../helper/GridHelper.js';
2
2
  import { pointInRect } from '../../helper/Helper.js';
3
3
  import { DefaultPlacementService } from './DefaultPlacementService.js';
4
4
  export class GridPlacementService {
5
+ _basePlacementService;
6
+ constructor(basePlacementService) {
7
+ this._basePlacementService = basePlacementService ?? new DefaultPlacementService();
8
+ }
5
9
  enterContainer(container, items) {
6
10
  for (let i of items) {
7
11
  i.removeStyle("position");
@@ -26,11 +30,11 @@ export class GridPlacementService {
26
30
  return true;
27
31
  return false;
28
32
  }
29
- canEnter(container, items) {
30
- return true;
33
+ isEnterableContainer(container) {
34
+ return this._basePlacementService.isEnterableContainer(container);
31
35
  }
32
- canEnterByDrop(container) {
33
- return true;
36
+ canEnter(container, items) {
37
+ return this._basePlacementService.canEnter(container, items);
34
38
  }
35
39
  canLeave(container, items) {
36
40
  return true;
@@ -4,7 +4,7 @@ import { IPlacementView } from '../../widgets/designerView/IPlacementView.js';
4
4
  import { IPoint } from '../../../interfaces/IPoint.js';
5
5
  export interface IPlacementService extends IService {
6
6
  serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): boolean;
7
- canEnterByDrop(container: IDesignItem): boolean;
7
+ isEnterableContainer(container: IDesignItem): boolean;
8
8
  canEnter(container: IDesignItem, items: IDesignItem[]): boolean;
9
9
  canLeave(container: IDesignItem, items: IDesignItem[]): boolean;
10
10
  enterContainer(container: IDesignItem, items: IDesignItem[]): any;
@@ -17,6 +17,7 @@ export class PropertyTabsService {
17
17
  { name: 'attributes', propertiesService: new AttributesPropertiesService() },
18
18
  { name: 'styles', propertiesService: new CssCurrentPropertiesService() },
19
19
  { name: 'layout', propertiesService: new CssPropertiesService("layout") },
20
+ { name: 'svg', propertiesService: new CssPropertiesService("svg") },
20
21
  ];
21
22
  getPropertygroups(designItems) {
22
23
  if (designItems == null || designItems.length == 0)
@@ -242,7 +242,9 @@
242
242
  "dominantBaseline": {},
243
243
  "emptyCells": {},
244
244
  "fallback": {},
245
- "fill": {},
245
+ "fill": {
246
+ "type": "color"
247
+ },
246
248
  "fillOpacity": {},
247
249
  "fillRule": {},
248
250
  "filter": {},
@@ -413,12 +415,39 @@
413
415
  "outlineOffset": {},
414
416
  "outlineStyle": {},
415
417
  "outlineWidth": {},
416
- "overflow": {},
418
+ "overflow": {
419
+ "type": "list",
420
+ "values": [
421
+ "visible",
422
+ "hidden",
423
+ "clip",
424
+ "scoll",
425
+ "auto"
426
+ ]
427
+ },
417
428
  "overflowAnchor": {},
418
429
  "overflowClipMargin": {},
419
430
  "overflowWrap": {},
420
- "overflowX": {},
421
- "overflowY": {},
431
+ "overflowX": {
432
+ "type": "list",
433
+ "values": [
434
+ "visible",
435
+ "hidden",
436
+ "clip",
437
+ "scoll",
438
+ "auto"
439
+ ]
440
+ },
441
+ "overflowY": {
442
+ "type": "list",
443
+ "values": [
444
+ "visible",
445
+ "hidden",
446
+ "clip",
447
+ "scoll",
448
+ "auto"
449
+ ]
450
+ },
422
451
  "overrideColors": {},
423
452
  "overscrollBehavior": {},
424
453
  "overscrollBehaviorBlock": {},
@@ -509,14 +538,18 @@
509
538
  "type": "color"
510
539
  },
511
540
  "stopOpacity": {},
512
- "stroke": {},
541
+ "stroke": {
542
+ "type": "color"
543
+ },
513
544
  "strokeDasharray": {},
514
545
  "strokeDashoffset": {},
515
546
  "strokeLinecap": {},
516
547
  "strokeLinejoin": {},
517
548
  "strokeMiterlimit": {},
518
549
  "strokeOpacity": {},
519
- "strokeWidth": {},
550
+ "strokeWidth": {
551
+ "type": "number"
552
+ },
520
553
  "suffix": {},
521
554
  "symbols": {},
522
555
  "syntax": {},
@@ -9,7 +9,8 @@ export declare class CssPropertiesService extends CommonPropertiesService {
9
9
  layout: string[];
10
10
  grid: string[];
11
11
  flex: string[];
12
- constructor(name: 'layout' | 'grid' | 'flex');
12
+ svg: string[];
13
+ constructor(name: 'layout' | 'grid' | 'flex' | 'svg');
13
14
  isHandledElement(designItem: IDesignItem): boolean;
14
15
  getProperty(designItem: IDesignItem, name: string): IProperty;
15
16
  getProperties(designItem: IDesignItem): IProperty[] | IPropertyGroup[];
@@ -59,6 +59,15 @@ export class CssPropertiesService extends CommonPropertiesService {
59
59
  "justify-content",
60
60
  "align-items"
61
61
  ];
62
+ svg = [
63
+ "fill",
64
+ "fill-rule",
65
+ "fill-opacity",
66
+ "stroke",
67
+ "stroke-width",
68
+ "stroke-dash-array",
69
+ "stroke-opacity"
70
+ ];
62
71
  constructor(name) {
63
72
  super();
64
73
  this.name = name;
@@ -27,6 +27,7 @@ export class EditTextExtension extends AbstractExtension {
27
27
  //maybe use a html edit framework
28
28
  this.extendedItem.instanceServiceContainer.selectionService.clearSelectedElements();
29
29
  //this.extensionManager.removeExtension(this.extendedItem, ExtensionType.PrimarySelection);
30
+ //this.extensionManager.removeExtension(this.extendedItem, ExtensionType.PrimarySelectionAndCanBeEntered);
30
31
  //this.extensionManager.removeExtension(this.extendedItem, ExtensionType.Selection);
31
32
  this.extendedItem.element.setAttribute('contenteditable', '');
32
33
  this.extendedItem.element.addEventListener('input', this._contentEditedBound);
@@ -32,15 +32,21 @@ export class ExtensionManager {
32
32
  if (selectionChangedEvent.oldSelectedElements[0].parent) {
33
33
  const primaryContainer = DesignItem.GetOrCreateDesignItem(selectionChangedEvent.oldSelectedElements[0].parent.element, selectionChangedEvent.oldSelectedElements[0].parent.element, this.designerCanvas.serviceContainer, this.designerCanvas.instanceServiceContainer);
34
34
  this.removeExtension(primaryContainer, ExtensionType.PrimarySelectionContainer);
35
+ this.removeExtension(primaryContainer, ExtensionType.PrimarySelectionContainerAndCanBeEntered);
35
36
  this.removeExtension(selectionChangedEvent.oldSelectedElements[0], ExtensionType.PrimarySelection);
37
+ this.removeExtension(selectionChangedEvent.oldSelectedElements[0], ExtensionType.PrimarySelectionAndCanBeEntered);
36
38
  this.removeExtensions(selectionChangedEvent.oldSelectedElements, false, ExtensionType.Selection);
37
39
  }
38
40
  }
39
41
  if (selectionChangedEvent.selectedElements && selectionChangedEvent.selectedElements.length) {
40
42
  this.applyExtensions(selectionChangedEvent.selectedElements, ExtensionType.Selection);
41
43
  this.applyExtension(selectionChangedEvent.selectedElements[0], ExtensionType.PrimarySelection);
44
+ if (selectionChangedEvent.selectedElements[0].getPlacementService().isEnterableContainer(selectionChangedEvent.selectedElements[0]))
45
+ this.applyExtension(selectionChangedEvent.selectedElements[0], ExtensionType.PrimarySelectionAndCanBeEntered);
42
46
  const primaryContainer = DesignItem.GetOrCreateDesignItem(selectionChangedEvent.selectedElements[0].parent.element, selectionChangedEvent.selectedElements[0].parent.element, this.designerCanvas.serviceContainer, this.designerCanvas.instanceServiceContainer);
43
47
  this.applyExtension(primaryContainer, ExtensionType.PrimarySelectionContainer);
48
+ if (primaryContainer.getPlacementService().isEnterableContainer(primaryContainer))
49
+ this.applyExtension(primaryContainer, ExtensionType.PrimarySelectionContainerAndCanBeEntered);
44
50
  }
45
51
  //this.refreshExtensions(selectionChangedEvent.selectedElements);
46
52
  }
@@ -273,10 +279,12 @@ export class ExtensionManager {
273
279
  this.refreshExtensions(designItems, ExtensionType.MouseOver, null, ignoredExtension);
274
280
  this.refreshExtensions(designItems, ExtensionType.OnlyOneItemSelected, null, ignoredExtension);
275
281
  this.refreshExtensions(designItems, ExtensionType.MultipleItemsSelected, null, ignoredExtension);
276
- this.refreshExtensions(designItems, ExtensionType.ContainerDragOver, null, ignoredExtension);
282
+ this.refreshExtensions(designItems, ExtensionType.ContainerDragOverAndCanBeEntered, null, ignoredExtension);
277
283
  this.refreshExtensions(designItems, ExtensionType.ContainerDrag, null, ignoredExtension);
278
284
  this.refreshExtensions(designItems, ExtensionType.Doubleclick, null, ignoredExtension);
279
285
  this.refreshExtensions(designItems, ExtensionType.Placement, null, ignoredExtension);
286
+ this.refreshExtensions(designItems, ExtensionType.PrimarySelectionAndCanBeEntered, null, ignoredExtension);
287
+ this.refreshExtensions(designItems, ExtensionType.PrimarySelectionContainerAndCanBeEntered, null, ignoredExtension);
280
288
  }
281
289
  }
282
290
  refreshAllAppliedExtentions() {
@@ -9,15 +9,22 @@ export declare enum ExtensionType {
9
9
  /**
10
10
  * Extension for the Container wich the dragged element is draged over.
11
11
  */
12
- ContainerDragOver = 8,
12
+ ContainerDragOverAndCanBeEntered = 8,
13
13
  /**
14
14
  * Extension for the Container on wich a new element is draged over.
15
15
  */
16
- ContainerExternalDragOver = 9,
16
+ ContainerExternalDragOverAndCanBeEntered = 9,
17
17
  /**
18
18
  * Extension for the Current Container wich the dragged element is contained.
19
19
  */
20
20
  ContainerDrag = 10,
21
21
  Doubleclick = 11,
22
- Placement = 12
22
+ Placement = 12,
23
+ /**
24
+ * Extensions only when the container can be Entered.
25
+ * So for Example on a custome webcomponent wich uses a grid layout for it's root, but can not show children,
26
+ * do not display grid extension.
27
+ */
28
+ PrimarySelectionAndCanBeEntered = 13,
29
+ PrimarySelectionContainerAndCanBeEntered = 14
23
30
  }
@@ -10,15 +10,22 @@ export var ExtensionType;
10
10
  /**
11
11
  * Extension for the Container wich the dragged element is draged over.
12
12
  */
13
- ExtensionType[ExtensionType["ContainerDragOver"] = 8] = "ContainerDragOver";
13
+ ExtensionType[ExtensionType["ContainerDragOverAndCanBeEntered"] = 8] = "ContainerDragOverAndCanBeEntered";
14
14
  /**
15
15
  * Extension for the Container on wich a new element is draged over.
16
16
  */
17
- ExtensionType[ExtensionType["ContainerExternalDragOver"] = 9] = "ContainerExternalDragOver";
17
+ ExtensionType[ExtensionType["ContainerExternalDragOverAndCanBeEntered"] = 9] = "ContainerExternalDragOverAndCanBeEntered";
18
18
  /**
19
19
  * Extension for the Current Container wich the dragged element is contained.
20
20
  */
21
21
  ExtensionType[ExtensionType["ContainerDrag"] = 10] = "ContainerDrag";
22
22
  ExtensionType[ExtensionType["Doubleclick"] = 11] = "Doubleclick";
23
23
  ExtensionType[ExtensionType["Placement"] = 12] = "Placement";
24
+ /**
25
+ * Extensions only when the container can be Entered.
26
+ * So for Example on a custome webcomponent wich uses a grid layout for it's root, but can not show children,
27
+ * do not display grid extension.
28
+ */
29
+ ExtensionType[ExtensionType["PrimarySelectionAndCanBeEntered"] = 13] = "PrimarySelectionAndCanBeEntered";
30
+ ExtensionType[ExtensionType["PrimarySelectionContainerAndCanBeEntered"] = 14] = "PrimarySelectionContainerAndCanBeEntered";
24
31
  })(ExtensionType || (ExtensionType = {}));
@@ -77,12 +77,16 @@ export class DrawEllipsisTool {
77
77
  svg.appendChild(this._path);
78
78
  this._path.setAttribute("cx", (this._cx - mvX).toString());
79
79
  this._path.setAttribute("cy", (this._cy - mvY).toString());
80
+ this._path.removeAttribute("stroke");
81
+ this._path.removeAttribute("stroke-width");
80
82
  svg.style.left = (mvX) + 'px';
81
83
  svg.style.top = (mvY) + 'px';
82
84
  svg.style.position = 'absolute';
83
85
  svg.style.width = Math.round(coords.width + 2 * offset) + 'px';
84
86
  svg.style.height = Math.round(coords.height + 2 * offset) + 'px';
85
87
  svg.style.overflow = 'visible';
88
+ svg.style.stroke = designerCanvas.serviceContainer.globalContext.strokeColor;
89
+ svg.style.strokeWidth = designerCanvas.serviceContainer.globalContext.strokeThickness;
86
90
  this._path = null;
87
91
  const di = DesignItem.createDesignItemFromInstance(svg, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
88
92
  designerCanvas.instanceServiceContainer.undoService.execute(new InsertAction(designerCanvas.rootDesignItem, designerCanvas.rootDesignItem.childCount, di));
@@ -61,6 +61,8 @@ export class DrawLineTool {
61
61
  this._path.setAttribute("y1", (this._startPoint.y - mvY).toString());
62
62
  this._path.setAttribute("x2", (this._endPoint.x - mvX).toString());
63
63
  this._path.setAttribute("y2", (this._endPoint.y - mvY).toString());
64
+ this._path.removeAttribute("stroke");
65
+ this._path.removeAttribute("stroke-width");
64
66
  svg.appendChild(this._path);
65
67
  svg.style.left = (mvX) + 'px';
66
68
  svg.style.top = (mvY) + 'px';
@@ -68,6 +70,8 @@ export class DrawLineTool {
68
70
  svg.style.width = Math.round(coords.width + 2 * offset) + 'px';
69
71
  svg.style.height = Math.round(coords.height + 2 * offset) + 'px';
70
72
  svg.style.overflow = 'visible';
73
+ svg.style.stroke = designerCanvas.serviceContainer.globalContext.strokeColor;
74
+ svg.style.strokeWidth = designerCanvas.serviceContainer.globalContext.strokeThickness;
71
75
  this._path = null;
72
76
  const di = DesignItem.createDesignItemFromInstance(svg, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
73
77
  designerCanvas.instanceServiceContainer.undoService.execute(new InsertAction(designerCanvas.rootDesignItem, designerCanvas.rootDesignItem.childCount, di));
@@ -103,6 +103,8 @@ export class DrawPathTool {
103
103
  const mvY = coords.y - offset;
104
104
  const d = moveSVGPath(this._path, mvX, mvY);
105
105
  this._path.setAttribute("d", d);
106
+ this._path.removeAttribute("stroke");
107
+ this._path.removeAttribute("stroke-width");
106
108
  svg.appendChild(this._path);
107
109
  svg.style.left = (mvX) + 'px';
108
110
  svg.style.top = (mvY) + 'px';
@@ -110,6 +112,8 @@ export class DrawPathTool {
110
112
  svg.style.width = Math.round(coords.width + 2 * offset) + 'px';
111
113
  svg.style.height = Math.round(coords.height + 2 * offset) + 'px';
112
114
  svg.style.overflow = 'visible';
115
+ svg.style.stroke = designerCanvas.serviceContainer.globalContext.strokeColor;
116
+ svg.style.strokeWidth = designerCanvas.serviceContainer.globalContext.strokeThickness;
113
117
  //designerView.rootDesignItem.element.appendChild(svg);
114
118
  this._path = null;
115
119
  this._pathD = null;
@@ -91,6 +91,8 @@ export class DrawRectTool {
91
91
  const mvY = coords.y - offset;
92
92
  this._path.setAttribute("x", (this._px - mvX).toString());
93
93
  this._path.setAttribute("y", (this._py - mvY).toString());
94
+ this._path.removeAttribute("stroke");
95
+ this._path.removeAttribute("stroke-width");
94
96
  svg.appendChild(this._path);
95
97
  svg.style.left = (mvX) + 'px';
96
98
  svg.style.top = (mvY) + 'px';
@@ -98,6 +100,8 @@ export class DrawRectTool {
98
100
  svg.style.width = Math.round(coords.width + 2 * offset) + 'px';
99
101
  svg.style.height = Math.round(coords.height + 2 * offset) + 'px';
100
102
  svg.style.overflow = 'visible';
103
+ svg.style.stroke = designerCanvas.serviceContainer.globalContext.strokeColor;
104
+ svg.style.strokeWidth = designerCanvas.serviceContainer.globalContext.strokeThickness;
101
105
  this._path = null;
102
106
  const di = DesignItem.createDesignItemFromInstance(svg, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
103
107
  designerCanvas.instanceServiceContainer.undoService.execute(new InsertAction(designerCanvas.rootDesignItem, designerCanvas.rootDesignItem.childCount, di));
@@ -249,17 +249,17 @@ export class PointerTool {
249
249
  //if we found a new enterable container create extensions
250
250
  if (newContainerElementDesignItem != null) {
251
251
  if (this._dragOverExtensionItem != newContainerElementDesignItem) {
252
- designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerDragOver);
253
- designerCanvas.extensionManager.applyExtension(newContainerElementDesignItem, ExtensionType.ContainerDragOver, event);
252
+ designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerDragOverAndCanBeEntered);
253
+ designerCanvas.extensionManager.applyExtension(newContainerElementDesignItem, ExtensionType.ContainerDragOverAndCanBeEntered, event);
254
254
  this._dragOverExtensionItem = newContainerElementDesignItem;
255
255
  }
256
256
  else {
257
- designerCanvas.extensionManager.refreshExtension(newContainerElementDesignItem, ExtensionType.ContainerDragOver, event);
257
+ designerCanvas.extensionManager.refreshExtension(newContainerElementDesignItem, ExtensionType.ContainerDragOverAndCanBeEntered, event);
258
258
  }
259
259
  }
260
260
  else {
261
261
  if (this._dragOverExtensionItem) {
262
- designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerDragOver);
262
+ designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerDragOverAndCanBeEntered);
263
263
  this._dragOverExtensionItem = null;
264
264
  }
265
265
  }
@@ -325,7 +325,7 @@ export class PointerTool {
325
325
  }
326
326
  designerCanvas.extensionManager.removeExtension(this._dragExtensionItem, ExtensionType.ContainerDrag);
327
327
  this._dragExtensionItem = null;
328
- designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerDragOver);
328
+ designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerDragOverAndCanBeEntered);
329
329
  this._dragOverExtensionItem = null;
330
330
  this._moveItemsOffset = { x: 0, y: 0 };
331
331
  }