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

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 (32) hide show
  1. package/dist/elements/helper/CssUnitConverter.d.ts +1 -1
  2. package/dist/elements/helper/GridHelper.d.ts +1 -2
  3. package/dist/elements/helper/GridHelper.js +3 -18
  4. package/dist/elements/item/DesignItem.js +8 -4
  5. package/dist/elements/services/DefaultServiceBootstrap.js +5 -3
  6. package/dist/elements/widgets/codeView/code-view-monaco.js +1 -5
  7. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.js +1 -1
  8. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js +0 -1
  9. package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.d.ts +17 -0
  10. package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.js +111 -0
  11. package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtensionProvider.d.ts +10 -0
  12. package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtensionProvider.js +20 -0
  13. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension copy 2.d.ts +51 -0
  14. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension copy 2.js +346 -0
  15. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension copy.d.ts +51 -0
  16. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension copy.js +346 -0
  17. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension.d.ts +8 -43
  18. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension.js +43 -318
  19. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtensionProvider copy.d.ts +10 -0
  20. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtensionProvider copy.js +22 -0
  21. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtensionProvider.d.ts +1 -1
  22. package/dist/elements/widgets/designerView/extensions/grid/EditGridExtensionProvider.js +5 -9
  23. package/dist/elements/widgets/designerView/extensions/grid/NewEditGridExtensionProvider.d.ts +10 -0
  24. package/dist/elements/widgets/designerView/extensions/grid/NewEditGridExtensionProvider.js +22 -0
  25. package/dist/elements/widgets/designerView/extensions/grid/OldEditGridExtension.d.ts +51 -0
  26. package/dist/elements/widgets/designerView/extensions/grid/OldEditGridExtension.js +346 -0
  27. package/dist/elements/widgets/designerView/extensions/grid/OldEditGridExtensionProvider.d.ts +10 -0
  28. package/dist/elements/widgets/designerView/extensions/grid/OldEditGridExtensionProvider.js +22 -0
  29. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.js +1 -1
  30. package/dist/index.d.ts +2 -2
  31. package/dist/index.js +2 -2
  32. package/package.json +1 -1
@@ -1,346 +1,71 @@
1
1
  import { EventNames } from "../../../../../enums/EventNames.js";
2
- import { convertCssUnit, convertCssUnitToPixel, getCssUnit } from "../../../../helper/CssUnitConverter.js";
3
2
  import { CalculateGridInformation } from "../../../../helper/GridHelper.js";
4
3
  import { AbstractExtension } from '../AbstractExtension.js';
5
4
  import { OverlayLayer } from "../OverlayLayer.js";
