@node-projects/web-component-designer 0.0.194 → 0.0.197

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 (43) hide show
  1. package/dist/elements/services/DefaultServiceBootstrap.js +7 -5
  2. package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +1 -1
  3. package/dist/elements/widgets/designerView/designerCanvas.d.ts +1 -1
  4. package/dist/elements/widgets/designerView/designerCanvas.js +10 -9
  5. package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +6 -6
  6. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +29 -29
  7. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.d.ts +1 -1
  8. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.js +1 -1
  9. package/dist/elements/widgets/designerView/extensions/IDesignerExtension.d.ts +2 -2
  10. package/dist/elements/widgets/designerView/extensions/IDesignerExtensionProvider.d.ts +1 -1
  11. package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +6 -6
  12. package/dist/elements/widgets/designerView/extensions/buttons/GridExtensionDesignViewConfigButtons.js +1 -1
  13. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.d.ts +14 -0
  14. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.js +53 -0
  15. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.d.ts +11 -0
  16. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js +23 -0
  17. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension.d.ts +51 -0
  18. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension.js +346 -0
  19. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtensionProvider.d.ts +10 -0
  20. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtensionProvider.js +22 -0
  21. package/dist/elements/widgets/designerView/extensions/grid/GridExtension copy.d.ts +51 -0
  22. package/dist/elements/widgets/designerView/extensions/grid/GridExtension copy.js +346 -0
  23. package/dist/elements/widgets/designerView/extensions/grid/GridExtension.d.ts +51 -0
  24. package/dist/elements/widgets/designerView/extensions/grid/GridExtension.js +346 -0
  25. package/dist/elements/widgets/designerView/extensions/grid/GridExtensionProvider copy.d.ts +11 -0
  26. package/dist/elements/widgets/designerView/extensions/grid/GridExtensionProvider copy.js +22 -0
  27. package/dist/elements/widgets/designerView/extensions/grid/GridExtensionProvider.d.ts +11 -0
  28. package/dist/elements/widgets/designerView/extensions/grid/GridExtensionProvider.js +22 -0
  29. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstExtensionProvider.d.ts +12 -0
  30. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstExtensionProvider.js +17 -0
  31. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.d.ts +13 -0
  32. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.js +28 -0
  33. package/dist/elements/widgets/designerView/extensions/logic/DisplayGridExtensionProvider.d.ts +11 -0
  34. package/dist/elements/widgets/designerView/extensions/logic/DisplayGridExtensionProvider.js +23 -0
  35. package/dist/elements/widgets/designerView/extensions/logic/OrCombineContainerProvider.d.ts +12 -0
  36. package/dist/elements/widgets/designerView/extensions/logic/OrCombineContainerProvider.js +17 -0
  37. package/dist/elements/widgets/designerView/overlayLayerView.js +4 -1
  38. package/dist/elements/widgets/designerView/tools/PointerTool.js +7 -7
  39. package/dist/elements/widgets/designerView/tools/TextTool.js +1 -1
  40. package/dist/elements/widgets/treeView/treeViewExtended.js +2 -2
  41. package/dist/index.d.ts +5 -2
  42. package/dist/index.js +5 -2
  43. package/package.json +1 -1
@@ -11,7 +11,6 @@ import { DefaultHtmlParserService } from './htmlParserService/DefaultHtmlParserS
11
11
  import { Lit2PropertiesService } from './propertiesService/services/Lit2PropertiesService.js';
12
12
  import { ExtensionType } from '../widgets/designerView/extensions/ExtensionType.js';
13
13
  import { ElementDragTitleExtensionProvider } from '../widgets/designerView/extensions/ElementDragTitleExtensionProvider.js';
14
- import { GridExtensionProvider } from '../widgets/designerView/extensions/GridExtensionProvider.js';
15
14
  import { TransformOriginExtensionProvider } from '../widgets/designerView/extensions/TransformOriginExtensionProvider.js';
16
15
  import { CanvasExtensionProvider } from '../widgets/designerView/extensions/CanvasExtensionProvider.js';
17
16
  import { PositionExtensionProvider } from '../widgets/designerView/extensions/PositionExtensionProvider.js';
@@ -77,6 +76,9 @@ import { SelectionService } from './selectionService/SelectionService.js';
77
76
  import { ContentService } from './contentService/ContentService.js';
78
77
  import { StylesheetServiceDesignViewConfigButtons } from '../widgets/designerView/extensions/buttons/StylesheetServiceDesignViewConfigButtons.js';
79
78
  import { JumpToElementContextMenu } from '../widgets/designerView/extensions/contextMenu/JumpToElementContextMenu.js';
