@node-projects/web-component-designer 0.0.199 → 0.0.201
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.
- package/dist/elements/helper/CssUnitConverter.d.ts +1 -1
- package/dist/elements/helper/GridHelper.d.ts +1 -2
- package/dist/elements/helper/GridHelper.js +3 -18
- package/dist/elements/item/DesignItem.js +8 -4
- package/dist/elements/services/DefaultServiceBootstrap.js +5 -3
- package/dist/elements/widgets/codeView/code-view-monaco.js +1 -5
- package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.js +1 -1
- package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js +0 -1
- package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.d.ts +17 -0
- package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.js +106 -0
- package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtensionProvider.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtensionProvider.js +20 -0
- package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension copy 2.d.ts +51 -0
- package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension copy 2.js +346 -0
- package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension copy.d.ts +51 -0
- package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension copy.js +346 -0
- package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension.d.ts +8 -43
- package/dist/elements/widgets/designerView/extensions/grid/EditGridExtension.js +43 -318
- package/dist/elements/widgets/designerView/extensions/grid/EditGridExtensionProvider copy.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/grid/EditGridExtensionProvider copy.js +22 -0
- package/dist/elements/widgets/designerView/extensions/grid/EditGridExtensionProvider.d.ts +1 -1
- package/dist/elements/widgets/designerView/extensions/grid/EditGridExtensionProvider.js +5 -9
- package/dist/elements/widgets/designerView/extensions/grid/NewEditGridExtensionProvider.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/grid/NewEditGridExtensionProvider.js +22 -0
- package/dist/elements/widgets/designerView/extensions/grid/OldEditGridExtension.d.ts +51 -0
- package/dist/elements/widgets/designerView/extensions/grid/OldEditGridExtension.js +346 -0
- package/dist/elements/widgets/designerView/extensions/grid/OldEditGridExtensionProvider.d.ts +10 -0
- package/dist/elements/widgets/designerView/extensions/grid/OldEditGridExtensionProvider.js +22 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare function convertCssUnitToPixel(cssValue: string, target: HTMLElement, percentTarget: 'width' | 'height'): number;
|
|
2
2
|
export declare function getCssUnit(cssValue: string): string;
|
|
3
|
-
export declare function convertCssUnit(cssValue: string | number, target: HTMLElement, percentTarget: 'width' | 'height', unit: string): string
|
|
3
|
+
export declare function convertCssUnit(cssValue: string | number, target: HTMLElement, percentTarget: 'width' | 'height', unit: string): string;
|
|
@@ -4,9 +4,7 @@ export declare function CalculateGridInformation(designItem: IDesignItem): {
|
|
|
4
4
|
x: number;
|
|
5
5
|
y: number;
|
|
6
6
|
width: number;
|
|
7
|
-
initWidthUnit: string;
|
|
8
7
|
height: number;
|
|
9
|
-
initHeightUnit: string;
|
|
10
8
|
name: string;
|
|
11
9
|
}[][];
|
|
12
10
|
gaps?: {
|
|
@@ -16,5 +14,6 @@ export declare function CalculateGridInformation(designItem: IDesignItem): {
|
|
|
16
14
|
height: number;
|
|
17
15
|
column?: number;
|
|
18
16
|
row?: number;
|
|
17
|
+
type: 'h' | 'v';
|
|
19
18
|
}[];
|
|
20
19
|
};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { getCssUnit } from "./CssUnitConverter.js";
|
|
2
1
|
export function CalculateGridInformation(designItem) {
|
|
3
2
|
//todo:
|
|
4
3
|
//same name should combine columns/rows
|
|
@@ -7,20 +6,6 @@ export function CalculateGridInformation(designItem) {
|
|
|
7
6
|
const computedStyle = getComputedStyle(designItem.element);
|
|
8
7
|
const rows = computedStyle.gridTemplateRows.split(' ');
|
|
9
8
|
const columns = computedStyle.gridTemplateColumns.split(' ');
|
|
10
|
-
const rowUnits = [];
|
|
11
|
-
let tmpStyle = designItem.getStyle("grid-template-rows");
|
|
12
|
-
if (tmpStyle)
|
|
13
|
-
tmpStyle.split(' ').forEach(rowWidth => { if (rowWidth != "")
|
|
14
|
-
rowUnits.push(getCssUnit(rowWidth)); });
|
|
15
|
-
else
|
|
16
|
-
rows.forEach(() => rowUnits.push("px"));
|
|
17
|
-
const columnUnits = [];
|
|
18
|
-
tmpStyle = designItem.getStyle("grid-template-columns");
|
|
19
|
-
if (tmpStyle)
|
|
20
|
-
tmpStyle.split(' ').forEach(columnHeight => { if (columnHeight != "")
|
|
21
|
-
columnUnits.push(getCssUnit(columnHeight)); });
|
|
22
|
-
else
|
|
23
|
-
columns.forEach(() => columnUnits.push("px"));
|
|
24
9
|
const paddingLeft = Number.parseFloat(computedStyle.paddingLeft);
|
|
25
10
|
const paddingTop = Number.parseFloat(computedStyle.paddingTop);
|
|
26
11
|
let y = 0;
|
|
@@ -101,12 +86,12 @@ export function CalculateGridInformation(designItem) {
|
|
|
101
86
|
for (let yIdx = 0; yIdx < columns.length; yIdx++) {
|
|
102
87
|
const c = columns[yIdx];
|
|
103
88
|
if (x > 0) {
|
|
104
|
-
retVal.gaps.push({ x: x + xOffset + paddingLeft, y: y + yOffset + paddingTop, width: xGap, height: currY, column: yIdx, row: xIdx });
|
|
89
|
+
retVal.gaps.push({ x: x + xOffset + paddingLeft, y: y + yOffset + paddingTop, width: xGap, height: currY, column: yIdx, row: xIdx, type: 'v' });
|
|
105
90
|
x += xGap;
|
|
106
91
|
}
|
|
107
92
|
const currX = Number.parseFloat(c.replace('px', ''));
|
|
108
93
|
if (y > 0) {
|
|
109
|
-
retVal.gaps.push({ x: x + xOffset + paddingLeft, y: y + yOffset - yGap + paddingTop, width: currX, height: yGap, column: yIdx, row: xIdx });
|
|
94
|
+
retVal.gaps.push({ x: x + xOffset + paddingLeft, y: y + yOffset - yGap + paddingTop, width: currX, height: yGap, column: yIdx, row: xIdx, type: 'h' });
|
|
110
95
|
}
|
|
111
96
|
let name = null;
|
|
112
97
|
if (areas && areas[cl]) {
|
|
@@ -115,7 +100,7 @@ export function CalculateGridInformation(designItem) {
|
|
|
115
100
|
name = nm;
|
|
116
101
|
}
|
|
117
102
|
}
|
|
118
|
-
const cell = { x: x + xOffset + paddingLeft, y: y + yOffset + paddingTop, width: currX,
|
|
103
|
+
const cell = { x: x + xOffset + paddingLeft, y: y + yOffset + paddingTop, width: currX, height: currY, name: name };
|
|
119
104
|
cellList.push(cell);
|
|
120
105
|
x += currX;
|
|
121
106
|
cl++;
|
|
@@ -78,10 +78,12 @@ export class DesignItem {
|
|
|
78
78
|
return this._styles.size > 0;
|
|
79
79
|
}
|
|
80
80
|
hasStyle(name) {
|
|
81
|
-
|
|
81
|
+
let nm = PropertiesHelper.camelToDashCase(name);
|
|
82
|
+
return this._styles.has(nm);
|
|
82
83
|
}
|
|
83
84
|
getStyle(name) {
|
|
84
|
-
|
|
85
|
+
let nm = PropertiesHelper.camelToDashCase(name);
|
|
86
|
+
return this._styles.get(nm);
|
|
85
87
|
}
|
|
86
88
|
*styles() {
|
|
87
89
|
for (let s of this._styles) {
|
|
@@ -89,10 +91,12 @@ export class DesignItem {
|
|
|
89
91
|
}
|
|
90
92
|
}
|
|
91
93
|
_withoutUndoSetStyle(name, value) {
|
|
92
|
-
|
|
94
|
+
let nm = PropertiesHelper.camelToDashCase(name);
|
|
95
|
+
this._styles.set(nm, value);
|
|
93
96
|
}
|
|
94
97
|
_withoutUndoRemoveStyle(name) {
|
|
95
|
-
|
|
98
|
+
let nm = PropertiesHelper.camelToDashCase(name);
|
|
99
|
+
this._styles.delete(nm);
|
|
96
100
|
}
|
|
97
101
|
static _designItemMap = new WeakMap();
|
|
98
102
|
get element() {
|
|
@@ -76,7 +76,7 @@ import { SelectionService } from './selectionService/SelectionService.js';
|
|
|
76
76
|
import { ContentService } from './contentService/ContentService.js';
|
|
77
77
|
import { StylesheetServiceDesignViewConfigButtons } from '../widgets/designerView/extensions/buttons/StylesheetServiceDesignViewConfigButtons.js';
|
|
78
78
|
import { JumpToElementContextMenu } from '../widgets/designerView/extensions/contextMenu/JumpToElementContextMenu.js';
|
|
79
|
-
import {
|
|
79
|
+
import { EditGridColumnRowSizesExtensionProvider } from '../widgets/designerView/extensions/grid/EditGridColumnRowSizesExtensionProvider.js';
|
|
80
80
|
import { DisplayGridExtensionProvider } from '../widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js';
|
|
81
81
|
import { ApplyFirstMachingExtensionProvider } from '../widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.js';
|
|
82
82
|
export function createDefaultServiceContainer() {
|
|
@@ -112,7 +112,8 @@ export function createDefaultServiceContainer() {
|
|
|
112
112
|
]);
|
|
113
113
|
serviceContainer.designerExtensions.set(ExtensionType.PrimarySelection, [
|
|
114
114
|
new ElementDragTitleExtensionProvider(),
|
|
115
|
-
new
|
|
115
|
+
new DisplayGridExtensionProvider(),
|
|
116
|
+
new EditGridColumnRowSizesExtensionProvider(),
|
|
116
117
|
new FlexboxExtensionProvider(),
|
|
117
118
|
new TransformOriginExtensionProvider(),
|
|
118
119
|
new CanvasExtensionProvider(),
|
|
@@ -128,7 +129,8 @@ export function createDefaultServiceContainer() {
|
|
|
128
129
|
new SelectionDefaultExtensionProvider()
|
|
129
130
|
]);
|
|
130
131
|
serviceContainer.designerExtensions.set(ExtensionType.PrimarySelectionContainer, [
|
|
131
|
-
new
|
|
132
|
+
new DisplayGridExtensionProvider(),
|
|
133
|
+
new EditGridColumnRowSizesExtensionProvider(),
|
|
132
134
|
new FlexboxExtensionProvider()
|
|
133
135
|
]);
|
|
134
136
|
serviceContainer.designerExtensions.set(ExtensionType.MouseOver, [
|
|
@@ -18,10 +18,6 @@ export class CodeViewMonaco extends BaseCustomWebComponentLazyAppend {
|
|
|
18
18
|
height: 100%;
|
|
19
19
|
width: 100%;
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
.monaco-editor .overflow-guard {
|
|
23
|
-
overflow: visible;
|
|
24
|
-
}
|
|
25
21
|
`;
|
|
26
22
|
static template = html `
|
|
27
23
|
<div id="container" style="overflow: hidden; width: 100%; height: 100%; position: absolute;"></div>
|
|
@@ -105,7 +101,7 @@ export class CodeViewMonaco extends BaseCustomWebComponentLazyAppend {
|
|
|
105
101
|
this._monacoEditor = monaco.editor.create(this._editor, {
|
|
106
102
|
automaticLayout: true,
|
|
107
103
|
wordWrapColumn: 1000,
|
|
108
|
-
wordWrap: 'wordWrapColumn',
|
|
104
|
+
//wordWrap: 'wordWrapColumn',
|
|
109
105
|
value: this.code,
|
|
110
106
|
language: 'html',
|
|
111
107
|
minimap: {
|
|
@@ -20,7 +20,7 @@ export class DisplayGridExtension extends AbstractExtension {
|
|
|
20
20
|
this._initSVGArrays();
|
|
21
21
|
//draw gaps
|
|
22
22
|
this.gridInformation.gaps.forEach((gap, i) => {
|
|
23
|
-
this._gaps[i] = this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-gap', this._gaps[i], OverlayLayer.
|
|
23
|
+
this._gaps[i] = this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-gap', this._gaps[i], OverlayLayer.Normal);
|
|
24
24
|
});
|
|
25
25
|
//draw cells
|
|
26
26
|
cells.forEach((row, i) => {
|
|
@@ -16,7 +16,6 @@ export class DisplayGridExtensionProvider {
|
|
|
16
16
|
.svg-grid-current-cell { stroke: orange; stroke-dasharray: 5; fill: #e3ff4722; }
|
|
17
17
|
.svg-grid-area { font-size: 8px; }
|
|
18
18
|
.svg-grid-gap { stroke: orange; stroke-dasharray: 5; fill: #0000ff22; }
|
|
19
|
-
.svg-grid-resizer { fill: white; stroke: #3899ec; }
|
|
20
19
|
.svg-grid-header { fill: #ff944722; stroke: orange; }
|
|
21
20
|
.svg-grid-plus-sign { stroke: black; }
|
|
22
21
|
`;
|
package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CalculateGridInformation } from "../../../../helper/GridHelper.js";
|
|
2
|
+
import { IDesignItem } from '../../../../item/IDesignItem.js';
|
|
3
|
+
import { IDesignerCanvas } from '../../IDesignerCanvas.js';
|
|
4
|
+
import { AbstractExtension } from '../AbstractExtension.js';
|
|
5
|
+
import { IExtensionManager } from '../IExtensionManger.js';
|
|
6
|
+
export declare class EditGridColumnRowSizesExtension extends AbstractExtension {
|
|
7
|
+
gridInformation: ReturnType<typeof CalculateGridInformation>;
|
|
8
|
+
private _resizers;
|
|
9
|
+
private _initalPos;
|
|
10
|
+
private _initialSizes;
|
|
11
|
+
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
12
|
+
extend(event?: Event): void;
|
|
13
|
+
refresh(event?: Event): void;
|
|
14
|
+
_pointerActionTypeResize(event: PointerEvent, rect: SVGRectElement, gap: ReturnType<typeof CalculateGridInformation>['gaps'][0]): void;
|
|
15
|
+
_convertCssUnits(pixelSizes: number[], targetUnits: string[], target: HTMLElement, percentTarget: 'width' | 'height'): string[];
|
|
16
|
+
dispose(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { EventNames } from "../../../../../enums/EventNames.js";
|
|
2
|
+
import { convertCssUnit, convertCssUnitToPixel, getCssUnit } from "../../../../helper/CssUnitConverter.js";
|
|
3
|
+
import { CalculateGridInformation } from "../../../../helper/GridHelper.js";
|
|
4
|
+
import { AbstractExtension } from '../AbstractExtension.js';
|
|
5
|
+
import { OverlayLayer } from "../OverlayLayer.js";
|
|
6
|
+
export class EditGridColumnRowSizesExtension extends AbstractExtension {
|
|
7
|
+
gridInformation;
|
|
8
|
+
_resizers = [];
|
|
9
|
+
_initalPos;
|
|
10
|
+
_initialSizes;
|
|
11
|
+
constructor(extensionManager, designerView, extendedItem) {
|
|
12
|
+
super(extensionManager, designerView, extendedItem);
|
|
13
|
+
}
|
|
14
|
+
extend(event) {
|
|
15
|
+
this.refresh(event);
|
|
16
|
+
}
|
|
17
|
+
refresh(event) {
|
|
18
|
+
this.gridInformation = CalculateGridInformation(this.extendedItem);
|
|
19
|
+
this.gridInformation.gaps.forEach((gap, i) => {
|
|
20
|
+
if (gap.width < 3) {
|
|
21
|
+
gap.width = 3;
|
|
22
|
+
gap.x--;
|
|
23
|
+
}
|
|
24
|
+
if (gap.height < 3) {
|
|
25
|
+
gap.height = 3;
|
|
26
|
+
gap.y--;
|
|
27
|
+
}
|
|
28
|
+
let rect = this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-resizer-' + gap.type, this._resizers[i], OverlayLayer.Normal);
|
|
29
|
+
if (!this._resizers[i]) {
|
|
30
|
+
this._resizers[i] = rect;
|
|
31
|
+
rect.addEventListener(EventNames.PointerDown, event => this._pointerActionTypeResize(event, rect, gap));
|
|
32
|
+
rect.addEventListener(EventNames.PointerMove, event => this._pointerActionTypeResize(event, rect, gap));
|
|
33
|
+
rect.addEventListener(EventNames.PointerUp, event => this._pointerActionTypeResize(event, rect, gap));
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
_pointerActionTypeResize(event, rect, gap) {
|
|
38
|
+
event.stopPropagation();
|
|
39
|
+
const templatePropertyName = gap.type == 'h' ? 'gridTemplateRows' : 'gridTemplateColumns';
|
|
40
|
+
const axisPropertyName = gap.type == 'h' ? 'Y' : 'X';
|
|
41
|
+
const index = (gap.type == 'h' ? gap.row : gap.column) - 1;
|
|
42
|
+
const sizeType = gap.type == 'h' ? 'height' : 'width';
|
|
43
|
+
const pos = event['client' + axisPropertyName];
|
|
44
|
+
switch (event.type) {
|
|
45
|
+
case EventNames.PointerDown:
|
|
46
|
+
rect.setPointerCapture(event.pointerId);
|
|
47
|
+
this._initalPos = pos;
|
|
48
|
+
this._initialSizes = getComputedStyle(this.extendedItem.element)[templatePropertyName];
|
|
49
|
+
break;
|
|
50
|
+
case EventNames.PointerMove:
|
|
51
|
+
if (this._initialSizes) {
|
|
52
|
+
const diff = this._initalPos - pos;
|
|
53
|
+
let parts = this._initialSizes.split(' ');
|
|
54
|
+
parts[index] = (parseFloat(parts[index]) - diff) + 'px';
|
|
55
|
+
parts[index + 1] = (parseFloat(parts[index + 1]) + diff) + 'px';
|
|
56
|
+
this.extendedItem.element.style[templatePropertyName] = parts.join(' ');
|
|
57
|
+
this.extensionManager.refreshExtensions([this.extendedItem], null, event);
|
|
58
|
+
}
|
|
59
|
+
break;
|
|
60
|
+
case EventNames.PointerUp:
|
|
61
|
+
rect.releasePointerCapture(event.pointerId);
|
|
62
|
+
const diff = this._initalPos - pos;
|
|
63
|
+
const realStyle = this.extendedItem.getStyleFromSheetOrLocalOrComputed(templatePropertyName);
|
|
64
|
+
const initialParts = this._initialSizes.split(' ');
|
|
65
|
+
const parts = realStyle.split(' ');
|
|
66
|
+
let units = parts.map(x => getCssUnit(x));
|
|
67
|
+
if (parts.length != initialParts.length) {
|
|
68
|
+
units = initialParts.map(x => getCssUnit(x));
|
|
69
|
+
}
|
|
70
|
+
this.extendedItem.element.style[templatePropertyName] = '';
|
|
71
|
+
const targetPixelSizes = initialParts.map(x => parseFloat(x));
|
|
72
|
+
targetPixelSizes[index] -= diff;
|
|
73
|
+
targetPixelSizes[index + 1] += diff;
|
|
74
|
+
const newSizes = this._convertCssUnits(targetPixelSizes, units, this.extendedItem.element, sizeType);
|
|
75
|
+
this.extendedItem.updateStyleInSheetOrLocal(templatePropertyName, newSizes.join(' '));
|
|
76
|
+
this._initalPos = null;
|
|
77
|
+
this._initialSizes = null;
|
|
78
|
+
this.extensionManager.refreshExtensions([this.extendedItem]);
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
_convertCssUnits(pixelSizes, targetUnits, target, percentTarget) {
|
|
83
|
+
let containerSize = convertCssUnitToPixel(target.style.width, target, percentTarget);
|
|
84
|
+
let amountGaps = percentTarget == "height" ? this.gridInformation.cells.length - 1 : this.gridInformation.cells[0].length - 1;
|
|
85
|
+
let gapSize = convertCssUnitToPixel(percentTarget == "width" ? target.style.columnGap : target.style.rowGap, target, percentTarget) ?? 0;
|
|
86
|
+
let containerSizeWithoutGaps = containerSize - gapSize * amountGaps;
|
|
87
|
+
let sizeForFrs = containerSizeWithoutGaps;
|
|
88
|
+
for (let i = 0; i < pixelSizes.length; i++) {
|
|
89
|
+
if (targetUnits[i] != 'fr')
|
|
90
|
+
sizeForFrs -= pixelSizes[i];
|
|
91
|
+
}
|
|
92
|
+
let result = [];
|
|
93
|
+
for (let i = 0; i < pixelSizes.length; i++) {
|
|
94
|
+
if (targetUnits[i] != 'fr') {
|
|
95
|
+
result.push(convertCssUnit(pixelSizes[i], target, percentTarget, targetUnits[i]));
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
result.push((pixelSizes[i] / sizeForFrs).toFixed(2) + 'fr');
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
dispose() {
|
|
104
|
+
this._removeAllOverlays();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -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 EditGridColumnRowSizesExtensionProvider 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,20 @@
|
|
|
1
|
+
import { EditGridColumnRowSizesExtension } from './EditGridColumnRowSizesExtension.js';
|
|
2
|
+
import { css } from "@node-projects/base-custom-webcomponent";
|
|
3
|
+
import { gridExtensionShowOverlayOptionName } from './DisplayGridExtensionProvider.js';
|
|
4
|
+
export class EditGridColumnRowSizesExtensionProvider {
|
|
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 EditGridColumnRowSizesExtension(extensionManager, designerCanvas, designItem);
|
|
13
|
+
}
|
|
14
|
+
style = css `
|
|
15
|
+
.svg-grid-resizer-v { fill: transparent; cursor: ew-resize; pointer-events: all; }
|
|
16
|
+
.svg-grid-resizer-v:hover { fill: #ff7f5052; }
|
|
17
|
+
.svg-grid-resizer-h { fill: transparent; cursor: ns-resize; pointer-events: all; }
|
|
18
|
+
.svg-grid-resizer-h:hover { fill: #ff7f5052; }
|
|
19
|
+
`;
|
|
20
|
+
}
|
|
@@ -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
|
+
}
|