6
- export class EditGridExtension extends AbstractExtension {
7
- _initialPoint;
8
- _initialSizes;
9
- _cells;
10
- _gaps;
11
- _headers;
12
- _headerTexts;
13
- _plusCircles;
14
- _resizeCircles;
15
- minPixelSize = 10;
5
+ export class EditGridColumnRowSizesExtension extends AbstractExtension {
16
6
  gridInformation;
17
- defaultHeaderSize = 20;
18
- defaultPlusSize = this.defaultHeaderSize * 2 / 3;
19
- defaultDistanceToBox = 5;
20
- defaultDistanceBetweenHeaders = 10;
21
- defaultSizeOfNewRowOrColumn = "50px";
7
+ _resizers = [];
8
+ _initalPos;
9
+ _initialSizes;
22
10
  constructor(extensionManager, designerView, extendedItem) {
23
11
  super(extensionManager, designerView, extendedItem);
24
12
  }
25
- extend() {
26
- this._initSVGArrays();
27
- this.refresh();
28
- }
29
- refresh() {
30
- this.gridInformation = CalculateGridInformation(this.extendedItem);
31
- let cells = this.gridInformation.cells;
32
- if (cells[0][0] && !isNaN(cells[0][0].height) && !isNaN(cells[0][0].width)) {
33
- if (this.gridInformation.cells.length != this._cells.length || this.gridInformation.cells[0].length != this._cells[0].length)
34
- this._initSVGArrays();
35
- //draw gaps
36
- this.gridInformation.gaps.forEach((gap, i) => {
37
- this._gaps[i] = this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-gap', this._gaps[i], OverlayLayer.Foregorund);
38
- this._resizeCircles[i] = this._drawResizeCircle(gap, this._resizeCircles[i]);
39
- });
40
- //draw cells
41
- cells.forEach((row, i) => {
42
- row.forEach((cell, j) => {
43
- this._cells[i][j] = this._drawRect(cell.x, cell.y, cell.width, cell.height, 'svg-grid', this._cells[i][j], OverlayLayer.Background);
44
- if (cell.name) {
45
- const text = this._drawText(cell.name, cell.x, cell.y, 'svg-grid-area', null, OverlayLayer.Background);
46
- text.setAttribute("dominant-baseline", "hanging");
47
- }
48
- });
49
- });
50
- //draw headers
51
- cells.forEach((row, i) => {
52
- this._headers[0][i] = this._drawHeader(row[0], this._headers[0][i], i, "vertical");
53
- this._headerTexts[0][i] = this._drawHeaderText(row[0], this._headerTexts[0][i], "vertical");
54
- });
55
- cells[0].forEach((column, i) => {
56
- this._headers[1][i] = this._drawHeader(column, this._headers[1][i], i, "horizontal");
57
- this._headerTexts[1][i] = this._drawHeaderText(column, this._headerTexts[1][i], "horizontal");
58
- });
59
- //draw circles for adding rows/columns
60
- for (let i = 0; i < this._plusCircles[0].length; i++)
61
- if (i < this._plusCircles[0].length - 1)
62
- this._plusCircles[0][i] = this._drawPlusCircle(cells[i][0].x, cells[i][0].y, this._plusCircles[0][i], i, "vertical");
63
- else
64
- this._plusCircles[0][i] = this._drawPlusCircle(cells[i - 1][0].x, cells[i - 1][0].y + cells[i - 1][0].height, this._plusCircles[0][i], i, "vertical", true);
65
- for (let i = 0; i < this._plusCircles[1].length; i++)
66
- if (i < this._plusCircles[1].length - 1)
67
- this._plusCircles[1][i] = this._drawPlusCircle(cells[0][i].x, cells[0][i].y, this._plusCircles[1][i], i, "horizontal");
68
- else
69
- this._plusCircles[1][i] = this._drawPlusCircle(cells[0][i - 1].x + cells[0][i - 1].width, cells[0][i - 1].y, this._plusCircles[1][i], i, "horizontal", true);
70
- }
71
- }
72
- dispose() {
73
- this._removeAllOverlays();
13
+ extend(event) {
14
+ this.refresh(event);
74
15
  }
75
- _initSVGArrays() {
76
- this._removeAllOverlays();
16
+ refresh(event) {
77
17
  this.gridInformation = CalculateGridInformation(this.extendedItem);
78
- this._cells = new Array(this.gridInformation.cells.length);
79
- this.gridInformation.cells.forEach((row, i) => this._cells[i] = new Array(row.length));
80
- this._gaps = new Array(this.gridInformation.gaps.length);
81
- this._headers = new Array(2);
82
- this._headers[0] = new Array(this.gridInformation.cells.length + 1); //array for the headers of columns
83
- this._headers[1] = new Array(this.gridInformation.cells[0].length + 1); //array for the headers of rows
84
- this._headerTexts = new Array(2);
85
- this._headerTexts[0] = new Array(this.gridInformation.cells.length + 1);
86
- this._headerTexts[1] = new Array(this.gridInformation.cells[0].length + 1);
87
- this._plusCircles = new Array(2);
88
- this._plusCircles[0] = new Array(this.gridInformation.cells.length + 1);
89
- this._plusCircles[1] = new Array(this.gridInformation.cells[0].length + 1);
90
- this._resizeCircles = new Array(this.gridInformation.gaps.length);
91
- }
92
- _drawResizeCircle(gap, oldCircle) {
93
- let resizeCircle = this._drawCircle((gap.x + (gap.width / 2)), (gap.y + (gap.height / 2)), 1.5, 'svg-grid-resizer', oldCircle, OverlayLayer.Foregorund);
94
- resizeCircle.style.pointerEvents = "all";
95
- resizeCircle.style.cursor = gap.width < gap.height ? "ew-resize" : "ns-resize";
96
- if (!oldCircle) {
97
- resizeCircle.addEventListener(EventNames.PointerDown, event => this._pointerActionTypeResize(event, resizeCircle, gap.column, gap.row));
98
- resizeCircle.addEventListener(EventNames.PointerMove, event => this._pointerActionTypeResize(event, resizeCircle, gap.column, gap.row));
99
- resizeCircle.addEventListener(EventNames.PointerUp, event => this._pointerActionTypeResize(event, resizeCircle, gap.column, gap.row));
100
- }
101
- return resizeCircle;
102
- }
103
- _drawHeader(cell, oldHeader, index, alignment) {
104
- let xOffset;
105
- let yOffset;
106
- let width;
107
- let height;
108
- if (alignment == "vertical") {
109
- xOffset = -(this.defaultHeaderSize + this.defaultDistanceToBox);
110
- yOffset = this.defaultDistanceBetweenHeaders / 2;
111
- width = this.defaultHeaderSize;
112
- height = cell.height - this.defaultDistanceBetweenHeaders;
113
- }
114
- else {
115
- xOffset = this.defaultDistanceBetweenHeaders / 2;
116
- yOffset = -(this.defaultHeaderSize + this.defaultDistanceToBox);
117
- width = cell.width - this.defaultDistanceBetweenHeaders;
118
- height = this.defaultHeaderSize;
119
- }
120
- let tmpHeader = this._drawRect(cell.x + xOffset, cell.y + yOffset, width, height, "svg-grid-header", oldHeader, OverlayLayer.Foregorund);
121
- tmpHeader.style.pointerEvents = "all";
122
- if (!oldHeader) {
123
- tmpHeader.addEventListener(EventNames.PointerMove, event => {
124
- this._toggleDisplayPlusCircles(index, alignment, true);
125
- });
126
- }
127
- return tmpHeader;
128
- }
129
- _drawHeaderText(cell, oldHeaderText, alignment) {
130
- let text;
131
- let xOffset;
132
- let yOffset;
133
- if (alignment == "vertical") {
134
- text = this._getHeaderText(cell.height, cell.initHeightUnit, "height");
135
- xOffset = -12.5;
136
- yOffset = cell.height / 2;
137
- }
138
- else {
139
- text = this._getHeaderText(cell.width, cell.initWidthUnit, "width");
140
- xOffset = cell.width / 2;
141
- yOffset = -12.5;
142
- }
143
- let rText = this._drawText(text, cell.x + xOffset, cell.y + yOffset, null, oldHeaderText, OverlayLayer.Background);
144
- if (alignment == "vertical")
145
- rText.setAttribute("transform", "rotate(-90, " + (cell.x + xOffset) + ", " + (cell.y + yOffset) + ")");
146
- return rText;
147
- }
148
- _drawPlusCircle(x, y, oldPlusElement, index, alignment, final = false) {
149
- let plusElement = { circle: null, verticalLine: null, horizontalLine: null };
150
- let posX;
151
- let posY;
152
- let gapOffset = index == 0 || final ? 0 : -(convertCssUnitToPixel(this.extendedItem.getStyle(alignment == "vertical" ? "row-gap" : "column-gap"), this.extendedItem.element, alignment == "vertical" ? "height" : "width") / 2);
153
- if (alignment == "vertical") {
154
- posX = x - this.defaultDistanceToBox - this.defaultHeaderSize / 2;
155
- posY = y + gapOffset;
156
- }
157
- else {
158
- posX = x + gapOffset;
159
- posY = y - this.defaultDistanceToBox - this.defaultHeaderSize / 2;
160
- }
161
- plusElement.circle = this._drawCircle(posX, posY, this.defaultHeaderSize / 2, 'svg-grid-resizer', oldPlusElement ? oldPlusElement.circle : null, OverlayLayer.Foregorund);
162
- plusElement.circle.style.pointerEvents = "all";
163
- plusElement.circle.style.cursor = "pointer";
164
- plusElement.circle.style.display = "none";
165
- if (!oldPlusElement) {
166
- plusElement.circle.addEventListener(EventNames.PointerMove, event => this._toggleDisplayPlusCircles(index, alignment));
167
- plusElement.circle.addEventListener(EventNames.PointerDown, event => {
168
- this._editGrid(index, alignment, "add");
169
- event.stopPropagation();
170
- });
171
- }
172
- plusElement.verticalLine = this._drawLine(posX, posY - this.defaultPlusSize / 2, posX, posY + this.defaultPlusSize / 2, "svg-grid-plus-sign", oldPlusElement ? oldPlusElement.verticalLine : null, OverlayLayer.Foregorund);
173
- plusElement.verticalLine.style.display = "none";
174
- plusElement.horizontalLine = this._drawLine(posX - this.defaultPlusSize / 2, posY, posX + this.defaultPlusSize / 2, posY, "svg-grid-plus-sign", oldPlusElement ? oldPlusElement.horizontalLine : null, OverlayLayer.Foregorund);
175
- plusElement.horizontalLine.style.display = "none";
176
- return plusElement;
177
- }
178
- _getHeaderText(size, unit, percentTarget) {
179
- return Math.round(parseFloat(this._convertCssUnit(size, this.extendedItem.element, percentTarget, unit)) * 10) / 10 + unit;
180
- }
181
- _getInitialSizes() {
182
- let rX = []; //in pixels
183
- let rXUnit = []; //original unit
184
- let rY = []; //in pixels
185
- let rYUnit = []; //original unit
186
- this.gridInformation.cells[0].forEach(row => {
187
- rX.push(row.width);
188
- rXUnit.push(row.initWidthUnit);
189
- });
190
- this.gridInformation.cells.forEach(column => {
191
- rY.push(column[0].height);
192
- rYUnit.push(column[0].initHeightUnit);
18
+ this.gridInformation.gaps.forEach((gap, i) => {
19
+ if (gap.width < 3) {
20
+ gap.width = 3;
21
+ gap.x--;
22
+ }
23
+ if (gap.height < 3) {
24
+ gap.height = 3;
25
+ gap.y--;
26
+ }
27
+ let rect = this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-resizer-' + gap.type, this._resizers[i], OverlayLayer.Normal);
28
+ if (!this._resizers[i]) {
29
+ rect.addEventListener(EventNames.PointerDown, event => this._pointerActionTypeResize(event, rect, gap, i));
30
+ rect.addEventListener(EventNames.PointerMove, event => this._pointerActionTypeResize(event, rect, gap, i));
31
+ rect.addEventListener(EventNames.PointerUp, event => this._pointerActionTypeResize(event, rect, gap, i));
32
+ }
193
33
  });
194
- return { x: rX, xUnit: rXUnit, y: rY, yUnit: rYUnit };
195
34
  }
196
- _pointerActionTypeResize(event, circle, gapColumn, gapRow) {
35
+ _pointerActionTypeResize(event, rect, gap, index) {
197
36
  event.stopPropagation();
37
+ const templatePropertyName = gap.type == 'h' ? 'gridTemplateRows' : 'gridTemplateColumns';
38
+ const axisPropertyName = gap.type == 'h' ? 'Y' : 'X';
39
+ const pos = event['client' + axisPropertyName];
198
40
  switch (event.type) {
199
41
  case EventNames.PointerDown:
200
- circle.setPointerCapture(event.pointerId);
201
- this._initialPoint = { x: event.clientX, y: event.clientY };
202
- this._initialSizes = this._getInitialSizes();
42
+ rect.setPointerCapture(event.pointerId);
43
+ this._initalPos = pos;
44
+ this._initialSizes = getComputedStyle(this.extendedItem.element)[templatePropertyName];
203
45
  break;
204
46
  case EventNames.PointerMove:
205
- if (this._initialPoint) {
206
- let elementStyle = this.extendedItem.element.style;
207
- this.extendedItem.element.getBoundingClientRect;
208
- if (circle.style.cursor == "ew-resize")
209
- elementStyle.gridTemplateColumns = this._calculateNewSize(this._initialSizes.x, this._initialSizes.xUnit, (event.clientX - this._initialPoint.x) / this.designerCanvas.zoomFactor, gapColumn, "width");
210
- else if (circle.style.cursor == "ns-resize")
211
- elementStyle.gridTemplateRows = this._calculateNewSize(this._initialSizes.y, this._initialSizes.yUnit, (event.clientY - this._initialPoint.y) / this.designerCanvas.zoomFactor, gapRow, "height");
47
+ if (this._initialSizes) {
48
+ const diff = this._initalPos - pos;
49
+ let parts = this._initialSizes.split(' ');
50
+ parts[index] = (parseFloat(parts[index]) - diff) + 'px';
51
+ parts[index + 1] = (parseFloat(parts[index + 1]) + diff) + 'px';
52
+ this.extendedItem.element.style[templatePropertyName] = parts.join(' ');
212
53
  this.refresh();
213
54
  }
214
55
  break;
215
56
  case EventNames.PointerUp:
216
- circle.releasePointerCapture(event.pointerId);
217
- if (circle.style.cursor == "ew-resize")
218
- this.extendedItem.setStyle("grid-template-columns", this._calculateNewSize(this._initialSizes.x, this._initialSizes.xUnit, (event.clientX - this._initialPoint.x) / this.designerCanvas.zoomFactor, gapColumn, "width", true));
219
- else if (circle.style.cursor == "ns-resize")
220
- this.extendedItem.setStyle("grid-template-rows", this._calculateNewSize(this._initialSizes.y, this._initialSizes.yUnit, (event.clientY - this._initialPoint.y) / this.designerCanvas.zoomFactor, gapRow, "height", true));
221
- this._initialPoint = null;
57
+ rect.releasePointerCapture(event.pointerId);
58
+ //if (circle.style.cursor == "ew-resize")
59
+ // this.extendedItem.setStyle("grid-template-columns", this._calculateNewSize(this._initialSizes.x, this._initialSizes.xUnit, (event.clientX - this._initialPoint.x) / this.designerCanvas.zoomFactor, gapColumn, "width", true));
60
+ //else if (circle.style.cursor == "ns-resize")
61
+ // this.extendedItem.setStyle("grid-template-rows", this._calculateNewSize(this._initialSizes.y, this._initialSizes.yUnit, (event.clientY - this._initialPoint.y) / this.designerCanvas.zoomFactor, gapRow, "height", true));
62
+ this._initalPos = null;
222
63
  this._initialSizes = null;
223
64
  this.refresh();
224
65
  break;
225
66
  }
226
67
  }
227
- _calculateNewSize(iSizes, iUnits, diff, gapIndex, percentTarget, pointerUp = false) {
228
- let newSizes = [];
229
- let edited = [];
230
- for (let i = 0; i < iSizes.length; i++) {
231
- newSizes.push(i + 1 == gapIndex ? iSizes[i] + diff : i == gapIndex ? iSizes[i] - diff : iSizes[i]);
232
- edited.push(i + 1 == gapIndex || i == gapIndex);
233
- }
234
- for (let i = 0; i < newSizes.length; i++) {
235
- let index = edited[i + 1] ? i + 1 : edited[i - 1] ? i - 1 : null;
236
- if (newSizes[i] < 0 && pointerUp) {
237
- if (confirm("Do you want to delete this " + (percentTarget == "width" ? "column" : "row") + "?")) {
238
- this._editGrid(i, percentTarget == "width" ? "horizontal" : "vertical", "del");
239
- newSizes[index] = iSizes[i] + iSizes[index];
240
- newSizes.splice(i, 1);
241
- break;
242
- }
243
- }
244
- if (newSizes[i] < this.minPixelSize) {
245
- newSizes[index] = newSizes[i] + newSizes[index] - this.minPixelSize;
246
- newSizes[i] = this.minPixelSize;
247
- break;
248
- }
249
- }
250
- let retVal = "";
251
- newSizes.forEach((newSize, i) => retVal += this._convertCssUnit(newSize + "px", this.extendedItem.element, percentTarget, iUnits[i]) + ' ');
252
- return retVal;
253
- }
254
- _editGrid(pos, alignment, task) {
255
- let cellTarget;
256
- let elementTarget;
257
- if (alignment == "vertical") {
258
- cellTarget = "grid-template-rows";
259
- elementTarget = "height";
260
- }
261
- else {
262
- cellTarget = "grid-template-columns";
263
- elementTarget = "width";
264
- }
265
- let sizes = this.extendedItem.getStyle(cellTarget).split(' ');
266
- if (task == "add")
267
- sizes.splice(pos, 0, this.defaultSizeOfNewRowOrColumn);
268
- else
269
- sizes.splice(pos, 1);
270
- this.extendedItem.setStyle(cellTarget, sizes.join(' '));
271
- if (task == "add") {
272
- this.extendedItem.setStyle(elementTarget, convertCssUnit(this._calculateNewElementSize(elementTarget), this.designerCanvas.canvas, elementTarget, getCssUnit(this.extendedItem.getStyle(elementTarget))));
273
- }
274
- else {
275
- this.extendedItem.setStyle(elementTarget, convertCssUnit(convertCssUnitToPixel(this.extendedItem.getStyle(elementTarget), this.designerCanvas.canvas, elementTarget) - convertCssUnitToPixel(this.extendedItem.getStyle(alignment == "vertical" ? "row-gap" : "column-gap"), this.extendedItem.element, elementTarget), this.designerCanvas.canvas, elementTarget, getCssUnit(this.extendedItem.getStyle(elementTarget))));
276
- }
277
- }
278
- _calculateNewElementSize(elementTarget) {
279
- let gc = CalculateGridInformation(this.extendedItem);
280
- let tmpSize = 0;
281
- if (elementTarget == "width") {
282
- gc.cells[0].forEach(cell => { tmpSize += cell.width; });
283
- tmpSize += convertCssUnitToPixel(this.extendedItem.getStyle("column-gap"), this.extendedItem.element, elementTarget) * (gc.cells[0].length - 1);
284
- }
285
- else {
286
- gc.cells.forEach(row => { tmpSize += row[0].height; });
287
- tmpSize += convertCssUnitToPixel(this.extendedItem.getStyle("row-gap"), this.extendedItem.element, elementTarget) * (gc.cells.length - 1);
288
- }
289
- return tmpSize + "px";
290
- }
291
- _toggleDisplayPlusCircles(index, alignment, double = false) {
292
- this._plusCircles.forEach(alignment => {
293
- alignment.forEach(element => {
294
- element.circle.style.display = "none";
295
- element.verticalLine.style.display = "none";
296
- element.horizontalLine.style.display = "none";
297
- });
298
- });
299
- if (index != -1) {
300
- this._plusCircles[alignment == "vertical" ? 0 : 1][index].circle.style.display = "inline";
301
- this._plusCircles[alignment == "vertical" ? 0 : 1][index].verticalLine.style.display = "inline";
302
- this._plusCircles[alignment == "vertical" ? 0 : 1][index].horizontalLine.style.display = "inline";
303
- if (double) {
304
- this._plusCircles[alignment == "vertical" ? 0 : 1][index + 1].circle.style.display = "inline";
305
- this._plusCircles[alignment == "vertical" ? 0 : 1][index + 1].verticalLine.style.display = "inline";
306
- this._plusCircles[alignment == "vertical" ? 0 : 1][index + 1].horizontalLine.style.display = "inline";
307
- }
308
- }
309
- }
310
- _convertCssUnit(cssValue, target, percentTarget, unit) {
311
- if (unit == "fr") {
312
- let containerSize = convertCssUnitToPixel(target.style.width, target, percentTarget);
313
- let amountGaps = percentTarget == "height" ? this.gridInformation.cells.length - 1 : this.gridInformation.cells[0].length - 1;
314
- let gapSize = convertCssUnitToPixel(percentTarget == "width" ? target.style.columnGap : target.style.rowGap, target, percentTarget);
315
- let containerSizeWithoutGaps = containerSize - gapSize * amountGaps;
316
- let amountFrSizes = 0;
317
- let leftOver = containerSizeWithoutGaps;
318
- if (percentTarget == "width") {
319
- this.gridInformation.cells[0].forEach((column, i) => {
320
- if (column.initWidthUnit == "fr")
321
- amountFrSizes++;
322
- else
323
- leftOver -= column.width;
324
- });
325
- }
326
- else {
327
- this.gridInformation.cells.forEach((row, i) => {
328
- if (row[0].initHeightUnit == "fr")
329
- amountFrSizes++;
330
- else
331
- leftOver -= row[0].height;
332
- });
333
- }
334
- let frRatio = leftOver / amountFrSizes;
335
- if (typeof cssValue == "number") {
336
- //expected Value in Pixel
337
- return (cssValue / frRatio) + "fr";
338
- }
339
- else {
340
- return (convertCssUnitToPixel(cssValue, target, percentTarget) / frRatio) + "fr";
341
- }
342
- }
343
- else
344
- return convertCssUnit(cssValue, target, percentTarget, unit);
68
+ dispose() {
69
+ this._removeAllOverlays();
345
70
  }
346
71
  }
@@ -0,0 +1,10 @@
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 EditGridExtensionProvider implements IDesignerExtensionProvider {
7
+ shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
8
+ getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
+ readonly style: CSSStyleSheet;
10
+ }
@@ -0,0 +1,22 @@
1
+ import { EditGridExtension } from './EditGridExtension.js';
2
+ import { css } from "@node-projects/base-custom-webcomponent";
3
+ import { gridExtensionShowOverlayOptionName } from './DisplayGridExtensionProvider.js';
4
+ export class EditGridExtensionProvider {
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 EditGridExtension(extensionManager, designerCanvas, designItem);
13
+ }
14
+ style = css `
15
+ .svg-grid { stroke: orange; stroke-dasharray: 5; fill: #ff944722; }
16
+ .svg-grid-area { font-size: 8px; }
17
+ .svg-grid-gap { stroke: orange; stroke-dasharray: 5; fill: #0000ff22; }
18
+ .svg-grid-resizer { fill: white; stroke: #3899ec; }
19
+ .svg-grid-header { fill: #ff944722; stroke: orange; }
20
+ .svg-grid-plus-sign { stroke: black; }
21
+ `;
22
+ }
@@ -3,7 +3,7 @@ import { IDesignItem } from '../../../../item/IDesignItem.js';
3
3
  import { IDesignerCanvas } from '../../IDesignerCanvas.js';
4
4
  import { IDesignerExtension } from '../IDesignerExtension.js';
5
5
  import { IExtensionManager } from '../IExtensionManger.js';
6
- export declare class EditGridExtensionProvider implements IDesignerExtensionProvider {
6
+ export declare class EditGridColumnRowSizesExtensionProvider implements IDesignerExtensionProvider {
7
7
  shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
8
8
  getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
9
  readonly style: CSSStyleSheet;
@@ -1,7 +1,7 @@
1
- import { EditGridExtension } from './EditGridExtension.js';
1
+ import { EditGridColumnRowSizesExtension } from './EditGridExtension.js';
2
2
  import { css } from "@node-projects/base-custom-webcomponent";
3
3
  import { gridExtensionShowOverlayOptionName } from './DisplayGridExtensionProvider.js';
4
- export class EditGridExtensionProvider {
4
+ export class EditGridColumnRowSizesExtensionProvider {
5
5
  shouldExtend(extensionManager, designerCanvas, designItem) {
6
6
  const display = getComputedStyle(designItem.element).display;
7
7
  if (display == 'grid' || display == 'inline-grid')
@@ -9,14 +9,10 @@ export class EditGridExtensionProvider {
9
9
  return false;
10
10
  }
11
11
  getExtension(extensionManager, designerCanvas, designItem) {
12
- return new EditGridExtension(extensionManager, designerCanvas, designItem);
12
+ return new EditGridColumnRowSizesExtension(extensionManager, designerCanvas, designItem);
13
13
  }
14
14
  style = css `
15
- .svg-grid { stroke: orange; stroke-dasharray: 5; fill: #ff944722; }
16
- .svg-grid-area { font-size: 8px; }
17
- .svg-grid-gap { stroke: orange; stroke-dasharray: 5; fill: #0000ff22; }
18
- .svg-grid-resizer { fill: white; stroke: #3899ec; }
19
- .svg-grid-header { fill: #ff944722; stroke: orange; }
20
- .svg-grid-plus-sign { stroke: black; }
15
+ .svg-grid-resizer-v { fill: transparent; cursor: ew-resize; pointer-events: all; }
16
+ .svg-grid-resizer-h { fill: transparent; cursor: ns-resize; pointer-events: all; }
21
17
  `;
22
18
  }
@@ -0,0 +1,10 @@
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 EditGridExtensionProvider implements IDesignerExtensionProvider {
7
+ shouldExtend(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): boolean;
8
+ getExtension(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
9
+ readonly style: CSSStyleSheet;
10
+ }
@@ -0,0 +1,22 @@
1
+ import { EditGridExtension } from './EditGridExtension.js';
2
+ import { css } from "@node-projects/base-custom-webcomponent";
3
+ import { gridExtensionShowOverlayOptionName } from './DisplayGridExtensionProvider.js';
4
+ export class EditGridExtensionProvider {
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 EditGridExtension(extensionManager, designerCanvas, designItem);
13
+ }
14
+ style = css `
15
+ .svg-grid { stroke: orange; stroke-dasharray: 5; fill: #ff944722; }
16
+ .svg-grid-area { font-size: 8px; }
17
+ .svg-grid-gap { stroke: orange; stroke-dasharray: 5; fill: #0000ff22; }
18
+ .svg-grid-resizer { fill: white; stroke: #3899ec; }
19
+ .svg-grid-header { fill: #ff944722; stroke: orange; }
20
+ .svg-grid-plus-sign { stroke: black; }
21
+ `;
22
+ }
@@ -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
+ }