79
+ import { EditGridExtensionProvider } from '../widgets/designerView/extensions/grid/EditGridExtensionProvider.js';
80
+ import { DisplayGridExtensionProvider } from '../widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js';
81
+ import { ApplyFirstMachingExtensionProvider } from '../widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.js';
80
82
  export function createDefaultServiceContainer() {
81
83
  let serviceContainer = new ServiceContainer();
82
84
  serviceContainer.register("propertyService", new PolymerPropertiesService());
@@ -110,7 +112,7 @@ export function createDefaultServiceContainer() {
110
112
  ]);
111
113
  serviceContainer.designerExtensions.set(ExtensionType.PrimarySelection, [
112
114
  new ElementDragTitleExtensionProvider(),
113
- new GridExtensionProvider(),
115
+ new EditGridExtensionProvider(),
114
116
  new FlexboxExtensionProvider(),
115
117
  new TransformOriginExtensionProvider(),
116
118
  new CanvasExtensionProvider(),
@@ -126,7 +128,7 @@ export function createDefaultServiceContainer() {
126
128
  new SelectionDefaultExtensionProvider()
127
129
  ]);
128
130
  serviceContainer.designerExtensions.set(ExtensionType.PrimarySelectionContainer, [
129
- new GridExtensionProvider(),
131
+ new EditGridExtensionProvider(),
130
132
  new FlexboxExtensionProvider()
131
133
  ]);
132
134
  serviceContainer.designerExtensions.set(ExtensionType.MouseOver, [
@@ -139,11 +141,11 @@ export function createDefaultServiceContainer() {
139
141
  new GrayOutExtensionProvider()
140
142
  ]);
141
143
  serviceContainer.designerExtensions.set(ExtensionType.ContainerDragOver, [
142
- new GrayOutDragOverContainerExtensionProvider(),
144
+ new ApplyFirstMachingExtensionProvider(new DisplayGridExtensionProvider(), new GrayOutDragOverContainerExtensionProvider()),
143
145
  new AltToEnterContainerExtensionProvider()
144
146
  ]);
145
147
  serviceContainer.designerExtensions.set(ExtensionType.ContainerExternalDragOver, [
146
- new GrayOutDragOverContainerExtensionProvider()
148
+ new ApplyFirstMachingExtensionProvider(new DisplayGridExtensionProvider(), new GrayOutDragOverContainerExtensionProvider()),
147
149
  ]);
148
150
  serviceContainer.designerExtensions.set(ExtensionType.Doubleclick, [
149
151
  new EditTextExtensionProvider()
@@ -48,7 +48,7 @@ export interface IDesignerCanvas extends IPlacementView, IUiCommandHandler {
48
48
  getElementAtPoint(point: IPoint, ignoreElementCallback?: (element: HTMLElement) => boolean): any;
49
49
  elementFromPoint(x: number, y: number): Element;
50
50
  elementsFromPoint(x: number, y: number): Element[];
51
- showHoverExtension(element: Element): any;
51
+ showHoverExtension(element: Element, event: Event): any;
52
52
  zoomTowardsPoint(point: IPoint, scalechange: number): void;
53
53
  zoomPoint(canvasPoint: IPoint, newZoom: number): void;
54
54
  zoomOntoRectangle(startPoint: IPoint, endPoint: IPoint): void;
@@ -113,7 +113,7 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
113
113
  elementFromPoint(x: number, y: number): Element;
114
114
  elementsFromPoint(x: number, y: number): Element[];
115
115
  getElementAtPoint(point: IPoint, ignoreElementCallback?: (element: HTMLElement) => boolean): HTMLElement;
116
- showHoverExtension(element: Element): void;
116
+ showHoverExtension(element: Element, event: Event): void;
117
117
  private _pointerEventHandler;
118
118
  captureActiveTool(tool: ITool): void;
119
119
  releaseActiveTool(): void;
@@ -609,9 +609,12 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
609
609
  let [newContainer] = this._getPossibleContainerForDrop(event);
610
610
  if (this._dragOverExtensionItem != newContainer) {
611
611
  this.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOver);
612
- this.extensionManager.applyExtension(newContainer, ExtensionType.ContainerExternalDragOver);
612
+ this.extensionManager.applyExtension(newContainer, ExtensionType.ContainerExternalDragOver, event);
613
613
  this._dragOverExtensionItem = newContainer;
614
614
  }
615
+ else {
616
+ this.extensionManager.refreshExtension(newContainer, ExtensionType.ContainerExternalDragOver, event);
617
+ }
615
618
  }
616
619
  }
617
620
  }
@@ -677,19 +680,17 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
677
680
  let [newContainer] = this._getPossibleContainerForDrop(event);
678
681
  if (!newContainer)
679
682
  newContainer = this.rootDesignItem;
680
- let pos = this.getNormalizedElementCoordinates(newContainer.element);
681
683
  this._fillCalculationrects();
682
- const position = this.getNormalizedEventCoordinates(event);
683
684
  //TODO : we need to use container service for adding to element, so also grid and flexbox work correct
684
685
  const transferData = event.dataTransfer.getData(dragDropFormatNameElementDefinition);
685
686
  const elementDefinition = JSON.parse(transferData);
686
687
  const di = await this.serviceContainer.forSomeServicesTillResult("instanceService", (service) => service.getElement(elementDefinition, this.serviceContainer, this.instanceServiceContainer));
687
688
  const grp = di.openGroup("Insert of <" + di.name + ">");
688
689
  di.setStyle('position', 'absolute');
689
- di.setStyle('left', (position.x - pos.x) + 'px');
690
- di.setStyle('top', (position.y - pos.y) + 'px');
691
690
  const containerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainer, getComputedStyle(newContainer.element)));
