@node-projects/web-component-designer 0.0.196 → 0.0.198

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 (30) hide show
  1. package/dist/elements/services/DefaultServiceBootstrap.js +4 -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 +8 -5
  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/grid/DisplayGridExtension.d.ts +2 -2
  13. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.js +9 -3
  14. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js +1 -0
  15. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstExtensionProvider.d.ts +12 -0
  16. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstExtensionProvider.js +17 -0
  17. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.d.ts +13 -0
  18. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.js +28 -0
  19. package/dist/elements/widgets/designerView/extensions/logic/DisplayGridExtensionProvider.d.ts +11 -0
  20. package/dist/elements/widgets/designerView/extensions/logic/DisplayGridExtensionProvider.js +23 -0
  21. package/dist/elements/widgets/designerView/extensions/logic/OrCombineContainerProvider.d.ts +12 -0
  22. package/dist/elements/widgets/designerView/extensions/logic/OrCombineContainerProvider.js +17 -0
  23. package/dist/elements/widgets/designerView/overlayLayerView.js +4 -1
  24. package/dist/elements/widgets/designerView/tools/PointerTool.js +7 -7
  25. package/dist/elements/widgets/designerView/tools/TextTool.js +1 -1
  26. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.js +2 -2
  27. package/dist/elements/widgets/treeView/treeViewExtended.js +2 -2
  28. package/dist/index.d.ts +1 -0
  29. package/dist/index.js +1 -0
  30. package/package.json +6 -6
@@ -78,6 +78,7 @@ import { StylesheetServiceDesignViewConfigButtons } from '../widgets/designerVie
78
78
  import { JumpToElementContextMenu } from '../widgets/designerView/extensions/contextMenu/JumpToElementContextMenu.js';
79
79
  import { EditGridExtensionProvider } from '../widgets/designerView/extensions/grid/EditGridExtensionProvider.js';
80
80
  import { DisplayGridExtensionProvider } from '../widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js';
81
+ import { ApplyFirstMachingExtensionProvider } from '../widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.js';
81
82
  export function createDefaultServiceContainer() {
82
83
  let serviceContainer = new ServiceContainer();
83
84
  serviceContainer.register("propertyService", new PolymerPropertiesService());
@@ -140,13 +141,11 @@ export function createDefaultServiceContainer() {
140
141
  new GrayOutExtensionProvider()
141
142
  ]);
142
143
  serviceContainer.designerExtensions.set(ExtensionType.ContainerDragOver, [
143
- new GrayOutDragOverContainerExtensionProvider(),
144
- new AltToEnterContainerExtensionProvider(),
145
- new DisplayGridExtensionProvider()
144
+ new ApplyFirstMachingExtensionProvider(new DisplayGridExtensionProvider(), new GrayOutDragOverContainerExtensionProvider()),
145
+ new AltToEnterContainerExtensionProvider()
146
146
  ]);
147
147
  serviceContainer.designerExtensions.set(ExtensionType.ContainerExternalDragOver, [
148
- new GrayOutDragOverContainerExtensionProvider(),
149
- new DisplayGridExtensionProvider()
148
+ new ApplyFirstMachingExtensionProvider(new DisplayGridExtensionProvider(), new GrayOutDragOverContainerExtensionProvider()),
150
149
  ]);
151
150
  serviceContainer.designerExtensions.set(ExtensionType.Doubleclick, [
152
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
  }
@@ -710,7 +713,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
710
713
  }
711
714
  _onDblClick(event) {
712
715
  event.preventDefault();
713
- this.extensionManager.applyExtension(this.instanceServiceContainer.selectionService.primarySelection, ExtensionType.Doubleclick);
716
+ this.extensionManager.applyExtension(this.instanceServiceContainer.selectionService.primarySelection, ExtensionType.Doubleclick, event);
714
717
  }
715
718
  onKeyUp(event) {
716
719
  if (event.composedPath().indexOf(this.eatEvents) >= 0)
@@ -883,13 +886,13 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
883
886
  }
884
887
  return currentElement;
885
888
  }
