@node-projects/web-component-designer 0.1.103 → 0.1.105

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 (102) hide show
  1. package/dist/elements/helper/Helper.d.ts +1 -0
  2. package/dist/elements/helper/Helper.js +13 -0
  3. package/dist/elements/item/DesignItem.d.ts +0 -5
  4. package/dist/elements/item/DesignItem.js +0 -2
  5. package/dist/elements/item/IDesignItem.d.ts +0 -5
  6. package/dist/elements/services/DefaultServiceBootstrap.js +18 -18
  7. package/dist/elements/services/dragDropService/DragDropService.js +1 -1
  8. package/dist/elements/services/propertiesService/services/BaseCustomWebComponentPropertiesService.js +3 -2
  9. package/dist/elements/services/selectionService/ISelectionChangedEvent copy.d.ts +6 -0
  10. package/dist/elements/services/selectionService/ISelectionChangedEvent copy.js +1 -0
  11. package/dist/elements/services/selectionService/ISelectionChangedEvent.d.ts +1 -0
  12. package/dist/elements/services/selectionService/ISelectionRefreshEvent.d.ts +5 -0
  13. package/dist/elements/services/selectionService/ISelectionRefreshEvent.js +1 -0
  14. package/dist/elements/services/selectionService/ISelectionService.d.ts +3 -1
  15. package/dist/elements/services/selectionService/SelectionService.d.ts +4 -2
  16. package/dist/elements/services/selectionService/SelectionService.js +10 -4
  17. package/dist/elements/widgets/designerView/extensions/AbstractExtension.d.ts +7 -0
  18. package/dist/elements/widgets/designerView/extensions/AbstractExtension.js +21 -0
  19. package/dist/elements/widgets/designerView/extensions/AbstractToolbarExtension.d.ts +9 -0
  20. package/dist/elements/widgets/designerView/extensions/AbstractToolbarExtension.js +30 -0
  21. package/dist/elements/widgets/designerView/extensions/ConditionExtensionProvider.d.ts +13 -0
  22. package/dist/elements/widgets/designerView/extensions/ConditionExtensionProvider.js +18 -0
  23. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.d.ts +1 -0
  24. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.js +7 -16
  25. package/dist/elements/widgets/designerView/extensions/EditTextExtension.d.ts +18 -0
  26. package/dist/elements/widgets/designerView/extensions/EditTextExtension.js +107 -0
  27. package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +9 -3
  28. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +94 -59
  29. package/dist/elements/widgets/designerView/extensions/ExtensionType.d.ts +5 -1
  30. package/dist/elements/widgets/designerView/extensions/ExtensionType.js +4 -0
  31. package/dist/elements/widgets/designerView/extensions/GridToolbarExtension.d.ts +12 -0
  32. package/dist/elements/widgets/designerView/extensions/GridToolbarExtension.js +58 -0
  33. package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +3 -3
  34. package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js +6 -2
  35. package/dist/elements/widgets/designerView/extensions/block/BlockToolbarExtension.d.ts +12 -0
  36. package/dist/elements/widgets/designerView/extensions/block/BlockToolbarExtension.js +35 -0
  37. package/dist/elements/widgets/designerView/extensions/block/BlockToolbarExtensionProvider.d.ts +9 -0
  38. package/dist/elements/widgets/designerView/extensions/block/BlockToolbarExtensionProvider.js +12 -0
  39. package/dist/elements/widgets/designerView/extensions/block/FlexToolbarExtension.d.ts +12 -0
  40. package/dist/elements/widgets/designerView/extensions/block/FlexToolbarExtension.js +34 -0
  41. package/dist/elements/widgets/designerView/extensions/block/FlexToolbarExtensionProvider.d.ts +9 -0
  42. package/dist/elements/widgets/designerView/extensions/block/FlexToolbarExtensionProvider.js +12 -0
  43. package/dist/elements/widgets/designerView/extensions/contextMenu/ChildContextMenu.d.ts +11 -0
  44. package/dist/elements/widgets/designerView/extensions/contextMenu/ChildContextMenu.js +14 -0
  45. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js +3 -3
  46. package/dist/elements/widgets/designerView/extensions/contextMenu/JumpToElementContextMenu.js +1 -1
  47. package/dist/elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.js +1 -1
  48. package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.js +1 -1
  49. package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.js +1 -1
  50. package/dist/elements/widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.js +1 -1
  51. package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.js +1 -1
  52. package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.js +1 -1
  53. package/dist/elements/widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.js +1 -1
  54. package/dist/elements/widgets/designerView/extensions/flex/FlexToolbarExtension.d.ts +12 -0
  55. package/dist/elements/widgets/designerView/extensions/flex/FlexToolbarExtension.js +35 -0
  56. package/dist/elements/widgets/designerView/extensions/flex/FlexToolbarExtensionProvider.d.ts +9 -0
  57. package/dist/elements/widgets/designerView/extensions/flex/FlexToolbarExtensionProvider.js +12 -0
  58. package/dist/elements/widgets/designerView/extensions/flex/GridToolbarExtension.d.ts +12 -0
  59. package/dist/elements/widgets/designerView/extensions/flex/GridToolbarExtension.js +66 -0
  60. package/dist/elements/widgets/designerView/extensions/flex/GridToolbarExtensionProvider.d.ts +10 -0
  61. package/dist/elements/widgets/designerView/extensions/flex/GridToolbarExtensionProvider.js +17 -0
  62. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.d.ts +1 -0
  63. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.js +12 -8
  64. package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtension.d.ts +27 -0
  65. package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtension.js +259 -0
  66. package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtensionProvider.d.ts +10 -0
  67. package/dist/elements/widgets/designerView/extensions/grid/GridChildResizeExtensionProvider.js +16 -0
  68. package/dist/elements/widgets/designerView/extensions/grid/GridChildToolbarExtension.d.ts +12 -0
  69. package/dist/elements/widgets/designerView/extensions/grid/GridChildToolbarExtension.js +66 -0
  70. package/dist/elements/widgets/designerView/extensions/grid/GridChildToolbarExtensionProvider.d.ts +10 -0
  71. package/dist/elements/widgets/designerView/extensions/grid/GridChildToolbarExtensionProvider.js +17 -0
  72. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtension copy.d.ts +12 -0
  73. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtension copy.js +66 -0
  74. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtension.d.ts +12 -0
  75. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtension.js +67 -0
  76. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtensionProvider copy.d.ts +10 -0
  77. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtensionProvider copy.js +17 -0
  78. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtensionProvider.d.ts +9 -0
  79. package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtensionProvider.js +12 -0
  80. package/dist/elements/widgets/designerView/extensions/grid/ResizeExtension.d.ts +28 -0
  81. package/dist/elements/widgets/designerView/extensions/grid/ResizeExtension.js +355 -0
  82. package/dist/elements/widgets/designerView/extensions/grid/ResizeExtensionProvider.d.ts +12 -0
  83. package/dist/elements/widgets/designerView/extensions/grid/ResizeExtensionProvider.js +20 -0
  84. package/dist/elements/widgets/designerView/extensions/logic/ConditionExtensionProvider.d.ts +13 -0
  85. package/dist/elements/widgets/designerView/extensions/logic/ConditionExtensionProvider.js +18 -0
  86. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtension.js +8 -6
  87. package/dist/elements/widgets/designerView/extensions/svg/RectExtension.d.ts +2 -2
  88. package/dist/elements/widgets/designerView/extensions/svg/RectExtension.js +18 -15
  89. package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider copy.d.ts +9 -0
  90. package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider copy.js +14 -0
  91. package/dist/elements/widgets/designerView/extensions/svg/SvgBaseExtension.d.ts +30 -0
  92. package/dist/elements/widgets/designerView/extensions/svg/SvgBaseExtension.js +181 -0
  93. package/dist/elements/widgets/designerView/extensions/svg/SvgElementExtension.d.ts +26 -0
  94. package/dist/elements/widgets/designerView/extensions/svg/SvgElementExtension.js +144 -0
  95. package/dist/elements/widgets/designerView/extensions/svg/SvgElementExtensionProvider.d.ts +9 -0
  96. package/dist/elements/widgets/designerView/extensions/svg/SvgElementExtensionProvider.js +16 -0
  97. package/dist/elements/widgets/designerView/overlayLayerView.js +4 -1
  98. package/dist/elements/widgets/designerView/tools/DrawElementTool.js +1 -1
  99. package/dist/elements/widgets/designerView/tools/PointerTool.js +9 -9
  100. package/dist/index.d.ts +15 -0
  101. package/dist/index.js +14 -0
  102. package/package.json +1 -1