692
691
  containerService.enterContainer(newContainer, [di]);
692
+ containerService.place(event, this, newContainer, { x: 0, y: 0 }, { x: 0, y: 0 }, this.getNormalizedEventCoordinates(event), [di]);
693
+ containerService.finishPlace(event, this, newContainer, { x: 0, y: 0 }, { x: 0, y: 0 }, this.getNormalizedEventCoordinates(event), [di]);
693
694
  this.instanceServiceContainer.undoService.execute(new InsertAction(newContainer, newContainer.childCount, di));
694
695
  requestAnimationFrame(() => {
695
696
  this.instanceServiceContainer.selectionService.setSelectedElements([di]);
@@ -712,7 +713,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
712
713
  }
713
714
  _onDblClick(event) {
714
715
  event.preventDefault();
715
- this.extensionManager.applyExtension(this.instanceServiceContainer.selectionService.primarySelection, ExtensionType.Doubleclick);
716
+ this.extensionManager.applyExtension(this.instanceServiceContainer.selectionService.primarySelection, ExtensionType.Doubleclick, event);
716
717
  }
717
718
  onKeyUp(event) {
718
719
  if (event.composedPath().indexOf(this.eatEvents) >= 0)
@@ -885,13 +886,13 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
885
886
  }
886
887
  return currentElement;
887
888
  }
888
- showHoverExtension(element) {
889
+ showHoverExtension(element, event) {
889
890
  const currentDesignItem = DesignItem.GetOrCreateDesignItem(element, this.serviceContainer, this.instanceServiceContainer);
890
891
  if (this._lastHoverDesignItem != currentDesignItem) {
891
892
  if (this._lastHoverDesignItem)
892
893
  this.extensionManager.removeExtension(this._lastHoverDesignItem, ExtensionType.MouseOver);
893
894
  if (currentDesignItem && currentDesignItem != this.rootDesignItem && DomHelper.getHost(element.parentNode) !== this.overlayLayer)
894
- this.extensionManager.applyExtension(currentDesignItem, ExtensionType.MouseOver);
895
+ this.extensionManager.applyExtension(currentDesignItem, ExtensionType.MouseOver, event);
895
896
  this._lastHoverDesignItem = currentDesignItem;
896
897
  }
897
898
  }
@@ -930,7 +931,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
930
931
  }
931
932
  this.clickOverlay.style.cursor = this._canvas.style.cursor;
932
933
  const currentDesignItem = DesignItem.GetOrCreateDesignItem(currentElement, this.serviceContainer, this.instanceServiceContainer);
933
- this.showHoverExtension(currentDesignItem.element);
934
+ this.showHoverExtension(currentDesignItem.element, event);
934
935
  //TODO: needed ??