886
- showHoverExtension(element) {
889
+ showHoverExtension(element, event) {
887
890
  const currentDesignItem = DesignItem.GetOrCreateDesignItem(element, this.serviceContainer, this.instanceServiceContainer);
888
891
  if (this._lastHoverDesignItem != currentDesignItem) {
889
892
  if (this._lastHoverDesignItem)
890
893
  this.extensionManager.removeExtension(this._lastHoverDesignItem, ExtensionType.MouseOver);
891
894
  if (currentDesignItem && currentDesignItem != this.rootDesignItem && DomHelper.getHost(element.parentNode) !== this.overlayLayer)
892
- this.extensionManager.applyExtension(currentDesignItem, ExtensionType.MouseOver);
895
+ this.extensionManager.applyExtension(currentDesignItem, ExtensionType.MouseOver, event);
893
896
  this._lastHoverDesignItem = currentDesignItem;
894
897
  }
895
898
  }
@@ -928,7 +931,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
928
931
  }
929
932
  this.clickOverlay.style.cursor = this._canvas.style.cursor;
930
933
  const currentDesignItem = DesignItem.GetOrCreateDesignItem(currentElement, this.serviceContainer, this.instanceServiceContainer);
931
- this.showHoverExtension(currentDesignItem.element);
934
+ this.showHoverExtension(currentDesignItem.element, event);
932
935
  //TODO: needed ??
933
936
  if (currentElement && DomHelper.getHost(currentElement.parentNode) === this.overlayLayer) {
934
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
  }
@@ -7,8 +7,8 @@ export declare class DisplayGridExtension extends AbstractExtension {
7
7
  private _gaps;
8
8
  private gridInformation;
9
9
  constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
10
- extend(): void;
11
- refresh(): void;
10
+ extend(event?: Event): void;
11
+ refresh(event?: Event): void;
12
12
  dispose(): void;
13
13
  _initSVGArrays(): void;
14
14
  }
@@ -8,11 +8,11 @@ export class DisplayGridExtension extends AbstractExtension {
8
8
  constructor(extensionManager, designerView, extendedItem) {
9
9
  super(extensionManager, designerView, extendedItem);
10
10
  }
11
- extend() {
11
+ extend(event) {
12
12
  this._initSVGArrays();
13
- this.refresh();
13
+ this.refresh(event);
14
14
  }
15
- refresh() {
15
+ refresh(event) {
16
16
  this.gridInformation = CalculateGridInformation(this.extendedItem);
17
17
  let cells = this.gridInformation.cells;
18
18
  if (cells[0][0] && !isNaN(cells[0][0].height) && !isNaN(cells[0][0].width)) {
@@ -30,6 +30,12 @@ export class DisplayGridExtension extends AbstractExtension {
30
30
  const text = this._drawText(cell.name, cell.x, cell.y, 'svg-grid-area', null, OverlayLayer.Background);
31
31
  text.setAttribute("dominant-baseline", "hanging");
32
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
+ }
33
39
  });
34
40
  });
35
41
  }
@@ -13,6 +13,7 @@ export class DisplayGridExtensionProvider {
13
13
  }