@@ -1,18 +1,24 @@
1
+ import { DesignItem } from '../../../item/DesignItem.js';
1
2
  import { IDesignItem } from '../../../item/IDesignItem.js';
2
3
  import { IDesignerCanvas } from '../IDesignerCanvas.js';
3
4
  import { ExtensionType } from './ExtensionType.js';
4
5
  import { IExtensionManager } from './IExtensionManger.js';
5
6
  import { IDesignerExtension } from './IDesignerExtension.js';
7
+ import { IDesignerExtensionProvider } from './IDesignerExtensionProvider.js';
6
8
  export declare class ExtensionManager implements IExtensionManager {
7
9
  designerCanvas: IDesignerCanvas;
8
10
  designItemsWithExtentions: Set<IDesignItem>;
9
11
  _timeout: ReturnType<typeof setTimeout>;
12
+ _appliedDesignerExtensions: WeakMap<DesignItem, Map<ExtensionType, IDesignerExtension[]>>;
13
+ _shouldAppliedDesignerExtensions: WeakMap<DesignItem, Map<ExtensionType, IDesignerExtensionProvider[]>>;
14
+ _lastApplyEventPerType: WeakMap<DesignItem, Map<ExtensionType, Event>>;
10
15
  constructor(designerCanvas: IDesignerCanvas);
11
16
  connected(): void;
12
17
  disconnected(): void;
13
18
  private refreshAllExtensionsTimeout;
14
19
  private _contentChanged;
15
20
  private _selectedElementsChanged;
21
+ private _selectedElementsRefresh;
16
22
  applyExtension(designItem: IDesignItem, extensionType: ExtensionType, event?: Event, recursive?: boolean): IDesignerExtension[];
17
23
  applyExtensions(designItems: IDesignItem[], extensionType: ExtensionType, event?: Event, recursive?: boolean): void;
18
24
  applyExtensionInstance(designItem: IDesignItem, extension: IDesignerExtension): void;
@@ -21,8 +27,8 @@ export declare class ExtensionManager implements IExtensionManager {
21
27
  removeExtensions(designItems: IDesignItem[], recursive: boolean, extensionType?: ExtensionType): void;
22
28
  refreshExtension(designItem: IDesignItem, extensionType?: ExtensionType, event?: Event): void;
23
29
  refreshExtensions(designItems: IDesignItem[], extensionType?: ExtensionType, event?: Event, ignoredExtension?: IDesignerExtension, timeout?: number): void;
24
- refreshAllExtensions(designItems: IDesignItem[], ignoredExtension?: IDesignerExtension): void;
25
- refreshAllAppliedExtentions(): void;
26
- reapplyAllAppliedExtentions(): void;
30
+ refreshAllExtensions(designItems: IDesignItem[], ignoredExtension?: IDesignerExtension, event?: Event): void;
31
+ refreshAllAppliedExtentions(event?: Event): void;
32
+ reapplyAllAppliedExtentions(filterDesignItems?: IDesignItem[]): void;
27
33
  private static getAllChildElements;
28
34
  }
@@ -1,13 +1,25 @@
1
1
  import { DesignItem } from '../../../item/DesignItem.js';
2
2
  import { NodeType } from "../../../item/NodeType.js";
3
3
  import { ExtensionType } from './ExtensionType.js';
4
+ function wmGet(designItem, weakMap) {
5
+ let val = weakMap.get(designItem);
6
+ if (val)
7
+ return val;
8
+ val = new Map();
9
+ weakMap.set(designItem, val);
10
+ return val;
11
+ }
4
12
  export class ExtensionManager {
5
13
  designerCanvas;
6
14
  designItemsWithExtentions = new Set();
7
15
  _timeout;
16
+ _appliedDesignerExtensions = new WeakMap;
17
+ _shouldAppliedDesignerExtensions = new WeakMap;
18
+ _lastApplyEventPerType = new WeakMap;
8
19
  constructor(designerCanvas) {
9
20
  this.designerCanvas = designerCanvas;
10
21
  designerCanvas.instanceServiceContainer.selectionService.onSelectionChanged.on(this._selectedElementsChanged.bind(this));
22
+ designerCanvas.instanceServiceContainer.selectionService.onSelectionRefresh.on(this._selectedElementsRefresh.bind(this));
11
23
  designerCanvas.instanceServiceContainer.contentService.onContentChanged.on(this._contentChanged.bind(this));
12
24
  }
13
25
  connected() {
@@ -48,21 +60,27 @@ export class ExtensionManager {
48
60
  this.removeExtension(primaryContainer, ExtensionType.PrimarySelectionContainer);
49
61
  this.removeExtension(primaryContainer, ExtensionType.PrimarySelectionContainerAndCanBeEntered);
50
62
  this.removeExtension(selectionChangedEvent.oldSelectedElements[0], ExtensionType.PrimarySelection);
63
+ this.removeExtension(selectionChangedEvent.oldSelectedElements[0], ExtensionType.PrimarySelectionRefreshed);
51
64
  this.removeExtension(selectionChangedEvent.oldSelectedElements[0], ExtensionType.PrimarySelectionAndCanBeEntered);
52
65
  this.removeExtensions(selectionChangedEvent.oldSelectedElements, false, ExtensionType.Selection);
53
66
  }
54
67
  }
55
68
  if (selectionChangedEvent.selectedElements && selectionChangedEvent.selectedElements.length) {
56
- this.applyExtensions(selectionChangedEvent.selectedElements, ExtensionType.Selection);
57
- this.applyExtension(selectionChangedEvent.selectedElements[0], ExtensionType.PrimarySelection);
69
+ this.applyExtensions(selectionChangedEvent.selectedElements, ExtensionType.Selection, selectionChangedEvent.event);
70
+ this.applyExtension(selectionChangedEvent.selectedElements[0], ExtensionType.PrimarySelection, selectionChangedEvent.event);
58
71
  if (selectionChangedEvent.selectedElements[0].getPlacementService()?.isEnterableContainer(selectionChangedEvent.selectedElements[0]))
59
- this.applyExtension(selectionChangedEvent.selectedElements[0], ExtensionType.PrimarySelectionAndCanBeEntered);
72
+ this.applyExtension(selectionChangedEvent.selectedElements[0], ExtensionType.PrimarySelectionAndCanBeEntered, selectionChangedEvent.event);
60
73
  const primaryContainer = DesignItem.GetOrCreateDesignItem(selectionChangedEvent.selectedElements[0].parent.element, selectionChangedEvent.selectedElements[0].parent.element, this.designerCanvas.serviceContainer, this.designerCanvas.instanceServiceContainer);
61
- this.applyExtension(primaryContainer, ExtensionType.PrimarySelectionContainer);
74
+ this.applyExtension(primaryContainer, ExtensionType.PrimarySelectionContainer, selectionChangedEvent.event);
62
75
  if (primaryContainer.getPlacementService()?.isEnterableContainer(primaryContainer))
63
- this.applyExtension(primaryContainer, ExtensionType.PrimarySelectionContainerAndCanBeEntered);
76
+ this.applyExtension(primaryContainer, ExtensionType.PrimarySelectionContainerAndCanBeEntered, selectionChangedEvent.event);
77
+ }
78
+ }
79
+ _selectedElementsRefresh(selectionChangedEvent) {
80
+ this.refreshAllAppliedExtentions(selectionChangedEvent.event);
81
+ if (selectionChangedEvent.selectedElements && selectionChangedEvent.selectedElements.length) {
82
+ this.applyExtension(selectionChangedEvent.selectedElements[0], ExtensionType.PrimarySelectionRefreshed, selectionChangedEvent.event);
64
83
  }
65
- //this.refreshExtensions(selectionChangedEvent.selectedElements);
66
84
  }
67
85
  applyExtension(designItem, extensionType, event, recursive = false) {
68
86
  if (designItem && designItem.nodeType == NodeType.Element) {
@@ -71,25 +89,29 @@ export class ExtensionManager {
71
89
  if (extProv) {
72
90
  const cache = {};
73
91
  for (let e of extProv) {
74
- let shouldAppE = designItem.shouldAppliedDesignerExtensions.get(extensionType);
92
+ let shouldAppE = wmGet(designItem, this._shouldAppliedDesignerExtensions).get(extensionType);
75
93
  if (!shouldAppE)
76
94
  shouldAppE = [];
77
95
  shouldAppE.push(e);
78
- designItem.shouldAppliedDesignerExtensions.set(extensionType, shouldAppE);
96
+ wmGet(designItem, this._shouldAppliedDesignerExtensions).set(extensionType, shouldAppE);
79
97
  if (e.shouldExtend(this, this.designerCanvas, designItem)) {
80
- let appE = designItem.appliedDesignerExtensions.get(extensionType);
98
+ let appE = wmGet(designItem, this._appliedDesignerExtensions).get(extensionType);
81
99
  if (!appE)
82
100
  appE = [];
83
101
  const ext = e.getExtension(this, this.designerCanvas, designItem);
84
102
  try {
85
103
  ext.extend(cache, event);
86
104
  extensions.push(ext);
105
+ if (event)
106
+ wmGet(designItem, this._lastApplyEventPerType).set(extensionType, event);
107
+ else
108
+ wmGet(designItem, this._lastApplyEventPerType).delete(extensionType);
87
109
  }
88
110
  catch (err) {
89
111
  console.error(err);
90
112
  }
91
113
  appE.push(ext);
92
- designItem.appliedDesignerExtensions.set(extensionType, appE);
114
+ wmGet(designItem, this._appliedDesignerExtensions).set(extensionType, appE);
93
115
  this.designItemsWithExtentions.add(designItem);
94
116
  }
95
117
  }
@@ -111,24 +133,28 @@ export class ExtensionManager {
111
133
  const cache = {};
112
134
  for (let e of extProv) {
113
135
  for (let i of designItems) {
114
- let shouldAppE = i.shouldAppliedDesignerExtensions.get(extensionType);
136
+ let shouldAppE = wmGet(i, this._shouldAppliedDesignerExtensions).get(extensionType);
115
137
  if (!shouldAppE)
116
138
  shouldAppE = [];
117
139
  shouldAppE.push(e);
118
- i.shouldAppliedDesignerExtensions.set(extensionType, shouldAppE);
140
+ wmGet(i, this._shouldAppliedDesignerExtensions).set(extensionType, shouldAppE);
119
141
  if (e.shouldExtend(this, this.designerCanvas, i)) {
120
- let appE = i.appliedDesignerExtensions.get(extensionType);
142
+ let appE = wmGet(i, this._appliedDesignerExtensions).get(extensionType);
121
143
  if (!appE)
122
144
  appE = [];
123
145
  const ext = e.getExtension(this, this.designerCanvas, i);
124
146
  try {
125
147
  ext.extend(cache, event);
148
+ if (event)
149
+ wmGet(i, this._lastApplyEventPerType).set(extensionType, event);
150
+ else
151
+ wmGet(i, this._lastApplyEventPerType).delete(extensionType);
126
152
  }
127
153
  catch (err) {
128
154
  console.error(err);
129
155
  }
130
156
  appE.push(ext);
131
- i.appliedDesignerExtensions.set(extensionType, appE);
157
+ wmGet(i, this._appliedDesignerExtensions).set(extensionType, appE);
132
158
  this.designItemsWithExtentions.add(i);
133
159
  }
134
160
  }
@@ -143,7 +169,7 @@ export class ExtensionManager {
143
169
  this.designerCanvas.overlayLayer.endBatch();
144
170
  }
145
171
  applyExtensionInstance(designItem, extension) {
146
- let appE = designItem.appliedDesignerExtensions.get(ExtensionType.Directly);
172
+ let appE = wmGet(designItem, this._appliedDesignerExtensions).get(ExtensionType.Directly);
147
173
  if (!appE)
148
174
  appE = [];
149
175
  try {
@@ -153,11 +179,11 @@ export class ExtensionManager {
153
179
  console.error(err);
154
180
  }
155
181
  appE.push(extension);
156
- designItem.appliedDesignerExtensions.set(ExtensionType.Directly, appE);
182
+ wmGet(designItem, this._appliedDesignerExtensions).set(ExtensionType.Directly, appE);
157
183
  this.designItemsWithExtentions.add(designItem);
158
184
  }
159
185
  removeExtensionInstance(designItem, extension) {
160
- for (let e of designItem.appliedDesignerExtensions) {
186
+ for (let e of wmGet(designItem, this._appliedDesignerExtensions)) {
161
187
  const idx = e[1].indexOf(extension);
162
188
  if (idx >= 0) {
163
189
  try {
@@ -168,8 +194,8 @@ export class ExtensionManager {
168
194
  }
169
195
  e[1].splice(idx, 1);
170
196
  if (e[1].length == 0)
171
- designItem.appliedDesignerExtensions.delete(e[0]);
172
- if (!designItem.appliedDesignerExtensions.size)
197
+ wmGet(designItem, this._appliedDesignerExtensions).delete(e[0]);
198
+ if (!wmGet(designItem, this._appliedDesignerExtensions).size)
173
199
  this.designItemsWithExtentions.delete(designItem);
174
200
  }
175
201
  }
@@ -177,25 +203,26 @@ export class ExtensionManager {
177
203
  removeExtension(designItem, extensionType) {
178
204
  if (designItem) {
179
205
  if (extensionType) {
180
- designItem.shouldAppliedDesignerExtensions.delete(extensionType);
181
- let exts = designItem.appliedDesignerExtensions.get(extensionType);
206
+ wmGet(designItem, this._shouldAppliedDesignerExtensions).delete(extensionType);
207
+ let exts = wmGet(designItem, this._appliedDesignerExtensions).get(extensionType);
182
208
  if (exts) {
183
209
  for (let e of exts) {
184
210
  try {
185
211
  e.dispose();
212
+ wmGet(designItem, this._lastApplyEventPerType).delete(extensionType);
186
213
  }
187
214
  catch (err) {
188
215
  console.error(err);
189
216
  }
190
217
  }
191
- designItem.appliedDesignerExtensions.delete(extensionType);
192
- if (!designItem.appliedDesignerExtensions.size)
218
+ wmGet(designItem, this._appliedDesignerExtensions).delete(extensionType);
219
+ if (!wmGet(designItem, this._appliedDesignerExtensions).size)
193
220
  this.designItemsWithExtentions.delete(designItem);
194
221
  }
195
222
  }
196
223
  else {
197
- designItem.shouldAppliedDesignerExtensions.clear();
198
- for (let appE of designItem.appliedDesignerExtensions) {
224
+ wmGet(designItem, this._shouldAppliedDesignerExtensions).clear();
225
+ for (let appE of wmGet(designItem, this._appliedDesignerExtensions)) {
199
226
  for (let e of appE[1]) {
200
227
  try {
201
228
  e.dispose();
@@ -205,7 +232,7 @@ export class ExtensionManager {
205
232
  }
206
233
  }
207
234
  }
208
- designItem.appliedDesignerExtensions.clear();
235
+ wmGet(designItem, this._appliedDesignerExtensions).clear();
209
236
  this.designItemsWithExtentions.delete(designItem);
210
237
  }
211
238
  }
@@ -217,19 +244,20 @@ export class ExtensionManager {
217
244
  if (recursive && i.hasChildren) {
218
245
  this.removeExtensions([...i.children()], true, extensionType);
219
246
  }
220
- i.shouldAppliedDesignerExtensions.delete(extensionType);
221
- let exts = i.appliedDesignerExtensions.get(extensionType);
247
+ wmGet(i, this._shouldAppliedDesignerExtensions).delete(extensionType);
248
+ let exts = wmGet(i, this._appliedDesignerExtensions).get(extensionType);
222
249
  if (exts) {
223
250
  for (let e of exts) {
224
251
  try {
225
252
  e.dispose();
253
+ wmGet(i, this._lastApplyEventPerType).delete(extensionType);
226
254
  }
227
255
  catch (err) {
228
256
  console.error(err);
229
257
  }
230
258
  }
231
- i.appliedDesignerExtensions.delete(extensionType);
232
- if (!i.appliedDesignerExtensions.size)
259
+ wmGet(i, this._appliedDesignerExtensions).delete(extensionType);
260
+ if (!wmGet(i, this._appliedDesignerExtensions).size)
233
261
  this.designItemsWithExtentions.delete(i);
234
262
  }
235
263
  }
@@ -239,8 +267,8 @@ export class ExtensionManager {
239
267
  if (recursive && i.hasChildren) {
240
268
  this.removeExtensions([...i.children()], true, extensionType);
241
269
  }
242
- i.shouldAppliedDesignerExtensions.clear();
243
- for (let appE of i.appliedDesignerExtensions) {
270
+ wmGet(i, this._shouldAppliedDesignerExtensions).clear();
271
+ for (let appE of wmGet(i, this._appliedDesignerExtensions)) {
244
272
  for (let e of appE[1]) {
245
273
  try {
246
274
  e.dispose();
@@ -250,7 +278,7 @@ export class ExtensionManager {
250
278
  }
251
279
  }
252
280
  }
253
- i.appliedDesignerExtensions.clear();
281
+ wmGet(i, this._appliedDesignerExtensions).clear();
254
282
  this.designItemsWithExtentions.delete(i);
255
283
  }
256
284
  }
@@ -263,12 +291,14 @@ export class ExtensionManager {
263
291
  this.removeExtension(designItem, extensionType);
264
292
  }
265
293
  else {
266
- let exts = designItem.appliedDesignerExtensions.get(extensionType);
294
+ let exts = wmGet(designItem, this._appliedDesignerExtensions).get(extensionType);
267
295
  if (exts) {
268
296
  const cache = {};
269
297
  for (let e of exts) {
270
298
  try {
271
299
  e.refresh(cache, event);
300
+ if (event)
301
+ wmGet(designItem, this._lastApplyEventPerType).set(extensionType, event);
272
302
  }
273
303
  catch (err) {
274
304
  console.error(err);
@@ -279,7 +309,7 @@ export class ExtensionManager {
279
309
  }
280
310
  else {
281
311
  const cache = {};
282
- for (let appE of designItem.appliedDesignerExtensions) {
312
+ for (let appE of wmGet(designItem, this._appliedDesignerExtensions)) {
283
313
  for (let e of appE[1]) {
284
314
  try {
285
315
  e.refresh(cache, event);
@@ -303,7 +333,7 @@ export class ExtensionManager {
303
333
  this.removeExtension(i, extensionType);
304
334
  }
305
335
  else {
306
- let exts = i.appliedDesignerExtensions.get(extensionType);
336
+ let exts = wmGet(i, this._appliedDesignerExtensions).get(extensionType);
307
337
  if (exts) {
308
338
  for (let e of exts) {
309
339
  try {
@@ -328,11 +358,13 @@ export class ExtensionManager {
328
358
  else {
329
359
  const cache = {};
330
360
  outer2: for (let i of designItems) {
331
- for (let appE of i.appliedDesignerExtensions) {
361
+ for (let appE of wmGet(i, this._appliedDesignerExtensions)) {
332
362
  for (let e of appE[1]) {
333
363
  try {
334
364
  if (e != ignoredExtension) {
335
365
  e.refresh(cache, event);
366
+ if (event)
367
+ wmGet(i, this._lastApplyEventPerType).set(extensionType, event);
336
368
  if (timeout) {
337
369
  const end = performance.now();
338
370
  if (end - start > timeout) {
@@ -352,39 +384,42 @@ export class ExtensionManager {
352
384
  }
353
385
  this.designerCanvas.overlayLayer.endBatch();
354
386
  }
355
- refreshAllExtensions(designItems, ignoredExtension) {
387
+ refreshAllExtensions(designItems, ignoredExtension, event) {
356
388
  this.designerCanvas.overlayLayer.startBatch();
357
389
  if (designItems) {
358
- this.refreshExtensions(designItems, ExtensionType.Directly, null, ignoredExtension);
359
- this.refreshExtensions(designItems, ExtensionType.Permanent, null, ignoredExtension);
360
- this.refreshExtensions(designItems, ExtensionType.Selection, null, ignoredExtension);
361
- this.refreshExtensions(designItems, ExtensionType.PrimarySelection, null, ignoredExtension);
362
- this.refreshExtensions(designItems, ExtensionType.PrimarySelectionContainer, null, ignoredExtension);
363
- this.refreshExtensions(designItems, ExtensionType.MouseOver, null, ignoredExtension);
364
- this.refreshExtensions(designItems, ExtensionType.OnlyOneItemSelected, null, ignoredExtension);
365
- this.refreshExtensions(designItems, ExtensionType.MultipleItemsSelected, null, ignoredExtension);
366
- this.refreshExtensions(designItems, ExtensionType.ContainerDragOverAndCanBeEntered, null, ignoredExtension);
367
- this.refreshExtensions(designItems, ExtensionType.ContainerDrag, null, ignoredExtension);
368
- this.refreshExtensions(designItems, ExtensionType.Doubleclick, null, ignoredExtension);
369
- this.refreshExtensions(designItems, ExtensionType.Placement, null, ignoredExtension);
370
- this.refreshExtensions(designItems, ExtensionType.PrimarySelectionAndCanBeEntered, null, ignoredExtension);
371
- this.refreshExtensions(designItems, ExtensionType.PrimarySelectionContainerAndCanBeEntered, null, ignoredExtension);
390
+ this.refreshExtensions(designItems, ExtensionType.Directly, event, ignoredExtension);
391
+ this.refreshExtensions(designItems, ExtensionType.Permanent, event, ignoredExtension);
392
+ this.refreshExtensions(designItems, ExtensionType.Selection, event, ignoredExtension);
393
+ this.refreshExtensions(designItems, ExtensionType.PrimarySelection, event, ignoredExtension);
394
+ this.refreshExtensions(designItems, ExtensionType.PrimarySelectionContainer, event, ignoredExtension);
395
+ this.refreshExtensions(designItems, ExtensionType.MouseOver, event, ignoredExtension);
396
+ this.refreshExtensions(designItems, ExtensionType.OnlyOneItemSelected, event, ignoredExtension);
397
+ this.refreshExtensions(designItems, ExtensionType.MultipleItemsSelected, event, ignoredExtension);
398
+ this.refreshExtensions(designItems, ExtensionType.ContainerDragOverAndCanBeEntered, event, ignoredExtension);
399
+ this.refreshExtensions(designItems, ExtensionType.ContainerDrag, event, ignoredExtension);
400
+ this.refreshExtensions(designItems, ExtensionType.Doubleclick, event, ignoredExtension);
401
+ this.refreshExtensions(designItems, ExtensionType.Placement, event, ignoredExtension);
402
+ this.refreshExtensions(designItems, ExtensionType.PrimarySelectionAndCanBeEntered, event, ignoredExtension);
403
+ this.refreshExtensions(designItems, ExtensionType.PrimarySelectionContainerAndCanBeEntered, event, ignoredExtension);
372
404
  }
373
405
  this.designerCanvas.overlayLayer.endBatch();
374
406
  }
375
- refreshAllAppliedExtentions() {
407
+ refreshAllAppliedExtentions(event) {
376
408
  this.designerCanvas.fillCalculationrects();
377
- this.refreshAllExtensions([...this.designItemsWithExtentions]);
409
+ this.refreshAllExtensions([...this.designItemsWithExtentions], null, event);
378
410
  }
379
411
  //TODO: does not work with permanant, when not applied... maybe we need to do in another way
380
412
  //maybe store the "shouldAppliedExtensions??"
381
- reapplyAllAppliedExtentions() {
413
+ reapplyAllAppliedExtentions(filterDesignItems) {
382
414
  this.designerCanvas.overlayLayer.startBatch();
383
415
  for (let d of ExtensionManager.getAllChildElements(this.designerCanvas.rootDesignItem)) {
384
- const keys = [...d.shouldAppliedDesignerExtensions.keys()];
385
- for (let e of keys) {
386
- this.removeExtension(d, e);
387
- this.applyExtension(d, e);
416
+ if (!filterDesignItems || filterDesignItems.includes(d)) {
417
+ const keys = [...wmGet(d, this._shouldAppliedDesignerExtensions).keys()];
418
+ for (let t of keys) {
419
+ const evt = wmGet(d, this._lastApplyEventPerType).get(t);
420
+ this.removeExtension(d, t);
421
+ this.applyExtension(d, t, evt);
422
+ }
388
423
  }
389
424
  }
390
425
  this.designerCanvas.overlayLayer.endBatch();
@@ -27,5 +27,9 @@ export declare enum ExtensionType {
27
27
  * do not display grid extension.
28
28
  */
29
29
  PrimarySelectionAndCanBeEntered = 13,
30
- PrimarySelectionContainerAndCanBeEntered = 14
30
+ PrimarySelectionContainerAndCanBeEntered = 14,
31
+ /**
32
+ * Extension when the Primary Selection is refreshed, means clicked a second time
33
+ */
34
+ PrimarySelectionRefreshed = 15
31
35
  }
@@ -29,4 +29,8 @@ export var ExtensionType;
29
29
  */
30
30
  ExtensionType[ExtensionType["PrimarySelectionAndCanBeEntered"] = 13] = "PrimarySelectionAndCanBeEntered";
31
31
  ExtensionType[ExtensionType["PrimarySelectionContainerAndCanBeEntered"] = 14] = "PrimarySelectionContainerAndCanBeEntered";
32
+ /**
33
+ * Extension when the Primary Selection is refreshed, means clicked a second time
34
+ */
35
+ ExtensionType[ExtensionType["PrimarySelectionRefreshed"] = 15] = "PrimarySelectionRefreshed";
32
36
  })(ExtensionType || (ExtensionType = {}));
@@ -0,0 +1,12 @@
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 GridToolbarExtension extends AbstractExtension {
6
+ private static template;
7
+ private _foreignObject;
8
+ constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
9
+ extend(cache: Record<string | symbol, any>, event: MouseEvent): void;
10
+ refresh(cache: Record<string | symbol, any>, event?: MouseEvent): void;
11
+ dispose(): void;
12
+ }
@@ -0,0 +1,58 @@
1
+ import { html } from "@node-projects/base-custom-webcomponent";
2
+ import { AbstractExtension } from "../AbstractExtension.js";
3
+ import { OverlayLayer } from "../OverlayLayer.js";
4
+ export class GridToolbarExtension extends AbstractExtension {
5
+ static template = html `
6
+ <div style="height: 30px; width: 200px;">
7
+ <span>GRID</span>
8
+ <select id="gridType" style="pointer-events: all; height: 24px; width: 60px; padding: 0;">
9
+ <option>1x1</option>
10
+ <option>1x16</option>
11
+ <option>2x8</option>
12
+ <option>4x4</option>
13
+ <option>8x2</option>
14
+ <option>16x1</option>
15
+ <option>custom</option>
16
+ </select>
17
+ </div>
18
+ `;
19
+ _foreignObject;
20
+ constructor(extensionManager, designerView, extendedItem) {
21
+ super(extensionManager, designerView, extendedItem);
22
+ }
23
+ extend(cache, event) {
24
+ const element = GridToolbarExtension.template.content.cloneNode(true);
25
+ element.querySelectorAll('*').forEach(x => x.onpointerdown = (e) => {
26
+ this.designerCanvas.ignoreEvent(e);
27
+ //this._formatSelection(x.dataset['command'], x.dataset['commandParameter'])
28
+ });
29
+ //element.querySelectorAll('select').forEach(x => x.onpointerdown = (e) => this.designerCanvas.ignoreEvent(e));
30
+ const gridTypeEl = element.querySelector('#gridType');
31
+ gridTypeEl.onchange = () => {
32
+ const parts = gridTypeEl.value.split('x');
33
+ this.extendedItem.updateStyleInSheetOrLocal('grid-template-columns', '1fr '.repeat(parseInt(parts[0])).trim());
34
+ this.extendedItem.updateStyleInSheetOrLocal('grid-template-rows', '1fr '.repeat(parseInt(parts[1])).trim());
35
+ };
36
+ //elements.querySelectorAll('select').forEach(x => x.onchange = () => this._formatSelection(x.dataset['command'], x.value));
37
+ //overlay
38
+ const foreignObject = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject');
39
+ this._foreignObject = foreignObject;
40
+ foreignObject.classList.add('svg-toolbar');
41
+ foreignObject.setAttribute('width', '1');
42
+ foreignObject.setAttribute('height', '1');
43
+ foreignObject.appendChild(element);
44
+ this.refresh(cache, event);
45
+ this._addOverlay(foreignObject, OverlayLayer.Foreground);
46
+ }
47
+ refresh(cache, event) {
48
+ if (event) {
49
+ const pos = this.designerCanvas.getNormalizedEventCoordinates(event);
50
+ //debugger;
51
+ this._foreignObject.setAttribute('x', '' + (pos.x - 16));
52
+ this._foreignObject.setAttribute('y', '' + (pos.y - 36));
53
+ }
54
+ }
55
+ dispose() {
56
+ this._removeAllOverlays();
57
+ }
58
+ }
@@ -10,9 +10,9 @@ export interface IExtensionManager {
10
10
  removeExtensionInstance(designItem: IDesignItem, extension: IDesignerExtension): any;
11
11
  refreshExtension(designItem: IDesignItem, extensionType?: ExtensionType, event?: Event): any;
12
12
  refreshExtensions(designItems: IDesignItem[], extensionType?: ExtensionType, event?: Event, ignoredExtension?: IDesignerExtension, timeout?: number): any;
13
- refreshAllExtensions(designItems: IDesignItem[], ignoredExtension?: IDesignerExtension): any;
14
- refreshAllAppliedExtentions(): any;
15
- reapplyAllAppliedExtentions(): any;
13
+ refreshAllExtensions(designItems: IDesignItem[], ignoredExtension?: IDesignerExtension, event?: Event): any;
14
+ refreshAllAppliedExtentions(event?: Event): any;
15
+ reapplyAllAppliedExtentions(filterDesignItems?: IDesignItem[]): any;
16
16
  connected(): any;
17
17
  disconnected(): any;
18
18
  }
@@ -11,9 +11,13 @@ export class TransformOriginExtensionProvider {
11
11
  return true;
12
12
  if (designItem.hasStyle('transformOrigin'))
13
13
  return true;
14
- if (getComputedStyle(designItem.element).display != 'inline' && designItem.element.getBoundingClientRect) {
14
+ const cs = getComputedStyle(designItem.element);
15
+ if (cs.display != 'inline' && designItem.element.getBoundingClientRect) {
15
16
  const r = designItem.element.getBoundingClientRect();
16
- if (getComputedStyle(designItem.element).transformOrigin != r.width / 2 + 'px ' + r.height / 2 + 'px')
17
+ const pr = cs.transformOrigin.split(' ');
18
+ const x = parseFloat(pr[0]) - r.width / 2;
19
+ const y = parseFloat(pr[1]) - r.height / 2;
20
+ if (x > 0.5 || x < -0.5 || y > 0.5 || y < -0.5)
17
21
  return true;
18
22
  }
19
23
  }
@@ -0,0 +1,12 @@
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 BlockToolbarExtension extends AbstractExtension {
6
+ private static template;
7
+ private _toolbar;
8
+ constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
9
+ extend(cache: Record<string | symbol, any>, event: MouseEvent): void;
10
+ refresh(cache: Record<string | symbol, any>, event?: MouseEvent): void;
11
+ dispose(): void;
12
+ }
@@ -0,0 +1,35 @@
1
+ import { html } from "@node-projects/base-custom-webcomponent";
2
+ import { AbstractExtension } from "../AbstractExtension.js";
3
+ export class BlockToolbarExtension extends AbstractExtension {
4
+ static template = html `
5
+ <div style="height: 100%; width: 100%;">
6
+ <select id="displayType" style="pointer-events: all; height: 24px; width: 70px; padding: 0; font-weight: 900; text-transform: uppercase; margin-right: 10px;">
7
+ <option selected>block</option>
8
+ <option>flex</option>
9
+ <option>grid</option>
10
+ </select>
11
+ </div>
12
+ `;
13
+ _toolbar;
14
+ constructor(extensionManager, designerView, extendedItem) {
15
+ super(extensionManager, designerView, extendedItem);
16
+ }
17
+ extend(cache, event) {
18
+ this._toolbar = this.createToolbar(BlockToolbarExtension.template, 200, 30);
19
+ const displayTypeEl = this._toolbar.getById('displayType');
20
+ displayTypeEl.onchange = () => {
21
+ this.extendedItem.updateStyleInSheetOrLocal('display', displayTypeEl.value);
22
+ this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem]);
23
+ };
24
+ this.refresh(cache, event);
25
+ }
26
+ refresh(cache, event) {
27
+ if (event) {
28
+ const pos = this.designerCanvas.getNormalizedEventCoordinates(event);
29
+ this._toolbar.updatePosition({ x: (pos.x - 16), y: (pos.y - 44) });
30
+ }
31
+ }
32
+ dispose() {
33
+ this._removeAllOverlays();
34
+ }
35
+ }
@@ -0,0 +1,9 @@
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 BlockToolbarExtensionProvider implements IDesignerExtensionProvider {
7
+ shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
8
+ getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
+ }
@@ -0,0 +1,12 @@
1
+ import { BlockToolbarExtension } from './BlockToolbarExtension.js';
2
+ import { NodeType } from '../../../../item/NodeType.js';
3
+ export class BlockToolbarExtensionProvider {
4
+ shouldExtend(extensionManager, designerView, designItem) {
5
+ if (designItem.nodeType === NodeType.Element && getComputedStyle(designItem.element).display === 'block')
6
+ return true;
7
+ return false;
8
+ }
9
+ getExtension(extensionManager, designerView, designItem) {
10
+ return new BlockToolbarExtension(extensionManager, designerView, designItem);
11
+ }
12
+ }
@@ -0,0 +1,12 @@
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 FlexToolbarExtension extends AbstractExtension {
6
+ private static template;
7
+ private _toolbar;
8
+ constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
9
+ extend(cache: Record<string | symbol, any>, event: MouseEvent): void;
10
+ refresh(cache: Record<string | symbol, any>, event?: MouseEvent): void;
11
+ dispose(): void;
12
+ }