935
936
  if (currentElement && DomHelper.getHost(currentElement.parentNode) === this.overlayLayer) {
936
937
  if (this.eatEvents)
@@ -9,13 +9,13 @@ export declare class ExtensionManager implements IExtensionManager {
9
9
  constructor(designerCanvas: IDesignerCanvas);
10
10
  private _contentChanged;
11
11
  private _selectedElementsChanged;
12
- applyExtension(designItem: IDesignItem, extensionType: ExtensionType, recursive?: boolean): IDesignerExtension[];
13
- applyExtensions(designItems: IDesignItem[], extensionType: ExtensionType, recursive?: boolean): void;
12
+ applyExtension(designItem: IDesignItem, extensionType: ExtensionType, event?: Event, recursive?: boolean): IDesignerExtension[];
13
+ applyExtensions(designItems: IDesignItem[], extensionType: ExtensionType, event?: Event, recursive?: boolean): void;
14
14
  removeExtension(designItem: IDesignItem, extensionType?: ExtensionType): void;
15
- removeExtensions(designItems: IDesignItem[], includeChildren: boolean, extensionType?: ExtensionType): void;
16
- refreshExtension(designItem: IDesignItem, extensionType?: ExtensionType): void;
17
- refreshExtensions(designItems: IDesignItem[], extensionType?: ExtensionType, ignoredExtension?: any): void;
18
- refreshAllExtensions(designItems: IDesignItem[], ignoredExtension?: any): void;
15
+ removeExtensions(designItems: IDesignItem[], recursive: boolean, extensionType?: ExtensionType): void;
16
+ refreshExtension(designItem: IDesignItem, extensionType?: ExtensionType, event?: Event): void;
17
+ refreshExtensions(designItems: IDesignItem[], extensionType?: ExtensionType, event?: Event, ignoredExtension?: IDesignerExtension): void;
18
+ refreshAllExtensions(designItems: IDesignItem[], ignoredExtension?: IDesignerExtension): void;
19
19
  refreshAllAppliedExtentions(): void;
20
20
  reapplyAllAppliedExtentions(): void;
21
21
  private static getAllChildElements;
@@ -13,13 +13,13 @@ export class ExtensionManager {
13
13
  requestAnimationFrame(() => {
14
14
  switch (contentChanged.changeType) {
15
15
  case 'added':
16
- this.applyExtensions(contentChanged.designItems, ExtensionType.Permanent, true);
16
+ this.applyExtensions(contentChanged.designItems, ExtensionType.Permanent, null, true);
17
17
  break;
18
18
  case 'moved':
19
19
  this.refreshExtensions(contentChanged.designItems, ExtensionType.Permanent);
20
20
  break;
21
21
  case 'parsed':
22
- this.applyExtensions(Array.from(this.designerCanvas.rootDesignItem.children()), ExtensionType.Permanent, true);
22
+ this.applyExtensions(Array.from(this.designerCanvas.rootDesignItem.children()), ExtensionType.Permanent, null, true);
23
23
  break;
24
24
  case 'removed':
25
25
  this.removeExtensions(contentChanged.designItems, true, ExtensionType.Permanent);
@@ -44,7 +44,7 @@ export class ExtensionManager {
44
44
  }
45
45
  //this.refreshExtensions(selectionChangedEvent.selectedElements);
46
46
  }
47
- applyExtension(designItem, extensionType, recursive = false) {
47
+ applyExtension(designItem, extensionType, event, recursive = false) {
48
48
  if (designItem && designItem.nodeType == NodeType.Element) {
49
49
  const extProv = this.designerCanvas.serviceContainer.designerExtensions.get(extensionType);
50
50
  let extensions = [];
@@ -61,7 +61,7 @@ export class ExtensionManager {
61
61
  appE = [];
62
62
  const ext = e.getExtension(this, this.designerCanvas, designItem);
63
63
  try {
64
- ext.extend();
64
+ ext.extend(event);
65
65
  extensions.push(ext);
66
66
  }
67
67
  catch (err) {
@@ -75,14 +75,14 @@ export class ExtensionManager {
75
75
  }
76
76
  if (recursive) {
77
77
  for (const d of designItem.children()) {
78
- this.applyExtension(d, extensionType, recursive);
78
+ this.applyExtension(d, extensionType, event, recursive);
79
79
  }
80
80
  }
81
81
  return extensions;
82
82
  }
83
83
  return null;
84
84
  }
85
- applyExtensions(designItems, extensionType, recursive = false) {
85
+ applyExtensions(designItems, extensionType, event, recursive = false) {
86
86
  if (designItems) {
87
87
  const extProv = this.designerCanvas.serviceContainer.designerExtensions.get(extensionType);
88
88
  if (extProv) {
@@ -93,13 +93,13 @@ export class ExtensionManager {
93
93
  shouldAppE = [];
94
94
  shouldAppE.push(e);
95
95
  i.shouldAppliedDesignerExtensions.set(extensionType, shouldAppE);
96
- if ( /*i.nodeType == NodeType.Element &&*/e.shouldExtend(this, this.designerCanvas, i)) {
96
+ if (e.shouldExtend(this, this.designerCanvas, i)) {
97
97
  let appE = i.appliedDesignerExtensions.get(extensionType);
98
98
  if (!appE)
99
99
  appE = [];
100
100
  const ext = e.getExtension(this, this.designerCanvas, i);
101
101
  try {
102
- ext.extend();
102
+ ext.extend(event);
103
103
  }
104
104
  catch (err) {
105
105
  console.error(err);
@@ -113,7 +113,7 @@ export class ExtensionManager {
113
113
  }
114
114
  if (recursive) {
115
115
  for (const d of designItems) {
116
- this.applyExtensions(Array.from(d.children()), extensionType, recursive);
116
+ this.applyExtensions(Array.from(d.children()), extensionType, event, recursive);
117
117
  }
118
118
  }
119
119
  }
@@ -154,11 +154,11 @@ export class ExtensionManager {
154
154
  }
155
155
  }
156
156
  }
157
- removeExtensions(designItems, includeChildren, extensionType) {
157
+ removeExtensions(designItems, recursive, extensionType) {
158
158
  if (designItems) {
159
159
  if (extensionType) {
160
160
  for (let i of designItems) {
161
- if (includeChildren && i.hasChildren) {
161
+ if (recursive && i.hasChildren) {
162
162
  this.removeExtensions([...i.children()], true, extensionType);
163
163
  }
164
164
  i.shouldAppliedDesignerExtensions.delete(extensionType);
@@ -180,7 +180,7 @@ export class ExtensionManager {
180
180
  }
181
181
  else {
182
182
  for (let i of designItems) {
183
- if (includeChildren && i.hasChildren) {
183
+ if (recursive && i.hasChildren) {
184
184
  this.removeExtensions([...i.children()], true, extensionType);
185
185
  }
186
186
  i.shouldAppliedDesignerExtensions.clear();
@@ -200,14 +200,14 @@ export class ExtensionManager {
200
200
  }
201
201
  }
202
202
  }
203
- refreshExtension(designItem, extensionType) {
203
+ refreshExtension(designItem, extensionType, event) {
204
204
  if (designItem) {
205
205
  if (extensionType) {
206
206
  let exts = designItem.appliedDesignerExtensions.get(extensionType);
207
207
  if (exts) {
208
208
  for (let e of exts) {
209
209
  try {
210
- e.refresh();
210
+ e.refresh(event);
211
211
  }
212
212
  catch (err) {
213
213
  console.error(err);
@@ -219,7 +219,7 @@ export class ExtensionManager {
219
219
  for (let appE of designItem.appliedDesignerExtensions) {
220
220
  for (let e of appE[1]) {
221
221
  try {
222
- e.refresh();
222
+ e.refresh(event);
223
223
  }
224
224
  catch (err) {
225
225
  console.error(err);
@@ -229,7 +229,7 @@ export class ExtensionManager {
229
229
  }
230
230
  }
231
231
  }
232
- refreshExtensions(designItems, extensionType, ignoredExtension) {
232
+ refreshExtensions(designItems, extensionType, event, ignoredExtension) {
233
233
  if (designItems) {
234
234
  if (extensionType) {
235
235
  for (let i of designItems) {
@@ -238,7 +238,7 @@ export class ExtensionManager {
238
238
  for (let e of exts) {
239
239
  try {
240
240
  if (e != ignoredExtension)
241
- e.refresh();
241
+ e.refresh(event);
242
242
  }
243
243
  catch (err) {
244
244
  console.error(err);
@@ -253,7 +253,7 @@ export class ExtensionManager {
253
253
  for (let e of appE[1]) {
254
254
  try {
255
255
  if (e != ignoredExtension)
256
- e.refresh();
256
+ e.refresh(event);
257
257
  }
258
258
  catch (err) {
259
259
  console.error(err);
@@ -266,17 +266,17 @@ export class ExtensionManager {
266
266
  }
267
267
  refreshAllExtensions(designItems, ignoredExtension) {
268
268
  if (designItems) {
269
- this.refreshExtensions(designItems, ExtensionType.Permanent, ignoredExtension);
270
- this.refreshExtensions(designItems, ExtensionType.Selection, ignoredExtension);
271
- this.refreshExtensions(designItems, ExtensionType.PrimarySelection, ignoredExtension);
272
- this.refreshExtensions(designItems, ExtensionType.PrimarySelectionContainer, ignoredExtension);
273
- this.refreshExtensions(designItems, ExtensionType.MouseOver, ignoredExtension);
274
- this.refreshExtensions(designItems, ExtensionType.OnlyOneItemSelected, ignoredExtension);
275
- this.refreshExtensions(designItems, ExtensionType.MultipleItemsSelected, ignoredExtension);
276
- this.refreshExtensions(designItems, ExtensionType.ContainerDragOver, ignoredExtension);
277
- this.refreshExtensions(designItems, ExtensionType.ContainerDrag, ignoredExtension);
278
- this.refreshExtensions(designItems, ExtensionType.Doubleclick, ignoredExtension);
279
- this.refreshExtensions(designItems, ExtensionType.Placement, ignoredExtension);
269
+ this.refreshExtensions(designItems, ExtensionType.Permanent, null, ignoredExtension);
270
+ this.refreshExtensions(designItems, ExtensionType.Selection, null, ignoredExtension);
271
+ this.refreshExtensions(designItems, ExtensionType.PrimarySelection, null, ignoredExtension);
272
+ this.refreshExtensions(designItems, ExtensionType.PrimarySelectionContainer, null, ignoredExtension);
273
+ this.refreshExtensions(designItems, ExtensionType.MouseOver, null, ignoredExtension);
274
+ this.refreshExtensions(designItems, ExtensionType.OnlyOneItemSelected, null, ignoredExtension);
275
+ this.refreshExtensions(designItems, ExtensionType.MultipleItemsSelected, null, ignoredExtension);
276
+ this.refreshExtensions(designItems, ExtensionType.ContainerDragOver, null, ignoredExtension);
277
+ this.refreshExtensions(designItems, ExtensionType.ContainerDrag, null, ignoredExtension);
278
+ this.refreshExtensions(designItems, ExtensionType.Doubleclick, null, ignoredExtension);
279
+ this.refreshExtensions(designItems, ExtensionType.Placement, null, ignoredExtension);
280
280
  }
281
281
  }
282
282
  refreshAllAppliedExtentions() {
@@ -4,7 +4,7 @@ import { IDesignerCanvas } from '../IDesignerCanvas.js';
4
4
  import { IDesignerExtension } from './IDesignerExtension.js';
5
5
  import { IExtensionManager } from './IExtensionManger.js';
6
6
  export declare class GrayOutDragOverContainerExtensionProvider implements IDesignerExtensionProvider {
7
- shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
7
+ shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
9
  readonly style: CSSStyleSheet;
10
10
  }
@@ -1,7 +1,7 @@
1
1
  import { css } from "@node-projects/base-custom-webcomponent";
2
2
  import { GrayOutDragOverContainerExtension } from "./GrayOutDragOverContainerExtension.js";
3
3
  export class GrayOutDragOverContainerExtensionProvider {
4
- shouldExtend(extensionManager, designerView, designItem) {
4
+ shouldExtend(extensionManager, designerCanvas, designItem) {
5
5
  return true;
6
6
  }
7
7
  getExtension(extensionManager, designerView, designItem) {
@@ -1,5 +1,5 @@
1
1
  import { IDisposable } from '../../../../interfaces/IDisposable.js';
2
2
  export interface IDesignerExtension extends IDisposable {
3
- extend(): any;
4
- refresh(): any;
3
+ extend(event?: Event): any;
4
+ refresh(event?: Event): any;
5
5
  }
@@ -5,5 +5,5 @@ import { IExtensionManager } from './IExtensionManger.js';
5
5
  export interface IDesignerExtensionProvider {
6
6
  shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
7
7
  getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
8
- style?: CSSStyleSheet;
8
+ style?: CSSStyleSheet | CSSStyleSheet[];
9
9
  }
@@ -2,13 +2,13 @@ import { IDesignItem } from '../../../item/IDesignItem.js';
2
2
  import { ExtensionType } from './ExtensionType.js';
3
3
  import { IDesignerExtension } from './IDesignerExtension.js';
4
4
  export interface IExtensionManager {
5
- applyExtension(designItem: IDesignItem, extensionType: ExtensionType, recursive?: boolean): IDesignerExtension[];
6
- applyExtensions(designItems: IDesignItem[], extensionType: ExtensionType, recursive?: boolean): any;
5
+ applyExtension(designItem: IDesignItem, extensionType: ExtensionType, event?: Event, recursive?: boolean): IDesignerExtension[];
6
+ applyExtensions(designItems: IDesignItem[], extensionType: ExtensionType, event?: Event, recursive?: boolean): any;
7
7
  removeExtension(designItem: IDesignItem, extensionType?: ExtensionType): any;
8
- removeExtensions(designItems: IDesignItem[], includeChildren: boolean, extensionType?: ExtensionType): any;
9
- refreshExtension(designItem: IDesignItem, extensionType?: ExtensionType): any;
10
- refreshExtensions(designItems: IDesignItem[], extensionType?: ExtensionType): any;
11
- refreshAllExtensions(designItems: IDesignItem[], ignoredExtension?: any): any;
8
+ removeExtensions(designItems: IDesignItem[], recursive: boolean, extensionType?: ExtensionType): any;
9
+ refreshExtension(designItem: IDesignItem, extensionType?: ExtensionType, event?: Event): any;
10
+ refreshExtensions(designItems: IDesignItem[], extensionType?: ExtensionType, event?: Event): any;
11
+ refreshAllExtensions(designItems: IDesignItem[], ignoredExtension?: IDesignerExtension): any;
12
12
  refreshAllAppliedExtentions(): any;
13
13
  reapplyAllAppliedExtentions(): any;
14
14
  }
@@ -1,4 +1,4 @@
1
- import { gridExtensionShowOverlayOptionName } from "../GridExtensionProvider.js";
1
+ import { gridExtensionShowOverlayOptionName } from "../grid/DisplayGridExtensionProvider.js";
2
2
  import { AbstractDesignViewConfigButton } from "./AbstractDesignViewConfigButton.js";
3
3
  export class GridExtensionDesignViewConfigButtons extends AbstractDesignViewConfigButton {
4
4
  constructor() {
@@ -0,0 +1,14 @@
1
+ import { IDesignItem } from '../../../../item/IDesignItem.js';
2
+ import { IDesignerCanvas } from '../../IDesignerCanvas.js';
3
+ import { AbstractExtension } from '../AbstractExtension.js';
4
+ import { IExtensionManager } from '../IExtensionManger.js';
5
+ export declare class DisplayGridExtension extends AbstractExtension {
6
+ private _cells;
7
+ private _gaps;
8
+ private gridInformation;
9
+ constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
10
+ extend(event?: Event): void;
11
+ refresh(event?: Event): void;
12
+ dispose(): void;
13
+ _initSVGArrays(): void;
14
+ }
@@ -0,0 +1,53 @@
1
+ import { CalculateGridInformation } from "../../../../helper/GridHelper.js";
2
+ import { AbstractExtension } from '../AbstractExtension.js';
3
+ import { OverlayLayer } from "../OverlayLayer.js";
4
+ export class DisplayGridExtension extends AbstractExtension {
5
+ _cells;
6
+ _gaps;
7
+ gridInformation;
8
+ constructor(extensionManager, designerView, extendedItem) {
9
+ super(extensionManager, designerView, extendedItem);
10
+ }
11
+ extend(event) {
12
+ this._initSVGArrays();
13
+ this.refresh(event);
14
+ }
15
+ refresh(event) {
16
+ this.gridInformation = CalculateGridInformation(this.extendedItem);
17
+ let cells = this.gridInformation.cells;
18
+ if (cells[0][0] && !isNaN(cells[0][0].height) && !isNaN(cells[0][0].width)) {
19
+ if (this.gridInformation.cells.length != this._cells.length || this.gridInformation.cells[0].length != this._cells[0].length)
20
+ this._initSVGArrays();
21
+ //draw gaps
22
+ this.gridInformation.gaps.forEach((gap, i) => {
23
+ this._gaps[i] = this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-gap', this._gaps[i], OverlayLayer.Foregorund);
24
+ });
25
+ //draw cells
26
+ cells.forEach((row, i) => {
27
+ row.forEach((cell, j) => {
28
+ this._cells[i][j] = this._drawRect(cell.x, cell.y, cell.width, cell.height, 'svg-grid', this._cells[i][j], OverlayLayer.Background);
29
+ if (cell.name) {
30
+ const text = this._drawText(cell.name, cell.x, cell.y, 'svg-grid-area', null, OverlayLayer.Background);
31
+ text.setAttribute("dominant-baseline", "hanging");
32
+ }
33
+ if (event && event instanceof MouseEvent) {
34
+ let crd = this.designerCanvas.getNormalizedEventCoordinates(event);
35
+ if (crd.x >= cell.x && crd.y >= cell.y && crd.x <= cell.x + cell.width && crd.y <= cell.y + cell.height) {
36
+ this._cells[i][j].setAttribute("class", "svg-grid-current-cell");
37
+ }
38
+ }
39
+ });
40
+ });
41
+ }
42
+ }
43
+ dispose() {
44
+ this._removeAllOverlays();
45
+ }
46
+ _initSVGArrays() {
47
+ this._removeAllOverlays();
48
+ this.gridInformation = CalculateGridInformation(this.extendedItem);
49
+ this._cells = new Array(this.gridInformation.cells.length);
50
+ this.gridInformation.cells.forEach((row, i) => this._cells[i] = new Array(row.length));
51
+ this._gaps = new Array(this.gridInformation.gaps.length);
52
+ }
53
+ }
@@ -0,0 +1,11 @@
1
+ import { IDesignerExtensionProvider } from '../IDesignerExtensionProvider.js';
2
+ import { IDesignItem } from '../../../../item/IDesignItem.js';
3
+ import { IDesignerCanvas } from '../../IDesignerCanvas.js';
4
+ import { IDesignerExtension } from '../IDesignerExtension.js';
5
+ import { IExtensionManager } from '../IExtensionManger.js';
6
+ export declare const gridExtensionShowOverlayOptionName = "gridExtensionShowOverlay";
7
+ export declare class DisplayGridExtensionProvider implements IDesignerExtensionProvider {
8
+ shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
9
+ getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
10
+ readonly style: CSSStyleSheet;
11
+ }
@@ -0,0 +1,23 @@
1
+ import { css } from "@node-projects/base-custom-webcomponent";
2
+ import { DisplayGridExtension } from './DisplayGridExtension.js';
3
+ export const gridExtensionShowOverlayOptionName = 'gridExtensionShowOverlay';
4
+ export class DisplayGridExtensionProvider {
5
+ shouldExtend(extensionManager, designerCanvas, designItem) {
6
+ const display = getComputedStyle(designItem.element).display;
7
+ if (display == 'grid' || display == 'inline-grid')
8
+ return designerCanvas.instanceServiceContainer.designContext.extensionOptions[gridExtensionShowOverlayOptionName] !== false;
9
+ return false;
10
+ }
11
+ getExtension(extensionManager, designerCanvas, designItem) {
12
+ return new DisplayGridExtension(extensionManager, designerCanvas, designItem);
13
+ }
14
+ style = css `
15
+ .svg-grid { stroke: orange; stroke-dasharray: 5; fill: #ff944722; }
16
+ .svg-grid-current-cell { stroke: orange; stroke-dasharray: 5; fill: #e3ff4722; }
17
+ .svg-grid-area { font-size: 8px; }
18
+ .svg-grid-gap { stroke: orange; stroke-dasharray: 5; fill: #0000ff22; }
19
+ .svg-grid-resizer { fill: white; stroke: #3899ec; }
20
+ .svg-grid-header { fill: #ff944722; stroke: orange; }
21
+ .svg-grid-plus-sign { stroke: black; }
22
+ `;
23
+ }
@@ -0,0 +1,51 @@
1
+ import { IDesignItem } from '../../../../item/IDesignItem.js';
2
+ import { IDesignerCanvas } from '../../IDesignerCanvas.js';
3
+ import { AbstractExtension } from '../AbstractExtension.js';
4
+ import { IExtensionManager } from '../IExtensionManger.js';
5
+ export declare class EditGridExtension extends AbstractExtension {
6
+ private _initialPoint;
7
+ private _initialSizes;
8
+ private _cells;
9
+ private _gaps;
10
+ private _headers;
11
+ private _headerTexts;
12
+ private _plusCircles;
13
+ private _resizeCircles;
14
+ private minPixelSize;
15
+ private gridInformation;
16
+ private defaultHeaderSize;
17
+ private defaultPlusSize;
18
+ private defaultDistanceToBox;
19
+ private defaultDistanceBetweenHeaders;
20
+ private defaultSizeOfNewRowOrColumn;
21
+ constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
22
+ extend(): void;
23
+ refresh(): void;
24
+ dispose(): void;
25
+ _initSVGArrays(): void;
26
+ _drawResizeCircle(gap: any, oldCircle?: SVGCircleElement): SVGCircleElement;
27
+ _drawHeader(cell: any, oldHeader: any, index: any, alignment: "vertical" | "horizontal"): SVGRectElement;
28
+ _drawHeaderText(cell: any, oldHeaderText: any, alignment: "vertical" | "horizontal"): SVGTextElement;
29
+ _drawPlusCircle(x: any, y: any, oldPlusElement: {
30
+ circle: SVGCircleElement;
31
+ verticalLine: SVGLineElement;
32
+ horizontalLine: SVGLineElement;
33
+ }, index: any, alignment: "vertical" | "horizontal", final?: boolean): {
34
+ circle: any;
35
+ verticalLine: any;
36
+ horizontalLine: any;
37
+ };
38
+ _getHeaderText(size: number, unit: string, percentTarget: "width" | "height"): string;
39
+ _getInitialSizes(): {
40
+ x: any[];
41
+ xUnit: any[];
42
+ y: any[];
43
+ yUnit: any[];
44
+ };
45
+ _pointerActionTypeResize(event: PointerEvent, circle: SVGCircleElement, gapColumn: any, gapRow: any): void;
46
+ _calculateNewSize(iSizes: number[], iUnits: string[], diff: any, gapIndex: any, percentTarget: 'width' | 'height', pointerUp?: boolean): string;
47
+ _editGrid(pos: number, alignment: "vertical" | "horizontal", task: "add" | "del"): void;
48
+ _calculateNewElementSize(elementTarget: "width" | "height"): string;
49
+ _toggleDisplayPlusCircles(index: any, alignment: "vertical" | "horizontal", double?: boolean): void;
50
+ _convertCssUnit(cssValue: string | number, target: HTMLElement, percentTarget: 'width' | 'height', unit: string): string | number;
51
+ }