14
14
  style = css `
15
15
  .svg-grid { stroke: orange; stroke-dasharray: 5; fill: #ff944722; }
16
+ .svg-grid-current-cell { stroke: orange; stroke-dasharray: 5; fill: #e3ff4722; }
16
17
  .svg-grid-area { font-size: 8px; }
17
18
  .svg-grid-gap { stroke: orange; stroke-dasharray: 5; fill: #0000ff22; }
18
19
  .svg-grid-resizer { fill: white; stroke: #3899ec; }
@@ -0,0 +1,12 @@
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 class ApplyFirstMachingExtensionProvider implements IDesignerExtensionProvider {
7
+ private extensions;
8
+ private extIndex;
9
+ constructor(...extensions: IDesignerExtensionProvider[]);
10
+ shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
11
+ getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
12
+ }
@@ -0,0 +1,17 @@
1
+ export class ApplyFirstMachingExtensionProvider {
2
+ extensions;
3
+ extIndex;
4
+ constructor(...extensions) {
5
+ this.extensions = extensions;
6
+ }
7
+ shouldExtend(extensionManager, designerCanvas, designItem) {
8
+ for (this.extIndex = 0; this.extIndex++; this.extIndex < this.extensions.length) {
9
+ if (this.extensions[this.extIndex].shouldExtend(extensionManager, designerCanvas, designItem))
10
+ return true;
11
+ }
12
+ return false;
13
+ }
14
+ getExtension(extensionManager, designerCanvas, designItem) {
15
+ return this.extensions[this.extIndex].getExtension(extensionManager, designerCanvas, designItem);
16
+ }
17
+ }
@@ -0,0 +1,13 @@
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 class ApplyFirstMachingExtensionProvider implements IDesignerExtensionProvider {
7
+ private extensions;
8
+ private extIndex;
9
+ style: CSSStyleSheet[];
10
+ constructor(...extensions: IDesignerExtensionProvider[]);
11
+ shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
12
+ getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
13
+ }
@@ -0,0 +1,28 @@
1
+ export class ApplyFirstMachingExtensionProvider {
2
+ extensions;
3
+ extIndex;
4
+ style;
5
+ constructor(...extensions) {
6
+ this.extensions = extensions;
7
+ for (let e of extensions) {
8
+ if (e.style) {
9
+ if (!this.style)
10
+ this.style = [];
11
+ if (Array.isArray(e.style))
12
+ this.style.push(...e.style);
13
+ else
14
+ this.style.push(e.style);
15
+ }
16
+ }
17
+ }
18
+ shouldExtend(extensionManager, designerCanvas, designItem) {
19
+ for (this.extIndex = 0; this.extIndex < this.extensions.length; this.extIndex++) {
20
+ if (this.extensions[this.extIndex].shouldExtend(extensionManager, designerCanvas, designItem))
21
+ return true;
22
+ }
23
+ return false;
24
+ }
25
+ getExtension(extensionManager, designerCanvas, designItem) {
26
+ return this.extensions[this.extIndex].getExtension(extensionManager, designerCanvas, designItem);
27
+ }
28
+ }
@@ -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,12 @@
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 class ApplyFirstExtensionProvider implements IDesignerExtensionProvider {
7
+ private extensions;
8
+ private extIndex;
9
+ constructor(...extensions: IDesignerExtensionProvider[]);
10
+ shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
11
+ getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
12
+ }
@@ -0,0 +1,17 @@
1
+ export class ApplyFirstExtensionProvider {
2
+ extensions;
3
+ extIndex;
4
+ constructor(...extensions) {
5
+ this.extensions = extensions;
6
+ }
7
+ shouldExtend(extensionManager, designerCanvas, designItem) {
8
+ for (this.extIndex = 0; this.extIndex++; this.extIndex < this.extensions.length) {
9
+ if (this.extensions[this.extIndex].shouldExtend(extensionManager, designerCanvas, designItem))
10
+ return true;
11
+ }
12
+ return false;
13
+ }
14
+ getExtension(extensionManager, designerCanvas, designItem) {
15
+ return this.extensions[this.extIndex].getExtension(extensionManager, designerCanvas, designItem);
16
+ }
17
+ }
@@ -45,7 +45,10 @@ export class OverlayLayerView extends BaseCustomWebComponentConstructorAppend {
45
45
  for (const extList of this._serviceContainer.designerExtensions) {
46
46
  for (const ext of extList[1]) {
47
47
  if (ext.style) {
48
- styles.push(ext.style);
48
+ if (Array.isArray(ext.style))
49
+ styles.push(...ext.style);
50
+ else
51
+ styles.push(ext.style);
49
52
  }
50
53
  }
51
54
  }
@@ -234,7 +234,7 @@ export class PointerTool {
234
234
  const dragItem = this._actionStartedDesignItem.parent;
235
235
  if (this._dragExtensionItem != dragItem) {
236
236
  designerCanvas.extensionManager.removeExtension(this._dragExtensionItem, ExtensionType.ContainerDrag);
237
- designerCanvas.extensionManager.applyExtension(dragItem, ExtensionType.ContainerDrag);
237
+ designerCanvas.extensionManager.applyExtension(dragItem, ExtensionType.ContainerDrag, event);
238
238
  this._dragExtensionItem = dragItem;
239
239
  }
240
240
  else {
@@ -249,11 +249,11 @@ export class PointerTool {
249
249
  if (newContainerElementDesignItem != null) {
250
250
  if (this._dragOverExtensionItem != newContainerElementDesignItem) {
251
251
  designerCanvas.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerDragOver);
252
- designerCanvas.extensionManager.applyExtension(newContainerElementDesignItem, ExtensionType.ContainerDragOver);
252
+ designerCanvas.extensionManager.applyExtension(newContainerElementDesignItem, ExtensionType.ContainerDragOver, event);
253
253
  this._dragOverExtensionItem = newContainerElementDesignItem;
254
254
  }
255
255
  else {
256
- designerCanvas.extensionManager.refreshExtension(newContainerElementDesignItem, ExtensionType.ContainerDragOver);
256
+ designerCanvas.extensionManager.refreshExtension(newContainerElementDesignItem, ExtensionType.ContainerDragOver, event);
257
257
  }
258
258
  }
259
259
  else {
@@ -281,14 +281,14 @@ export class PointerTool {
281
281
  for (const item of this._actionStartedDesignItems) {
282
282
  designerCanvas.extensionManager.removeExtension(item, ExtensionType.Placement);
283
283
  designerCanvas.extensionManager.removeExtension(item, ExtensionType.MouseOver);
284
- designerCanvas.extensionManager.applyExtension(item, ExtensionType.Placement);
284
+ designerCanvas.extensionManager.applyExtension(item, ExtensionType.Placement, event);
285
285
  }
286
286
  currentContainerService.startPlace(event, designerCanvas, this._actionStartedDesignItem.parent, this._initialPoint, this._initialOffset, cp, this._actionStartedDesignItems);
287
287
  this._started = true;
288
288
  }
289
289
  currentContainerService.place(event, designerCanvas, this._actionStartedDesignItem.parent, this._initialPoint, this._initialOffset, cp, this._actionStartedDesignItems);
290
290
  }
291
- designerCanvas.extensionManager.refreshExtensions(this._actionStartedDesignItems);
291
+ designerCanvas.extensionManager.refreshExtensions(this._actionStartedDesignItems, null, event);
292
292
  }
293
293
  }
294
294
  break;
@@ -316,7 +316,7 @@ export class PointerTool {
316
316
  this._changeGroup.commit();
317
317
  this._changeGroup = null;
318
318
  for (const item of this._actionStartedDesignItems) {
319
- designerCanvas.extensionManager.applyExtension(item, ExtensionType.MouseOver);
319
+ designerCanvas.extensionManager.applyExtension(item, ExtensionType.MouseOver, event);
320
320
  designerCanvas.extensionManager.removeExtension(item, ExtensionType.Placement);
321
321
  }
322
322
  }
@@ -326,7 +326,7 @@ export class PointerTool {
326
326
  this._dragOverExtensionItem = null;
327
327
  this._moveItemsOffset = { x: 0, y: 0 };
328
328
  }
329
- designerCanvas.extensionManager.refreshExtensions(designerCanvas.instanceServiceContainer.selectionService.selectedElements);
329
+ designerCanvas.extensionManager.refreshExtensions(designerCanvas.instanceServiceContainer.selectionService.selectedElements, null, event);
330
330
  if (this._changeGroup) {
331
331
  this._changeGroup.abort();
332
332
  this._changeGroup = null;
@@ -31,7 +31,7 @@ export class TextTool {
31
31
  //todo: Maybe we could also remove the eatEvents property
32
32
  //TODO - don't apply doubleclick extension (maybe it is not the doubleclick one) - apply edit text extesion directly
33
33
  //should we configure the editTextExtension anywhere??
34
- this._textEditExtensions = designerCanvas.extensionManager.applyExtension(di, ExtensionType.Doubleclick);
34
+ this._textEditExtensions = designerCanvas.extensionManager.applyExtension(di, ExtensionType.Doubleclick, event);
35
35
  setTimeout(() => { span.focus(); }, 50);
36
36
  }
37
37
  else {
@@ -23,7 +23,7 @@ export class PropertyGridPropertyList extends BaseCustomWebComponentLazyAppend {
23
23
  .content-wrapper {
24
24
  padding: .5em;
25
25
  display: grid;
26
- grid-template-columns: 11px auto minmax(80px, 1fr);
26
+ grid-template-columns: 11px auto minmax(80px, min-content);
27
27
  align-items: center;
28
28
  grid-auto-rows: minmax(24px, auto);
29
29
  align-items: center;
@@ -41,7 +41,7 @@ export class PropertyGridPropertyList extends BaseCustomWebComponentLazyAppend {
41
41
  box-sizing: border-box;
42
42
  display: inline-block;
43
43
  font-size: 13px;
44
- width: 110px;
44
+ width: auto;
45
45
  overflow: hidden;
46
46
  text-overflow: ellipsis;
47
47
  margin-right: 2px;
@@ -205,8 +205,8 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
205
205
  let designItem = node.data.ref;
206
206
  node.tr.oncontextmenu = (e) => this.showDesignItemContextMenu(designItem, e);
207
207
  if (designItem && designItem.nodeType === NodeType.Element && designItem !== designItem.instanceServiceContainer.contentService.rootDesignItem) {
208
- node.tr.onmouseenter = (e) => designItem.instanceServiceContainer.designerCanvas.showHoverExtension(designItem.element);
209
- node.tr.onmouseleave = (e) => designItem.instanceServiceContainer.designerCanvas.showHoverExtension(null);
208
+ node.tr.onmouseenter = (e) => designItem.instanceServiceContainer.designerCanvas.showHoverExtension(designItem.element, e);
209
+ node.tr.onmouseleave = (e) => designItem.instanceServiceContainer.designerCanvas.showHoverExtension(null, e);
210
210
  let d = document.createElement("div");
211
211
  d.className = "cmd";
212
212
  let imgL = document.createElement('img');
package/dist/index.d.ts CHANGED
@@ -196,6 +196,7 @@ export * from "./elements/widgets/designerView/extensions/grid/EditGridExtension
196
196
  export * from "./elements/widgets/designerView/extensions/grid/EditGridExtensionProvider.js";
197
197
  export * from "./elements/widgets/designerView/extensions/grid/DisplayGridExtension.js";
198
198
  export * from "./elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js";
199
+ export * from "./elements/widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.js";
199
200
  export * from "./elements/widgets/designerView/extensions/buttons/InvisibleElementExtensionDesignViewConfigButtons.js";
200
201
  export * from "./elements/widgets/designerView/extensions/buttons/FlexboxExtensionDesignViewConfigButtons.js";
201
202
  export * from "./elements/widgets/designerView/extensions/buttons/GridExtensionDesignViewConfigButtons.js";
package/dist/index.js CHANGED
@@ -150,6 +150,7 @@ export * from "./elements/widgets/designerView/extensions/grid/EditGridExtension
150
150
  export * from "./elements/widgets/designerView/extensions/grid/EditGridExtensionProvider.js";
151
151
  export * from "./elements/widgets/designerView/extensions/grid/DisplayGridExtension.js";
152
152
  export * from "./elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js";
153
+ export * from "./elements/widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.js";
153
154
  export * from "./elements/widgets/designerView/extensions/buttons/InvisibleElementExtensionDesignViewConfigButtons.js";
154
155
  export * from "./elements/widgets/designerView/extensions/buttons/FlexboxExtensionDesignViewConfigButtons.js";
155
156
  export * from "./elements/widgets/designerView/extensions/buttons/GridExtensionDesignViewConfigButtons.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "A UI designer for Polymer apps",
3
3
  "name": "@node-projects/web-component-designer",
4
- "version": "0.0.196",
4
+ "version": "0.0.198",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",
@@ -17,21 +17,21 @@
17
17
  "construct-style-sheets-polyfill": "^3.1.0"
18
18
  },
19
19
  "devDependencies": {
20
- "@adobe/css-tools": "^4.1.0",
20
+ "@adobe/css-tools": "^4.2.0",
21
21
  "@node-projects/lean-he-esm": "^3.3.0",
22
22
  "@node-projects/node-html-parser-esm": "^2.5.1",
23
23
  "@papyrs/stylo": "^0.0.42",
24
24
  "@types/codemirror": "^5.60.7",
25
- "@types/css-tree": "^2.3.0",
25
+ "@types/css-tree": "^2.3.1",
26
26
  "@types/jquery": "^3.5.16",
27
27
  "@types/jquery.fancytree": "0.0.7",
28
- "@types/node": "^18.13.0",
29
- "ace-builds": "^1.15.0",
28
+ "@types/node": "^18.14.0",
29
+ "ace-builds": "^1.15.2",
30
30
  "codemirror": "^6.0.1",
31
31
  "css-tree": "^2.3.1",
32
32
  "esprima-next": "^5.8.4",
33
33
  "html2canvas": "*",
34
- "jest": "^29.4.2",
34
+ "jest": "^29.4.3",
35
35
  "jquery": "^3.6.3",
36
36
  "jquery.fancytree": "^2.38.3",
37
37
  "mdn-data": "^2.0.31",